我使用meshgrid
转换了图像,但新坐标部分超出了原始图像的范围,导致转换失败。
首先我使用了剪辑
...
tX = numpy.clip(tX.astype(numpy.int),0,image.w)
tY = numpy.clip(tY.astype(numpy.int),0,image.h)
result image([tX,tY])
导致效果类似于“最近”的边界条件。
我希望所有外部像素都是黑色的。我以为我可以通过在meshgrid上使用布尔数组来实现这一点,但我不知道如何正确地将布尔数组应用于meshgrid。
tXbool = numpy.abs(tX) < image.w
tXbool.shape
(850, 1280)
tX[tXbool].shape
(193180,)
答案 0 :(得分:1)
您应始终将逆变换应用于目标图像中的像素,并使用此变换查找源图像中的(插值)颜色/值。否则你最终会遇到漏洞和量化问题。这是一个参考,或在任何图像处理教科书中查找图像变换/扭曲:http://www.cs.clemson.edu/~dhouse/courses/405/notes/image-warps.pdf
答案 1 :(得分:0)
好的,那就是我最终如何做到的:
tXbool = (0 < tX) & (tX < image.w )
tybool = (0 < tY) & (tY < image.h )
outliers = tXbool & tybool
mask = where(outliers,1,0)
mask4channels = dstack([mask,mask,mask])
image = image*mask4channels