当前位置:首页 > 代码 > 正文

双边滤波c代码(滤波c语言)

admin 发布:2022-12-19 19:32 114


本篇文章给大家谈谈双边滤波c代码,以及滤波c语言对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

bilateralFilter(双边滤波操作)

双边滤波 (Bilateral filter)是一种非线性的滤波方法,是结合图像的空间 邻近度 和像素值相似度的一种折中处理,同时考虑空域信息和 灰度 相似性,达到保边去噪的目的。

●源图像

●处理后图像

●函数原型

○c++

○Android

●参数解释

○src:源图像Mat对象,需要为8位或者浮点型单通道、三通道的图像

○dst:目标图像Mat对象,不能直接用src来存储处理后的图像

○d:表示在过滤过程中每个像素邻域的直径。如果这个值我们设其为非正数,那么OpenCV会从第五个参数sigmaSpace来计算出它来,在使用过程中我发现有点像模糊力度的意思。

○sigmaColor:颜色空间滤波器的sigma值。这个参数的值越大,就表明该像素邻域内有更宽广的颜色会被混合到一起,产生较大的半相等颜色区域。在使用过程中我发现有点像模糊范围的意思,范围越大看着越模糊

○sigmaSpace:坐标空间中滤波器的sigma值,坐标空间的标注方差。他的数值越大,意味着越远的像素会相互影响,从而使更大的区域足够相似的颜色获取相同的颜色。当d0,d指定了邻域大小且与sigmaSpace无关。否则,d正比于sigmaSpace。使用过程中我发现这个值越大,图像的过渡效果越好。

○borderType:使用默认即可,即不用填。

●c++中

●Android中

图像处理之双边滤波算法

双边滤波是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折中处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的,具有简单、非迭代、局部处理的特点。之所以能够达到保边去噪的滤波效果是因为滤波器由两个函数构成:

一个函数是像素欧式距离决定滤波器模板的系数,另一个是由像素的灰度差值决定滤波器模板的系数。

其综合了高斯滤波器(Gaussian Filter)和α-截尾均值滤波器(Alpha-Trimmed mean Filter)的特点。高斯滤波器只考虑像素间的欧式距离,其使用的模板系数随着和窗口中心的距离增大而减小;Alpha截尾均值滤波器则只考虑了像素灰度值之间的差值,去掉α%的最小值和最大值后再计算均值。

双边滤波器使用二维高斯函数生成距离模板,使用一维高斯函数生成值域模板。

双边滤波器中,输出像素的值依赖于邻域像素的值的加权组合,其公式如下:

其中(k,l)为模板窗口的中心坐标;(i,j)为模板窗口的其他系数的坐标;σd为高斯函数的标准差。 使用该公式生成的滤波器模板和高斯滤波器使用的模板是没有区别的。

值域模板系数的生成公式如下:

其中,函数f(x,y)表示要处理的图像,f(x,y)表示图像在点(x,y)处的像素值;(k,l)为模板窗口的中心坐标;(i,j)为模板窗口的其他系数的坐标;σr为高斯函数的标准差。

将上述两个模板相乘就得到了双边滤波器的模板,其公式如下:

图像处理之双边滤波

1、图像高斯模糊去噪

二维的高斯核函数表示如下(1):(式中Xc,Yc是中心元素的位置)

二维的高斯核也是可分离的,表示如下(11)和(12):(分为x方向和y方向)

那这个分离是什么意思呢,说说我的理解吧。

再图像处理中,一般的高斯核选取大小为3X3、5X5等等,对于图像中某个像素而言,那么它就要计算很多次。如果把公式(1)写成公式(11)和公式(12)的形式,那么,在对图像做处理时,就相当于先对图像做一次水平的高斯滤波,然后对水平滤波结果做一次垂直方向的高斯滤波,这样就减少了计算量。

2、图像边缘保持核函数

都知道,在图像的特征提取中,主要有边缘,细节这些信息。而边缘细节这些特征呢,可以用梯度、拉普拉斯变换、sobel算子、sift、fast、LoG、DoG、HoG、LRT等这些算子提取得到。为什么可以用这些算子可以提取得到图像的边缘细节,以及其他特征呢,这是因为,边缘细节等特征与图像的其他区域相比,有明显的灰度变化(就是对比度不一样)。如果灰度是相同的,那么这个区域就是平滑的,没有边缘等特征。

从上面的高斯核中可以看到,在计算的时候,主要是以两个像素之间的欧式距离来判断的,这样优点是离中心元素越近,权值越高;越远,权值越低。但是呢,如果边缘细节特征离中心元素比较远,那么就把边缘给模糊了。例如下面的两种情况,左图(黑色表示边缘,白色表示平滑区),本来中心元素不是边缘,却把边缘考虑进去了,右图(黑色表示边缘,白色表示平滑区),本来中心元素是边缘,却把平滑区域考虑进去了。

如何解决这个问题呢?

如果我们在考虑离中心元素距离的基础上,同时考虑灰度值变化的影响,是不是也行呢?那么就有了边缘保持核函数,其表示如下(2):

将公式(1)和公式(2)相乘就得到了新的去噪及边缘保持核函数,如下所示:

那么,为什么公式(1)和公式(2)可以直接相乘呢?

实际上就是先对图像做高斯模糊,再对模糊后的图像做边缘保持的操作。

matlab怎么绘制双边滤波示意图

clc;

T=255;

Delta =80;

Gamma = pi/(2*T);

Rho= Gamma * Delta;

Color = ['b','g','r','c','m','y','k'];

x=-T:T;

y1=exp(-x.^2/(2*Delta*Delta));

plot(x,y1,'--b','LineWidth',2);

hold on;

for k=2:7

y2= cos(Gamma .* x/ (Rho * sqrt(k))).^(k);

plot(x,y2,Color(k));

end

双边滤波c代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于滤波c语言、双边滤波c代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/20642.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载