首页 > 编程知识 正文

matlab sort(matlab香农编码程序流程图)

时间:2023-05-05 09:54:44 阅读:73194 作者:3056

1、读取图像

imread ) )函数导入图像时,m文件和图像位于同一目录中,因此采用相对路径。

img=imread('1.png ); 2、统计灰度值

imhist ) )函数,用[ 0,255 ]统计图像的灰度值,用size统计每个灰度值出现的概率)函数用于计算图像的大小。

num=imhist(img; [m,n]=size(img ); px=num /(完美玫瑰) 3、计算图像的源熵

I=-log2(px ); HX=I .* px; hx(isnan ) hx ) )=0; entropy=sum(result ) fprintf )图像的源熵=%f(n ),entropy ); 4、对图像进行香农编码,实验代码见附录

(1)将各灰度值出现的概率按降序排列

px=sort(px,' descend ' ); )2)累计概率的计算

(3)求码长

公式Li=-log(p ) si ) ) I=1,2,…

)4)求平均码长

用公式运送L=p(si ) li

)5)求码字

用二进制表示p(si ),将小数点以下的li比特作为符号si的符号。

-------------附录

clc,clear; %图像的源熵img=imread('1.png ); num=imhist(img; [m,n]=size(img ); px=num /(完美玫瑰); I=-log2(px ); HX=I .* px; hx(isnan ) hx ) )=0; entropy=sum(hx ) %香农码j=max ) px; px=sort(px,' descend ' ); L=length(px; AveL=0; 求出for i=1:l %累积概率F=0; fork=1:I-1if(I==1) px )1)=0; F=0; ELSEpx(1)=j; endf=fpx(k; end fprintf (累积概率=%f(n ),f ); %代码长度if(I==1) l=fix(-log2 ) j ) ) 1; y=Zeros(L; ELSEL=fix(-log2 ) px (I ) ) 1; y=检测bin (f,l ); end fprintf ('代码长度=%fn ',l ); DISP(y; %求平均代码长度的avel=avelpx(I ) * L; DISP ((平均代码长度(f(n )、AveL ) ); 函数y=dectobin (in num,n )从十进制小数到二进制小数的转换(num是输入的十进制小数) n是指定转换后的二进制小数位数count=0; Record=Zeros(1,n ); for k=1:Ncount=count 1; num=num * 2; %将小数转换为二进制,用2取整数ifnum1record(count )=1; num=num - 1; else记录(计数)=0; endif (计数) break; 索引=记录;

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。