opencv:纠正这些扭曲的图像

时间:2015-07-05 08:59:18

标签: opencv image-processing

纠正以下失真图像的步骤是什么?它看起来像是从中心凸出的图像。它们具有相同的QR码,因此可以使用这些图像的组合来获得单个正确和直接的图像。 请指教。

enter image description here enter image description here enter image description here

1 个答案:

答案 0 :(得分:2)

您遇到的失真被称为"桶形失真"。技术名称是"径向失真和切向失真的组合"

您的问题的解决方案是openCV摄像机校准模块。只需google它,你就会在openCV wiki中找到文档。此外,openCV已经内置了如何校准相机的源代码示例。

基本上,你需要打印棋盘图像,拍几张照片,运行校准模块(内置方法)并获得输出变换矩阵。对于每个视频帧,您应用此矩阵(我认为该方法称为cvUndistort()),它将拉直图像中的曲线。 注意:如果更改相机的变焦或焦距,则无效。

如果相机详细信息不可用且无法控制 - 则问题非常严重。有一种解决失真的方法,但我不知道openCV是否内置了模块。我担心你需要编写很多代码。

基本上 - 您需要尽可能多地检测长线。然后从这些线(垂直和水平)中构建一个交叉点网格。最后,您将这些点的网格拟合到openCV校准模块。 如果您有足够的交叉点(例如20或更多),您将能够计算失真矩阵并使图像不失真。

您将无法完全校准相机。换句话说,您将无法运行计算预期失真的一次性过程。相反 - 在每个视频帧中,您将直接计算失真矩阵 - 将其反转并使图像不失真。 如果您不熟悉图像处理技术或无法找到直接解决问题的可靠开源代码 - 那么我担心您将无法消除失真。遗憾