EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
基于双边滤波的图像处理,为什么会输出两个黑框?以下代码clear all;4 k; l( N, D3 R
close all;
) G& B) c. w0 {" g9 g0 v. Tclc; img=imread('t_2.jpg');. x6 T4 E% X' e- E6 p
img=mat2gray(img);' b6 k! A% l+ _9 \3 \
[m n]=size(img);
! y! {& n" S/ j9 G3 d: O% L' n* S. Y%imshow(img); r=10; %模板半径
; }% s2 [/ ]. \( W C7 |imgn=zeros(m+2*r+1,n+2*r+1);
+ v* W {4 Y. |$ V7 x+ Z% D- ~3 Yimg=imgn(r+1:m+r,r+1:n+r);8 v( x9 E. a, C7 t& s
imgn(1:r,r+1:n+r)=img(1:r,1:n); %扩展上边界
* j( n8 u% S4 ?" Z0 V4 d @9 {imgn(1:m+r,n+r+1:n+2*r+1)=imgn(1:m+r,n:n+r); %扩展右边界' U; f) f# ]- j$ V9 K0 i
imgn(m+r+1:m+2*r+1,r+1:n+2*r+1)=imgn(m:m+r,r+1:n+2*r+1); %扩展下边界
8 \, b1 Y7 B l6 \imgn(1:m+2*r+1,1:r)=imgn(1:m+2*r+1,r+1:2*r); %扩展左边界 sigma_d=2;
) I- ?, h+ H. xsigma_r=0.1;
5 K: Q) M4 J( j- q" h/ H[x,y] = meshgrid(-r:r,-r:r);
* T7 y4 D8 w$ _+ _) Uw1=exp(-(x.^2+y.^2)/(2*sigma_d^2)); %以距离作为自变量高斯滤波器 h=waitbar(0,'wait...');0 O2 }- Q; o/ y5 S5 J. I2 ]
for i=r+1:m+r1 }' S: c' @# m
for j=r+1:n+r
# I& @# |2 `) D6 ?/ v' [
' {8 |" b8 | \1 J: X8 o8 n6 {% Uw2=exp(-(imgn(i-r:i+r,j-r:j+r)-imgn(i,j)).^2/(2*sigma_r^2)); %以周围和当前像素灰度差值作为自变量的高斯滤波器
2 ~9 n; h5 o7 M, p% g0 q1 a* Mw=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
5 N7 z* U9 @- Iclose(h) figure;3 P/ p( X$ Z+ p" r+ J: a0 j
imshow(mat2gray(imgn(r+1:m+r,r+1:n+r))); ' K; h0 h- b; N: C
- M" A7 R4 L' b
! N% N6 k% c [+ B2 ? s" R, ~5 o |