📄 decompress.m
字号:
%-----------------------------------------------------------------
%---------------------分形解码程序--------------------------
function image_file=decompress(fractal,iterates,size,side)
%image_file 解码图象
%fractal存放分形图象压缩编码信息
%size图象尺寸
%side图象值域块大小
DB_SIDE=side;
N=size;
I=ones(DB_SIDE);
image_width=N;
image_height=N;
image=ones(N);
reduced_image=ones(N/2);
domain_block=zeros(DB_SIDE);
transformed_domain_block=zeros(DB_SIDE);
%上面是初始化部分,定义变量
for iterate=1:iterates
reduced_image=reduce_image(image);
i=0;
for range_y=1:DB_SIDE:image_height
for range_x=1:DB_SIDE:image_width
i=i+1;
x=fractal(i).domain_x;
y=fractal(i).domain_y;
symmetry=fractal(i).symmetry;
s=fractal(i).s;
o=fractal(i).o;
%获取变换参数
if symmetry==0
transformed_domain_block=I*x;
else
domain_block=copy_rectangle(reduced_image,x,y,DB_SIDE);
switch symmetry
case 1
transformed_domain_block=domain_block;
case 2
transformed_domain_block=rot90(domain_block,-1);
case 3
transformed_domain_block=rot90( domain_block,-2);
case 4
transformed_domain_block=rot90(domain_block);
case 5
transformed_domain_block=rot90(domain_block);
transformed_domain_block=fliplr( transformed_domain_block);
case 6
transformed_domain_block=flipud(domain_block);
case 7
transformed_domain_block=rot90(domain_block,-1);
transformed_domain_block=fliplr(domain_block);
case 8
transformed_domain_block=fliplr(domain_block);
end
%------------------------------------------生成R块
transformed_domain_block=s*transformed_domain_block+o*I;
d=mean(mean(domain_block));
r=mean(mean(transformed_domain_block));
for r=1:DB_SIDE
for w=1:DB_SIDE
if transformed_domain_block(r,w)<0
transformed_domain_block(r,w)=0;
else if transformed_domain_block(r,w)>255
transformed_domain_block(r,w)=255;
%最灰度的调整
end
end
end
end
end
%write the map
image=rer(transformed_domain_block,image,range_x,range_y,DB_SIDE);
end
end
end
image_file=uint8(image);
%subplot(1,2,2),
imshow(image_file)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -