高振斌,李盼生
(河北工業大學 電子信息工程學院,天津 300401)
基于嵌入式與OpenCV的電纜護套拉伸長度測量
高振斌,李盼生
(河北工業大學 電子信息工程學院,天津 300401)
摘要:針對電纜護套拉伸長度測量智能化和穩定性的要求,使用以IMX.6Q芯片為主處理器的嵌入式平臺,搭載200萬像素USB工業相機,采用機器視覺的方法對其進行測量。將開源圖像處理OpenCV函數庫移植到嵌入式Linux系統上,使用數學形態學和顏色閾值分割的方法來進行電纜護套標記點的定位。閾值分割方法采用直方圖最頻值法和最大類間方差法,可以實時地對電纜護套標記點進行跟蹤,從而精確地測量出電纜護套拉伸長度。
關鍵詞:OpenCV;嵌入式Linux;電纜護套拉伸長度測量;機器視覺
在如今的電氣時代,可以說人們的生產生活已離不開電的供應,在電給人們提供方便的同時,用電的安全隱患問題應運而生。由于電線電纜的質量不過關,而引發的火災時有發生,可見對電線電纜護套材料進行檢測必不可少。
隨著計算機技術的發展,圖像處理技術越來越廣泛地應用于非接觸式測量。非接觸式測量不但可以提高測量的精度,減少人為誤差,還可以提高生產的效率和經濟利益,正在被大量應用于實時生產過程[1]。現在電纜護套拉伸長度測量大多是以PC機或DSP+FPGA系統為核心的。但是這些系統存在軟硬件成本高,開發周期長等缺點。隨著嵌入式微處理器技術的不斷成熟,圖像處理越來越多地被運用到嵌入式系統中。開放源代碼的機器視覺類庫OpenCV(Intel Open Source ComputerVision Library)由英特爾公司開發,是一套可免費獲得的由一些C函數和C++類所組成的庫,用來實現一些常用的圖像處理及計算機視覺算法[2]。本文設計了一款以嵌入式Linux與OpenCV為基礎的電纜護套拉伸長度測量系統,不但能縮短研發的周期,而且減少了系統軟硬件的成本。
1系統總體結構設計
系統在結構上分為4層: 系統硬件平臺、操作系統、OpenCV庫和應用軟件。系統結構層次圖如圖1所示。

應用層 電纜護套拉伸長度測量系統庫層 OpenCV函數庫,OpenCV依賴庫,基本C庫內核層 Linux內核硬件層 USB接口CPU工業相機電容式觸摸
圖1系統架構
在圖1中系統架構的最底層是硬件層,它是系統的基礎。硬件層使用飛思卡爾公司生產的IMX.6Q 4核處理器,時鐘頻率為1.2 GHz,使用2G BDDR3,8G NandFlash,可以滿足實時圖像處理的需要。配備200萬像素的USB工業相機和800×480電容式觸摸屏。內核層使用的是Linux3.0.35內核,經過剪裁后移植通過SD卡燒寫到NandFlash中。庫層使用的是OpenCV2.4.8函數庫,在移植之前Linux已經自帶基礎C庫,還需要安裝libgtk2.0-dev,libavcodec-dev,libavformat-dev,libjpeg62-dev,libtiff4-dev,libswscale-dev,libjasper-dev等OpenCV的依賴庫[3]。應用層包括圖像處理算法和用戶交互界面,圖像處理算法直接調用OpenCV函數庫,用戶交互界面調用QT2.4.8函數庫。
2基于嵌入式與OpenCV的電纜護套拉伸長度測量方法
2.1標記點特征及先驗知識
背景幕布的顏色筆者選擇為黑色或白色。由于不同廠家生產的電纜護套的顏色千差萬別,如果單純從灰度值閾值分割來檢測標記點很容易受到陰影和反光的影響,從而出現誤檢和漏檢,因為顏色比灰度包含更多的視覺信息,所以通過顏色的不同來識別標記點,可以增強圖像處理算法的魯棒性,所以選擇三原色:紅、綠、藍為標記點的顏色,易與黑色和白色區分,可以消除一部分陰影和反光的干擾。在具體選擇背景幕布和標記點顏色時,要保證背景幕布顏色、標記點顏色和電纜護套顏色相差盡量大。為了方便選取電纜護套和標記點區域,電纜護套在圖像中應處于垂直或水平位置。電纜護套的拉伸部分由電機驅動的拉力機完成。
2.2基于嵌入式和OpenCV電纜護套標記點定位方法
對運動物體定位的方法一般有幀差法[4]、光流法[5]、背景減法[6]、擴展的EM算法、能量運動檢測、基于數學形態學的檢測[7]等,常用的目標跟蹤算法有基于區域的跟蹤、基于運動估計的跟蹤、基于目標模型的跟蹤和基于主動輪廓的跟蹤等[8]。為了同時滿足實時性和準確性的要求,使用數學形態學和顏色閾值分割的方法來進行電纜護套標記點的定位。
本文方法的主要思路是:結合不同顏色空間中圖像的特點,電纜護套和標記點的顏色和輪廓特征來識別標記點,得到兩個標記點之間的像素距離,從而計算電纜護套被拉伸的實際距離。首先對拍攝的RGB顏色空間圖像轉化為HSV顏色空間圖像,因為H通道表示色調,即顏色信息,所以將H通道圖像單獨取出。然后將RGB顏色空間圖像轉化為灰度圖像,選擇感興趣區域,通過閾值分割轉化為二值圖像,并進行形態學圖像處理,查找輪廓,從而得到護套電纜所在區域。然后將H通道圖像的護套電纜所在區域設為感興趣區域,通過閾值分割,得到二值化圖像,然后進行形態學圖像處理,查找與標記點面積相符的輪廓,根據得到的輪廓計算標記點中心坐標。本方法流程圖如圖2所示。

圖2 電纜護套標記點定位方法流程圖
2.2.1閾值分割算法的選擇
在標記點定位方法中,進行了兩次圖像二值化,因此要選擇合適的閾值分割算法非常重要。下面是常用的閾值分割算法:最大熵閾值分割算法[9],基于灰度期望值的閾值分割算法[10],最大類間方差法(OSTU)[11],直方圖最頻值法[12]。
為了選取電纜護套輪廓而進行閾值分割時,因為背景幕布和電纜護套相對于標記點所占有的像素個數要多很多,所以直方圖在背景幕布和電纜護套灰度值附近會出現兩個波峰,而標記點附近不會出現大的波峰,所以選擇直方圖最頻值法,將兩個波峰之間的波谷處的灰度值作為分割閾值,可以有效地將背景幕布和電纜護套分開。而為了選取標記點而進行閾值分割時,因為排除了背景幕布的干擾,只對電纜護套和標記點進行分割。因為方差是圖像灰度分布均勻性的一種度量,方差越大說明構成圖像的兩部分差別越大,而部分目標錯分為背景或部分背景錯分為目標都會導致兩部分差別變小,所以使用最大類間方差法,可以很好地將標記點和電纜護套分開。但是最大類間方差法在遍歷每一個灰度值時計算量大,耗時長,不能滿足實時性,因此對此方法進行修改,只對圖像灰度期望值附近的灰度值進行遍歷,減小了計算量,可以滿足測量的實時性。
2.2.2讀取圖像
本文所使用的工業相機可以拍攝得到1 600×1 200像素大小的彩色圖像,首先利用cvCreateImage函數分別開辟一個1 600×1 200大小的彩色圖像的內存,然后直接調用攝像頭驅動接口函數read_frame來讀取工業相機拍攝的每一幀照片的彩色圖像。
2.2.3選擇感興趣區域
因為電纜護套拉伸長度檢測要求在護套拉伸過程中實時地進行拉伸長度測量,所以為了保證實時性,減少圖像處理算法的計算量,本文采取只對感興趣區域內的圖像信息進行處理。
在電纜護套拉伸之前,通過手指點擊觸摸屏,Qt庫函數mousePressEvent就會將手指點擊屏幕的坐標傳遞給主程序,然后按住顯示屏不放移動手指,函數mouseMoveEvent就會將手指移動位置的坐標傳遞給主函數,然后將這兩個坐標轉化為圖像像素的坐標,就可以將以這兩個點為對角線頂點的水平方向矩形所確定的區域作為感興趣區域。利用函數cvSetImageROI對圖像經行設置,以后對圖像進行處理就只是針對感興趣區域進行處理了。感興趣區域圖像如圖3a所示。

a 感興趣區域圖像 b 二值化圖像 c 形態學處理后的二值化圖像圖3 感興趣區域圖像、二值化圖像、形態學處理后的二值化圖像比較圖
2.2.4確定電纜護套的位置
首先利用cvCvtColor函數將RGB圖像轉化為灰度圖像。轉化后的灰度圖像的灰度直方圖如圖4中原灰度直方圖所示,圖中有兩個大的波峰,分別代表電纜護套和背景的灰度信息。但原灰度直方圖中會出現微小的波動,會導致找到錯誤的波谷,因此設計一個平均濾波器來平滑原直方圖。平均濾波器窗口大小W=3,濾波器三個元素取值分別為ω(-1)=0.333 3,ω(0)=0.333 3,ω(1)=0.333 3,并且∑μω(μ)=1。在此基礎上灰度直方圖g0(t)與平均濾波器ω(μ)的離散卷積公式定義為
(1)
其中:[·]為下取整操作[13]。
經過平均濾波器平滑后的灰度直方圖如圖4中均值濾波后的灰度直方圖所示。使用直方圖最頻值法選取閾值,對圖像進行二值化。二值化后圖像如圖3b所示。因為標記點被劃分為電纜護套還是背景是未知的,如果劃分為背景,那么電纜護套就會在標記點處出現斷裂,這是不愿看到的,因此為了避免出現這種情況,對二值化后的圖像進行開運算,可以使電纜護套在標記點處連接。為了消除電纜突起的毛刺和凸起,對圖像進行閉運算。形態學處理后的二值化圖像如圖3c所示。因為電纜護套基本處于垂直或水平方向,所以計算選定電纜護套輪廓的水平和垂直最短距離和中心軸可以計算出電纜護套區域的最大內接矩形。然后再將計算出的最大內接矩形設置為圖像的感興趣區域,用于進行下一步處理。

a 原灰度直方圖

b 均值濾波后的灰度直方圖圖4 灰度圖像的原灰度直方圖和均值濾波后的灰度直方圖
2.2.5確定標記點的位置
首先利用cvtColor函數將RGB空間圖像轉化 成HSV空間圖像,再調用cvSplit函數將圖像分離為H,S,V對應的單通道圖像。其中H通道圖像如圖5a所示。然后利用最大類間算法對H分量對應的單通道圖像進行二值化,得到的二值化圖像如圖5b所示。得到的標記點區域可能因為反光的影響,使單個標記點出現孔或識別為多個標記點,所以要對標記點區域先進行開運算,再進行閉運算。經過實驗證明,可以很好地消除反光的影響。經過形態學處理后的圖像如圖5c所示。

a H通道圖像 b 電纜區域二值化圖像

c 形態學處理后圖像 d 標記點輪廓圖像圖5 H通道圖像、電纜區域二值化圖像、形態學處理后圖像和標記點輪廓圖像對照圖
2.3拉伸長度計算
因為本文使用的標記點粘貼在電纜護套上,所以只要求出標記點輪廓的中心,就是標記點的中心。使用cvGetSeqElem函數求出標記點輪廓向上每一個點的坐標xn,yn,輪廓上標記點的個數為N,輪廓的中心坐標為xc,yc,則
(2)
(3)
如圖5d中白色閉合曲線表示識別標記點的輪廓,黑色實心點表示標記點的中心。
當相機與電纜護套的位置固定,并且相機平面與電纜護套平面平行,設相機兩個相鄰像素間距離對應現實生活中的實際距離為Lp,兩個標記點中心之間的像素點個數為n,電纜護套拉伸長度L=Lp·n。標定的過程如下:選取兩個標記點,用游標卡尺計算出兩個標記點中心之間的距離m,然后用圖像處理軟件計算出兩個標記點中心之間的像素個數d,則Lp=m/d。
3實驗結果和誤差分析
3.1實驗結果
實驗結果如圖6所示,矩形框為感興趣區域,白色閉合曲線為標記點輪廓。測量長度如圖6右下角文本框所示。

圖6 實驗結果(截圖)
測量結果如表1所示。
表1測量結果

標記點間距離實際值/cm標記點間像素個數標記點間距離測量值/cm測量誤差/%2.9982312.9760.7343.5122753.5320.5693.9723103.9810.2274.4903524.5200.6684.9223874.9700.9755.5364335.5610.452
3.2誤差分析
3.2.1量化誤差
通過標記點之間像素點個數計算電纜護套標記點之間的長度必然會出現量化誤差,假設相鄰像素之間在現實世界中的實際距離為Lp,那么量化誤差的大小為±Lp。因此相機拍攝圖片分辨率越高,則量化誤差越小。
3.2.2傾斜誤差
如果電纜護套所在平面與相機拍攝平面不平行,則會產生傾斜測量誤差,如圖7所示。電纜護套的實際長度為L,則傾斜測量誤差δ為
δ=L-Lcosθ=L(1-cosθ)
(4)

圖7 相機拍攝平面未與電纜護套平面平行
3.2.3取舍誤差
根據標記點之間的像素個數來計算電纜護套拉伸長度過程中,會用到乘除運算,因此會進行有效位的取舍,產生取舍誤差,因為經過校準后的工業相機相鄰兩個像素間距對應的實際距離為0.012 cm,所以在計算過程中保留到0.001 cm,所以取舍誤差為±0.005 cm。
3.2.4畸變誤差
在計算機視覺中相機的鏡頭存在畸變,只有經過精確的校準后才會消除畸變產生的誤差,否則圖像會出現非線性失真。本實驗所使用的鏡頭畸變小于1%。
4小結
該電纜護套拉伸長度測試系統克服了以前手動測量繁瑣的缺點,使用嵌入式技術和OpenCV開源圖像處理函數庫相結合的方案,既縮短了開發周期,降低了硬件成本,而且增強了系統的可移植性。利用RGB和HSV顏色空間分別處理圖像,使用直方圖最頻值法和最大類間方差法兩種閾值分割算法對圖像進行二值化,增強了圖像處理算法的魯棒性。使用在灰度期望值附近對灰度值進行遍歷的方法,減小了最大類間方差算法的計算量,可以滿足圖像處理的實時性。通過選取低畸變相機鏡頭和適宜分辨率的工業相機,保持電纜護套平面與相機拍攝平面平行,計算過程中選取合適的取舍位,可以有效地降低量化誤差、傾斜誤差、取舍誤差和畸變誤差。
參考文獻:
[1]李錦富,陳樂庚,劉春群,等. 基于嵌入式的橡膠膠片寬度測量系統[J].儀表技術與傳感器,2012(9):93 -96.
[2]陳磊. 計算機視覺類庫OpenCV在VC中的應用[J].微計算機信息,2007(12):209 -210.
[3]田紅鵬,焦鑫. 基于嵌入式Linux和OpenCV的車牌定位方法[J].計算機工程與設計,2014,35(11):3908 -3912.
[4]林洪文,姚作樑,涂丹,等. 基于減背景技術的運動目標檢測方法研究[J]. 國防科技大學學報,2003,25(3):66 -69.
[5]王栓,艾海舟,何克忠. 基于差分圖像的多運動目標的檢測與跟蹤[J]. 中國圖象圖形學報,1999,4(6):470 -474.
[6]SONK A,HLAVAC V,BOYLE R. 圖像處理分析與機器視覺[M].2版.艾海舟,武勃,譯.北京:人民郵電出版社,2003.
[7]王江濤.基于視頻的目標檢測,跟蹤及行為識別研究[D].南京:南京理工大學模式識別與智能系統,2008.
[8]尹俊超,劉直芳. 基于 OpenCV 的運動目標檢測與跟蹤[J].計算機工程與設計,2011,32(8):2817 -2820.
[9]吳謹,李娟,劉成云,等. 基于最大熵的灰度閾值選取方法[J]. 武漢科技大學學報(自然科學版),2004,27(1):58 -60.
[10]高永英,張利,吳國威. 一種基于灰度期望值的圖象二值化算法[J]. 中國圖象圖形學報,1999,4(6):524 -528.
[11]祁佳,劉紫燕. 基于融合及形態學的自適應閾值圖像邊緣檢測[J]. 電視技術,2014,38(13):36 -38.
[12]王厚大,梁棟,楊恒新. 自動閾值選取的兩種算法[J]. 南京郵電學院學報,2002,22(4):85 -88.
[13]李軼鯤,楊樹文,劉濤. 基于多峰直方圖的遙感圖像閾值自動選取算法[J]. 蘭州交通大學學報,2013,32(6):199 -204.
Cable sheath stretched length measurement based on embedded and OpenCV
GAO Zhenbin, LI Pansheng
(SchoolofInformationEngineering,HebeiUniversityofTechnology,Tianjin300401,China)
Abstract:To meet the measurement’s intelligent and stability requirements, cable sheath stretched length is measured using machine vision methods, on the IMX.6Q chip-based embedded platform equipped with a 2.0 megapixel USB industrial cameras. At first, open source image processing libraries OpenCV is transplanted to embedded Linux systems. Secondly, mathematical morphology and color threshold segmentation method is used to locate cable sheath marked point. Histogram most frequent method and Otsu method are used as threshold segmentation method so that cable sheath marked point is tracked in real time and cable sheath stretched length is exactly measured.
Key words:OpenCV; embeded Linux; cable sheath stretched length measurement; machine vision
中圖分類號:TN98
文獻標志碼:A
DOI:10.16280/j.videoe.2016.02.027
基金項目:國家質檢總局科技計劃項目
作者簡介:
高振斌(1973— ),教授,博士,主要研究方向為通信與測控技術;
李盼生(1989— ),碩士研究生,主要研究方向為通信與測控技術。
責任編輯:閆雯雯
收稿日期:2015-06-18
文獻引用格式:高振斌,李盼生. 基于嵌入式與OpenCV的電纜護套拉伸長度測量[J].電視技術,2016,40(2):141-145.
GAO Z B, LI P S. Cable sheath stretched length measurement based on embedded and OpenCV [J].Video engineering, 2016,40(2):141-145.