Как запустить обнаружение кожи - PullRequest
0 голосов
/ 03 октября 2019

Я пытаюсь определить кожу, используя этот алгоритм, но у меня есть только черно-белое изображение.

Я пытался объединить свои изображения, используя cat (im1, im1, im1), но в результатезаключается в том, что он просто сделает кожу розовой.

im= double(im);
im = colorspace('HSL<-rgb',im);

ims1 = (im(:,:,1)>95) & (im(:,:,2)>40) & (im(:,:,3)>20);
ims2 = (im(:,:,1)-im(:,:,2)>15) | (im(:,:,1)-im(:,:,3)>15);
ims3 = (abs(im(:,:,1)-im(:,:,2))>15) & (im(:,:,1)>im(:,:,3)) & (im(:,:,1)>im(:,:,2));
ims = ims1 & ims2 & ims3;

figure, imshow(ims);

Я попробовал этот алгоритм без использования преобразования, но результат будет только черно-белым.

Ответы [ 2 ]

0 голосов
/ 03 октября 2019

Попробуйте это

function main
clc, clear

A = imread('2000.jpg');
subplot(1,2,1)
imshow(A)

RGB = [230 210 200];      % color you want
e = 40;                   % color shift     

B = pix_in(A,RGB,e);
B = B + 255.*uint8(~B);   % choosing white background
subplot(1,2,2)
imshow(B)

end

function B = pix_in(A,RGB,e)
    % select specific pixels in image
    % A - color image (3D matrix uint8)
    % RGB - [R G B] - color to select
    % e - color shift/deviation

A = double(A);              % for same class operations (RGB - double)
[m, n, ~] = size(A);
RGB = reshape(RGB,1,1,3);   
RGB = repmat(RGB,m,n,1);    % creating 3D matrix
b = abs(A-RGB) < e;         % logical 3D
b = sum(b,3) == 3;          % if [R,G,B] of a pixel in range
B = A.*repmat(b,1,1,3);     % selecting pixels those in range
B = uint8(B);

% cheking one pixel (loop version)
% B = [0 0 0];
% for k = 1:3
%     t = double(A(1,1,k));
%     B(k) = abs(t-RGB(k)) < e;
% end
% if sum(B) == 3, b = true; 
% else b = false;
% end

end

Исходное изображение

ORIGINAL

И вот что выдает скрипт

RESULT

0 голосов
/ 03 октября 2019

Исходный код отправленного вами кода заключается в том, что вы можете выполнить настройку порога цвета, чтобы изолировать подмножество цветового пространства HSL, соответствующее скину.

У вас принципиально нет информации о цвете с черно-белым изображением, поэтому этот подход вам не поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...