算法名称:通过有向线卷积检测二维图像中的细长形状
信息处理
图像处理
计算机视觉
物体识别
霍夫变换
形态操作
2022-02-07 18:57:19
1个回答
你本质上做的是一个匹配的过滤器。但是,由于 Hough 变换,您的过滤器(线)是定向的,因此我将其称为定向匹配过滤器。要生成 Bresenham 线并对像素进行采样,您可能需要使用OpenCV 线迭代器。简单的用法类似于:
cv::LineIterator it(image, pt1, pt2, 8);
std::vector<cv::Vec3b> buf(it.count);
std::vector<cv::Point> points(it.count);
for(int i = 0; i < it.count; i++, ++it)
{
buf[i] = *(const cv::Vec3b)*it;
points[i] = it.pos();
}
空洞检测部分也可以使用卷积实现,如下所示:
尽管我认为这种方法确实有效并且在许多情况下都可以正常工作,但典型的 blob-person 会以不同的方式处理问题:首先识别图像中的大连接组件,然后过滤掉其余部分。在该单个大组件中,执行形态孔填充。这是一个非常标准的管道,使用这种方法,您将能够找到更多工具(blob 分析)来帮助您。例如,findContours、drawContours或morphologyEx等OpenCV 方法就派上用场了。
最后,如果您知道孔的形状,您可能会受益于例如椭圆检测以直接找到它。
希望这些帮助。
其它你可能感兴趣的问题