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

📄 make_0.m

📁 用Matlab中的Haar和Db9小波对图像进行分解和重构,并在不同阈值下用PNG格式存储重构的图像.
💻 M
字号:
function [cH3,cV3,cD3,cH2,cV2,cD2,cH1,cV1,cD1,count]=make_0(cH3,cV3,cD3,cH2,cV2,cD2,cH1,cV1,cD1,threshold)
% 该函数功能是本课程役计的关键,它完成了对经过三级非标准分解后各分量图矩阵中所有元素数
% 值小于阀值的进行置0处理,为后面进行三级非标准重构原始图像从而实现图像压缩奠定了基础。
% 输入经过非标准分解后颜色分量的各级的水平细节分量、垂直细节分量、对角细节分量和阀值
% threshold其中数字表示非标准处理的级别。输出各分量图矩阵中所有元素数值小于阀值系数置
% 0处理后所对应的各级的水平细节分量、垂直细节分量、对角细节分量,并统计它们系数为0个
% 数count。
threshold_num=str2num(threshold);
count=0;

% 借助临时分量对第三级非标准分解的水平细节分量、垂直细节分量、对角细节分量进行行、列数
% 扩展合成cM_matrix3,并对数值小于阀值系数进行置0处理,并统计矩阵元素数值小于阀值系数的
% 个数。
cM_cA3=cD3
cM_cA3=zeros(size(cM_cA3,1),size(cM_cA3,2));
num=size(cM_cA3,1)*size(cM_cA3,2);
cM_matrix3=[cM_cA3,cH3;cV3,cD3];
cM_size=size(cM_matrix3);
for i=1:cM_size(1)
   for j=1:cM_size(2)
      if abs(cM_matrix3(i,j))<=threshold_num
         count=count+1;
         cM_matrix3(i,j)=0;
      end
   end
end
% 对所合成的cM_matrix3重新分离出置0处理后的水平细节分量、垂直细节分量和对角细节分量,并
% 精确了矩阵元素数值小于阀值系数的数目。
cH3=cM_matrix3;cV3=cM_matrix3;cD3=cM_matrix3;
cH3(1+size(cM_cA3,1):2*size(cM_cA3,1),:)=[];cH3(:,1:size(cM_cA3,2))=[];
cV3(1:size(cM_cA3,1),:)=[];cV3(:,1+size(cM_cA3,2):2*size(cM_cA3,2))=[];
cD3(1:size(cM_cA3,1),:)=[];cD3(:,1:size(cM_cA3,2))=[];
count=count-num;

% 借助临时分量对第二级非标准分解的水平细节分量、垂直细节分量、对角细节分量进行行、列数扩
% 展合成cM_matrix2,并对数值小于阀值系数进行置0处理,并统计矩阵元素数值小于阀值系数的个数。
cM_cA2=cD2
cM_cA2=zeros(size(cM_cA2,1),size(cM_cA2,2));
num=size(cM_cA2,1)*size(cM_cA2,2);
cM_matrix2=[cM_cA2,cH2;cV2,cD2];
cM_size=size(cM_matrix2);
for i=1:cM_size(1)
   for j=1:cM_size(2)
      if abs(cM_matrix2(i,j))<=threshold_num
         count=count+1;
         cM_matrix2(i,j)=0;
      end
   end
end
% 对所合成的cM_matrix2重新分离出置0处理后的水平细节分量、垂直细节分量和对角细节分量,并精
% 确了矩阵元素数值小于阀值系数的数目。
cH2=cM_matrix2;cV2=cM_matrix2;cD2=cM_matrix2;
cH2(1+size(cM_cA2,1):2*size(cM_cA2,1),:)=[];cH2(:,1:size(cM_cA2,2))=[];
cV2(1:size(cM_cA2,1),:)=[];cV2(:,1+size(cM_cA2,2):2*size(cM_cA2,2))=[];
cD2(1:size(cM_cA2,1),:)=[];cD2(:,1:size(cM_cA2,2))=[];
count=count-num;

% 借助临时分量对第一级非标准分解的水平细节分量、垂直细节分量、对角细节分量进行行、列数扩
% 展合成cM_matrix1,并对数值小于阀值系数的元素进行置0处理,且统计矩阵元素数值小于阀值系数
% 的个数。
cM_cA1=cD1
cM_cA1=zeros(size(cM_cA1,1),size(cM_cA1,2));
num=size(cM_cA1,1)*size(cM_cA1,2);
cM_matrix1=[cM_cA1,cH1;cV1,cD1];
cM_size=size(cM_matrix1);
for i=1:cM_size(1)
   for j=1:cM_size(2)
      if abs(cM_matrix1(i,j))<=threshold_num
         count=count+1;
         cM_matrix1(i,j)=0;
      end
   end
end
% 对所合成的cM_matrix1重新分离出置0处理后的水平细节分量、垂直细节分量和对角细节分量,并精
% 确了矩阵元素数值小于阀值系数的数目。
cH1=cM_matrix1;cV1=cM_matrix1;cD1=cM_matrix1;
cH1(1+size(cM_cA1,1):2*size(cM_cA1,1),:)=[];cH1(:,1:size(cM_cA1,2))=[];
cV1(1:size(cM_cA1,1),:)=[];cV1(:,1+size(cM_cA1,2):2*size(cM_cA1,2))=[];
cD1(1:size(cM_cA1,1),:)=[];cD1(:,1:size(cM_cA1,2))=[];
count=count-num;

⌨️ 快捷键说明

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