周葉江 鄭 彬 趙永廷
(中國科學(xué)院重慶綠色智能技術(shù)研究院 重慶 400714)
GPU在活塞銷尺寸快速檢測中的應(yīng)用研究
周葉江 鄭 彬*趙永廷
(中國科學(xué)院重慶綠色智能技術(shù)研究院 重慶 400714)
近年來,工業(yè)上對工業(yè)標(biāo)準(zhǔn)件尺寸檢測的研究重點逐漸轉(zhuǎn)移到關(guān)注其“高速性”策略的研究,其中邊緣信息的檢測是最為重要且最耗時的過程。為此,針對活塞銷尺寸檢測提出一種基于GPU技術(shù)的方法。選用提取穩(wěn)定、精度高的Hough算法作為檢測直線的策略,結(jié)合現(xiàn)有邊緣檢測算法,對其主要步驟(高斯濾波、梯度計算、方向角計算及Otsu閾值化)的計算流程進(jìn)行并行優(yōu)化。使用相同實驗樣本,該方法能夠在更短的時間內(nèi)檢測出活塞銷的尺寸,與傳統(tǒng)CPU實現(xiàn)方法對比,其平均效率有近15倍的提升。利用GPU實現(xiàn)活塞銷尺寸快速檢測的方法,為工業(yè)上實現(xiàn)檢測的高速性提供一個高效可靠的解決途徑,且有效地控制生產(chǎn)成本。
尺寸檢測 直線檢測 邊緣提取 GPU技術(shù) 并行計算
活塞銷是裝在活塞裙部的圓柱形銷子,廣泛應(yīng)用于轎車、中型車、工程機(jī)械類重型車等。它用來連接活塞和連桿,具有剛度大、強(qiáng)度高和表面質(zhì)量好的特點[1]。然而在制造過程中銷表面會產(chǎn)生各種尺寸缺陷,因此精確地檢測出表面尺寸缺陷具有重大意義。由于活塞銷具有嚴(yán)格的尺寸參數(shù),傳統(tǒng)地用萬能工具顯微鏡、三坐標(biāo)測量機(jī)等進(jìn)行檢測不僅損壞活塞銷,而且大大降低了生產(chǎn)效率。現(xiàn)在一般采用機(jī)器視覺的方法,該方法通過工業(yè)相機(jī)采集圖像,然后利用圖像處理技術(shù)識別被測物體,最后設(shè)計算法實現(xiàn)檢測。
機(jī)器視覺具有靈敏度高、設(shè)計靈活、非接觸性、響應(yīng)迅速等優(yōu)點,使得其在工業(yè)中得到了廣泛的應(yīng)用,如在空瓶檢測機(jī)器人、工業(yè)零件測量系統(tǒng)、工業(yè)機(jī)器人分揀系統(tǒng)、色差檢測等領(lǐng)域都有應(yīng)用。近年來,有關(guān)工業(yè)應(yīng)用中的機(jī)器視覺技術(shù),已經(jīng)成為解決傳統(tǒng)方法速度慢、精度低等不足的有效途徑。機(jī)器視覺在工業(yè)中的應(yīng)用研究,也引起了國內(nèi)外學(xué)者的關(guān)注。
文獻(xiàn)[1]針對圓柱形高精密零件曲率表面缺陷檢測的問題,設(shè)計并實現(xiàn)了基于及其視覺的在線檢測系統(tǒng);文獻(xiàn)[3]設(shè)計了一種基于三維激光掃描的移動大尺寸圓柱體工件長度快速檢測系統(tǒng);文獻(xiàn)[4]基于水平投影法提取鐵軌表面缺陷,采用邏輯操作組合檢測結(jié)果,提出了一種鐵軌表面缺陷的視覺檢測與識別算法。
近年來GPU技術(shù)快速發(fā)展,由于GPU相比CPU在處理并行數(shù)據(jù)上的巨大優(yōu)勢,有關(guān)于GPU的應(yīng)用研究逐漸成為熱點。文獻(xiàn)[5]使用NVIDIA的并行計算架構(gòu)將SPH方法的全部處理過程在GPU上實現(xiàn);文獻(xiàn)[6]提出了一種基于GPU的逆時偏移并行加速算法。
本文研究了基于機(jī)器視覺的活塞銷尺寸檢測算法,并設(shè)計出機(jī)器視覺與尺寸檢測系統(tǒng)。針對前期單獨使用CPU進(jìn)行尺寸檢測速度慢的不足,有效利用GPU的優(yōu)勢,提出了一種基于GPU的活塞銷尺寸檢測方法。根據(jù)GPU內(nèi)存的特點,各步驟合理分配GPU資源,同時部分只能串行執(zhí)行的過程使用CPU進(jìn)行處理,最終實現(xiàn)CPU-GPU協(xié)同工作模式。對比單獨使用CPU,在保證精度的前提下檢測速度具有極大提高。
1.1 CUDA通用并行計算結(jié)構(gòu)
CUDA(Compute Unified Device Architecture) 是NVIDIA公司推出的一種通用并行計算平臺和編程模型,中文名稱即統(tǒng)一計算設(shè)備架構(gòu)。在CUDA的架構(gòu)下,一個程序可以分為兩個部分:host端和device端。host端是程序在CPU上的執(zhí)行部分,而device端是在GPU上的執(zhí)行部分。GPU執(zhí)行時的最小單位是thread,多個thread可以組成一個block,執(zhí)行相同程序的block可以組成一個grid,如圖1所示為線程組織結(jié)構(gòu)。

圖1 線程結(jié)構(gòu)
CUDA編程模型采用CPU+GPU的異構(gòu)模式。CPU端代碼生成原始數(shù)據(jù),通過CUDA運行時函數(shù)庫將這些原始數(shù)據(jù)傳輸?shù)紾PU上,然后啟動CUDA內(nèi)核函數(shù)進(jìn)行運算,最后將運算結(jié)果從設(shè)備端傳輸?shù)街鳈C(jī)端[7]。
1.2 基于CPU的直線求取
工件檢測系統(tǒng)中最主要且最耗時的工作為求取直線,主要分高斯濾波、梯度和方向角計算、非極大值抑制、Otsu閾值分割和Hough直線檢測五個步驟。
1.2.1 高斯濾波
由于工業(yè)攝像頭采集的圖像受環(huán)境等因素的影響,第一步采用高斯濾波進(jìn)行濾波,其平滑函數(shù)為:
(1)
令S[i,j]為平滑后的圖像,用G[i,j;σ]對圖像I[i,j]進(jìn)行平滑,則圖像與高斯平滑濾波器卷積表示為:
S[i,j]=G[i,j;σ]*I[i,j]
(2)
1.2.2 梯度和方向角的計算
高斯濾波之后進(jìn)行梯度和方向角的計算,該過程使用一階有限差分計算偏導(dǎo)數(shù)的兩個陣列P與Q,已平滑數(shù)據(jù)陣列S[i,j]的梯度使用2×2的一階有限差分來近似計算x與y偏導(dǎo)數(shù)的兩個陣列P[i,j]與Q[i,j][8]:
P[i,j]≈(S[i,j+1]-S[i,j]+S[i+1,j+1]-S[i+1,j]/2)
(3)
Q[i,j]≈(S[i,j]-S[i+1,j]+S[i,j+1]-S[i+1,j+1]/2)
(4)
(5)
θ[i,j]=arctan(Q[i,j]/P[i,j])
(6)
式中,M[i,j]反映了圖像的邊緣強(qiáng)度,θ[i,j]反映了邊緣的方向。使得M[i,j]取得局部最大值的方向角θ[i,j],就是邊緣的方向。
1.2.3 非極大值抑制

圖2 非極大值抑制原理圖
僅得到全局的梯度強(qiáng)度并不足以確定邊緣。為確定邊緣,必須保留局部梯度值最大的點,而抑制非極大值。非極大值抑制過程是利用梯度的方向,將待判斷的像素點與鄰域像素的梯度幅值進(jìn)行比較。首先將梯度角的變化范圍離散到圓周的四個扇區(qū)(0°,45°,90°,135°)之一,對應(yīng)首3×3鄰域內(nèi)元素的四種可能組合,任何通過鄰域中心的點必須通過其中一個扇區(qū)。圖2為非極大值抑制原理圖。
在圖2中,黑色斜線方向為C點的梯度方向,局部最大值點位于該直線上,其中C點、d1、d2均可能是局部最大值點,因此需要首先確定像素點C的灰度值在其8鄰域內(nèi)是否為最大[9]。如若C點小于d1、d2兩點中的其中任一個,即可說明C點不是局部極大值,則排除C點為邊緣。用公式表示為:
N[i,j]=NMS(M[i,j],ζ[i,j])
(7)其中M[i,j]表示點C的位置,ζ[i,j]=Sector(θ[i,j]),即扇區(qū)的梯度值(Sector表示一個扇區(qū))θ表示梯度值。
1.2.4Otsu閾值分割
由于每一次處理所使用的閾值不盡相同,所以采用自適應(yīng)閾值的Otsu算法來確定其大小。對于圖像I(x,y),前景和背景的分割閾值記為T,前景點數(shù)占圖像比例為ω0,平均灰度為μ0;背景點數(shù)占圖像比例為ω1,平均灰度為μ1;圖像總平均灰度記為μ,類間方差為g,則有:
μ=ω0×μ0+ω1×μ1
(8)
g=ω0(μ0-μ)×(μ0-μ)+ω1(μ1-μ)×(μ1-μ)
(9)
將式(8)代入式(9)得到g=ω0ω1(μ0-μ1)×(μ0-μ1),采用遍歷的方法得到類間方差最大的閾值T,即為所求[10]。
1.2.5Hough直線檢測
通過前幾步可以得到圖像的細(xì)邊緣,后面需要檢測出直線,以便進(jìn)行距離求解。檢測直線采用Hough變換,其原理為:假設(shè)有一條直線到原點距離為s、方向角為θ,直線上的每一點都滿足方程s=xcosθ+ysinθ,利用該條件找出圖像中的直線[11]。圖3為標(biāo)準(zhǔn)Hough變換基本流程圖。

圖3 標(biāo)準(zhǔn)Hough變換基本流程圖
利用GPU實現(xiàn)并行加速,即通過CUDA實現(xiàn)對現(xiàn)有算法過程的并行改進(jìn)。CUDA是NVIDIA推出的一個并行計算架構(gòu),通過該架構(gòu)可實現(xiàn)利用GPU解決部分復(fù)雜計算問題[12]。
2.1 算法思想
針對直線求取過程中的高斯濾波、梯度和方向角計算、非極大值抑制、Otsu閾值分割和Hough直線檢測進(jìn)行并行化處理,使其在CUDA架構(gòu)上運行,從而達(dá)到加速的目的,主要思想和步驟如下:
1) 在進(jìn)行高斯濾波處理的過程中,常見的有直觀實現(xiàn)方法、分離濾波(使用紋理內(nèi)存)和FFT卷積。假設(shè)圖像的大小為M×N,濾波核的半徑為r,對時間復(fù)雜度分析可得:直觀實現(xiàn)方法為O(M×N×r2) ,分離濾波器O(M×N×r)。FFT卷積可通過CUDA已經(jīng)封裝好的CUFFT庫實現(xiàn),但由于卷積核相對于圖像小得多,故其性能不如分離濾波,最終選擇分離濾波[13]。并行化過程中,使用全局內(nèi)存中的單個線程加載一個像素,然后把數(shù)據(jù)復(fù)制到紋理內(nèi)存中,之后執(zhí)行濾波。濾波執(zhí)行過程中,為了提高計算性能,計算中的循環(huán)展開成一階表達(dá)式。
2) 下一步是求出圖像X、Y方向的梯度值Gx、Gy及方位角θ。該過程中使用紋理內(nèi)存,數(shù)據(jù)傳遞方式和高斯濾波相同,核函數(shù)中單個線程加載一個像素,各像素與卷積因子進(jìn)行卷積求得Gx、Gy,Sobel卷積因子如圖4所示。

圖4 Sobel卷積因子
3) 一旦梯度和邊緣方向計算出來之后,需要進(jìn)行非極大值抑制。它的作用是跟蹤圖像的邊緣方向且抑制非脊像素,只保留脊像素,從而使輸出圖像邊緣細(xì)化。
4)Otsu的過程分有計算直方圖并歸一化、計算圖像灰度均值μ、計算直方圖的零階和一階距、計算并找到最大的類間方差,最后根據(jù)找到的閾值進(jìn)行二值化。Otsu算法并行主要體現(xiàn)在直方圖計算、零階以及一階距的計算,以及二值化三個部分均在CUDA平臺上實現(xiàn)并行化[14]。該過程使用共享內(nèi)存,因為共享內(nèi)存中的數(shù)據(jù)能夠被同一線程塊中的線程共有,在數(shù)據(jù)對齊的情況下,具有更快的訪問速度。
5) 由圖3可以看出,Hough直線檢測算法中有明顯的不足之處:累加器矩陣A占用了較大的存儲空間;每一次都需要對圖像的每一個邊緣點進(jìn)行判斷,存在大量的循環(huán),會占用大量的時間。在CUDA架構(gòu)下完成該算法能夠大大節(jié)約時間,首先采用一個線程對應(yīng)圖像中的一個像素點,判斷各個像素點是否是圖像的邊緣,若是則該點進(jìn)行Hough變換,若不是則返回[15]。由于單個線程對應(yīng)一個像素點,所以省掉了單個像素點對θ判斷一次所花費的時間。
2.2 基于CUDA的技術(shù)分析
CUDA技術(shù)的基本框架分為以下5步:1) 分配顯存空間;2) 將數(shù)據(jù)從主機(jī)傳入GPU;3) 在GPU中進(jìn)行具體的并行計算;4) 將數(shù)據(jù)從GPU傳回主機(jī);5) 釋放顯存空間。
結(jié)合算法設(shè)計思想和步驟,在并行化算法設(shè)計時需要考慮以下關(guān)鍵點:
1) 并行化過程中使用了紋理內(nèi)存,共享內(nèi)存和全局內(nèi)存,需要充分考慮數(shù)據(jù)在傳輸時的異步問題,避免因為數(shù)據(jù)的不完全傳輸造成計算結(jié)果的不正確。在分配線程的時候沒有必要產(chǎn)生過多超過圖像尺寸的線程,造成計算的延時與內(nèi)存的浪費。在程序運行中由于分配顯存和釋放顯存會占據(jù)大量的時間,可以采用把cudaMalloc和cudaFree寫到一個主函數(shù)當(dāng)中,程序運行期間只進(jìn)行單次分配與釋放,從而提高計算性能。
2) 紋理內(nèi)存使用cudaMemcpy2DToArray將數(shù)據(jù)從主機(jī)傳到GPU,因為紋理內(nèi)存針對2D訪問有優(yōu)化,同時需要使用cudaBindTexture2D()將數(shù)據(jù)綁定到線性存儲器中,最后需要使用cudaUnbindTexture()來解綁。
3) 根據(jù)共享內(nèi)存的特點可知,共享內(nèi)存的訪問需要提前進(jìn)行初始化,不然計算結(jié)果不正確。對共享內(nèi)存中的數(shù)據(jù)進(jìn)行原子操作,可以大大提高原子操作的效率,但是由于原子操作是一個串行操作,所以可以采用單GPU線程一次處理同一列上連續(xù)32個像素點的優(yōu)化策略[16]。
4)Hough直線檢測過程中,在檢測最大值時,最大值容易被周圍的值干擾,可以采用將累加器矩陣分塊的優(yōu)化策略[17]。
2.3 部分編碼設(shè)計
結(jié)合2.1節(jié)和2.2節(jié)所述,利用CUDA技術(shù)在VisualStudio2013平臺下構(gòu)建檢測系統(tǒng)框架,其軟件流程如圖5所示。利用CUDA處理并行數(shù)據(jù)的優(yōu)勢,將處理過程中可以并行執(zhí)行的數(shù)據(jù)都放到GPU中進(jìn)行計算,最后計算結(jié)果返回到CPU中。其中CPU部分使用C++編寫,GPU部分使用CUDAC編寫。

圖5 系統(tǒng)流程框圖
程序運行時由于分配顯存和釋放顯存會占據(jù)大量時間,所以把該過程寫在主函數(shù)中,部分代碼如下:
int main(int argc, char **argv){
…cudaMalloc((void**)&d_in, width*height);
cudaMalloc((void**)&d_out, width*height);
cudaMemcpy(d_in, input, width*height*sizeof(unsigned char),cudaMemcpyHostToDevice);
dim3 blocksize(16, 16);
dim3 gridsize((width + blocksize.x - 1) / blocksize.x, (height + blocksize.y - 1) / blocksize.y);
loadConvertData <<
cudaThreadSynchronize();
cudaMemcpy(output,d_out,width*height*sizeof(unsigned char), cudaMemcpyDeviceToHost);
cudaFree(d_in);
cudaFree(d_out);…}
主函數(shù)中首先通過cudaMalloc進(jìn)行顯存的分配,然后cudaMemcpy進(jìn)行數(shù)據(jù)在主機(jī)和設(shè)備之間的傳輸,在本文中blocksize設(shè)置為(16,16),此時效果最好。gridsize的值根據(jù)待處理像素的值自動確定,cudaThreadSynchronize()保證每一個像素都處理完畢,最后通過cudaFree釋放掉顯存空間。
高斯濾波使用的是5×5矩陣,其中需要把像素的循環(huán)計算展開成一階表達(dá)式,提高運行速度,部分代碼如下:
const float deviceGaussianFilterMask={2, 4, 5, 4, 2,4, 9, 12, 9, 4,5, 12, 15, 12, 5,4, 9, 12, 9, 4,2, 4, 5, 4, 2};
__global__ void GaussianConvolution(float* output, unsigned matrixWidth){
int outputRow = blockIdx.y * blockDim.y + threadIdx.y;
int outputColumn = blockIdx.x * blockDim.x + threadIdx.x;
float accumulator = 0.0;
…accumulator+=deviceGaussianFilterMask[(2+i)*3+(2+j)]* tex2D(deviceMatrixTexture, matrixColumn, outputRow + j);…}
其中outputRow、outputColumn表示分配線程進(jìn)行行列的濾波,accumulator表示單個像素濾波后的值,通過tex2D(deviceMatrix Texture,matrixColumn,outputRow+j)分配紋理內(nèi)存中的線程。
再之后是梯度與方向角度的計算,部分代碼如下:
__global__ void deviceComputeGradient(float* outputGradient, unsigned* outputEdgeDirectionClassifications, unsigned matrixWidth){
int outputRow = blockIdx.y * blockDim.y + threadIdx.y;
int outputColumn = blockIdx.x * blockDim.x + threadIdx.x;
…xAccumulator += deviceXGradientMask[maskIndex] * tex2D(deviceMatrixTexture, matrixColumn, outputRow + j);
yAccumulator += deviceYGradientMask[maskIndex] * tex2D(deviceMatrixTexture, matrixColumn, outputRow + j);…
int matrixIndex = outputRow * matrixWidth + outputColumn;
outputGradient[matrixIndex] = abs(xAccumulator) + abs(yAccumulator);
float edgeDirection = atan2(yAccumulator, xAccumulator) * (180 / 3.14159265) + 180.0;
if ((edgeDirection >= 22.5 && edgeDirection < 67.5) || (edgeDirection >= 202.5 && edgeDirection < 247.5)){
outputEdgeDirectionClassifications[matrixIndex] = 1;}…
其中xAccumulator、yAccumulator分別表示每個像素在X、Y方向的梯度,outputGradient表示像素梯度強(qiáng)度,即G,edgeDirection表示梯度方向,即方位角θ。
實驗平臺的操作系統(tǒng)是Windows7Ultimatex64,CPU為interCorei3-2120 3.30GHz,GPU為NVIDIAGeForceGTX560SE(1536MB),頻率736MHz,計算能力2.1,軟件環(huán)境為VisualStudio2013+CUDA6.5+OpenCV2.4.9。待處理的圖像為6張活塞銷圖像,分辨率2592×1944,大小4.80MB,活塞銷標(biāo)準(zhǔn)寬度為1.000cm。如圖6所示,活塞銷被檢測時為任意姿態(tài),邊緣信息不盡相同,存在明顯差異,因此運行時間有一定差異。

圖6 活塞銷
如表1所示為6張活塞銷圖像分別在CPU和CPU+GPU模式下的運行時間對比,可以看出,使用GPU之后的運行時間明顯變短,極大地減少直線求取所需時間,平均加速比約為13.42。

表1 Canny算法運行時間對比
通過對上述單個樣本圖像進(jìn)行長時間約上萬次的重復(fù)檢測,可得出如表2所示結(jié)果,其表示分別在CPU和CPU+GPU模式下的精度。從表中可以看出,兩種模式下準(zhǔn)確度均相差不大,能夠達(dá)到檢測系統(tǒng)的生產(chǎn)要求。

表2 精度對比
基于GPU并行的方法實現(xiàn)活塞銷尺寸的快速檢測,綜合利用CUDA架構(gòu)中的共享內(nèi)存、紋理內(nèi)存和全局內(nèi)存,對比前期單獨使用CPU的方法,保證精度的前提下能夠明顯縮短檢測時間。下一步工作將結(jié)合現(xiàn)在已有的工作進(jìn)展,將檢測系統(tǒng)和檢測算法移植到玻管的缺陷檢測上。
[1] 楊文飛,楊文雄.一種活塞銷管:中國,CN203009815 U[P].2013.
[2] 蘇俊宏,劉勝利.圓柱型高精密零件表面缺陷檢測及形貌分析[J].激光與光電子學(xué)進(jìn)展,2014,51(4):150-154.
[3] 周森,郭永彩,高潮,等.基于三維激光掃描的移動大尺寸圓柱體工件長度快速檢測系統(tǒng)[J].光學(xué)精密工程,2014,22(6):1524-1530.
[4] 唐湘娜,王耀南.鐵軌表面缺陷的視覺檢測與識別算法[J].計算機(jī)工程,2013,39(3):25-30.
[5] 周煜坤,陳清華,余瀟.基于CUDA的大規(guī)模流體實時模擬[J].計算機(jī)應(yīng)用與軟件,2015,32(1):143-147,170.
[6] 張向陽,馮超敏,趙書貴,等.一種基于GPU的逆時偏移并行算法[J].計算機(jī)應(yīng)用與軟件,2013,30(10):304-307.
[7] 夏斌.基于CPU+GPU的外輻射源雷達(dá)自適應(yīng)濾波算法實現(xiàn)技術(shù)[D].西安:西安電子科技大學(xué),2013.
[8] Gonzalez C I,Melin P,Castro J R,et al.An improved sobel edge detection method based on generalized type-2 fuzzy logic[J].Soft Computing,2014:1-12.
[9] Brown L M,Feris R,Pankanti S.Temporal Non-maximum Suppression for Pedestrian Detection Using Self-Calibration[C]//Pattern Recognition (ICPR),2014 22nd International Conference on. IEEE,2014:2239-2244.
[10] Huang L,Fang Y,Zuo X,et al.Automatic Change Detection Method of Multitemporal Remote Sensing Images Based on 2D-Otsu Algorithm Improved by Firefly Algorithm[J].Journal of Sensors,2015,2015:327123.
[11] Lee J P,Wu Q Q,Park M H,et al.A Study on Modified Hough Algorithm for Image Processing in Weld Seam Tracking System[J].Advanced Materials Research,2015,1088:824-828.
[12] 侯怡婷.基于CUDA的Hough變換并行實現(xiàn)[D].大連:大連理工大學(xué),2013.
[13] 劉進(jìn)鋒.幾種CUDA加速高斯濾波算法的比較[J].計算機(jī)工程與應(yīng)用,2013,49(23):14-18,30.
[14] 王媛媛.基于CUDA平臺的區(qū)域分割并行算法設(shè)計與實現(xiàn)[D].大連:大連理工大學(xué),2014.
[15] 徐洋,張清蓉.基于圖像處理的汽車指針儀表檢測研究[J].計算機(jī)應(yīng)用與軟件,2014,31(8):219-221,252.
[16] Rahman M N A,Nasir A F A,Mat N,et al.Image Segmentation Using OpenMP and Its Application in Plant Species Classification[J].International Journal of Software Engineering and Its Applications,2015,9(5):135-144.
[17] Yadav V K,Batham S,Acharya A K,et al.Approach to accurate circle detection:Circular Hough Transform and Local Maxima concept[C]//Electronics and Communication Systems (ICECS),2014 International Conference on.IEEE,2014:1-5.
STUDY OF GPU APPLICATION IN RAPID DETECTION OF PISTON PIN DIMENSION
Zhou Yejiang Zheng Bin*Zhao Yongting
(ChongqingInstituteofGreenandIntelligentTechnology,ChineseAcademyofSciences,Chongqing400714,China)
In recent years, the research is more and more focused on high-speed strategy of industrial standard component dimension detection, and edge detection is the most important and the most time-consuming process of the whole running time. Therefore, a novel method based on GPU technology using CUDA is proposed for piston pin dimension detection. Considering the detection stability and high accuracy, Hough algorithm is selected as the strategy of line detection to parallel optimize several major steps, such as Gaussian filter, gradient computation, calculation of orientation angle and Otsu algorithm, combining with edge detection algorithm in present. Eventually, using the same experimental sample, the proposed method is able to detect the piston pin dimension in shorter time, compared with the original CPU implementation, the average efficiency has been accelerated by nearby 15-fold. The proposed approach outperforms the previous methods on CPUs in implementating same detection. It provides an efficient and feasible method to obtain an accurate and high-speed detection in industrial, and controls the production cost effectively.
Dimension detection Line detection Edge extraction GPU technology Parallel computing
2015-09-28。周葉江,碩士生,主研領(lǐng)域:機(jī)器視覺,并行計算。鄭彬,副研究員。趙永廷,助理研究員。
TP3
A
10.3969/j.issn.1000-386x.2017.01.036