2016-10-04 1 views
0

세분화시 스킨 파트를 제거하는 방법?Matlab : 세분화시 스킨 부분 제거

먼저 그림을 어떻게 든 두려워하기 때문에이 첫 번째 그림을 더 작게 만들었습니다. 끝 부분에서 이미지를 제공 할 것입니다.

enter image description here

나는 RGB &의 YCbCr 분할을 사용하고 있지만 분할이 잘 작동하지 않았다 보인다. 여기

enter image description here

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

+3

그림의 상단에 여드름과 밝은 피부가 순수한 색상으로 표시됩니다. 흰색, 거의 같은 색입니다. 나는 색 분리만으로이 일을하는 것이 어려울 것이라고 생각합니다. 예를 들어 확인해야합니다. 주변 : 흰색 영역이 흰색입니다. 빨간색 링 등으로 둘러싸여 있습니다. – Adriaan

+0

안녕하세요. 색상 기반 대안을 찾고 있습니다. –

+0

예, 가장자리 감지를 시도하십시오! –

답변

2

. 색깔만으로는하지 마십시오. 모양과 가장자리 같은 추가 정보를 사용하십시오. 원형 허프 변환

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

이 강력한 방법입니다

마지막 두 colorplanes

가장 대비가, ​​그래서 그들 중 하나를 사용할 수 있도록하는 것 근사 반경 범위를 알고 대략적으로 만족하면 원형 객체를 찾습니다. 개체의 위치 및 크기

다른 고전적인 방법을 시도해 볼 수는 없습니다. (Canny) 가장자리 감지, 마커로 Hough 중심점 사용 -> 지역 성장, 뱀 피팅 등.

+0

작은 발언 : 그것은 여드름이지 젖꼭지가 아닙니다. 그렇지 않으면 의사를 방문하고 싶을 수도 있습니다 ... – Adriaan

+0

눈치 채 셨습니다. 나는 변수 이름으로 날개를 달기를 좋아한다. 어리석은 것들은 기억하기 쉽다. 그리고 관련성이 없어도 습관이됩니다. 그래 코드를주는 것은 어색 할 수 있습니다 .. – Tapio