孫麗君 曾祥潘 吳俊杰
摘要:本實驗利用計算機圖形學(xué)開展科學(xué)實驗,抽取兩組樣本,獲取數(shù)據(jù)進(jìn)行分析,對植物果實輪廓特征進(jìn)行差異性檢驗,以驗證對樣本數(shù)據(jù)存在差異的假設(shè)。讓學(xué)生體驗如何利用計算機解決這一類生活中的實際問題。
關(guān)鍵詞:差異性檢驗;科學(xué)實驗;輪廓特征;數(shù)據(jù)分析
中圖分類號:G434 ?文獻(xiàn)標(biāo)識碼:A ?論文編號:1674-2117(2022)13-0073-03
“橘生淮南則為橘,生于淮北則為枳,葉徒相似,其實味不同?!边@句話出自《晏子使楚》。那么,橘與枳的外表輪廓是否也存在顯著的差異性呢?這就需要進(jìn)行差異性檢測,可以利用計算機圖形學(xué)開展科學(xué)實驗,獲取數(shù)據(jù)進(jìn)行分析,以檢測事物的差異性。差異性檢驗可以用于檢測兩組小樣本數(shù)據(jù)之間是否存在顯著差異,如檢測南方人和北方人身高是否存在差異性、檢測兩所學(xué)校中學(xué)生成績是否存在差異性等。
本實驗研究在已經(jīng)檢驗了植物果實投影面積正態(tài)分布的基礎(chǔ)上,進(jìn)一步抽取兩組小樣本,進(jìn)行輪廓特征的差異性檢驗。首先將OpenCV使用在Python中,進(jìn)行植物果實圖像處理,完成輪廓特征數(shù)據(jù)的采集,然后利用R語言進(jìn)行兩組植物果實輪廓特征數(shù)據(jù)的差異性檢驗,讓學(xué)生體驗如何利用計算機解決生活中的這一類實際問題。
● 設(shè)計思路
本實驗以櫻桃不同的種類為研究樣本,把它們分為兩組進(jìn)行差異對比,這兩組分別是:大紅櫻桃和大黃櫻桃之間、小櫻桃中隨機抽取的兩組樣本之間。通過日常對櫻桃的了解,可以假設(shè)大紅櫻桃和大黃櫻桃存在一定的差異,而小櫻桃間假設(shè)沒有明顯差異。下面,通過實驗來驗證前面的假設(shè)。
首先,利用OpenCV獲取不同種類的櫻桃的輪廓特征、投影面積和寬高比;其次,利用R語言對兩組樣本進(jìn)行數(shù)據(jù)分析,并繪制統(tǒng)計圖,檢驗樣本間的差異性,驗證假設(shè)。
● 實驗準(zhǔn)備
不同種類的櫻桃小樣本(小樣本數(shù)量一般以30為界,不超過30的為小樣本,本實驗準(zhǔn)備的是大紅櫻桃、大黃櫻桃各30枚,小櫻桃60枚),裝有Python、R語言的計算機,源代碼等文件。
● 實驗過程
1.采集樣本
當(dāng)下正值櫻桃上市的季節(jié),而且櫻桃品種多樣,因此其成為首選樣本。要將不同種類的櫻桃利用計算機進(jìn)行差異性檢驗,就要將樣本數(shù)字化。這里像本欄目上期文章中做正態(tài)分布檢驗一樣,首先要對樣本進(jìn)行拍照,這是一個比較耗費時間和體力的工作,但樣本的位置、擺放角度還有拍攝環(huán)境等都是需要注意的細(xì)節(jié),這樣才能獲取真正有價值的數(shù)據(jù)。
先將圖片導(dǎo)入到計算機,再利用圖像處理軟件進(jìn)行批量操作,如裁切、調(diào)整大小等,最后按照不同分類統(tǒng)一重命名,以備使用。
2.提取特征
使用OpenCV可以查找圖像輪廓的不同特征,如面積、周長、寬高比等。通過繪制圖像輪廓,提取圖像特征,計算各類櫻桃的投影面積和寬高比。
(1)計算投影面積
計算櫻桃的投影面積,相當(dāng)于識別它的“大小”,計算方法大體與本欄目上期文章中計算小番茄面積方法一致,需要先將圖片進(jìn)行灰度化和二值化處理,然后通過獲取連通域繪制櫻桃的輪廓,最后通過圖像輪廓計算得到圖像的面積。代碼如圖1所示。
這里需要注意的是,在計算大黃櫻桃投影面積時,需要更改cv2.threshold()中的參數(shù),顏色閾值127改為155,才可以準(zhǔn)確識別大黃櫻桃的輪廓面積。
(2)計算寬高比
計算櫻桃輪廓的寬高比,相當(dāng)于識別它的“胖瘦”,在OpenCV中可以通過在找到的圖形外圍繪制外接矩形邊框的方法(如圖2),計算寬高比。通過函數(shù)cv2.boundingRect()獲取輪廓的范圍,返回外接矩形的四個參數(shù)——x,y,w,h,其中(x,y)是矩陣左上角坐標(biāo),w,h為矩陣的寬和高,并用函數(shù)cv2.rectangle()畫出矩形。最后,計算出邊界矩形的寬高比,即櫻桃的寬高比。代碼如圖3所示。
(3)導(dǎo)出數(shù)據(jù)
導(dǎo)出數(shù)據(jù)的過程也與前面文章中導(dǎo)出投影面積數(shù)據(jù)的步驟相似,通過在Python中導(dǎo)入xlwt庫,創(chuàng)建不同的工作表,將投影面積數(shù)據(jù)和寬高比數(shù)據(jù)分別批量自動記錄到不同的工作表中,種類設(shè)置大紅櫻桃為R,大黃櫻桃為Y,小櫻桃1組為LA,小櫻桃2組為LB。代碼如圖4所示。
● 數(shù)據(jù)分析
要比較兩組小樣本數(shù)據(jù)是否存在差異性,可以使用R語言來進(jìn)行檢驗,并繪制圖像,進(jìn)行直觀分析。
1.差異性檢驗
這里首選T檢驗,它用于檢驗兩個樣本總體均值是否一致,適用條件是小樣本、數(shù)據(jù)服從正態(tài)分布、方差齊性。因此,在做T檢驗前,首先要對兩組小樣本進(jìn)行正態(tài)性檢驗和方差齊性檢驗。本欄目上期文章中用實驗驗證過植物果實投影面積等特征是符合正態(tài)分布的,在這里對小樣本數(shù)據(jù)將再次驗證。
①正態(tài)性檢驗。在導(dǎo)入數(shù)據(jù)后,通過Shapiro-Wilk進(jìn)行正態(tài)性檢驗,分別對大紅櫻桃和大黃櫻桃(簡稱RY)的投影面積和寬高比進(jìn)行檢驗,對兩組小櫻桃樣本(簡稱LALB)也進(jìn)行正態(tài)性檢驗。對RY投影面積數(shù)據(jù)的正態(tài)性檢驗,運行代碼結(jié)果如圖5所示。
由圖5可知,兩個p-value均大于0.05,說明兩組數(shù)據(jù)均符合正態(tài)分布。經(jīng)檢驗,所有樣本的輪廓特征數(shù)據(jù)均符合正態(tài)分布。
②方差齊性檢驗。方差齊性檢驗是對兩樣本方差是否相同進(jìn)行的檢驗。這里將使用F檢驗來檢驗方差齊性,可以使用var.test()函數(shù)來完成,對RY投影面積的方差齊性檢驗,運行結(jié)果如圖6所示。
在F檢驗中,p-value=0.7072>0.05,因此認(rèn)為RY兩組數(shù)據(jù)的方差之間沒有顯著差異。經(jīng)檢驗,所有樣本的輪廓特征數(shù)據(jù)總體滿足方差齊性。
③T檢驗。兩組數(shù)據(jù)獨立,呈正態(tài)分布,且滿足方差齊性,因此可以使用T檢驗來進(jìn)行兩組數(shù)據(jù)的差異性檢驗。通過函數(shù)t.test()實現(xiàn)差異性檢驗,如RY投影面積的檢驗如圖7所示。
p-value=1.133e-07<0.05,說明RY的投影面積有顯著差異,且經(jīng)檢驗,寬高比p-value=0.02105<0.05,同樣說明RY寬高比有顯著差異。而兩組小櫻桃LALB的差異性檢驗結(jié)果,投影面積p-value=0.8612>0.05,寬高比p-value=0.3749>0.05,驗證假設(shè):大紅櫻桃和大黃櫻桃的兩個輪廓特征數(shù)據(jù)有顯著差異,兩組小櫻桃間的輪廓特征數(shù)據(jù)沒有顯著差異。
3.繪制組間差異柱狀圖
柱狀圖是差異可視化的一種表現(xiàn)形式,這里用R語言來繪制組間差異柱狀圖,主要使用的是功能強大的R包ggplot2來實現(xiàn)。在導(dǎo)入ggplot2包后,讀入樣本數(shù)據(jù),通過ggplot()函數(shù)開始繪制圖層。從柱狀圖可以直觀看出,兩組數(shù)據(jù)資料間存在顯著差異。組間差異柱狀圖為差異性檢驗提供了一種可視化方法。
● 總結(jié)
本實驗在Python中使用OpenCV加工處理圖像,獲取多組植物果實的輪廓特征,并導(dǎo)出數(shù)據(jù)資料。在此基礎(chǔ)上,使用R語言進(jìn)行數(shù)據(jù)分析,對小樣本數(shù)據(jù)進(jìn)行組間的差異性檢驗,以此驗證問題假設(shè)。