数字图像处理——彩色图像

该博客探讨了数字图像处理中的彩色图像操作,包括分离RGB通道展示原图效果,绘制特定图像,以及利用渐变色技术。重点介绍了如何通过转换到YCbCr色彩空间并提取红色浓度在140-160之间的区域来识别和提取图像中的肤色部分,以实现光照不敏感的肤色检测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.分别提取出一幅图片中的RGB三个部分的图像。如下:

原图:

效果图:

 

clear,clc,close all;
f=imread('color.jpg');
imshow(f);
r=f(:,:,1);g=f(:,:,2);b=f(:,:,3);%f为一个三维矩阵,这行代码相当于分别提取出三维向量中的每一维。
x=zeros(size(r));新建一个大小跟r同样的二位矩阵x
figure,imshow(cat(2,r,g,b));

red=cat(3,r,x,x);figure,imshow(red);%用彩色显示红色区域

 2.画出下图图像

a=zeros(300,300);
c=a;b=a;

a(1:100,:)=255;
c(101:200,:)=255;
b(201:300,:)=255;

rgb=cat(3,b,c,a);figure,imshow(rgb);

3.渐变色

a=1:255;%新建一个值从1到255递增的矩阵
a=a';%把a矩阵转置
a=uint8(repmat(a,[2,300,3]));
imshow(a);


%画彩色的渐变
a=1:255;
a=a';

a=uint8(repmat(a,[1,300]));
b=a;
b(:,:)=255;
a=cat(3,a,a,b);
imshow(a);

4.提取图像中的肤色部分

原理:人的肤色中红色浓度范围在140-160之间,转化为ycbcr色彩空间后,提取出红色的部分,该部分不受光照的影响。

f=imread('hh.jpg');imshow(f);
ycbcr=rgb2ycbcr(f);%转化为ycbcr空间,y是亮度,cb是蓝色浓度,cr是红色浓度

cr=ycbcr(:,:,3);
figure,imshow(cr);

cr(cr>140&cr<160)=255;
cr(cr~=255)=0;

figure,imshow(cr);

bw=im2bw(cr);
bwdilate=imdilate(bw,strel('disk',1));
figure,imshow(bwdilate);

bw=imfill(bwdilate,'holes');
figure,imshow(bw);

bws=cat(3,bw,bw,bw);
% bws=repmat(bw,[1,1,3]);
result=uint8(bws).*f;
figure,imshow(result);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值