% ss_segment_summary( filestem ) % --------------------------------------------- % % Component of Scale Space Edges, version 1.2b % % % Mark Dow, last modified May 2003 % University of Oregon % Brain Development Lab / Lewis Center for NeuroImaging % dow@braindev.uoregon.edu % function ss_segment_summary( filestem ) load( [ filestem '_edge_info' ] ); % Individual segment statistics: max_G = max( ep( :, 3 ) ); fprintf('\n Maximum normalized gradient: '); fprintf( '%1.2f', max_G ); fprintf('\n'); seg_length(1:seg_n) = 0; seg_ave_grad(1:seg_n) = 0; seg_ave_scale(1:seg_n) = 0; % For each segment: for i = 1:seg_n % Calculate salience measures. seg_length(i) = seg(i, 2) - seg(i, 1) + 1; % seg_ave_grad(i) = sum( ep( seg(i, 1):seg(i, 2) , 3 ) )/seg_length(i); seg_ave_scale(i) = sum( ep( seg(i, 1):seg(i, 2) , 4 ) )/seg_length(i); G_sum = 0; i_epFirst = seg(i, 1); for i_epSecond = seg(i, 1) + 1 : seg(i, 2) dx = ep( i_epSecond, 1 ) - ep( i_epFirst, 1 ); dy = ep( i_epSecond, 2 ) - ep( i_epFirst, 2 ); if dx == 0 theta_edge = pi/2; else theta_edge = atan(dy/dx); end if dx < 0 theta_edge = theta_edge + pi; end theta_edge = mod( theta_edge + 2*pi + pi/2, 2*pi ); theta_G = ( ( ep( i_epFirst, 5 ) + ep( i_epSecond, 5 ) )/2 ) - theta_edge; G_sum = G_sum + abs( ( ( ep( i_epFirst, 3 ) + ep( i_epSecond, 3 ) )/2 )*cos( theta_G ) ); i_epFirst = i_epSecond; end seg_ave_grad(i) = abs( G_sum/seg_length(i) ); fprintf('\n Salience metrics of edge segment # '); fprintf( '%3d', i ); fprintf(', length '); fprintf( '%3d', seg_length(i) ); fprintf(' gradient '); fprintf( '%1.3f', seg_ave_grad(i) ); fprintf(' ave. scale '); fprintf( '%1.3f', 2^seg_ave_scale(i) ); end % Append average gradient and scale to segment info array. for i = 1:seg_n seg(i,5) = seg_ave_grad(i); seg(i,6) = seg_ave_scale(i); end save( [ filestem '_edge_info' ], 'ep', 'seg', 'node', 'seg_n', 'flim_gray_cropped', 'flim_seg', 'flim_gradient', 'flim_scale' )