JointBilateralFiltering双边滤波_xp____ 双边滤波

双边滤波是以高斯滤波为基础,引入色度差异后的改进。滤波器卷积窗加权权值同时考虑了空间和色度的二维特征差异。
wiki: http://zh.wikipedia.org/wiki/雙邊濾波器
以下为转载(http://blog.csdn.net/abcjennifer/article/details/7616663):

双边滤波器是什么?

双边滤波(Bilateral filter)是一种可以保边去噪的滤波器。之所以可以达到此去噪效果,是因为滤波器是由两个函数构成。一个函数是由几何空间距离决定滤波器系数。另一个由像素差值决定滤波器系数。可以与其相比较的两个filter:高斯低通滤波器(http://en.wikipedia.org/wiki/Gaussian_filter)和α-截尾均值滤波器(去掉百分率为α的最小值和最大之后剩下像素的均值作为滤波器),后文中将结合公式做详细介绍。

双边滤波器中,输出像素的值依赖于邻域像素的值的加权组合,

权重系数w(i,j,k,l)取决于定义域核

和值域核

的乘积

同时考虑了空间域与值域的差别,而GaussianFilter和α均值滤波分别只考虑了空间域和值域差别。

=======================================================================

双边滤波器的实现(MATLAB):function B =bfilter2(A,w,sigma)

CopyRight:

% Douglas R. Lanman, Brown University,September 2006.
% dlanman@brown.edu,http://mesh.brown.edu/dlanman

具体请见function B =bfltGray(A,w,sigma_d,sigma_r)函数说明。

[cpp]viewplaincopy
  1. %简单地说:
  2. %A为给定图像,归一化到[0,1]的矩阵
  3. %W为双边滤波器(核)的边长/2
  4. %定义域方差σd记为SIGMA(1),值域方差σr记为SIGMA(2)
  5. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  6. %Pre-processinputandselectappropriatefilter.
  7. functionB=bfilter2(A,w,sigma)
  8. %Verifythattheinputimageexistsandisvalid.
  9. if~exist('A','var')||isempty(A)
  10. error('InputimageAisundefinedorinvalid.');
  11. end
  12. if~isfloat(A)||~sum([1,3]==size(A,3))||...
  13. min(A(:))<0||max(A(:))>1
  14. error(['InputimageAmustbeadoubleprecision',...
  15. 'matrixofsizeNxMx1orNxMx3ontheclosed',...
  16. 'interval[0,1].']);
  17. end
  18. %Verifybilateralfilterwindowsize.
  19. if~exist('w','var')||isempty(w)||...
  20. numel(w)~=1||w<1
  21. w=5;
  22. end
  23. w=ceil(w);
  24. %Verifybilateralfilterstandarddeviations.
  25. if~exist('sigma','var')||isempty(sigma)||...
  26. numel(sigma)~=2||sigma(1)<=0||sigma(2)<=0
  27. sigma=[30.1];
  28. end
  29. %Applyeithergrayscaleorcolorbilateralfiltering.
  30. ifsize(A,3)==1
  31. B=bfltGray(A,w,sigma(1),sigma(2));
  32. else
  33. B=bfltColor(A,w,sigma(1),sigma(2));
  34. end
  35. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  36. %Implementsbilateralfilteringforgrayscaleimages.
  37. functionB=bfltGray(A,w,sigma_d,sigma_r)
  38. %Pre-computeGaussiandistanceweights.
  39. [X,Y]=meshgrid(-w:w,-w:w);
  40. %创建核距离矩阵,e.g.
  41. %[x,y]=meshgrid(-1:1,-1:1)
  42. %
  43. %x=
  44. %
  45. %-101
  46. %-101
  47. %-101
  48. %
  49. %
  50. %y=
  51. %
  52. %-1-1-1
  53. %000
  54. %111
  55. %计算定义域核
  56. G=exp(-(X.^2+Y.^2)/(2*sigma_d^2));
  57. %Createwaitbar.
  58. h=waitbar(0,'Applyingbilateralfilter...');
  59. set(h,'Name','BilateralFilterProgress');
  60. %Applybilateralfilter.
  61. %计算值域核H并与定义域核G乘积得到双边权重函数F
  62. dim=size(A);
  63. B=zeros(dim);
  64. fori=1:dim(1)
  65. forj=1:dim(2)
  66. %Extractlocalregion.
  67. iMin=max(i-w,1);
  68. iMax=min(i+w,dim(1));
  69. jMin=max(j-w,1);
  70. jMax=min(j+w,dim(2));
  71. %定义当前核所作用的区域为(iMin:iMax,jMin:jMax)
  72. I=A(iMin:iMax,jMin:jMax);%提取该区域的源图像值赋给I
  73. %ComputeGaussianintensityweights.
  74. H=exp(-(I-A(i,j)).^2/(2*sigma_r^2));
  75. %Calculatebilateralfilterresponse.
  76. F=H.*G((iMin:iMax)-i+w+1,(jMin:jMax)-j+w+1);
  77. B(i,j)=sum(F(:).*I(:))/sum(F(:));
  78. end
  79. waitbar(i/dim(1));
  80. end
  81. %Closewaitbar.
  82. close(h);
  83. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  84. %Implementsbilateralfilterforcolorimages.
  85. functionB=bfltColor(A,w,sigma_d,sigma_r)
  86. %ConvertinputsRGBimagetoCIELabcolorspace.
  87. ifexist('applycform','file')
  88. A=applycform(A,makecform('srgb2lab'));
  89. else
  90. A=colorspace('Lab<-RGB',A);
  91. end
  92. %Pre-computeGaussiandomainweights.
  93. [X,Y]=meshgrid(-w:w,-w:w);
  94. G=exp(-(X.^2+Y.^2)/(2*sigma_d^2));
  95. %Rescalerangevariance(usingmaximumluminance).
  96. sigma_r=100*sigma_r;
  97. %Createwaitbar.
  98. h=waitbar(0,'Applyingbilateralfilter...');
  99. set(h,'Name','BilateralFilterProgress');
  100. %Applybilateralfilter.
  101. dim=size(A);
  102. B=zeros(dim);
  103. fori=1:dim(1)
  104. forj=1:dim(2)
  105. %Extractlocalregion.
  106. iMin=max(i-w,1);
  107. iMax=min(i+w,dim(1));
  108. jMin=max(j-w,1);
  109. jMax=min(j+w,dim(2));
  110. I=A(iMin:iMax,jMin:jMax,:);
  111. %ComputeGaussianrangeweights.
  112. dL=I(:,:,1)-A(i,j,1);
  113. da=I(:,:,2)-A(i,j,2);
  114. db=I(:,:,3)-A(i,j,3);
  115. H=exp(-(dL.^2+da.^2+db.^2)/(2*sigma_r^2));
  116. %Calculatebilateralfilterresponse.
  117. F=H.*G((iMin:iMax)-i+w+1,(jMin:jMax)-j+w+1);
  118. norm_F=sum(F(:));
  119. B(i,j,1)=sum(sum(F.*I(:,:,1)))/norm_F;
  120. B(i,j,2)=sum(sum(F.*I(:,:,2)))/norm_F;
  121. B(i,j,3)=sum(sum(F.*I(:,:,3)))/norm_F;
  122. end
  123. waitbar(i/dim(1));
  124. end
  125. %ConvertfilteredimagebacktosRGBcolorspace.
  126. ifexist('applycform','file')
  127. B=applycform(B,makecform('lab2srgb'));
  128. else
  129. B=colorspace('RGB<-Lab',B);
  130. end
  131. %Closewaitbar.
  132. close(h);

调用方法:

[cpp]viewplaincopy
  1. I=imread('einstein.jpg');
  2. I=double(I)/255;
  3. w=5;%bilateralfilterhalf-width
  4. sigma=[30.1];%bilateralfilterstandarddeviations
  5. I1=bfilter2(I,w,sigma);
  6. subplot(1,2,1);
  7. imshow(I);
  8. subplot(1,2,2);
  9. imshow(I1)

实验结果:

参考资料:

1.《Computer Vision Algorithms andApplications》

2.http://de.wikipedia.org/wiki/Bilaterale_Filterung

3.http://www.cs.duke.edu/~tomasi/papers/tomasi/tomasiIccv98.pdf

4.http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/MANDUCHI1/Bilateral_Filtering.html

5.http://mesh.brown.edu/dlanman

  

爱华网本文地址 » http://www.aihuau.com/a/25101014/228340.html

更多阅读

电源滤波电路 交流电源滤波器

整流电路的输出电压不是纯粹的直流,从示波器观察整流电路的输出,与直流相差很大,波形中含有较大的脉动成分,称为纹波。为获得比较理想的直流电压,需要利用具有储能作用的电抗性元件(如电容、电感)组成的滤波电路来滤除整流电路输出电压中的

常用数字滤波算法 随机信号

第1种方法:限幅滤波法(又称程序判断滤波法)A方法: 根据经验判断,确定两次采样允许的最大偏差值(设为A),每次检测到新值时判断: 如果本次值与上次值之差<=A,则本次值有效,如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值。B

四种π型RC滤波电路 rc滤波电路计算器

四种π型RC滤波电路 [ 2012-2-15 5:34:00 | By: 东东 ]1.典型π型RC滤波电路图7-27所示是典型的兀型RC滤波电路。电路中的Cl、C2是两只滤波电容,Rl是滤波电阻,Cl、Rl和C2构成一节π型RC滤波电路。由于这种滤波电路的形式如同字母π且采

单片机数字滤波的算法 单片机数字滤波器

单片机数字滤波的算法单片机主要作用是控制外围的器件,并实现一定的通信和数据处理。但在某些特定场合,不可避免地要用到数学运算,尽管单片机并不擅长实现算法和进行复杂的运算。下面主要是介绍如何用单片机实现数字滤波。在单片机进

声明:《JointBilateralFiltering双边滤波_xp____ 双边滤波》为网友表情象殭分享!如侵犯到您的合法权益请联系我们删除