【问题标题】:Bilinear interpolation implementations in Tensorflow and OpenCVTensorflow 和 OpenCV 中的双线性插值实现
【发布时间】:2018-07-15 16:09:21
【问题描述】:

我正在尝试处理在tensorflowOpenCV 中实现的bilinear interpolation。我的理解使我相信插值点网格在两个库中的位置不同。在样本矩阵上获得的不同结果证明了这一点:

import tensorflow as tf, numpy as np, cv2
a = np.arange(9, dtype=np.float32).reshape(3, 3)
cv2.resize(a, (2, 2))

输出

array([[1. , 2.5],
       [5.5, 7. ]], dtype=float32)

同时

tf.InteractiveSession()
tf.image.resize_images(a[None, :, :, None], (2, 2)).eval()[0, :, :, 0]

输出

array([[0. , 1.5],
       [4.5, 6. ]], dtype=float32)

这个诊断正确吗?如果是这样,在tensorflow和OpenCV中放置插值点的方案是什么?

【问题讨论】:

    标签: numpy opencv tensorflow interpolation


    【解决方案1】:

    通常(在 OpenCV、Matlab、scipy 等中),像素被假定为覆盖单位区域,并且对齐的是左上角和右下角像素的角。采样间隔更改为old_size / new_size

    在Tensorflow中,有两种全新的方案,都与上面的方案不匹配。

    对于align_corners=True,角像素中心与中间的(old_size - 1) / (new_size - 1) 的新采样间隔对齐。 对于align_corners=False,只有左上角的像素centers是对齐的,其余的则以间隔old_size / new_size进行采样。

    【讨论】:

    • 如果我们在使用 OpenCV 预处理进行训练时使用 tensorflow 预处理进行预测,这会影响性能吗?
    猜你喜欢
    • 2014-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-03
    • 1970-01-01
    • 1970-01-01
    • 2014-02-03
    • 1970-01-01
    相关资源
    最近更新 更多