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

📄 run_compress.m

📁 ROI的ezw和huffman混合压缩编码
💻 M
字号:
function [Imageratio] = Run_Compress(bpp,xy,waveletLevel)
if nargin == 0
    bpp = 0.25;
    waveletLevel = 5;
end
if nargin < 3
    waveletLevel = 5;
end
%装载并显示原始图像
[filename, pathname] = uigetfile( ...
{'*.bmp;*.jpg;*.jpeg;','图像文件 (*.bmp;*.jpg;*.jpeg)';
    '*.bmp',  '位图文件 (*.bmp)'; ...
    '*.jpg','jpeg图像文件 (*.jpg)'; ...
    '*.jpeg','jpeg图像文件 (*.jpeg)'; ...
}, '选择被压缩图像');
FileFullname=strcat(pathname,filename); %全名
if isequal(filename, 0)                    %文件不存在存在
    return;
end
I = imread(FileFullname);           %读入图像,Image
h = figure('name','原始影像','NumberTitle','off');
imshow(I);
ImSizeOr = prod(size(I));         

if nargin<2
    selection = questdlg('请选择ROI区域',...
                '确定继续操作','Yes','No','Yes');
    if strcmp(selection,'No')
       return;
    end
    [BW,x,y] = roipoly;          %区域选择
else
    x=xy(1,:);
    y=xy(2,:);
    BW = roipoly(I,x,y);
end

figure(h);
hold on;
plot(x,y,'r');
hold off;

ijROI = find(BW==1);
sumROI = length(ijROI);

Imid=I;
%Imid(ijROI)=0;
%imshow(Imid);
imwrite(Imid,'midImg.pgm');            %写入中间图像,用pgm格式

%ezw编码
IezwImgName = uiputfile({'*.ezw','ezw(*.ezw)'},'保存ezw编码...','ezwPart');  %ezw保存对话框
[pathstr,IezwImgName] = fileparts(IezwImgName);%去掉后缀
ezwcodestr=sprintf('ezw midImg %f -l %d -w 0 -h 256 -e %s',bpp,waveletLevel,IezwImgName);
dos(ezwcodestr,'-echo');

%huffman编码
IhuffImgName = uiputfile({'*.mat','MAT文件(*.mat)'}, '保存ROI huffman编码...','huffPart');  %ROI保存对话框
huffImg = I(ijROI);
huffcode=mat2huff(huffImg);
save(IhuffImgName,'huffcode','x','y');

IezwImgName = [IezwImgName '.ezw'];
dir1 = dir(IezwImgName);
dir2 = dir(IhuffImgName);
ImSizeCo = dir1.bytes + dir2.bytes;     %计算压缩两文件的字节数

Imageratio = ImSizeOr/ImSizeCo;
save('imageInfo','I');

⌨️ 快捷键说明

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