图像平滑的目的
- 模糊:在提取较大目标前,去除太小细节,或将目标内的小间断连接起来。
- 消除噪声:改善图像质量,降低干扰。
平滑处滤波对图像的低频分量增强,同时削弱高频分量,用于消除图像中的随机噪声,起到平滑作用。
图像平滑处理的基本方法
- 领域平均法
- 领域加权平均法
- 选择式掩模法
- 中值滤波
领域平均法
模板在图像上移动,模板的中心对应目标像素点,在模板范围内对目标像素点进行卷积运算(对应系数乘对应像素点),然后相加除上模板大小得到均值,这个均值就是目标像素点处理后的值。
如图,对5行四列的图像进行3*3模板的邻域平均法处理:
邻域平均法存在的问题
抑制了高频成分,使用图像变得模糊,平滑效果不好,减少噪音的同时,损失了高频信息。
注意:模板不宜过大,因为模板越大对速度有直接影响,且模板大小越大变换后图像越模糊,特别是在边缘和细节处
优点:算法简答,计算速度快。
缺点:造成图像一定程度上的模糊。
3*3模板邻域平均法示例:
Use_ROWS:行
Use_Line:列
图像边界不处理:只处理1-----n-1。
int count = 0; for(int i = 1; i < Use_ROWS-1; i++) { for(int j = 1; j < Use_Line-1; j++) { //邻域平均法 count=0; count = Image_Use[i][j]+Image_Use[i][j-1]+Image_Use[i][j+1]+Image_Use[i-1][j]+Image_Use[i-1][j-1]+Image_Use[i-1][j+1]+Image_Use[i+1][j]+Image_Use[i+1][j-1]+Image_Use[i+1][j+1]; Image_Use[i][j] = (int)(count/9); } }
邻域加权平均法
加权:系数不再全部为1。
选择式掩模法
中值滤波
中值滤波器,使用滤波器窗口包含区域的像素值的中值来得到窗口中心的像素值,本质上是一种非线性平滑滤波器。
中值滤波:抑制噪声又可以尽量保持图像细节,对滤除脉冲干扰及图像扫描噪声最为有效。不
注意:对一些细节多,特别是点,线,尖顶细节多的图像不宜采用中值滤波。
不同的窗口选择
常用窗口
复合型中值滤波介绍
3*3模板的中值滤波处理
int cmp(const void *a,const void *b) { return *(int *)a-*(int *)b;//这是从小到大排序,若是从大到小改成: return *(int *)b-*(int *)a; }
int temp[9],index=0; for(int i = 1; i < Use_ROWS-1; i++) { for(int j = 1; j < Use_Line-1; j++) { //中值滤波 memset(temp, 0, sizeof(temp)); temp[index]=Image_Use[i][j]; temp[index+1]=Image_Use[i-1][j]; temp[index+2]=Image_Use[i-1][j-1]; temp[index+3]=Image_Use[i-1][j+1]; temp[index+4]=Image_Use[i][j-1]; temp[index+5]=Image_Use[i][j+1]; temp[index+6]=Image_Use[i+1][j]; temp[index+7]=Image_Use[i+1][j-1]; temp[index+8]=Image_Use[i+1][j+1]; qsort(temp,9,sizeof(temp[0]),cmp);//(数组,需要排序的数字个数,单个数字所占内存大小,比较函数) Image_Use[i][j] = temp[4]; } }