Recentemente mi è stato dato un progetto, in cui devo estrarre la faccia (viso + capelli) da una determinata immagine.Ottimizzazione delle prestazioni di GrabCut in opencv-java
Sto risolvendo questo problema nei seguenti modi.
- Sto estraendo le posizioni dei volti da una determinata immagine. [Sto ottenendo un rettangolo]
- sto estraenti rettangolo e ponendolo in un'altra immagine di stesse dimensioni immagine in ingresso. [Face_image]
- Mi candido grabCut algoritmo sulla face_image dello step 2.
quando il face_image contiene bassa regolare l'algoritmo grabCut funzionare bene ma quando lo sfondo di face_image è complessa l'algoritmo grabCut estratti alcuni parte del fondo troppo nell'immagine elaborata.
Ecco un'istantanea dei risultati che sto ottenendo.
Ecco il mio codice di grabCut:
public void extractFace(Mat image, String fileNameWithCompletePath,
int xOne, int xTwo, int yOne, int yTwo) throws CvException {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
Rect rectangle = new Rect(xOne, yOne, xTwo, yTwo);
Mat result = new Mat();
Mat bgdModel = new Mat();
Mat fgdModel = new Mat();
Mat source = new Mat(1, 1, CvType.CV_8U, new Scalar(3));
Imgproc.grabCut(image, result, rectangle, bgdModel, fgdModel, 8, Imgproc.GC_INIT_WITH_RECT);
Core.compare(result, source, result, Core.CMP_EQ);
Mat foreground = new Mat(image.size(), CvType.CV_8UC3, new Scalar(255, 255, 255));
image.copyTo(foreground, result);
Imgcodecs.imwrite(fileNameWithCompletePath, foreground);
}
Come posso migliorare le prestazioni di algoritmi grabCut in modo che possa rilevare solo il viso e capelli dalla data immagine?
Ho provato molte di queste cose, queste cose non funzionano secondo le mie aspettative ..... –
Se puoi essere un po 'più dettagliato su cosa hai provato e come non ha funzionato e aggiungilo al tuo domanda, forse posso aiutare un po 'di più. –
Sto avendo diversi tipi di immagini, per alcune immagini lo sfondo è un po 'molto simile ai capelli che non è possibile per un programma di differenziare tra loro, anche le cose citate non funzionano in tutti i casi .... –