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

📄 code2.m

📁 matlab写的lzw和huffman的编码
💻 M
字号:
img1=imread('lenna.bmp');
A=double(img1);
  C=floor(A./5);
 rate2=be_count2(C);%调用计算图象灰度(分成52段)直方图函数
 rate=be_count(C);%调用计算图象灰度直方图函数
 add_rate2=rate2;
for i=2:52
    add_rate2(i)=add_rate2(i)+add_rate2(i-1);
    %累积直方图
end
   img3=uint8(C);
   std=[zeros(1,9),0.1,zeros(1,9),0.2,zeros(1,10),0.3,zeros(1,10),0.3,zeros(1,9),0.1];%规定化直方图
   add_std=[zeros(1,9),0.1,zeros(1,9),0.3,zeros(1,10),0.6,zeros(1,10),0.9,zeros(1,9),1];%"累计"规定化直方图


   t=[0.1,0.3,0.6,0.9,1];
    for j=1:4
    for i=1:52 
       if add_rate2(i)<=t(j)&add_rate2(i+1)>=t(j)
           if abs(add_rate2(i)-t(j))<=abs(add_rate2(i+1)-t(j))  T(j)=i;
           else  T(j)=i+1;
           end
       end            
   end
end
 %---------------------组映射------
    for j=1:256
      for i=1:256
         k=C(i,j)+1;%k为1--52的数,表示A(i,j)所属的段号(分段的下标)
         if k<=T(1)%映射到0--45
                         C(i,j)=C(i,j).*(45/T(1));
             elseif k<=T(2)%映射到46--95
                              C(i,j)=C(i,j).*(95/T(2));
                              if   C(i,j)<46  C(i,j)=46; end
                 elseif k<=T(3)%映射到96--150
                                   C(i,j)=C(i,j).*(150/T(3));
                                   if   C(i,j)<96  C(i,j)=96; end
                     elseif k<=T(4)%映射到151--205
                                       C(i,j)=C(i,j)*(205/T(4));
                                       if   C(i,j)<151 C(i,j)=151; end
                                  elseif   k<=42  
                                          C(i,j)=205; 
                                      else C(i,j)=C(i,j)*5;
                              end
                         
      end
 end
 K=floor(C);
 k=be_count(K);%调用计算均衡化后的图象灰度直方图函数
 img4=uint8(C);
 subplot(2,2,1);plot(rate);
 subplot(2,2,3);plot(k);
 subplot(2,2,2);imshow(img3);title('分段原图');
 subplot(2,2,4);imshow(img4);title('组映射规定化');

⌨️ 快捷键说明

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