📄 levelsetbandadaptive.m
字号:
function phi = levelsetbandadaptive( im, d_it, m_it, m_name, phi )
% LEVELSETBANDADAPTIVE Segment the image using adaptive algorithm
% LEVELSETBANDADAPTIVE( im, d_it, m_it, m_name, phi )
% Segment the image im using level sets, given that the zero-level
% level-set is given implicitly by phi. The current segmented
% image is displayed every d_it iterations and written to disk
% every m_iterations with name m_name*.png.
% constants
global ITERATIONS;
delta_t = 0.001;
BAND_ITERATIONS = 100;
BAND_WIDTH = 2;
% calculate the stopping function
K_I = edgestop( im, 3, 2 );
% keep track of iterations
iterations = 0;
while( iterations < ITERATIONS )
% determine the narrow band points
[ x, y ] = find( isfront( phi ) );
front = [ x, y ];
[ x, y ] = find( isband( phi, front, BAND_WIDTH ) );
band = [ x, y ];
% update the narrow band for BAND_ITERATIONS
for kk = 1 : BAND_ITERATIONS;
% display current iteration
fprintf( 1, '%d\n', iterations );
% display the segmented image every 'd_it' iterations
if( mod( iterations, d_it ) == 0 )
disp( 'Displaying segmented image' );
segim = createimage( im, phi );
imshow( segim ); drawnow;
end;
% write current segmented image to file every 'm_it'
% iterations
if( mod( iterations, m_it ) == 0 )
disp( 'Saving movie frame to file' );
segim = createimage( im, phi );
filename = strcat( m_name, sprintf( '%06d', ( iterations / m_it ) + 1 ), '.png' );
imwrite( segim, filename );
end;
% calculate the speed, extend it, and update phi
speed = calcspeed( phi, K_I, front );
speed = extendspeedband( speed, front, band );
phi = phi - delta_t .* speed;
% increment number of iterations
iterations = iterations + 1;
end;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -