【Web】用遗传算法实现图像边缘提取

1.项目说明

这是自己写着玩的一个小项目,结合了遗传算法和图像分割的算法,实现了图像的边缘提取。图像分割的算法采用了大津阈值法,在该算法中,改造成使用遗传算法来寻找最佳阈值。该项目通过每隔1秒刷新界面的方式实时展示边缘提取的过程,并通过动态图表的方式展示每次遗传算法算出的最佳阈值。

2.效果展示

效果展示

3.环境配置

  • 本项目采用HTML/CSS/JS编写,请使用chrome/firefox等主流浏览器查看。
  • 由于很多浏览器存在禁止跨域访问的问题,因此我把该项目部署到了服务器上。具体使用到的工具是tomcat。部署到服务器上后,直接点击starter.html即可运行。

4.算法知识介绍

  1. 大津阈值法
    最大类间方差法是由日本学者大津于1979年提出的,是一种自适应的阈值确定的方法,又叫大津法,简称OTSU。它是按图像的灰度特性,将图像分成背景和目标2部分。背景和目标之间的类间方差越大,说明构成图像的2部分的差别越大,当部分目标错分为背景或部分背景错分为目标都会导致2部分差别变小。因此,使类间方差最大的分割意味着错分概率最小。对于图像I(x,y),前景(即目标)和背景的分割阈值记作T,属于前景的像素点数占整幅图像的比例记为ω0,其平均灰度μ0;背景像素点数占整幅图像的比例为ω1,其平均灰度为μ1。图像的总平均灰度记为μ,类间方差记为g。假设图像的背景较暗,并且图像的大小为M×N,图像中像素的灰度值小于阈值T的像素个数记作N0,像素灰度大于阈值T的像素个数记作N1,则有:
          ω0=N0/ M×N (1)
          ω1=N1/ M×N (2)
          N0+N1=M×N (3)
          ω0+ω1=1 (4)
          μ=ω0*μ0+ω1*μ1 (5)
          g=ω0(μ0-μ)^2+ω1(μ1-μ)^2 (6)
    将式(5)代入式(6),得到等价公式:
    g=ω0ω1(μ0-μ1)^2 (7)
    采用遍历的方法得到使类间方差最大的阈值T,即为所求。
  2. 遗传算法
    种群(Population):生物的进化以群体的形式进行,这样的一个群体称为种群。
    个体:组成种群的单个生物。
    基因 ( Gene ) :一个遗传因子。
    染色体 ( Chromosome ) :包含一组的基因。
    生存竞争,适者生存:对环境适应度高的、牛B的个体参与繁殖的机会比较多,后代就会越来越多。适应度低的个体参与繁殖的机会比较少,后代就会越来越少。
    遗传与变异:新个体会遗传父母双方各一部分的基因,同时有一定的概率发生基因变异。

    简单说来就是:繁殖过程,会发生基因交叉( Crossover )基因突变 ( Mutation ) ,适应度( Fitness )低的个体会被逐步淘汰,而适应度高的个体会越来越多。那么经过N代的自然选择后,保存下来的个体都是适应度很高的,其中很可能包含史上产生的适应度最高的那个个体。

    借鉴生物进化论,遗传算法将要解决的问题模拟成一个生物进化的过程,通过复制、交叉、突变等操作产生下一代的解,并逐步淘汰掉适应度函数值低的解,增加适应度函数值高的解。这样进化N代后就很有可能会进化出适应度函数值很高的个体。

5.代码实现

1.创建一个类,用来实现遗传算法的交叉,突变,产生下一代操作

var Genetic=function(src){
   
    this.count=1000;//迭代次数
    this.curchromo=new Array();//初始种群
    this.nextchromo=new Array();//更新后种群
    this.popnum=4;//初始化种群个数
    this.genenum=8;//基因位数
    this.myfun=myfun;
    this.crossrate=0.8;
    this.muterate=0.1;
    
  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值