Попытка замаскировать изображение, которое имеет высокую яркость, чтобы замаскировать его на черный, при сохранении исходного изображения, чтобы показать область, обнаруженную кожей.
Попытка с использованием функции bsxfun, чтобы получить исходное изображение взамаскированное изображение, но оно просто показывает, что изображение слишком яркое. Я пытаюсь сделать цикл for с гистограммой, которая показывает яркость, но не знаю, как она работает.
ims1 = (im2(:,:,1)>95) & (im2(:,:,2)>40) & (im2(:,:,3)>20);
ims2 = (im2(:,:,1)-im2(:,:,2)>15) | (im2(:,:,1)-im2(:,:,3)>15);
ims3 = (im2(:,:,1)-im2(:,:,2)>15) & (im2(:,:,1)>im2(:,:,3));
ims4 = ims1 & ims2 & ims3;
figure, imshow(ims4);
figure, imshow(im2);
% maskedRgbImage2 = bsxfun(@times, im2, cast(ims4, 'like', im2));
% figure, imshow(maskedRgbImage2);
imYuv = colorspace('YUV<-RGB',im2);
Y=imYuv(:,:,1);
U=imYuv(:,:,2);
V=imYuv(:,:,3);
H = histogram(Y);
[k1,k2,k3]=size(imYuv) %Size of the picture
for i=1:k1
for j=1:k2
if Y(i,j)>70
Y(i,j)=0;
end
end
end
imYuv(:,:,1)=Y;
final = colorspace('RGB<-YUV',imYuv);
figure, imshow(final);
Таким образом, в результате должна отображаться область обнаружения кожи и замаскированная область изображения вокончательный.