孫麗君 曾祥潘 吳俊杰
正態(tài)分布,又稱為高斯分布,它廣泛存在于自然界和我們?nèi)粘5纳a(chǎn)生活中。簡單地說,正態(tài)分布的特點(diǎn)就是中等的占大多數(shù),兩極的占很少一部分,如某地區(qū)8月的平均氣溫,某班級(jí)的學(xué)生成績、身高等,一般都服從正態(tài)分布。那么我們猜想是不是買來的小番茄大小也符合正態(tài)分布呢?能否用計(jì)算機(jī)采集數(shù)據(jù),抽取模型,驗(yàn)證一下這一理論呢?
本實(shí)驗(yàn)將利用OpenCV結(jié)合Python代碼的方式進(jìn)行數(shù)據(jù)的采集,并使用SPSS來進(jìn)行數(shù)據(jù)正態(tài)分布檢測。通過實(shí)驗(yàn)探索活動(dòng)引導(dǎo)學(xué)生使用計(jì)算機(jī)解決實(shí)際問題,體驗(yàn)人工智能的應(yīng)用,并為今后用計(jì)算機(jī)生成“仿真番茄植物園”一類的場景提供數(shù)據(jù)模型支持,借以完成廣義圖靈原理的進(jìn)一步探究工作。
● 設(shè)計(jì)思路
嘗試通過本實(shí)驗(yàn)活動(dòng),實(shí)現(xiàn)小番茄投影面積的自動(dòng)獲取,并檢測投影面積數(shù)據(jù)是否符合正態(tài)分布。將生活中的實(shí)際問題利用計(jì)算機(jī)提取抽象數(shù)據(jù)模型,并進(jìn)行檢測,驗(yàn)證我們的猜想。實(shí)驗(yàn)過程利用OpenCV結(jié)合Python程序?qū)σ延行》褕D片進(jìn)行圖像特征提取,并提取投影面積,同時(shí)保存數(shù)據(jù);利用軟件SPSS,進(jìn)行數(shù)據(jù)分析檢測,繪制直方圖,驗(yàn)證數(shù)據(jù)是否符合正態(tài)分布。
在此實(shí)驗(yàn)原理基礎(chǔ)上,可以進(jìn)行應(yīng)用拓展,如小番茄重量的數(shù)據(jù)測試等。
● 活動(dòng)準(zhǔn)備
一組小番茄照片樣本(應(yīng)當(dāng)選擇自然的、未經(jīng)人為分揀的小番茄,使用草莓、瓜子一類的樣本也應(yīng)注意這一點(diǎn)),裝有Python、SPSS的計(jì)算機(jī),源代碼等文件。本實(shí)驗(yàn)Python的編輯使用的是海龜編輯器。
● 程序?qū)崿F(xiàn)
1.采集數(shù)據(jù),整理樣本
(1)選擇并拍攝小番茄圖片
要體驗(yàn)日常生活中的正態(tài)分布現(xiàn)象,首先從收集數(shù)據(jù)開始,這里采用直接拍照收集數(shù)據(jù)的方式。本實(shí)驗(yàn)選用的樣本是小番茄,主要是考慮到它的顏色比較單一,大小適中,方便拍攝和采集數(shù)據(jù)。
首先將一個(gè)小番茄擺放到一張白紙上(因?yàn)榘咨尘芭c小番茄顏色反差較大),然后固定角度,給每個(gè)小番茄依次進(jìn)行拍照。這里要注意到光線的問題,光線太亮容易造成小番茄表皮反光變白,會(huì)使后面的面積計(jì)算出現(xiàn)偏差,因此拍攝環(huán)境光線要略暗些。
(2)調(diào)整并重命名樣本圖片
在完成數(shù)據(jù)的收集后,要進(jìn)一步整理樣本,將所有圖片進(jìn)行簡單預(yù)處理,如調(diào)整圖片大小、裁切圖片等。然后,利用上頁圖1所示的代碼對(duì)圖片批量重命名,進(jìn)行統(tǒng)一編號(hào)。
經(jīng)過數(shù)據(jù)加工處理后,生成了一組大小相同、命名規(guī)律的樣本圖片(如圖2)。
2.求取投影面積,導(dǎo)出數(shù)據(jù)文件
(1)計(jì)算小番茄的面積
在OpenCV中,可以利用其函數(shù)繪制圖像輪廓,求取輪廓面積。那么,首先就要識(shí)別小番茄的形狀,繪制出小番茄的輪廓。識(shí)別輪廓就是將相同顏色或灰度的點(diǎn)連成曲線,因此需要先將圖像灰度化。為了更加準(zhǔn)確,還要對(duì)圖片進(jìn)行二值化處理,即將整幅圖片分為黑白兩色的圖像。OpenCV識(shí)別的是黑色背景中的白色物體,二值化后小番茄為黑色,因此要將函數(shù)cv2.threshold中的參數(shù)設(shè)置為cv2.THRESH_BINARY_INV,進(jìn)行黑白二值反轉(zhuǎn),使小番茄變?yōu)榘咨?、背景為黑色。程序代碼如圖3所示。
接下來,通過獲取連通域繪制小番茄的輪廓。這里利用函數(shù)cv2.findContours來查找輪廓,設(shè)置參數(shù)只保留端點(diǎn),檢測外輪廓,通過返回值,獲取連通域。使用函數(shù)cv2.drawContours來繪制小番茄的輪廓,設(shè)置參數(shù),如畫筆的大小、顏色,根據(jù)輪廓各點(diǎn)列表,繪制所有輪廓,返回結(jié)果為繪制了輪廓的圖像。運(yùn)行如圖4所示的代碼,得到的圖像的效果圖如圖5所示。
最后,通過圖像輪廓,利用函數(shù)cv2.contourArea計(jì)算得到圖像的面積(如下頁圖6)。
(2)利用程序批量處理數(shù)據(jù)
已經(jīng)做到了對(duì)單張樣本圖片中小番茄的面積求取,如何獲得大量圖片中的小番茄面積數(shù)據(jù),是接下來要研究的問題。
首先是自動(dòng)讀取文件夾下的圖片。Python中的os模塊中有一個(gè)listdir函數(shù)可以遍歷讀取文件夾下的文件。其中,它的參數(shù)就是文件夾的路徑。這就可以通過它讀取文件夾下的所有圖片,并獲取圖片的文件名;再利用imread函數(shù)讀取圖片,就可以自動(dòng)讀入文件夾下的所有圖片進(jìn)行處理了(如下頁圖7)。
接著,要解決的問題是記錄所有計(jì)算所得的面積數(shù)據(jù)。先在Python中導(dǎo)入xlwt庫,創(chuàng)建一個(gè)Excel文件,設(shè)置編碼,創(chuàng)建一個(gè)工作表;然后將所有的面積數(shù)據(jù),寫入文檔中對(duì)應(yīng)的行列中;最后將數(shù)據(jù)文檔命名保存。因?yàn)槭桥繉懭霐?shù)據(jù),所以代碼中定義了一個(gè)變量i,用來定義行坐標(biāo)(首行為0),以此實(shí)現(xiàn)自動(dòng)記錄所有數(shù)據(jù)(如下頁圖8)。
● 數(shù)據(jù)分析
檢測小番茄投影面積數(shù)據(jù)是否服從正態(tài)分布,這里選用的是數(shù)據(jù)分析軟件SPSS來幫助處理分析數(shù)據(jù)。接下來,探究如何對(duì)數(shù)據(jù)資料進(jìn)行正態(tài)性檢測。檢測方法之一就是使用偏度(Skewness)和峰度(Kurtosis)這兩個(gè)統(tǒng)計(jì)量來進(jìn)行正態(tài)性檢測。正態(tài)分布的曲線,又稱鐘形曲線,其特點(diǎn)是中間高,兩頭低,左右對(duì)稱。偏度是指左右不對(duì)稱的程度,峰度指圖形的陡緩程度,它們都約等于零,同時(shí)計(jì)算Z評(píng)分(偏度值/標(biāo)準(zhǔn)誤,峰度值/標(biāo)準(zhǔn)誤)在±1.96之間,則認(rèn)為數(shù)據(jù)服從正態(tài)分布。
從圖9的SPSS正態(tài)數(shù)據(jù)檢測結(jié)果分析,兩Z評(píng)分值經(jīng)計(jì)算,偏度值/標(biāo)準(zhǔn)誤=1.73,峰度值/標(biāo)準(zhǔn)=-1.28,誤均在±1.96之間,說明在數(shù)據(jù)分布上符合正態(tài)分布。此外,從圖10直方圖的頻數(shù)分布圖像來看,也可認(rèn)為數(shù)據(jù)資料服從正態(tài)分布。
● 討論
從科研角度來說,使用SPSS更加準(zhǔn)確,但從信息科技教學(xué)需求出發(fā),上面的數(shù)據(jù)分析能否使用Excel進(jìn)行呢?當(dāng)然也是可以的,只是需要進(jìn)行一些數(shù)據(jù)的計(jì)算,再利用數(shù)據(jù)分析工具繪制出直方圖。對(duì)中學(xué)水平的研究而言,如果標(biāo)準(zhǔn)差不超過均值的一半,并且能夠看到比較明顯的直方圖峰形,就可以判斷數(shù)據(jù)符合正態(tài)分布。
這組實(shí)驗(yàn)的改進(jìn)之處首先可以增大實(shí)驗(yàn)的樣本量,判斷面積在28000~32000平方像素的“次峰”現(xiàn)象是一種偶然現(xiàn)象還是一種小番茄物種特有的規(guī)律。其次可以改進(jìn)實(shí)驗(yàn)設(shè)備,使用機(jī)械臂一類的工具自動(dòng)擺放小番茄,自動(dòng)拍照,減少大量數(shù)據(jù)觀測中的人工工作量。最后可以通過對(duì)小番茄的重量、高度等綜合指標(biāo)的分析進(jìn)行相關(guān)性檢驗(yàn),或者比較不同形態(tài)的小番茄(花生形、桃子形、橢圓形)的規(guī)律差異。
本實(shí)驗(yàn)使用OpenCV加工處理圖像,結(jié)合Python編程批量獲取數(shù)據(jù)。在此基礎(chǔ)上,進(jìn)行數(shù)據(jù)分析,對(duì)數(shù)據(jù)進(jìn)行正態(tài)性檢測,從方法上來說還可以有很多進(jìn)一步的討論空間,考慮到篇幅,我們會(huì)在后續(xù)的文章中繼續(xù)討論。