⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 func_huffman_encode.m

📁 EZW matlab 源码用于图像压缩试验
💻 M
字号:
function img_ezw_stream_bit = func_huffman_encode(significance_map, refinement);

%  significance map: a string array containing significace map data ('p','n','z' and 't')
%  refinement: a string array containing refinement data ('0' and '1')
%
%  img_ezw_stream_bit: resulting bitstream ('0' and '1')
%
%  Copyright 2002  Paschalis Tsiaflakis, Jan Vangorp
%  Revision 1.0  10/11/2002 19.00u

img_ezw_stream_bit = [];
strings = size(significance_map,1);

for i = 1:strings,
    % insert significance map using Huffman
    index = 1;
    while(index <= size(significance_map,2) & ~strcmp(significance_map(i,index),' ')),
        if(strcmp(significance_map(i,index),'t')),
            img_ezw_stream_bit = [img_ezw_stream_bit '0'];
        elseif(strcmp(significance_map(i,index),'z')),
            img_ezw_stream_bit = [img_ezw_stream_bit '10'];
        elseif(strcmp(significance_map(i,index),'n')),
            img_ezw_stream_bit = [img_ezw_stream_bit '110'];
        else
            img_ezw_stream_bit = [img_ezw_stream_bit '1110'];
        end
        index = index + 1;
    end
    % insert seperator
    img_ezw_stream_bit = [img_ezw_stream_bit '1111'];
    refine = size(strrep(refinement(i,:), ' ', ''),2);
    % insert length of refinement (20 bits)
    img_ezw_stream_bit = [img_ezw_stream_bit strrep(char(dec2bin(refine,20)), ' ', '')];
    % insert refinement
    img_ezw_stream_bit = [img_ezw_stream_bit strrep(refinement(i,:), ' ', '')];
end

% append end of stream
img_ezw_stream_bit = [img_ezw_stream_bit '11111'];

% stringlength should be multiple of 8: append zeros
% ASCII code for '0' is 48
append = 8 - mod(size(img_ezw_stream_bit,2), 8);
img_ezw_stream_bit = [img_ezw_stream_bit char(ones(1,append)*48)];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -