最近看了下遗传算法,给大家做个简单的示例吧,以下思想全部出于《遗传算法-理论,应用与软件实现》。
示例为关于图像基元的识别,所谓图像基元识别,就是从一幅图像中识别特定形状的图形。如:在下图的右边大图中找到左边小图的位置。

算法思想如下:
待识别模式(小图)可用二维点列P 描述:
P = {p (x 1, y 1) , p (x 2, y 2) , ... , p (x N , yN ) ) }
(x i, y i) 为相对于模式原点的坐标, P (•) 为相应的灰度值, 将模式放大M 倍, 旋转H, 并将
模式原点平移至(x c, y c) , 点列P 变为P*:
P*= 
其中 
对于二值图像,可以定义适应度如下:R = Nb/N.
Nb为点序列中满足P*=P的点的个数,但该适应度函数导向性太弱,为此我们将二值识别图像进行预处理,转化为灰阶数为L的多值形式。(如有需要源码,请Email我,其实网上都有的)
以下为程序测试效果图:

动态跟踪效果图:

总结:遗传算法简单,关键的问题是如何把问题转到遗传算法可以解决的范畴。