2

我使用 转换了图像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])

这导致类似于“最近”边界条件的效果。

我希望所有外部像素都是黑色的。我认为我可以通过在网格网格上使用布尔数组来实现这一点,但我不知道如何将布尔数组正确应用于网格网格。

tXbool = numpy.abs(tX) < image.w
tXbool.shape
(850, 1280)
tX[tXbool].shape
(193180,)
4

2 回答 2

1

您应该始终将逆变换应用于目标图像中的像素,并使用它来查找源图像中的(插值)颜色/值。否则你最终会遇到漏洞和量化问题。这是参考,或在任何图像处理教科书中查找图像转换/扭曲:http ://www.cs.clemson.edu/~dhouse/courses/405/notes/image-warps.pdf

于 2012-05-18T15:59:24.670 回答
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
于 2012-05-18T15:56:33.437 回答