因此,对于每个具有x和y坐标的左侧像素,我希望得到一个函数,给出指向相应右侧像素的位移向量的分量。
在以前的尝试中,我试图获取相应点的位置,以获得deltaX和deltaY的相对距离。然后,我将这些距离拟合到T(x,y)的二阶泰勒展开式,为左侧的每个像素(x,y)给出了指向相应像素(x',y')的位移矢量的x和y分量。
为了得到更普遍的结果,我想使用归一化交叉相关。为此,我将左侧的每个像素值与相应的右侧像素值相乘,并对这些产品求和。我要寻找的转换应连接最大化总和的像素。因此,当总和最大化时,我知道我已经乘以相应的像素。
我真的尝试了很多,但没有成功。我的问题是,如果你们中有人有想法或曾经做过类似的事情。
import numpy as np
import Image
left = np.array(Image.open('left.png'))
right = np.array(Image.open('right.png'))
# for normalization (http://en.wikipedia.org/wiki/Cross-correlation#Normalized_cross-correlation)
left = (left - left.mean()) / left.std()
right = (right - right.mean()) / right.std()
如果我的问题不够清晰,请告诉我。我还需要了解如何使用latex发布问题。
非常感谢您的帮助。
[left.png] http://i.stack.imgur.com/oSTER.png [right.png] http://i.stack.imgur.com/Njahj.png
恐怕,在大多数情况下,16位图像只会显示为黑色(至少在我使用的系统上):( 但是当然有数据存在其中。
更新1
我尝试澄清我的问题。我正在寻找一个矢量场,其中位移向量从left.png中的每个像素指向相应的right.png中的像素。我的问题是,我不确定我所拥有的约束条件。
其中矢量r(分量x和y)指向left.png中的像素,矢量r-prime(分量x-prime和y-prime)指向相应的right.png中的像素。对于每个r,都有一个位移向量。
我之前做的是手动找到矢量场d的分量,并将其拟合为二次多项式:
所以我进行了拟合:
这对您有意义吗?是否可以通过交叉相关来获取所有delta-x(x,y)和delta-y(x,y)?如果相应的像素通过位移向量链接在一起,则交叉相关应最大化,对吧?
更新2
因此,我考虑的算法如下:
- 变形 right.png
- 获取交叉相关值
- 进一步变形 right.png
- 获取交叉相关值并与之前的值进行比较
- 如果大于之前的值,则为好的变形,否则重新进行变形并进行其他操作
- 在最大化交叉相关值后,了解有哪些变形 :)
关于变形:是否可以先沿x和y方向进行位移以最大化交叉相关性,然后在第二步中拉伸或压缩x和y依赖性,在第三步中变形二次的x和y依赖性,并重复这个过程?我真的很难用整数坐标来做到这一点。你认为我需要插值图片以获得连续分布吗?我需要再考虑一下 :( 感谢所有参与者的参与 :)