clear all; %clf reset; % Setup data image_list = mGetLeftImageFileList; image_total = size(image_list,1); %size_list = zeros( 1, image_total ); %MSE_list = zeros( 1, image_total ); %signal_list = zeros( 1, image_total ); %noise_list = zeros( 1, image_total ); %SNR_Results = ones( image_total+1, 1 )*NaN; Rate_Results = ones( image_total+1, 1 )*NaN; draw = 0; Rate_total = 0; RLE_list = []; for image_count = 1:image_total image_name = deblank( image_list( image_count,: ) ) image = pgmRead( sprintf( '../images/%s', image_name) ); if draw figure( 1 ); mShowImage( image ); end image_size = prod( size( image ) ); size_list( image_count ) = image_size; M = 8; bit_total = 0; current_level = image; Current_Size = size( current_level ); reconstructed_level = zeros( size( image ) ); while rem( Current_Size, 2 ) == zeros( 1, 2 ) next_level = mSubsampleAverage( current_level ); super_next_level = mSupersampleAverage( next_level ); level_diff = current_level - super_next_level; Current_Size Level_Rate = mComputeEntropy( level_diff ) Level_Bits = ceil( Level_Rate*prod( Current_Size ) ); bit_total = bit_total + Level_Bits; current_level = next_level; Current_Size = size( current_level ); end Current_Size Level_Rate = mComputeEntropy( current_level ) Level_Bits = ceil( Level_Rate*prod( Current_Size ) ); bit_total = bit_total + Level_Bits; Rate = bit_total / prod( size( image ) ) Rate_total = Rate_total + Rate; Rate_Results( image_count ) = Rate; if draw figure( 2); mShowImage(reconstructed_image); drawnow; end end Rate_Results = [ NaN, NaN; [ 1:image_total NaN ]' Rate_Results ] Average_Rate = Rate_total / image_total