8位图像的双边滤波器实现
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位图像的双边滤波器实现相关推荐
- 双边滤波器在灰度和彩色图像处理中的应用
原文链接:http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/MANDUCHI1/Bilateral_Filtering.html 版权归原 ...
- 【双边滤波】基于小波变换的多尺度自适应THZ增强双边滤波器的MATLAB仿真
1.软件版本 MATLAB2021a 2.本算法理论知识 提出了一种"基于小波变换的多尺度自适应双边滤波器"算法. 其对应的算法流程如下所示: 下面,我们从理论上限介绍一下这里所采 ...
- 双边滤波器的原理及实现
双边滤波器是什么? 双边滤波(Bilateral filter)是一种可以保边去噪的滤波器.之所以可以达到此去噪效果,是因为滤波器是由两个函数构成.一个函数是由几何空间距离决定滤波器系数.另一个由像素 ...
- bilateral filter双边滤波器的通俗理解
bilateral filter双边滤波器的通俗理解 图像去噪的方法很多,如中值滤波,高斯滤波,维纳滤波等等.但这些降噪方法容易模糊图片的边缘细节,对于高频细节的保护效果并不明显.相比较而言,bila ...
- 能使曲线变平滑的一维滤波器_双边滤波器的原理及实现
双边滤波(Bilateral filter)是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的. 双边滤波器之所以能够做到在平 ...
- 双边滤波器—— Matlab实现
例:先用双边滤波器(BF)对原图像进行滤波得到低频部分,原图和低频作差后得到高频分量,高频分量和低频分量分别增强后再进行合成. 双边滤波的特点是保边去噪,相较于高斯滤波,在平滑图像的同时,增加了对图像 ...
- 基于OpenCV双边滤波器的人脸美化 .
人像美化类软件中通常会提供一个磨皮功能,可以使得皮肤变得柔和,去除痘痘和斑点.本文基于OpenCV中的双向滤波器实现了一个简单的人脸美化功能. 双边滤波,Bilateral filter,是一种保持边 ...
- 双边滤波去噪matlab代码,双边滤波器原理及其matlab实现
之前做过图像细节增强方面的工作,处理的是红外灰度14bit图像,图像信号由14bit AD量化后,再经FPGA处理得到,使用非锐化掩模的方法,先用双边滤波器(BF)对原图像进行滤波得到低频部分,原图和 ...
- c语言双边滤波算法,浅析bilateral filter双边滤波器的理解
图像去噪的方法很多,如中值滤波,高斯滤波,维纳滤波等等.但这些降噪方法容易模糊图片的边缘细节,对于高频细节的保护效果并不明显.相比较而言,bilateral filter双边滤波器可以很好的边缘保护, ...
最新文章
- 总结 | 相机标定的基本原理与改进方法
- spring mvc dubbo ios android整合cms内容发布平台
- 简单搜索(多位自幂数)+数列网站
- 【渝粤教育】国家开放大学2018年秋季 2726T畜禽生产概论 参考试题
- select样式的重写
- 移动端web 禁止长按弹出的菜单 Safari
- pandas追加写入行、列
- python使用软件,输出,声明和if规则
- 瑞友天翼 v5.1.0.6 远程打印跳行、跳页、错位问题解决方法
- JUnit4单元测试入门教程
- Echarts直方图
- 华为android最新版本下载地址,华为Android手机驱动
- 单晶硅各向异性刻蚀技术
- 大部头出版物排版软件
- rust拆除建筑_破败建筑除了拆除或修复,变成废墟花园是更浪漫的一种可能
- 数据库系统概论(第七章:数据库设计)
- 42.	注入篇——Havij、Pangolin使用
- 业务口堆叠和堆叠子卡_通过堆叠最酷的库来构建和部署简单的ml工具
- 视频的基本参数及H264编解码相关概念
- 超全的 100 个 Pandas 函数汇总,建议收藏