Ale*_*lex 5 interpolation opencv numpy tensorflow
我试图在tensorflow和OpenCV中实现对双线性插值的处理.我的理解让我相信插值点的网格在两个库中的位置不同.这可以通过样本矩阵获得的不同结果得到证明:
import tensorflow as tf, numpy as np, cv2
a = np.arange(9, dtype=np.float32).reshape(3, 3)
cv2.resize(a, (2, 2))
Run Code Online (Sandbox Code Playgroud)
输出
array([[1. , 2.5],
[5.5, 7. ]], dtype=float32)
Run Code Online (Sandbox Code Playgroud)
而
tf.InteractiveSession()
tf.image.resize_images(a[None, :, :, None], (2, 2)).eval()[0, :, :, 0]
Run Code Online (Sandbox Code Playgroud)
输出
array([[0. , 1.5],
[4.5, 6. ]], dtype=float32)
Run Code Online (Sandbox Code Playgroud)
这个诊断是否正确?如果是这样,在张量流和OpenCV中放置插值点的方案是什么?
小智 1
通常(在 OpenCV、Matlab、scipy 等中),假设像素覆盖单位区域,并且对齐的是左上角和右下角像素的最角落。采样间隔更改为old_size / new_size。
在Tensorflow中,有两种全新的方案,两者都不符合上面的方案。
对于align_corners=True,角点像素中心(old_size - 1) / (new_size - 1)与中间的新采样间隔对齐。对于align_corners=False,仅对齐左上角的像素中心,其余像素以间隔 进行采样old_size / new_size。
| 归档时间: |
|
| 查看次数: |
711 次 |
| 最近记录: |