【数字图像处理】图像的平滑处理 图像平滑的目的 图像平滑处理的基本方法 领域平均法 邻域加权平均法 选择式掩模法 中值滤波

  • 模糊:在提取较大目标前,去除太小细节,或将目标内的小间断连接起来。
  • 消除噪声:改善图像质量,降低干扰。

平滑处滤波对图像的低频分量增强,同时削弱高频分量,用于消除图像中的随机噪声,起到平滑作用。

图像平滑处理的基本方法

  • 领域平均法
  • 领域加权平均法
  • 选择式掩模法
  • 中值滤波

 

领域平均法

模板在图像上移动,模板的中心对应目标像素点,在模板范围内对目标像素点进行卷积运算(对应系数乘对应像素点),然后相加除上模板大小得到均值,这个均值就是目标像素点处理后的值。

【数字图像处理】图像的平滑处理
图像平滑的目的
图像平滑处理的基本方法
领域平均法
邻域加权平均法
选择式掩模法
中值滤波

 如图,对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];

                        }
                    }