数字图像处理(十二)最大熵算法
创始人
2024-02-12 21:32:04

文章目录

  • 前言
  • 一、熵是什么?
    • 1.信息量如何计算?
    • 2.熵如何计算?
  • 二、最大熵方法
    • 1.设计思想
    • 2.算法步骤
    • 3.C++代码
    • 4.实验结果
  • 参考资料


前言

在图像分析中,通常需要将所关心的目标从图像中提取出来,这种从图像中某个特定区域与其他部分进行分离并提取出来的处理,就是图像分割。所以图像分割处理实际上就是区分图像中的“前景目标”和“背景”,所以通常又称之为图像的二值处理。之前我们已经介绍过基于图像灰度分布的阈值方法和大津二值化算法。今天我们再介绍一种二值化算法:最大熵方法。

一、熵是什么?

  是信息论中对不确定性的度量,是对数据中所包含信息量大小的度量。熵取最大值时,就表明获得的信息量最大。
信息量:信息量有大有小。比如太阳从东边升起,这是一个确定的事件,没有一点信息量;比如说某人买了一张彩票,有99%的概率会中奖,那这个事情信息量就很大,因为本来概率很小很小的事情变得很确定了。

1.信息量如何计算?

  一个事件的信息量就是这个事件发生的概率的负对数。
例如,符号xxx出现的概率为p(x)p(x)p(x),则符号xxx的自信息量III为I=−logp(x)I=-logp(x)I=−logp(x)

2.熵如何计算?

  假设符号集有nnn个符号,每个符号出现的概率为p(xi)p(x_i)p(xi​),则符号集的信息熵为H=−∑i=1np(xi)logp(xi)H=-\sum_{i=1}^np(x_i)logp(x_i)H=−i=1∑n​p(xi​)logp(xi​)
可以得到一个结论:当p(x1)=p(x2)=⋯=p(xn)p(x_1)=p(x_2)=\cdots=p(x_n)p(x1​)=p(x2​)=⋯=p(xn​)时熵取最大值。

二、最大熵方法

1.设计思想

最大熵方法的设计思想是:选择适当的阈值将图像分为两类,两类的平均熵之和最大时,可以从图像中获得最大信息量,以此来确定最佳阈值。

2.算法步骤

  1. 求出图像中的所有像素的分布概率p0,p1,⋯,p255p_0,p_1,\cdots,p_{255}p0​,p1​,⋯,p255​(图像的灰度分布范围为[0,255])pi=NiNimagep_i=\frac{N_i}{N_{image}}pi​=Nimage​Ni​​其中,NiN_iNi​为灰度值为iii的像素个数;NimageN_{image}Nimage​为图像的总像素数;
  2. 给定一个初始阈值Th=Th0Th=Th_0Th=Th0​,Th∈[0,255]Th\in[0,255]Th∈[0,255];将图像分为C1C_1C1​和C2C_2C2​两类;
  3. 分别计算两个类的平均相对熵E1=−∑i=0Th(pi/pTh)⋅ln(pi/pTh)E_1=-\sum_{i=0}^{Th}(p_i/p_{Th})\cdot ln(p_i/p_{Th})E1​=−i=0∑Th​(pi​/pTh​)⋅ln(pi​/pTh​)E2=−∑i=Th+1255(pi/(1−pTh))⋅ln(pi/(1−pTh))E_2=-\sum_{i=Th+1}^{255}(pi/(1-p_{Th}))\cdot ln(p_i/(1-p_{Th}))E2​=−i=Th+1∑255​(pi/(1−pTh​))⋅ln(pi​/(1−pTh​))其中pTh=∑i=0Thpip_{Th}=\sum_{i=0}^{Th}p_ipTh​=∑i=0Th​pi​;
  4. 当E1+E2E_1+E_2E1​+E2​之和为最大值时,此时的ThThTh为最佳阈值Th∗Th^*Th∗,此时满足图像中的信息量最大。

3.C++代码

/* 最大熵算法 */
int main()
{cv::Mat image = cv::imread("Lena.bmp");cv::Mat gray_image = cv::Mat::zeros(image.size(), CV_8UC1);cv::cvtColor(image, gray_image, cv::COLOR_BGR2GRAY);int height = gray_image.rows;int width = gray_image.cols;// 计算像素分布概率float p[256] = { 0 };for (int row = 0; row < height; row++){for (int col = 0; col < width; col++){p[gray_image.at(row, col)] = p[gray_image.at(row, col)] + 1;}}for (int i = 0; i < 256; i++){p[i] = p[i] / (height*width);}//保存E_1+E_2float E[256] = { 0.0 };//遍历所有的像素值int index = 0; //最大值的索引for (int th = 0; th < 256; th++){// 计算p_Thfloat p_Th = 0.0;for (int i = 0; i < th+1; i++){p_Th += p[i];}// 计算E_1float E_1 = 0.0, E_2 = 0.0;for (int i = 0; i < th + 1; i++){if (fabs(p_Th) < 1e-6){E_1 = 0;}else{E_1 += -(p[i] / p_Th) * log(p[i] / p_Th + 1e-6);}}for (int j = th + 1; j < 256; j++){if (fabs(1 - p_Th) < 1e-6){E_2 = 0;}else{E_2 += -(p[j] / (1 - p_Th))*log(p[j] / (1 - p_Th)+1e-6);}}if ((E_1 + E_2) > E[index]){index = th;}E[th] = E_1+E_2;}// 进行二值化cv::Mat output_image = cv::Mat::zeros(height, width, CV_8UC1);for (int row = 0; row < height; row++){for (int col = 0; col < width; col++){if (gray_image.at(row, col) > index){output_image.at(row, col) = 255;}else{output_image.at(row, col) = 0;}}}cv::imshow("input-image", gray_image);cv::imshow("output-image", output_image);cv::waitKey(0);return 0;
}

关于代码的几点说明:

  1. 因为除数可能是0,所以要对p_Th进行为0判断。可以参考C++ float、double判断是否等于0,1-p_Th同理。
  2. 因为log()函数括号内可能取到0,从而出现负无穷的情况,所以加上一个很小的整数1e-6,避免出现负无穷的情况。

4.实验结果

在这里插入图片描述

参考资料

1.数字图像处理基础.朱虹.

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...