Matlab 如何运行皮肤检测
我试图用这个算法检测皮肤,但我只得到了一张黑白图像 我尝试使用cat(im1,im1,im1)组合我的图像,但结果是它只会使皮肤变粉红色Matlab 如何运行皮肤检测,matlab,Matlab,我试图用这个算法检测皮肤,但我只得到了一张黑白图像 我尝试使用cat(im1,im1,im1)组合我的图像,但结果是它只会使皮肤变粉红色 im=double(im); im=colorspace('HSL您发布的代码的前提是,您可以执行颜色阈值,以隔离与皮肤相对应的HSL颜色空间的子集 黑白图像基本上没有颜色信息,因此这种方法对您没有帮助。试试这个 function main clc, clear A = imread('2000.jpg'); subplot(1,2,1) imshow(A)
im=double(im);
im=colorspace('HSL您发布的代码的前提是,您可以执行颜色阈值,以隔离与皮肤相对应的HSL颜色空间的子集
黑白图像基本上没有颜色信息,因此这种方法对您没有帮助。试试这个
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
主功能
clc,清除
A=imread('2000.jpg');
子地块(1,2,1)
imshow(A)
RGB=[230 210 200];%您想要的颜色
e=40;%色移
B=pix_in(A,RGB,e);
B=B+255.*uint8(~B);%选择白色背景
子地块(1,2,2)
imshow(B)
结束
函数B=pix_in(A,RGB,e)
%选择图像中的特定像素
%A-彩色图像(3D矩阵uint8)
%RGB-[RGB]-要选择的颜色
%e-颜色偏移/偏差
A=双精度(A);%用于同一类操作(RGB-双精度)
[m,n,~]=尺寸(A);
RGB=重塑(RGB,1,1,3);
RGB=repmat(RGB,m,n,1);%创建三维矩阵
b=abs(A-RGB)
原始图像
下面是脚本生成的内容
试试imshow(ims.*im)