EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
基于双边滤波的图像处理,为什么会输出两个黑框?以下代码clear all;
" }6 v% d1 V+ Z# a/ ?; r* Rclose all;
. s* s& A4 ]- N# f. \clc; img=imread('t_2.jpg');
^ k3 x3 ~1 x m; aimg=mat2gray(img);
0 O' L% E+ b1 c9 @: N[m n]=size(img);
" b s5 f4 k, P( Q%imshow(img); r=10; %模板半径
) w* j+ V( i! ?3 A2 Dimgn=zeros(m+2*r+1,n+2*r+1);7 X7 I1 V3 |+ E/ p/ ~
img=imgn(r+1:m+r,r+1:n+r);
. h) ?, \) u S' f) t fimgn(1:r,r+1:n+r)=img(1:r,1:n); %扩展上边界- L8 I; n# B) c2 Z/ @" X: ~
imgn(1:m+r,n+r+1:n+2*r+1)=imgn(1:m+r,n:n+r); %扩展右边界7 C9 x _% s) S# }/ j( J
imgn(m+r+1:m+2*r+1,r+1:n+2*r+1)=imgn(m:m+r,r+1:n+2*r+1); %扩展下边界
( u" ~; q6 P. |' e3 J6 z- Oimgn(1:m+2*r+1,1:r)=imgn(1:m+2*r+1,r+1:2*r); %扩展左边界 sigma_d=2;! H5 K- E& `3 V5 o0 P
sigma_r=0.1;: Z- u+ p" T: \/ N4 E6 ~
[x,y] = meshgrid(-r:r,-r:r);" Z4 R$ ~# [& Y; N/ U8 x! Z% T
w1=exp(-(x.^2+y.^2)/(2*sigma_d^2)); %以距离作为自变量高斯滤波器 h=waitbar(0,'wait...');& @& A0 E! [4 V6 S) L
for i=r+1:m+r# B2 d5 `* t5 U% p9 U
for j=r+1:n+r
: I1 K2 c$ |" ~& P9 _/ ~7 } k4 L- A- w: j' D9 L4 R! z
w2=exp(-(imgn(i-r:i+r,j-r:j+r)-imgn(i,j)).^2/(2*sigma_r^2)); %以周围和当前像素灰度差值作为自变量的高斯滤波器9 R; ~8 D# x) t$ K, i2 v$ e
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);end
0 K' H a0 h. k6 \# D; Gclose(h) figure;3 e6 \0 _7 ~& z$ W6 U. g0 @& b6 @
imshow(mat2gray(imgn(r+1:m+r,r+1:n+r)));
0 x% E6 {! V/ m y m
4 y+ x* o0 i! D6 Y |5 A
" Y) M& K; y. m% D3 m c8 i) [, n6 C |