EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
基于双边滤波的图像处理,为什么会输出两个黑框?以下代码clear all;" K- T2 k7 i2 G3 S$ y
close all;. ]/ j q+ u1 h
clc; img=imread('t_2.jpg');
F! [3 Y1 G _: u( y- k) uimg=mat2gray(img);
3 I& W6 Q$ @8 a, S' J& O O[m n]=size(img);
9 K% L6 r! b; A& K: ]: N4 r%imshow(img); r=10; %模板半径4 I1 V9 @, I# a
imgn=zeros(m+2*r+1,n+2*r+1);$ S+ L; k) a: N: f2 F+ v; U, X7 Q) \$ v
img=imgn(r+1:m+r,r+1:n+r);
! ^) d$ X8 ?) e# `0 Zimgn(1:r,r+1:n+r)=img(1:r,1:n); %扩展上边界
. S0 {" N1 y# A0 k U L! q. Oimgn(1:m+r,n+r+1:n+2*r+1)=imgn(1:m+r,n:n+r); %扩展右边界
+ @5 [3 v1 d6 e4 Q S, r9 U3 nimgn(m+r+1:m+2*r+1,r+1:n+2*r+1)=imgn(m:m+r,r+1:n+2*r+1); %扩展下边界
- z2 O" H/ G+ h# C; oimgn(1:m+2*r+1,1:r)=imgn(1:m+2*r+1,r+1:2*r); %扩展左边界 sigma_d=2;
3 Q. G7 k. C& Z0 x! a0 R; fsigma_r=0.1;
/ N; @- t0 E6 g5 M. I. g[x,y] = meshgrid(-r:r,-r:r);
% Y. o) u& s; E$ ]/ J8 G/ Lw1=exp(-(x.^2+y.^2)/(2*sigma_d^2)); %以距离作为自变量高斯滤波器 h=waitbar(0,'wait...');6 R# q7 J+ r5 B: a( H
for i=r+1:m+r
2 Z: r# q5 ~6 T. n0 x8 \for j=r+1:n+r
: m. Y8 \" L1 T) n
4 |2 i- F" }' Z) h( g" Ew2=exp(-(imgn(i-r:i+r,j-r:j+r)-imgn(i,j)).^2/(2*sigma_r^2)); %以周围和当前像素灰度差值作为自变量的高斯滤波器9 R7 j+ B' o3 n0 s& b
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. a/ [$ r$ B# s( W' w& F6 N) Y
close(h) figure;
4 N8 u+ L% M1 H1 T7 f, B3 g' d8 Pimshow(mat2gray(imgn(r+1:m+r,r+1:n+r)));
6 U: G2 g0 x" j4 d3 M* y
5 Q9 v( b1 V+ F% q
& \' m% [# F; }7 L! a
|