在本文档中,我们探讨了如何使用Halcon机器视觉库中的多层感知器(MLP)分类器对零件进行分类。Halcon是一款强大的图像处理工具,常用于工业自动化和计算机视觉应用中。本文主要流程包括以下几个步骤:
1. **初始化开发窗口**:
首先,通过调用`dev_close_window()`关闭任何现有的窗口,并使用`dev_open_window()`创建一个新的全屏黑色窗口,设置其大小为512x512像素。
2. **设置绘图参数**:
接下来,设置了一些绘图选项,如彩色模式(使用颜色6)、边框样式('margin'),以及线条宽度(3像素)。
3. **创建MLP分类器**:
使用`create_class_mlp()`函数创建了一个具有6输入节点、5隐藏层、3输出节点的MLP,采用softmax激活函数,同时设置了归一化选项。这个分类器结构适合多类问题,且带有3个隐藏层神经元,参数包括42个学习速率和特定的MLP句柄(MLPHandle)。
4. **图像数据预处理**:
对每个输入图像(如'm1.jpg', 'm2.jpg', 'm3.jpg', 和 'm4.jpg')进行操作,首先读取图像,然后转换为灰度图像,以便于后续处理。接下来,使用阈值处理和连接组件分析来识别感兴趣的区域。
5. **形状选择与对象填充**:
选择面积大于2000像素且小于99999像素的形状,填充这些形状到`Objects`变量中。然后在窗口上显示这些对象,并添加样本标签,如'AddSample0',对应类别为0或1。
6. **特征提取**:
对每个选定的对象(Region),计算其圆度(Circularity)、圆周率(Roundness)、距离(Distance)等几何特性,以及矩形不变量(PSI1, PSI2, PSI3, PSI4),这些都是用于描述物体形状和结构的重要特征。
7. **样本标注与分类**:
使用`count_obj()`函数获取`Objects`中对象的数量,然后针对每个对象执行特征提取和可能的分类。对于每个对象,选择第N个对象并执行额外的形状分析和特征计算,以便MLP进行最终的分类决策。
这篇文档展示了Halcon如何通过一个多层感知器(MLP)模型对不同类别的零件图像进行特征提取和分类。整个过程包括图像预处理、形状识别、特征计算以及基于MLP的分类,这在实际的生产线监控或产品检测场景中非常实用。