首页 > 其他分享 >双边滤波 & 高斯滤波

双边滤波 & 高斯滤波

时间:2023-10-27 12:38:37浏览次数:33  
标签:函数 平滑 滤波 像素 图像 双边 高斯

双边滤波(Bilateral filter)是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的。普通的高斯滤波会将图像的边缘模糊掉,而双边滤波器具有保边特性。

一般的高斯模糊在进行采样时主要考虑了像素间的空间距离关系,但是却并没有考虑像素值之间的相似程度,因此这样我们得到的模糊结果通常是整张图片一团模糊。Bilateral blur的改进就在于在采样时不仅考虑像素在空间距离上的关系,同时加入了像素间的相似程度考虑,因而可以保持原始图像的大体分块进而保持边缘。

下面先讲高斯滤波,明白的同学请直接跳过。

高斯滤波
在2D高斯滤波中的具体实现就是对周围的一定范围内的像素值分别赋以不同的高斯权重值,并在加权平均后得到当前点的最终结果。而这里的高斯权重因子是利用两个像素之间的空间距离(在图像中为2D)关系来生成。通过高斯分布的曲线可以发现,离目标像素越近的点对最终结果的贡献越大,反之则越小。

高斯核函数一种最常用的径向基函数,形式为

其中xc为核函数中心,σ为函数的宽度参数 , 控制了函数的径向作用范围。所谓径向基函数 (Radial Basis Function 简称 RBF), 就是某种沿径向对称的标量函数 通常定义为空间中任一点x到某一中心xc之间欧氏距离的单调函数 , 可记作 k(||x-xc||), 其作用往往是局部的 , 即当x远离xc时函数取值很小。
高斯函数具有五个重要的性质,这些性质使得它在早期图像处理中特别有用.这些性质表明,高斯平滑滤波器无论在空间域还是在频率域都是十分有效的低通滤波器,且在实际图像处理中得到了工程人员的有效使用.高斯函数具有五个十分重要的性质,它们是:
(1)二维高斯函数具有旋转对称性,即滤波器在各个方向上的平滑程度是相同的.一般来说,一幅图像的边缘方向是事先不知道的,因此,在滤波前是无法确定一个方向上比另一方向上需要更多的平滑.旋转对称性意味着高斯平滑滤波器在后续边缘检测中不会偏向任一方向.
(2)高斯函数是单值函数.这表明,高斯滤波器用像素邻域的加权均值来

代替该点的像素值,而每一邻域像素点权值是随该点与中心点的距离单调增减的.这一性质是很重要的,因为边缘是一种图像局部特征,如果平滑运算对离算子中心很远的像素点仍然有很大作用,则平滑运算会使图像失真.

(3)高斯函数的付立叶变换频谱是单瓣的.正如下面所示,这一性质是高斯函数付立叶变换等于高斯函数本身这一事实的直接推论.图像常被不希望的高频信号所污染(噪声和细纹理).而所希望的图像特征(如边缘),既含有低频分量,又含有高频分量.高斯函数付立叶变换的单瓣意味着平滑图像不会被不需要的高频信号所污染,同时保留了大部分所需信号.

(4)高斯滤波器宽度(决定着平滑程度)是由参数σ表征的,而且σ和平滑程度的关系是非常简单的.σ越大,高斯滤波器的频带就越宽,平滑程度就越好.通过调节平滑程度参数σ,可在图像特征过分模糊(过平滑)与平滑图像中由于噪声和细纹理所引起的过多的不希望突变量(欠平滑)之间取得折衷.

(5)由于高斯函数的可分离性,大高斯滤波器可以得以有效地实现.二维高斯函数卷积可以分两步来进行,首先将图像与一维高斯函数进行卷积,然后将卷积结果与方向垂直的相同一维高斯函数卷积.因此,二维高斯滤波的计算量随滤波模板宽度成线性增长而不是成平方增长.

高斯滤波的问题
高斯滤波没有考虑图像的边缘,会将边缘模糊掉。因为高斯核只考虑了空间分布,没有考虑到像素值的差异。图像的边缘往往是图像灰度剧烈变化的地方。所以可以综合考虑图像灰度因素。

双边滤波器原理
双边滤波方法(Bilateral filtering)是基于Gauss 滤波方法提出的,主要是针对Gauss 滤波中将Gauss 权系数直接与图像信息作卷积运算进行图像滤波的原理,将滤波权系数优化成Gauss 函数和图像亮度信息的乘积,优化后的权系数再与图像信息作卷积运算,这样就能在滤波的同时考虑到图像信息中的图像边缘信息,使图像在正常Gauss 滤波后很模糊的边缘信息得以保持清晰,并且图像边缘更加平滑。此方法对于彩色和灰度图像的滤波均适用,具有很强的实用性。
设原图为f(x,y),(x,y)为像素的坐标,双边滤波后(x,y)点的像素值变为

公式中Sx,y 表示中心点(x,y)的(2N+1)*(2N+1)大小的领域。实际上,公式右边就是中心像素点邻域内像素亮度值的加权平均。
权值W由两部分组成

W(i,j)=Ws(i,j)*Wr(i,j)
双边滤波器的加权系数是这两部分因子的非线性组合,空间邻近度因子Ws和亮度相似度因子Wr的乘积。前者随着像素点与中心点之间欧几里德距离的增加而减小,后者随着两像素亮度值之差的增大而减小。在图像变化平缓的区域,邻域内像素亮度值相差不大,双边滤波转化为高斯低通滤波器;在图像变化剧烈的区域,滤波器利用边缘点附近亮度值相近的像素点的亮度值平均代替原亮度值。因此,双边滤波器既平滑滤波了图像,又保持了图像的边缘。双边滤波器受3个参数的控制:滤波器半宽N、参数δs和δr。N越大,平滑作用越强;δs和δr分别控制着空间邻近度因子Ws和亮度像似度因子Wr的衰减程度。

define MAX_IMAGE_SIZE 1024

double d[MAX_IMAGE_SIZE][MAX_IMAGE_SIZE];//d[i][j]表示入图像,fi][j]表示出图像。

double f[MAX_IMAGE_SIZE][MAX_IMAGE_SIZE];

void CImageColorProcess::Bilateral(LPBYTE lpSrc, LPBYTE lpDst, int nSrcCount, int nW, int nH)

{

int i, j, k, l;

int p = 5;//p决定模板大小。当p=1时,模板为33;当p=2时,模板为55;当p=n时,模板为(2n+1)(2n+1)。

short m, n;

double a1 = 0.02, b1 = 0.002;

double aa1, bb1;//aa1,bb1为滤波模板中的各权重。

//gguiyi高斯滤波的归一化系数,bguiyi双边滤波的归一化系数,gsum高斯滤波像素的加权和,bsum双边滤波像素的加权和。

double gguiyi = 0.0, bguiyi = 0.0, gsum = 0.0, bsum = 0.0;

int x_size2 = nW;//x_size1;

int y_size2 = nH;//y_size1;

LPBYTE lpSrc1 = new byte[nWnH];

RGB2Gray(lpSrc, lpSrc1, 24, nW, nH);

//将读取的噪声图像赋给入力图像

for (i = 0; i < nH; i++)

{

for (j = 0; j < nW; j++)

{

d[i][j] = lpSrc1[inW + j];

}

}

//高斯滤波,双边滤波处理噪声图像

for (i = 0; i < nH; i++)

{

for (j = 0; j < nW; j++)

{

for (k = -p; k <= p; k++)

{

for (l = -p; l <= p; l++)

{

m = i + k; n = j + l;

//abs()返回指定数字的绝对值

if (m<0)  { m = abs(i + k) - 1; }   	
                                         if (m>nH - 1) { m = 2 * nH - i - k - 1; }

if (n<0)  { n = abs(j + l) - 1; }	  if (n>nW - 1) { n = 2 * nW - j - l - 1; }

aa1 = exp(-a1(ll + kk));

bb1 = exp(-b1(d[i][j] - d[m][n])(d[i][j] - d[m][n]));

bsum += aa1bb1d[m][n];

bguiyi += aa1bb1;

}

}

f[i][j] = bsum / bguiyi;

gguiyi = 0.0, bguiyi = 0.0, gsum = 0.0, bsum = 0.0;

}

}

//将滤波后的像素赋给新的图像

for (i = 0; i < nH; i++)

{

for (j = 0; j < nW; j++)

{

lpDst[inW + j] = (unsigned char)(f[i][j] + 0.5);

}

}}

效果

以上三图从上到下分别为原图,高斯模糊和双边滤波后的效果图,双边滤波的保边效果还是很明显的。

作者:楚千羽



标签:函数,平滑,滤波,像素,图像,双边,高斯
From: https://blog.51cto.com/u_15240054/8052637

相关文章

  • Android图片进行高斯模糊处理/毛玻璃效果
    android中实现毛玻璃效果的方法比较多,有用java实现图片处理算法的,也有把算法用c/c++实现并用jni调用的,而实现毛玻璃的开源库在github上也有不少.其实google的官方sdk中也为我们提供了这样的工具,本着能用官方尽量不自己实现,能自己实现尽量不用第三方的原则,官方的实现方......
  • 利用滤镜-高斯模糊 制作图片
    原图 效果图 视频网址:https://mooc1-2.chaoxing.com/mooc-ans/mycourse/teacherstudy?chapterId=687030348&courseId=220576162&clazzid=85345057 ......
  • 滤波器
     bandstopfilter带阻滤波器。带阻滤波器(bandstopfilters,简称BSF)是指能通过大多数频率分量、但将某些范围的频率分量衰减到极低水平的滤波器,与带通滤波器的概念相对。其中点阻滤波器(notchfilter)是一种特殊的带阻滤波器,它的阻带范围极小,有着很高的Q值(QFactor)。bandpassfil......
  • 计算机舍入误差对卡尔曼滤波器的影响
    本文主要学习计算机舍入误差对卡尔曼滤波器的影响,在实际工程中,我们去分析跟踪轨迹和点云数据通常关注的点都是跟踪和点云数据的误差。至于计算机引入的舍入误差其实很多时候都会忽略。因此本文参考《卡尔曼滤波理论与实践(MATLAB版)》(第四版)对舍入误差的影响进行一个学习和讨论,......
  • 中值滤波(一)
    1.首先我们要知道中值滤波是什么?首先,中值滤波对于图片来说的一个降噪操作,此处讲解矩阵已经拉平为一维的情况。(具体含义后续在下一个图片中值中解释,此处例子为一个数组)2.中值滤波核心是什么?具体是怎么进行的?中值滤波会设定一个窗口值,也就是在滑动窗口的时候,窗口大小。......
  • 【短道速滑十一】标准的Gabor滤波器及Log_Gabor滤波器的实现、解析、速度优化及其和Ha
    最近有朋友在研究Halcon中gen_gabor的函数,和我探讨,因为我之前也没有怎么去关注这个函数,因此,前前后后大概也折腾了有一个星期去模拟实现这个东西,虽然最终没有实现这个函数,但是也是有所收获,这里做一点总结,也算是最这个函数有个完美的收尾吧。1、Gabor滤波器首先总是度......
  • 电容和滤波频率的关系
    硬件电路设计,电容滤波,电容值与频率的关系滤波电容是并联在整流电源电路输出端,用以降低交流脉动波纹系数、平滑直流输出的一种储能器件在使用将交流转换为直流供电的电子电路中,滤波电容不仅使电源直流输出平稳,降低了交变脉动波纹对电子电路的影响,同时还可吸收电子电路工作过程中......
  • 论文(2)3D高斯
    https://huggingface.co/blog/gaussian-splatting 什么是3D高斯泼溅?3D高斯泼溅的核心是一种光栅化技术。这意味着:有描述场景的数据。在屏幕上绘制数据。这类似于计算机图形学中的三角形光栅化,用于在屏幕上绘制许多三角形。 然而,它不是三角形,而是高斯。这是一个栅格......
  • 互补滤波姿态解算算法思路
    ......
  • 直流变换器的输入滤波器分析与设计
    最近初识输入滤波电路,将功能分析记录如下,欢迎各位大佬批评指正。未完待续~~~1、作用滤波电路种类较多,但在功率变换器里面,常用的滤波电路电路是π型滤波器。主要目的是用于降低电流纹波,降低EMI,也更有利于多级功率变换器级联。2、原理分析以Buck电路为例,输入......