EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
基于双边滤波的图像处理,为什么会输出两个黑框?以下代码clear all;
4 N. g. {: S% N0 w) c( w' R T! Eclose all;
6 l0 d+ @& u6 Q6 N; s" q2 X2 eclc; img=imread('t_2.jpg');( [) N9 I: {5 X4 M8 K
img=mat2gray(img);
7 y# o* U# U# u[m n]=size(img);; D- O4 R3 i0 U3 {( u2 s
%imshow(img); r=10; %模板半径0 Y* I* j* J- X; f
imgn=zeros(m+2*r+1,n+2*r+1);# P5 T( G- {0 v* V& ]' u B
img=imgn(r+1:m+r,r+1:n+r);" W& C' Z& [7 F! c+ z4 q, y
imgn(1:r,r+1:n+r)=img(1:r,1:n); %扩展上边界% t$ t4 W. Z+ R8 ?
imgn(1:m+r,n+r+1:n+2*r+1)=imgn(1:m+r,n:n+r); %扩展右边界
9 f( j" q+ F7 a, V8 q, _7 bimgn(m+r+1:m+2*r+1,r+1:n+2*r+1)=imgn(m:m+r,r+1:n+2*r+1); %扩展下边界
9 ]8 J, I' Y6 @. d. y2 Timgn(1:m+2*r+1,1:r)=imgn(1:m+2*r+1,r+1:2*r); %扩展左边界 sigma_d=2;' j x" X) G$ z: d! o
sigma_r=0.1;+ k4 I5 d% R C* k9 {' ^
[x,y] = meshgrid(-r:r,-r:r);
; G9 z$ X9 W6 s- f; {w1=exp(-(x.^2+y.^2)/(2*sigma_d^2)); %以距离作为自变量高斯滤波器 h=waitbar(0,'wait...');
) R! N* x/ {/ w! i. i' j% gfor i=r+1:m+r* G$ r- C5 V- F. e/ `9 @: b% k2 `* m
for j=r+1:n+r
# r. \) H V% i0 W# k0 T% N: X' E* Y4 y) r! }9 W& P" s% `' y
w2=exp(-(imgn(i-r:i+r,j-r:j+r)-imgn(i,j)).^2/(2*sigma_r^2)); %以周围和当前像素灰度差值作为自变量的高斯滤波器 {9 z/ ~" {8 M) X$ d {
w=w1.*w2; s=imgn(i-r:i+r,j-r:j+r).*w; imgn(i,j)=sum(sum(s))/sum(sum(w));endwaitbar(i/m);end7 I( b2 C" w' V( L- F) A
close(h) figure;+ U6 |6 i& \$ o6 w" k: ]
imshow(mat2gray(imgn(r+1:m+r,r+1:n+r))); - s" s5 m( I8 u5 U
8 [! o3 [% c g7 {* K5 n2 a k
7 P, I: P; p& a' b& z' F |