数字图像处理第六章 ——彩色图像处理(下)

本文深入探讨了彩色图像的平滑和锐化处理。平滑处理通过邻域平均减少噪声,但可能导致色调和边缘信息的损失。锐化处理利用拉普拉斯算子增强图像边缘,提高对比度。实验表明,RGB空间的直接处理与HSI空间的亮度分量处理结果不同。在RGB向量空间中,通过梯度和马氏距离进行彩色边缘检测和图像分割,揭示了不同方法的优劣和适用场景。
摘要由CSDN通过智能技术生成

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

(五) 彩色图像的空间滤波

彩色图像滤波的目标就是同时达到三个目的:削弱噪声,保护色调和保护边缘或细节信息。下面主要讨论的就是彩色图像的平滑处理和锐化处理。

5.1 彩色图像的平滑处理

平滑单色图像的一种方法是定义相应的系数是 1 的模板,用空间模板的系数去乘所有像素的值,并用模板中元素的总数去除。用空间掩膜平滑来处理彩色图像,该处理用处理灰度图像的相同方法来表达,只是代替单个像素。

令 Sxy表示彩色图像中以(x,y)为中心的邻域的一组坐标。在该邻域中,RGB向量的平均值是:
在这里插入图片描述
其中,K 是邻域中像素点的数量。附加向量的特性是:
在这里插入图片描述
该向量的每个分量都作为将要得到的结果,结果是用每个分量图像执 邻域平均获得的,使用的是上边提到的滤波器模板。因此,得出这样的结论:用邻域平均的平滑可以在每个图像平面的基础上执行。如果邻域平均直接在彩色向量空间执行,那么结果是相同的

概念上,平滑 RGB彩色图像fc时,线性空间滤波由下面的步骤组成

1.抽取 3 个分量图像:

fR= I(:,:,1);
fG = I(:,:,2);
fB = I(:,:,3);

2.分别过滤每个分量图像。例如,令w = fspecial(‘average’, 25)表示用fspecial产生的平滑滤波器,平滑分量图像:

fR_filtered = imfilter(fR, w, ‘replicate’);
fG__filtered = imfilter(fG, w, ‘replicate’);
fB_filtered = imfilter(fB, w, ‘replicate’);

也可以对这三个图像分量一起处理:

fc_filtered = imfilter(I, w, ‘replicate’);

3.重建滤波过的 RGB图像:

fc_filtered = cat(3, fR_filtered, fG_filtered, fB_filtered)

因为可以在 MATLAB中使用与单色图像相同的语法来执行 RGB图像的线性滤波, 所以可以把前三步合并为一步:

fc_filtered = imfilter(fc, w, ‘replicate’);

编写代码:

rgb_image=imread('D:\数字图像处理\第六章学习\flower6.tif');       %加载彩色图像
fR = rgb_image(:, :, 1);       %提取R通道分量图像
fG = rgb_image(:, :, 2);       %提取G通道分量图像
fB = rgb_image(:, :, 3);       %提取B通道分量图像
subplot(2, 2, 1), imshow(rgb_image);title('(a)原图像');
subplot(2, 2, 2), imshow(fR);title('(b)红色分量图');
subplot(2, 2, 3), imshow(fG);title('(c) 绿色分量图');
subplot(2, 2, 4), imshow(fB) ;title('(d)蓝色分量图');  

代码运行效果如下:

接下来,用尺寸为 25×25 像素的相同滤波器滤波亮度分量。平均滤波器已足够大,可以产生有意义的模糊度。选择这个尺寸的滤波器,是为了演示在 RGB 空间中进行平滑处理的效果,与在 RGB 空间被变换到 HSI 空间后,只使用图像的亮度分量达到类似结果之间的不同之处。

编写代码:

rgb_image=imread('D:\数字图像处理\第六章学习\flower6.tif');
fR = rgb_image(:, :, 1);
fG = rgb_image(:, :, 2);
fB = rgb_image(:, :, 3);
w = fspecial('average', 25);
fR_filtered = imfilter(fR, w, 'replicate');      %平滑红色分量图像
fG_filtered = imfilter(fG, w, 'replicate');      %平滑绿色分量图像 
fB_filtered = imfilter(fB, w, 'replicate');      %平滑蓝色分量图像
fc_filtered = cat(3,fR_filtered,fG_filtered,fB_filtered);   %将这四个句子可以改为:fc_filtered = imfilter(f, w, 'replicate');
subplot(1,2,1);imshow(rgb_image);title('(a)RGB图像');
subplot(1,2,2);imshow(fc_filtered,'Border','tight');title('(b)平滑 R、G、B 图像平面得到的 RGB 图像');

代码运行效果如下:

编写代码:

fc=imread('D:\数字图像处理\第六章学习\flower6.tif');
h = rgb2hsi(fc);
H = h(:, :, 1);
S = h(:, :, 2);
I = h(:, :, 3);
w = fspecial('average', 25);
I_filtered = imfilter(I, w, 'replicate');
h=cat(3,H,S,I_filtered);      %cat函数是拼接数组的函数,这里将在第3维上进行拼接。
f=hsi2rgb(h);                      
subplot(1,2,1);imshow(fc);title('(c)RGB图像');
subplot(1,2,2);imshow(f);title('(d)仅对HIS相等图像的亮度分量进行平滑的结果');

代码运行效果如下:


编写代码:

fc=imread('D:\数字图像处理\第六章学习\flower6.tif');
h = rgb2hsi(fc);
H = h(:, :, 1);
S = h(:, :, 2);
I = h(:, :, 3);
w = fspecial('average', 25);
H_filtered = imfilter(H, w, 'replicate');
S_filtered = imfilter(S, w, 'replicate');
I_filtered = imfilter(I, w, 'replicate');
h=cat(3,H_filtered,S_filtered,I_filtered);   %构造多维数组,即合并3分量图像为一副彩色图像
f=hsi2rgb(h);
subplot(1,2,1);imshow(fc);title('(e)RGB图像');
subplot(1,2,2);imshow(f);title('(f)平滑所有三个 HIS 分量的结果 ');

代码运行效果如下:


实验总结

显然,滤波后的两种结果不同。例如,除图像有点模糊以外,图 (d)中花朵顶部出现模糊的绿色边缘。原因是通过平滑处理,亮度分量值的变化减少了࿰

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值