工業生產的自動化系統中,通過計算機視覺和子圖像處理技術來實現產品的質量監測和控制,已逐漸成為一種強有力的應用技術。線陣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] 值。
為了實現每個CCD_CLK 周期內均輸出一個子圖像,SYS_CLK應該為CCD_CLK 的10 倍左右。
本文采用“圖像轉置緩沖區”的方法來實現子圖像提取模塊。“圖像轉置緩沖區”是一個按行寫入(更新)、按列讀出的一個RAM 緩沖區。在FPGA 內部設置一個1024 個單元的RAM 緩沖區,每個單元的位寬為16bits.線陣CCD 采集模塊輸出的線陣圖像與子圖像的關系,如圖2 所示。其中,第0 行表示圖像的當前行,第N 行為歷史行,每行有1024 個像素,按照p0 至p1023 的像素順序輸出。假設當前CCD_CLK 輸入的像素為第0行的p16 像素,則其對應的16X16 子圖像為圖中的陰影部分。
“圖像轉置緩沖區”RAM 塊存儲圖像的結構,如圖3 所示。