编程语言
首页 > 编程语言> > c#-查找图像中的棋盘,并确定角度和距离

c#-查找图像中的棋盘,并确定角度和距离

作者:互联网

我想要做的是获取一个源图像,其中将包含一个已知物理尺寸和一个已知正方形数的黑白方格板,并标识该板的边界以及其所处的角度被观察到(假设其完全平坦)并从什么距离观察到.

如果我可以可靠地识别棋盘的四个角,那么我知道如何计算角度和距离,因此任务更多是关于识别棋盘的事情.

到目前为止,我一直在尝试对图像进行灰度处理并增加对比度,因此最终得到了一个鲜明的黑白图像(在眼睛中它只包含带有白色正方形的黑色),而我却可以确定图像的边界.从上到下的角度,通过测量从黑色到白色到黑色的变化频率,电路板可以很好地工作,我不确定如何在任何角度进行此操作.

名义上讲,我正在使用C#进行此操作,但就实际答案而言,我对任何具有类似c语法的代码示例感到满意-尽管对此示例的数学和方法更感兴趣.

解决方法:

通常,可以使用SIFT或SURF在3d世界中查找普通2d对象.

分两个步骤:

>在图像中找到数量可管理的局部特征(例如强角)
>在图像中的这些点与搜索模式之间找到关联

OpenCV具有以下实现:
Features2D + Homography to find a known object
冲浪Wikipedia article还指出了另一个c# implementation.
另请参见this Stackoverflow answer

现在这是一种非常通用的方法,我不知道它与您的棋盘配合使用的效果如何.

但是有一些针对棋盘图案的方法:例如the openCV function cvFindChessboardCorners(tutorial)

我从未使用过它,但发现算法的this description为:(Source is in the file cvcalibinit.cpp )

>通过阈值分割黑白方块进行图像二值化
>查找黑色方块的角:

>查找黑色区域边界的轮廓
>选择合适形状的轮廓
>用4顶点多边形近似这些轮廓

>在这些中选择类似于校准图案正方形的四边形
>提取所选四边形的角,附近至少有一个角
>根据校准对象的大小,将所选四边形的角按直线分组

标签:image-processing,computer-vision,c
来源: https://codeday.me/bug/20191127/2075693.html