如何去除分割上的皮膚部分?Matlab:去除分割上的皮膚部分
首先,我把這張第一張圖片縮小了一點,因爲圖片有點嚇人,我會在最後一部分給出圖片。
我使用的是RGB &的YCbCr分割,但似乎分割沒有工作。
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);
這裏我的示例:
純色彩這是一個噩夢,因爲痤瘡和圖片上方的明亮皮膚是白色的,幾乎是相同的顏色。我懷疑只用分色這樣做會很困難,你需要檢查例如周圍環境:白色區域大致是白色的,是否被紅色環狀物包圍等 – Adriaan
嗨,謝謝我正在尋找基於顏色的替代品。 –
是的,嘗試一些邊緣檢測! –