相同逆变换的不同图像输出
Different image output with same inversed transformation
我得到了不同的图像输出,而变换保持不变
im=np.ones((128,128))*255
src = np.array([
[56., 60.],
[81., 60.],
[64., 80.],
[49., 100.],
[78., 100.]], dtype=np.float32)
q=np.array([
[58.166317,39.124466],
[86.10652,26.917824],
[106.29474,39.68392],
[90.64203,72.82854],
[115.17699,63.91104]],dtype=np.float32)
tt=trans.SimilarityTransform()
tt.estimate(q,src)
dst1 = trans.warp(im,tt.inverse,preserve_range=True,output_shape=(128,128))
tt.estimate(src,q)
dst = trans.warp(im,tt,preserve_range=True,output_shape=(128,128))
所以,你可以看到区别,这里是输出:
为什么它们不一样?
更新:
主要问题在 "estimate" 函数中,即 estimate(q,src)!=(estimate(src,q))^-1。悬而未决的问题:为什么
为了澄清这个问题:仿射变换是一组变换 t:R2->R2
,其中每个变换都有一个确定的逆元素(在我们的例子中是逆变换)。在我的问题中,我们似乎对相同的源点(两个逆元素)进行了 不同的 转换。
其实哪里都没有错,只是误解了.inverse
和.estimate
函数。 t.estimate(q, src).inverse !=t.estimate(src, q)
但 t.estimate(q, src).inverse ==t.estimate(t(q),q)
我得到了不同的图像输出,而变换保持不变
im=np.ones((128,128))*255
src = np.array([
[56., 60.],
[81., 60.],
[64., 80.],
[49., 100.],
[78., 100.]], dtype=np.float32)
q=np.array([
[58.166317,39.124466],
[86.10652,26.917824],
[106.29474,39.68392],
[90.64203,72.82854],
[115.17699,63.91104]],dtype=np.float32)
tt=trans.SimilarityTransform()
tt.estimate(q,src)
dst1 = trans.warp(im,tt.inverse,preserve_range=True,output_shape=(128,128))
tt.estimate(src,q)
dst = trans.warp(im,tt,preserve_range=True,output_shape=(128,128))
所以,你可以看到区别,这里是输出:
更新: 主要问题在 "estimate" 函数中,即 estimate(q,src)!=(estimate(src,q))^-1。悬而未决的问题:为什么
为了澄清这个问题:仿射变换是一组变换 t:R2->R2
,其中每个变换都有一个确定的逆元素(在我们的例子中是逆变换)。在我的问题中,我们似乎对相同的源点(两个逆元素)进行了 不同的 转换。
其实哪里都没有错,只是误解了.inverse
和.estimate
函数。 t.estimate(q, src).inverse !=t.estimate(src, q)
但 t.estimate(q, src).inverse ==t.estimate(t(q),q)