本文主要介绍导向滤波,引导滤波在滤波的同时,具有保边缘的特效,考虑了空间因素,可以用在图像去雾算法中对透射率t的优化中,能起到很好的效果

论文如下:

Guided Image Filtering
Kaiming He  , Jian Sun , and Xiaoou Tang ,
Department of Information Engineering, The Chinese University of Hong Kong
Microsoft Research Asia
Shenzhen Institutes of Advanced Technology, Chinese Academy of Sciences, China

原理如下:

代码如下:

#include "afxwin.h"
#include <cv.h>
#include "cxcore.h"
#include <highgui.h>
#include<vector>
#include <iostream>
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"   void Ctry::OnTryTyr1()  //消息响应函数
{int r = 4;double eps = 0.01;Mat image_src = imread("C:\\Users\\Administrator\\Desktop\\38.jpg", CV_LOAD_IMAGE_COLOR);vector<Mat> bgr_src, bgr_dst;split(image_src, bgr_src);//分解每个通道  Mat dst_color;Mat temp;for (int i = 0; i<3; i++){Mat I = getimage(bgr_src[i]);Mat p = I.clone();Mat q = guidedFilter2(I, p, r, eps); bgr_dst.push_back(q);}merge(bgr_dst, dst_color);imwrite("C:\\Users\\Administrator\\Desktop\\result2.jpg", dst_color*255);double time2 = 0;time2 = (double)getTickCount();Mat image_gray(image_src.size(), CV_8UC1);cvtColor(image_src, image_gray, CV_BGR2GRAY);Mat I = getimage(image_gray);Mat p = I.clone();Mat  Output;guidedFilter2(I, p, r, eps).copyTo(Output);imshow("方法:", Output);Mat tt;Output.convertTo(tt, -1,255.0);imwrite("C:\\Users\\Administrator\\Desktop\\mert.JPG", tt);time2 = 1000 * ((double)getTickCount() - time2) / getTickFrequency();cout << endl << "Time of guided filter2 for  runs: " << time2 << " milliseconds." << endl;    waitKey(0);
}//convert image depth to CV_64F
Mat  Ctry::getimage(Mat &a)
{int hei = a.rows;int wid = a.cols;Mat I(hei, wid, CV_64FC1);//convert image depth to CV_64F  a.convertTo(I, CV_64FC1, 1.0 / 255.0);return I;
}Mat  Ctry::guidedFilter2(cv::Mat I, cv::Mat p, int r, double eps)
{/*% GUIDEDFILTER   O(1) time implementation of guided filter.%%   - guidance image: I (should be a gray-scale/single channel image)%   - filtering input image: p (should be a gray-scale/single channel image)%   - local window radius: r%   - regularization parameter: eps*/cv::Mat _I;I.convertTo(_I, CV_64FC1);I = _I;cv::Mat _p;p.convertTo(_p, CV_64FC1);p = _p;//[hei, wid] = size(I);  int hei = I.rows;int wid = I.cols;//N = boxfilter(ones(hei, wid), r); % the size of each local patch; N=(2r+1)^2 except for boundary pixels.  cv::Mat N;cv::boxFilter(cv::Mat::ones(hei, wid, I.type()), N, CV_64FC1, cv::Size(r, r));//mean_I = boxfilter(I, r) ./ N;  cv::Mat mean_I;cv::boxFilter(I, mean_I, CV_64FC1, cv::Size(r, r));//mean_p = boxfilter(p, r) ./ N;  cv::Mat mean_p;cv::boxFilter(p, mean_p, CV_64FC1, cv::Size(r, r));//mean_Ip = boxfilter(I.*p, r) ./ N;  cv::Mat mean_Ip;cv::boxFilter(I.mul(p), mean_Ip, CV_64FC1, cv::Size(r, r));//cov_Ip = mean_Ip - mean_I .* mean_p; % this is the covariance of (I, p) in each local patch.  cv::Mat cov_Ip = mean_Ip - mean_I.mul(mean_p);//mean_II = boxfilter(I.*I, r) ./ N;  cv::Mat mean_II;cv::boxFilter(I.mul(I), mean_II, CV_64FC1, cv::Size(r, r));//var_I = mean_II - mean_I .* mean_I;  cv::Mat var_I = mean_II - mean_I.mul(mean_I);//a = cov_Ip ./ (var_I + eps); % Eqn. (5) in the paper;     cv::Mat a = cov_Ip / (var_I + eps);//b = mean_p - a .* mean_I; % Eqn. (6) in the paper;  cv::Mat b = mean_p - a.mul(mean_I);//mean_a = boxfilter(a, r) ./ N;  cv::Mat mean_a;cv::boxFilter(a, mean_a, CV_64FC1, cv::Size(r, r));mean_a = mean_a / N;//mean_b = boxfilter(b, r) ./ N;  cv::Mat mean_b;cv::boxFilter(b, mean_b, CV_64FC1, cv::Size(r, r));mean_b = mean_b / N;//q = mean_a .* I + mean_b; % Eqn. (8) in the paper;  cv::Mat q = mean_a.mul(I) + mean_b;return q;
}

效果图:

引导滤波 Guided Image Filtering相关推荐

  1. 引导滤波(guided image filtering)原理及C++实现

    引导滤波 引导滤波是由何凯明等人与2010年提出,它本质上具有O(N)复杂度,相对于双边滤波有更好的边缘保持特性,且不会出现梯度反转现象.在不同引导图像的引导下,可广泛应用于降噪.去雾.高动态范围压缩 ...

  2. 引导滤波(guided filter)理解和代码实现

    最近在学习图片的滤波和去噪的相关知识,查阅了一些资料参考了一些博客,这里做一个整合+理解.参考的博客资料在文末. 引入普通滤波的概念 假设输入图像为p,滤波窗口为wk,经过滤波后的输出图像为q,那么q ...

  3. 2019 DGF(深度引导滤波网络) 相关的论文笔记

    文章目录 *Fast End-to-End Trainable Guided Filter* *KeyPoint* *overview* *keywords* *extends* 摘要 引言 相关工作 ...

  4. 引导图滤波(Guided Image Filtering)原理以及OpenCV实现

    引导图滤波器是一种自适应权重滤波器,能够在平滑图像的同时起到保持边界的作用,具体公式推导请查阅原文献<Guided Image Filtering>以及matlab源码:Guided Im ...

  5. 引导图像滤波(Guided Image Filtering)

    [Paper] Guided Image Filtering(2013) 引导图像滤波 摘要--在本文中,我们提出了一种新的显式图像滤波器,称为引导滤波器.从局部线性模型导出,引导滤波器通过考虑引导图 ...

  6. 引导滤波matlab代码实现,引导图滤波(Guided Image Filtering)原理以及OpenCV实现

    引导图滤波器是一种自适应权重滤波器,能够在平滑图像的同时起到保持边界的作用,具体公式推导请查阅原文献<Guided Image Filtering>以及matlab源码:http://ka ...

  7. Guided image filtering(引导滤波)

    摘要   本文提出了一种新的显式图像滤波引导滤波器.引导滤波器从局部线性模型中导出,通过考虑引导图像的内容(可以是输入图像本身,也可以是另一个不同的图像)来生成滤波输出图像.那个引导滤波器可以像流行的 ...

  8. 导向滤波(guided Image Filtering)

    最近两天看了何凯明大神的导向滤波器(Guided Image Filtering),刚刚才顿悟整篇文章的核心.本文只针对于I=pI=pI=p的情况,即对图像III进行滤波处理.个人认为导向滤波器其实就 ...

  9. [PAMI2013] Guided Image Filtering 导向滤波器以及OpenCV-Python代码实现

    论文地址:https://www.researchgate.net/profile/Xiaoou_Tang/publication/236228168_Guided_Image_Filtering/l ...

  10. 数字图像处理——引导滤波

    一.概述 引导滤波是由何恺明等人于2010年发表在ECCV的文章<Guided Image Filtering>中提出的,后续于2013年发表.引导过滤器根据局部线性模型原理,通过考虑引导 ...

最新文章

  1. Linux文件查找之find秘笈
  2. java 中文 音序,java 中文字符串数组按照音序排列
  3. java spring hiberate_Java程序员:Spring Boot和Hibernate一起使用的技巧
  4. python爬虫更换ip_爬虫务必要改ip吗?
  5. Java基础巩固——排序
  6. 关于H5页面的测试总结与分析
  7. 10个Jquery幻灯片插件教程
  8. 为Bootstrap模态对话框添加拖拽移动功能
  9. 解决:IDEA打开在GitHub上下载的java项目源码没有src目录的问题
  10. 视频下载离线工具—“Softorino YouTube Converter”
  11. ubuntu upgrade problem
  12. 吴章金: 深度剖析 Linux共享库的“位置无关”实现原理
  13. 16nm粒径的规则球形纳米金粒AuNPs-CPE-香兰素/Tf-金纳米海胆的制备方法
  14. 没有乌云,天就一定晴了么
  15. 有哪些可助力英文学术论文写作的在线网站、工具或软件?
  16. 儿童全脑九大能力,3-6岁的家长都应该知道
  17. 前端js——金山打字通小游戏(屏幕随机下落字母,获取键盘按键)
  18. 几个图像缩放算法的比较
  19. android搜索网站,加速 Android的 五大开源网站 codekk.com
  20. 移除浏览器的搜狗导航

热门文章

  1. http抓包实践--(七)-fiddler弱网环境
  2. 小程序学习笔记(8)-导航组件
  3. 黑马vue实战项目-(三)权限管理功能开发
  4. c语言qsort函数对结构体的一级排序,sort和qsort函数对结构体的二级排序
  5. 东芝2505扫描软件_如何识别LED显示屏的扫描方式?-美亚迪分享
  6. python 执行shell_python执行shell命令四法
  7. mysql_分组查询
  8. 使用FileZilla搭建简单的FTP
  9. android ndk makefile,用Android NDK打造自己的toolchain(使用C/C++默认的Makefile)
  10. IDEA中用maven打出的jar包只有一个META-INF文件夹,没有java的源码???