根据上一篇的博客,博客链接https://blog.csdn.net/guanlily123/article/details/97154401这里主要做一下实现。
代码如下:
rgb=imread(‘d:\新建文件夹\725.jpg’);%读取文件数据
%var_R=(R/255);
%var_G=(G/255);
%var_B=(B/255);
%if var_R>0.04045
% var_R=((var_R+0.055)/1.055)^2.4
%else
% var_R=var_R/12.92
%end
%if var_G>0.04045
% var_G=((var_G+0.055)/1.055)^2.4
%else
% var_G=var_G/12.92
%end
%if var_B>0.04045
% var_B=((var_B+0.055)/1.055)^2.4
%else
% var_B=var_B/12.92
%end
%var_R=var_R100;
%var_G=var_G100;
%var_B=var_B100;
%X=var_R0.4124+var_G0.3576+var_B0.1805;
%Y=var_R0.2126+var_G0.7152+var_B0.0722;
%Z=var_R0.0193+var_G0.1192+var_B0.9505;
%a=17.5*(((1.02*X)-Y)/sqrt(Y))
%将彩色图像从RGB转化为lab彩色空间
cfrom=makecform(‘srgb2lab’);
lab=applycform(rgb,cfrom);
%L=lab(:,:,1);
a=lab(:,:,2);
%b=lab(:,:,3);
level=graythresh(a);
bw=im2bw(a,level);
bw=bwareaopen(bw,100);%去杂点
bw=imfill(bw,‘holes’);%孔洞填充
SE=strel(‘disk’,11);%定义模板
bw=imerode(bw,SE);%腐蚀
bw=imdilate(bw,SE);%膨胀
figure(1)
subplot(121)
imshow(rgb)
title(‘原始图像’)
subplot(122)
imshow(bw)
aa=double(rgb);
cc=uint8(cat(3,aa(:,:,1).*bw,aa(:,:,2).*bw,aa(:,:,3).*bw));
figure()
imshow(cc)
效果图如下:
实现效果不是特别理想,以后会改进,请大家多多包涵。