矩形滤波代码(计算窗口平均值)

function 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 axis

imCum = cumsum(imSrc, 1);

%difference over Y axis

imDst(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 axis

imCum = cumsum(imDst, 2);

%difference over Y axis

imDst(:, 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

单通道图像的导向图滤波代码

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;

end

彩色图像的导向图滤波代码

function q = guidedfilter_color(I, p, r, eps)

%  GUIDEDFILTER_COLOR  O(1) time implementation of guided filter using a color image as

the guidance.

%

%  - guidance image: I (should be a color

(RGB) image)

%  - filtering input image: p (should be a

gray-scale/single channel image)

%  - local window radius: r

%  - regularization parameter:

eps

[hei, wid] = size(p);

N = boxfilter(ones(hei, wid), r); % the size of each local

patch; N=(2r+1)^2 except for boundary

pixels.

mean_I_r = boxfilter(I(:, :, 1), r) ./ N;

mean_I_g = boxfilter(I(:, :, 2), r) ./ N;

mean_I_b = boxfilter(I(:, :, 3), r) ./

N;

mean_p = boxfilter(p, r) ./ N;

mean_Ip_r = boxfilter(I(:, :, 1).*p, r) ./ N;

mean_Ip_g = boxfilter(I(:, :, 2).*p, r) ./ N;

mean_Ip_b = boxfilter(I(:, :, 3).*p, r) ./

N;

% covariance of (I, p) in each local patch.

cov_Ip_r = mean_Ip_r - mean_I_r .* mean_p;

cov_Ip_g = mean_Ip_g - mean_I_g .* mean_p;

cov_Ip_b = mean_Ip_b - mean_I_b .* mean_p;

% variance of I in each local patch: the matrix Sigma in Eqn

(14).

% Note the variance in each local patch is a 3x3 symmetric

matrix:

%  rr, rg, rb

%  Sigma = rg, gg, gb

%  rb, gb, bb

var_I_rr = boxfilter(I(:, :, 1).*I(:, :, 1), r) ./ N -

mean_I_r .*  mean_I_r;

var_I_rg = boxfilter(I(:, :, 1).*I(:, :, 2), r) ./ N -

mean_I_r .*  mean_I_g;

var_I_rb = boxfilter(I(:, :, 1).*I(:, :, 3), r) ./ N -

mean_I_r .*  mean_I_b;

var_I_gg = boxfilter(I(:, :, 2).*I(:, :, 2), r) ./ N -

mean_I_g .*  mean_I_g;

var_I_gb = boxfilter(I(:, :, 2).*I(:, :, 3), r) ./ N -

mean_I_g .*  mean_I_b;

var_I_bb = boxfilter(I(:, :, 3).*I(:, :, 3), r) ./ N -

mean_I_b .*  mean_I_b;

a = zeros(hei, wid, 3);

for y=1:hei

for x=1:wid

Sigma = [var_I_rr(y, x), var_I_rg(y, x),

var_I_rb(y, x);

var_I_rg(y, x), var_I_gg(y, x), var_I_gb(y, x);

var_I_rb(y, x), var_I_gb(y, x), var_I_bb(y, x)];

%Sigma = Sigma + eps * eye(3);

cov_Ip = [cov_Ip_r(y, x), cov_Ip_g(y, x),

cov_Ip_b(y, x)];

a(y, x, :) = cov_Ip * inv(Sigma + eps * eye(3));

% Eqn. (14) in the paper;

end

end

b = mean_p - a(:, :, 1) .* mean_I_r - a(:, :, 2) .* mean_I_g -

a(:, :, 3) .* mean_I_b; % Eqn. (15) in the

paper;

q = (boxfilter(a(:, :, 1), r).* I(:, :, 1)...

+ boxfilter(a(:, :, 2), r).* I(:, :, 2)...

+ boxfilter(a(:, :, 3), r).* I(:, :, 3)...

+ boxfilter(b, r)) ./ N;  % Eqn. (16) in the

paper;

end

图像保边滤波

% example: edge-preserving smoothing

% figure 1 in our paper

close all;

I = double(imread('.\img_smoothing\cat.bmp')) / 255;

p = I;

r = 4; % try r=2, 4, or 8

eps = 0.2^2; % try eps=0.1^2, 0.2^2,

0.4^2

q = guidedfilter(I, p, r, eps);

figure();

imshow([I, q], [0, 1]);

抠图的代码

% example: guided feathering

% figure 9 in our paper

close all;

I = double(imread('.\img_feathering\toy.bmp')) / 255;

p = double(rgb2gray(imread('.\img_feathering\toy-mask.bmp')))

/ 255;

r = 60;

eps = 10^-6;

q = guidedfilter_color(I, p, r, eps);

figure();

imshow([I, repmat(p, [1, 1, 3]), repmat(q, [1, 1, 3])], [0,

1]);

guided filter matlab,导向滤波器(Guided Filter)相关推荐

  1. 三种经典图像滤波方法介绍——双边滤波(Bilateral filter)、导向滤波(Guided Fliter)、滚动导向滤波(RollingGuidedFilter)

    文章目录 一.前言 二.双边滤波(Bilateral filter) 2.1 双边滤波的理论介绍及公式推导 2.2 双边滤波的matlab程序实现 三.导向滤波(Guided Fliter) 3.1 ...

  2. OpenCV图像处理学习九,双边滤波器 (Bilateral Filter)和中位数滤波器 (Median Filter)

    均值模糊无法克服边缘像素信息丢失缺陷,原因是均值滤波是基于平均权重,赋予图像内的像素与图像边缘像素一样的比值权重,图像处理是会使得边缘部分图像部分像素信息丢失: 高斯模糊部分克服了该缺陷,但是无法完全 ...

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

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

  4. matlab中滤波器函数filter的c语言实现

    参考出处:https://wenku.baidu.com/view/6a8eeeee9fc3d5bbfd0a79563c1ec5da50e2d6e5.html 实现: MATLAB的filter滤波函 ...

  5. matlab滤波器函数6,matlab中滤波器函数filter的c语言实现

    参考出处:https://wenku.baidu.com/view/6a8eeeee9fc3d5bbfd0a79563c1ec5da50e2d6e5.html 实现: MATLAB的filter滤波函 ...

  6. matlab ellipticf,[Matlab]椭圆滤波器设计:低通、高通、带通和带阻

    椭圆滤波器(Elliptic filter)又称考尔滤波器(Cauer filter): 这是在通带和阻带等波纹的一种滤波器. 椭圆滤波器相比其他类型的滤波器,在阶数相同的条件下有着最小的通带和阻带波 ...

  7. 快速导向滤波 matlab,导向滤波小结:从导向滤波(guided filter)到快速导向滤波(fast guide filter)的原理,应用及opencv实现代码...

    http://blog.csdn.net/kuweicai/article/details/78385871 1. 导向滤波简介 导向滤波是何凯明在学生时代提出的一个保边滤波(edge-preserv ...

  8. 详解——导向滤波(Guided Filter)和快速导向滤波

    文章目录 导读 原理推导 导向滤波的应用 导向滤波的实现 快速导向滤波的实现 算法效果 代码 参考 导读 在图像滤波算法中,导向滤波.双边滤波.最小二乘滤波并称三大保边滤波器,他们是各向异性滤波器.相 ...

  9. 基于可学习参数的深度导向滤波器 Deep Guide Filter

    深度导向滤波器 这是一篇传统方法和深度学习方法结合的算法,他在引导滤波器(关于这块可查阅我之前的文章)上融入了可学习的参数,从而赋予了更强大的拟合能力,从而可以应用在多个图像处理任务上 关于 Deep ...

  10. matlab中filter卷积补零,matlab中的卷积——filter,conv之间的区别

    filter是做滤波,其实原理跟卷积是想通的,只不过处理结果的方法不同,先看示例程序: x=[1,2,3,4,5]; h=[1,1,1]; y1=conv(h,x) y2=filter(h,1,x) ...

最新文章

  1. mysql答题表设计_PHP+MYSQL问答系统中的提问和回答的表怎么设计
  2. SAP HUM 因为存在Open TO 单据使得HU不能创建盘点凭证
  3. PM-Summit 2019全球产品经理大会北京站即将开幕!
  4. Reactor构架模式--转载
  5. 为什么Nginx性能比Apache高
  6. 基于源码仿建视频解析网站
  7. 菜鸟的jQuery源码学习笔记(三)
  8. ImportError: cannot import name ‘constants‘
  9. iis下php 500错误
  10. 利用二分法解决 leetcode 378. Kth Smallest Element in a Sorted Matrix
  11. 03、数据类型(02)
  12. tensorflow 如何获取模型中想要的张量
  13. 联想小新/YOGA新品发布会官宣:定档10月20日
  14. C++socket编程(一):绪论
  15. 2017年高考改革地区:浙江、上海
  16. MySQL数据库基础教程(视频)
  17. 世界上最好用的截图工具 吸色工具 Snipaste
  18. 语音处理基础:预加重、分帧、帧移、加窗、傅里叶变换
  19. DDD战略建模在重构业务系统时的实践
  20. 《欲望之源》(《MEAN GENES》)

热门文章

  1. 安卓-控制台-和风天气,和风天气3.0使用方法
  2. html入门怎么换字体颜色,html怎么改字体颜色
  3. linux文件系统ram,Linux常用文件系统概述-RAM篇
  4. SpringBoot整合JpaMapper实现基于mybatis的快速开发
  5. linux ipsec racoon工具移动客户端模式详细配置
  6. 超人能一拳把某个人打出地球吗?
  7. Ocelot对Consul进行配置,通过Ocelot访问502错误问题
  8. AS移动开发 类微信界面2_Activity的生命周期与跳转(持续更新中)
  9. 有人问“一花一世界,一叶一菩提”
  10. BaseProxy:异步http/https中间人