基于GPU和openCV圖像處理的汽車儀表自動檢測裝置制造方法
【專利摘要】基于GPU和openCV圖像處理的汽車儀表自動檢測裝置,屬于汽車儀表圖像處理【技術(shù)領域】,本發(fā)明為解決汽車儀表的檢測采用目檢方式,存在效率低、檢測質(zhì)量低和人力成本高的問題。本發(fā)明包括CPU、GPU、主存儲器和GPU存儲器;主存儲器將檢測用信息發(fā)送給GPU存儲器,等待調(diào)用;CPU下達檢測指令給GPU;GPU從GPU存儲器中調(diào)取檢測用信息,對汽車儀表進行檢測;GPU將汽車儀表的檢測結(jié)果存入GPU存儲器;GPU存儲器將汽車儀表的檢測結(jié)果轉(zhuǎn)存至主存儲器。
【專利說明】基于GPU和openCV圖像處理的汽車儀表自動檢測裝置
【技術(shù)領域】
[0001] 本發(fā)明涉及一種汽車儀表檢測裝置,屬于汽車儀表圖像處理【技術(shù)領域】。
【背景技術(shù)】
[0002] 汽車儀表是駕駛員了解汽車運行狀態(tài)的界面,為駕駛員提供了駕駛過程中必要的 汽車運行參數(shù)信息,是汽車的重要部件。而在汽車儀表的生產(chǎn)過程中,很多環(huán)節(jié)可能會造成 儀表功能的異常。如電路焊接過程中由于對應的LED元件或線路漏焊,虛焊,短路等情況, 導致在發(fā)送對應命令時,指示燈無法正確打開,關(guān)閉,或者打開關(guān)閉了錯誤的指示燈。長期 以來,我國的汽車行業(yè)中儀表出廠校驗多采用人工檢測的方式進行,這樣的檢測主要存在 以下幾個問題 :
[0003] (1)工人面對大量的儀表檢測,工作強度大,連續(xù)工作帶來的疲勞導致產(chǎn)品誤判;
[0004] (2)檢測結(jié)果依賴于工人的工作狀態(tài),譬如用人眼來觀察儀表指針所指角度是否 正確無誤,由于操作工觀察角度不同,可能會帶來誤差。
[0005] 隨著汽車電子儀表功能的多樣化,目檢方式的效率將顯得越來越低下。對于儀表 生產(chǎn)廠家來說,提高檢測效率和檢測質(zhì)量,降低人力成本,將成為一個越來越亟待解決的問 題。基于圖像識別技術(shù)的自動測試是汽車儀表檢測的必然發(fā)展方向。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明目的是為了解決汽車儀表的檢測采用目檢方式,存在效率低、檢測質(zhì)量低 和人力成本高的問題,提供了一種基于GPU和openCV圖像處理的汽車儀表自動檢測裝置。
[0007] 本發(fā)明所述基于GPU和openCV圖像處理的汽車儀表自動檢測裝置,它包括CPU、 GPU、主存儲器和GPU存儲器;
[0008] 主存儲器將檢測用信息發(fā)送給GPU存儲器,等待調(diào)用;
[0009] CPU下達檢測指令給GPU ;
[0010] GPU從GPU存儲器中調(diào)取檢測用信息,對汽車儀表進行檢測;
[0011] GPU將汽車儀表的檢測結(jié)果存入GPU存儲器;
[0012] GPU存儲器將汽車儀表的檢測結(jié)果轉(zhuǎn)存至主存儲器。
[0013] 本發(fā)明的優(yōu)點:本發(fā)明為了解決儀表檢測問題,需同時完成指針檢測和指示燈檢 測。在檢測過程中,對儀表圖像的處理運算量較大,但很多情況下對于圖像中每一點的處 理方式是相同的,存在很高的并行性。圖形處理器GPU(Graphic Processing Unit),是一 種專門用于圖像處理的微處理器。它與CPU不同的是側(cè)重于大量并行性的計算。CUDA通 用并行計算架構(gòu)平臺使GPU編程更加方便,并且得到openCV的支持,使得GPU發(fā)揮出解決 復雜問題的強大計算能力。openCV是專業(yè)的計算機視覺庫,它包含眾多成熟的圖像處理算 法,因此基于此,本發(fā)明使用openCV下的GPU模塊進行系統(tǒng)的開發(fā)。在CUDA模型中,采用 CPU+GPU協(xié)同處理的方式,GPU作為CPU的協(xié)處理器,主要負責大規(guī)模數(shù)據(jù)的并行計算部分, 這樣可以大大減小CPU的處理負擔,充分利用兩者各自的優(yōu)點,大大提高處理速度。
【專利附圖】
【附圖說明】
[0014] 圖1是本發(fā)明所述基于GPU和openCV圖像處理的汽車儀表自動檢測裝置的原理 框圖。
【具體實施方式】
【具體實施方式】 [0015] 一:下面結(jié)合圖1說明本實施方式,本實施方式所述基于GPU和 openCV圖像處理的汽車儀表自動檢測裝置,它包括CPU1、GPU2、主存儲器3和GPU存儲器 4 ;
[0016] 主存儲器3將檢測用信息發(fā)送給GPU存儲器4,等待調(diào)用;
[0017] CPU1下達檢測指令給GPU2 ;
[0018] GPU2從GPU存儲器4中調(diào)取檢測用信息,對汽車儀表進行檢測;
[0019] GPU2將汽車儀表的檢測結(jié)果存入GPU存儲器4 ;
[0020] GPU存儲器4將汽車儀表的檢測結(jié)果轉(zhuǎn)存至主存儲器3。
[0021] GPU2中嵌有openCV跨平臺計算機視覺庫。
[0022] GPU2是一種專門用于圖像處理的微處理器。它與CPU1不同的是側(cè)重于大量并行 性的計算。
[0023] 選擇一張待檢測的儀表圖片作為基準模板,將攝像頭采集進入的每一幀圖像與該 模板進行差分處理。這樣在儀表的其他部分沒有變化的情況下,只有指針運動,這樣處理出 的圖像就只有儀表的指針。然后再對儀表指針進行相應的處理。在檢測過程中,對儀表圖 像的處理運算量較大,但很多情況下對于圖像中每一點的處理方式是相同的,存在很高的 并行性。目前處理此類問題都是應用CPU1直接處理,CPU1處理并行信號的能力不強,只能 單個像素依次處理。圖形處理器GPU(Graphic Processing Unit),是一種專門用于圖像處 理的微處理器。它與CPU1不同的是側(cè)重于大量并行性的計算。CUDA通用并行計算架構(gòu)平 臺使GPU編程更加方便,并且得到openCV的支持,使得GPU2發(fā)揮出解決復雜問題的強大計 算能力。openCV是專業(yè)的計算機視覺庫,它包含眾多成熟的圖像處理算法,因此基于此,本 發(fā)明使用openCV下的GPU模塊進行系統(tǒng)的開發(fā)。
[0024] CUDA模型中,采用CPU+GPU協(xié)同處理的方式,GPU2作為CPU1的協(xié)處理器,主要負 責大規(guī)模數(shù)據(jù)的并行計算部分,這樣可以大大減小CPU1的處理負擔,充分利用兩者各自的 優(yōu)點,大大提高處理速度。
[0025] CUDA采用類C語言作為編程語言,極大的方便了非圖像處理領域的人員使用GPU2 進行大規(guī)模數(shù)據(jù)并行計算,使開發(fā)人員可以迅速掌握CUDA。因此,CUDA在眾多領域?qū)⒌玫?普及和推廣。
[0026] openCV跨平臺計算機視覺庫支持相應的GPU數(shù)據(jù)處理功能模塊,庫函數(shù)簡潔高 效,其構(gòu)成主要包括C函數(shù)和一些C++的類庫,還提供很多適合于圖像處理的數(shù)據(jù)結(jié)構(gòu),同 時提供了 MATLAB,Python,Java等語言的接口,實現(xiàn)了圖像處理和計算機視覺方面的很多 通用算法。
[0027] openCV的GPU模塊中圖像處理函數(shù)有以下幾大部分:
[0028] 1.顏色轉(zhuǎn)換;2.幾何變換;3.單個元素的操作;4.模板匹配;5.濾波;6.特征提 取。
[0029] openCV中GPU模塊的使用步驟與CUDA的基本使用方法類似:
[0030] 1.檢測openCV中的GPU模塊是否有相應的硬件設備支持;2.將待處理的數(shù)據(jù)傳 輸?shù)紾PU(將Mat中的數(shù)據(jù)上傳到GpuMat) ;3.調(diào)用openCV支持的GPU處理函數(shù);4.下載 處理結(jié)果到CPU(GpuMat中的數(shù)據(jù)傳回Mat)。
[0031] 工作過程:
[0032] 選擇一張待檢測的儀表圖片作為基準模板,將攝像頭采集進入的每一幀圖像與該 模板進行差分處理。這樣在儀表的其他部分沒有變化的情況下,只有指針運動,這樣處理出 的圖像就只有儀表的指針。然后再對儀表指針進行相應的處理。從第一組數(shù)據(jù)可以看到, GPU2的處理時間明顯大于CPU1的處理時間,原因是由于在開始階段,由于需要將主機端的 圖像數(shù)據(jù)在GPU2與CPU1之間傳輸,即使用的upload和download函數(shù)耗時較多。內(nèi)存管 理部分和數(shù)據(jù)轉(zhuǎn)換部分對于GPU模塊而言消耗了大量的時間。
[0033] 而在接下來的不同閾值的處理過程中,可以看到GPU的處理耗時要小于CPU1。從 上圖的處理結(jié)果可以大致看到,GPU2的處理時間大概在15ms左右,而CPU1的處理時間大 概在21ms左右。
[0034] 在本次實施過程中,由于圖片的像素數(shù)量不是很大,為800X564,所以GPU2的加 速效果沒有明顯展示。
[0035] 應用于較大像素的圖片檢測中。在數(shù)據(jù)向顯卡傳輸時,先存入顯卡的global memory,而這部分內(nèi)存與CPU1內(nèi)存不同的是沒有高速緩存,故存取global memory的時間 相對來說是非常長的,要使這部分巨大的延遲影響被消除,就需要利用GPU2中的大量的線 程(thread),當一個thread讀取內(nèi)存,開始等待結(jié)果的時候,GPU2就可以立刻切換到下一 個thread,并讀取下一個內(nèi)存位置,因此,這就避免了由于一個線程存取的延時造成整個執(zhí) 行過程的巨大耗時,當并行的線程數(shù)目足夠多時,就可以把global memory的巨大延遲隱 藏。
【權(quán)利要求】
1. 基于GPU和openCV圖像處理的汽車儀表自動檢測裝置,其特征在于,它包括 CPU (1)、GPU (2)、主存儲器⑶和GPU存儲器(4); 主存儲器(3)將檢測用信息發(fā)送給GPU存儲器(4),等待調(diào)用; CPU (1)下達檢測指令給GPU (2); GPU (2)從GPU存儲器(4)中調(diào)取檢測用信息,對汽車儀表進行檢測; GPU (2)將汽車儀表的檢測結(jié)果存入GPU存儲器(4); GPU存儲器(4)將汽車儀表的檢測結(jié)果轉(zhuǎn)存至主存儲器(3)。
2. 根據(jù)權(quán)利要求1所述基于GPU和openCV圖像處理的汽車儀表自動檢測裝置,其特征 在于,GPU(2)中嵌有openCV跨平臺計算機視覺庫。
【文檔編號】G01D18/00GK104121942SQ201410323374
【公開日】2014年10月29日 申請日期:2014年7月8日 優(yōu)先權(quán)日:2014年7月8日
【發(fā)明者】王獻林, 籍洋, 劉志遠 申請人:哈爾濱工業(yè)大學