Guided Image Filtering
来源:互联网 发布:哪里有im域名 编辑:程序博客网 时间:2024/06/05 15:04
在图像滤波中,人们最希望的就是可以将图像中的噪声过滤掉的同时,能够让边缘尽可能的保持。噪声属于高频信号,而边缘其实也是一种高频信号,所以一般的滤波器,比如高斯模糊,均值模糊,都是一种低通滤波器,能够将高频信号做平滑处理,这些kernel在将噪声滤掉的同时,也会将边缘模糊掉,所以保边滤波器的设计一直是图像滤波的重点。
导向滤波是非常有名的一种保边滤波器,与传统的高斯滤波,均值滤波独立于图像的内容不同,导向滤波的 kernel 基于一个 guided image, 简单来说,就是给定一个 guided image
当
接下来,我们可以定义导向滤波器以及它的核函数,具体的定义形式如下:
这个表达式意味着,在一个局部区域
上式保证 了
为了求解线性系数
一般来说,
我们可以把这个线性模型应用到整张图像的所有局部区域,但是,由于一个像素点
最后奉上代码:
function q = guidedfilter(I, p, r, 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[hei, wid] = size(I);N = boxfilter(ones(hei, wid), r); % the size of each local patch; N=(2r+1)^2 except for boundary pixels.mean_I = boxfilter(I, r) ./ N;mean_p = boxfilter(p, r) ./ N;mean_Ip = boxfilter(I.*p, r) ./ N;cov_Ip = mean_Ip - mean_I .* mean_p; % this is the covariance of (I, p) in each local patch.mean_II = boxfilter(I.*I, r) ./ N;var_I = mean_II - mean_I .* mean_I;a = cov_Ip ./ (var_I + eps); % Eqn. (5) in the paper;b = mean_p - a .* mean_I; % Eqn. (6) in the paper;mean_a = boxfilter(a, r) ./ N;mean_b = boxfilter(b, r) ./ N;q = mean_a .* I + mean_b; % Eqn. (8) in the paper;endfunction imDst = boxfilter(imSrc, r)% BOXFILTER O(1) time box filtering using cumulative sum%% - Definition imDst(x, y)=sum(sum(imSrc(x-r:x+r,y-r:y+r)));% - Running time independent of r; % - Equivalent to the function: colfilt(imSrc, [2*r+1, 2*r+1], 'sliding', @sum);% - But much faster.[hei, wid] = size(imSrc);imDst = zeros(size(imSrc));%cumulative sum over Y axisimCum = cumsum(imSrc, 1);%difference over Y axisimDst(1:r+1, :) = imCum(1+r:2*r+1, :);imDst(r+2:hei-r, :) = imCum(2*r+2:hei, :) - imCum(1:hei-2*r-1, :);imDst(hei-r+1:hei, :) = repmat(imCum(hei, :), [r, 1]) - imCum(hei-2*r:hei-r-1, :);%cumulative sum over X axisimCum = cumsum(imDst, 2);%difference over Y axisimDst(:, 1:r+1) = imCum(:, 1+r:2*r+1);imDst(:, r+2:wid-r) = imCum(:, 2*r+2:wid) - imCum(:, 1:wid-2*r-1);imDst(:, wid-r+1:wid) = repmat(imCum(:, wid), [1, r]) - imCum(:, wid-2*r:wid-r-1);end
可以看到,guided image filtering 的代码实现还是很简单的,就是基于box filter。
- Guided Image Filtering
- Guided Image Filtering
- Guided Image Filtering
- Guided Image Filtering
- Guided Image Filtering学习笔记
- 引导滤波 Guided Image Filtering
- 论文阅读:Guided Image Filtering, ECCV2010
- 基于guided image filtering的图像去雾 opencv实现
- Real-time local stereo matching using guided image filtering(2011)
- 引导滤波(guided image filtering)原理及C++实现
- 论文"Gradient Domain Guided Image Filtering" matlab实现代码
- 保持边缘的滤波函数————Guided Image Filtering
- "Gradient Domain Guided Image Filtering"论文中边缘权重函数matlab实现代码
- "Gradient Domain Guided Image Filtering"论文中边缘权重函数matlab实现代码
- guided image filter
- Image-Guided Streamline Placement
- Pose Guided Person Image Generation
- 图像滤波 Image Filtering
- 磁盘管理3--磁盘配额
- HTML5 实现跨域消息传递
- Hdu6069 Counting Divisors(2017多校第4场)
- 拷贝图片
- 由View.post引发的问题
- Guided Image Filtering
- 树状数组--区间加单点询问
- 【HDU1233】还是畅通工程(最小生成树-水题)
- PAT 5-19
- 最大连续子数列和 模板
- 关于i++ 跟++i 的区别。
- 字节输入流
- LeetCode:minimum-depth-of-binary-tree(二叉树最小深度)
- 用递归方式实现逆序输出