非局部均值滤波代码
- 格式:doc
- 大小:29.00 KB
- 文档页数:4
21种nr的iqa处理算法及通用函数引言在数字图像处理中,图像质量评估(I QA)是一个重要的研究领域。
其中,噪声降低(N R)算法被广泛应用于提高图像的质量。
本文将介绍21种常用的NR的I Q A处理算法及通用函数。
1.均值滤波均值滤波是一种常见的降噪算法。
它通过计算像素周围邻域的均值来减小噪声。
均值滤波可以使用以下通用函数实现:d e fm ea n_fi lt er(im a ge):"""均值滤波"""实现算法代码r e tu rn fi lt er ed_im a ge2.中值滤波中值滤波也是一种常用的NR算法,它使用像素点周围邻域中的中值来减小噪声的影响。
以下是中值滤波的通用函数:d e fm ed ia n_fi lt er(i ma ge):"""中值滤波"""实现算法代码r e tu rn fi lt er ed_im a ge3.高斯滤波高斯滤波是一种基于高斯函数的线性平滑滤波器。
它通过计算像素点周围邻域的加权平均值来降低噪声。
以下是高斯滤波的通用函数:d e fg au ss ia n_fi lte r(i ma ge):"""高斯滤波"""实现算法代码r e tu rn fi lt er ed_im a ge4.双边滤波双边滤波是一种保留图像边缘的滤波方法。
它通过考虑像素点的空间距离和像素值之间的差异来平滑图像。
以下是双边滤波的通用函数:d e fb il at er al_f ilt e r(im ag e):"""双边滤波"""实现算法代码r e tu rn fi lt er ed_im a ge5.小波去噪小波去噪是一种基于小波变换的降噪方法。
平滑滤波方法研究平滑滤波是低频增强的空间域滤波技术。
它的目的有两类:一类是模糊;另一类是消除噪音。
并且具有一定的处理要求,一是不能损坏图像的轮廓及边缘等重要信息;二是使图像清晰视觉效果好。
平滑滤波的方法有邻域平滑滤波,就是求邻近像元点的平均亮度值,双边滤波,中值滤波,以及非局部均值滤波等。
1、双边滤波法双边滤波是一种非线性滤波器,它可以达到保持边缘、降噪平滑的效果。
双边滤波的边缘保持特性主要是通过在卷积的过程中组合空域函数和值域核函数来实现的,典型的核函数为高斯分布函数,如下所示:其中:为归一化作用。
σs为空域高斯函数的标准差,σr为值域高斯函数的标准差,Ω表示卷积的定义域。
编写代码测试,当添加的噪声为0.05时,结果如下滤波后图像添加噪声为0.3时,结果如下滤波后图像由此可知,双边滤波具有去除噪音的作用2、邻域平均法邻域平滑滤波原理:邻域平均法就是对含噪声的原始图像f(x,y)的每一个像素点取一个邻域,计算S中所有像素灰度级的平均值,作为邻域平均处理后的图像g(x, y)的像素值。
即式中:x,y=0,1,…,N-1;S是以(x,y)为中心的邻域的集合,M是S 内的点数。
邻域平均法的思想是通过一点和邻域内像素点求平均来去除突变的像素点,从而滤掉一定噪声,其优点是算法简单,计算速度快,其代价会造成图像在一定程度上的模糊。
3、中值滤波法中值滤波就是用一个奇数点的移动窗口,将窗口的中心点的值用窗口内的各点中值代替。
假设窗口内有五点,其值为80、90、200、110和120,那么此窗口内各点的中值及为110。
设有一个一维序列f1,f2,…,fn,取窗口长度(点数)为m(m为奇数),对其进行中值滤波,就是从输入序列中相继抽出m个数fi-v,…,fi-1,fi,fi+1,…,fi+v(其中fi为窗口中心值,v=(m-1)/2),再将这m个点按其数值大小顺序排序,取其序号的中心点的那个数作为滤波输出。
数学公式表示为:Yi=Med{fi-v,…,fi-1,fi,fi+1,…,fi+v} i∈N v=(m-1)/2 (式1-2)Yi称为序列fi-v,…,fi-1,fi,fi+1,…,fi+v的中值例如,有一序列{0,3,4,0,7},重新排序后为{0,0,3,4,7}则Med{0,0,3,4,7}=3。
图像处理中的图像去噪方法对比与分析图像处理是一门涉及数字图像处理和计算机视觉的跨学科领域。
去噪是图像处理中一个重要的任务,它的目的是减少或消除图像中的噪声,提高图像的质量和清晰度。
在图像处理中,有许多不同的去噪方法可供选择。
本文将对其中几种常见的图像去噪方法进行对比与分析。
首先是均值滤波器,它是最简单的去噪方法之一。
均值滤波器通过计算像素周围邻域的像素值的平均值来降低图像中的噪声。
它的优点是简单易懂,计算速度快,但它的效果可能不够理想,因为它会导致图像模糊。
接下来是中值滤波器,它是一种非线性滤波器。
中值滤波器通过对像素周围邻域的像素值进行排序,并选取中间值来替代当前像素的值。
它的优点是可以有效地去除椒盐噪声和激光点噪声等噪声类型,而且不会对图像的边缘和细节造成太大的损失。
然而,中值滤波器也有一些缺点,例如无法去除高斯噪声和处理大面积的噪声。
另一种常见的去噪方法是小波去噪。
小波去噪利用小波变换的多尺度分解特性,将图像分解为不同尺度的频带,然后根据频带的能量分布进行噪声和信号的分离,再对分离后的频带进行阈值处理和重构。
小波去噪的优点是可以提供较好的去噪效果,并且能够保留边缘和细节。
然而,小波去噪的计算复杂度较高,处理大尺寸的图像会耗费较多的时间。
另外,还有一种常见的图像去噪方法是非局部均值去噪(Non-local Means Denoising,NLM)。
NLM方法基于图像的纹理特征,通过计算像素周围的相似度来降噪。
它的优点是可以保持图像的纹理和细节,并且可以处理各种类型的噪声。
然而,NLM方法的计算复杂度较高,对于大尺寸的图像来说可能会耗费较多的时间。
最后,自适应滤波器也是一种常见的图像去噪方法。
自适应滤波器根据图像的局部特性来调整滤波器的参数,以达到更好的去噪效果。
它的优点是可以根据图像的特点进行自适应调整,并且可以有效地去除噪声和保留细节。
然而,自适应滤波器也存在一些缺点,例如可能会对图像的边缘造成一定的模糊。
一些软件滤波算法的原理和程序源代码滤波算法是信号处理中常用的技术,用于去除信号中的噪声或抽取感兴趣的信号特征。
在本文中,我将介绍几种常见的软件滤波算法的原理和程序源代码,包括均值滤波、中值滤波和高斯滤波。
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.中值滤波中值滤波是一种非线性滤波算法,主要用于去除图片中的椒盐噪声。
中值滤波和均值滤波C++代码均值滤波和中值滤波代码2008-11-24 16:07:36| 分类: |举报|字号//------------------均值滤波器bool FilterAV(unsigned char *image,int height,int width){int i,j;unsigned char *p=(unsigned char*)malloc(height*width);for(i=1;i<height-1;i++){for(j=1;j<width-1;j++){p[i*width+j]=(unsigned char)(((int)image[(i-1)*width+j-1]+(int)image[(i-1)*width+j]+(int)image[(i-1)*width+j+1]+(int)image[i*width+j-1]+(int)image[i*width+j]+(int)image[i*width+j+1]+(int)image[(i+1)*width+j-1]+(int)image[(i+1)*width+j]+(int)image[(i+1)*width+j+1])/9);}}for(i=1;i<height-1;i++){for(j=1;j<width-1;j++){image[i*width+j]=p[i*width+j];}}free(p);return true;}//----------------------------中值滤波器bool FilterMid(unsigned char *image,int height,int width){int i,j,k,l;int pos;unsigned char temp;unsigned char psr[9];unsigned char *p=(unsigned char*)malloc(height*width); for(i=1;i<height-1;i++){for(j=1;j<width-1;j++){ //---3*3窗⼝矩阵psr[0]=image[(i-1)*width+j-1];psr[1]=image[(i-1)*width+j];psr[2]=image[(i-1)*width+j+1];psr[3]=image[i*width+j-1];psr[4]=image[i*width+j];psr[5]=image[i*width+j+1];psr[6]=image[(i+1)*width+j-1];psr[7]=image[(i+1)*width+j];psr[8]=image[(i+1)*width+j+1];//--------选择排序for(k=0;k<9;k++){pos=k;for(l=k;l<9;l++){if(psr[l]<psr[pos])pos=l;}temp=psr[k];psr[k]=psr[pos];psr[pos]=temp;}//------取中值p[i*width+j]=psr[4];}}for(i=1;i<height-1;i++){for(j=1;j<width-1;j++){image[i*width+j]=p[i*width+j]; }}free(p);return true;}。
使用计算机视觉技术进行图像去噪和增强的方法介绍图像去噪和增强是计算机视觉领域中的重要研究方向之一。
在现实生活中,图像数据往往受到噪声、模糊、低对比度等因素的影响,这些问题会降低图像的质量,降低了人们对图像的理解和分析能力。
为了提升图像的质量和准确性,科学家们提出了许多方法和算法,本文将介绍其中几种常见的方法。
一、主成分分析法(PCA):主成分分析法是一种常见的图像去噪和增强方法,它通过线性变换的方式将原始图像数据转换为新的坐标系。
在新的坐标系中,通过选择合适的主成分,可以达到去除图像噪声和增强图像细节的目的。
主成分分析法的基本步骤如下:1. 对原始图像进行预处理,包括灰度处理、归一化等;2. 将图像数据矩阵重构为一个向量;3. 计算协方差矩阵,并对其进行特征值分解;4. 选择合适的主成分进行图像变换,得到去噪或增强后的图像。
二、小波变换法:小波变换是一种基于信号处理的方法,在图像去噪和增强中也得到了广泛应用。
小波变换的基本思想是将图像分解为不同尺度上的平滑部分和细节部分,其中细节部分通常是我们关注的目标。
小波变换法的基本步骤如下:1. 对原始图像进行灰度处理;2. 将灰度图像进行小波分解,得到不同尺度上的频域系数;3. 根据不同尺度上的频域系数进行图像去噪和增强;4. 将去噪或增强后的频域系数进行小波反变换,得到最终的图像。
三、非局部均值滤波法:非局部均值滤波法是一种经典的图像去噪方法,它通过利用图像中的冗余信息来降低噪声的影响。
该方法的基本思想是通过计算图像中相似像素点的平均值来去除噪声。
非局部均值滤波法的基本步骤如下:1. 对原始图像进行灰度处理;2. 在给定窗口内,计算每个像素点与邻域像素点之间的相似度;3. 根据相似度计算图像中每个像素点的非局部均值;4. 基于计算得到的非局部均值,生成最终去噪后的图像。
四、卷积神经网络(CNN):卷积神经网络是近年来在图像处理领域取得重大进展的方法之一。
第34卷第4期电子与信息学报Vol.34No.4 2012年4月Journal of Electronics & Information Technology Apr. 2012基于非局部均值滤波的SAR图像去噪易子麟尹东胡安洲张荣*(中国科学技术大学电子工程与信息科学系合肥 230027)摘要:该文提出一种基于结构相似性指数(SSIM)的非局部均值(Non Local means, NL-means)滤波的合成孔径雷达(SAR)图像相干斑噪声抑制新方法。
该方法用SSIM改进NL-means算法中小块相似性的度量,能利用结构信息来进行相干斑抑制。
通过在真实SAR图像上的实验表明,与GammaMAP滤波、CHMT算法、BLS-GSM算法、NL-means滤波相比,此方法在有效去除相干斑噪声的同时能更好地保持边缘结构信息。
关键词:合成孔径雷达图像;图像去噪;结构相似性指数;非局部均值中图分类号:TP751 文献标识码: A 文章编号:1009-5896(2012)04-0950-06 DOI: 10.3724/SP.J.1146.2011.00918SAR Image Despeckling Based on Non-local Means FilterYi Zi-lin Yin Dong Hu An-zhou Zhang Rong(Department of Electronic Engineering and Information Science, USTC, Hefei 230027, China)Abstract: This paper proposes a new speckle reduction algorithm for Synthetic Aperture Radar (SAR) images. It is based on the Non Local (NL) means filter and improved by Structural SIMilarity (SSIM). Structure information is introduced into the despeckling method by measuring the similarity between small patches with SSIM. Some experiments on real SAR images, comparing with GammaMAP filter, Contourlet Hidden Markov Tree (CHMT) method, Bayes Least Squares-Gaussian Scale Mixtures (BLS-GSM) method and NL-means filter, demonstrate that the proposed algorithm is able to reduce efficiently speckle while retain edges and structures well.Key words: SAR image; Despeckling; Structural SIMilarity (SSIM); Non Local means (NL-means)1 引言合成孔径雷达(SAR)是一种主动式微波遥感器,由于具有全天时、全天候成像、高空间分辨率和强穿透能力等优点,被广泛应用到军事和民用各领域。
基于离散余弦变换的非局部均值滤波算法田红磊【摘要】Non-local means(NLM ) has been becoming one of the most useful tools for image denoising. However , the calculation for its similarity weights has limited accuracy against noise when the noise level is too high. In order to handle above-mentioned problem, NLM denoising algorithm is introducd based on discrete cosine transform (DCT). First, making use of the low frequency of DCT to reconstruct image , the part of the denoise in image is filtered while preserving the main information of the image . Second, the NLM algorithm is used for the reconstructed image to filter the additional denoise through calculation of similarity weights accurately. Compared with NLM algorithm, the experimental results demonstrate that our method gets a higher Peak Signal to Noise Ratio (PSNR) and better visual fidelity.%要非局部均值(non-local means,NLM)去噪算法已成为较有效去除图像噪声的算法之一.然而,当噪声水平较高时,NLM不能准确地计算图像块之间的相似度权重值,影响图像的去噪效果.针对上述问题,结合离散余弦变换(discrete cosine transform,DCT)提出了基于DCT的非局部均值滤波算法.首先,利用DCT 的低频系数重构图像,以达到滤除部分噪声的同时保护图像的主要内容.其次,利用重构图像较准确地计算图像块之间的相似度权重值,将NLM去噪算法用于噪声图像.实验结果表明,该算法能够得到较高的峰值信噪比(peak signal to noiseratio,PSNR)和更好的视觉效果.【期刊名称】《科学技术与工程》【年(卷),期】2013(013)011【总页数】4页(P3123-3126)【关键词】图像去噪;非局部均值(NLM);离散余弦变换(DCT)【作者】田红磊【作者单位】中国石油大学(华东)计算机与通信工程学院,青岛266580【正文语种】中文【中图分类】TP391.41图像去噪是图像预处理的一个基本内容,与图像处理相关的许多应用如分割、配准、边缘提取等,通常均需要使用有效的去噪算法进行预处理来获得更可靠的效果。
10种简单的数字滤波算法(C++源程序)以下是10种简单的数字滤波算法C++实现示例:1. 均值滤波均值滤波是数字滤波算法的一种常见形式,它可以通过计算一定范围内像素值的平均值来平滑图像。
其C++实现如下:#include <iostream>#include <opencv2/opencv.hpp>using namespace std;using namespace cv;// Function to implement mean filtervoid meanBlur(Mat& img, Mat& result, int k_size){int img_rows = img.rows;int img_cols = img.cols;// Create a same sized blank imageresult.create(img_rows, img_cols, img.type());for(int r=0; r<img_rows; r++){for(int c=0; c<img_cols; c++){// Define the window of radius k_sizeint r_min = max(0, r-k_size/2);int r_max = min(img_rows-1, r+k_size/2);int c_min = max(0, c-k_size/2);int c_max = min(img_cols-1, c+k_size/2);// Calculate the mean valueint sum = 0;int count = 0;for (int i=r_min; i<=r_max; i++){for (int j=c_min; j<=c_max; j++){sum += img.at<uchar>(i,j);count++;}}result.at<uchar>(r,c) = (uchar) (sum/count);}}}int main(int argc, char** argv){// Load the imageMat img = imread("image.jpg", 0);// Check if image is loaded properlyif(!img.data){cout << "Failed to load image" << endl;return -1;}// Define the kernel sizeint k_size = 3;// Apply mean filterMat result;meanBlur(img, result, k_size);// Display the resultnamedWindow("Original Image", WINDOW_NORMAL);namedWindow("Mean Filtered Image", WINDOW_NORMAL);imshow("Original Image", img);imshow("Mean Filtered Image", result);waitKey(0);return 0;}在上述代码中,`meanBlur()` 函数接收一个输入图像`img` 和一个输出图像`result`,以及一个整数参数`k_size`,该参数指定滤波器的大小,即窗口的半径。
Matlab中的非局部均值滤波方法与示例分析引言图像处理领域的非局部均值滤波方法在降噪和图像恢复等任务中被广泛应用。
Matlab作为一种功能强大的科学计算和图像处理工具,提供了丰富的函数和工具箱,方便我们实现非局部均值滤波算法。
本文将介绍非局部均值滤波的基本原理和方法,并结合实例进行分析。
一、非局部均值滤波原理非局部均值滤波是一种基于相似性原理的图像去噪方法。
其基本思想是:对于图像中的每一个像素点,以该点为中心,寻找与其相似的邻域块,然后计算邻域块内各像素值的均值,将该均值作为该像素点的新像素值。
相似性的度量常用欧式距离或余弦相似度等方法。
二、非局部均值滤波的实现步骤1. 定义邻域块大小在进行非局部均值滤波之前,首先需要定义邻域块的大小。
邻域块的大小决定了在寻找相似邻域时考虑的像素范围。
通常情况下,邻域块的大小为一个固定的窗口。
2. 计算相似度对于每个像素点,我们需要计算其与邻域块的相似度。
常用的相似度计算方法是欧式距离或余弦相似度。
欧式距离较为简单,但在某些情况下会受到噪声的干扰。
余弦相似度则通过对像素值的分布进行比较,可以在一定程度上克服噪声的影响。
3. 寻找相似邻域根据相似度计算的结果,我们可以得到每个像素点与其邻域块相似的程度。
通过设置一个相似度的阈值,我们可以选择相似度较高的像素点作为邻域。
4. 计算均值在寻找到相似邻域后,我们可以计算邻域块内的像素值的均值。
这个均值就是该像素点的新像素值。
5. 更新像素值根据计算得到的均值,我们可以将像素点的像素值进行更新。
这样,我们就完成了整个非局部均值滤波的过程。
三、Matlab中的非局部均值滤波函数Matlab提供了一些函数和工具箱,方便我们实现非局部均值滤波方法。
其中最常用的函数是“nlfilter”和“imnlmfilt”。
“nlfilter”函数是一个通用的滤波函数,可以实现各种滤波方法。
我们可以自定义一个滤波函数,然后将其作为参数传递给“nlfilter”函数。
相片降噪的原理是
相片降噪的原理是通过算法和技术处理图像中的噪声,从而减少或消除噪声的影响,提高图像的清晰度和质量。
常见的相片降噪原理包括以下几种:
1. 统计滤波:根据图像的统计性质,如均值、方差等,对图像进行滤波处理,去除图像中的噪声。
常用的统计滤波方法有均值滤波、中值滤波等。
2. 非局部均值去噪(NLmeans):通过比较图像的不同区域之间的相似性,对每个像素点进行加权平均,从而降低噪声。
该方法利用了图像中相似纹理区域的统计特性,能够有效去除噪声。
3. 小波去噪:利用小波变换将图像分解为不同频率的子带,对高频子带进行降噪处理,然后再进行逆变换恢复图像。
小波去噪主要用于降低图像的高频噪声。
4. 基于深度学习的降噪:利用深度学习算法,通过训练大量图像样本,学习图像中的噪声和清晰图像之间的映射关系,进而对新的图像进行降噪处理。
这种方法通常需要较大的计算资源和大量的训练样本。
总之,相片降噪的原理是利用图像处理算法和技术,通过对图像的统计特性、纹理特征等进行分析和处理,从而减少图像中的噪声,提高图像的质量和清晰度。
不同的降噪方法适用于不同的噪声类型和降噪要求。
种滤波算法程序大全(含源代码分享)一、均值滤波1.1包络滤波其原理是将每个像素值替换为周围像素点的加权平均值,即取该点的邻域像素点的均值作为替换像素点的值,通过提高平均灰度和减少椒盐噪声作用。
//源代码// 函数名:meanFilte//功能:均值滤波// 输入:srcImg:源图像; meanImg:均值flied后的图像// 返回:voidvoid meanFilter(Mat srcImg, Mat meanImg)int m=srcImg.rows;int n=srcImg.cols;//掩模矩阵int mask_i, mask_j;int i, j;int sum;int mask_size=3;//maskSize=3时,卷积核为3*3的矩阵,mask_i代表卷积核中行,mask_j代表列for (mask_i = -mask_size/2;mask_i<=mask_size/2;mask_i++)for (mask_j = -mask_size/2;mask_j<=mask_size/2;mask_j++)//遍历源图像的每个像素点for (i=0;i<m;i++)for (j=0;j<n;j++)if ((mask_i+i>=0) && (mask_i+i<m) &&(mask_j+j>=0) && (mask_j+j<n))sum+=srcImg.at<uchar>(mask_i+i,mask_j+j);meanImg.at<uchar>(i,j)=sum/9;}}}1.2高斯滤波其原理是将每个像素值替换为其周围像素点与其距离的加权平均值,通过减小噪声频率,降低噪声增强图像边缘的作用。
//源代码// 函数名:gaussianFilte//功能:高斯滤波// 输入:srcImg:源图像; gausImg:高斯滤波后的图像// 返回:voidvoid gaussianFilter(Mat srcImg, Mat gausImg)int m=srcImg.rows;int n=srcImg.cols;//掩模矩阵int mask_i, mask_j;int i, j;int sum;。
医学像处理技术的噪声去除方法在医学图像处理技术中,噪声是一个常见且严重的问题。
噪声的存在会对图像的质量和准确性产生负面影响,因此,开发一种有效的噪声去除方法对于医学图像的应用至关重要。
本文将介绍几种常见的医学图像噪声去除方法,并比较它们的优缺点。
一、平滑滤波法平滑滤波法是最简单且常见的噪声去除方法之一。
其基本原理是利用相邻像素的平均值或加权平均值来替代噪声像素的值。
常用的平滑滤波方法包括均值滤波、中值滤波和高斯滤波。
均值滤波法通过计算像素周围邻域像素的平均值来平滑图像,但它对于边缘细节的保护较差;中值滤波法则是用局部邻域的中值来代替噪声像素,对于椒盐噪声有较好的去除效果;高斯滤波则通过与邻域像素的加权平均来平滑图像,它能在一定程度上保留图像的细节。
二、小波变换法小波变换是一种时频分析方法,它通过将信号分解为不同频率的小波子带来表示信号。
在医学图像处理中,小波变换被广泛应用于噪声去除。
小波变换可以将信号的低频成分与高频成分相分离,然后通过对高频成分进行阈值去噪处理来实现图像的去噪。
小波变换法具有较好的去噪效果,可以有效地去除多种噪声,但它的计算复杂度较高。
三、非局部均值滤波法非局部均值滤波法(Non-local Means,简称NLM)是一种基于相似性原理的图像去噪方法。
该方法通过计算图像中每个像素与其他像素之间的相似性来过滤噪声。
具体来说,NLM方法将每个像素与图像中所有其他像素进行比较,并计算它们之间的相似度。
然后,通过对相似度进行加权平均来计算噪声像素的值,从而实现去噪的目的。
NLM方法具有较好的去噪效果,尤其擅长去除高斯白噪声和椒盐噪声。
四、偏微分方程法偏微分方程法(Partial Differential Equation,简称PDE)是一种通过偏微分方程对图像进行去噪的方法。
PDE方法通过定义一个能量函数来描述图像噪声与图像细节之间的平衡关系,并使用偏微分方程对能量函数进行最小化求解。
非局部均值滤波去噪研究目录摘要 (I)第一章引言 (1)第二章图像去噪技术 (2)2.1 图像噪声的定义和分类 (2)2.2 图像去噪技术的研究现状 (2)2.3 图像质量评价标准 (3)第三章非局部均值滤波原理 (5)3.1均值滤波 (5)3.2非局部均值滤波 (5)3.2.1非局部均值滤波基本原理 (5)3.2.2非局部均值滤波存在的不足 (6)3.2.3快速的非局部均值滤波算法 (7)第四章非局部均值滤波实验仿真 (9)4.1非局部均值滤波MATLAB仿真 (9)4.2 非局部均值滤波权重参数的影响 (10)总结 (14)参考文献 (15)摘要本文分析了非局部均值滤波(NLM)算法的优点和不足,提出了一种快速的非局部均值去噪算法。
快速实现算法基于块的计算距离不变条件下使用的积分图像和快速傅里叶变换来实现。
并且根据能使平均峰值信噪比(PSNR)达到最大的条件,在图像数据库计算NLM的最优参数,研究权重参数对滤波效果的影响,为自适应参数选择提供参考。
关键词:图像去噪;非局部均值;积分图像;快速傅里叶变换;第一章引言第一章引言图像中的每一个像素点都不是孤立存在的,而是与其周围的像素一起组成图像中的几何结构[1]。
以像素点为中心的窗口邻域,也就是图像块,能够很好地体现像素点的结构特征,将图像中复杂的空间交互关系考虑在内。
相应于每一个像素点的图像块的集合可以作为图像的一种过完备表示。
同时,图像一般都具有自相似性质,即处于图像中不同位置处的像素点往往表现出很强的相关性,纹理图像就是一个典型的例子。
自然图像中通常包含丰富的重复结构或者说是冗余信息,从图像中任取一个小窗口,都能够从该幅图像中找到许多与其相似的窗口结构。
自然图像中也包含足够多的重复结构,比如在图像的平坦区域存在大量相似的像素点,位于同一条直线或曲线边界上的点也具有相似的邻域模式。
该结论对于图像中空间位置相距较近的窗口来说显然是成立的,这就是局部规则性的假设。
非局部均值滤波
平滑处理是图像处理技术里最重要的一种,它主要利用某种形式的滤波器对图像进行
处理,使之看起来更加柔和、清晰,去除上图像中的噪声或不重要的细节,从而提高图像
的视觉效果。
非局部均值滤波(Non-Local Means,简称NLM)是一种近年来逐步提出的非常有效的处理技术,它利用非常容易理解的算法,以及大量的可调节的参数,可以非常有效的消除
噪声,并可以更好的保留图像的细节,减少模糊现象。
NLM 算法是一种根据非局部均值来平滑处理图像的方法,它是一种基于以下原理和步
骤实现平滑处理的方法:
1. 利用N×N大小的窗口覆盖图像,每次从窗口中选取一个像素点,把它作为参考点,将与其相邻的像素点成为窗口中任意点,这些点称之为想要处理的点;
2. 对于它临近的每一个点,用一个距离的衡量来比较它们的差异,取等于该距离的
最近的一个点与之作归一化后的加权平均;
3. 根据上一步得到的结果,根据已知的参数调用迭代法对参考点的想要处理点进行
更新;
4. 重复前面的步骤直到所有参考点都被迭代完毕,最终完成NLM处理。
NLM 算法具有时间效率高、算法处理效果好、平滑处理结果更加细腻准确等特点,具
有广泛的应用领域,比如照片修复、低频噪声处理、压缩照片等等,其中,压缩照片方面
的应用实际上也是利用NLM 算法去除噪点来减少图像的复杂度,从而实现质量更高的压缩。
clear
clc
clf
colormap(gray)
% create example image
ima=100*ones(100);
ima(50:100,:)=50;
ima(:,50:100)=2*ima(:,50:100);
fs=fspecial('average');
ima=imfilter(ima,fs,'symmetric');
% add some noise
sigma=10;
rima=ima+sigma*randn(size(ima));
% show it
imagesc(rima)
drawnow
% denoise it
fima=NLmeansfilter(ima,5,2,sigma);
% show results
clf
subplot(2,2,1),imagesc(ima),title('original');
subplot(2,2,2),imagesc(rima),title('noisy');
subplot(2,2,3),imagesc(fima),title('filtered');
subplot(2,2,4),imagesc(rima-fima),title('residuals');
function [output]=NLmeansfilter(input,t,f,h)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %
% input: image to be filtered
% t: radio of search window
% f: radio of similarity window
% h: degree of filtering
%
% Author: Jose Vicente Manjon Herrera & Antoni Buades
% Date: 09-03-2006
%
% Implementation of the Non local filter proposed for A. Buades, B. Coll and J.M. Morel in
% "A non-local algorithm for image denoising"
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Size of the image
[m n]=size(input);
% Memory for the output
Output=zeros(m,n);
% Replicate the boundaries of the input image
input2 = padarray(input,[f f],'symmetric');
% Used kernel
kernel = make_kernel(f);
kernel = kernel / sum(sum(kernel));
h=h*h;
for i=1:m
for j=1:n
i1 = i+ f;
j1 = j+ f;
W1= input2(i1-f:i1+f , j1-f:j1+f);
wmax=0;
average=0;
sweight=0;
rmin = max(i1-t,f+1);
rmax = min(i1+t,m+f);
smin = max(j1-t,f+1);
smax = min(j1+t,n+f);
for r=rmin:1:rmax
for s=smin:1:smax
if(r==i1 && s==j1) continue; end;
W2= input2(r-f:r+f , s-f:s+f);
d = sum(sum(kernel.*(W1-W2).*(W1-W2)));
w=exp(-d/h);
if w>wmax
wmax=w;
end
sweight = sweight + w;
average = average + w*input2(r,s);
end
end
average = average + wmax*input2(i1,j1);
sweight = sweight + wmax;
if sweight > 0
output(i,j) = average / sweight;
else
output(i,j) = input(i,j);
end
end
end
function [kernel] = make_kernel(f)
kernel=zeros(2*f+1,2*f+1);
for d=1:f
value= 1 / (2*d+1)^2 ;
for i=-d:d
for j=-d:d
kernel(f+1-i,f+1-j)= kernel(f+1-i,f+1-j) + value ;
end
end
end
kernel = kernel ./ f;。