准备知识:空间域,频率域概念,傅里叶变换。Matlab与VC++
引言:图像增强技术可分成两大类,一类是空间域增强一类是频率域增强。 有些滤波更适合在空间域完成,有些是更适合 频率域完成。
空间域图像增强技术主要包括直方图修正,灰度变换增强,图像平滑化以及图像锐化等。多几种方法联合处理。
一、图像平滑
1.边界处理中,有增和减的两种方法,如复制像素,常数填充方法,及收缩处理方法。
2.Matlab中,滤波函数为imfilter()
原型 g=imfilter(f,w,option1,option2,…);
f是要进行 滤波的图像,w是滤波操作所使用的模板,为一个二维数组
选项内容如下
边界选项(针对边界处理问题),尺寸选项(指定输出图像的大小),模式选项(滤波相关还是卷积)
3. 二维滤波器函数fspecial();
其中有高斯模板gaussian,平均模板average,拉普拉斯模板laplacian等
matlab代码
I=imread(‘noise.bmp’);
figure,imshow(I);h3_5 = fspecial(‘gaussian’,3,0.5);
I3_5 = imfilter(I,h3_5,’replicate’); % 重复边缘像素
figure,imshow(I3_5);
二、平均滤波
噪声的存在使得在噪声点处产生灰度跳跃,将每一个点用周围点的灰度值平均替代,从而达到减少噪声影响的过程就称为平滑或模糊。
一般 平均模板为
w提供 一种平均的加权模式
C++实现
imgInput.Template(&imgOutput,3,3,1,1,Template_Smooth_Avg,(float)1/9);//模板长宽,中心坐标
**三、高斯滤波**
----------
随着距离中心点的距离增大,权重迅速减小,从而可以确保中心点看起来更接近地与它距离更近的点,基于这 样的考虑得到的模板即为高斯模板。
常用的3*3高斯模板如下

//C++常用模板数组
// 平均平滑 1/9
float Template_Smooth_Avg[9]=
{1, 1, 1,
1, 1, 1,
1, 1, 1};
// Gauss平滑 1/16
float Template_Smooth_Gauss[9]=
{1, 2, 1,
2, 4, 2,
1, 2, 1};
// Sobel垂直边缘检测
float Template_HSobel[9]=
{-1, 0, 1,
-2, 0, 2,
-1 ,0 , 1};
// Sobel水平边缘检测
float Template_VSobel[9]=
{-1, -2, -1,
0, 0, 0,
1, 2, 1};
// LOG边缘检测
float Template_Log[25]=
{0, 0, -1, 0, 0,
0, -1, -2, -1, 0,
-1, -2, 16, -2, -1,
0, -1, -2, -1, 0,
0, 0, -1, 0, 0};
//Sigma = 2,较平滑
double Template_Log1[25]={0.0448, 0.0468, 0.0564, 0.0468, 0.0448,
0.0468, 0.3167, 0.7146, 0.3167, 0.0468,
0.0564, 0.7146, -4.9048, 0.7146, 0.0564,
0.0468, 0.3167, 0.7146, 0.3167, 0.0468,
0.0448, 0.0468, 0.0564, 0.0468, 0.0448
};
// Laplacian边缘检测
float Template_Laplacian1[9] = {0, -1, 0,
-1, 4, -1,
0, -1, 0
};
float Template_Laplacian2[9] = {-1, -1, -1,
-1, 8, -1,
-1, -1, -1
};