matlab香农编码「建议收藏」

matlab香农编码「建议收藏」1、读入图像使用imread()函数读入图像,由于m文件和图像放在同一目录下,故采用相对路径。img=imread(‘1.png’);2、统计灰度值使用imhist()函数,对图像的灰度值在[0,255]上做统计,统计每个灰度值出现的概率size()函数用来计算图像的大小。num=imhist(img);[m,n]=size(img);px=num/(m*n)…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

在这里插入图片描述
1、读入图像
使用imread()函数读入图像,由于m文件和图像放在同一目录下,故采用相对路径。

img = imread('1.png');

2、统计灰度值
使用imhist()函数,对图像的灰度值在[0,255]上做统计,统计每个灰度值出现的概率size()函数用来计算图像的大小。

num = imhist(img);
[m,n] = size(img);
px = num / (m*n)

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 / (m*n);
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;  
    for k = 1:i-1
        if (i == 1)
            px(1) = 0;F = 0; 
        else
            px(1) = j;
        end
        F = F + px(k);
    end
    fprintf('累加概率=%f\n',F);
    %求码长
    if (i == 1)
        L = fix(-log2(j)) + 1;  
        y = zeros(L); 
    else
        L = fix(-log2(px(i))) + 1;
        y = dectobin(F,L);
    end
    fprintf('码长=%f\n',L);
    disp(y);
     %求平均码长
    AveL = AveL + px(i) * L; 
disp('-------------------------')
end  
fprintf('平均码长=%f\n',AveL);
function y = dectobin(innum,N)
%十进制小数转换为二进制数
%num为输入的十进制小数
%N为指定转换后二进制的位数
count = 0;
record = zeros(1,N);
for k = 1:N
count = count+1;
num = num * 2;%小数转换为二进制,2取整
    if num > 1
        record(count) = 1;
        num = num - 1;
    else
       record(count) = 0;    
    end
    if(count > N)
        break;
    end
end
y = record;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/195098.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • CSS——06扩展:高级

    CSS——06扩展:高级人生苦短,要学就只学有用的【前端教学-CSS-高阶技巧】CSS样式初始CSS高级技巧目标理解能说出元素显示隐藏最常见的写法能说出精灵图产生的目的能说出去除图片底侧空白缝隙的方法应用能写出最常见的鼠标样式能使用精灵图技术,这个技术比较重要能用滑动门做导航栏案例,这个技术比较重要1.元素的显示与隐藏目的让一个元素在页面中消失或者显示出来场景类似网站广告,当我们点击关闭就不见了,但是我们重新刷新页面,会重新出现!1.1display显示(重点)…

  • jar 解压war_war包解压命令

    jar 解压war_war包解压命令文章来源:java实现可压缩或解压缩WAR文件packageutils;importjava.io.BufferedInputStream;importjava.io.BufferedOutputStream;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;impo…

  • 电脑快速切换ip软件(好用的换ip软件)

    切换IP软件,切换电脑手机IP如此简单大家在工作和生活中肯定会时不时遇到需要换IP的情况,为了预防需要换IP的时候束手无策,小编在此给大家介绍一款专门用来换IP的软件。打开搜索引擎,不管是百度,狗搜还是360,只要在上面搜索“换IP软件”,立马就会出现非常多的换IP的品牌,有免费的也有付费的,功能都没什么区别,就是换IP。卖IP的这么多,说明换IP的市场还是非常大的!不管你是做什么行业,网络推…

  • 常用电平转换电路的方法有_双击电平转换单级电路

    常用电平转换电路的方法有_双击电平转换单级电路电平转换在电路应用中屡见不鲜,方案设计也是五花八门,本文中整理了一些常见的电平转换电路,区别于成本功耗等因素的不同适用于不同的应用场景,读者可以用作参考,根据实际项目需求加以更改。1、上拉电阻加二极管方案(低成本)本方案适用于输入信号电平大于输出信号电平的转换电路上2、适用于输入信号大于输出信号的电平转换电路上,三极管选型要求:PNP三极管的饱和压降尽可能小,否则可能导致转换异常3、适用于大部分应用场景。属于典型应用。很多模块设计上都会采用这样的方案,成本低,而且转换的可靠性好4、2级反相

  • Java中的map集合顺序如何与添加顺序一样

    Java中的map集合顺序如何与添加顺序一样一般使用map用的最多的就是hashmap,但是hashmap里面的元素是不按添加顺序的,那么除了使用hashmap外,还有什么map接口的实现类可以用呢?这里有2个,treeMap和linkedHashMap,但是,要达到我们的要求:按添加顺序保存元素的,就只有LinkedHashMap。下面看运行的代码。packagecom.lxk.collectionTest;impor…

  • php_network_getaddresses: getaddrinfo failed

    php_network_getaddresses: getaddrinfo failed

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号