主权项 |
一种基于遗传算法的矩形检测方法,其特征在于包括如下步骤:(1)边缘检测步骤:对图像进行边缘检测,获得由图像中所有边缘点组成的边缘空间;(2)选择库生成步骤,包括下述子步骤:(2.1)每次以均匀随机不放回方式从边缘空间中抽四个边缘点;(2.2)个体表示步骤,用四个边缘点表示一个个体,记为{(x<sub>1</sub>,y<sub>1</sub>),(x<sub>2</sub>,y<sub>2</sub>),(x<sub>3</sub>,y<sub>3</sub>),(x<sub>4</sub>,y<sub>4</sub>)},其中x<sub>1</sub>‑x<sub>4</sub>为各边缘点横坐标,y<sub>1</sub>‑y<sub>4</sub>为各边缘点纵坐标;将个体中每个边缘点视为一个基因,每个个体按从左至右顺序,有一号、二号、三号、四号基因位;将置于i号基因位的基因称为第i个基因,i为从1到4的整数;将离直角坐标系原点最近的基因置于一号基因位上,其它三个基因按照顺时针或逆时针顺序依次位于二号、三号和四号基因位上;当离原点最近的基因多于一个时,则将位于最上方基因置于一号基因位上;(2.3)执行子步骤(2.1)、(2.2)共S次,S取值一般为20到900之间,去除其中有三个或三个以上的边缘点在一条直线的个体,生成选择库;(3)交叉操作步骤,包括如下子步骤:(3.1)从选择库中,以均匀随机和放回的方式,选择两个个体;(3.2)随机生成整数i、j,将两个个体的第i个基因的横纵坐标分别转换为二进制编码;将两个个体的第i个基因的横纵坐标第j位及以后的编码段,分别进行交叉替换,将交叉替换后的二进制编码转换回十进制,形成两个新的基因;j是从1到N的整数,N是基因坐标二进制编码位数;(3.4)判别所述两个新的基因是否均为边缘空间中的点,是则转子步骤(3.5);否则将不是边缘空间中的点的基因,变更为边缘空间中距离该基因最近、且未参加交叉替换的基因,转子步骤(3.5);(3.5)对交叉或变更后的两个个体执行子步骤(2.2)操作,然后转子步骤(3.6);(3.6)在重新排列基因顺序的两个个体中,判别各个个体是否有两个或两个以上的基因重复,是则将该个体删除,转步骤(3.1);否则转步骤(3.7);(3.7)计算重新排列基因顺序的两个个体适应度,判别是否至少有一个的适应度为1,是则将该个体作为检测出的矩形,结束;否则转步骤(4)。(4)变异操作步骤,包括如下子步骤:(4.1)以均匀随机和放回的方式,从选择库中选择一个个体,随机选择该个体上的第i个基因(x<sub>i</sub>,y<sub>i</sub>);(4.2)生成两个随机整数,分别对变异阈值thr取余,产生一个突变向量(δx,δy);其中变异阈值thr是大于0的整数;(4.3)以(x<sub>i</sub>+δx,y<sub>i</sub>+δy)为变异基因p,判断其是否为边缘空间中的点,是则转子步骤(4.4),否则将其变更为边缘空间中距离该点最近、且未参加变异的点;(4.4)对变异后的个体执行子步骤(2.2)操作,然后转子步骤(4.5);(4.5)判别重新排列基因顺序的个体是否有两个或两个以上的基因重复,是则将该个体删除,转子步骤(4.1);否则转步骤(5);(5)计算个体适应度,判别该个体的适应度是否为1,是则将该个体作为检测出的矩形,结束;否则转步骤(6);(6)判别交叉和变异操作次数的总和是否达到或超过T,是则表明没有检测到矩形,结束;否则转步骤(3);其T是用户自定义的次数值,取值为50到500之间。 |