当前位置:网站首页>双边滤波加速「建议收藏」
双边滤波加速「建议收藏」
2022-07-31 15:06:00 【全栈程序员站长】
大家好,又见面了,我是你们的朋友全栈君。
双边滤波器是同时考虑空间域和值域信息的类似传统高斯平滑滤波器的图像滤波、去噪、保边滤波器。其模板系数是空间系数d与值域系数r的乘积。其思想是:空间系数是高斯滤波器系数,值域系数为考虑了邻域像素点与中心像素点的像素值的差值,当差值较大时,值域系数r较小,即,为一个递减函数(高斯函数正半部分),带来的结果是总的系数w=d*r变小,降低了与“我”差异较大的像素对我的影响。从而达到保边的效果,同时,有平滑的作用。
双边滤波加速:
(1)事先制作好模板系数表,这样,在遍历每一个像素时,系数本来的乘法,除法变为了更高效的查找(查找表),空域系数和值域都可以制作查找表。
(2)模仿高斯滤波的分离,将二维双边滤波分解为两个一维的双边滤波。先使用一维双边滤波模板对行进行滤波,然后对卷积结果进行列滤波,此步在计算值域系数的时候可以使用原图像数据进行计算(非使用行滤波所得的中间结果)。(大大减少了乘法的次数,当模板尺寸较大时,由于双边滤波模板系数并不是像高斯滤波模板那样是准确的可分离(值域系数不可分离),会出现结果中沿坐标系轴的滑动模糊现象)。
(3)完全使用C语言的指针操作,也可稍许提高代码运行速度。
双边滤波的类高斯分离加速分析:双边滤波严格是不可分离加速的,分离加速可得到近似结果(一般情况下,结果较好)。
1.高斯滤波可分离加速,因二维高斯函数可分离,即G(u,v)=g(u)*g(v),进而更直接可以得到,高斯模板矩阵G=G1*G2,模板矩阵可以分离为一个列向量G1和一个行向量G2的乘积(矩阵乘法)。且模板并不依赖于像素值,模板独立于像素值,对整幅图像是固定的。
2.对于双边滤波:w=d*r,值域系数r与像素值有关,模板矩阵w不可分解为一个列向量和一个行向量的乘积,模板矩阵w与像素值有关,不独立于整幅图像。
3.滤波可分离的条件:(1)模板独立固定,(2)模板矩阵可分解为一个列向量与行向量的乘积,满足(1)和(2)就可以进行类高斯滤波的分离加速操作。
双边滤波是否可以进行“FFT加速”:双边滤波不可进行基于FFT的加速
基于FFT的滤波加速方法:
1.对模板和图像分别进行补0(扩大到相同尺寸(M1+M2-1)*(N1+N2-1),图像和模板分别放在扩大矩阵的左上角)
2.模板与图像分别进行傅里叶变换DFT(FFT快速算法)
3.对DFT结果进行相乘(元素级相乘)
4.对频域相乘结果进行傅里叶反变换IDFT(IFFT)
5.对傅里叶反变换得到的时域结果进行截取,获得模板与图像的卷积结果
所以,因“基FFT滤波加速”是一次运算直接得到全图的滤波结果,要求滤波模板对全图是固定、独立的,而双边滤波的滤波模板对全图非独立、固定,所以,双边滤波无法进行“基FFT滤波加速”。
而所有的拉普拉斯模板,prewiit,sobel 等全图固定、独立式模板滤波都可以进行“基FFT滤波加速”。
注:因“基FFT滤波加速”要进行补0扩大,DFT,IDFT等操作,DFT和IDFT虽有快速算法,计算复杂度也还是较高,通常,模板尺寸(直径)小于50时,传统方法速度快于“基FFT”。
总结:对于小模板,使用传统法或者若可分离,考虑可分离法,较大的模板,则选择“基FFT滤波加速”法。
“基FFT滤波加速”原理:卷积定理,DFT( f(x)*h(x) ) = DFT( f(x) ) * DFT( h(x) ),两个信号卷积的傅里叶变换等于各自傅里叶变换的乘积(时域卷积等于频域乘积)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/128340.html原文链接:https://javaforall.cn
边栏推荐
- 女性服务社群产品设计
- 浏览器自带的拾色器
- R语言ggplot2可视化:使用ggpubr包的ggboxplot函数可视化分组箱图、使用ggpar函数改变图形化参数(caption、添加、修改可视化图像的题注、脚注内容)
- LeetCode二叉树系列——226.翻转二叉树
- R语言计算时间序列数据的移动平均值(滚动平均值、例如5日均线、10日均线等):使用zoo包中的rollmean函数计算k个周期移动平均值
- Introductory UnityShader learning (2) - the rendering pipeline
- Sentinel服务熔断和降级
- ASP.NET Core 产生连续 Guid
- 【CUDA学习笔记】初识CUDA
- Destruction order of thread_local variables
猜你喜欢

Sentinel限流和异常处理

Node实现数据加密

QGIS 加载WMS数据,重新投影
![Recommendation System - Recall Phase - 2013: DSSM (Twin Towers Model) [Embedding (Semantic Vector) Recall] [Microsoft]](/img/40/b567780ed2cf04f1f1336922816f86.png)
Recommendation System - Recall Phase - 2013: DSSM (Twin Towers Model) [Embedding (Semantic Vector) Recall] [Microsoft]

Essential Learning for Getting Started with Unity Shader - Transparency Effect

大健云仓冲刺美股:增营收反减利润 京东与DCM是股东

基于最小二乘法和SVM从天气预报中预测太阳能发电量(Matlab代码实现)

自适应控制——仿真实验三 用超稳定性理论设计模型参考自适应系统

网银被盗?这篇文章告诉你如何安全使用网银

Public Key Retrieval is not allowed error solution when DBeaver connects to MySQL 8.x
随机推荐
2021 OWASP TOP 10 Vulnerability Guide
Excel quickly aligns the middle name of the table (two-word name and three-word name alignment)
Recommendation System - Recall Phase - 2013: DSSM (Twin Towers Model) [Embedding (Semantic Vector) Recall] [Microsoft]
C language basic practice (nine-nine multiplication table) and printing different asterisk patterns
/etc/profile、/etc/bashrc、~/.bash_profile、~/.bashrc 文件的作用
OpenShift 4 - Deploy Redis Cluster with Operator
Synchronized和volatile 面试简单汇总
435. 无重叠区间
Trigonometric identity transformation formula
R语言ggplot2可视化:使用ggpubr包的ggboxplot函数可视化箱图、使用font函数自定义图例标题文本(legend.title)字体的大小、颜色、样式(粗体、斜体)
三、数组
Female service community product design
Five dimensions to start MySQL optimization
小试牛刀:Go 反射帮我把 Excel 转成 Struct
How to grab configuration information for DELL SC compellent storage system
RecyclerView的高效使用第一节
DeepLab Series Learning
NC | 斯坦福申小涛等开发数据可重复分析计算框架TidyMass
STM32(十)------- SPI通信
Unity Shader入门精要学习——透明效果