一種實時圖像序列的幾何校正裝置
1.本發明涉及圖像校正技術領域,特別是涉及一種實時圖像序列的幾何校正裝置。
背景技術:
2.自主導航、自動駕駛、工業檢測等領域,傳感器子系統的選擇和設計直接影響著整個系統的最終性能。相比激光雷達等主動視覺傳感器,以圖像傳感器為代表的被動視覺傳感器,因紋理信息豐富而具有不可替代的顯著優勢,因而也得到越來越多的研究和應用。但是,圖像信息超大的數據量帶來了運算成本和系統功耗的增加,以及實時性的降低,而這也成為影響其應用推廣的不利因素。雙目或多目的圖像傳感器使得該問題被成倍放大,更增加了應用的困難。因此,建立高實時性的校正方法、實現低功耗低成本的校正裝置對于推廣視覺傳感器應用具有重要意義。
3.圖像校正是被動視覺傳感器的一項基礎運算。特別是在雙目立體視覺應用中,雙目圖像序列的標定和校正是雙目立體視覺傳感器開展后端視覺算法的基礎和前提。圖像校正的基本原理是基于光學鏡頭模型,建立輸出圖像像素與輸入圖像像素的映射關系。常規的圖像校正處理方法是先緩存整幀的圖像數據,然后根據計算目標像素在原始圖像中的位置,從存儲介質中依次取出圖像數據進行插值計算,從而得到校正輸出圖像。現有的圖像序列映射技術方案有:(1)通用cpu的gpu方案,該方案中包括了個人電腦、工業電腦、服務器等通用運算單元所采用的方式,該方案本身在價格和功耗上均較高,且需要緩存整幀圖像數據并執行串行映射處理,實時性低;(2)傳統fpga映射方案,需要提前計算映射表,并對映射表進行預處理和存儲,由于映射表數據量較大,常常依賴不同形式接入的ddr存儲器,不但大大增加了緩存資源和系統帶寬的需求,而且帶來硬件成本和功耗的增加。
4.由此可見,現有方案中對于硬件資源有限的嵌入式應用來說是難以實現的,具體表現為:1)如果利用片上存儲介質緩存整幀圖像數據,將需要消耗大量的存儲資源;2)如果緩存整幀圖像數據到ddr存儲介質,則會占用大量的ddr帶寬;3)緩存整幀圖像后才進行圖像校正,增加了圖像處理的延時,實時性降低。
技術實現要素:
5.本發明所要解決的技術問題是提供一種實時圖像序列的幾何校正裝置,能夠以較少的嵌入式硬件資源實現高實時性圖像序列的校正。
6.本發明解決其技術問題所采用的技術方案是:提供一種實時圖像序列的幾何校正裝置,包括:校正系統控制模塊、流水線實時計算模塊、輸入緩存管理模塊、輸入緩存單元和插值計算模塊,所述流水線實時計算模塊用于根據標定的相機參數實時計算輸出圖像像素點的位置坐標相對于輸入圖像像素點的位置坐標;所述輸入緩存單元的輸入端與輸入接口相連,用于緩存輸入圖像數據;所述輸入緩存管理模塊用于根據所述輸入圖像像素點的位置坐標的整數部分管理所述輸入緩存單元中的輸入圖像數據;所述插值計算模塊的輸入端與所述輸入緩存單元的輸出端相連,輸出端與輸出接口相連,用于將所述輸入圖像像素點
的位置坐標的小數部分作為插值計算的權重,對所述輸入圖像數據進行插值計算,得到校正圖像值;所述校正系統控制模塊用于啟動所述流水線實時計算模塊和控制所述輸入緩存管理模塊的數據處理,以完成從輸入畸變圖到輸出校正圖的時序控制。
7.所述輸入接口和輸出接口以流接口作為主模式,同時支持axi接口作為備用模式。
8.所述流水線實時計算模塊通過實時計算輸出圖像像素點的位置坐標相對于輸入圖像像素點的位置坐標,其中,x
′
,y
′
為輸出圖像像素點的歸一化位置坐標,r2=x
′2+y
′2,x
″
,y
″
為輸入圖像像素點的位置坐標,k1~k6為相機的徑向畸變參數,p1,p2為相機的切向畸變參數。
9.所述流水線實時計算模塊為7級流水線實時計算模塊,在計算時對進行分解,分解后的第一級運算包括:其中,x,y為輸出圖像像素點的坐標,z為歸一化系數;第二級運算包括:r2=x
′2+y
′2、m=2x
′
*y
′
和第三級運算包括:和第四級運算包括:和第五級運算包括:和第六級運算包括:kr=k
′
/k
″
,第七級運算包括:和
10.所述輸入緩存管理模塊動態更新所述輸入緩存單元中輸入圖像數據的行范圍,具體為:新的輸出行對應的輸入圖像數據緩存的行范圍產生后,通過排序獲得其最大和最小值,并和上一行范圍對應的最大和最小值進行比較;如果當前行范圍的最小值等于上一行范圍的最小值,則保留最小行的數據;如果當前行范圍的最小值大于上一行范圍的最小值,則刪除小于當前最小行的數據;如果當前行范圍的最大值等于上一行范圍的最大值,則不需要緩存新的輸入圖像數據;如果當前行范圍的最大值大于上一行范圍的最大值,則需要繼續緩存新的輸入圖像數據,直到最大行范圍內的數據已緩存,啟動下一行的數據讀取。
11.所述輸入緩存單元在對輸入圖像數據緩存采用回環更新的方式進行更新,所述回環更新方式分為4個狀態:第一狀態從最低地址開始緩存數據并滿足最大行范圍的存儲需求,當存儲行范圍更新時,進入第二狀態,第二狀態將刪除無用的數據,并釋放低地址空間;當緩存的數據到達緩存地址的最大值時,對應第三狀態,最大行的存儲地址跳轉到緩存的
起始地址,繼續緩存后面的數據,同時進入第四狀態。
12.所述插值計算模塊的輸出端和輸出接口之間還設置有輸出圖像緩存,所述輸出圖像緩存通過快滿標記作為反饋信號提供給所述輸入緩存管理模塊。
13.當快滿標記為低電平,所述輸入緩存管理模塊通過取出所述輸入緩存單元中輸入圖像數據并在所述插值計算模塊中計算得到輸出數據,并通過輸出圖像緩存輸出;當快滿標記為高電平,所述輸入緩存管理模塊停止取數據。
14.當輸出圖像緩存的余量小于深度的一半,則快滿標記為低電平,當輸出圖像緩存的余量大于或等于深度的一半,則快滿標記為高電平;所述深度為第一時鐘周期n和第二時鐘周期m兩個值中的最大值的2倍,所述第一時鐘周期n為快滿標記剛為低電平到所述輸出圖像緩存得到第一個數據的時鐘周期,所述第二時鐘周期m為快滿標記剛為高電平到數據停止寫入所述輸出圖像緩存的時鐘周期。
15.有益效果
16.由于采用了上述的技術方案,本發明與現有技術相比,具有以下的優點和積極效果:
17.本發明針對機器視覺和計算機視覺應用中對相機畸變圖像的校正要求,首先通過標定方法確立圖像采集裝置的內部參數、外部參數和鏡頭畸變參數,然后用硬件加速模塊實時計算目標像素在原始圖像中的位置,并利用雙線性插值實時獲得目標像素值,從而以較少的嵌入式硬件資源實現高實時性圖像序列的校正。
18.本發明綜合考慮模塊的使用場景,提供了流接口和axi可選擇的接口方案,且在算法執行過程中,不與ddr發生數據交換,降低了對ddr的依賴和ddr帶寬占用,減小了外部存儲器,降低硬件成本;本發明在硬件設計中采用了流水線技術,實現了圖像幾何校正算法的實時計算,大大降低了算法主時鐘的時鐘要求;本發明在硬件設計中采用了圖像緩存的自適應優化技術,使圖像幾何校正算法對緩存資源的需求降低,計算延時接近緩存行周期對應的極限值。本發明中使用的實時圖像序列幾何校正方法,可作為一種可應用于大型soc的ip實現方案,可顯著降低soc中的芯片面積,取得較好的經濟效益;同時,本發明也為實時圖像校正算法在嵌入式系統中的部署提供了一種高能效比的實現方法。
附圖說明
19.圖1是本發明實施方式的結構示意圖;
20.圖2是本發明實施方式的工作流程圖;
21.圖3是本發明實施方式中7級流水線并行處理多個像素的示意圖;
22.圖4是本發明實施方式中輸出圖單行對應輸入圖多行的行范圍映射圖;
23.圖5是本發明實施方式中輸入緩存單元的數據更新原理圖;
24.圖6是本發明實施方式中輸出圖像緩存的優化原理圖。
具體實施方式
25.下面結合具體實施例,進一步闡述本發明。應理解,這些實施例僅用于說明本發明而不用于限制本發明的范圍。此外應理解,在閱讀了本發明講授的內容之后,本領域技術人員可以對本發明作各種改動或修改,這些等價形式同樣落于本技術所附權利要求書所限定
的范圍。
26.本發明的實施方式涉及一種實時圖像序列的幾何校正裝置,如圖1所示,包括:校正系統控制模塊、流水線實時計算模塊、輸入緩存管理模塊、輸入緩存單元和插值計算模塊。
27.其中,校正系統控制模塊是幾何校正系統內部核心運算單元的總體控制模塊,根據輸入和輸出數據信息,啟動所述流水線實時計算模塊和控制所述輸入緩存管理模塊的數據處理,完成從輸入畸變圖到輸出校正圖的時序控制。
28.流水線實時計算模塊,根據標定的相機內部參數、外部參數和鏡頭畸變參數,以輸出圖像(即校正圖)行列坐標為變量,實時計算得到輸出圖像像素點的位置坐標相對于輸入圖像像素點的位置坐標。
29.輸入緩存管理模塊,根據輸入圖像像素點的位置坐標的整數值,管理輸入圖像數據,具體為根據行范圍保存輸入圖像數據,當滿足輸出校正圖像時取出圖像數據,刪除不再使用的輸入圖像數據。
30.緩存單元,用于緩存輸入圖像數據。
31.插值計算模塊,利用輸入圖像像素點的位置坐標的小數值作為插值計算的權重,對輸入圖像數據進行插值計算,得到校正圖像值,從而實現了高精度的校正結果。
32.輸入接口和輸出接口,支持流接口輸入作為主模式,同時支持axi接口作為備用模式。前者能通過流接口顯著降低對ddr的帶寬占用,后者能提供更靈活的使用方式。插值計算模塊和輸出接口之間設置有輸出圖像緩存。
33.實時圖像序列的幾何校正系統的關鍵數據流程如圖2所示。首先,利用標定得到的相機內部參數、外部參數和鏡頭畸變參數,利用流水線實時計算,得到輸出圖像像素點的位置坐標相對于輸入圖像像素點的位置坐標,該坐標為定點型。然后,將輸入坐標值的整數部分提供給輸入緩存管理模塊,用于對輸入圖像數據進行存取;最后,將輸入坐標值的小數部分提供給插值計算模塊,用于做插值計算的權重。
34.上述模塊的組合獨立完成畸變坐標計算,輸入圖像緩存和管理,輸入圖像數據插值計算輸出。整個過程采用流水線執行實時計算,圖像數據均在緩存中存放,不使用ddr存儲器,不占用ddr帶寬,中間處理過程不需要和其他設備做數據交互,實現了畸變輸入圖像到校正輸出圖像的低延時高實時性處理。
35.本實施方式中的流水線實時計算模塊利用相機標定方法獲取雙目相的內部參數、外部參數和鏡頭畸變參數,通過校正計算得到校正后的雙目圖像。基于針孔相機模型的圖像校正算法,以歸一化像素坐標建立起圖像校正前后像素坐標的映射關系:
[0036][0037][0038]
其中,x
′
,y
′
為輸出圖像像素點的歸一化位置坐標,r2=x
′2+y
′2,x
″
,y
″
為輸入圖像像素點的位置坐標,k1~k6為相機的徑向畸變參數,p1,p2為相機的切向畸變參數。
[0039]
本實施方式中的流水線實時計算模塊在進行計算時,需要對上式進行運算分解,
使其每一步運算都是基本運算,且上一級運算輸出是下一級運算的輸入,從而完成多級流水線的實時計算,如圖3所示。
[0040]
本實施方式的流水線設計為7級,運算分解后,如下表所示:
[0041][0042]
以除法器12個時鐘周期、乘法器1個時鐘周期、加法器1個時鐘周期計算,則7級運算共需要33個時鐘周期。若不采用流水線結構,則校正算法完成單個像素的計算需要33個時鐘周期,主時鐘頻率需要達到圖像數據像素時鐘的33倍,這對于專用集成電路的設計而言是比較大的挑戰。
[0043]
流水線的處理能力,受限于單級流水線的最小處理能力,在除法器使用流水線架構時,則單級流水線最多需要2個算法時鐘即可完成一個像素的處理。在滿足算法實時性要求的前提下,大大降低了算法主時鐘的時鐘要求。
[0044]
圖像校正算法對專用硬件電路實現的最大挑戰來自對數據緩存的需求,該需求主要由輸入圖像緩存需求和輸出圖像緩存需求兩大部分。
[0045]
由于提前獲取了圖像對應的相機內外參數和畸變參數,在完成一行輸入圖像數據的讀取后啟動預計算,獲得下一輸出行圖像需要的輸入圖像的映射點。對映射點行坐標的整數部分進行排序,得到行坐標的最小值和最大值,從而獲得下一輸出行圖像需要的輸入圖像數據的行范圍,如圖4所示。根據行范圍保存輸入圖像數據到緩存中,即滿足了下一行輸出圖像計算的輸入條件。
[0046]
輸入圖像數據緩存的行范圍是動態更新的。新的輸出行對應的輸入圖像數據緩存的行范圍產生后,通過排序獲得其最大和最小值,并和上一行范圍對應的最大和最小值進行比較;如果當前行范圍的最小值等于上一行范圍的最小值,則保留最小行的數據;如果當前行范圍的最小值大于上一行范圍的最小值,則刪除小于當前最小行的數據;如果當前行范圍的最大值等于上一行范圍的最大值,則不需要緩存新的輸入圖像數據;如果當前行范圍的最大值大于上一行范圍的最大值,則需要繼續緩存新的輸入圖像數據,直到最大行范圍內的數據已緩存,啟動下一行的數據讀取。
[0047]
輸入圖像的緩存采用回環更新的方式,如圖5所示。回環更新方式可分為4個狀態:狀態1從最低地址開始緩存數據并滿足最大行范圍的存儲需求,當存儲行范圍更新時,進入狀態2,狀態2將刪除無用的數據,并釋放低地址空間;當緩存的數據到達緩存地址的最大值時,對應狀態3,最大行的存儲地址跳轉到緩存的起始地址,繼續緩存后面的數據,同時進入狀態4。由于小于當前最小行的行圖像數據已刪除,狀態4不會覆蓋有效的行數據。
[0048]
輸入圖像緩存的自適應優化方法,通過預計算對輸入緩存圖像實現按需取用,及時刪除了無用的輸入圖像數據并釋放緩存空間,用于新數據的緩存,實現對緩存空間的優化利用。輸入圖像緩存的自適應優化方法能自動適應畸變程度的變化,并能在畸變較小時實現對較大分辨率的校正支持。
[0049]
輸出圖像緩存采用fifo來實現,并以快滿(almost full)(50%)標記作為反饋信號提供給輸入緩存管理模塊,以實現輸出數據流的動態控制,如圖6所示。
[0050]
當almost full為低電平,表示fifo可以緩存輸出數據,這時輸入緩存管理模塊通過取出輸入緩存的數據并在插值計算模塊中計算得到輸出數據,通過fifo輸出。當almost full為高電平,表示fifo數據快滿,需要暫停接收數據,這時輸入緩存管理模塊停止取數據,流入fifo的數據就停止了。
[0051]
如果almost full為低到fifo得到第一個數據的時鐘周期為n,almost full為高到數據停止寫入fifo的時鐘周期為m,則fifo的深度為n,m兩個值中最大值的2倍。當fifo余量小于深度的一半,則almost full為低,當fifo余量大于等于深度的一半,則almost full為高。
[0052]
通過小容量的fifo加almost full標記的方法,使幾何校正系統無需按其支持的最大分辨率的行數據大小預先分配最大容量的fifo,對輸出圖像實現按需取用和自適應緩存,從而節約了緩存容量。
[0053]
不難發現,本發明綜合考慮模塊的使用場景,提供了流接口和axi可選擇的接口方案,且在算法執行過程中,不與ddr發生數據交換,降低了對ddr的依賴和ddr帶寬占用,減小了外部存儲器,降低硬件成本;本發明在硬件設計中采用了流水線技術,實現了圖像幾何校正算法的實時計算,大大降低了算法主時鐘的時鐘要求;本發明在硬件設計中采用了圖像緩存的自適應優化技術,使圖像幾何校正算法對緩存資源的需求降低,計算延時接近緩存行周期對應的極限值。本發明中使用的實時圖像序列幾何校正方法,可作為一種可應用于大型soc的ip實現方案,可顯著降低soc中的芯片面積,取得較好的經濟效益;同時,本發明也為實時圖像校正算法在嵌入式系統中的部署提供了一種高能效比的實現方法。
技術特征:
1.一種實時圖像序列的幾何校正裝置,其特征在于,包括:校正系統控制模塊、流水線實時計算模塊、輸入緩存管理模塊、輸入緩存單元和插值計算模塊,所述流水線實時計算模塊用于根據標定的相機參數實時計算輸出圖像像素點的位置坐標相對于輸入圖像像素點的位置坐標;所述輸入緩存單元的輸入端與輸入接口相連,用于緩存輸入圖像數據;所述輸入緩存管理模塊用于根據所述輸入圖像像素點的位置坐標的整數部分管理所述輸入緩存單元中的輸入圖像數據;所述插值計算模塊的輸入端與所述輸入緩存單元的輸出端相連,輸出端與輸出接口相連,用于將所述輸入圖像像素點的位置坐標的小數部分作為插值計算的權重,對所述輸入圖像數據進行插值計算,得到校正圖像值;所述校正系統控制模塊用于啟動所述流水線實時計算模塊和控制所述輸入緩存管理模塊的數據處理,以完成從輸入畸變圖到輸出校正圖的時序控制。2.根據權利要求1所述的實時圖像序列的幾何校正裝置,其特征在于,所述輸入接口和輸出接口以流接口作為主模式,同時支持axi接口作為備用模式。3.根據權利要求1所述的實時圖像序列的幾何校正裝置,其特征在于,所述流水線實時計算模塊通過實時計算輸出圖像像素點的位置坐標相對于輸入圖像像素點的位置坐標,其中,x
′
,y
′
為輸出圖像像素點的歸一化位置坐標,r2=x
′2+y
′2,x
″
,y
″
為輸入圖像像素點的位置坐標,k1~k6為相機的徑向畸變參數,p1,p2為相機的切向畸變參數。4.根據權利要求3所述的實時圖像序列的幾何校正裝置,其特征在于,所述流水線實時計算模塊為7級流水線實時計算模塊,在計算時對進行分解,分解后的第一級運算包括:其中,x,y為輸出圖像像素點的坐標,z為歸一化系數;第二級運算包括:r2=x
′2+y
′2、m=2x
′
*y
′
和第三級運算包括:第三級運算包括:和第四級運算包括:和第五級運算包括:和第六級運算包括:k
r
=k
′
/k
″
,第七級運算包括:和5.根據權利要求1所述的實時圖像序列的幾何校正裝置,其特征在于,所述輸入緩存管
理模塊動態更新所述輸入緩存單元中輸入圖像數據的行范圍,具體為:新的輸出行對應的輸入圖像數據緩存的行范圍產生后,通過排序獲得其最大和最小值,并和上一行范圍對應的最大和最小值進行比較;如果當前行范圍的最小值等于上一行范圍的最小值,則保留最小行的數據;如果當前行范圍的最小值大于上一行范圍的最小值,則刪除小于當前最小行的數據;如果當前行范圍的最大值等于上一行范圍的最大值,則不需要緩存新的輸入圖像數據;如果當前行范圍的最大值大于上一行范圍的最大值,則需要繼續緩存新的輸入圖像數據,直到最大行范圍內的數據已緩存,啟動下一行的數據讀取。6.根據權利要求5所述的實時圖像序列的幾何校正裝置,其特征在于,所述輸入緩存單元在對輸入圖像數據緩存采用回環更新的方式進行更新,所述回環更新方式分為4個狀態:第一狀態從最低地址開始緩存數據并滿足最大行范圍的存儲需求,當存儲行范圍更新時,進入第二狀態,第二狀態將刪除無用的數據,并釋放低地址空間;當緩存的數據到達緩存地址的最大值時,對應第三狀態,最大行的存儲地址跳轉到緩存的起始地址,繼續緩存后面的數據,同時進入第四狀態。7.根據權利要求1所述的實時圖像序列的幾何校正裝置,其特征在于,所述插值計算模塊的輸出端和輸出接口之間還設置有輸出圖像緩存,所述輸出圖像緩存通過快滿標記作為反饋信號提供給所述輸入緩存管理模塊。8.根據權利要求7所述的實時圖像序列的幾何校正裝置,其特征在于,當快滿標記為低電平,所述輸入緩存管理模塊通過取出所述輸入緩存單元中輸入圖像數據并在所述插值計算模塊中計算得到輸出數據,并通過輸出圖像緩存輸出;當快滿標記為高電平,所述輸入緩存管理模塊停止取數據。9.根據權利要求7所述的實時圖像序列的幾何校正裝置,其特征在于,當輸出圖像緩存的余量小于深度的一半,則快滿標記為低電平,當輸出圖像緩存的余量大于或等于深度的一半,則快滿標記為高電平;所述深度為第一時鐘周期n和第二時鐘周期m兩個值中的最大值的2倍,所述第一時鐘周期n為快滿標記剛為低電平到所述輸出圖像緩存得到第一個數據的時鐘周期,所述第二時鐘周期m為快滿標記剛為高電平到數據停止寫入所述輸出圖像緩存的時鐘周期。
技術總結
本發明涉及一種實時圖像序列的幾何校正裝置,其中,流水線實時計算模塊用于根據標定的相機參數實時計算輸出圖像像素點的位置坐標相對于輸入圖像像素點的位置坐標;輸入緩存單元用于緩存輸入圖像數據;輸入緩存管理模塊用于根據輸入圖像像素點的位置坐標的整數部分管理輸入緩存單元中的輸入圖像數據;插值計算模塊用于將輸入圖像像素點的位置坐標的小數部分作為插值計算的權重,對輸入圖像數據進行插值計算,得到校正圖像值;校正系統控制模塊用于啟動流水線實時計算模塊和控制輸入緩存管理模塊的數據處理,以完成從輸入畸變圖到輸出校正圖的時序控制。本發明能夠以較少的嵌入式硬件資源實現高實時性圖像序列的校正。入式硬件資源實現高實時性圖像序列的校正。入式硬件資源實現高實時性圖像序列的校正。
