图像熵计算

真是为了一个简单的基础概念弄的心力交瘁,请教了一下师姐,但是并没有真的理解,师弟我太笨呀~~所以,我又查熵的中文含义和相关的出处!共勉吧~~

1.信息熵:

利用信息论中信息熵概念,求出任意一个离散信源的熵(平均自信息量)。自信息是一个随机变量,它是指某一信源发出某一消息所含有的信息量。一条信息的信息量和它的不确定性有着直接的关系。所发出的消息不同,它们所含有的信息量也就不同。任何一个消息的自信息量都代表不了信源所包含的平均自信息量。不能作为整个信源的信息测度,因此定义自信息量的数学期望为信源的平均自信息量:

信息熵的意义:信源的信息熵H是从整个信源的统计特性来考虑的。它是从平均意义上来表征信源的总体特性的。对于某特定的信源,其信息熵只有一个。不同的信源因统计特性不同,其熵也不同。信息熵一般用符号H表示,单位是比特。变量的不确定性越大,熵也就越大。

2.图像熵:

2.1.一元灰度熵

图像熵是一种特征的统计形式,它反映了图像中平均信息量的多少。图像的一维熵表示图像中灰度分布的聚集特征所包含的信息量,令Pi 表示图像中灰度值为i的像素所占的比例,则定义灰度图像的一元灰度熵为:

其中Pi是某个灰度在该图像中出现的概率,可由灰度直方图获得。

2.2.二维熵

图像的一维熵可以表示图像灰度分布的聚集特征,却不能反映图像灰度分布的空间特征,为了表征这种空间特征,可以在一维熵的基础上引入能够反映灰度分布空间特征的特征量来组成图像的二维熵。选择图像的邻域灰度均值作为灰度分布的空间特征量,与图像的像素灰度组成特征二元组,记为( i, j ),其中i 表示像素的灰度值(0 <= i <= 255),j 表示邻域灰度均值(0 <= j <= 255):

上式能反应某像素位置上的灰度值与其周围像素灰度分布的综合特征,其中f(i, j)为特征二元组(i, j)出现的频数,N 为图像的尺度,定义离散的图像二维熵为:

构造的图像二维熵可以在图像所包含信息量的前提下,突出反映图像中像素位置的灰度信息和像素邻域内灰度分布的综合特征。

3.源码

[plain] view plaincopy
  1. 1.求一元灰度熵
  2. %方法一
  3. [M,N]=size(im);
  4. temp=zeros(1,256);
  5. %对图像的灰度值在[0,255]上做统计
  6. for m=1:M;
  7. for  n=1:N;
  8. if im(m,n)==0;
  9. i=1;
  10. else
  11. i=im(m,n);
  12. end
  13. temp(i)=temp(i)+1;
  14. end
  15. end
  16. temp=temp./(M*N);
  17. %由熵的定义做计算
  18. result=0;
  19. for  i=1:length(temp)
  20. if temp(i)==0;
  21. result=result;
  22. else
  23. result=result-temp(i)*log2(temp(i));
  24. end
  25. end
  26. %方法二
  27. %求熵值entropy
  28. im=rgb2gray(imread('mubiao.bmp'));
  29. [count,x]=imhist(im);
  30. total=sum(count);
  31. entropy=0;
  32. for i=1:256
  33. p(i)=count(i)/total;
  34. if p(i)~=0
  35. logp(i)=log2(p(i));
  36. entropele=-p(i)*logp(i);
  37. entropy=entropy+entropele;
  38. end
  39. end
  40. 2.求二维熵
  41. %随机生成图像
  42. A=floor(rand(8,8).*255);
  43. [M,N]=size(A);
  44. temp=zeros(1,256);
  45. %对图像的灰度值在[0,255]上做统计
  46. for m=1:M;
  47. for  n=1:N;
  48. if A(m,n)==0;
  49. i=1;
  50. else
  51. i=A(m,n);
  52. end
  53. temp(i)=temp(i)+1;
  54. end
  55. end
  56. temp=temp./(M*N);
  57. %由熵的定义做计算
  58. result=0;
  59. for  i=1:length(temp)
  60. if temp(i)==0;
  61. result=result;
  62. else
  63. result=result-temp(i)*log2(temp(i));
  64. end
  65. end
  66. 3.计算联合熵
  67. %随机生成图像
  68. A=floor(rand(8,8).*255);
  69. B=floor(rand(8,8).*255);
  70. [M,N]=size(A);
  71. temp=zeros(256,256);
  72. %对图像的灰度值成对地做统计
  73. for m=1:M;
  74. for n=1:N;
  75. if  A(m,n)==0;
  76. i=1;
  77. else
  78. i=A(m,n);
  79. end
  80. if B(m,n)==0;
  81. j=1;
  82. else
  83. j=B(m,n);
  84. end
  85. temp(i,j)=temp(i,j)+1;
  86. end
  87. end
  88. temp=temp./(M*N);
  89. %由熵的定义做计算
  90. result=0;
  91. for  i=1:size(temp,1)
  92. for j=1:size(temp,2)
  93. if temp(i,j)==0;
  94. result=result;
  95. else
  96. result=result-temp(i,j)*log2(temp(i,j));
  97. end
  98. end
  99. end

4.Matlab的计算熵的函数

Matlab中的这2个函数分别是计算熵的,entropy计算全局熵,entropyfilt计算局部熵

给定一个灰度图I, entropy(I)的计算方法是,将I直方图化到0-255的bin中,L1规范化,再用 –sum(p*log2(p))来计算整理熵,即

Curhist = Hist(I, 0:255);

Curhist = curhist / sum(curhist);

E = -sum(curhist .* log2(curhist));

entropyfilt选取以各像素点为中心的的n*n(默认n=9)的区域进行熵计算,计算方法同上。该方法可以表示纹理

调用方法如下:

E = entropy(I)

J = entropyfilt(I)
J = entropyfilt(I,NHOOD)

参考来源:

http://www.zhizhihu.com/html/y2010/1367.html

转载于:https://www.cnblogs.com/molakejin/p/5255481.html

paper 38 :entropy相关推荐

  1. SitePoint播客#38:猫的大脑

    Episode 38 of The SitePoint Podcast is now available! This week your hosts are Stephan Segraves (@ss ...

  2. Paper Pal:一个中英文论文及其代码大数据搜索平台

    点击上方蓝字关注我们 Paper Pal:一个中英文论文及其代码大数据搜索平台 余万, 付聿炜, 熊贇, 朱扬勇 1 引言 在开展科研工作的过程中,科研人员需要从大量实时更新的论文中持续地跟踪学术界前 ...

  3. Effective C# 原则38:使用和支持数据绑定(译)

    Effective C# 原则38:使用和支持数据绑定 Item 38: Utilize and Support Data Binding 有经验的Windows程序员一定对写代码从一个控件上取值,以 ...

  4. 笨办法学 Python · 续 练习 38:SQL 简介

    练习 38:SQL 简介 原文:Exercise 38: Introduction To SQL 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 学习如何建模和设计实体数据的最佳 ...

  5. paper reading:Part-based Graph Convolutional Network for Action Recognition

    paper reading:Part-based Graph Convolutional Network for Action Recognition 文章目录 paper reading:Part- ...

  6. paper reading:[renormalization]Semi-supervised Classification with Graph Convolutional Networks

    paper reading:[Renormalization Trick] Semi-supervised classification with graph convolutional networ ...

  7. 剑指offer——面试题38:数字在排序数组中出现的次数

    剑指offer--面试题38:数字在排序数组中出现的次数 20180906整理 Solution1: [注意]先利用二分查找扎到一个值然后再顺序遍历的做法时间复杂度也是O(n)O(n)O(n),代码也 ...

  8. paper 94:视觉领域博客资源1之中国部分

    这是收录的图像视觉领域的博客资源的第一部分,包含:中国内地.香港.台湾 这些名人大家一般都熟悉,本文仅收录了包含较多资料的个人博客,并且有不少更新,还有些名人由于分享的paper.code或者数据集不 ...

  9. Paper翻译:《A Novel Convolutional Neural Network Based Model for Recognition and Classification of App》

    论文名称:<A Novel Convolutional Neural Network Based Model for Recognition and Classification of Appl ...

最新文章

  1. 神经网络中的注意力机制总结及PyTorch实战
  2. AC自动机 HDOJ 5384 Danganronpa
  3. 5页面调用原生相机_React Native与原生通信全梳理(iOS端)
  4. Unity3D学习笔记之四完善Prefab并添加First Person Controller
  5. 基于随机梯度下降法的手写数字识别、epoch是什么、python实现
  6. C#根据网址生成静态页面
  7. Android 实现瀑布流的两种思路
  8. delphi 控件安装
  9. []TLD code run
  10. 熵权法STATA程序(第二版修正)
  11. STM32CubeIDE的一点使用技巧
  12. 编译 LineageOS 源码,并重定义 kernel log
  13. Warring 不建议使用从字符串到‘char *’的转换
  14. 艾司博讯:拼多多机器人客服在哪里
  15. 网络游戏网络封包破解
  16. 禁止MDA对话框的产生
  17. 游戏服务器之存档读档
  18. 别过来,过来我就撕票了!
  19. GGhost一键恢复09.03.08
  20. 如何适配新的iPhone 5分辨率

热门文章

  1. VGG - Very Deep Convolutional Networks for Large-Scale Image Recognition
  2. c语言算法6,c语言6函数和算法.ppt
  3. as cast float server sql_SQL-Server(五)T-SQL语言
  4. 轻松易懂的缓存雪崩、穿透、击穿以及解决方案
  5. [k8s] 第三章 k8s 资源管理
  6. php 删除硬链接,RHCE系列之文件管理----硬链接和软链接
  7. Python实战案例,requests模块,Python实现获取动态图表
  8. Python中的http网络请求,用它就对了
  9. linux版php运行环境,Linux系统搭建PHP运行环境
  10. android 比较两个list,比较两个List的内容是否相等