数字图像处理--(04)数字图像增强之图像平滑与锐化(MATLAB)(一)

简介: 数字图像处理--(04)数字图像增强之图像平滑与锐化(MATLAB)

一般来说,图像的能量主要集中在其低频部分,噪声所在的频段主要在高频段,同时图像边缘信息也主要集中在其高频部分。这将导致原始图像在平滑处理之后,图像边缘和图像轮廓模糊的情况出现(平滑可以认为是去除噪声,这样也就模糊了图像的边缘信息)。为了减少这类不利效果的影响,就需要利用图像锐化技术,使图像的边缘变得清晰。图像锐化处理的目的是为了使图像的边缘、轮廓线以及图像的细节变得清晰,经过平滑的图像变得模糊的根本原因是因为图像受到了平均或积分运算,因此可以对其进行逆运算(如微分运算)就可以使图像变得清晰。微分运算是求信号的变化率,由傅立叶变换的微分性质可知,微分运算具有较强高频分量作用。从频率域来考虑,图像模糊的实质是因为其高频分量被衰减,因此可以用高通滤波器来使图像清晰。但要注意能够进行锐化处理的图像必须有较高的性噪比,否则锐化后图像性噪比反而更低,从而使得噪声增加的比信号还要多,因此一般是先去除或减轻噪声后再进行锐化处理。

模板运算


模板( ( 也称 样板 或 窗) ) 是实现空域滤波的基本工具。

模板运算的基本思路 :将赋予某个像素的值作为它本身灰度值和其相邻像素灰度值的函数。

模板卷积在空域实现的 主要步骤 如下:

  1. 将模板在图中漫游,并将模板中心与图中某个像素位置重合;
  2. 将模板上的各个系数与模板下各对应像素的灰度值相乘;
  3. 将所有乘积相加(为保持灰度范围,常将结果再除以模板的系数个数)
  4. 将上述运算结果(模板的输出响应)赋给图中对应模板 中心位置的像素

空域滤波增强的目的


主要是平滑图像或锐化图像,所以空域滤波器可分为 平滑滤波器 和锐化滤波器 两类

滤波器分类


  1. 平滑滤波器:模糊,消除噪声能减弱或消除图像中的高频率分量,但不影响低频率分量。 高频对应图像中的区域边缘等灰度值具有较大较快变化的部分,平滑滤波器将这些分量滤去可减少局部灰度的起伏,使图像变得比较平滑
  2. 锐化滤波器:增强被模糊的细节减弱或消除图像中的低频率分量,但不影响高频率分量。 低频分量对应图像中灰度值缓慢变化的区域,锐化滤波器将这些分量滤去,可使图像反差增加,边缘明显

部分使用的函数说明


Fspecial函数


用于创建预定义的滤波算子,其语法格式为:

h = fspecial(type)

h = fspecial(type,parameters,sigma)

参数type制定算子类型,parameters指定相应的参数,具体格式为:

type=‘average’,为均值滤波,参数为n,代表模版尺寸,用向量表示,默认值为[3,3]。

type= ‘gaussian’,为高斯低通滤波器,参数有两个,n表示模版尺寸,默认值为[3,3],sigma表示滤波器的标准差,单位为像素,默认值为 0.5。

type= ‘laplacian’,为拉普拉斯算子,参数为alpha,用于控制拉普拉斯算子的形状,取值范围为[0,1],默认值为0.2。

type= ‘log’,为拉普拉斯高斯算子,参数有两个,n表示模版尺寸,默认值为[3,3],sigma为滤波器的标准差,单位为像素,默认值为0.5

type= ‘prewitt’,为prewitt算子,用于边缘增强,无参数。

type= ‘sobel’,为著名的sobel算子,用于边缘提取,无参数。

type= ‘unsharp’,为对比度增强滤波器,参数alpha用于控制滤波器的形状,范围为[0,1],默认值为0.2。

imfilter函数


函数名称:imfilter

函数语法:g=imfilter(f,w,filtering_mode,boundary_options,size_optinos)

函数功能:对任意类型数组或多维图像进行滤波

参数介绍:f是输入图像,w为滤波模板,g为滤波结果;表1-1总结了其他参数的含义。

image.png

例子


G=fspecial(‘gaussian’,5)%参数为5,表示产生55的gaussian矩阵,如果没有,默认为33的矩阵。

G=0.00000.00000.00020.00000.00000.00000.01130.08370.01130.00000.00020.08370.61870.08370.00020.00000.01130.08370.01130.00000.00000.00000.00020.00000.0000

平滑


与锐化相反,就是滤掉高频分量,从而达到减少图象噪声,使图片变得有些模糊。因此又称为低通滤波。

介于之前做过相关的文章这里就不展开说明了

使用均值滤波和中值滤波来验证线型的和非线性不同模板大小的滤波效果

均值滤波和和中值滤波的对比


均值滤波和和中值滤波都可以起到平滑图像,虑去噪声的功能。均值滤波采用线性的方法,平均整个窗口范围内的像素值,均值滤波本身存在着固有的缺陷,即它不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点。均值滤波对高斯噪声表现较好,对椒盐噪声表现较差。中值滤波采用非线性的方法,它在平滑脉冲噪声方面非常有效,同时它可以保护图像尖锐的边缘,选择适当的点来替代污染点的值,所以处理效果好,对椒盐噪声表现较好,对高斯噪声表现较差。

彩色图像


clc;clearall;closeall;
M=imread('../img1.jpg'); %读取图像[ROW,COL, DIM] =size(M);%保存图像尺寸subplot(3,3,1),imshow(M),title('原始图像');%显示原始图像P1=imnoise(M,'gaussian',0.05); %加入高斯躁声subplot(3,3,2),imshow(P1),title('加入高斯躁声 0.05');%加入高斯躁声后显示图像P2=imnoise(M,'gaussian',0.5); %加入高斯躁声subplot(3,3,3),imshow(P2),title('加入高斯躁声 0.5');%加入高斯躁声后显示图像gauss_img1(:,:,1)=medfilt2(P1(:,:,1)); %对高斯躁声中值滤波gauss_img1(:,:,2)=medfilt2(P1(:,:,2)); %对高斯躁声中值滤波gauss_img1(:,:,3)=medfilt2(P1(:,:,3)); %对高斯躁声中值滤波subplot(3,3,4),imshow(gauss_img1),title('3X3高斯躁声中值滤波 0.05');
gauss_img2(:,:,1)=medfilt2(P2(:,:,1)); %对高斯躁声中值滤波gauss_img2(:,:,2)=medfilt2(P2(:,:,2)); %对高斯躁声中值滤波gauss_img2(:,:,3)=medfilt2(P2(:,:,3)); %对高斯躁声中值滤波subplot(3,3,5),imshow(gauss_img2),title('3X3高斯躁声中值滤波 0.5');
gauss_img3(:,:,1)=medfilt2(P2(:,:,1),[55]); %对高斯躁声中值滤波gauss_img3(:,:,2)=medfilt2(P2(:,:,2),[55]); %对高斯躁声中值滤波gauss_img3(:,:,3)=medfilt2(P2(:,:,3),[55]); %对高斯躁声中值滤波subplot(3,3,6),imshow(gauss_img3),title('5X5高斯躁声中值滤波 0.5');
A=fspecial('average',3); %生成系统预定义的3X3滤波器mean_filter_img1(:,:,1)=filter2(A,P1(:,:,1))/255.;     
mean_filter_img1(:,:,2)=filter2(A,P1(:,:,2))/255.; 
mean_filter_img1(:,:,3)=filter2(A,P1(:,:,3))/255.; 
subplot(3,3,7),imshow(mean_filter_img1),title('3X3高斯躁声均值滤波 0.05');
mean_filter_img2(:,:,1)=filter2(A,P2(:,:,1))/255.;     
mean_filter_img2(:,:,2)=filter2(A,P2(:,:,2))/255.; 
mean_filter_img2(:,:,3)=filter2(A,P2(:,:,3))/255.; 
subplot(3,3,8),imshow(mean_filter_img2),title('3X3高斯躁声均值滤波 0.5');
A=fspecial('average',5); %生成系统预定义的5X5滤波器mean_filter_img3(:,:,1)=filter2(A,P2(:,:,1))/255.;     
mean_filter_img3(:,:,2)=filter2(A,P2(:,:,2))/255.; 
mean_filter_img3(:,:,3)=filter2(A,P2(:,:,3))/255.; 
subplot(3,3,9),imshow(mean_filter_img3),title('5X5高斯躁声均值滤波 0.5');
disp('====================finish================'); 

image.png

灰度图像


clc;clearall;closeall;
M=imread('../gray1.jpg'); %读取图像M=rgb2gray(M);
[ROW,COL, DIM] =size(M);%保存图像尺寸subplot(3,3,1),imshow(M),title('原始图像');%显示原始图像P1=imnoise(M,'gaussian',0.05); %加入高斯躁声subplot(3,3,2),imshow(P1),title('加入高斯躁声 0.05');%加入高斯躁声后显示图像P2=imnoise(M,'gaussian',0.5); %加入高斯躁声subplot(3,3,3),imshow(P2),title('加入高斯躁声 0.5');%加入高斯躁声后显示图像gauss_img1=medfilt2(P1); %对高斯躁声中值滤波subplot(3,3,4),imshow(gauss_img1),title('3X3高斯躁声中值滤波 0.05');
gauss_img2=medfilt2(P2); %对高斯躁声中值滤波subplot(3,3,5),imshow(gauss_img2),title('3X3高斯躁声中值滤波 0.5');
gauss_img3=medfilt2(P2,[55]); %对高斯躁声中值滤波subplot(3,3,6),imshow(gauss_img3),title('5X5高斯躁声中值滤波 0.5');
A=fspecial('average',3); %生成系统预定义的3X3滤波器mean_filter_img1=filter2(A,P1)/255.;     
subplot(3,3,7),imshow(mean_filter_img1),title('3X3高斯躁声均值滤波 0.05');
mean_filter_img2=filter2(A,P1)/255.;     
subplot(3,3,8),imshow(mean_filter_img2),title('3X3高斯躁声均值滤波 0.5');
A=fspecial('average',5); %生成系统预定义的5X5滤波器mean_filter_img3=filter2(A,P1)/255.;     
subplot(3,3,9),imshow(mean_filter_img3),title('5X5高斯躁声均值滤波 0.5');
disp('====================finish================'); 

image.png

锐化


通过增强高频分量来减少图象中的模糊,因此又称为高通滤波。锐化处理在增强图象边缘的同时增加了图象的噪声。

这里我为了方便定义了个函数,不用再区分灰度和彩色图了

My_filter


functionIMG=My_filter(I,Module)
%[~,~, DIM] =size(I);%保存图像尺寸IMG=I;
fori=1:DIMIMG(:,:,i)=filter2(Module,I(:,:,i));
end

拉普拉斯算子


clc;clearall;closeall;
%%提取模板L0=[010;1-41;010];
L1=[-1-1-1;-18-1;-1-1-1];
%%增强模板L2=[-1-1-1;-19-1;-1-1-1];
L3=[-1-1-1;-110-1;-1-1-1]/2;
L4=[-1-1-1;-111-1;-1-1-1]/3;
%%处理I=imread('../img1.jpg'); %读取图像[ROW,COL, DIM] =size(I);%保存图像尺寸subplot(231),imshow(I),title('原始图像');%显示原始图像%A=fspecial('laplacian'); %生成系统预定义的3X3滤波器Laplacian_img1=My_filter(I,L0);
subplot(232),imshow(Laplacian_img1),title('Laplacian算子 L0');
Laplacian_img2=My_filter(I,L1);
subplot(233),imshow(Laplacian_img2),title('Laplacian算子 L1');
Laplacian_img3=My_filter(I,L2);
subplot(234),imshow(Laplacian_img3),title('Laplacian算子 L2');
Laplacian_img4=My_filter(I,L3);
subplot(235),imshow(Laplacian_img4),title('Laplacian算子 L3');
Laplacian_img5=My_filter(I,L4);
subplot(236),imshow(Laplacian_img5),title('Laplacian算子 L4');

效果奉上:

image.png

image.png

目录
相关文章
|
1月前
|
算法 数据安全/隐私保护
织物图像的配准和拼接算法的MATLAB仿真,对比SIFT,SURF以及KAZE
本项目展示了织物瑕疵检测中的图像拼接技术,使用SIFT、SURF和KAZE三种算法。通过MATLAB2022a实现图像匹配、配准和拼接,最终检测并分类织物瑕疵。SIFT算法在不同尺度和旋转下保持不变性;SURF算法提高速度并保持鲁棒性;KAZE算法使用非线性扩散滤波器构建尺度空间,提供更先进的特征描述。展示视频无水印,代码含注释及操作步骤。
|
2月前
|
算法 数据可视化 数据安全/隐私保护
基于LK光流提取算法的图像序列晃动程度计算matlab仿真
该算法基于Lucas-Kanade光流方法,用于计算图像序列的晃动程度。通过计算相邻帧间的光流场并定义晃动程度指标(如RMS),可量化图像晃动。此版本适用于Matlab 2022a,提供详细中文注释与操作视频。完整代码无水印。
|
2月前
|
算法 数据挖掘 vr&ar
基于ESTAR指数平滑转换自回归模型的CPI数据统计分析matlab仿真
该程序基于ESTAR指数平滑转换自回归模型,对CPI数据进行统计分析与MATLAB仿真,主要利用M-ESTAR模型计算WNL值、P值、Q值及12阶ARCH值。ESTAR模型结合指数平滑与状态转换自回归,适用于处理经济数据中的非线性趋势变化。在MATLAB 2022a版本中运行并通过ADF检验验证模型的平稳性,适用于复杂的高阶自回归模型。
|
4月前
|
算法
基于粒子群优化的图像融合算法matlab仿真
这是一个基于粒子群优化(PSO)的图像融合算法,旨在将彩色模糊图像与清晰灰度图像融合成彩色清晰图像。在MATLAB2022a中测试,算法通过PSO求解最优融合权值参数,经过多次迭代更新粒子速度和位置,以优化融合效果。核心代码展示了PSO的迭代过程及融合策略。最终,使用加权平均法融合图像,其中权重由PSO计算得出。该算法体现了PSO在图像融合领域的高效性和融合质量。
|
5月前
|
机器学习/深度学习 算法 固态存储
m基于深度学习的卫星遥感图像轮船检测系统matlab仿真,带GUI操作界面
在MATLAB 2022a中,使用GoogLeNet对卫星遥感图像进行轮船检测,展示了高效的目标识别。GoogLeNet的Inception架构结合全局平均池化增强模型泛化性。核心代码将图像切块并分类,预测为轮船的部分被突出显示,体现了深度学习在复杂场景检测中的应用。
403 8
|
5月前
|
算法 计算机视觉 异构计算
基于FPGA的图像一维FFT变换IFFT逆变换verilog实现,包含tb测试文件和MATLAB辅助验证
```markdown ## FPGA 仿真与 MATLAB 显示 - 图像处理的 FFT/IFFT FPGA 实现在 Vivado 2019.2 中仿真,结果通过 MATLAB 2022a 展示 - 核心代码片段:`Ddddddddddddddd` - 理论:FPGA 实现的一维 FFT/IFFT,加速数字信号处理,适用于高计算需求的图像应用,如压缩、滤波和识别 ```
|
5月前
|
算法 计算机视觉
基于Chan-Vese算法的图像边缘提取matlab仿真
**算法预览展示了4幅图像,从边缘检测到最终分割,体现了在matlab2022a中应用的Chan-Vese水平集迭代过程。核心代码段用于更新水平集并显示迭代效果,最后生成分割结果及误差曲线。Chan-Vese模型(2001)是图像分割的经典方法,通过最小化能量函数自动检测平滑区域和清晰边界的图像分割,适用于复杂环境,广泛应用于医学影像和机器视觉。**
|
6月前
|
算法 数据安全/隐私保护 C++
基于二维CS-SCHT变换和扩频方法的彩色图像水印嵌入和提取算法matlab仿真
该内容是关于一个图像水印算法的描述。在MATLAB2022a中运行,算法包括水印的嵌入和提取。首先,RGB图像转换为YUV格式,然后水印通过特定规则嵌入到Y分量中,并经过Arnold置乱增强安全性。水印提取时,经过逆过程恢复,使用了二维CS-SCHT变换和噪声对比度(NC)计算来评估水印的鲁棒性。代码中展示了从RGB到YUV的转换、水印嵌入、JPEG压缩攻击模拟以及水印提取的步骤。
|
5月前
|
算法 计算机视觉 异构计算
基于FPGA的图像直方图均衡化处理verilog实现,包含tb测试文件和MATLAB辅助验证
摘要: 在FPGA上实现了图像直方图均衡化算法,通过MATLAB2022a与Vivado2019.2进行仿真和验证。核心程序涉及灰度直方图计算、累积分布及映射变换。算法旨在提升图像全局对比度,尤其适合低对比度图像。FPGA利用可编程增益器和查表技术加速硬件处理,实现像素灰度的均匀重分布,提升视觉效果。![image preview](https://ucc.alicdn.com/pic/developer-ecology/3tnl7rfrqv6tw_a075525027db4afbb9c0529921fd0152.png)
|
6月前
|
算法 异构计算
基于直方图的图像曝光量分析FPGA实现,包含tb测试文件和MATLAB辅助验证
该内容包括了算法的运行效果展示、软件版本信息、理论概述和核心程序代码。在正常图像中,`checkb`位于`f192b`和`f250b`之间,而多度曝光图像中`checkb`超出此范围,判断为曝光过度。使用的软件为Vivado 2019.2和MATLAB 2022a。理论依据未详细给出,但提及主要方法。提供的Verilog代码段用于处理图像数据,包括读取文件、时钟控制及图像histogram计算等,其中模块`im_hist`似乎是关键部分。