基于遗传算法和大津阈值分割法实现的图像分割

Theheartoflove

发布日期: 2019-05-25 16:36:47 浏览量: 1432
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

一、简述

本实验采用遗传算法和大津阈值分割法确定图像分割的最佳阈值,从而对图像进行二值化分割。

二、大津阈值分割法

在计算机视觉和图像处理中,大津二值化法用来自动对基于聚类的图像进行二值化。或者说,将一个灰度图像退化为二值图像。

算法假定该图像根据双模直方图(前景像素和背景像素)把包含两类像素,于是它要计算能将两类分开的最佳阈值,使得它们的类内方差最小;由于两两平方距离恒定,所以即它们的类间方差最大。因此,大津二值化法粗略的来说就是一维Fisher判别分析的离散化模拟。

三、遗传算法

遗传算法(英语:genetic algorithm (GA) )是计算数学中用于解决最佳化的搜索算法,是进化算法的一种。进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传、突变、自然选择以及杂交等。

遗传算法通常实现方式为一种计算机模拟。对于一个最优化问题,一定数量的候选解(称为个体)可抽象表示为染色体,使种群向更好的解进化。传统上,解用二进制表示(即0和1的串),但也可以用其他表示方法。进化从完全随机个体的种群开始,之后一代一代发生。在每一代中评价整个种群的适应度,从当前种群中随机地选择多个个体(基于它们的适应度),通过自然选择和突变产生新的生命种群,该种群在算法的下一次迭代中成为当前种群。

3.1 算法

  • 选择初始生命种群

  • 循环

  • 评价种群中的个体适应度

  • 以比例原则(分数高的挑中机率也较高)选择产生下一个种群(轮盘法(roulette wheel selection)、竞争法(tournament selection)及等级轮盘法(Rank Based Wheel Selection))。不仅仅挑分数最高的的原因是这么做可能收敛到局部的最佳点,而非整体的

  • 改变该种群(交叉和变异)

  • 直到停止循环的条件满足

最简单的遗传算法将染色体表示为一个数位串,数值变量也可以表示成整数,或者实数(浮点数)。算法中的杂交和突变都是在字节串上进行的,所以所谓的整数或者实数表示也一定要转化为数位形式。例如一个变量的形式是实数,其范围是0~1,而要求的精度是0.001,那么可以用10个数位表示:0000000000表示0,1111111111表示1。那么0110001110就代表0.398。

在遗传算法里,精英选择是一种非常成功的产生新个体的策略,它是把最好的若干个个体作为精英直接带入下一代个体中,而不经过任何改变。

通过并行计算实现遗传算法一般有两种,一种是所谓粗糙并行遗传算法,即一个计算单元包含一个种群;而另一种是所谓精细并行遗传算法,每一个计算单元处理一个染色体个体。

遗传算法有时候还引入其他变量,例如在实时优化问题中,可以在适应度函数中引入时间相关性和干扰。

四、实验思路

4.1 大致思路

  • 计算待分割图像的图像灰度直方图

  • 对图像的灰度值进行编码,随机产生M个初始种群

  • 根据OTSU算法计算每个个体的适应度值

  • 建立种群,进行一定数量的遗传操作, 包括顺次执行的选择操作、 交叉操作和变异操作

  • 选择操作(自然选择)

  • 将当代种群中的个体按照适应度值由大到小选择前M个个体,将他们复制到下一代种群中。同时使用随机的方式,保留一定比例落后的个体,让其存活,将他们复制到下一代种群中

  • 交叉操作(繁殖)
    随机选出父体和母体,进行交叉操作,类比染色体的交叉,随机选择交叉点。交叉完成的新个体补充到下一代种群中,直到种群数量足够为止

  • 变异操作(基因变异)
    将上述交叉操作产生的种群中的个体的变异率P进行变化,如某一个体的某一个基因进行突变

  • 进行多次迭代,直到种群进化了一定数量的代数以后,选择其最优先的个体

  • 优秀个体转换成分割阈值,处理图像,显示效果

4.2 编码思考

如何建立灰度图和染色体的联系?

灰度图中,每个像素点的灰度值从0到256,二进制是8比特位,我将八个比特位看成一个染色体,每一个比特位就是一个基因点。

如何考虑选择下一代种群?

首先先把种群中的每一个个体计算适应度,借助OTSU算法,可以得出类内方差最小的值,通过此得出适应度,适应度的大小即可表示个体的优劣程度。但不能只选出色的个体,有些不好的个体可能会产生优质的下一代个体,因此在选择的时候,考虑首先选择前百分比a的优秀个体,剩下的个体中,随机选取比例b的个体幸存,其余淘汰。

如何考虑变异?

考虑到真实的环境中变异的可能性比较小,所以设定了一个变异的概率来控制变异的可能性,同时保证每个基因变异的可能性是一样的,这里也结合考虑过结合阈值来说的话,变异高位就可能导致相差太大,但最后的实验结果是没什么差别,反而对所有基因一视同仁思路更加简单。

五、实验结果

原图与结果图对比

上传的附件 cloud_download 基于遗传算法和大津阈值分割法实现的图像分割.7z ( 63.45kb, 27次下载 )
error_outline 下载需要11点积分

keyboard_arrow_left上一篇 : 基于C#和Sql Server 2012实现的新闻管理系统 基于80x86汇编的英文填字游戏程序 : 下一篇keyboard_arrow_right



Theheartoflove
2019-05-25 16:36:26
基于遗传算法和大津阈值分割法实现的图像分割
Fangao.mc
2019-11-04 18:58:25
想问下这个是用什么语言实现的
路饼c
2020-05-28 19:00:01
三笠!
pili
2020-07-31 20:48:49
基于遗传算法和大津阈值分割法实现的图像分割
pili
2020-07-31 20:49:31
是matlab还是python
RDnmy
2020-11-01 10:37:09
运行出现一些问题,方便解答一下吗?qq:1399129867

发送私信

昨日渐多,明日渐少,这就是人生

13
文章数
26
评论数
最近文章
eject