灰度图像--图像增强 双边滤波 Bilateral Filtering
from:http://www.mamicode.com/info-detail-449413.html
开篇废话
废话开始,话说昨天写博客写完了,发表以后居然刷出来的是空白,顿时很生气,因为写了一上午的东西瞬间就没了,于是在微博上吐槽了csdn,于是csdn的官方微博和客服微博都跟我进行了沟通和道歉,感觉态度还是不错的,作为用户没有付给他们钱,但还是受到了不小的重视,感觉还是不错。学习是一个被分享之后经过自己加工后再分享的过程,一个分享的平台是很重要的选择,好的平台能够学到知识,并能分享知识,和别人讨论知识,收集资源分享资源。希望大家共同进步。
图像增强,平滑第二天,虽然说是第二天,但要学习和研究包括写程序,都不是一天完成的。上一篇写的是线性滤波模板,此类模板我们可以叫他们静态模板,因为其只依赖于我们的选择,我们一旦选择完成,模板就唯一确定,不会在卷积的过程中产生变换,所以这类模板具有线性性质,但缺点是不灵活,不能根据不同灰度变化情况来实时的调整权重,双边滤波就是一种非线性模板,能够根据像素位置和灰度差值的不同产生不同的模板,得到不同的滤波结果。
基本思路
数学基础
代码
//高斯函数
double gaussian(double x,double deta){return exp(-0.5*(x*x)/(deta*deta));
}
//计算当前模板系数
double BilateralWindow(double *window,int width,int height,double deta_d,double deta_r){double *mask=(double *)malloc(sizeof(double)*width*height);if(mask==NULL){printf("bilateral window malloc wrong\n");exit(0);}GaussianMask(mask,width,height,deta_d);double detavalue=0.0;double center_value=window[height/2*width+width/2];double k=0.0;double result=0.0;for(int j=0;j<height;j++){for(int i=0;i<width;i++){detavalue=center_value-window[j*width+i];mask[j*width+i]*=gaussian(detavalue,deta_r);k+=mask[j*width+i];}}for(int i=0;i<width*height;i++){result+=mask[i]*window[i];}free(mask);return result/k;
}
//双边滤波
void BilateralFilter(IplImage *src,IplImage *dst,int width,int height,double deta_d,double deta_r){double *window=(double *)malloc(sizeof(double)*width*height);for(int j=height/2;j<src->height-height/2;j++){for(int i=width/2;i<src->width-width/2;i++){for(int m=-height/2;m<height/2+1;m++){for(int n=-width/2;n<width/2+1;n++)window[(m+height/2)*width+n+width/2]=cvGetReal2D(src, j+m, i+n);}double value=BilateralWindow(window,width,height,deta_d,deta_r);cvSetReal2D(dst, j, i, value);}}free(window);
}
观察效果
总结
灰度图像--图像增强 双边滤波 Bilateral Filtering相关推荐
- 三种经典图像滤波方法介绍——双边滤波(Bilateral filter)、导向滤波(Guided Fliter)、滚动导向滤波(RollingGuidedFilter)
文章目录 一.前言 二.双边滤波(Bilateral filter) 2.1 双边滤波的理论介绍及公式推导 2.2 双边滤波的matlab程序实现 三.导向滤波(Guided Fliter) 3.1 ...
- (十五)双边滤波Bilateral Filter
文章目录 mathjax: true 1.高斯滤波 1.1 理论 1.2 示例 2.双边滤波(Bilateral Filter) 2.1 理论基础 2.2 OpenCV bilateralFilter ...
- 双边滤波(bilateral filter)以及联合双边滤波(joint bilateral filter)
文章目录 双边滤波 理论公式 代码(C++) 数学辅助理解 联合双边滤波(joint bilateral filter) 参考链接 写在最后 双边滤波 自用备忘,若侵则删. 理论公式 利用二维高斯函数 ...
- 双边滤波(Bilateral filter)原理介绍及matlab程序实现
双边滤波 1.原理介绍 双边滤波由C. Tomasi在1998年提出,是一种经典的非线性空间滤波方法.在滤波器稀疏的制定上,双边滤波同时考虑到了输出像素与邻域内其它像素的欧氏距离和取值的差异,即:同时 ...
- matlab双边收敛,双边滤波(bilateral filter)快速算法 matlab实现代码
本算法参考自论文"Paris S, Durand F. A fast approximation of the bilateral filter using a signal process ...
- 双边滤波(bilateral filter)彩色图 matlab实现代码
https://blog.csdn.net/weixin_38285131/article/details/77719199 https://blog.csdn.net/majinlei121/art ...
- matlab实现双边滤波_【他山之石】pytorch 实现双边滤波
"他山之石,可以攻玉",站在巨人的肩膀才能看得更高,走得更远.在科研的道路上,更需借助东风才能更快前行.为此,我们特别搜集整理了一些实用的代码链接,数据集,软件,编程技巧等,开辟& ...
- 图像滤波(Image Filtering)
在具体写图像滤波方法之前,先给出图像滤波的一般性目标阐述和经典应用.图像通常有一个直观(intuition)特征: 图像往往由多块组成,各块内像素相似且过渡缓慢,块与块相邻部分称作边缘(Edge). ...
- c语言双边滤波算法,浅析bilateral filter双边滤波器的理解
图像去噪的方法很多,如中值滤波,高斯滤波,维纳滤波等等.但这些降噪方法容易模糊图片的边缘细节,对于高频细节的保护效果并不明显.相比较而言,bilateral filter双边滤波器可以很好的边缘保护, ...
最新文章
- 学python看什么书好1002无标题-如何使用pandas读取txt文件中指定的列(有无标题)
- Xilinx IP解析之Processor System Reset v5.0
- jzoj3338-[NOI2013模拟]法法塔的奖励【权值线段树,线段树合并】
- bitmap 转 drawable
- jquery截取字符串中的数字
- python dict遍历_Python教程:Python数据类型之字典(附学习教程)
- 单链表的读取、插入与删除
- 如何修改WampServer服务器上传文件的大小?
- 【Vegas原创】VMWare下,Linux挂载、卸载新硬盘的方法
- 国内DDOS防御的专业防火墙技术
- 【答粉丝问】前公司挽留涨薪,已经接到下一家公司的offer,是走还是留?
- 软考高级 真题 2016年下半年 信息系统项目管理师 案例分析
- 项目经验之Kafka压力测试以及kafka机器数量计算
- 多传感器融合感知 --传感器外参标定及在线标定学习
- Android使用Fragment打造万能页面切换框架(一)
- 私服上传出现Failed to transfer file ...... 400错误
- python设置win10壁纸
- 闭上眼睛时,会感触到那清风拂过脸颊的柔
- JavaScript入门经典(第5版)pdf
- [内附完整源码和文档] 基于.Net实现的线上医疗咨询系统
热门文章
- access 一亿条数据_循环运算数据溢出
- arm开发板上电设置静态ip_与X86/Arm三分天下,RISCV还需几步?
- vue保存内容到本地_Vue两个版本区别
- c语言程序段的流程图怎么画,大家帮我看看这个程序的流程图怎么画,谢了
- Spring Boot(一) 自动装配--约定大于配置
- Binder 驱动详解(下)
- ELK系统之logstash问题:retrying failed action with response code: 429
- Linux防火墙详解(二)
- 安装配置 flannel - 每天5分钟玩转 Docker 容器技术(59)
- ICC_lab总结——ICC_lab4:时钟树综合