数字图像处理--(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

目录
相关文章
|
3天前
|
算法 安全 数据安全/隐私保护
基于AES的遥感图像加密算法matlab仿真
本程序基于MATLAB 2022a实现,采用AES算法对遥感图像进行加密与解密。主要步骤包括:将彩色图像灰度化并重置大小为256×256像素,通过AES的字节替换、行移位、列混合及轮密钥加等操作完成加密,随后进行解密并验证图像质量(如PSNR值)。实验结果展示了原图、加密图和解密图,分析了图像直方图、相关性及熵的变化,确保加密安全性与解密后图像质量。该方法适用于保护遥感图像中的敏感信息,在军事、环境监测等领域具有重要应用价值。
|
2月前
|
算法 数据安全/隐私保护 计算机视觉
基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
本项目展示了256×256图像通过双线性插值放大至512×512的效果,无水印展示。使用Matlab 2022a和Vivado 2019.2开发,提供完整代码及详细中文注释、操作视频。核心程序实现图像缩放,并在Matlab中验证效果。双线性插值算法通过FPGA高效实现图像缩放,确保质量。
|
15天前
|
算法 安全 数据安全/隐私保护
基于指纹图像的数据隐藏和提取matlab仿真
本内容介绍了一种基于指纹图像的数据隐藏算法,利用指纹的个体差异性和稳定性实现信息嵌入。完整程序运行无水印,基于Matlab2022a开发。指纹图像由脊线和谷线组成,其灰度特性及纹理复杂性为数据隐藏提供可能,但也受噪声影响。核心代码附详细中文注释与操作视频,适合研究数字版权保护、秘密通信等领域应用。
|
3月前
|
算法 数据安全/隐私保护 计算机视觉
基于Retinex算法的图像去雾matlab仿真
本项目展示了基于Retinex算法的图像去雾技术。完整程序运行效果无水印,使用Matlab2022a开发。核心代码包含详细中文注释和操作步骤视频。Retinex理论由Edwin Land提出,旨在分离图像的光照和反射分量,增强图像对比度、颜色和细节,尤其在雾天条件下表现优异,有效解决图像去雾问题。
|
2月前
|
算法 数据安全/隐私保护
基于信息论的高动态范围图像评价算法matlab仿真
本项目基于信息论开发了一种高动态范围(HDR)图像评价算法,并通过MATLAB 2022A进行仿真。该算法利用自然图像的概率模型,研究图像熵与成像动态范围的关系,提出了理想成像动态范围的计算公式。核心程序实现了图像裁剪处理、熵计算等功能,展示了图像熵与动态范围之间的关系。测试结果显示,在[μ-3σ, μ+3σ]区间内图像熵趋于稳定,表明系统动态范围足以对景物成像。此外,还探讨了HDR图像亮度和对比度对图像质量的影响,为HDR图像评价提供了理论基础。
|
2月前
|
传感器 算法 算法框架/工具
基于一阶梯度的图像亚像素位移matlab仿真,带GUI界面
本项目提供图像亚像素位移估计算法,使用Matlab2022a开发。完整程序无水印运行效果佳,附带详细中文注释代码和操作视频。该算法通过一阶梯度信息和泰勒级数展开,实现比像素更精细的位置变化测量,广泛应用于医学影像、遥感图像、视频监控、精密测量等领域,显著提升图像配准和分析精度。
|
2月前
|
传感器 算法 数据安全/隐私保护
基于Affine-Sift算法的图像配准matlab仿真
本项目展示了Affine-SIFT算法的运行效果(无水印),适用于图像配准任务,能够处理旋转、缩放、平移及仿射变换。程序基于MATLAB2022A开发,包含完整代码与操作视频。核心步骤为:先用SIFT提取特征点,再通过仿射变换实现高精度对准。
|
2月前
|
监控 算法 自动驾驶
基于图像形态学处理的移动物体目标跟踪和质心提取matlab仿真,带GUI界面
本项目展示了一种基于图像形态学处理的移动物体目标跟踪和质心提取算法。完整程序运行效果无水印,使用Matlab2022a开发。核心代码包含详细中文注释及操作视频。算法通过多帧图像像素值求平均、中值法或高斯混合模型估计背景,结合形态学处理(开闭运算、阈值处理)去除噪声并优化目标检测,提高准确性。颜色直方图匹配用于目标跟踪,结构元素膨胀操作扩大搜索范围,增强鲁棒性。
|
3月前
|
算法 人机交互 数据安全/隐私保护
基于图像形态学处理和凸包分析法的指尖检测matlab仿真
本项目基于Matlab2022a实现手势识别中的指尖检测算法。测试样本展示无水印运行效果,完整代码含中文注释及操作视频。算法通过图像形态学处理和凸包检测(如Graham扫描法)来确定指尖位置,但对背景复杂度敏感,需调整参数PARA1和PARA2以优化不同手型的检测精度。
|
6月前
|
算法 数据安全/隐私保护
织物图像的配准和拼接算法的MATLAB仿真,对比SIFT,SURF以及KAZE
本项目展示了织物瑕疵检测中的图像拼接技术,使用SIFT、SURF和KAZE三种算法。通过MATLAB2022a实现图像匹配、配准和拼接,最终检测并分类织物瑕疵。SIFT算法在不同尺度和旋转下保持不变性;SURF算法提高速度并保持鲁棒性;KAZE算法使用非线性扩散滤波器构建尺度空间,提供更先进的特征描述。展示视频无水印,代码含注释及操作步骤。

热门文章

最新文章