论文部分内容阅读
混合蛙跳算法(SFLA)是一种启发式群体进化算法,具有高效的计算性能和优良的全局搜索能力,已成为解决大规模优化问题很好的方法。通常算法用软件实现,但根据便携式、移动式的设备的需求,如果将智能算法移植到嵌入式系统中,可以有效地提升设备的处理能力。因此本文研究了在FPGA上实现SFLA算法的技术,将设计电路用于图像处理,取得了较好的效果。本文分析了SFLA的计算过程,将算法分为蛙的适应值存储、划分蛙子群、子群内部比较、更新替换、种群比较五个步骤。根据算法步骤设计了SFLA的FPGA实现方案,确定蛙数据的表示方法,将蛙地址、蛙数据、蛙适应值合并存储,通过改变存储地址输入顺序实现子群划分,使用比较器依据更新规则替换掉最差的蛙变量,设计了状态机作为控制模块完成了迭代计算,最终得到全局最优解。本文使用VHDL语言在VIVADO平台上实现SFLA的设计,并利用MODESIM进行联合仿真,以sphere测试函数作为优化目标,验证SFLA的FPGA设计方案的功能正确性。然后将SFLA的FPGA实现方案应用到图像分割中,选用大津算法作为阈值评估函数,依据大津算法的流程,设计了灰度直方图统计、OTSU参数计算、适应值计算三个模块并完成了系统电路设计,以大津算法作为评判标准,SFLA作为寻优过程,通过20个初始值采用4*5的分组方式,在迭代8次过程中找到最佳的灰度阈值,仿真结果与MATLAB的计算结果一致,验证了应用方案的正确性。在xc7x010clh400-1芯片上,SFLA模块占用743个slices,时钟处理速度可达62.5MHz。阈值寻优整体占用6499个slices,从输入数据到灰度统计结束需要16384个时钟周期,从灰度统计结束到找到最佳阈值需要12513个时钟周期。