姜廣宇 夏其表
摘要:為提高立木測量的效率和精度,在分析立木信息采集現(xiàn)狀的基礎(chǔ)上,從像素比值關(guān)系構(gòu)建立木的胸徑測量模型出發(fā),通過對手機相機圖片使用VC++語言編譯環(huán)境下調(diào)用OpenCV庫函數(shù)進(jìn)行鏡頭畸變校正、Gamma校正等圖像處理,求解立木的胸徑。經(jīng)過試驗驗證,測量結(jié)果的相對誤差比較小,在林業(yè)需求的測量范圍內(nèi)。
關(guān)鍵詞:立木測量;鏡頭畸變校正;Gamma校正
中圖分類號:TP18 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2018)03-0212-02
Abstract: In order to improve the efficiency and accuracy of standing tree measurement, this paper attempted to construct a measurement model of DBH from the ratio of pixels and performed lens distortion correction and Gamma correction by calling the OpenCV library function in a VC ++ language environment Processing to calculate the diameter of standing tree Based on analyzing the present situation of collection of standing tree information. The experiment results show that the relative error of the measurement results is relatively small and can meet the measurement range of the forestry demand.
Key words: standing tree measurement; Lens distortion correction; Gamma correction
對立木的測量是森林資源調(diào)查的重要工作之一,其測量結(jié)果和精度將直接影響森林資源調(diào)查的質(zhì)量以及林木生長狀況的分析[1]。傳統(tǒng)的測量方法主要是使用布魯萊斯測高器、卷尺等測量工具來測量立木,但有可能會導(dǎo)致外業(yè)測量的勞動量大。隨著對林業(yè)調(diào)查數(shù)據(jù)的精準(zhǔn)性的要求越來越高,產(chǎn)生了許多有關(guān)林業(yè)數(shù)據(jù)獲取和分析的方法[2-5]。隨著計算機視覺技術(shù)的日趨發(fā)展成熟,一些研究者利用計算機視覺技術(shù)進(jìn)行圖像處理獲取立木信息。陶司光等利用數(shù)碼相片進(jìn)行閾值分割進(jìn)行提取立木信息[6]。OpenCV計算機視覺庫作為一種開源的庫為數(shù)字圖像的處理提供了極大的方便[7]。
本文根據(jù)立木測量的實際情況出發(fā),從像素比值關(guān)系構(gòu)建立木的胸徑測量模型出發(fā),通過對手機相機圖片使用VC++語言編譯環(huán)境下調(diào)用OpenCV庫函數(shù)進(jìn)行鏡頭畸變校正、Gamma校正等圖像處理,最終求解立木的胸徑。
1 胸徑測量模型
在攝影測量時,物體的空間坐標(biāo)轉(zhuǎn)化為圖像的像素坐標(biāo)往往產(chǎn)生攝像機成像的不均勻性,無法滿足所用的理想成像模型,在一定條件下物體的所占的像素個數(shù)基本不變,因此,在一幅圖像中可以利用參照體上的某一線段的實際長度作為參照線段和目標(biāo)立木胸徑處長度所占的像素比值關(guān)系計算出立木的胸徑長度[8]。圖1是利用該原理的求解立木胸徑的模型圖。
圖1中,M表示立木投影到圖像中的胸徑所占的像素值大小;N表示參照線段投影到圖像中的長度所占的像素個數(shù);(x,y1)表示A點的計算機圖像坐標(biāo);(x,y2)表示B點的計算機圖像坐標(biāo);(x,y1)和(x,y2)分別表示C點和D點的計算機圖像坐標(biāo);H表示立木抽象出來的實際胸徑長;L表示參照線段抽象出來的實際長度。H的單位為cm, L的單位為cm。根據(jù)像素個數(shù)比例關(guān)系,有如下基本關(guān)系:
2 鏡頭畸變校正
由于攝像機鏡頭固有屬性和其在制造時的技術(shù)欠缺等因素的影響會導(dǎo)致鏡頭畸變的產(chǎn)生,從而出現(xiàn)了圖像中實際的點與理性透鏡模型的平面點偏差的現(xiàn)象,這就是圖像的畸變[9]。攝像機的透鏡主要是在成像儀的邊緣產(chǎn)生顯著的畸變,鏡頭畸變一般分為徑向畸變、切向畸變。徑向畸變主要表現(xiàn)為圖像的實際像點偏移到了理想像點的徑向方向的畸變誤差,切向畸變主要表象為圖像的實際像點偏移到了理想像點的切向方向的畸變誤差,一般鏡頭失真的主要因素是徑向畸變[8]。針對這種原因造成的圖像畸變誤差,本文使用OpenCV的calibrateCamera函數(shù)求畸變圖像的內(nèi)參和畸變參數(shù),函數(shù)形式如下[10]。本文使用印有25mm×25mm的10×7黑白棋盤A4紙粘貼的標(biāo)定板在墻上或者樹上進(jìn)行試驗校正。
double cv::calibrateCamera ( InputArrayOfArrays objectPoints,
InputArrayOfArrays imagePoints,
Size imageSize,
InputOutputArray cameraMatrix,
InputOutputArray distCoeffs,
OutputArrayOfArrays rvecs,
OutputArrayOfArrays tvecs,
int flags = 0,
TermCriteria criteria = TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 30, DBL_EPSILON)
) 。
在得到內(nèi)參和畸變系數(shù)后保存入XML文件或者文本文檔中,下次使用即可將XML文件或者文本文檔中數(shù)據(jù)導(dǎo)入相應(yīng)矩陣,將具有內(nèi)參和畸變系數(shù)的矩陣代入OpenCV的undistort函數(shù)來對采集到的立木圖像進(jìn)行畸變誤差校正, 函數(shù)形式如下[11]。
void cv::undistort ( InputArray src,
OutputArray dst,
InputArray cameraMatrix,
InputArray distCoeffs,
InputArray newCameraMatrix = noArray()
)。
3 Gamma校正
在自然環(huán)境中,人們在采集圖像的時候,或多或少都要受到光線的影響,這就容易產(chǎn)生圖像中會存在光照不均勻的情況[12]。特別在光線受樹冠影響的森林中采集的立木圖像,更不利于對圖像的分析處理。為了提高立木圖像的質(zhì)量,Gamma 矯正方法可以比較好的被用來處理光照對圖像的影響[13]。Gamma校正主要修正圖像顯示設(shè)備和人類視覺系統(tǒng)對亮度成非線性關(guān)系而顯示的誤差[14]。Gamma校正是將原始輸入值以1/gamma為指數(shù)的計算值進(jìn)行預(yù)補償處理來使輸出值與圖像的原始數(shù)據(jù)建立了線性關(guān)系而得到校正的效果[15]。不同的設(shè)備不同的環(huán)境,Gamma的取值不同,本文gamma使用的常用數(shù)值2.2即補償值為0.45進(jìn)行校正[16],使用OpenCV的函數(shù)對采集到的立木圖像進(jìn)行Gamma校正。主要使用pow函數(shù)對圖像的像素矩陣進(jìn)行0.45次冪的計算??梢栽O(shè)置浮點變量gam為1/2.2,然后將gam代入pow(S, gam,Y)函數(shù),即將原圖矩陣S進(jìn)行1/2.2次冪的計算轉(zhuǎn)換給了校正后的圖矩陣Y。
讀取的原始圖像以及Gamma校正后的圖如圖2所示,校正后的圖的亮度要比原圖要清晰。
4 實驗驗證
本研究綜合考慮立木測量的實際需求,使用手機進(jìn)行拍照求胸徑。首先在立木的胸徑處即立木1.3米處綁定繩子環(huán)繞立木,然后在離立木2米遠(yuǎn)處進(jìn)行水平拍照,最好保持腳與立木樹根在同一水平面。使用opencv-3.0.0-alpha版本搭載visual studio2010環(huán)境下使用VC++語言進(jìn)行編程設(shè)計。參照物使用前文中的25mm×25mm的10×7黑白棋盤求解其實際長度。使用卷尺獲取7個樣本立木的胸徑分別是34.0cm,42.5cm,25.8cm,15.5cm,35.3cm,16.3cm,57.6cm,對該7個樣本進(jìn)行鏡頭畸變校正,Gamma校正后在圖像中提取胸徑處兩點的像素,再使用本研究胸徑測量模型計算得測量值分別為34.68cm, 40.95cm,26.11cm,16.57cm,34.63cm,17.8cm,56.1cm,平均相對誤差為3.92%,最大相對誤差為9.2%,最小相對誤差為1.2%。相對誤差最大的為胸徑比較小的樹,可能是胸徑比較小的樹在圖像提取時候的胸徑處的點誤差比較大的緣故。經(jīng)過實際應(yīng)用,在相對比較平坦的平地上在一定的距離內(nèi)能獲取立木的胸徑,測量結(jié)果的相對誤差比較小在林業(yè)需求的測量范圍內(nèi)。
5 結(jié)束語
本文根據(jù)林業(yè)上的測量需求,利用拍攝到照片,使用OpenCV計算機視覺庫對圖像進(jìn)行鏡頭畸變校正,Gamma校正后,使用本文的立木胸徑模型進(jìn)行求解立木胸徑,所得結(jié)果相對誤差在5%以內(nèi),為林業(yè)測量提供了新的方法的參考。實際測量中,還需更進(jìn)一步的改進(jìn),使其能更有效的提供測量的方便。
參考文獻(xiàn):
[1] 陳穎,隋宏大,馮仲科,等. 2種樹高測量方法的測量精度對比分析[J]. 林業(yè)調(diào)查規(guī)劃,2009,34(6):1-4.
[2] 黃曉東,馮仲科,解明星,等. 自動測量胸徑和樹高便攜設(shè)備的研制與測量精度分析[J]. 農(nóng)業(yè)工程學(xué)報,2015,31(18):92-99.
[3] 趙芳,馮仲科,高祥,等. 樹冠遮擋條件下全站儀測量樹高及材積方法[J]. 農(nóng)業(yè)工程學(xué)報,2014,30(2):182-190.
[4] 徐偉恒,馮仲科,蘇志芳,等. 手持式數(shù)字化多功能電子測樹槍的研制與試驗[J]. 農(nóng)業(yè)工程學(xué)報,2013,29(3):,90-99.
[5] 柳皓笛,李文彬,闞江明. 基于神經(jīng)網(wǎng)絡(luò)的立木枝干測量方法研究[J]. 湖南農(nóng)業(yè)科學(xué),2009(3):115-117,120.
[6] 陶司光,劉兆剛.基于數(shù)碼相片圖像三維信息提取技術(shù)的研究[J].森林工程,2010,26(3):90-93.
[7] 王福斌, 李迎燕, 劉杰,等. 基于OpenCV 的機器視覺圖像處理技術(shù)實現(xiàn)[J]. 機械與電子,2010(6):54-57.
[8] 阮曉曉. 基于普通數(shù)碼相機的測樹因子識別研究[D]. 杭州:浙江農(nóng)林大學(xué), 2014.
[9] 李竹良, 趙宇明. 基于單幅圖片的相機完全標(biāo)定[J]. 計算機工程,2013, 39(11):5 -8.
[10] Open Source Computer Vision Library. Camera Calibration and 3D Reconstruction[EB/OL]. https://docs.opencv.org/3.2.0/d9/d0c/group__calib3d.html#ga3207604e4b1a1758aa66acb6ed5aa65d, 2017, 11.
[11] Open Source Computer Vision Library. Geometric Image Transformations[EB/OL]. https://docs.opencv.org/3.2.0/da/d54/group__imgproc__transform.html#ga69f2545a8b62a6b0fc2ee060dc30559d, 2017, 11.
[12] 李渤, 朱梅, 樊中奎. 非均勻光照圖像自適應(yīng)Gamma增強算法[J]. 南昌大學(xué)學(xué)報:理科版,2016,40(3):299-302.
[13] 楊金鋒, 師一華, 熊興隆. 光照處理中改進(jìn)的Gamma 矯正方法[J]. 中國民航學(xué)院學(xué)報,2006,24(4):39-42.
[14] 彭國福, 林正浩. 圖像處理中Gamma校正的研究和實現(xiàn)[J]. 電子工程師,2006,32(2):30-32, 36.
[15] 曾嘉亮. Gamma 校正的快速算法及其C語言實現(xiàn)[J]. 信息技術(shù),2006(4):82-84, 108.
[16] Wikipedia English site. Gamma correction.[EB/OL].https://en.wikipedia.org/wiki/Gamma_correction, 2017,11.