paper 38 :entropy
图像熵计算
真是为了一个简单的基础概念弄的心力交瘁,请教了一下师姐,但是并没有真的理解,师弟我太笨呀~~所以,我又查熵的中文含义和相关的出处!共勉吧~~
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.源码
- 1.求一元灰度熵
- %方法一
- [M,N]=size(im);
- temp=zeros(1,256);
- %对图像的灰度值在[0,255]上做统计
- for m=1:M;
- for n=1:N;
- if im(m,n)==0;
- i=1;
- else
- i=im(m,n);
- end
- temp(i)=temp(i)+1;
- end
- end
- temp=temp./(M*N);
- %由熵的定义做计算
- result=0;
- for i=1:length(temp)
- if temp(i)==0;
- result=result;
- else
- result=result-temp(i)*log2(temp(i));
- end
- end
- %方法二
- %求熵值entropy
- im=rgb2gray(imread('mubiao.bmp'));
- [count,x]=imhist(im);
- total=sum(count);
- entropy=0;
- for i=1:256
- p(i)=count(i)/total;
- if p(i)~=0
- logp(i)=log2(p(i));
- entropele=-p(i)*logp(i);
- entropy=entropy+entropele;
- end
- end
- 2.求二维熵
- %随机生成图像
- A=floor(rand(8,8).*255);
- [M,N]=size(A);
- temp=zeros(1,256);
- %对图像的灰度值在[0,255]上做统计
- for m=1:M;
- for n=1:N;
- if A(m,n)==0;
- i=1;
- else
- i=A(m,n);
- end
- temp(i)=temp(i)+1;
- end
- end
- temp=temp./(M*N);
- %由熵的定义做计算
- result=0;
- for i=1:length(temp)
- if temp(i)==0;
- result=result;
- else
- result=result-temp(i)*log2(temp(i));
- end
- end
- 3.计算联合熵
- %随机生成图像
- A=floor(rand(8,8).*255);
- B=floor(rand(8,8).*255);
- [M,N]=size(A);
- temp=zeros(256,256);
- %对图像的灰度值成对地做统计
- for m=1:M;
- for n=1:N;
- if A(m,n)==0;
- i=1;
- else
- i=A(m,n);
- end
- if B(m,n)==0;
- j=1;
- else
- j=B(m,n);
- end
- temp(i,j)=temp(i,j)+1;
- end
- end
- temp=temp./(M*N);
- %由熵的定义做计算
- result=0;
- for i=1:size(temp,1)
- for j=1:size(temp,2)
- if temp(i,j)==0;
- result=result;
- else
- result=result-temp(i,j)*log2(temp(i,j));
- end
- end
- 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
paper 38 :entropy的更多相关文章
- paper 97:异质人脸识别进展的资讯
高新波教授团队异质人脸图像识别研究取得新突破,有望大大降低刑侦过程人力耗费并提高办案效率 近日,西安电子科技大学高新波教授带领的研究团队,在异质人脸图像识别研究领域取得重要进展,其对香 ...
- paper 94:视觉领域博客资源1之中国部分
这是收录的图像视觉领域的博客资源的第一部分,包含:中国内地.香港.台湾 这些名人大家一般都熟悉,本文仅收录了包含较多资料的个人博客,并且有不少更新,还有些名人由于分享的paper.code或者数据集不 ...
- paper 92:图像视觉博客资源2之MIT斯坦福CMU
收录的图像视觉(也包含机器学习等)领域的博客资源的第二部分,包含:美国MIT.斯坦福.CMU三所高校 1)这些名人大家一般都熟悉,本文仅收录了包含较多资料的个人博客,并且有不少更新,还有些名人由于分享 ...
- paper 91:边缘检测近期最新进展的讨论
VALSE QQ群对边缘检测近期最新进展的讨论,内容整理如下: 1)推荐一篇deep learning的文章,该文章大幅度提高了edge detection的精度,在bsds上,将edge detec ...
- paper 86:行人检测资源(上)综述文献【转载,以后使用】
行人检测具有极其广泛的应用:智能辅助驾驶,智能监控,行人分析以及智能机器人等领域.从2005年以来行人检测进入了一个快速的发展阶段,但是也存在很多问题还有待解决,主要还是在性能和速度方面还不能达到一个 ...
- 编写高质量代码改善C#程序的157个建议——建议38:小心闭包中的陷阱
建议38:小心闭包中的陷阱 先看一下下面的代码,设想一下输出的是什么? static void Main(string[] args) { List<Action> lists = new ...
- 任务38:JWT 设计解析及定制
任务38:JWT 设计解析及定制 改造jwt token token的值不放在Authorize里面,而是放在header的token里面 asp.net core的源代码 在Security的下面 ...
- paper sharing :学习特征演化的数据流
特征演化的数据流 数据流学习是近年来机器学习与数据挖掘领域的一个热门的研究方向,数据流的场景和静态数据集的场景最大的一个特点就是数据会发生演化,关于演化数据流的研究大多集中于概念漂移检测(有监督学习) ...
- paper 156:专家主页汇总-计算机视觉-computer vision
持续更新ing~ all *.files come from the author:http://www.cnblogs.com/findumars/p/5009003.html 1 牛人Homepa ...
随机推荐
- Ubuntu 更改默认apt-get源
原文转自:http://zhoushijun.iteye.com/blog/1942475 方法: 1.修改源地址:cp /etc/apt/sources.list /etc/apt/sources. ...
- Linq世界走一走(LINQ TO XML)
前言:Linq to xml是一种使用XML的新方法.从本质上来说,它采用了多种当前使用的XML处理技术,如DOM和XPath,并直接在.NET Framework内将它们组合为一个单一的编程接口.L ...
- Mockups
Balsamiq Mockups 是一款免费的手绘风格的产品原型设计软件,它一经推出就广受好评,它比纸质的产品原型设计图更加方便存储,而且是简约清爽的手绘风格,UI控件支持自动拖拽,并且可以实现自动对 ...
- jQuery实现隔行变色
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- 解决调用context.Session["NAME"]时总出现Object reference not set to an instance of an object.异常的方法
if (context.Session != null) { }
- MSP430之Hello World!
//#include "io430.h" #include "MSP430G2553.h" int main( void ) { volatile unsign ...
- [Logstash]使用详解(转)
Logstash是一款轻量级的日志搜集处理框架,可以方便的把分散的.多样化的日志搜集起来,并进行自定义的处理,然后传输到指定的位置,比如某个服务器或者文件. 本文针对官方文档进行翻译以及实践,希望有更 ...
- Linux主机安全
Linux主机安全 1. 禁用远程登录root. 2.修改ssh默认端口 暂定为3600. 3. 输错三次密码,禁用5分钟. 3.1 非图形界面登录 vim /etc/pam.d/login 在# ...
- 分享一下怎么开发一款图片视频类App,秒拍和prisma
第一步,分解短视频App的功能 我们在秒拍官网看到如此描述: [视频拍摄及导入]支持直接拍摄及导入手机本地的视频 [照片电影]照片专属特效,轻松创作照片电影 [MV特效]10余款全新MV特效,让普通视 ...
- nginx的内存管理
先来看内存池的实现,nginx的内存池实现的非常简单. 这里内存池的一些图表可以看老朱同学的slides : http://blog.zhuzhaoyuan.com/2009/09/nginx-int ...