问题 5 的模型建立和解决方案31模型建立与问题 5 的解决 31 9.1 建立改进的苹果识别模型。…31问题 5 的模型建立和解决方案 31 9.1 建立改进的苹果识别模型。…31 9.1.1 VGG19 网络原理概述319.1.1 VGG19 网络的原理概述 … 31 9.1.2 VGG19 网络的应用 ...339.1.1 VGG19 网络原理概述 31 9.1.2 VGG19 网络的应用 ...33 9.2 所有 Apple 图像 ID 号的结果和直方图...349.2 所有苹果图像 ID 号码的结果和直方图 … 34
模型评估和进一步讨论。…35模型评估与进一步讨论。… 35 10.1 优点 ...35 10.1 优点 … 35 10.2 缺点35 10.2 缺点 … 35 10.3 改进措施 ...3610.2 缺点 35 10.3 改进措施 ...36
引用。。。36 参考文献 … 36
附录。。。38 附录 … 38 附录 … 38
I. 引言 一. 引言
1.1 问题背景
苹果采摘机器人已成为最近的热点。过去,苹果收获主要依靠体力劳动,在苹果成熟期需要大量劳动力工作数天。然而,随着农村劳动力老龄化和年轻人离开农村工作的趋势,许多地方在苹果收获季节出现劳动力短缺。为了解决这个问题,人们已经开始开发苹果采摘机器人。但由于果园环境和受控实验的变化,各种苹果采摘机器人在全球范围内的广泛采用和应用并不理想。
同时,现有的机器人大多无法实现对树叶、树枝、水果等障碍物的精确识别。直接收割可能会损坏水果甚至收割设备,从而影响效率和水果质量。此外,针对不同收获果实的识别和区分技术存在不足,使得苹果的采后鉴定具有挑战性。
因此,建立高效准确的苹果图像识别模型至关重要。本文利用图像分割和识别技术、数学模型和深度学习网络,分析了苹果图像中苹果的数量、位置、成熟度和质量等特征,然后提出了一种可行的苹果图像识别算法来应对这些挑战。
1.2 问题重述
考虑到问题陈述中的背景信息和限制条件,应解决以下问题:
问题 1:对附件 1 中的图像数据集进行预处理,分析苹果数量与图像数据集中各种参数的关系,确定所需的图像特征,建立数学模型,统计每张图像中的苹果数量。然后绘制苹果数量分布的直方图以可视化数据。
问题 2:在上一个问题中,我们已经确定了苹果的数量。接下来,我们需要确定图像中每个苹果的位置。我们建立一个笛卡尔坐标系,以图像的左下角为原点。由于一张图片可能包含多个苹果,我们需要为每个苹果分配一个唯一的编号,并存储所有苹果的坐标信息。然后,我们将绘制苹果坐标的散点图以可视化数据。
问题 3:在这个问题中,我们需要找到一种合理的方法来计算苹果的成熟度,然后应用这种方法进行计算。应通过创建代表所有苹果成熟度分布的直方图来可视化结果,以可视化数据。
问题 4:在问题 1 和 2 中,我们已经确定了苹果的数量和位置。现在,我们需要根据这些信息计算苹果的二维面积。关键在于确定苹果的边界。此外,我们还需要估计苹果的质量。由于我们无法直接测量质量,因此只能获得估计值。因此,我们需要建立问题 4:在问题 1 和 2 中,我们已经确定了苹果的数量和位置。现在,我们需要根据这些信息计算苹果的二维面积。关键在于确定苹果的边界。此外,我们还需要估算苹果的质量。由于我们无法直接测量质量,因此只能获得一个估计值。因此,我们需要建立苹果的二维面积与质量之间的关系。 图像中苹果的二维面积与其质量之间的关系,以便进行估计。随后,我们将通过创建直方图来可视化所有苹果的质量分布。
问题 5:在这个问题中,任务是从各种水果图像中识别苹果。这涉及更深入地提取特定于苹果的图像特征,训练苹果识别模型,并应用它来确定附件 3 中的哪些图像包含苹果。随后,他们的 ID 号的分布将通过创建用于数据分析的直方图来可视化。
II. 问题分析
2.1 问题一分析
在问题 1 中,根据附件 1 中提供的苹果图像数据,我们旨在确定可以帮助我们识别有关苹果相关信息的特征。据观察,成熟的苹果表现出红色和近似球形外观的特征(在二维图像中可以被认为是圆形的)。基于这两个特征,我们可以识别图像中的苹果。在建立模型之前,我们需要对图像数据进行预处理。
在这里,我们将原始 RGB 图像转换为 Lab 图像。随后,我们过滤
a
∗
a
∗
a^(**) \mathrm{a}^{*} 组件(表示从绿色到红色的光谱变化)以获取 Lab 色彩空间中的 A 通道图像。我们对这个 A 通道图像进行二值化,并应用高斯滤波来降低噪声。接下来,利用圆形特征,我们采用改进的 Hough 圆变换来检测和计算图像中的圆圈数量。此外,我们还会合并高度重叠的圆圈。最后,我们求解附件 1 中的数据并绘制直方图。
2.2 问题二分析2.2 问题二的分析
在问题 2 中,我们需要确定每张图像中苹果的位置。在对问题 1 中所有图像进行预处理并获得每个图像中的苹果数量的基础上,我们可以使用问题 1 中开发的模型粗略地确定苹果的位置,并在对它们进行编号后获得质心。但是,经过分析和比较,我们发现苹果的几何中心与从 Hough 圆得到的质心之间仍然存在一定的偏差。在问题 2 中,我们需要识别每张图像中苹果的位置。在问题 1 中对所有图像进行预处理并获得每张图像中苹果的数量的基础上,我们可以使用在问题 1 中开发的模型,结合编号后的质心,大致确定苹果的位置。然而,经过分析和比较,我们发现苹果的几何中心与从霍夫圆获得的质心之间仍然存在一定的偏差。
因此,我们采用了一种基于深度学习的新识别方法,使用 YOLOv4 网络来确定每个苹果的坐标。我们首先使用具有清晰和独特特征的图像来训练模型,然后将经过训练的模型应用于附件 1 中的所有图像。最后,我们将识别结果与训练结果和问题 1 的结果进行比较,对模型进行敏感性分析,并绘制所有苹果几何坐标的散点图。因此,我们采用了一种基于深度学习的新识别方法来确定每个苹果的坐标,使用 YOLOv4 网络。我们首先使用具有清晰和独特特征的图像训练模型,然后将训练好的模型应用于附件 1 中的所有图像。最后,我们将识别结果与训练结果和问题 1 的结果进行比较,对模型进行敏感性分析,并绘制所有苹果的几何坐标散点图。
2.3 问题三分析2.3 问题三的分析
在问题 3 中,我们可以遵循问题 2 中使用的方法,利用 YOLOv4 网络进行模型训练。但是,在训练期间,有必要用苹果的成熟状态(成熟、半成熟和未成熟)注释手动添加的边界框。随后,对模型进行训练,并应用训练后的模型来识别在问题 3 中,我们可以采用问题 2 中使用的方法,利用 YOLOv4 网络进行模型训练。然而,在训练过程中,有必要对手动添加的边界框进行标注,标注苹果的成熟状态(成熟、半成熟和未成熟)。随后,模型进行训练,并将训练好的模型应用于识别每个苹果的成熟状态。 图像中每个苹果的成熟状态。我们获取有关每个已识别苹果的成熟度、状态和置信度的信息。根据这些信息,我们可以设计一个函数来测量苹果的成熟度,从而允许我们计算每个苹果的成熟度。最后,生成描述所有苹果成熟度分布的直方图以供进一步分析。图像。我们获取每个识别出的苹果的成熟状态和置信水平的信息。基于这些信息,我们可以设计一个函数来测量苹果的成熟度,从而计算每个苹果的成熟度。最后,生成一个直方图,描绘所有苹果的成熟度分布,以便进行进一步分析。
2.4 问题四分析2.4 问题四的分析
在问题 4 中,我们要解决的问题是计算二维图像的面积并估计苹果的质量。对于面积问题,我们不妨使用我们在第一个问题中获得的半径 rad 来计算它作为一个简单的估计。正如我们在假设中所说,我们假设苹果的密度在发育周期中没有显著变化,这是一个固定值,可以记录为
ρ
ρ
rho \rho .此外,我们团队注意到附录 1 中的图像存在明显的差异 大 近 和 远 小 的问题 导致 错误 结果 即 对于 图像 中的 某些 苹果 ,实际 的 苹果 更大 而 图像 中的 苹果 更小。为此,我们的团队回顾了有关通过二维平面图像计算物体实际距离的相关文献。不幸的是,文献中回顾的方法并不适用于我们团队面临的困境。经过讨论,我们最终提出了一种新的方法 - 亮度估计法,以近似估计苹果的实际大小。在这种方法中,我们需要知道相机在拍摄时的焦距,最后我们绘制所有苹果的质量分布直方图。 在问题 4 中,我们想要解决的问题是计算二维图像的面积并估算苹果的质量。对于面积问题,我们不妨使用在第一个问题中获得的半径 rad 来进行简单估算。正如我们在假设中所说,我们假设苹果的密度在发育周期中没有显著变化,这是一个固定值,可以记录为
ρ
ρ
rho \rho 。此外,我们团队注意到附录 1 中的图像存在明显差异,近大远小的问题导致某些苹果的实际大小与图像中的苹果大小不符。为此,我们团队回顾了通过二维平面图像计算物体实际距离的相关文献。不幸的是,文献中回顾的方法并不适用于我们团队面临的困境。经过讨论,我们最终提出了一种新方法——亮度估计法,以大致估算苹果的实际大小。 在这种方法中,我们需要知道拍摄时相机的焦距,最后我们绘制所有苹果的质量分布直方图。
2.5 问题五分析问题五的分析 2.5
这个问题需要我们将苹果与图像中的其他水果区分开来,这需要我们提取更多关于苹果的信息特征,而不是像前面的问题那样计算苹果的位置、成熟度、质量等。如果我们继续使用 YOLOv4 网络,当训练次数高的时候,时间复杂度会太高。因此,我们应该选择卷积层更多、计算速度更快的深度学习算法,这样才能更准确。并有效地识别苹果。同时,考虑到 Apple ID 号太多,我们选择每 1000 个连续 ID 进行聚类,统计这 1000 个 ID 内的苹果图片数量,然后绘制直方图。这个问题需要我们将苹果与图像中的其他水果区分开来,这需要我们提取更多关于苹果的信息特征,而不是像前面的问题那样计算苹果的位置、成熟度、质量等。如果我们继续使用 YOLOv4 网络,当训练次数高的时候,时间复杂度会太高。因此,我们应该选择卷积层更多、计算速度更快的深度学习算法,这样才能更准确,并有效地识别苹果。同时,考虑到 Apple ID 号太多,我们选择每 1000 个连续 ID 进行聚类,统计这 1000 个 ID 内的苹果图片数量,然后绘制直方图。
III. 模型假设 III. 模型假设
3.1 假设 1 3.1 假设 1
图像背景中通常有小而多的苹果,很难计数。为了保证图像识别的速度和准确性,我们将忽略图像中的小苹果。图像背景中常常有许多小苹果,数量众多,难以计数。为了确保图像识别的速度和准确性,我们将忽略图像中的小苹果。
解释:这个假设是合理且充分的。对于假设的情况,在现实生活中,你可以通过靠近以缩短距离、拍摄部分图像和改变拍摄角度来更好地识别苹果,而不是将其强加在背景中数量众多且难以计数的苹果上。检测,无法保证识别的速度和准确性。解释:这个假设是合理且充分的。在假设的情况下,在现实生活中,您可以通过靠近以缩短距离、拍摄部分图像和改变拍摄角度来更好地识别苹果,而不是强迫在背景中众多且难以计数的苹果上进行检测,这无法保证识别的速度和准确性。
3.2 假设 2 3.2 假设 2
苹果的果实体积和密度在果实成熟期基本没有变化。如果忽略小误差,则可以将其视为固定值。苹果的果实体积和密度在果实的成熟期基本保持不变。如果忽略小误差,可以视为固定值。
解释: 一般来说,果实在结果期发育,整体形状继续扩大。当果实形状基本稳定时,开始进入果实成熟阶段。果实在成熟阶段的外部表现主要是果皮颜色的变化。它的形状和质量基本没有变化,它的密度也可以认为没有变化。解释:一般来说,果实在结果期发育,整体形状继续扩大。当果实形状基本稳定时,开始进入果实成熟阶段。果实在成熟阶段的外部表现主要是果皮颜色的变化。它的形状和质量基本没有变化,它的密度也可以认为没有变化。
3.3 假设 3 3.3 假设 3
所有的苹果都是红苹果。青苹果被认为是未成熟的红苹果,我们认为它们的成熟程度与苹果从绿色到红色的渐变程度呈线性关系。所有苹果都是红苹果。绿苹果被视为未成熟的红苹果,我们认为它们的成熟度与苹果从绿到红的渐变程度呈线性关系。
说明:青苹果和未成熟的红苹果的外观非常相似,由于我们能获得的图像数据只是像素较低的二维图像,因此我们无法准确区分两者。考虑到大多数图像数据类型都是红苹果,我们可以认为所有的苹果类型都是红苹果,而苹果的成熟度只能通过颜色来区分,所以假设苹果的颜色变化和成熟度变化是线性的,相关的让我们更容易构建模型, 而且与实际情况的差距很小。说明:青苹果和未成熟的红苹果的外观非常相似,由于我们能获得的图像数据只是像素较低的二维图像,因此我们无法准确区分两者。考虑到大多数图像数据类型都是红苹果,我们可以认为所有的苹果类型都是红苹果,而苹果的成熟度只能通过颜色来区分,所以假设苹果的颜色变化和成熟度变化是线性的,相关的让我们更容易构建模型,而且与实际情况的差距很小。
3.4 假设 4 3.4 假设 4
在给出的图像数据中,所有照片都是在自然光下以均匀柔和的光线拍摄的。拍摄的物体都是静物,拍摄过程中没有产生重影。所用拍摄设备的焦距相同。在给定的图像数据中,所有照片都是在自然光下拍摄的,光线均匀柔和。拍摄的对象都是静物,拍摄过程中没有产生重影。使用的拍摄设备的焦距相同。
说明:摘苹果的时间一般在白天,所以不需要其他强光源,强光源对成像影响很大,影响识别结果。我们认为光线是均匀柔和的自然光,很容易消除干扰因素。一般情况下,苹果的位置不会因为外界环境的影响而发生太大变化。至少我们可以认为苹果在拍摄时是静止的,消除了成像过程中鬼影对识别结果的干扰。而且由于拣选机器人的成像设备是相同的,因此在实际应用中我们可以认为所有图片的拍摄焦距都是相同的。说明:采摘苹果的时间通常是在白天,因此不需要其他强光源,强光源会对成像产生很大影响,并影响识别结果。我们认为光线是均匀柔和的自然光,容易消除干扰因素。在正常情况下,苹果的位置由于外部环境的影响变化不大。至少我们可以认为在拍摄时苹果是静止的,从而消除成像过程中鬼影对识别结果的干扰。而且由于采摘机器人的成像设备是相同的,在实际应用中我们可以认为所有图片的拍摄焦距是相同的。
IV. 符号 IV. 符号
γ
γ
gamma \gamma
H
~
H
~
widetilde(H) \widetilde{H}
W
img
W
img
W_("img ") W_{\text {img }}
G
m
×
n
G
m
×
n
G_(m xx n)quad G_{m \times n} \quad 表示大小为 mxn 的二维灰度图像上像素的灰度值矩阵
G
m
×
n
G
m
×
n
G_(m xx n)quad G_{m \times n} \quad Represents the grayscale value matrix of pixels on a 2D grayscale image of size mxn
‖
A
‖
‖
A
‖
||A|| \|A\|
用于描述两个圆圈之间重叠率的参数 用于衡量成熟度的加权因子 用于表示苹果成熟度的 函数 用于表示平均成熟度的参数 函数用于表示平均成熟度的参数
二维灰度图像上某个区域的平均亮度
对矩阵 A 的所有元素求和
五、模型建立与问题1的解决 五、模型建立与问题 1 的解决
5.1 苹果识别计数模型的建立
5.1.1 图像数据预处理
首先,我们需要对附件 1 中提供的图像数据进行预处理。我们观察到提供的图像数据是 RGB 格式。为了过滤掉图像中苹果的红色,我们绘制了 R 通道图像。但是,我们注意到,由于其他颜色的干扰(比如树枝的棕色),二值化后得到的图像并不理想,如下图所示:
图 1 原始图像与 RGB 灰度图像的比较
在查阅了相关文献并进行了分析后,我们确定在 Lab 色彩空间中选择 A 通道图像(以下简称 A 通道图像)是一个更可取的选择。这是因为 A 通道图像中的 a* 分量表示从绿色到红色的光谱变化,它可以有效地适应主要由绿色叶子组成的背景。此外,它还有助于减轻来自其他颜色的干扰。
以下是将原始图像的 RGB 参数转换为 Lab 参数的过程。由于 RGB 参数不能直接转换为 Lab 参数,因此我们选择使用 XYZ 参数作为中间步骤,即
RGB
→
XYZ
→
RGB
→
XYZ
→
RGBrarrXYZrarr \mathrm{RGB} \rightarrow \mathrm{XYZ} \rightarrow 实验室。换算公式如下:
第 1 部分 : (RGB 到 XYZ) 假设
r
,
g
r
,
g
r,g \mathrm{r}, \mathrm{g} ,b 是三个通道的像素值,范围为 [0,255],转换公式如下:
{
R
=
gamma
(
r
255.0
)
G
=
gamma
(
g
255.0
)
B
=
gamma
(
b
255.0
)
R
=
gamma
r
255.0
G
=
gamma
g
255.0
B
=
gamma
b
255.0
{[R=gamma((r)/( 255.0))],[G=gamma((g)/( 255.0))],[B=gamma((b)/( 255.0))]:} \left\{\begin{array}{l}
R=\operatorname{gamma}\left(\frac{r}{255.0}\right) \\
G=\operatorname{gamma}\left(\frac{g}{255.0}\right) \\
B=\operatorname{gamma}\left(\frac{b}{255.0}\right)
\end{array}\right.
gamma
(
x
)
=
{
(
x
+
0.055
1.055
)
2.4
(
x
>
0.04045
)
x
12.92
(
otherwise
)
gamma
(
x
)
=
x
+
0.055
1.055
2.4
(
x
>
0.04045
)
x
12.92
(
otherwise
)
gamma(x)={[((x+0.055)/(1.055))^(2.4),(x > 0.04045)],[(x)/( 12.92),(" otherwise ")]:} \operatorname{gamma}(x)=\left\{\begin{array}{cc}
\left(\frac{x+0.055}{1.055}\right)^{2.4} & (x>0.04045) \\
\frac{x}{12.92} & (\text { otherwise })
\end{array}\right.
Gamma 函数用于图像中的非线性色调映射,目的是增强对比度。上面提到的表达式表示常用的 Gamma 函数。
[
X
Y
Z
]
=
M
[
R
G
B
]
X
Y
Z
=
M
R
G
B
[[X],[Y],[Z]]=M[[R],[G],[B]] \left[\begin{array}{l}
X \\
Y \\
Z
\end{array}\right]=M\left[\begin{array}{l}
R \\
G \\
B
\end{array}\right]
其中,变换矩阵 M 由下式给出
M
=
(
0.4124
0.3576
0.1805
0.2126
0.7152
0.0722
0.0193
0.1192
0.9505
)
M
=
0.4124
0.3576
0.1805
0.2126
0.7152
0.0722
0.0193
0.1192
0.9505
M=([0.4124,0.3576,0.1805],[0.2126,0.7152,0.0722],[0.0193,0.1192,0.9505]) M=\left(\begin{array}{lll}
0.4124 & 0.3576 & 0.1805 \\
0.2126 & 0.7152 & 0.0722 \\
0.0193 & 0.1192 & 0.9505
\end{array}\right)
第 2 部分:(XYZ 到 Lab)第 2 部分:(XYZ 到实验室)
L
∗
=
116
f
(
Y
/
Y
n
)
−
16
a
∗
=
500
[
f
(
X
/
X
n
)
−
f
(
Y
/
Y
n
)
]
b
∗
=
200
[
f
(
Y
/
Y
n
)
−
f
(
Z
/
Z
n
)
]
L
∗
=
116
f
Y
/
Y
n
−
16
a
∗
=
500
f
X
/
X
n
−
f
Y
/
Y
n
b
∗
=
200
f
Y
/
Y
n
−
f
Z
/
Z
n
{:[L^(**)=116 f(Y//Y_(n))-16],[a^(**)=500[f(X//X_(n))-f(Y//Y_(n))]],[b^(**)=200[f(Y//Y_(n))-f(Z//Z_(n))]]:} \begin{aligned}
L^{*} & =116 f\left(Y / Y_{n}\right)-16 \\
a^{*} & =500\left[f\left(X / X_{n}\right)-f\left(Y / Y_{n}\right)\right] \\
b^{*} & =200\left[f\left(Y / Y_{n}\right)-f\left(Z / Z_{n}\right)\right]
\end{aligned}
和
f
(
t
)
=
{
t
1
3
if
t
>
(
6
29
)
3
1
3
(
29
6
)
2
t
+
4
29
otherwise
f
(
t
)
=
t
1
3
if
t
>
6
29
3
1
3
29
6
2
t
+
4
29
otherwise
f(t)={[t^((1)/(3))," if "t > ((6)/(29))^(3)],[(1)/(3)((29)/(6))^(2)t+(4)/(29)," otherwise "]:} f(t)=\left\{\begin{array}{lr}
t^{\frac{1}{3}} & \text { if } t>\left(\frac{6}{29}\right)^{3} \\
\frac{1}{3}\left(\frac{29}{6}\right)^{2} t+\frac{4}{29} & \text { otherwise }
\end{array}\right.
在上面的两个公式中,
L
∗
,
a
∗
L
∗
,
a
∗
L^(**),a^(**) \mathrm{L}^{*}, \mathrm{a}^{*} 和
b
∗
b
∗
b^(**) \mathrm{b}^{*} 表示最终 Lab 颜色空间中三个通道的值。X、Y、Z 是将 RGB 转换为 XYZ 后计算的值,并且
Xn
,
Yn
,
Zn
Xn
,
Yn
,
Zn
Xn,Yn,Zn \mathrm{Xn}, \mathrm{Yn}, \mathrm{Zn} 通常设置为默认值
95.047
,
100.0
95.047
,
100.0
95.047,100.0 95.047,100.0 和 108.883 。
基于上述原则,我们实现了通过代码将 RGB 转换为 Lab 的过程。然后,在 MATLAB 中,对于获得的 Lab 图像,我们过滤了 a* 分量并根据 L 值绘制了其二值化图像。结果是 Lab 色彩空间中 A 通道的二进制图像,如下所示:
图 2 通道图
经过比较,我们可以观察到,使用 Lab 色彩空间获得的二值化图像确实比使用 RGB 色彩空间获得的图像具有更好的结果。
然而,仅凭这一点是不够的。通过放大和对比图像,可以明显看出图像中有许多杂色点,并且边缘处有明显的锯齿效果,这可能是由于图像的分辨率较低。这对后续的 Hough Circle Transform 不利。因此,我们需要应用去噪技术来使图像相对平滑。
这里,我们采用高斯滤波的方法: 以下是对高斯滤波方法的简要介绍:这里,我们采用高斯滤波的方法:以下是对高斯滤波方法的简要介绍: 高斯滤波是整个图像的加权平均过程。每个像素的值是通过取其自身值与其邻域中其他像素值的加权平均值来获得的。它是一种线性平滑滤波器,通常用于消除高斯噪声。高斯滤波广泛应用于图像处理的去噪过程。
一维高斯分布 : 一维高斯分布:
G
(
x
)
=
1
2
π
σ
e
−
x
2
2
σ
2
G
(
x
)
=
1
2
π
σ
e
−
x
2
2
σ
2
G(x)=(1)/(sqrt(2pi)sigma)e^(-(x^(2))/(2sigma^(2))) G(x)=\frac{1}{\sqrt{2 \pi} \sigma} e^{-\frac{x^{2}}{2 \sigma^{2}}}
Two - dimensionalGaussiandistribution :二维高斯分布:
G
(
x
,
y
)
=
1
2
π
σ
2
e
−
x
2
+
y
2
2
σ
2
G
(
x
,
y
)
=
1
2
π
σ
2
e
−
x
2
+
y
2
2
σ
2
G(x,y)=(1)/(2pisigma^(2))e^(-(x^(2)+y^(2))/(2sigma^(2))) G(x, y)=\frac{1}{2 \pi \sigma^{2}} e^{-\frac{x^{2}+y^{2}}{2 \sigma^{2}}}
Where
σ
σ
sigma \sigma is typically chosen as 1 . The following is a schematic diagram of the Gaussian distribution. 哪里
σ
σ
sigma \sigma 通常选择为 1。以下是高斯分布的示意图。
我们在这里采用二维高斯滤波。我们在这里采用二维高斯滤波。 调试后,我们选择合适的高斯内核,对之前获得的 a* 通道图像进行高斯滤波。与原始图像相比,生成的去噪图像看起来明显更平滑。
图 3 高斯滤波前后对比图
至此,我们已经完成了对图像数据的预处理。
5.1.2 识别图像中苹果的方法5.1.2 图像中识别苹果的方法
完成图像数据的预处理后,下一步是设计一种方法来识别处理后的图像中的苹果并确定苹果的边界,以便于后续的计数和统计。在完成图像数据的预处理后,我们的下一步是设计一种方法来识别处理过的图像中的苹果,并确定苹果的边界,以便于后续的计数和统计。
考虑到二维图像中苹果的近圆形特征,我们采用了一种改进的霍夫圆变换方法来识别图像中的苹果。以下是 Hough 圆变换的简要说明:考虑到二维图像中苹果的近圆形特征,我们采用了一种改进的霍夫圆变换方法来识别图像中的苹果。以下是霍夫圆变换的简要说明:
霍夫圆变换是经典霍夫变换的扩展,用于检测图像中的线条。原理如下:霍夫圆变换是经典霍夫变换的扩展,后者用于检测图像中的直线。其原理如下:
我们可以使用
(
a
,
b
,
r
)
(
a
,
b
,
r
)
(a,b,r) (a, b, r) 使用中心定义圆
(
a
,
b
)
(
a
,
b
)
(a,b) (a, b) 和 radius
r
r
r r . 我们可以使用
(
a
,
b
,
r
)
(
a
,
b
,
r
)
(a,b,r) (a, b, r) 使用中心定义圆
(
a
,
b
)
(
a
,
b
)
(a,b) (a, b) 和半径
r
r
r r .
如果圆穿过该点
(
x
1
,
y
1
)
x
1
,
y
1
(x_(1),y_(1)) \left(x_{1}, y_{1}\right) ,则它满足以下方程: 如果一个圆通过点
(
x
1
,
y
1
)
x
1
,
y
1
(x_(1),y_(1)) \left(x_{1}, y_{1}\right) ,那么它满足以下方程:
(
x
1
−
a
)
2
+
(
y
1
−
b
)
2
=
r
2
x
1
−
a
2
+
y
1
−
b
2
=
r
2
(x_(1)-a)^(2)+(y_(1)-b)^(2)=r^(2) \left(x_{1}-a\right)^{2}+\left(y_{1}-b\right)^{2}=r^{2}
因此,所有圆都通过该点
(
x
1
,
y
1
)
x
1
,
y
1
(x_(1),y_(1)) \left(x_{1}, y_{1}\right) 可以表示为
(
a
1
(
i
)
,
b
1
(
i
)
,
r
1
(
i
)
)
a
1
(
i
)
,
b
1
(
i
)
,
r
1
(
i
)
(a_(1)(i),b_(1)(i),r_(1)(i)) \left(a_{1}(i), b_{1}(i), r_{1}(i)\right) 哪里
r
1
∈
(
0
,
+
∞
)
r
1
∈
(
0
,
+
∞
)
r_(1)in(0,+oo) r_{1} \in(0,+\infty) .每个
i
i
i i 对应于不同的圆,而
(
a
1
(
i
)
,
b
1
(
i
)
,
r
1
(
i
)
)
a
1
(
i
)
,
b
1
(
i
)
,
r
1
(
i
)
(a_(1)(i),b_(1)(i),r_(1)(i)) \left(a_{1}(i), b_{1}(i), r_{1}(i)\right) 表示通过该点的无限个圆集
(
x
1
,
y
1
)
x
1
,
y
1
(x_(1),y_(1)) \left(x_{1}, y_{1}\right) . 因此,所有经过点
(
x
1
,
y
1
)
x
1
,
y
1
(x_(1),y_(1)) \left(x_{1}, y_{1}\right) 的圆可以表示为
(
a
1
(
i
)
,
b
1
(
i
)
,
r
1
(
i
)
)
a
1
(
i
)
,
b
1
(
i
)
,
r
1
(
i
)
(a_(1)(i),b_(1)(i),r_(1)(i)) \left(a_{1}(i), b_{1}(i), r_{1}(i)\right) ,其中
r
1
∈
(
0
,
+
∞
)
r
1
∈
(
0
,
+
∞
)
r_(1)in(0,+oo) r_{1} \in(0,+\infty) 。每个
i
i
i i 的值对应一个不同的圆,而
(
a
1
(
i
)
,
b
1
(
i
)
,
r
1
(
i
)
)
a
1
(
i
)
,
b
1
(
i
)
,
r
1
(
i
)
(a_(1)(i),b_(1)(i),r_(1)(i)) \left(a_{1}(i), b_{1}(i), r_{1}(i)\right) 表示一个无限的圆集,经过点
(
x
1
,
y
1
)
x
1
,
y
1
(x_(1),y_(1)) \left(x_{1}, y_{1}\right) 。
通过该点的所有圆
(
x
1
,
y
1
)
x
1
,
y
1
(x_(1),y_(1)) \left(x_{1}, y_{1}\right) 可以表示为
(
a
1
(
i
)
,
b
1
(
i
)
,
r
1
(
i
)
)
a
1
(
i
)
,
b
1
(
i
)
,
r
1
(
i
)
(a_(1)(i),b_(1)(i),r_(1)(i)) \left(a_{1}(i), b_{1}(i), r_{1}(i)\right) ,则所有圆都通过该点
(
x
2
,
y
2
)
x
2
,
y
2
(x_(2),y_(2)) \left(x_{2}, y_{2}\right) 可以表示为
(
a
2
(
i
)
,
b
2
(
i
)
,
r
2
(
i
)
)
a
2
(
i
)
,
b
2
(
i
)
,
r
2
(
i
)
(a_(2)(i),b_(2)(i),r_(2)(i)) \left(a_{2}(i), b_{2}(i), r_{2}(i)\right) 以及通过该点的所有圆
(
x
3
,
y
3
)
x
3
,
y
3
(x_(3),y_(3)) \left(x_{3}, y_{3}\right) 可以表示为
(
a
3
(
i
)
,
b
3
(
i
)
,
r
3
(
i
)
)
a
3
(
i
)
,
b
3
(
i
)
,
r
3
(
i
)
(a_(3)(i),b_(3)(i),r_(3)(i)) \left(a_{3}(i), b_{3}(i), r_{3}(i)\right) .如果这三个点位于同一个圆上,则存在一组值
(
a
0
,
b
0
,
c
0
)
a
0
,
b
0
,
c
0
(a_(0),b_(0),c_(0)) \left(a_{0}, b_{0}, c_{0}\right) 使得
a
0
=
a
0
=
a_(0)= a_{0}=
a
1
(
k
)
=
a
2
(
k
)
=
a
3
(
k
)
,
b
0
=
b
1
(
k
)
=
b
2
(
k
)
=
b
3
(
k
)
a
1
(
k
)
=
a
2
(
k
)
=
a
3
(
k
)
,
b
0
=
b
1
(
k
)
=
b
2
(
k
)
=
b
3
(
k
)
a_(1)(k)=a_(2)(k)=a_(3)(k),b_(0)=b_(1)(k)=b_(2)(k)=b_(3)(k) a_{1}(k)=a_{2}(k)=a_{3}(k), b_{0}=b_{1}(k)=b_{2}(k)=b_{3}(k) 和
r
0
=
r
1
(
k
)
=
r
2
(
k
)
=
r
3
(
k
)
r
0
=
r
1
(
k
)
=
r
2
(
k
)
=
r
3
(
k
)
r_(0)=r_(1)(k)=r_(2)(k)=r_(3)(k) r_{0}=r_{1}(k)=r_{2}(k)=r_{3}(k) ,这意味着这三个点同时位于圆上
(
a
0
,
b
0
,
c
0
)
a
0
,
b
0
,
c
0
(a_(0),b_(0),c_(0)) \left(a_{0}, b_{0}, c_{0}\right) . 所有经过点
(
x
1
,
y
1
)
x
1
,
y
1
(x_(1),y_(1)) \left(x_{1}, y_{1}\right) 的圆都可以表示为
(
a
1
(
i
)
,
b
1
(
i
)
,
r
1
(
i
)
)
a
1
(
i
)
,
b
1
(
i
)
,
r
1
(
i
)
(a_(1)(i),b_(1)(i),r_(1)(i)) \left(a_{1}(i), b_{1}(i), r_{1}(i)\right) ,所有经过点
(
x
2
,
y
2
)
x
2
,
y
2
(x_(2),y_(2)) \left(x_{2}, y_{2}\right) 的圆都可以表示为
(
a
2
(
i
)
,
b
2
(
i
)
,
r
2
(
i
)
)
a
2
(
i
)
,
b
2
(
i
)
,
r
2
(
i
)
(a_(2)(i),b_(2)(i),r_(2)(i)) \left(a_{2}(i), b_{2}(i), r_{2}(i)\right)