基于计算机图形学的植物果实投影面积检测正态分布检验

2022-05-19 10:56孙丽君曾祥潘吴俊杰
中国信息技术教育 2022年9期
关键词:正态分布轮廓样本

孙丽君 曾祥潘 吴俊杰

正态分布,又称为高斯分布,它广泛存在于自然界和我们日常的生产生活中。简单地说,正态分布的特点就是中等的占大多数,两极的占很少一部分,如某地区8月的平均气温,某班级的学生成绩、身高等,一般都服从正态分布。那么我们猜想是不是买来的小番茄大小也符合正态分布呢?能否用计算机采集数据,抽取模型,验证一下这一理论呢?

本实验将利用OpenCV结合Python代码的方式进行数据的采集,并使用SPSS来进行数据正态分布检测。通过实验探索活动引导学生使用计算机解决实际问题,体验人工智能的应用,并为今后用计算机生成“仿真番茄植物园”一类的场景提供数据模型支持,借以完成广义图灵原理的进一步探究工作。

● 设计思路

尝试通过本实验活动,实现小番茄投影面积的自动获取,并检测投影面积数据是否符合正态分布。将生活中的实际问题利用计算机提取抽象数据模型,并进行检测,验证我们的猜想。实验过程利用OpenCV结合Python程序对已有小番茄图片进行图像特征提取,并提取投影面积,同时保存数据;利用软件SPSS,进行数据分析检测,绘制直方图,验证数据是否符合正态分布。

在此实验原理基础上,可以进行应用拓展,如小番茄重量的数据测试等。

● 活动准备

一组小番茄照片样本(应当选择自然的、未经人为分拣的小番茄,使用草莓、瓜子一类的样本也应注意这一点),装有Python、SPSS的计算机,源代码等文件。本实验Python的编辑使用的是海龟编辑器。

● 程序实现

1.采集数据,整理样本

(1)选择并拍摄小番茄图片

要体验日常生活中的正态分布现象,首先从收集数据开始,这里采用直接拍照收集数据的方式。本实验选用的样本是小番茄,主要是考虑到它的颜色比较单一,大小适中,方便拍摄和采集数据。

首先将一个小番茄摆放到一张白纸上(因为白色背景与小番茄颜色反差较大),然后固定角度,给每个小番茄依次进行拍照。这里要注意到光线的问题,光线太亮容易造成小番茄表皮反光变白,会使后面的面积计算出现偏差,因此拍摄环境光线要略暗些。

(2)调整并重命名样本图片

在完成数据的收集后,要进一步整理样本,将所有图片进行简单预处理,如调整图片大小、裁切图片等。然后,利用上页图1所示的代码对图片批量重命名,进行统一编号。

经过数据加工处理后,生成了一组大小相同、命名规律的样本图片(如图2)。

2.求取投影面积,导出数据文件

(1)计算小番茄的面积

在OpenCV中,可以利用其函数绘制图像轮廓,求取轮廓面积。那么,首先就要识别小番茄的形状,绘制出小番茄的轮廓。识别轮廓就是将相同颜色或灰度的点连成曲线,因此需要先将图像灰度化。为了更加准确,还要对图片进行二值化处理,即将整幅图片分为黑白两色的图像。OpenCV识别的是黑色背景中的白色物体,二值化后小番茄为黑色,因此要将函数cv2.threshold中的参数设置为cv2.THRESH_BINARY_INV,进行黑白二值反转,使小番茄变为白色、背景为黑色。程序代码如图3所示。

接下来,通过获取连通域绘制小番茄的轮廓。这里利用函数cv2.findContours来查找轮廓,设置参数只保留端点,检测外轮廓,通过返回值,获取连通域。使用函数cv2.drawContours来绘制小番茄的轮廓,设置参数,如画笔的大小、颜色,根据轮廓各点列表,绘制所有轮廓,返回结果为绘制了轮廓的图像。运行如图4所示的代码,得到的图像的效果图如图5所示。

最后,通过图像轮廓,利用函数cv2.contourArea计算得到图像的面积(如下页图6)。

(2)利用程序批量处理数据

已经做到了对单张样本图片中小番茄的面积求取,如何获得大量图片中的小番茄面积数据,是接下来要研究的问题。

首先是自动读取文件夹下的图片。Python中的os模块中有一个listdir函数可以遍历读取文件夹下的文件。其中,它的参数就是文件夹的路径。这就可以通过它读取文件夹下的所有圖片,并获取图片的文件名;再利用imread函数读取图片,就可以自动读入文件夹下的所有图片进行处理了(如下页图7)。

接着,要解决的问题是记录所有计算所得的面积数据。先在Python中导入xlwt库,创建一个Excel文件,设置编码,创建一个工作表;然后将所有的面积数据,写入文档中对应的行列中;最后将数据文档命名保存。因为是批量写入数据,所以代码中定义了一个变量i,用来定义行坐标(首行为0),以此实现自动记录所有数据(如下页图8)。

● 数据分析

检测小番茄投影面积数据是否服从正态分布,这里选用的是数据分析软件SPSS来帮助处理分析数据。接下来,探究如何对数据资料进行正态性检测。检测方法之一就是使用偏度(Skewness)和峰度(Kurtosis)这两个统计量来进行正态性检测。正态分布的曲线,又称钟形曲线,其特点是中间高,两头低,左右对称。偏度是指左右不对称的程度,峰度指图形的陡缓程度,它们都约等于零,同时计算Z评分(偏度值/标准误,峰度值/标准误)在±1.96之间,则认为数据服从正态分布。

从图9的SPSS正态数据检测结果分析,两Z评分值经计算,偏度值/标准误=1.73,峰度值/标准=-1.28,误均在±1.96之间,说明在数据分布上符合正态分布。此外,从图10直方图的频数分布图像来看,也可认为数据资料服从正态分布。

● 讨论

从科研角度来说,使用SPSS更加准确,但从信息科技教学需求出发,上面的数据分析能否使用Excel进行呢?当然也是可以的,只是需要进行一些数据的计算,再利用数据分析工具绘制出直方图。对中学水平的研究而言,如果标准差不超过均值的一半,并且能够看到比较明显的直方图峰形,就可以判断数据符合正态分布。

这组实验的改进之处首先可以增大实验的样本量,判断面积在28000~32000平方像素的“次峰”现象是一种偶然现象还是一种小番茄物种特有的规律。其次可以改进实验设备,使用机械臂一类的工具自动摆放小番茄,自动拍照,减少大量数据观测中的人工工作量。最后可以通过对小番茄的重量、高度等综合指标的分析进行相关性检验,或者比较不同形态的小番茄(花生形、桃子形、椭圆形)的规律差异。

本实验使用OpenCV加工处理图像,结合Python编程批量获取数据。在此基础上,进行数据分析,对数据进行正态性检测,从方法上来说还可以有很多进一步的讨论空间,考虑到篇幅,我们会在后续的文章中继续讨论。

猜你喜欢
正态分布轮廓样本
生活常态模式
跟踪导练(三)
直击高考中的用样本估计总体
随机微分方程的样本Lyapunov二次型估计
基于支持向量机的测厚仪CS值电压漂移故障判定及处理
七年级数学下册期末检测题(B)
二项分布及其应用、正态分布
儿童筒笔画
高考正态分布问题例析
创造早秋新轮廓