%%skin detection
[hue,s,v]=rgb2hsv(I);
cb = 0.148* I(:,:,1) - 0.291* I(:,:,2) + 0.439 * I(:,:,3) + 128;
cr = 0.439 * I(:,:,1) - 0.368 * I(:,:,2) -0.071 * I(:,:,3) + 128;
[w h]=size(I(:,:,1));
for i=1:w
for j=1:h
if 128<=cr(i,j) && cr(i,j)<=165 && 140<=cb(i,j) && cb(i,j)<=195 && 0.01<=hue(i,j) && hue(i,j)<=0.1
segment(i,j)=1;
else
segment(i,j)=0;
end
end
end
im(:,:,1)=I(:,:,1).*segment;
im(:,:,2)=I(:,:,2).*segment;
im(:,:,3)=I(:,:,3).*segment;
%imshow(uint8(im));
title('My Edge Detection')
im1 = imclearborder(im2bw(im));
figure
imshow(im1)
im_fill = imfill(im1, 'holes');
figure
imshow(im_fill)
s = regionprops(im_fill, 'Area', 'PixelList');
[~,ind] = max([s.Area]);
pix = sub2ind(size(im), s(ind).PixelList(:,2), s(ind).PixelList(:,1));
out = zeros(size(im));
out(pix) = im(pix);
imshow(out);
Здесь после вычитания лица, и выяснить, самый большой соединять области. Я хочу обрезать эту область с исходного изображения.Обнаружение стороны Использование Matlab
Разместите свой вопрос с дополнительной информацией и/или добавьте комментарии в свой код, чтобы мы могли вам помочь. –
@BrianLynch в первой части после вычитания лица через альт-джонс, затем я перешел в Hue для определения цвета кожи, после чего обнаружил самую большую связанную область в двоичном изображении (руке). Теперь, как я могу обрезать эту область области подключения с исходного входного изображения. –
Вы спрашиваете, как взять исходное изображение и превратить все пиксели, которые _not_ в связанную область черные или что-то еще? –