图像滤波

噪声

加性噪声一般指热噪声、散弹噪声等,它们与信号的关系是相加,不管有没有信号,噪声都存在。

高斯白噪声包括热噪声和散粒噪声。在通信信道测试和建模中,高斯噪声被用作加性白噪声以产生加性白高斯噪声。

加性高斯白噪声只是白噪声的一种,另有泊松白噪声等,加性高斯白噪声在通信领域中指的是一种各频谱分量服从均匀分布(即白噪声),且幅度服从高斯分布的噪声信号。因其可加性、幅度服从高斯分布且为白噪声的一种而得名。

而乘性噪声一般由信道不理想引起,它们与信号的关系是相乘,信号在它在,信号不在他也就不在。

一般通信中把加性随机性看成是系统的背景噪声;

而乘性随机性看成系统的时变性(如衰落或者多普勒)或者非线性所造成的。

空域滤波

空域滤波可以用于非线性滤波,但是频域滤波不能用于非线性滤波

图像滤波
空域线性滤波均值滤波
---
非线性滤波中值滤波
双边滤波

滤波模板

图像滤波 模板:


线性平均滤波:
1|0 1 0 |
-|1 1 1 |
5|0 1 0 |


图像锐化 模板:

锐化滤波:图像锐化一般是通过微分运算来实现的

|-1  0  1|
|-1  0  1|
|-1  0  1|

| 1  1  1|
| 0  0  0|
|-1 -1 -1|

方向滤波器-sobel算子

x轴:
|-1  0  1|
|-2  0  2|
|-1  0  1|

y轴:
|-1 -2 -1|
| 0  0  0|
| 1  2  1|

Scharr算子

x轴:
|-3  0  3|
|-10 0 10|
|-3  0  3|

y轴:
|-3 -10 -3|
| 0  0   0|
| 3  10  3|

线性空域滤波

线性空域滤波指的是像素的输出值是计算该像素邻域内像素值的线性组合
线性滤波中滤波模板也称为卷积模板

模板卷积

模板卷积的主要步骤包括如下几个步骤,

  1. 将模板在图像中进行遍历,将模板中心和各个像素位置重合;

  2. 将模板的各个系数与模板对应像素值进行相乘;

  3. 将所有的乘积相加,并将求和结果赋值于模板中心对应的像素

延拓

模板的行或列就会超出图像之外,因此常常采用延拓的方式解决外边界问题。常用的方法有四种,分别是补零重复对称循环方式。

补零是指通过补零来扩展图像;
重复是指通过复制外边界的值来扩展图像;
对称是指通过镜像反射外边界的值来扩展图像;
循环是指将图像看成二维周期函数的一个周期来扩展。
均值滤波
高斯滤波

高斯滤波器宽度(决定着平滑程度)是由参数σ表征的,而且σ和平滑程度的关系是非常简单的.σ越大,高斯滤波器的频带就越宽,平滑程度就越好.通过调节平滑程度参数σ

高斯分布: h ( x , y ) = e − ( x 2 + y 2 2 a 2 ) h(x,y)=e^-(\frac{x^2+y^2}{2a^2}) h(x,y)=e(2a2x2+y2)

双边滤波

一种非线性的滤波方法,是结合图像的空间邻近度像素相似度的的一种折中处理。它是一种保持边缘的非迭代平滑滤波方法。中心像素的距离和灰度差值的增大,邻域像素的权系数逐渐减小

优点:保持边缘性能良好,对低频信息滤波良好
缺点:不能处理高频信息

假设高斯函数表达式如下:
W i j = 1 K i e − ( x j − x i ) 2 σ G 2 W_ij=\frac{1}{K_i}e^-\frac{(x_j-x_i)^2}{σ^2_G} Wij=Ki1eσG2(xjxi)2

K是归一化的常量,W是权重,权重只跟像素之间的空间距离有关系。

双边滤波器:
W i j = 1 K i e − ( x j − x i ) 2 σ G 2 e − ( I j − I i ) 2 σ r 2 W_ij=\frac{1}{K_i}e^-\frac{(x_j-x_i)^2}{σ^2_G}e^-\frac{(I_j-I_i)^2}{σ^2_r} Wij=Ki1eσG2(xjxi)2eσr2(IjIi)2

中值滤波

中值滤波是统计排序滤波的一种,中值滤波对椒盐噪声效果好;滤波图像边缘信息好,边缘清晰

统计排序滤波
最大值滤波有效地滤除椒噪声(黑色)寻找最亮点,亮化图片
最小值滤波有效地滤除盐噪声(白色)寻找最暗点,暗化图片
自适应中值滤波有效地滤除椒盐噪声钝化图像、去除噪音

操作步骤:

  1. 将模板在图像中遍历

  2. 将模板对应的邻域内像素的灰度值排序

  3. 查找中间值,将其赋于模板中心对应的像素

频域滤波

可以用图像增强,首先把图像通过傅里叶变换将图像从空间域转换到频率域,频域处理,反傅里叶变换转到空间域

C++代码

均值滤波

void meanFilter (unsigned char* corrupted, unsigned char* smooth, int width, int height)  
{  
      
    memcpy ( smooth, corrupted, width*height*sizeof(unsigned char) );  
      
    for (int j=1;j<height-1;j++)  
    {  
        for (int i=1;i<width-1;i++)  
        {  
            smooth [ j*width+i ] = (    corrupted [ (j-1)*width+(i-1) ] + corrupted [ (j-1)*width+i] + corrupted [ (j-1)*width+(i+1) ] +  
                                        corrupted [ j*width+(i-1) ]     + corrupted [ j*width+i]     + corrupted [ j*width+(i+1) ] +  
                                        corrupted [ (j+1)*width+(i-1) ] + corrupted [ (j+1)*width+i] + corrupted [ (j+1)*width+(i+1) ] ) / 9;  
        }  
    }  
}  

中值滤波

void medianFilter (unsigned char* corrupted, unsigned char* smooth, int width, int height)  
{  
      
    memcpy ( smooth, corrupted, width*height*sizeof(unsigned char) );  
    for (int j=1;j<height-1;j++)  
    {  
        for (int i=1;i<width-1;i++)  
        {  
            int k = 0;  
            unsigned char window[9];  
            for (int jj = j - 1; jj < j + 2; ++jj)  
                for (int ii = i - 1; ii < i + 2; ++ii)  
                    window[k++] = corrupted[jj * width + ii];  
            //   Order elements (only half of them)  
            for (int m = 0; m < 5; ++m)  
            {  
                int min = m;  
                for (int n = m + 1; n < 9; ++n)  
                    if (window[n] < window[min])  
                        min = n;  
                //   Put found minimum element in its place  
                unsigned char temp = window[m];  
                window[m] = window[min];  
                window[min] = temp;  
            }  
            smooth[ j*width+i ] = window[4];  
        }  
    }  
} 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AomanHao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值