• 大小: 785KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-24
  • 语言: Matlab
  • 标签: 双边滤波  Bilateral  

资源简介

双边滤波(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

评论

共有 条评论