matlab练习程序(Renyi熵)
2013-05-10 20:48
435 查看
Renyi熵是对通常的香农熵的扩展,算是q阶广义熵。公式如下:
![](http://images.cnitblog.com/blog/340413/201305/10202318-7fc4033b2ea34da6a799a090263add89.png)
其中P和香农熵公式中的P一样,是概率。当q=1时公式退化为香农熵公式。(如何证明?看wiki吧)
有用此公式寻找图像最佳二值化阈值的。
首先定义前景区域A,背景区域B。
那么前景与背景区域像素相应的Renyi熵就如下定义:
![](http://images.cnitblog.com/blog/340413/201305/10203336-e14da047375b431a864776501d67a38d.png)
其中k是当前取的灰度级,P(A)是像素在A区域的概率,P(B)类似。当然,这里说区域,不是指空间区域,是像素灰度级区域。
最后图像Renyi熵求最佳阈值定义如下:
![](http://images.cnitblog.com/blog/340413/201305/10203733-b363f1e91a8e4d43b0ca4136acfe555c.png)
这里得到的K就是分割阈值。
分割效果如下:
原图:
![](http://images.cnitblog.com/blog/340413/201305/10204252-287f882dfd9d465fada1ff846fab0abb.jpg)
分割后:
![](http://images.cnitblog.com/blog/340413/201305/10204423-e0aad0cc013d4696b052382e6c6d8d1c.jpg)
在编程时还需要确定阶数q,我取的是2。
matlab代码如下:
![](http://images.cnitblog.com/blog/340413/201305/10202318-7fc4033b2ea34da6a799a090263add89.png)
其中P和香农熵公式中的P一样,是概率。当q=1时公式退化为香农熵公式。(如何证明?看wiki吧)
有用此公式寻找图像最佳二值化阈值的。
首先定义前景区域A,背景区域B。
那么前景与背景区域像素相应的Renyi熵就如下定义:
![](http://images.cnitblog.com/blog/340413/201305/10203336-e14da047375b431a864776501d67a38d.png)
其中k是当前取的灰度级,P(A)是像素在A区域的概率,P(B)类似。当然,这里说区域,不是指空间区域,是像素灰度级区域。
最后图像Renyi熵求最佳阈值定义如下:
![](http://images.cnitblog.com/blog/340413/201305/10203733-b363f1e91a8e4d43b0ca4136acfe555c.png)
这里得到的K就是分割阈值。
分割效果如下:
原图:
![](http://images.cnitblog.com/blog/340413/201305/10204252-287f882dfd9d465fada1ff846fab0abb.jpg)
分割后:
![](http://images.cnitblog.com/blog/340413/201305/10204423-e0aad0cc013d4696b052382e6c6d8d1c.jpg)
在编程时还需要确定阶数q,我取的是2。
matlab代码如下:
clear all; close all; clc; img=imread('lena.jpg'); [m n]=size(img); imshow(img) Hist=imhist(img); q=2; H=[]; for k=2:256 PA=sum(Hist(1:k-1)); PB=sum(Hist(k:255)); Pa=Hist(1:k-1)/PA; Pb=Hist(k:256)/PB; HA=(1/1-q)*log(sum(Pa.^q)); HB=(1/1-q)*log(sum(Pb.^q)); H=[H HA+HB]; end [junk level]=max(H); imgn=im2bw(mat2gray(img),level/256); figure; imshow(imgn)
相关文章推荐
- matlab练习程序(异或分类)
- matlab练习程序(单源最短路径Bellman-Ford)
- matlab练习程序(图像旋转,双线性插值)
- matlab练习程序(非负矩阵分解)
- matlab练习程序(中值滤波)
- matlab练习程序(各向异性扩散)
- matlab练习程序(PCA<SVD>)
- matlab练习程序(matlab调用c/c++)
- matlab练习程序(c/c++调用matlab<dll>)
- matlab练习程序(生成高斯图像)
- matlab练习程序(meanshift图像聚类)
- matlab练习程序(makelut/applylut)
- matlab练习程序(图像错切)
- matlab练习程序(正态分布贝叶斯分类)
- matlab练习程序(RGB2CMY、CMY2RGB)
- matlab练习程序(演化策略ES)
- matlab练习程序(矩阵生成无向网络图)
- matlab练习程序(LBP,局部二值模型)
- matlab练习程序(三阶张量T-QR分解)
- matlab练习程序(单源最短路径Dijkstra)