引导滤波(guided image filtering)原理及C++实现
引导滤波
代码实现
template<class T, class K>
void CImageObj::BoxFilter(K** src, T** dst, int r)
{int w = 2 * r + 1;int pixCount = w * w;int nx = m_width;int ny = m_height;int i, j, m, n;for (i = 0; i < ny; ++i){for (j = 0; j < nx; ++j){int k = 0;double sum = 0.0;for (m = i - r; m <= i + r; ++m){for (n = j - r; n <= j + r; ++n){if (m < 0 || m >= ny) { k++; continue; }if (n < 0 || n >= nx) { k++; continue; }sum += src[m][n];}} // 一次窗口滤波dst[i][j] = sum / (pixCount - k);} }
}void CImageObj::GIF(uchar** guidenceImg, int radius, double eps)
{if (guidenceImg == nullptr || *guidenceImg == nullptr)return;int cx = m_width;int cy = m_height;int wndsize = 2 * radius + 1;int pixcount = wndsize * wndsize;double** a = NewDoubleMatrix(cx, cy);double** b = NewDoubleMatrix(cx, cy);double** mean_a = NewDoubleMatrix(cx, cy);double** mean_b = NewDoubleMatrix(cx, cy);int i, j, m, n;for (i = 0; i < cy; ++i)for (j = 0; j < cx; ++j){int k = 0;double sum_I = 0.0; double sum_p = 0.0;for (m = i - radius; m <= i + radius; ++m)for (n = j - radius; n <= j + radius; ++n){if (m < 0 || m >= cy) { k++; continue; }if (n < 0 || n >= cx) { k++; continue; }sum_I += guidenceImg[m][n] / 255.0;sum_p += m_imgData[m][n] / 255.0;}double mean_I = sum_I / (pixcount - k);double mean_p = sum_p / (pixcount - k);k = 0;double sum_Ip = 0.0;double sum_var_I = 0.0;for (m = i - radius; m <= i + radius; ++m)for (n = j - radius; n <= j + radius; ++n){if (m < 0 || m >= cy) { k++; continue; }if (n < 0 || n >= cx) { k++; continue; }sum_Ip += (m_imgData[m][n] / 255.0) * (guidenceImg[m][n] / 255.0);sum_var_I += (guidenceImg[m][n] / 255.0 - mean_I) * (guidenceImg[m][n] / 255.0 - mean_I);}a[i][j] = (sum_Ip / (pixcount - k) - mean_I * mean_p) / (sum_var_I / (pixcount - k) + eps);b[i][j] = mean_p - a[i][j] * mean_I;}BoxFilter(a, mean_a, radius);BoxFilter(b, mean_b, radius);for (i = 0; i < cy; ++i)for (j = 0; j < cx; ++j){double tmp = 255 * (mean_a[i][j] * guidenceImg[i][j] / 255.0 + mean_b[i][j]);tmp = tmp > 255.0 ? 255.0 : tmp;tmp = tmp < 0.0 ? 0.0 : tmp;m_imgData[i][j] = (uchar)tmp;}UpdateImage();DeleteDoubleMatrix(a, cx, cy);DeleteDoubleMatrix(b, cx, cy);DeleteDoubleMatrix(mean_a, cx, cy);DeleteDoubleMatrix(mean_b, cx, cy);
}
参考资料
引导滤波(guided image filtering)原理及C++实现相关推荐
- 引导滤波(guided filter)理解和代码实现
最近在学习图片的滤波和去噪的相关知识,查阅了一些资料参考了一些博客,这里做一个整合+理解.参考的博客资料在文末. 引入普通滤波的概念 假设输入图像为p,滤波窗口为wk,经过滤波后的输出图像为q,那么q ...
- 2019 DGF(深度引导滤波网络) 相关的论文笔记
文章目录 *Fast End-to-End Trainable Guided Filter* *KeyPoint* *overview* *keywords* *extends* 摘要 引言 相关工作 ...
- 引导图滤波(Guided Image Filtering)原理以及OpenCV实现
引导图滤波器是一种自适应权重滤波器,能够在平滑图像的同时起到保持边界的作用,具体公式推导请查阅原文献<Guided Image Filtering>以及matlab源码:Guided Im ...
- 引导滤波matlab代码实现,引导图滤波(Guided Image Filtering)原理以及OpenCV实现
引导图滤波器是一种自适应权重滤波器,能够在平滑图像的同时起到保持边界的作用,具体公式推导请查阅原文献<Guided Image Filtering>以及matlab源码:http://ka ...
- 引导图像滤波(Guided Image Filtering)
[Paper] Guided Image Filtering(2013) 引导图像滤波 摘要--在本文中,我们提出了一种新的显式图像滤波器,称为引导滤波器.从局部线性模型导出,引导滤波器通过考虑引导图 ...
- Guided image filtering(引导滤波)
摘要 本文提出了一种新的显式图像滤波引导滤波器.引导滤波器从局部线性模型中导出,通过考虑引导图像的内容(可以是输入图像本身,也可以是另一个不同的图像)来生成滤波输出图像.那个引导滤波器可以像流行的 ...
- 引导滤波guideFilter原理推导与实验
转载至: https://zhuanlan.zhihu.com/p/98368439 https://zhuanlan.zhihu.com/p/161666126 论文原文 Kaiming He, J ...
- 导向滤波(guided Image Filtering)
最近两天看了何凯明大神的导向滤波器(Guided Image Filtering),刚刚才顿悟整篇文章的核心.本文只针对于I=pI=pI=p的情况,即对图像III进行滤波处理.个人认为导向滤波器其实就 ...
- [PAMI2013] Guided Image Filtering 导向滤波器以及OpenCV-Python代码实现
论文地址:https://www.researchgate.net/profile/Xiaoou_Tang/publication/236228168_Guided_Image_Filtering/l ...
最新文章
- 图像识别:能在商业中如何运用
- 用JS脚本进行页面元素控制
- MVC4学习笔记(二)- MVC设计实例,5分钟内完成你的Mvc项目
- 知乎基于Kubernetes的kafka平台的设计和实现
- .bashrc和.vimrc以及一些比较有用的linux命令
- 建立集群间ssh信任关系
- Linux 上网配置 修改IP
- System.IO.Pipelines: .NET高性能IO
- CV Code | 计算机视觉开源周报 20190505期
- 双向链表示意图_java双向链表示意图
- 网联兴,银联苦:一文看清支付清算市场新局面的矛盾和疑惑
- 度中心性(degree)、接近中心性(closeness)和中介中心性(betweenness)的理解
- Python项目:结合Django和爬虫开发小说网站,免安装,无广告
- java int 运算符,java中各种运算符
- 怎么把磁盘合并成一个?两个硬盘分区合并,如何硬盘分区合并
- 【转】94个比付费软件更好的免费软件
- Windows 关闭 简繁体切换Ctrl+Shift+F
- python渲染光线_Python光线追踪
- 如何区分b ,B,KB,MB,GB?
- 第6章 详细设计(软件工程导论 第6版)