2020-05-30

图像压缩编码``

%初始化
clear all;
clc;%读入彩色图片,并转化为灰度图片
Pic_TMP = imread('PK.bmp');
Pic_TMP = rgb2gray(Pic_TMP);%统计图片的尺寸信息
Row = size(Pic_TMP, 1);
Col = size(Pic_TMP, 2);
%选取8阶灰度,其他所有灰度均归并到此8阶灰度上Gray_Level = [16 48 80 112 144 176 208 240];
%初始化计数变量,用于统计灰度级数量压缩后各灰度被使用的次数
Gray_PixelCount(1:8) = 0;
%将Pic_TMP各像素灰度级别调整到Gray_Level上
%调节灰度的同时统计各灰度被使用次数
%灰度压缩后的灰度矩阵赋给变量
Pic_8LvlPic_8Lvl(1:Row, 1:Col) = uint8(0);
for m = 1:Row   
 for n = 1:Col    
     tmp = floor(double(Pic_TMP(m,n))/32) + 1;        Pic_8Lvl(m,n) = Gray_Level(tmp);        Gray_PixelCount(tmp) = Gray_PixelCount(tmp) + 1;  
       end
     end
     %统计8种灰度各自被使用到的概率
     p = Gray_PixelCount/(Row * Col);
     %哈夫曼编码
     p=sort(p,'descend');%降序排列
     H=sum(-p.*log2(p));%求得信息熵
     n=length(p);%离散信源长度
     q=p;
     m=zeros(n-1,n);
     for i=1:n-1%对第一行进行编码  
       [q,l]=sort(q);    
       m(i,:)=[l(1:n-i+1),zeros(1,i-1)];   
        q=[q(1)+q(2),q(3:n),1];
        end
        for i=1:n-1    
        c(i,:)=blanks(n*n);
        end
        c(n-1,n)='1';
        c(n-1,2*n)='0';
        for i=2:n-1    
        c(n-i,1:n-1)=c(n-i+1,n*(find(m(n-i+1,:)==1))-(n-2):n*(find(m(n-i+1,:)==1)));   
         c(n-i,n)='1';%在支路的第一个元素最后补1 
            c(n-i,n+1:2*n-1)=c(n-i,1:n-1);    
            c(n-i,2*n)='0';%在支路的第一个元素最后补0 
               for j=1:i-1    
                   c(n-i,(j+1)*n+1:(j+2)*n)=c(n-i+1,n*(find(m(n-i+1,:)==j+1)-1)+1:n*find(m(n-i+1,:)==j+1));%分配码字  
                     end
                   end
                   for i=1:n   
                    h(i,1:n)=c(1,n*(find(m(1,:)==i)-1)+1:find(m(1,:)==i)*n); %进行编码    
                    ll(i)=length(find(abs(h(i,:))~=32));%计算每一个哈夫曼编码的长度
                    end
                    %提取8*8d的图片
                    a= Pic_8Lvl(24:31,9:16);%提取灰度图片中的一个8*8的部分图像
                     A=a';%行列转置
                     %z字形重排
                     y_img_index=1;
                     for dim_sum=2:1:32    if(mod(dim_sum,2)==0)     
                        for i=1:1:8      
                              if dim_sum-i<=8 && dim_sum-i>0                
                              imgtemp(y_img_index) = A(i,dim_sum-i);           
                                   y_img_index=y_img_index+1;      
                                         end    
                                             end
                                                 else   
                                                      for i=1:1:8      
                                                            if dim_sum-i<=8 && dim_sum-i>0          
                                                                  imgtemp(y_img_index) = A(dim_sum-i,i);                y_img_index=y_img_index+1;        
                                                                      end   
                                                                           end    
                                                                           end
                                                                           end
       %子图z字形重排的编码I2=im2double(imgtemp);
       rna=cell(size(I2));
       a2=size(I2);
       L1=length(rna);
       for i=1:length(rna) 
          if imgtemp(i)==16      
            rna{1,i}='1'; 
               elseif imgtemp(i)==48      
                 rna{1,i}='01';   
                  elseif imgtemp(i)==80
                          rna{1,i}='001'; 
                             elseif I2(i)==112      
                                rna{1,i}='0001';    
                                elseif I2(i)==144    
                                     rna{1,i}='00000';   
                                      elseif I2(i)==176         rna{1,i}='000010';   
                                       elseif I2(i)==208         rna{1,i}='0000110';  
                                         elseif I2(i)==240         rna{1,i}='0000111';    
                                         end
                                         end
                                         %显示原图subplot(2,2,1);imshow(Pic_TMP);title('灰度图'); subplot(2,2,2);bar(Gray_Level, p);title('灰度压缩后归一化灰度直方图');
                                         subplot(2,2,3);imshow(A);title('8*8的子图'); 
  disp('8阶灰度值')
  disp(Gray_Level);
  disp('信源概率')
  disp(p); 
   disp('编码序列')
   disp(h);
    disp('z字形重新排列')
    disp(imgtemp);  
   disp('z字形重新排列对应的编码')
   disp(rna);
    cs=strjoin(rna);
    disp('子图z字形重新排列的编码序列')
    disp(cs);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
大学生在线租房平台管理系统按照操作主体分为管理员和用户。管理员的功能包括报修管理、报修评价管理、字典管理、房东管理、房屋管理、房屋收藏管理、房屋留言管理、房屋租赁管理、租房论坛管理、公告信息管理、留言板管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 大学生在线租房平台管理系统可以提高大学生在线租房平台信息管理问题的解决效率,优化大学生在线租房平台信息处理流程,保证大学生在线租房平台信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理公告,管理大学生在线租房平台信息,包括房屋管理,培训管理,报修管理,薪资管理等,可以管理公告。 房屋管理界面,管理员在房屋管理界面中可以对界面中显示,可以对房屋信息的房屋状态进行查看,可以添加新的房屋信息等。报修管理界面,管理员在报修管理界面中查看报修种类信息,报修描述信息,新增报修信息等。公告管理界面,管理员在公告管理界面中新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
基于hal库的OLED显示屏驱动C语言实现源码.zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值