我正在拍摄这样的照片:
我的最终目标是检测新图片上的茎干末端是否在圆圈中(圆圈的位置和大小可能会有一点变化),我想只使用图像处理进行尝试(第一次尝试时没有ML,因为似乎没有必要),但我对此没有了解。
问题是,在数据集的一部分,不存在清晰的梯形,而在另一部分,它是存在的。没有梯形的问题似乎相当简单(查找茎的末端是否在圆圈中),所以**我想找到一种方法来“擦除”图片中的吊架,因为我需要我的算法来处理这两个图像(有和没有梯形)。我能够知道梯形是否与图片的名称一起出现。
首先,我对图像进行降噪处理,通过查看像素的强度,你可以看到下面(强度在纵坐标,计数在横坐标),我只是把像素值合并成5组。
但是正如你所看到的,茎的一部分比茎的其他部分更接近梯形的强度。此外,边缘的值也是有问题的。
如果它能提供更多的信息,我还尝试了边缘检测,并实现检测圆无论他的位置和大小。这里是一个边缘检测结果的潜峰:
我对任何想法都持开放态度(我知道最初的问题是如何消除空中飞人,但如果你认为这是没有必要和缺乏时间,我会考虑每一个选项):)
1条答案
按热度按时间iqxoj9l91#
既然你说这个问题看起来很容易,没有更轻的形状,我将假设你知道如何检测圆和直线/线段(例如,使用霍夫变换的变体,正如评论中所建议的)。
在边缘图像中,你可以清楚地看到圆圈,你应该可以找到它(如果我理解正确的话,你已经找到了)。
您应该能够找到多个行。剩下的问题是找出哪一行是您感兴趣的行。您可以通过多种方法找到这一行,例如:
量化这些条件,并检查其中一个或组合是否允许您可靠地从所有行中挑选出词干。
最有问题的情况当然是 Backbone.js 和边缘对齐。其他特殊但问题较少的情况是 Backbone.js 穿过一个或多个边缘,或者 Backbone.js 在边缘结束。我不清楚哪种情况会发生-如果可能,请确保您考虑并测试这些情况。