0

我需要识别视频序列上的条纹图案。OpenCV - 识别视频帧上的规则图案

我试图使用OpenCVHoughlines函数来检测模式的行。一旦我有了Houghlines(GREEN_lines),我需要知道哪些线彼此最接近,并放弃所有其他线。我还需要知道图像上有多少对暗(RED_line)和亮(BLUE_line)条纹。

然后我需要知道由Houghlines组成的每个“盒子”内区域的平均亮度。

Scheme of detection

图案可以出现在不同的角度(在右侧图像)的视频帧。

有什么建议吗?

回答

0

假设对于检测到的k行,应用霍夫变换获得的行是L1,L2,...,Lk。让每条线用2点表示,((x1i,y1i),(x2i,y2i))。

首先,确定哪些线是平行的,哪些是相互垂直的。您可以通过计算每对线的单位方向矢量之间的点积来完成此操作。彼此垂直的线对将具有点乘积0(或者由于检测到的线可能由于噪声/数字错误而不完全垂直),因此点乘积接近于1(如果它们平行,则点乘积接近1)。

一旦您知道哪些线是平行线,哪些线是垂直线,您可以根据x坐标(对于“垂直”线)或y坐标(对于2“水平”线)对它们进行排序。

现在您需要解决每条“垂直”线与每条“水平”线之间的相交点,这可以通过使用一点代数和几何来获得。

使用这些点和线条,您可以创建一个遮罩来计算图像中的所需值(例如,每个框内的亮度)。排序的行也会告诉你哪些行彼此最接近。