beltramiÂ˲¨Æ÷
beltramiÂ˲¨Æ÷resim = beltrami2D(im, 30, 0.01); % beltramiÂ˲¨
function Fim = beltrami2D(im, num_iter, delta_t)
% beltramiÂ˲¨Æ÷ a NonLinear filter
% º¯ÊýÊäÈë:
% im - »Ò¶ÈͼÏñ (MxN).
% num_iter - µü´ú´ÎÊý
% delta_t- ʱ¼ä²½³¤
%
% º¯ÊýÊä³ö:
% Fim - (Filtered) image.
if ~isa(im,'double')
im = double(im)/255;
end
% ÌݶȾØÕó
hx=0.5.*; % ˮƽ
hy=0.5.*; % ´¹Ö±
% ¶ÈÁ¿ÕÅÁ¿
hxx=;% ˮƽ
hyy=;% ´¹Ö±
% xy
hxy=;
Ik=im;% ¸³Öµ
for i=1:num_iter
Ixx=imfilter(Ik,hxx,'conv');% Â˲¨
Iyy=imfilter(Ik,hyy,'conv');% Â˲¨
Ix=imfilter(Ik,hx,'conv');% Â˲¨
Iy=imfilter(Ik,hy,'conv');% Â˲¨
Ixy=imfilter(Ik,hxy,'conv');% Â˲¨
% ¶ÔÌݶÈϽµ·½³Ì»ý·Ö
Ikx=Ik+delta_t.*((Ixx.*(ones(size(Iy))+Iy.^2)+...
Iyy.*(ones(size(Ix))+Ix.^2)-2.*Ix.*Iy.*Ixy)./(ones(size(Ix))+Ix.^2+Iy.^2).^2);
Fim= Ikx;
Ik = Ikx;
end
Ò³:
[1]