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. Mozilla 财报:2017年收入增长超过 4000 万美元
  2. 【教程】新手如何制作简单MAD和AMV,学不会那都是时辰
  3. RMAN干掉热备份#OCP试验1#
  4. 开发MapReduce程序
  5. [机器学习]AutoML --- AutoKeras
  6. 自由软件基金会庆祝成立35周年
  7. 操作系统原理与实践-2操作系统的引导
  8. window7安装MongoDB详细步骤
  9. 第十章:XAML标记扩展(二)
  10. leetcode 326 [easy]--- Power of Three
  11. 计算机控制系统课件百度云,技术员给你防止百度网盘和谐的方法
  12. 计算机操作员评分标准,计算机操作员EXCEL操作竞赛样卷与评分标准.doc
  13. mysql如何批量添加数据_mysql如何大批量插入数据 mysql大批量插入数据4种方法
  14. 微软雅黑字体的设计理念
  15. 什么是一维表 什么是二维表
  16. 【Java】我的世界Java版外挂制作 [0] - 配置环境
  17. dns配置异常怎么修复_win10 dns异常怎么修复
  18. 怎么用python画sin函数图像_Python绘制正余弦函数图像的方法
  19. MySQL中trim()函数的用法
  20. Devops持续化集成

热门文章

  1. (C++)输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。要求用3个函数实现,分别为输入10个数、进行处理、输出10个数。要求使用指针的方法进行处理。
  2. 验证(verification)和确认(validation)
  3. Python培训入门基础知识学什么?
  4. 学习java一定会用到的应用软件
  5. php文本分割成csv,怎么在php中将文本文件转换为csv文件并输出
  6. SW6206超级华为快充5V5A,全协议OPPO闪充、自带电量计量、LED 灯/数码管显示
  7. 呼伦湖国家级自然保护区管理局投放草料保野生黄羊过冬
  8. Java Script 第四节课 Java Script的隐式转换
  9. 【iOS UI】iOS 9 GUI 资源分享
  10. 理解 Delphi 的类(十) - 深入方法[23] - 重载