整个系统采用模块化设计,包括数据预处理模块、一阶求导模块、高斯滤波模块、兴趣值计算模块、阈值比较模块和输出数据处理模块。在最前端,采用大小为256×256的ROM储存整个灰度图像,灰度图像是由MATLAB将RGB图像转变而成,再将MATLAB中的灰度图矩阵以coe格式文件保存并导入到ROM中。然后通过数据预处理模块控制ROM的地址,让ROM发送数据到预处理模块,然后经数据预处理模块对图像边缘进行处理,这个过程即对图像信息的预处理。随后数据预处理模块将处理后的灰度信息数据输出到一阶求导模块进行两个方向的求导,在求导完成后,将求导结果IX 和IY通过乘法器得出IX2 、IY2和IX IY并输出,这整个阶段由一阶求导模块完成。接下来一阶求导模块将每个点的IX2 、IY2和IX IY输出到高斯滤波模块进行高斯滤波,以消除矩形窗口带来的噪声影响,并将滤波后的值输出给兴趣值计算模块和阈值比较模块求出每个点的响应值R,并将R与阈值进行对比,若R大于阈值,则该点即是图像中的角点,并以高电平1输出,将不是角点的像素点以低电平0输出,这样就将一幅灰度图转化为一幅二值图像。接下来,由一个与储存灰度信息的ROM一样大小的RAM接收兴趣值计算与阈值比较模块的结果,将得到的二值图像储存起来。最后将RAM中的数据发送到电脑上,用MATLAB读出并通过处理将灰度图中的角点用RGB颜色标记出来。在设计中,由于整个工程中模块之间对于时序的要求较高,因此为了避免在时序出错,则将不输出的状态均置为高阻态,这样不仅在仿真时便于检查出错误所在,而且对于各模块衔接的设计也有帮助。
FPGA视频图像角点特征提取算法的硬件实现方法研究(5):http://www.youerw.com/tongxin/lunwen_89923.html