EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
基于双边滤波的图像处理,为什么会输出两个黑框?以下代码clear all;
, ^8 M3 N0 l& N/ q& U; S( | [4 zclose all;8 n; F$ A8 L5 m/ D# z# B
clc; img=imread('t_2.jpg');+ o3 L9 H1 b1 k- V3 ]
img=mat2gray(img);
9 b# J9 X$ p8 I% ~2 }" A0 i[m n]=size(img);: Z) c# {2 K+ K$ K7 {' Y
%imshow(img); r=10; %模板半径
/ o3 N t7 l: w; F% C7 m. T3 N# Kimgn=zeros(m+2*r+1,n+2*r+1);
1 [2 S2 L+ T# [. v$ T; Gimg=imgn(r+1:m+r,r+1:n+r);+ m( C4 V: S& C3 F9 h( J
imgn(1:r,r+1:n+r)=img(1:r,1:n); %扩展上边界
. m6 J; H' g* g. Y! f( Zimgn(1:m+r,n+r+1:n+2*r+1)=imgn(1:m+r,n:n+r); %扩展右边界* t- D; E" ^2 J" J; W& 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); %扩展下边界- G- @% w, M! c+ F# z6 u
imgn(1:m+2*r+1,1:r)=imgn(1:m+2*r+1,r+1:2*r); %扩展左边界 sigma_d=2;
! l: `9 g0 {% {0 m6 Wsigma_r=0.1;
+ q9 ]& @8 I2 _: S0 ], y[x,y] = meshgrid(-r:r,-r:r);
/ Y/ b; h* q( Hw1=exp(-(x.^2+y.^2)/(2*sigma_d^2)); %以距离作为自变量高斯滤波器 h=waitbar(0,'wait...');
- G, z: u. d) k% m; u2 B. Mfor i=r+1:m+r. V" H- w) n5 z, J! v+ ?) b
for j=r+1:n+r
( g8 E& L8 F: X0 |, V7 L, F: \2 H
w2=exp(-(imgn(i-r:i+r,j-r:j+r)-imgn(i,j)).^2/(2*sigma_r^2)); %以周围和当前像素灰度差值作为自变量的高斯滤波器4 P/ ^4 m1 x$ P9 }! X
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 W) C8 ^& V" ^8 zclose(h) figure;
* `$ o5 k% ?; T% a$ qimshow(mat2gray(imgn(r+1:m+r,r+1:n+r)));
5 `* X, S) v8 A9 I) t
L" Y, n, K5 v. z/ t9 @8 |* F
8 [: g: R! z' [! l |