- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DIP实验六
DIP实验六
彩色人脸图像肤色检测
班级:08计算机
学号:082
姓名:林
目的:学习一种彩色图像区域分割的方法
步骤:
分别在RGB和HSV(或HIS)彩色空间,在测试图像中利用手工选择皮肤样本,得出肤色在彩色空间中的均值和方差;
选择不同距离(棋盘距离、欧氏距离等)度量,计算被测试图像各像素到肤色样本中心的距离,利用方差做阈值,确定该像素色彩是否属于肤色。
测试图像:face.jpg
结果图像:将不在肤色空间的像素置0,仅在被测试图像中留下肤色像素,并作为结果输出该图像。
五. 采用技术及主要计算公式:
用roiploy函数手工选择皮肤样本。
用imhist函数计算样本的直方图向量。
用statmoments函数计算样本的方差。
用方差做阈值,用colorseg函数,分别用euclidean和mahalanobis方法分割图像。
用rgb2hsv函数把RGB图像转化成HSV图像。
用以上方法对HSV图像进行相同处理。
六.实验结果:
RGB和HVS的样本的方差
Face
RGB样本
RGB用mahalanobis分割
RGB用euclidean分割
RGB转化成HSV
HSV样本
HSV用mahalanobis分割
HSV用euclidean分割
实验小结:
RGB中,mahalanobis的分割效果比euclidean好。
HSV中,mahalanobis分割方法正常,euclidean分割方法失效。
程序清单:
imgseg.m
function [g1,g2,unv1,unv2] = imgseg
f1 = imread(face.jpg);
%交互式指定样本
[B1,c,r] = roipoly(f1);
%求直方图向量
p1 = imhist(f1(B1));
%计算方差
[v1,unv1]=statmoments(p1,2);
unv1
%把取得的样本对应的二值图像B中的交互选择区域用原图像的颜色填充
red=immultiply(B1,f1(:,:,1));
green=immultiply(B1,f1(:,:,2));
blue=immultiply(B1,f1(:,:,3));
g1=cat(3,red,green,blue);
figure,imshow(g1);
%计算相关参数
[M,N,K]=size(g1);
I=reshape(g1,M*N,3);
idx=find(B1);
I=double(I(idx,1:3));
[C,m]=covmatrix(I);
%使用colorseg函数方法分割图片(mahalanobis欧式距离方法)
F1=colorseg(mahalanobis, f1, sqrt(unv1(2)), m, C);
F2=logical(uint8(round(F1)));
red=immultiply(F2,f1(:,:,1));
green=immultiply(F2,f1(:,:,2));
blue=immultiply(F2,f1(:,:,3));
G1=cat(3,red,green,blue);
figure,imshow(G1);
%使用colorseg函数方法分割图片(euclidean棋盘距离方法)
F3=colorseg(euclidean, f1, sqrt(unv1(2)), m);
F4=logical(uint8(round(F3)));
red=immultiply(F4,f1(:,:,1));
green=immultiply(F4,f1(:,:,2));
blue=immultiply(F4,f1(:,:,3));
G2=cat(3,red,green,blue);
figure,imshow(G2);
%RGB转化为HSV
f2 = rgb2hsv(f1);
figure,imshow(f2);
%交互式指定样本
[B2,c,r] = roipoly(f2);
%求直方图向量
p2 = imhist(f2(B2));
%计算方差
[v2,unv2]=statmoments(p2,2);
unv2
%把取得的样本对应的二值图像B中的交互选择区域用原图像的颜色填充
red=immultiply(B2,f2(:,:,1));
green=immultiply(B2,f2(:,:,2));
blue=immultiply(B2,f2(:,:,3));
g2=cat(3,red,green,blue);
figure,imshow(g2);
%计算相关参数
[M,N,K]=size(g2);
I=reshape(g2,M*N,3);
idx=find(B2);
I=double(I(idx,1:3));
[C,m]
原创力文档


文档评论(0)