图像平滑方法综述与MATLAB实现
图像平滑的MATLAB实现

图像平滑的MATLAB实现摘要:图像平滑技术用于平滑图像的噪声,本文对均值滤波、中值滤波、维纳滤波等三种平滑滤波器进行理论学习,并通过MATLAB对滤波效果进行仿真。
关键词:图像平滑均值滤波中值滤波维纳滤波实际获得的图像一般都因受到某种干扰而含有噪声。
引起噪声的原因有敏感元器件的内部噪声、照相底片上感光材料的颗粒、传输通道的干扰及量化噪声等。
噪声产生的原因决定了噪声的分布特性及它和图像信号的关系。
根据噪声服从的分布,可以分为高斯噪声、泊松噪声和颗粒噪声等。
平滑技术用于平滑图像的噪声,平滑噪声可以在空间域中进行,基本方法是求像素灰度的平均值或中值。
为了既平滑噪声又保护图像信号,也有一些改进的技术,比如在频域中运用低通滤波器。
MATLAB图像处理工具箱提供了模拟噪声生成的函数imnoise和去除噪声的方法。
函数imnoise可以对图像添加一些典型的噪声。
由于噪声的随机性,它们对某一像点的影响使其灰度和邻点的灰度显著不同,因此可以利用这种不同来消除噪声。
去除噪声的方法有线性滤波、中值滤波、自适应滤波。
本文就针对上述三种平滑滤波进行MATLAB仿真。
1 图像平滑的MATLAB实现1.1 均值滤波[1]1.1.1理论基础邻域平均法是空间域平滑噪声技术,其均值滤波器对于扫描得到的图像中的颗粒噪声非常适用,理论依据如下:对于给定的图像f(i,j)中的每个像点(m,n),取其邻域S。
设S含有M个像素,取其平均值作为处理后所得图像像点(m,n)处的灰度。
用一像素邻域内各像素灰度平均值来代替该像素原来的灰度,即是邻域平均技术。
邻域S的形状和大小根据图像特点确定。
一般取的形状是正方形、矩形及十字形等,S的形状和大小可以在全图处理过程中保持不变,也可根据图像的局部统计特性而变化,点(m,n)一般位于S的中心。
如S为3×3邻域,点(m,n)位于S中心,则:假设噪声n是加性噪声,在空间各点互不相关,且期望为0,方差δ2,g是未受污染的图像,含有噪声的图像f经过邻域平均后为由上式可知,经邻域平均后,噪声的均值不变,方差,即噪声方差变小,说明噪声强度减弱了,即抑制了噪声。
利用Matlab进行图像处理的常用方法

利用Matlab进行图像处理的常用方法概述:图像处理是数字信号处理的一个重要分支,也是计算机视觉领域的核心内容之一。
随着计算机技术的不断发展,利用Matlab进行图像处理的方法变得越来越重要。
本文将介绍一些常用的Matlab图像处理方法,包括图像的读取与显示、图像的预处理、图像的滤波处理、基本的图像增强方法以及图像的分割与检测等。
一、图像的读取与显示在Matlab中,可以使用imread函数直接读取图像。
通过指定图像的路径,我们可以将图像读取为一个矩阵,并且可以选择性地将其转换为灰度图像或彩色图像。
对于灰度图像,可以使用imshow函数将其显示出来,也可以使用imwrite函数将其保存为指定格式的图像文件。
对于彩色图像,可以使用imshow函数直接显示,也可以使用imwrite函数保存为指定格式的图像文件。
此外,还可以使用impixel函数获取图像中指定像素点的RGB值。
二、图像的预处理图像的预处理是指在进一步处理之前对图像进行调整和修复以消除图像中的噪声和不良的影响。
常用的图像预处理方法包括图像的平滑处理、图像增强和图像修复等。
1. 图像平滑处理:常用的图像平滑方法有均值滤波、中值滤波和高斯滤波等。
其中,均值滤波将每个像素点的值替换为其周围像素点的平均值,中值滤波将每个像素点的值替换为其周围像素点的中值,高斯滤波则通过加权平均的方式平滑图像。
2. 图像增强:图像增强是指通过一些方法提高图像的质量和信息内容。
常用的图像增强方法包括直方图均衡化、对比度拉伸和锐化等。
直方图均衡化通过调整图像的灰度分布,以提高图像的对比度和细节。
对比度拉伸是通过将图像的像素值线性拉伸到整个灰度范围内,以增强图像的对比度。
锐化则是通过增强图像的边缘和细节,使图像更加清晰。
三、图像的滤波处理图像的滤波处理是指通过对图像进行一系列滤波操作,来提取图像中的特征和信息。
常用的图像滤波方法包括模板滤波、频域滤波和小波变换等。
1. 模板滤波:模板滤波是基于局部像素邻域的滤波方法,通过定义一个滤波模板,将其与图像进行卷积操作,从而实现图像的滤波。
图像处理与matlab实例之图像平滑(一)

图像处理与matlab实例之图像平滑(⼀) ⼀、何为图像噪声?噪声是妨碍⼈的感觉器官所接受信源信息理解的因素,是不可预测只能⽤概率统计⽅法认识的随机误差。
举个例⼦: 从这个图中,我们可以观察到噪声的特点:1>位置随机 2>⼤⼩不规则。
我们将这种噪声称为随机噪声(random noise),这是⼀种⾮常常见的噪声类型。
⼆、噪声的类型 噪声可以借⽤随机过程以及概率密度函数(Probability Density Function,PDF)来描述,通常可采⽤其数组特征,即均值,⽅差,相关函数等。
按照概率密度函数分为⾼斯噪声、瑞利噪声、伽马噪声、指数分布噪声、均匀分布噪声、脉冲噪声、泊松噪声等。
有的噪声与图像信号的强度不相关,如图像传输过程引⼊的信道噪声、摄像机扫描噪声等,这种噪声称为加性噪声(additive noise)。
常见的加性噪声按照概率密度函数特征分为短拖尾加性噪声(如均匀分布噪声)、中拖尾加性噪声(⾼斯分布噪声)、长拖尾加性噪声(如指数分布噪声)、脉冲噪声(如椒盐噪声、随机数脉冲噪声等)。
有的噪声与图像信号有关,往往随着图像信号的变化⽽变化,如光照变化引起的噪声、飞机扫描图像中的噪声、电视扫描光栅中的相⼲噪声、斑点噪声等。
这种噪声称为乘性噪声(multiplicative noise)。
matlab向图中添加噪声的指令: I1=imnoise(I,type,parameters); 其中,当type为gaussian,所加⼊噪声是parameters为m(均值)、v(⽅差)的⾼斯噪声,这是最普通的噪声。
当type为localvar时,所加⼊噪声是parameters为0(均衡)、v(⽅差)的⾼斯噪声。
当type为poission时,所加⼊的是⽆参数的泊松噪声,在照度⾮常⼩时出现,或在⾼倍电⼦放⼤线路中出现。
当type为salt&pepper时,所加⼊的噪声是parameters为d(密度)的椒盐噪声。
MATLAB绘制平滑曲线

MATLAB绘制平滑曲线x=[0.1 0.16 0.27 0.41 0.48 0.59 0.8];y=[8 70 118 100 9 0 5];以上是每一个X和Y对应的坐标,请问如何编程能够绘制平滑曲线,这个图形就像二次函数一样的如果要在图中绘制一条直线加上y=70的直线,用不同颜色区分!x=[0 0.1 0.16 0.27 0.41 0.48 0.59 0.8];y=[5 9 70 118 100 17 0 5];y1=[22.8 22.8 22.8 22.8 22.8 22.8 22.8 22.8];values1=spcrv([[x(1) x x(end)];[y(1) y y(end)]],3,1000);values2=spcrv([[x(1) x x(end)];[y1(1) y1 y1(end)]],3,1000);plot(values1(1,:),values1(2,:),'r',values2(1,:),values2(2,:),'b')ans2:代码如下:x=[0.1 0.16 0.27 0.41 0.48 0.59 0.8];y=[8 70 118 100 9 0 5];xp=0:0.1:1;yp=interp1(x,y,xp);plot(x,y,'b-',xp,yp,'r-')%红色为差值后的平滑图像hold ony1=70;plot(xp,y1,'c-')% 自己试一下ans3:x=[0.1 0.16 0.27 0.41 0.48 0.59 0.8];y=[8 70 118 100 9 0 5];X=linspace(0,.9);Y=spline(x,y,X);plot(x,y,'ro',X,Y,X,70+0*X)another file:>help smooth自己查一下帮助another question:x有90个值,Y也有90个值,一一对应,用PLOT(x,y)后是折线,请问怎样把它改为平滑曲线,谢谢!ans:平滑曲线的话,建议你用样条插值。
matlab surf光滑处理

matlab surf光滑处理
在使用matlab中的surf函数绘制三维图形时,往往会出现图像表面不光滑的情况。
这是因为surf函数在绘制时是通过将数据点连接起来形成三角面片来实现的,而这些三角面片的大小和方向不一定能够完美地贴合数据点,从而导致表面不光滑。
为了解决这个问题,可以使用matlab中的smooth函数对数据进行平滑处理。
在进行平滑处理前,需要将数据点按照一定的规律排列,以便于smooth函数对其进行处理。
一般来说,可以使用meshgrid函数生成网格数据,并将其转换为列向量的形式,然后再将列向量和对应的数值向量作为输入参数传递给smooth函数。
在平滑处理完成后,可以再次使用surf函数将处理后的数据进行绘制。
此时,表面将变得更加光滑,更符合实际情况。
需要注意的是,平滑处理可能会对数据造成一定程度的变形,因此需要根据实际需求来确定平滑处理的程度。
如果平滑程度过高,可能会导致数据失真,从而影响后续的数据分析和处理。
- 1 -。
图像边沿平滑处理的matlab实现

图像边沿平滑处理的matlab实现完成图像处理的算法:1、读⼊⽂件通过matlab读取图像⽂件。
2、获取蒙版对图像进⾏逐点扫描,当点的三个通道值⾄少有⼀个⼩于阈值时让这个点变为纯⿊⾊。
如图,可见此时的蒙版中⼼有空缺,且边缘有噪声⽽且有粘连⼩块。
为了消除这些噪声和⼩块,我们对图像的蒙版进⾏腐蚀和扩张操作。
3、对蒙版进⾏腐蚀应⽤matlab的腐蚀函数,选择腐蚀的结构元素为11*11的全1矩阵,对图像进⾏腐蚀操作,腐蚀后,图像缩⼩,边缘变得平滑。
腐蚀后效果如图:4、对图像进⾏扩张操作将图像复原到原始蒙版,该扩张或丢失边缘信息,正好删除掉噪声和多余的⼩块。
进⾏扩张所⽤的结构元素和腐蚀所⽤的结构元素相同。
可以明显看到边缘得到改善。
扩张后效果如图:5、⽤蒙版遮罩⽣成图像利⽤蒙版的遮罩⽅式,通过原图⽣成新的图像。
能明显看出边沿的噪声和多余⼩块被去除。
产⽣的图像如下图:6、调整图像⼤⼩⾸先通过getFrame函数得到图像的边框,该函数的原理是从上下左右四个⽅向对图像进⾏逼近,记录四个边缘的位置,以便计算缩放的⼤⼩。
原理如下图:在获得了边框后,将框内的图像进⾏⼀个缩放,使该⼦图像的长或宽和原图⼀致,再⽤空⽩补齐另外⼀个⽅向。
最后达到缩放后的图像如下:附matlab程序:附1:main.minputFilePrefix = 'datacache\\';outFilePrefix = 'output\\';fileNamePrefix = 'dst_';picNum = 79;pxmin = 10000000;pdxmax = 0;pymin = 10000000;pdymax = 0;for p = 0:picNum-1if(p<10)fileName = sprintf('%s0%d.jpg',fileNamePrefix,p);else fileName = sprintf('%s%d.jpg',fileNamePrefix,p);end;inputFilePath = [inputFilePrefix fileName];outputFilePath = [outFilePrefix fileName];BW = imread(inputFilePath);[BW1 mask] = getSmoothImage(BW,230);[px py pdx pdy] = getFrame(mask);pxmin = min(pxmin,px);pdxmax = max(pdxmax,pdx);pymin = min(pymin,py);pdymax = max(pdymax,pdy);imwrite(BW1,outputFilePath,'jpg');pend%重新调整⼤⼩for p = 0:picNum-1if(p<10)fileName = sprintf('%s0%d.jpg',fileNamePrefix,p);else fileName = sprintf('%s%d.jpg',fileNamePrefix,p);end;inputFilePath = [outFilePrefix fileName];outputFilePath = [outFilePrefix fileName];I = imread(inputFilePath);INew = reScale(I,pxmin,pdxmax,pymin,pdymax);imwrite(INew,outputFilePath,'jpg');imshow(INew);pEnd附2:getSmoothImage.mfunction [ BW1 mask ] = getSmoothImage( BW,threshold )%GETSMOOTHIMAGE Summary of this function goes here% Detailed explanation goes here% 该函数⾸先得到图形的蒙版,然后对蒙版进⾏腐蚀和扩张,最后利⽤蒙版收缩和扩张 HEIGHT = size(BW,1);WIDTH = size(BW,2);mask = zeros(HEIGHT,WIDTH,'uint8');%得到蒙版threshold = 230;for i = 1:HEIGHTfor j = 1:WIDTHif(BW(i,j,1)>threshold&&BW(i,j,2)>threshold&&BW(i,j,3)>threshold)mask(i,j) = 255;endendend%腐蚀扩张蒙版SE = strel('square',11);mask = imdilate(mask,SE);mask = imerode(mask,SE);%利⽤蒙版遮罩获取图像BW1 = BW;for i = 1:HEIGHTfor j = 1:WIDTHif(mask(i,j) == 255)BW1(i,j,1) = 255;BW1(i,j,2) = 255;BW1(i,j,3) = 255;endendendend附3:getFrame.mfunction [ x,y,dx,dy ] = getFrame( mask )%GETFRAME Summary of this function goes here % Detailed explanation goes here获取图像外框backGroundColor = 255;found = false;for i = 1:size(mask,1)for j = 1:size(mask,2)if(mask(i,j) ~= backGroundColor)y = i;found = true;break;endendif foundbreak;endendfound = false;for i = 1:size(mask,1)for j = 1:size(mask,2)if(mask(size(mask,1)-i+1,j) ~= backGroundColor) dy = size(mask,1)-i+1-y;found = true;break;endendif foundbreak;endendfound = false;for i = 1:size(mask,2)for j = 1:size(mask,1)if(mask(j,i) ~= backGroundColor)x = i;found = true;break;endendif foundbreak;endendfound = false;for i = 1:size(mask,2)for j = 1:size(mask,1)if(mask(j,size(mask,2)-i+1) ~= backGroundColor)dx = size(mask,2)-i+1-x;found = true;break;endendif foundbreak;endendend附4:reScale.mfunction [ INew ] = reScale(I,pxmin,pdxmax,pymin,pdymax) %RESCALE Summary of this function goes here% Detailed explanation goes hereglobal WIDTH;global HEIGHT;ISub = I(pymin:pymin+pdymax,pxmin:pxmin+pdxmax,:);ISubScaled = imresize(ISub,min(WIDTH/pdxmax,HEIGHT/pdymax));INew = 255*ones(HEIGHT,WIDTH,3,'uint8');copyWidth = min(size(ISubScaled,2),WIDTH);copyHeight = min(size(ISubScaled,1),HEIGHT);if(copyWidth==WIDTH)pstarty = max(1,floor((HEIGHT-copyHeight)/2));pstartx = 1;elsepstartx = max(1,floor((WIDTH-copyWidth)/2));pstarty = 1;endt = ISubScaled(1:copyHeight,1:copyWidth,1);%INew(pstarty:pstarty+copyHeight-1,pstartx:pstartx+copyWidth-1,3) = t;for i = 1:copyHeightfor j = 1:copyWidthINew(pstarty+i-1,pstartx+j-1,:) = ISubScaled(i,j,:);endendend附:5:在探索过程中所写的⼀些函数:1、获取主体中的像素点:通过getRect函数,通过逐⾏扫描,依次查找不是纯⽩⾊的点,在找到这个点之后,搜索以这个点为左上定点以estimateLength为边长的矩形,统计出纯⽩点和⾮纯⽩点的⽐例,让这个⽐例达到⼀个阈值时,我们认为这个点就是主体中的⼀个点,可以根据这个点采⽤floodfill算法。
基于MATLAB的医学图像处理算法研究与实现

基于MATLAB的医学图像处理算法研究与实现一、引言医学图像处理是医学影像学领域的重要组成部分,随着计算机技术的不断发展,基于MATLAB的医学图像处理算法在临床诊断、医学研究等方面发挥着越来越重要的作用。
本文将探讨基于MATLAB的医学图像处理算法的研究与实现。
二、MATLAB在医学图像处理中的应用MATLAB作为一种强大的科学计算软件,提供了丰富的图像处理工具箱,包括图像滤波、分割、配准、重建等功能。
在医学图像处理中,MATLAB可以用于对医学影像进行预处理、特征提取、分析和诊断等方面。
三、医学图像处理算法研究1. 图像预处理图像预处理是医学图像处理中的重要步骤,旨在去除噪声、增强对比度、平滑图像等。
常用的预处理方法包括均值滤波、中值滤波、高斯滤波等,在MATLAB中可以通过调用相应函数实现。
2. 图像分割图像分割是将医学影像中感兴趣的目标从背景中分离出来的过程,常用方法有阈值分割、区域生长、边缘检测等。
MATLAB提供了各种分割算法的实现,如基于阈值的全局分割函数imbinarize等。
3. 特征提取特征提取是从医学影像中提取出有助于诊断和分析的特征信息,如纹理特征、形状特征等。
在MATLAB中,可以通过灰度共生矩阵(GLCM)、Gabor滤波器等方法进行特征提取。
4. 图像配准图像配准是将不同时间点或不同模态下的医学影像进行对齐和注册,以便进行定量分析和比较。
MATLAB提供了多种配准算法,如互信息配准、归一化互相关配准等。
5. 图像重建图像重建是指根据已有的投影数据或采样数据恢复出高质量的医学影像,常见方法有逆向投影重建、迭代重建等。
MATLAB中可以使用Radon变换和滤波反投影算法进行CT图像重建。
四、基于MATLAB的医学图像处理算法实现1. 实验环境搭建在MATLAB环境下导入医学影像数据,并加载相应的图像处理工具箱。
2. 图像预处理实现利用MATLAB内置函数对医学影像进行去噪、增强等预处理操作。
Matlab中的插值和平滑方法

Matlab中的插值和平滑方法1. 引言在数值分析和数据处理中,插值和平滑是常用的技术手段,可以用于填补数据的空缺以及降低数据中的噪声。
Matlab作为一种强大的数值计算和数据处理软件,提供了丰富的插值和平滑方法,本文将介绍其中的一些常用方法及其应用。
2. 插值方法2.1 线性插值线性插值是最简单的一种插值方法,它假设待插值函数在相邻数据点之间是线性变化的。
Matlab中提供了interp1函数实现线性插值,可以通过设定插值点的横坐标向量和已知数据点的横坐标向量,以及对应的纵坐标向量,得到插值结果。
2.2 分段插值分段插值是一种更精确的插值方法,它假设待插值函数在相邻数据点之间是分段线性变化的。
Matlab中的interp1函数也可以实现分段插值,通过指定'linear'插值方法和 'pchip'插值方法,可以得到不同的插值结果,前者得到的结果比较平滑,而后者更接近原始数据的形状。
2.3 样条插值样条插值是一种更高阶的插值方法,它假设待插值函数在相邻数据点之间是多项式变化的。
Matlab中的spline函数可以实现三次样条插值,它通过计算每个数据点处的二阶导数,得到一个以每个数据点为节点的三次多项式函数。
样条插值可以更加精确地还原数据,但也容易受到离群点的干扰。
3. 平滑方法3.1 移动平均移动平均是一种常用的平滑方法,它通过计算数据点周围一定范围内的平均值,得到平滑后的结果。
Matlab中的smoothdata函数提供了不同的平滑方法,包括简单移动平均、指数移动平均和加权移动平均等,可以根据具体需求选择适当的方法。
3.2 Savitzky-Golay滤波Savitzky-Golay滤波是一种基于最小二乘法的平滑方法,它通过拟合多项式曲线来实现数据的平滑。
Matlab中的sgolay函数可以实现Savitzky-Golay滤波,通过指定不同的拟合阶数和窗口大小,可以得到不同程度的平滑结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
江苏科技大学数字图像处理本科生课程论文论文题目:图像平滑方法综述与MATLAB实现完成时间:2018年11月20日所在专业:信息与计算科学所在年级:1522105011图像平滑方法综述与MATLAB 实现摘要:在图像的生成、传输或变换的过程中,由于多种因素的影响,总要造成图像质量的下降,这就需要进行图像增强。
随着图像处理领域的迅速发展,图像平滑作为图像增强的重要环节,也逐渐受到人们的关注。
图像平滑的目的为了消除噪声。
图像平滑可以在空间域进行,也可以在频率域进行。
空间域常用的方法有领域平均法、中值滤波和多图像平均法;在频率域,因为噪声频谱多在高频段,因此可以采用各种形式的低通滤波方法进行平滑处理。
关键词:图像平滑;消除噪声;领域平均法;中值滤波;低通滤波法………1 研究背景总所周知,实际获得的图像在形成、传输接收和处理的过程中,不可避免地存在着外部干扰和内部干扰,如光电转换过程中敏感元件灵敏度的不均匀性、数字化过程中的量化噪声、传输过程中的误差以及人为因素等,均会使图像质量变差,需要进行图像的平滑处理。
图像平滑是一种实用的熟悉图像处理技术,一个较好的平滑处理方法应该既能消除图像噪声,又不使图像边缘轮廓和线条变模糊,这就是研究数字图形平滑处理要追求的目标。
2.主要理论概况2.1 邻域平均法邻域平均法就是对含噪声的原始图像(,)f x y 的每一个像素点取一个邻域S ,计算S 中所有像素灰度级的平均值,作为邻域平均处理后的图像(,)g x y 的像素值。
即(,)1(,)(,)i j Sg x y f i j M⊂=∑式中,S 是预先确定的邻域(不包括(,)x y ),M 为邻域S 中像素的点数。
图像平滑的直观效果是图像的噪声得以消除或衰减,但同时图像变得比以前模糊了,特别是图像边缘和细节部分,并且所选的邻域半径越大平滑效果越强,图像就越模糊。
为了减轻这种效应,可以采用阈值法,即根据下列准则对图像进行平滑:(,)(,)11(,),(,)(,)(,)(,),i j S i j Sf i j f x y f i j Mg x y M Mf x y ∈∈⎧->⎪=⎨⎪⎩∑∑其他式中,T 是预先设定的阈值,当某些点的灰度值与其邻域点灰度平均值之差不超过阈值T 时,仍保留这些点的灰度值。
当某些点的灰度值与其邻点灰度的均值差别较大时,这些点必然是噪声,这时再取其邻域平均值作为这些点的灰度点。
这样平滑后的图像比单纯的进行邻域平均后的图像要清晰一些,平滑效果仍然很好。
2.2 中值滤波中值滤波是一种非线性处理技术,由于它在实际运算过程中并不需要知道图像的统计特性,所以比较方便。
中值滤波最初是应用在一维信号处理技术中,后来被二维的图像处理技术所引用。
在一定条件下,中值滤波可以克服线性滤波器所带来的图像细节模糊,而且对滤波除脉干扰及图像扫描噪声非常有效。
但是对一些细节多,特别是点、线、尖顶较多的图像则不宜采用中值滤波的方法。
中值滤波的目的是保护图像边缘的同时去除噪声。
2.2.1 中值滤波的主要原理中值滤波实际上就是用一个含有奇数个像素的滑动窗口,将窗口正中点的灰度值用窗口内各点的中值代替。
例如若窗口长度为5,窗口中像素的灰度值分别为80、90、200、110、120,则中值为110,于是原来窗口正中的200就由110代替。
设有一个一维序列12,,...,n f f f ,用窗口长度为m(m 为奇数)的窗口对该序列进行中值滤波,就是从序列12,,...,n f f f 中相继抽出m 个数11,...,,,,...,,i v i i i i v f f f f f --++其中i f 为窗口中心值,12m v -=,再将这m 个点的值按其数值大小排列,取其序号为正中间的那个值作为滤波器的输出。
用数学公式可表示为{,,,,}i i v i i v Y Med f f f -+= 1,2m i Z v -∈=对二维序列{}ij X 进行中值滤波时,滤波窗口也是二维的,只不过这种二维窗口可以有各种不同的形状,如线状、方形,圆形、十字形和圆环形等。
二维数据的中值滤波可以表示为{}ij ij AY Med X =A 为窗口2.2.2 中值滤波的主要特性(1)对某些输入信号中值滤波具有不变性。
对某些特定的输入信号,中值滤波的输出保持输入信号值不变。
(2)中值滤波去噪声性能。
中值滤波可以用来减弱随机干扰和脉冲干扰。
2.3 频域低通滤波法图像的边缘以及噪声干扰在图像的频域上对应于图像傅里叶变换中的高频部分,以去掉噪声使图像平滑。
根据信号系统的理论,低通滤波法的一半形式可以写为(,)(,)(,)G u v H u v F u v =式中(,)F u v 是含噪图像的傅里叶变换;(,)G u v 是平滑后图像的傅里叶变换;(,)H u v 是传递函数。
利用(,)H u v 和(,)F u v 的高频分量得到衰减,得到(,)G u v 后再经过傅里叶反变换就可以得到所希望的图像(,)g x y 。
低通滤波法的系统框架图如下图所示。
低通滤波法的系统框图选择不同的(,)H u v 可以不同的平滑效果。
常用的传递函数由4种,分述如下。
(1)理想低通滤波器(ILPF )一个理想的低通滤波器的传递函数由下式表示:01,(,)(,)0,(,)D u v D H u v D u v D ≤⎧=⎨>⎩式中,0D 是一个事先设置的非负量,成为理想低通滤波器的截止频率;(,)D u v 代表从频率平面的原点到(,)u v 点的距离,即22(,)D u v u v =+(2)巴特沃斯低通滤波器(BLPF )一个n 阶巴特沃斯滤波器的传递系数为201(,)(,)1nH u v D u v D =⎡⎤+⎢⎥⎣⎦或201(,)(,)1(21)nH u v D u v D =⎡⎤+-⎢⎥⎣⎦FFT 低通滤波器IFFT(3)指数低通滤波器(ELPF )指数低通滤波器的传递函数(,)H u v 表示为0(,)(,)nD u v D H u v e ⎡⎤-⎢⎥⎣⎦=或0(,)(,)nD u v D H u v e⎤-⎢⎥⎦=(4)梯形低通滤波器(TLBF )梯形01010111,(,)1(,)[(,)],(,)0,(,)D u v D H u v D u v D D D u v D D D D u v D ⎧<⎪⎪=-≤≤⎨-⎪⎪>⎩在规定0D 和1D 时,要满足01D D <的条件。
一般为了方便起见,把(,)H u v 的第一个转折点0D 定义为截止频率,第二个变量0D 可以任意选取,只要满足01D D <的条件就可以了。
3.研究的主要内容 3.1 均值滤波lc=imread('D:\数字图像处理\图片一.jpg'); I=rgb2gray(lc);J1=imnoise(I,'gaussian',0,0.02); K1=im2double(J1); h1=fspecial('average',3); h2=fspecial('average',5); h3=fspecial('average',7); G1=filter2(h1,K1,'same'); G2=filter2(h2,K1,'same'); G3=filter2(h3,K1,'same'); subplot(3,3,1);imshow(lc); xlabel('原图');subplot(3,3,2);imshow(J1);xlabel('添加高斯噪声后的图像'); subplot(3,3,3);imshow(G1); xlabel('3*3均值滤波后的图像'); subplot(3,3,4);imshow(G2); xlabel('5*5均值滤波后的图像'); subplot(3,3,5);imshow(G3); xlabel('7*7均值滤波后的图像'); J2= imnoise(I,'salt & pepper',0.02); K2=im2double(J2);h=fspecial('average');G4=filter2(h,K2,'same');subplot(3,3,6);imshow(J2); xlabel('添加椒盐噪声');subplot(3,3,7);imshow(G1); xlabel('均值滤波');J3 = imnoise(I,'speckle',0.02);K3=im2double(J3);h=fspecial('average');G5=filter2(h,K3,'same');subplot(3,3,8);imshow(J3); xlabel('添加乘性噪声');subplot(3,3,9);imshow(G5); xlabel('均值滤波');图3-1添加高斯噪声、椒盐噪声、乘性噪声及均值滤波后的图片分析结果:从图3-1中我们可以看出,邻域平均处理后,图像的噪声得到了抑制,但在此同时也使图像变得相对模糊,对高斯噪声的平滑效果比较好。
邻域平均法的平滑效果与所选用的模板大小有关,模板尺寸越大,图像的模糊程度越大,因此在处理图像时要根据不同的目的,而选择不同的模板大小来平滑图像。
3.2 中值滤波lc=imread('D:\数字图像处理\图片一.jpg');I=rgb2gray(lc);J1=imnoise(I,'gaussian',0,0.02);K1=im2double(J1);h1=fspecial('average',3);h2=fspecial('average',5);h3=fspecial('average',7);G1=medfilt2(K1,[3,3]);G2=medfilt2(K1,[5,5]);G3=medfilt2(K1,[7,7]);subplot(3,3,1);imshow(lc);xlabel('原图');subplot(3,3,2);imshow(J1); xlabel('添加高斯噪声后的图像'); subplot(3,3,3);imshow(G1); xlabel('3*3中值滤波后的图像'); subplot(3,3,4);imshow(G2); xlabel('5*5中值滤波后的图像'); subplot(3,3,5);imshow(G3); xlabel('7*7中值滤波后的图像'); J2= imnoise(I,'salt & pepper',0.02); K2=im2double(J2);h=fspecial('average');G4=medfilt2(K2);subplot(3,3,6);imshow(J2); xlabel('添加椒盐噪声');subplot(3,3,7);imshow(G4); xlabel('中值滤波');J3 = imnoise(I,'speckle',0.02);K3=im2double(J3);h=fspecial('average');G5=medfilt2(K3);subplot(3,3,8);imshow(J3); xlabel('添加乘性噪声');subplot(3,3,9);imshow(G5); xlabel('中值滤波');图3-2添加高斯噪声、椒盐噪声、乘性噪声及中值滤波后的图片结果分析:从图3-2中我们可以看出,中值滤波对椒盐噪声滤波效果最好,对乘性噪声滤波效果一般,对高斯噪声滤波效果最差,所以中值滤波最适合椒盐噪声滤波。