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;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • unity安装后续添加模块

    unity安装后续添加模块unitybuildsettingtargetplatform缺少一些选项(linux,mac)unity官方解决方案如下但是unityhub没有addmodule选项前往unity官网下载,找到对应unity版本,点击Releasenotes即可下载对应安装包

    2022年6月27日
    30
  • js三目运算符多条表达式_递归算法js

    js三目运算符多条表达式_递归算法js表达式Q?A:B在Q求值为TRUE时的值为A,在Q求值为FALSE时的值为B。例如下面判断奇数偶数的例子: varnumbuer=5; if(numbuer%2!=0){ document.write(“该数为奇数”); } else{ document.write(“该数为偶数”); }改写为三元表达式时…

    2025年7月5日
    0
  • 离线数仓和实时数仓架构与设计

    离线数仓和实时数仓架构与设计前言:离线数仓和实时数仓架构与设计讲解离线数仓和实时数仓架构与设计一、数仓架构演变(场景驱动)二、离线大数据架构三、离线数仓分层四、离线大数据架构典型案例1、Lambda架构1.Lambda架构2.Lambda架构进一步了解3.Lambda架构典型案例4.Lambda架构典型案例(有赞广告团,基于Druid)5.Lambda架构存在的问题2、Kappa架构1.Kappa架构典型案例2.Kappa架构典型案例(一Kylin为例)3.Kappa架构的重新处理过程3、Lambda架构vsKappa架构的对比

    2022年5月10日
    45
  • NLP系列笔记:通俗理解LDA主题模型

    NLP系列笔记:通俗理解LDA主题模型0前言    印象中,最开始听说“LDA”这个名词,是缘于rickjin在2013年3月写的一个LDA科普系列,叫LDA数学八卦,我当时一直想看来着,记得还打印过一次,但不知是因为这篇文档的前序铺垫太长(现在才意识到这些“铺垫”都是深刻理解LDA的基础,但如果没有人帮助初学者提纲挈领、把握主次、理清思路,则很容易陷入LDA的细枝末节之中),还是因为其中的数学推导细节太多,导致一直没有完整看完…

    2022年8月11日
    3
  • mybatiscodehelperpro 2.9.6激活码【2021最新】「建议收藏」

    (mybatiscodehelperpro 2.9.6激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~1PA3AFINM4-eyJsaWNlb…

    2022年3月31日
    998
  • intellij idea激活码2021(JetBrains全家桶)「建议收藏」

    (intellij idea激活码2021)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html41MD9IQHZL-eyJsaWNlbnNlSWQi…

    2022年3月30日
    452

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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