EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
基于双边滤波的图像处理,为什么会输出两个黑框?以下代码clear all;! D1 s8 \* P4 u
close all;: x! T9 _$ o9 `5 o3 Y
clc; img=imread('t_2.jpg');6 F4 F$ J" D/ M" ^6 h/ T
img=mat2gray(img);
/ b, M" {1 u) G' P% z[m n]=size(img);! k: z4 R/ o. E* b8 k( s+ y" Q
%imshow(img); r=10; %模板半径$ g4 k2 c6 C3 ]( [6 g
imgn=zeros(m+2*r+1,n+2*r+1);
; }0 L2 a( {. ^ }img=imgn(r+1:m+r,r+1:n+r);
- T [- V& r- y3 I: r" U, nimgn(1:r,r+1:n+r)=img(1:r,1:n); %扩展上边界: }6 k/ p3 @ E }, @
imgn(1:m+r,n+r+1:n+2*r+1)=imgn(1:m+r,n:n+r); %扩展右边界' W& ^, \& p" u2 ~4 K
imgn(m+r+1:m+2*r+1,r+1:n+2*r+1)=imgn(m:m+r,r+1:n+2*r+1); %扩展下边界- Y( b2 }2 p+ B% @) E' H
imgn(1:m+2*r+1,1:r)=imgn(1:m+2*r+1,r+1:2*r); %扩展左边界 sigma_d=2;
1 i' F( C7 g6 p+ b$ H+ F& ~sigma_r=0.1;
. J3 r ]2 Z! I) B[x,y] = meshgrid(-r:r,-r:r);
! A% m9 p; N7 N' {. u2 o% o8 f# _w1=exp(-(x.^2+y.^2)/(2*sigma_d^2)); %以距离作为自变量高斯滤波器 h=waitbar(0,'wait...');
) o u; C. o( U2 jfor i=r+1:m+r6 P, w+ [3 u; e* ~( i: y
for j=r+1:n+r
: z B: ~* U; C; W, r! i7 Q7 a/ P, Y1 @
0 F9 V( R+ @, i1 ~2 v8 I5 Tw2=exp(-(imgn(i-r:i+r,j-r:j+r)-imgn(i,j)).^2/(2*sigma_r^2)); %以周围和当前像素灰度差值作为自变量的高斯滤波器
' ]! _% | y: g& i) W& J0 Tw=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
3 z% R k7 B( v% v1 `close(h) figure;4 T+ z/ s5 E( C4 |6 p! E
imshow(mat2gray(imgn(r+1:m+r,r+1:n+r)));
* n( M X7 G# e+ F% d
' u9 X; d! v% I: p. D9 X' w
( I8 R' v* Z4 m( ?
|