EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
基于双边滤波的图像处理,为什么会输出两个黑框?以下代码clear all;' U. j" O* J% `. D \7 U
close all;
K$ P9 B; w! }clc; img=imread('t_2.jpg');; w! [9 z, @6 r, x
img=mat2gray(img);$ U: v2 w9 Y0 g$ G+ m
[m n]=size(img);, }$ Z- A {3 o9 g7 n3 d( y
%imshow(img); r=10; %模板半径
% X5 H9 S. Y2 f( }imgn=zeros(m+2*r+1,n+2*r+1); S1 n# b$ W7 `" H5 Z
img=imgn(r+1:m+r,r+1:n+r);
) ~. S" a. _ t d$ f. b3 l1 mimgn(1:r,r+1:n+r)=img(1:r,1:n); %扩展上边界( f. X* j" s; @ T. z
imgn(1:m+r,n+r+1:n+2*r+1)=imgn(1:m+r,n:n+r); %扩展右边界
, [4 c$ a! d( p# aimgn(m+r+1:m+2*r+1,r+1:n+2*r+1)=imgn(m:m+r,r+1:n+2*r+1); %扩展下边界) P" g% ~; q- L* Y( y0 [$ C) b
imgn(1:m+2*r+1,1:r)=imgn(1:m+2*r+1,r+1:2*r); %扩展左边界 sigma_d=2;6 \5 i: E9 p* M, O4 C: I
sigma_r=0.1;$ U; O& \6 X$ s7 u
[x,y] = meshgrid(-r:r,-r:r);% m1 z: X3 _$ l" U. S- u v7 S: t
w1=exp(-(x.^2+y.^2)/(2*sigma_d^2)); %以距离作为自变量高斯滤波器 h=waitbar(0,'wait...');2 U8 d0 \: f' O/ g; y+ c! v
for i=r+1:m+r0 o; a9 s, u* {
for j=r+1:n+r }( V0 O8 `3 x) Z) v; U* p8 y
, F1 ~, f5 S. G# `6 Kw2=exp(-(imgn(i-r:i+r,j-r:j+r)-imgn(i,j)).^2/(2*sigma_r^2)); %以周围和当前像素灰度差值作为自变量的高斯滤波器/ x' `8 r; I* |% |
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# k1 p- V5 y" _
close(h) figure;* }( [- o! d3 E; R
imshow(mat2gray(imgn(r+1:m+r,r+1:n+r))); & o- ]8 p9 J L9 Z3 Y2 _- P) q
; m- Y) I2 @* L9 U" @. T . j. O& l! u F: a% f
|