这是我从Intel Realsense d435 rgb相机拍摄的场景照片。
我希望能够识别图像中的金属物体,并在其周围绘制闭合轮廓。这样我可以引用轮廓内的所有像素供将来使用。
当前方法
2.5条。目前,我使用的是确定的前景图像,并将所有的黑色像素保存为对象,但是,我的确定前景图像中有这些巨大的白点,它们没有被提取。
如何改进图像分割以获得更好的图像轮廓,从而获取对象包围的所有像素(大多数)?
如果有帮助,我可以添加我的代码,但它相当大。
编辑: 我从SentDex教程中尝试了GrabCut算法,但是它可以去除一些背景,但是分水岭算法后来无法找到准确的前景表示。
左边的图像是在应用了GrabCut之后,然后在右边,GrabCut算法被传递到分水岭算法以找到确定的前景。
在找到轮廓之前先扩张再腐蚀怎么样:
我只是演示如何应用蒙版,因为我没有您使用的图像和对象识别软件。在
通过从RGB图像上的颜色识别和分析切换到对相机的深度信息进行边缘检测,我能够获得更好的物体轮廓。在
以下是我为找到更好的边缘贴图而采取的一般步骤。在
将深度信息保存在NxMx1矩阵中。其中N,M值是图像分辨率的形状。对于480640图像,我有一个矩阵(480640,1),其中每个像素(I,j)存储该像素坐标对应的深度值。
使用二维高斯核平滑和填补我的深度矩阵中的任何缺失数据,使用astropy的卷积方法。
找到我的深度矩阵的梯度和梯度中每个像素对应的大小。
基于均匀深度过滤数据。其中均匀深度意味着一个平面物体,所以我发现我的量值的高斯分布(从深度梯度)和那些填充在X标准偏差内的值被设置为零。这减少了图像中的一些附加噪声。
然后我将我的幅值矩阵的值从0规范化为1,这样我的矩阵就可以被认为是通道1图像矩阵。
因为我的深度矩阵是(480640,1)的形式,当我找到相应的梯度矩阵,也是(480640,1)时,我将值(:,:,1)从0缩放到1。这样以后我可以用灰度或二值图像来表示它。在
使用这个方法/代码,我能够得到下面的图像。仅供参考,我稍微改变了一下场景。在
我问了另一个相关的问题:How to identify contours associated with my objects and find their geometric centroid
这说明了如何在图像中找到物体的轮廓,质心。在
相关问题 更多 >
编程相关推荐