图像霍夫曼编码与解码以及熵,平均码长,冗余度的计算

  DIP上机报告
题        目:数字图像处理上机报告(第4次)
学        校:  中国地质大学(武汉)   
指 导  老 师:****************************
姓        名:*****************************
班 级  序 号:          071112-06         
注:给定的文件夹中只需运行test脚本就可以得到结果,从workspace中看到相应的数据
4.2图像的霍夫曼编码与解码
题目要求:
          对图2实施哈夫曼编码和解码,计算图象熵,平均码长和 冗余度;
                     
算法设计:
1.遍历图像,统计各个像素灰度值的概率
2.出概率最小的两个,在最小概率所代表的灰度值编码中加1,在另一个较小的概率所代表的灰度值编码中加0
3.合并两个概率,成为一个新的元素,如此重复下去,直到最后剩两个元素
4.进行编码的逆过程,即解码过程
5.计算相应的数据
数控转塔冲床模具
程序代码:
    运行代码:
clear
in=[2,2,3,5,0,0,5,5,
    5,4,1,1,2,2,1,5,
    4,6,5,5,7,2,2,3,
    5,2,2,2,3,4,4,4,
    6,2,1,4,1,1,2,2,
    1,5,7,6,5,5,7,2,
    2,4,4,1,2,2,1,5,
    2,3,1,2,2,1,5,0];
[p,out] = gailv( in );
[code] = Huffman(0:7,p);            %进行霍夫曼编码
[Coded_Img]=Encode(in,code);        %对图像进行编码
[H,L,R]=GetInfo(code);              %计算熵、平均码长、冗余度
[Img]=Decode(Coded_Img,code);      %对图像进行解码
图像各像素灰度的概率计算:
function[ p,out ]=gailv( in )
[M,N]=size(in);
云pout = zeros(4,8);
p = zeros(1,8);
for i=1:8
    out(1,i)=i-1;
end
for i=1:M
    for j=1:N
        for k=1:8玻璃纤维滤筒
            if in(i,j) == out(1,k)
                out(2,k)=out(2,k)+1;
            end
        end
    end
end
for i=1:8标本盒
    out(3,i)=out(2,i)/(M*N);
    p(1,i)=out(2,i)/(M*N);
end
end
霍夫曼编码过程:
function [code_out] = Huffman(s,p)
利乐包[Ms,Ns]=size(s);
if (Ms==1)
    sig=s';
else
    sig=s;
end
%s为各元素名称 p为各元素概率
[Ms,Ns]=size(sig);
[Mp,Np]=size(p);
if (Ms~=Np)
    return;
end视觉定位系统
code=cell(Ms,4);%建立编码cell
code_out=cell(Ms,3);%建立输出cell
coding=cell(Ms,2);%建立编码过程中用到的cell
for i=1:Ms
    code{i,1}=sig(i,:);%第一列为元素名称
    code{i,2}=[];%第二列为编码
    code{i,3}=p(i);%第三列为元素概率
    code{i,4}=[];%第四列为元素概率排行

本文发布于:2024-09-23 02:14:15,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/219080.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:编码   概率   灰度   元素   计算   运行   图像
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议