设计与仿真打开FPGA的子图像提取大门

2014-06-16 10:23 来源:电子信息网 作者:娣雾儿

工业生产的自动化系统中,通过计算机视觉和子图像处理技术来实现产品的质量监测和控制,已逐渐成为一种强有力的应用技术。线阵CCD图像传感器应用于产品尺寸测量与非接触尺寸测量、分类、条形码识别等众多领域。图像检测技术具备一个高速子图像提取和输出模块,采用FPGA-EP3C25F256C8和CCD线阵图像传感器RL1024P,实现线阵CCD图像检测系统中图像提取和输出功能。

1 子图像提取模块的设计

子图像提取模块的功能可描述为:采用FPGA器件实现,根据串行输入的黑白图像和同步信号,提取该图像中设定尺寸大小的子图像。假设输入图像大小为i * j,某一像素点的坐标位置为(X,Y),要取出子图像的大小为m * n,则用c 代码描述为:for(b=0;b

根据系统设计的要求,线阵CCD 图像采集模块采用串行的方式输出1×1024 像素的一行图像,子图像提取模块接收该图像数据、缓冲、再输出16×16 像素的子图像。子图像提取模块的外部端口,如图1 所示。主要信号有:像素同步时钟信号CCD_CLK、像素数据CCD_DATA、当前输入像素的坐标CCD_ADDR[90] ;另外,N_RST 和SYS_CLK 为系统提供的复位信号和处理时钟信号。其中,每个CCD_CLK 的上升沿出现时CCD_DATA 像素有效,且该像素所在的位置为CCD_ADDR[90] 值。

仿真1

为了实现每个CCD_CLK 周期内均输出一个子图像,SYS_CLK应该为CCD_CLK 的10 倍左右。

本文采用“图像转置缓冲区”的方法来实现子图像提取模块。“图像转置缓冲区”是一个按行写入(更新)、按列读出的一个RAM 缓冲区。在FPGA 内部设置一个1024 个单元的RAM 缓冲区,每个单元的位宽为16bits.线阵CCD 采集模块输出的线阵图像与子图像的关系,如图2 所示。其中,第0 行表示图像的当前行,第N 行为历史行,每行有1024 个像素,按照p0 至p1023 的像素顺序输出。假设当前CCD_CLK 输入的像素为第0行的p16 像素,则其对应的16X16 子图像为图中的阴影部分。

仿真2

“图像转置缓冲区”RAM 块存储图像的结构,如图3 所示。

1 2 > 
FPGA 仿真

相关阅读

暂无数据

一周热门