一、双边滤波算法概述1.双边滤波算法是一种非线性图像平滑技术2.双边滤波可以在去除噪声的同时能够有效的保留图像的边缘3.双边滤波可以克服传统高斯滤波导致的边缘模糊的缺陷二、双边滤波的核心1.保边去噪2.双边滤波集合空间邻近度和像素值相似度两个权重来计算滤波结果3.空间权重距离中心像素越近影响越大类似高斯滤波。4.值域权重像素值和中心像素越相似影响越大差异大权重降低。5.在图像平坦区域值域权重接近 1相当于高斯模糊在边缘区域像素值差异大值域权重降低从而保护边缘细节不被模糊6.两个高斯函数空间域高斯核与值域高斯核权重的乘积来决定邻域像素的贡献从而在平滑图像噪声的同时能较好地保护图像边缘和细节三、双边滤波函数的关键参数cv2.bilateralFilter(img, 9, 75, 75)1.滤波核的直径2.颜色空间标准差sigma_color3.坐标空间标准差sigma_spaced控制参与滤波的空间邻域大小sigmaColor控制参与滤波的像素颜色或灰度差异范围值越大允许差异越大的像素参与平均sigmaSpace控制空间权重随距离衰减的速度。四、双边滤波算法的实现方式1.双边滤波的FPGA硬件加速方案采用空域/值域权重预存技术通过帧消隐期检测参数变化实现滤波系数动态更新2.采用查表法优化灰度模板计算将二维空间模板转换为一维数组降低时间复杂度3.比较常用的双边滤波算子核大小为3*35*5,7*7比较常用。五、范数||·|| 这个符号在数学里叫范数Norm在图像处理里通常指欧几里得范数L2 范数||p - q|| 是两点之间的欧氏距离五、双边滤波Bilateral Filter的两个核对于gray灰度图1.空间权重核3*3那么就是9个参数的核5*5, 那么就是25个参数的核7*7, 那么就是49个参数的核2.像素差值核灰度值差0~255使用256个参数核对于rgb图1.空间权重核3*3那么就是9个参数的核5*5, 那么就是25个参数的核7*7, 那么就是49个参数的核2.像素差值核当三个通道的方差使用是一样的话值差0~255使用256个参数核当三个通道的方差使用是不一样的话值差0~255使用3*256个参数核对于yuv图1.空间权重核3*3那么就是9个参数的核5*5, 那么就是25个参数的核7*7, 那么就是49个参数的核2.像素差值核当三个通道的方差使用是一样的话值差0~255使用256个参数核当三个通道的方差使用是不一样的话值差0~255使用3*256个参数核六、双边滤波算法在FPGA中实现在FPGA中实现双边滤波算法核心挑战是在实时条件下的视频流需要平衡“边缘保持效果”和“硬件资源/吞吐率”。方法一pipeline 在线计算实现方式在滑动窗口win_buff中直接使用公式计算指数函数。实现的架构为line_buff N*N的win_buff来实现。其中exp函数使用IP核或者Coric来计算权重。优点1.精度高设计透明忠实原始算法2.帧率低资源多的情况下可以这么使用缺点1.消耗资源比较多特别是DSPLUT2.Latency延迟大3.II1的流水实现不了4.不适合高分辨率高帧率的设计5.不适合高并行度NPPC像素的设计方法二LUT查找表法设计空域权重表 值域权重表空域表对于 N×N 窗口存储每个相对坐标的固定权重1 张 N×N 小表。值域表对灰度图8-bit只需深度 256 的表对 RGB/YUV 三通道通常共用一张深度 256 的表若 σ 相同。运行时绝对差作为值域表地址窗口坐标作为空域表地址并行读出权重并相乘。完全避免在线 exp可轻易达到 II1。方法三快速版本的双边滤波算法设计将不可分离的双边滤波近似设计为可以分离的近似双边滤波
双边滤波算法-bilateral
一、双边滤波算法概述1.双边滤波算法是一种非线性图像平滑技术2.双边滤波可以在去除噪声的同时能够有效的保留图像的边缘3.双边滤波可以克服传统高斯滤波导致的边缘模糊的缺陷二、双边滤波的核心1.保边去噪2.双边滤波集合空间邻近度和像素值相似度两个权重来计算滤波结果3.空间权重距离中心像素越近影响越大类似高斯滤波。4.值域权重像素值和中心像素越相似影响越大差异大权重降低。5.在图像平坦区域值域权重接近 1相当于高斯模糊在边缘区域像素值差异大值域权重降低从而保护边缘细节不被模糊6.两个高斯函数空间域高斯核与值域高斯核权重的乘积来决定邻域像素的贡献从而在平滑图像噪声的同时能较好地保护图像边缘和细节三、双边滤波函数的关键参数cv2.bilateralFilter(img, 9, 75, 75)1.滤波核的直径2.颜色空间标准差sigma_color3.坐标空间标准差sigma_spaced控制参与滤波的空间邻域大小sigmaColor控制参与滤波的像素颜色或灰度差异范围值越大允许差异越大的像素参与平均sigmaSpace控制空间权重随距离衰减的速度。四、双边滤波算法的实现方式1.双边滤波的FPGA硬件加速方案采用空域/值域权重预存技术通过帧消隐期检测参数变化实现滤波系数动态更新2.采用查表法优化灰度模板计算将二维空间模板转换为一维数组降低时间复杂度3.比较常用的双边滤波算子核大小为3*35*5,7*7比较常用。五、范数||·|| 这个符号在数学里叫范数Norm在图像处理里通常指欧几里得范数L2 范数||p - q|| 是两点之间的欧氏距离五、双边滤波Bilateral Filter的两个核对于gray灰度图1.空间权重核3*3那么就是9个参数的核5*5, 那么就是25个参数的核7*7, 那么就是49个参数的核2.像素差值核灰度值差0~255使用256个参数核对于rgb图1.空间权重核3*3那么就是9个参数的核5*5, 那么就是25个参数的核7*7, 那么就是49个参数的核2.像素差值核当三个通道的方差使用是一样的话值差0~255使用256个参数核当三个通道的方差使用是不一样的话值差0~255使用3*256个参数核对于yuv图1.空间权重核3*3那么就是9个参数的核5*5, 那么就是25个参数的核7*7, 那么就是49个参数的核2.像素差值核当三个通道的方差使用是一样的话值差0~255使用256个参数核当三个通道的方差使用是不一样的话值差0~255使用3*256个参数核六、双边滤波算法在FPGA中实现在FPGA中实现双边滤波算法核心挑战是在实时条件下的视频流需要平衡“边缘保持效果”和“硬件资源/吞吐率”。方法一pipeline 在线计算实现方式在滑动窗口win_buff中直接使用公式计算指数函数。实现的架构为line_buff N*N的win_buff来实现。其中exp函数使用IP核或者Coric来计算权重。优点1.精度高设计透明忠实原始算法2.帧率低资源多的情况下可以这么使用缺点1.消耗资源比较多特别是DSPLUT2.Latency延迟大3.II1的流水实现不了4.不适合高分辨率高帧率的设计5.不适合高并行度NPPC像素的设计方法二LUT查找表法设计空域权重表 值域权重表空域表对于 N×N 窗口存储每个相对坐标的固定权重1 张 N×N 小表。值域表对灰度图8-bit只需深度 256 的表对 RGB/YUV 三通道通常共用一张深度 256 的表若 σ 相同。运行时绝对差作为值域表地址窗口坐标作为空域表地址并行读出权重并相乘。完全避免在线 exp可轻易达到 II1。方法三快速版本的双边滤波算法设计将不可分离的双边滤波近似设计为可以分离的近似双边滤波