拍摄一个在openCV C ++中旋转的管子的图像

时间:2016-05-08 07:04:19

标签: c++ opencv image-processing

首先,抱歉我的英语不好, 我有一个像下面的图片的对象,对象总是围绕水平轴旋转。任何人都可以推荐我如何在管子旋转时拍出照片的全标签?我可以通过OpenCV C ++从我的相机拍摄图像,但是当我试图旋转管时,我无法拍摄完美的照片(我的图像模糊,不清楚)。 我的管完全面向相机。其转速约为500 RPM。  希望尽快得到你的帮助, 非常感谢你! 这是我的对象:img

一些示例图片:

img img img

当我使用带闪光灯的Ip5相机时,我的图像在这里:

img

1 个答案:

答案 0 :(得分:0)

  1. 动态模糊

    这可以通过降低曝光时间来改善,但您需要增加光线条件来补偿。大多数现代小型相机都无法直接设置曝光时间(因此公司可以出售昂贵的profi相机),即使它只是几行GUI代码,但如果增加光线,自动曝光应该自行降低。

    在行业中,这个问题通过特殊的 TDI 相机来解决,例如

    TDI 表示时间延迟积分,这意味着相机CCD像素正在将其电荷传递到与运动同步的下一个像素。这会产生类似于您将物体与物体表面同步移动的效果。模糊仍然存在,但要小得多(仅为实际曝光时间的一小部分)

    在计算机视觉和 DIP 中,如果您知道移动属性(您知道),则可以通过解卷积过程去模糊图像使用 FFT 进行高斯模糊滤波器的反演,并通过优化过程找到逆滤波器。

  2. 焦点模糊

    这是因为你的表面弯曲而相机芯片不是。因此,外部像素与芯片的距离与中心像素的距离不同。没有特殊的光学元件,您可以通过Line相机处理。粗略的我不希望你有一个,所以你也可以使用你的相机。

    只需安装相机,使其中一个相机轴与物体旋转轴(曲面)平行,例如x轴。然后以恒定时间步长采样更多图像并仅使用图像的中心线/切片(线/切片的高度取决于您的曝光时间和对象速度,它们应该重叠一点)。然后只需将所有采样图像中的这些线/切片组合起来,形成聚焦图像。

  3. [Edit1]自制TDI设置

    TDI setup

    1. 因此安装相机使其视轴垂直于表面。
    2. 以固定帧速率拍摄连拍照片或视频

      较短的曝光时间(较高的帧速率)整个图像的聚焦度较高(由于光学模糊),运动模糊的区域dy较大。旋转 RPM 越高,dy越小。因此,找到适合您的相机的最佳选择, RPM 和照明条件(如果您的管上没有反光表面,通常会增加强光有用)。

      要获得正确的输出,您需要妥协每个参数,以便:

      • 曝光时间尽可能短
      • 重点区域在镜头之间重叠(如果不是,你可以采样类似于旧FDD扇区阅读的更多轮次......)
    3. 提取镜头的重点部分

      您只需要所有镜头的中间部分,因此根据您的设置从经验中拍摄几张照片并选择dy尺寸。然后将其用作后者。因此从镜头中提取中间部分(切片)。在我的示例图像中,它是红色区域。

    4. 组合切片

      您只需将切片复制(或平均重叠部分)。它们应该重叠一点,以便在最终图像中没有孔。正如您所看到的,我的最终图像示例具有较小的切片,然后获取以使其更明显。

      由于振动,您的相机图像可能会偏离几个像素。如果这是最终图像中的问题,那么您可以使用 SIFT / SURF + RANSAC 进行自动拼接用于更高精度的输出。