2016-10-04 5 views
0

Wie Hautteile bei der Segmentierung entfernen?Matlab: Hautteil bei Segmentierung entfernen

Zuerst machte ich dieses erste Bild kleiner, da das Bild irgendwie einschüchternd ist, gebe ich das Bild am Ende ab.

enter image description here

Ich bin mit RGB & ycbcr Segmentierung, aber es scheint die Segmentierung nicht gut funktionierte.

clear all; 
    close all; 
    clc; 

    img=imread('acne.jpg'); 


%ycbcr segmentation 
    img_ycbcr=img; %image from the previous segmentation 
    ycbcr=rgb2ycbcr(img_ycbcr); 
    cb=ycbcr(:,:,2); 
    cr=ycbcr(:,:,3); 


    %Detect Skin 
    %[r,c,v] = find(cb>=77 & cb<=127 & cr>=133 & cr<=173); 
    [r c v] = find(cb<=77 | cb >=127 | cr<=133 | cr>=173); 
    numid = size(r,1); 

    %Mark Skin Pixels 
    for i=1:numid 
     img_ycbcr(r(i),c(i),:) = 0; 
     % bin(r(i),c(i)) = 1; 
    end 

    figure 
    title('ycbcr segmentation'); 
    imshow(img_ycbcr); 

%============================================================== 
    %rgb segmentation 

img_rgb=img_ycbcr; 
r=img_rgb(:,:,1); 
g=img_rgb(:,:,2); 
b=img_rgb(:,:,3); 


[row col v]= find(b>0.79*g-67 & b<0.78*g+42 & b>0.836*g-14 & b<0.836*g+44); %non skin pixels 
numid=size(row,1); 

for i=1:numid 
    img_rgb(row(i),col(i),:)=0; 
end 


figure 
imshow(img_rgb); 

enter image description here

Hier mein Beispiel:

enter image description here

+3

Rein farbig ist dies ein Albtraum, sowohl die Akne als auch die helle Haut oben auf dem Bild sind weiß, fast die gleiche Farbe. Ich vermute, dass dies mit nur der Farbtrennung schwierig sein wird, müssten Sie z.B. die Umgebung: ist der weiße Bereich etwa weiß, ist es von einem roten Ring etc. umgeben – Adriaan

+0

Hallo danke Ich suche eine Alternative für Farbe basiert. –

+0

Ja, versuchen Sie eine Kantenerkennung! –

Antwort

2

ich mit Adriaan zustimmen. Tun Sie es nicht nur mit Farbe, verwenden Sie zusätzliche Informationen wie die Form und die Kanten.

Die letzten beiden colorplanes scheinen die meisten Gegensatz zu haben, ist einer von ihnen verwenden lassen:

Nipple = imread('N8y6Q.jpg') 

Nipple = imadjust(Nipple(:,:,2)); 

imshow(Nipple) 

grayscale of the green plane of the image

[centers, radii] = imfindcircles(Nipple, [30,60]); 

hold on 

imshow(Nipple); 
viscircles(centers, radii); 

grayscale with segmented area

Der Kreis Hough ist eine robuste Art und Weise transformieren kreisförmige Objekte finden Sie, wenn Sie den ungefähren Radiusbereich kennen und mit dem ca. Standort und Größe des Objekts.

Wenn nicht, können Sie andere klassische Methoden versuchen, z. (Canny) Kantenerkennung, mit dem Hough-Mittelpunkt als Marker -> Bereich wächst, passt eine Schlange usw. etc.

+0

Nur eine kleine Bemerkung: Es ist Akne, keine Brustwarze. Sonst möchtest du vielleicht einen Arzt aufsuchen ... – Adriaan

+0

ist mir aufgefallen. Ich mag es mit meinen variablen Namen, dumme Sachen sind leichter zu merken. Und es wird zur Gewohnheit, auch wenn es nicht relevant ist. Ja Code verschenken kann peinlich sein .. – Tapio

Verwandte Themen