浮点矩阵OpenCV中缺少值

时间:2013-02-22 06:56:34

标签: opencv floating-point missing-data mat

我想在OpenCV中重构浮点矩阵中的缺失值。 Mat包含最小值为0的浮点值。  我试过这个:

  1. 将浮点数Mat转换为CV_8U。显示时的CV_8U图像(浮动垫中的0点显示为黑色):

    floating Mat to image

  2. 通过检查4邻域的至少一个非零像素并且当前像素为零来生成掩码。 蒙版描绘了要重建的像素(255缺少像素,0-否则)掩码为:
  3. mask

    1. 使用inpaint function与步骤1中获得的图像和步骤2中的掩码。修复后的结果:
    2. inpainted result

      现在我在缺失的位置(图像上方)有像素值,但是这个inpaint不能直接应用于浮点Mat。它仅接受8位1通道或3通道图像。 如何在浮点Mat中重建/获取缺失值?

1 个答案:

答案 0 :(得分:0)

如果在整个图像中可以接受float-uchar转换的精度损失,则可以执行以下操作:

cv::Mat result;
inpainted_image.convertTo(result, CV_32F);

如果您只想填写缺失值,请执行以上操作,然后转移掩码非零的result值。