中值和均值滤波算法

合集下载

均值滤波和中值滤波

均值滤波和中值滤波

均值滤波和中值滤波
均值滤波和中值滤波是图像处理的两种常用的滤波算法,它们的目的都是为了去掉图像中的噪声,以使图像变得更清晰,以满足下一步处理所需。

均值滤波是一种很常见的滤波算法。

该算法通过统计一定形状的邻域窗口内像素的灰度值,将窗口中各点像素的灰度值求平均,然后将新的灰度值赋给窗口中的每一点像素,从而进行滤波。

由于噪声的特性,噪声点往往灰度值低于其它像素,因此采用均值滤波的过滤效果良好,能够很好的消除噪声,但是也会消除掉有帮助的图像信息,因此多数情况下只是用于滤除少量的随机噪声,而不能用于去除椒盐噪声。

中值滤波则是另一种常用的滤波算法。

它的原理是通过统计一定范围内像素的中位数来进行滤波。

先以块为单位,确定该块中某一点处的灰度值。

然后,把该点所在连通区域的所有点的灰度值读取出来排序,去掉最大值和最小值,再求中间的中位数,将这个中位数作为该点处的灰度值,从而进行滤波处理。

中值滤波主要用于滤除椒盐噪声,可以更好的保留原始图像的信息,但是它的耗时较多,且由于中位数的计算,比较麻烦。

总之,均值滤波和中值滤波作为图像滤波的两种常用技术,具有他们各自良好的应用特点和优势,根据不同的情况和需求,可以采用适当的技术进行滤波,以满足下一步处理的条件。

中值滤波和均值滤波计算例题

中值滤波和均值滤波计算例题

中值滤波和均值滤波计算例题中值滤波和均值滤波是常用的图像处理方法,用于去除图像中的噪声。

下面我将分别给出中值滤波和均值滤波的计算例题。

1. 中值滤波计算例题:假设有一个3x3的图像矩阵如下所示:[10, 20, 30][15, 25, 35][12, 22, 32]我们将对该图像进行中值滤波,即将每个像素的值替换为其周围像素的中值。

首先,我们选取左上角的像素10,将其周围像素的值按升序排列为:[10, 12, 15, 20, 22, 25]中值为20,因此将10替换为20。

接下来,我们继续对其他像素进行同样的操作:20的周围像素值为[10, 12, 15, 22, 25, 30, 32, 35],中值为22。

30的周围像素值为[20, 22, 25, 32, 35],中值为25。

15的周围像素值为[10, 12, 20, 22, 25, 35],中值为20。

25的周围像素值为[15, 20, 22, 30, 32],中值为22。

35的周围像素值为[22, 25, 32],中值为25。

12的周围像素值为[10, 15, 20, 22, 30],中值为20。

22的周围像素值为[10, 12, 15, 20, 25, 30, 32, 35],中值为22。

32的周围像素值为[22, 25, 30, 35],中值为27。

最终,经过中值滤波后的图像矩阵为:[20, 22, 25][20, 22, 25][20, 22, 27]2. 均值滤波计算例题:假设有一个3x3的图像矩阵如下所示:[10, 20, 30][15, 25, 35][12, 22, 32]我们将对该图像进行均值滤波,即将每个像素的值替换为其周围像素的平均值。

首先,我们选取左上角的像素10,将其周围像素的值相加并求平均值:(10 + 20 + 15 + 25) / 4 = 17.5,因此将10替换为17.5。

接下来,我们继续对其他像素进行同样的操作:20的周围像素值相加并求平均值为 (10 + 20 + 15 + 25 + 30 + 12 + 22 + 15) / 8 = 18.125。

单片机中常用滤波算法

单片机中常用滤波算法

单片机中常用滤波算法在单片机中,滤波算法是非常常用的技术,用于去除信号中的噪声或干扰,提取出真正的有效信号。

滤波算法的选择取决于不同的应用场景和信号类型,下面将介绍几种常用的滤波算法。

1.均值滤波均值滤波是最简单且常用的滤波算法之一、它通过计算一定数量数据点的平均值来平滑信号。

具体实现上,可以使用一个滑动窗口,每次将最新的数据点加入窗口并去除最旧的数据点,然后计算窗口内数据点的平均值作为滤波后的输出值。

均值滤波对于去除高频噪声效果较好,但对于快速变化的信号可能会引入较大的延迟。

2.中值滤波中值滤波也是常用的滤波算法,它对信号的一组数据点进行排序,然后选择中间值作为滤波后的输出值。

与均值滤波不同,中值滤波可以有效去除椒盐噪声和脉冲噪声等突变噪声,但可能对于连续变化的信号引入较大的误差。

3.最大值/最小值滤波最大值/最小值滤波是一种简单有效的滤波算法,它通过选取一组数据点中的最大值或最小值作为滤波后的输出值。

最大值滤波可以用于检测异常峰值或波动,最小值滤波则可用于检测异常低谷或衰减。

4.加权移动平均滤波加权移动平均滤波是对均值滤波的改进,它引入权重因子对数据点进行加权平均,以更好地适应信号的动态变化。

常见的权重分配方式有线性加权和指数加权,可以根据实际需求进行调整。

5.卡尔曼滤波卡尔曼滤波是一种最优滤波算法,其主要应用于估计系统状态,包含两个步骤:预测和更新。

预测步骤用于根据上一时刻的状态和系统模型,预测当前时刻的状态;更新步骤通过测量值对预测值进行修正,得到最终的估计值。

卡尔曼滤波具有较好的估计精度和实时性,但对于复杂系统,可能涉及较高的计算量。

除了上述常见的滤波算法,还有一些针对特定应用的滤波算法值得一提,如带通滤波、带阻滤波、滑动平均滤波等。

在实际工程应用中,滤波算法的选择需要根据具体应用场景和信号特点进行权衡,寻找最适合的算法以获得满意的滤波效果。

中值滤波与均值滤波

中值滤波与均值滤波

06
中值滤波与均值滤波的优缺点 分析
中值滤波的优缺点分析
在此添加您的文本17字
优点
在此添加您的文本16字
能够有效去除椒盐噪声:中值滤波对于去除由异常值引起 的椒盐噪声非常有效,因为它会将异常值视为非正常值而 进行替换。
在此添加您的文本16字
保护边缘信息:与均值滤波相比,中值滤波在处理过程中 更不容易模糊图像的边缘信息。
分治算法实现中值滤波
总结词
时间复杂度较低,适用于较大数据量
详细描述
分治算法实现中值滤波的基本思路是将待处理的像素点及其邻域内的像素值分为两个子集,分别计算子集的中值, 然后将两个子集的中值进行比较,选取较小的一个作为输出。这种方法能够显著降低时间复杂度,提高处理效率, 适用于大规模数据量。
并行算法实现中值滤波
在此添加您的文本16字
缺点
在此添加您的文本16字
处理速度相对较慢:中值滤波需要将像素点与邻近像素点 进行排序,因此处理速度相对较慢,尤其是在处理大图像 时。
在此添加您的文本16字
对非椒盐噪声效果有限:中值滤波对于非椒盐噪声的处理 效果可能不如其他滤波器。
均值滤波的优缺点分析
优点
对均匀区域平滑效果好:均值滤波器能够有效地平滑图 像中的均匀区域,减少图像中的细节。
迭代法实现均值滤波
要点一
总结词
迭代法是一种通过不断迭代更新像素值来实现均值滤波的 方法。
要点二
详细描述
迭代法的基本思想是通过不断迭代更新图像中每个像素的 值来实现均值滤波。具体实现时,通常先对图像进行一次 初步的滤波处理,然后根据滤波后的图像和原始图像之间 的差异,不断迭代更新像素值,直到达到预设的迭代次数 或迭代精度要求。迭代法能够更好地处理图像中的细节和 噪声,但计算复杂度较高,需要更多的计算资源和时间。

中值滤波和均值滤波

中值滤波和均值滤波

中值滤波和均值滤波中值滤波和均值滤波是数字图像处理中常用的两种滤波方法,它们在图像去噪和平滑处理中起着重要的作用。

本文将从原理、应用以及优缺点等方面介绍这两种滤波方法。

一、中值滤波中值滤波是一种非线性滤波方法,其基本原理是用像素点周围邻域内的中值来代替该像素点的灰度值。

中值滤波可以有效地去除图像中的椒盐噪声和脉冲噪声,同时能够保持图像的边缘信息。

其处理过程如下:1.选取一个模板,模板的大小根据噪声的程度来确定;2.将模板中的像素点按照灰度值大小进行排序,取其中位数作为中心像素点的灰度值;3.将中心像素点的灰度值替换为中值;4.重复以上步骤,对整个图像进行滤波。

中值滤波的优点是能够有效地去除椒盐噪声和脉冲噪声,同时保持图像的边缘信息。

然而,中值滤波也存在一些缺点,例如不能处理高斯噪声和均匀噪声,对图像细节信息的保护效果较差。

二、均值滤波均值滤波是一种线性平滑滤波方法,其基本原理是用像素点周围邻域内的平均值来代替该像素点的灰度值。

均值滤波可以有效地去除高斯噪声和均匀噪声,同时能够保持图像的整体平滑。

其处理过程如下:1.选取一个模板,模板的大小根据滤波效果来确定;2.计算模板内所有像素点的灰度值的平均值;3.将中心像素点的灰度值替换为平均值;4.重复以上步骤,对整个图像进行滤波。

均值滤波的优点是能够有效地去除高斯噪声和均匀噪声,同时能够保持图像的整体平滑。

然而,均值滤波也存在一些缺点,例如不能处理椒盐噪声和脉冲噪声,对图像细节信息的保护效果较差。

中值滤波和均值滤波在图像处理中各有优劣。

中值滤波适用于去除椒盐噪声和脉冲噪声,能够保持图像的边缘信息,但在处理高斯噪声和均匀噪声时效果较差。

而均值滤波适用于去除高斯噪声和均匀噪声,能够保持图像的整体平滑,但对于细节信息的保护效果较差。

在实际应用中,根据图像的特点和噪声的类型选择合适的滤波方法是很重要的。

如果图像受到椒盐噪声和脉冲噪声的影响,可以选择中值滤波进行去噪处理;如果图像受到高斯噪声和均匀噪声的影响,可以选择均值滤波进行平滑处理。

一些软件滤波算法的原理和程序源代码

一些软件滤波算法的原理和程序源代码

一些软件滤波算法的原理和程序源代码滤波算法是信号处理中常用的技术,用于去除信号中的噪声或抽取感兴趣的信号特征。

在本文中,我将介绍几种常见的软件滤波算法的原理和程序源代码,包括均值滤波、中值滤波和高斯滤波。

1.均值滤波均值滤波是一种简单直观的滤波算法。

其原理是通过计算像素周围邻近像素的平均值,来替换掉原始图像像素的值。

均值滤波的算法步骤如下:-创建一个大小为n的窗口(n通常为奇数),以当前像素为中心。

-计算窗口中所有像素的平均值。

-将当前像素的值替换为计算得到的平均值。

-按顺序处理所有像素。

以下是均值滤波的C++程序源代码示例:```cppvoid meanFilter(const cv::Mat& src, cv::Mat& dst, int kernelSize)int kernelHalfSize = kernelSize / 2;dst.create(src.size(, src.type();for (int y = 0; y < src.rows; y++)for (int x = 0; x < src.cols; x++)cv::Vec3f sum = cv::Vec3f(0, 0, 0);int numPixels = 0;for (int ky = -kernelHalfSize; ky <= kernelHalfSize; ky++) for (int kx = -kernelHalfSize; kx <= kernelHalfSize; kx++) int px = x + kx;int py = y + ky;if (px >= 0 && py >= 0 && px < src.cols && py < src.rows) sum += src.at<cv::Vec3b>(py, px);numPixels++;}}}cv::Vec3f average = sum / numPixels;dst.at<cv::Vec3b>(y, x) = average;}}```2.中值滤波中值滤波是一种非线性滤波算法,主要用于去除图片中的椒盐噪声。

数字图像加权平均滤波与中值滤波计算

数字图像加权平均滤波与中值滤波计算

加权平均滤波:
给出下面5x5的图像和一个滤波模版
右图给的是4领域加权平均滤波模版
加权均值滤波计算答案:
计算步骤:先选取左上角这个区域,计算加权均值替换中心点0的值。

原图像每个点对应值与滤波模版的值对应相乘求和取均值,依次往后 计算其它8个点。

计算方法:(0x0+4x1+2x0+1x1+0x1+1x1+2x0+0x1+4x0)x0.25=1.5 取2 注意: 1. 周围的像素值保持不变
2. 计算每个点的值时都应该按照原图像的灰度值计算
3. 计算结果四舍五入
0 4 2 3 4 1 2 2 2 3 2 3 2 2 2 4 3 4 3 3 0 5 6 7 3 042310112041440143230567301111141000
中值滤波:
1. 选取邻域
2. 计算中值替换中心点的像素值
例如对于下面的5x5图像,选取菱形邻域
求中值: 1 2 2 3 4 中值为2,替换原来的2 后面的依次计算剩下的8点 最后结果:
注意: 1. 周围的像素值保持不变
2. 计算每个点的值时都应该按照原图像的灰度值参与计算
0 4 2 3 4 1 2 2 2 3 2 3 2 2 2 4 3 4 3 3 0 5 6 7 3 0 4 2 3 4 1 2 2 2 3
2 2 2 2 2 4 4
3 3 3 0 5 6 7 3。

中值和均值滤波算法

中值和均值滤波算法

中值和均值滤波算法中值滤波和均值滤波是常用的图像处理算法,用于降低图像噪声的影响。

它们都属于非线性滤波算法,即输出像素值不仅取决于输入像素值,还取决于输入像素值周围的像素值。

中值滤波算法通过将像素值排序并选择中间值作为输出值来实现图像平滑。

具体步骤如下:1.对于图像中的每个像素点,确定一个窗口大小,该窗口覆盖了该像素点及其邻域像素点。

2.将这些像素值排序,并选择排序后的中间值作为输出像素值。

3.重复上述步骤,直到对所有像素点进行操作。

中值滤波算法的优点是可以有效地去除椒盐噪声等脉冲噪声,但会对图像的细节进行模糊处理,从而使图像失去一些细节信息。

均值滤波算法则是将窗口内所有像素值的平均值作为输出像素值。

具体步骤如下:1.对于图像中的每个像素点,确定一个窗口大小。

2.将窗口内所有像素值求和,并除以窗口中像素点的数量,得到均值作为输出像素值。

3.重复上述步骤,直到对所有像素点进行操作。

均值滤波算法的优点是能够在平滑图像的同时保留图像的细节信息,但对于噪声的去除效果相对较差。

在中值滤波和均值滤波算法中,窗口大小是一个重要的参数。

较小的窗口大小可较好地保留图像的细节信息,但噪声去除效果相对较差;而较大的窗口大小可以更好地去除噪声,但会导致图像模糊。

中值滤波和均值滤波算法都有一些改进方法。

例如,自适应中值滤波算法可以根据像素值的分布动态调整窗口大小,从而更好地去除噪声。

另外,加权平均滤波算法可以根据像素点的重要性赋予不同的权重,从而更好地平衡去噪和保留细节的效果。

总之,中值滤波和均值滤波是两种常用的图像处理算法,可以有效地去除噪声,平滑图像。

选择哪种算法取决于具体的应用场景和需求。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

作业:对lean.raw文件,采用中值滤波和均值滤波,完成图象去噪中值滤波:/***************************************************************************函数名称:*MedianFilter()**参数:*LPSTR lpDIBBits-指向源DIB图像指针*LONG lWidth-源图像宽度(象素数)*LONG lHeight-源图像高度(象素数)*int iFilterH-滤波器的高度*int iFilterW-滤波器的宽度*int iFilterMX-滤波器的中心元素X坐标*int iFilterMY-滤波器的中心元素Y坐标**返回值:*BOOL-成功返回TRUE,否则返回FALSE。

**说明:*该函数对DIB图像进行中值滤波。

*************************************************************************/ BOOL WINAPI MedianFilter(LPSTR lpDIBBits,LONG lWidth,LONG lHeight,int iFilterH,int iFilterW,int iFilterMX,int iFilterMY){//指向源图像的指针unsigned char*lpSrc;//指向要复制区域的指针unsigned char*lpDst;//指向复制图像的指针LPSTR lpNewDIBBits;HLOCAL hNewDIBBits;//指向滤波器数组的指针unsigned char*aValue;HLOCAL hArray;//循环变量LONG i;LONG j;LONG k;LONG l;//图像每行的字节数LONG lLineBytes;//计算图像每行的字节数lLineBytes=WIDTHBYTES(lWidth*8);//暂时分配内存,以保存新图像hNewDIBBits=LocalAlloc(LHND,lLineBytes*lHeight);//判断是否内存分配失败if(hNewDIBBits==NULL){//分配内存失败return FALSE;}//锁定内存lpNewDIBBits=(char*)LocalLock(hNewDIBBits);//初始化图像为原始图像memcpy(lpNewDIBBits,lpDIBBits,lLineBytes*lHeight);//暂时分配内存,以保存滤波器数组hArray=LocalAlloc(LHND,iFilterH*iFilterW);//判断是否内存分配失败if(hArray==NULL){//释放内存LocalUnlock(hNewDIBBits);LocalFree(hNewDIBBits);//分配内存失败return FALSE;}//锁定内存aValue=(unsigned char*)LocalLock(hArray);//开始中值滤波//行(除去边缘几行)for(i=iFilterMY;i<lHeight-iFilterH+iFilterMY+1;i++){//列(除去边缘几列)for(j=iFilterMX;j<lWidth-iFilterW+iFilterMX+1;j++){//指向新DIB第i行,第j个象素的指针lpDst=(unsigned char*)lpNewDIBBits+lLineBytes*(lHeight-1-i)+j;//读取滤波器数组for(k=0;k<iFilterH;k++){for(l=0;l<iFilterW;l++){//指向DIB第i-iFilterMY+k行,第j-iFilterMX+l个象素的指针lpSrc=(unsigned char*)lpDIBBits+lLineBytes*(lHeight-1-i+iFilterMY-k)+j-iFilterMX+l;//保存象素值aValue[k*iFilterW+l]=*lpSrc;}}//获取中值*lpDst=GetMedianNum(aValue,iFilterH*iFilterW);}}//复制变换后的图像memcpy(lpDIBBits,lpNewDIBBits,lLineBytes*lHeight);//释放内存LocalUnlock(hNewDIBBits);LocalFree(hNewDIBBits);LocalUnlock(hArray);LocalFree(hArray);//返回return TRUE;}均值滤波:/************************************************************************** *函数名称:*GetMedianNum()**参数:*unsigned char*bpArray-指向要获取中值的数组指针*int iFilterLen-数组长度**返回值:*unsigned char-返回指定数组的中值。

**说明:*该函数用冒泡法对一维数组进行排序,并返回数组元素的中值。

*************************************************************************/ unsigned char WINAPI GetMedianNum(unsigned char*bArray,int iFilterLen){//循环变量int i;int j;//中间变量unsigned char bTemp;//用冒泡法对数组进行排序for(j=0;j<iFilterLen-1;j++){for(i=0;i<iFilterLen-j-1;i++){if(bArray[i]>bArray[i+1]){//互换bTemp=bArray[i];bArray[i]=bArray[i+1];bArray[i+1]=bTemp;}}}//计算中值if((iFilterLen&1)>0){//数组有奇数个元素,返回中间一个元素bTemp=bArray[(iFilterLen+1)/2];} else{//数组有偶数个元素,返回中间两个元素平均值bTemp=(bArray[iFilterLen/2]+bArray[iFilterLen/2+1])/2;}//返回中值return bTemp;}///<summary>9///中值滤波算法处理10///</summary>11///<param name="bmp">原始图片</param>12///<param name="bmp">是否是彩色位图</param>13///<param name="windowRadius">过滤半径</param>14public Bitmap ColorfulBitmapMedianFilterFunction(Bitmap srcBmp,int windowRadius, bool IsColorfulBitmap)15{16if(windowRadius<1)17{18throw new Exception("过滤半径小于1没有意义");19}20//创建一个新的位图对象21Bitmap bmp=new Bitmap(srcBmp.Width,srcBmp.Height);2223//存储该图片所有点的RGB值24byte[,]mR,mG,mB;25mR=new byte[srcBmp.Width,srcBmp.Height];26if(IsColorfulBitmap)27{28mG=new byte[srcBmp.Width,srcBmp.Height];29mB=new byte[srcBmp.Width,srcBmp.Height];30}31else32{33mG=mR;34mB=mR;35}3637for(int i=0;i<=srcBmp.Width-1;i++)38{39for(int j=0;j<=srcBmp.Height-1;j++)40{41mR[i,j]=srcBmp.GetPixel(i,j).R;42if(IsColorfulBitmap)43{44mG[i,j]=srcBmp.GetPixel(i,j).G;45mB[i,j]=srcBmp.GetPixel(i,j).B;46}47}48}4950mR=MedianFilterFunction(mR,windowRadius);51if(IsColorfulBitmap)52{53mG=MedianFilterFunction(mG,windowRadius);54mB=MedianFilterFunction(mB,windowRadius);55}56else57{58mG=mR;59mB=mR;60}61for(int i=0;i<=bmp.Width-1;i++)62{63for(int j=0;j<=bmp.Height-1;j++)64{65bmp.SetPixel(i,j,Color.FromArgb(mR[i,j],mG[i,j],mB[i,j]));66}67}68return bmp;69}7071///<summary>72///对矩阵M进行中值滤波73///</summary>74///<param name="m">矩阵M</param>75///<param name="windowRadius">过滤半径</param>76///<returns>结果矩阵</returns>77private byte[,]MedianFilterFunction(byte[,]m,int windowRadius)78{79int width=m.GetLength(0);80int height=m.GetLength(1);8182byte[,]lightArray=new byte[width,height];8384//开始滤波85for(int i=0;i<=width-1;i++)86{87for(int j=0;j<=height-1;j++)88{89//得到过滤窗口矩形90Rectangle rectWindow=new Rectangle(i-windowRadius,j-windowRadius,2* windowRadius+1,2*windowRadius+1);91if(rectWindow.Left<0)rectWindow.X=0;92if(rectWindow.Top<0)rectWindow.Y=0;93if(rectWindow.Right>width-1)rectWindow.Width=width-1-rectWindow.Left;94if(rectWindow.Bottom>height-1)rectWindow.Height=height-1-rectWindo w.Top;95//将窗口中的颜色取到列表中96List<byte>windowPixelColorList=new List<byte>();97for(int oi=rectWindow.Left;oi<=rectWindow.Right-1;oi++)98{99for(int oj=rectWindow.Top;oj<=rectWindow.Bottom-1;oj++)100{101windowPixelColorList.Add(m[oi,oj]);102}103}104//排序105windowPixelColorList.Sort();106//取中值107byte middleValue=0;108if((windowRadius*windowRadius)%2==0)109{110//如果是偶数111middleValue=Convert.ToByte((windowPixelColorList[windowPixelColorList.C ount/2]+windowPixelColorList[windowPixelColorList.Count/2-1])/2);112}113else114{115//如果是奇数116middleValue=windowPixelColorList[(windowPixelColorList.Count-1)/2]; 117}118//设置为中值119lightArray[i,j]=middleValue;120}121}122return lightArray;123}MATLAB算法实现的方法一个均值滤波的例子:I=imread('cameraman.tif');%读入图像J=imnoise(I,'salt&pepper',0.02);%给图像添加椒盐噪声K=imnoise(I,'gaussian',0,0.005);%给图像添加均值为0,方差为0.005的高斯噪声subplot(231),imshow(I)title('原图像')subplot(232),imshow(J)title('添加椒盐噪声图像')subplot(233),imshow(K)title('添加高斯噪声图像')subplot(234),imshow(I)title('原图像')K1=filter2(fspecial('average',3),J)/255;%使用3×3模板均值滤波subplot(235),imshow(K1)title('3*3椒盐噪声均值滤波')K2=filter2(fspecial('average',3),K)/255;%使用3×3模板均值滤波subplot(236),imshow(K2)title('3*3高斯噪声均值滤波')一个中值滤波的例子:I=imread('cameraman.tif');%读入图像J=imnoise(I,'salt&pepper',0.02);%给图像添加椒盐噪声K=imnoise(I,'gaussian',0,0.005);%给图像添加均值为0,方差为0.005的高斯噪声subplot(231),imshow(I)title('原图像')subplot(232),imshow(J)title('添加椒盐噪声图像')subplot(233),imshow(K)title('添加高斯噪声图像')subplot(234),imshow(I)title('原图像')K1=medfilt2(J,[3,3]);%使用3×3模板中值滤波subplot(235),imshow(K1)title('3*3椒盐噪声中值滤波')K2=medfilt2(K,[3,3]);%使用3×3模板中值滤波subplot(236),imshow(K2)title('3*3高斯噪声中值滤波')3、均值滤波与中值滤波的对比I=imread('cameraman.tif');%读入图像J=imnoise(I,'salt&pepper',0.02);%给图像添加椒盐噪声K=imnoise(I,'gaussian',0,0.005);%给图像添加均值为0,方差为0.005的高斯噪声subplot(331),imshow(I)title('原图像')subplot(332),imshow(J)title('添加椒盐噪声图像')subplot(333),imshow(K)title('添加高斯噪声图像')subplot(334),imshow(I)title('原图像')K1=filter2(fspecial('average',3),J)/255;%使用3×3模板均值滤波subplot(335),imshow(K1)title('3*3椒盐噪声均值滤波')K2=filter2(fspecial('average',3),K)/255;%使用3×3模板均值滤波subplot(336),imshow(K2)title('3*3高斯噪声均值滤波')subplot(337),imshow(I)title('原图像')K3=medfilt2(J,[3,3]);%使用3×3模板中值滤波subplot(338),imshow(K3)title('3*3椒盐噪声中值滤波')K4=medfilt2(K,[3,3]);%使用3×3模板中值滤波subplot(339),imshow(K4)title('3*3高斯噪声中值滤波')。

相关文档
最新文档