图像轮廓提取是一种在图像中识别物体边缘的像素的方法。在本指南中,将逐步介绍如何应用图像轮廓提取来创建一个工作流程,该工作流程执行所需的预处理步骤,然后运行图像轮廓提取。之后,可以将工作流程部署到自己的硬件上,并使用相机的帧进行推理。
将使用Roboflow工作流,这是一个基于Web的计算机视觉应用程序构建器,来创建图像轮廓提取应用程序,并最终完成一个类似于上面的工作流。
首先,创建一个免费的Roboflow账户。然后,导航到Roboflow仪表板并点击左侧边栏中的工作流标签。这将带到工作流首页,可以从这里创建一个工作流。点击“创建工作流”来创建一个新的工作流。
在工作流编辑器中,可以配置工作流。将从空白工作流开始,并使用图像轮廓提取工作流功能。
在轮廓提取图像之前,需要应用一些预处理步骤。将应用以下步骤以实现最佳性能:灰度化、模糊和阈值处理。阈值处理将像素转换为黑色和白色,具体取决于它是否超过某个阈值。默认阈值127意味着任何值(已经是灰度的)低于127的像素将变为黑色(0),任何高于127的像素将变为白色(255)。然后可以使用阈值图像进行轮廓提取。
在工作流编辑器中,添加灰度化、图像模糊和图像阈值块。工作流应该如下所示:
// 添加每个块时,设置图像值以引用前一个图像。例如,图像转换灰度应引用图像模糊图像:
// 当配置图像阈值块时,建议阈值设置为127:
// 然后点击“可选属性”并将阈值类型设置为binary_inv:
这将反转阈值操作的颜色。这应该使图像的背景变为黑色,感兴趣的物体变为白色。配置完这些块后,就可以添加图像轮廓块了。
在工作流编辑器中点击“添加块”,并添加图像轮廓块。将块连接起来,使用阈值处理块的图像:
// 图像轮廓块可以返回多个值:
// 显示轮廓的图像;
// 识别出的轮廓数量;
// 轮廓层次结构。
// 配置响应块以返回需要的值。让返回图像轮廓块的图像,以便可以看到系统的响应:
最后,更新响应以包括来自image_threshold块的阈值图像,来自image_contours块的图像,以及来自image_contours块的number_contours值。配置好工作流后,现在可以测试系统了。
最终工作流应该如下所示:接受输入图像、将图像转换为灰度、应用模糊、阈值处理图像、计算轮廓。然后工作流返回包含图像轮廓的响应。要测试工作流,点击“运行预览”。然后,上传想要应用轮廓提取的图像:
// 点击“运行预览”测试工作流。
// 让以俄罗斯方块的图像为例,展示这个系统如何在图像中清晰区分物体和背景以及其他物体:
// 在右侧,将看到一个JSON响应,包含工作流的输出。
例如,工作流成功识别出有六个轮廓。这意味着图像中有六个物体。输出值中的淡粉色轮廓显示了识别出的轮廓。