static void bilateralFilter_8u( const Mat& src, Mat& dst, int d,double sigma_color, double sigma_space,int borderType )
{// 获取原始图像信息int cn = src.channels();int i, j, maxk, radius;Size size = src.size();CV_Assert( (src.type() == CV_8UC1 || src.type() == CV_8UC3) &&src.type() == dst.type() && src.size() == dst.size() &&src.data != dst.data );// 高斯参数设置if( sigma_color <= 0 )sigma_color = 1;if( sigma_space <= 0 )sigma_space = 1;// 颜色空间与距离空间初始化double gauss_color_coeff = -0.5/(sigma_color*sigma_color);double gauss_space_coeff = -0.5/(sigma_space*sigma_space);// 内核边界设置if( d <= 0 )radius = cvRound(sigma_space*1.5);elseradius = d/2;radius = MAX(radius, 1);d = radius*2 + 1;// 图像边界处理Mat temp;copyMakeBorder( src, temp, radius, radius, radius, radius, borderType );// 距离空间相似度计算vector<float> _color_weight(cn*256);vector<float> _space_weight(d*d);vector<int> _space_ofs(d*d);float* color_weight = &_color_weight[0];float* space_weight = &_space_weight[0];int* space_ofs = &_space_ofs[0];// 初始化颜色相似度权值 for( i = 0; i < 256*cn; i++ )color_weight[i] = (float)std::exp(i*i*gauss_color_coeff);// 计算距离相似度权值for( i = -radius, maxk = 0; i <= radius; i++ ){j = -radius;for( ;j <= radius; j++ ){// 计算距离范数double r = std::sqrt((double)i*i + (double)j*j);if( r > radius )continue;// 应用高斯变换计算出相似度space_weight[maxk] = (float)std::exp(r*r*gauss_space_coeff);space_ofs[maxk++] = (int)(i*temp.step + j*cn);}}// 得到双边滤波结果BilateralFilter_8u_Invoker body(dst, temp, radius, maxk, space_ofs, space_weight, color_weight);parallel_for_(Range(0, size.height), body, dst.total()/(double)(1<<16));
}

转载:http://blog.csdn.net/zhuwei1988

8位图像的双边滤波器实现相关推荐

  1. 双边滤波器在灰度和彩色图像处理中的应用

    原文链接:http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/MANDUCHI1/Bilateral_Filtering.html 版权归原 ...

  2. 【双边滤波】基于小波变换的多尺度自适应THZ增强双边滤波器的MATLAB仿真

    1.软件版本 MATLAB2021a 2.本算法理论知识 提出了一种"基于小波变换的多尺度自适应双边滤波器"算法. 其对应的算法流程如下所示: 下面,我们从理论上限介绍一下这里所采 ...

  3. 双边滤波器的原理及实现

    双边滤波器是什么? 双边滤波(Bilateral filter)是一种可以保边去噪的滤波器.之所以可以达到此去噪效果,是因为滤波器是由两个函数构成.一个函数是由几何空间距离决定滤波器系数.另一个由像素 ...

  4. bilateral filter双边滤波器的通俗理解

    bilateral filter双边滤波器的通俗理解 图像去噪的方法很多,如中值滤波,高斯滤波,维纳滤波等等.但这些降噪方法容易模糊图片的边缘细节,对于高频细节的保护效果并不明显.相比较而言,bila ...

  5. 能使曲线变平滑的一维滤波器_双边滤波器的原理及实现

    双边滤波(Bilateral filter)是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的. 双边滤波器之所以能够做到在平 ...

  6. 双边滤波器—— Matlab实现

    例:先用双边滤波器(BF)对原图像进行滤波得到低频部分,原图和低频作差后得到高频分量,高频分量和低频分量分别增强后再进行合成. 双边滤波的特点是保边去噪,相较于高斯滤波,在平滑图像的同时,增加了对图像 ...

  7. 基于OpenCV双边滤波器的人脸美化 .

    人像美化类软件中通常会提供一个磨皮功能,可以使得皮肤变得柔和,去除痘痘和斑点.本文基于OpenCV中的双向滤波器实现了一个简单的人脸美化功能. 双边滤波,Bilateral filter,是一种保持边 ...

  8. 双边滤波去噪matlab代码,双边滤波器原理及其matlab实现

    之前做过图像细节增强方面的工作,处理的是红外灰度14bit图像,图像信号由14bit AD量化后,再经FPGA处理得到,使用非锐化掩模的方法,先用双边滤波器(BF)对原图像进行滤波得到低频部分,原图和 ...

  9. c语言双边滤波算法,浅析bilateral filter双边滤波器的理解

    图像去噪的方法很多,如中值滤波,高斯滤波,维纳滤波等等.但这些降噪方法容易模糊图片的边缘细节,对于高频细节的保护效果并不明显.相比较而言,bilateral filter双边滤波器可以很好的边缘保护, ...

最新文章

  1. 总结 | 相机标定的基本原理与改进方法
  2. spring mvc dubbo ios android整合cms内容发布平台
  3. 简单搜索(多位自幂数)+数列网站
  4. 【渝粤教育】国家开放大学2018年秋季 2726T畜禽生产概论 参考试题
  5. select样式的重写
  6. 移动端web 禁止长按弹出的菜单 Safari
  7. pandas追加写入行、列
  8. python使用软件,输出,声明和if规则
  9. 瑞友天翼 v5.1.0.6 远程打印跳行、跳页、错位问题解决方法
  10. JUnit4单元测试入门教程
  11. Echarts直方图
  12. 华为android最新版本下载地址,华为Android手机驱动
  13. 单晶硅各向异性刻蚀技术
  14. 大部头出版物排版软件
  15. rust拆除建筑_破败建筑除了拆除或修复,变成废墟花园是更浪漫的一种可能
  16. 数据库系统概论(第七章:数据库设计)
  17. 42. 注入篇——Havij、Pangolin使用
  18. 业务口堆叠和堆叠子卡_通过堆叠最酷的库来构建和部署简单的ml工具
  19. 视频的基本参数及H264编解码相关概念
  20. 超全的 100 个 Pandas 函数汇总,建议收藏

热门文章

  1. (C++)除基取余法:将十进制数转化为Q进制数
  2. 零基础参加java培训的系统学习路线
  3. mongDB的常用操作总结
  4. Spring+SpringMVC+Mybatis整合
  5. 二、python小功能记录——监听鼠标事件
  6. Java Web的Maven项目中Properties文件的使用(2)
  7. 服务器和普通用户电脑的区别
  8. [转]SIFT特征提取分析
  9. 【基础复习】二:预处理、const与sizeof
  10. 2015第22周一Web性能测试工具及IE扩展区别