资源简介
双边滤波(bilateral filter)matlab源代码,可以直接运行
代码片段和文件信息
% BFILTER2 Two dimensional bilateral filtering.
% This function implements 2-D bilateral filtering using
% the method outlined in:
%
% C. Tomasi and R. Manduchi. Bilateral Filtering for
% Gray and Color Images. In Proceedings of the IEEE
% International Conference on Computer Vision 1998.
%
% B = bfilter2(AWSIGMA) performs 2-D bilateral filtering
% for the grayscale or color image A. A should be a double
% precision matrix of size NxMx1 or NxMx3 (i.e. grayscale
% or color images respectively) with normalized values in
% the closed interval [01]. The half-size of the Gaussian
% bilateral filter window is defined by W. The standard
% deviations of the bilateral filter are given by SIGMA
% where the spatial-domain standard deviation is given by
% SIGMA(1) and the intensity-domain standard deviation is
% given by SIGMA(2).
%
% Douglas R. Lanman Brown University September 2006.
% dlanman@brown.edu http://mesh.brown.edu/dlanman
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Pre-process input and select appropriate filter.
function B = bfilter2(Awsigma)
% Verify that the input image exists and is valid.
if ~exist(‘A‘‘var‘) || isempty(A)
error(‘Input image A is undefined or invalid.‘);
end
if ~isfloat(A) || ~sum([13] == size(A3)) || ...
min(A(:)) < 0 || max(A(:)) > 1
error([‘Input image A must be a double precision ‘...
‘matrix of size NxMx1 or NxMx3 on the closed ‘...
‘interval [01].‘]);
end
% Verify bilateral filter window size.
if ~exist(‘w‘‘var‘) || isempty(w) || ...
numel(w) ~= 1 || w < 1
w = 5;
end
w = ceil(w);
% Verify bilateral filter standard deviations.
if ~exist(‘sigma‘‘var‘) || isempty(sigma) || ...
numel(sigma) ~= 2 || sigma(1) <= 0 || sigma(2) <= 0
sigma = [3 0.1];
end
% Apply either grayscale or color bilateral filtering.
if size(A3) == 1
B = bfltGray(Awsigma(1)sigma(2));
else
B = bfltColor(Awsigma(1)sigma(2));
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Implements bilateral filtering for grayscale images.
function B = bfltGray(Awsigma_dsigma_r)
% Pre-compute Gaussian distance weights.
[XY] = meshgrid(-w:w-w:w);
G = exp(-(X.^2+Y.^2)/(2*sigma_d^2));
% Create waitbar.
h = waitbar(0‘Applying bilateral filter...‘);
set(h‘Name‘‘Bilateral Filter Progress‘);
% Apply bilateral filter.
dim = size(A);
B = zeros(dim);
for i = 1:dim(1)
for j = 1:dim(2)
% Extract local region.
iMin = max(i-w1);
iMax = min(i+wdim(1));
jMin = max(j-w1);
jMax = min(j+wdim(2));
I = A(iMin:iMaxjMin:jMax);
% Compute Gaussian intensity weights.
H = exp(-(I-A(ij)).^2/(2*sigma_r^2));
% Calculate bilateral filter response.
F = H.*G((iMin:iMax)-i+w+1(jMin:jMax)-j+w+1);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-04-18 19:13 Bilateral Filter Matlab Code\
文件 4840 2016-04-10 11:06 Bilateral Filter Matlab Code\bfilter2.m
文件 320 2016-04-18 19:13 Bilateral Filter Matlab Code\demo.m
文件 800840 2016-04-08 20:39 Bilateral Filter Matlab Code\lena.png
评论
共有 条评论