EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
基于双边滤波的图像处理,为什么会输出两个黑框?以下代码clear all;4 O. {5 u2 g( w) S, ]( \
close all;/ G6 d1 p F0 }7 A
clc; img=imread('t_2.jpg');) ?7 r$ T" R* h- U6 l, X" _6 Y
img=mat2gray(img);
" m" N: G9 z6 a% v- k: n[m n]=size(img);6 _% h* S4 }3 d7 j; e
%imshow(img); r=10; %模板半径/ ]# R; B0 l8 D1 K
imgn=zeros(m+2*r+1,n+2*r+1);1 }2 t- t4 ~, m8 D+ k
img=imgn(r+1:m+r,r+1:n+r);
5 |' \; a& z4 ^! C j4 Timgn(1:r,r+1:n+r)=img(1:r,1:n); %扩展上边界! q D0 g+ f4 ]! ?- N
imgn(1:m+r,n+r+1:n+2*r+1)=imgn(1:m+r,n:n+r); %扩展右边界4 G2 h% u4 V: D9 X
imgn(m+r+1:m+2*r+1,r+1:n+2*r+1)=imgn(m:m+r,r+1:n+2*r+1); %扩展下边界4 w* W4 I) P- E: o, ?2 u( [3 s- H! {7 _9 |
imgn(1:m+2*r+1,1:r)=imgn(1:m+2*r+1,r+1:2*r); %扩展左边界 sigma_d=2;& G; W$ M8 J* F! {7 k
sigma_r=0.1;
$ Z; h) O5 @1 W: d[x,y] = meshgrid(-r:r,-r:r);+ U2 e& w n$ I$ x5 ?
w1=exp(-(x.^2+y.^2)/(2*sigma_d^2)); %以距离作为自变量高斯滤波器 h=waitbar(0,'wait...');
g# U. R- ]+ o9 _8 k* Mfor i=r+1:m+r; P0 k4 H* ?# c* Q
for j=r+1:n+r9 Y0 z R7 d8 {# u% F
; k- f" I- d3 {7 [0 |2 Pw2=exp(-(imgn(i-r:i+r,j-r:j+r)-imgn(i,j)).^2/(2*sigma_r^2)); %以周围和当前像素灰度差值作为自变量的高斯滤波器4 Z/ e6 r: Y. P5 y r
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
- X5 y3 Z/ e7 n5 Rclose(h) figure;: p, O" x0 `+ u$ h7 n3 Q3 e' l
imshow(mat2gray(imgn(r+1:m+r,r+1:n+r))); ) l( t3 J+ l& D$ s' C: \' S
j$ W! t2 f y
% g4 j6 e+ F4 |4 W; S. l- @8 V1 [
|