我正在做一个有趣的项目:使用OpenCV从输入图像中解决数独(如Google护目镜等).我完成了任务,但最后我发现了一个问题,我来到这里.
我使用OpenCV 2.3.1的Python API进行编程.
以下是我的所作所为:
找到角点.
例如,如下:

(请注意,绿线正确地与Sudoku的真实边界重合,因此可以正确扭曲数独.查看下一张图片)
将图像扭曲成完美的正方形
例如:

执行OCR(我使用我在OpenCV-Python中的简单数字识别OCR中给出的方法)
而且方法效果很好.
问题:
看看这个图像.
在此图像上执行第4步,结果如下:

绘制的红线是原始轮廓,它是数独边界的真实轮廓.
绘制的绿线是近似轮廓,它将是扭曲图像的轮廓.
当然,在数独的上边缘绿线和红线之间存在差异.因此,在翘曲时,我没有得到数独的原始边界.
我的问题 :
如何在数独的正确边界上扭曲图像,即红线,或者如何消除红线和绿线之间的差异?在OpenCV中有没有这方法?
已经在两个图像上的蓝点之间建立了一对一点匹配.image2是image1的扭曲版本.失真模型似乎是眼鱼镜头失真.问题是:有没有办法计算描述这种转变的转换矩阵.实际上是一个矩阵,它将第一张图像上的蓝点转换为第二张图像上相应的蓝点?这里的问题是我们不知道焦距(意味着图像是未经校准的),但是我们确实在两幅图像上的大约200个点之间进行了完美匹配.
扭曲的图像:

robotics image-processing computer-vision projective-geometry camera-calibration