【问题标题】:Boundary conditions for image transformations with meshgrid使用网格网格进行图像变换的边界条件
【发布时间】:2012-05-18 23:59:24
【问题描述】:

我使用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,)

【问题讨论】:

    标签: image-processing numpy


    【解决方案1】:

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

    【讨论】:

    • 您提出的观点非常好。注意这一点非常重要。
    【解决方案2】:

    好吧,我最后就是这样做的:

    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
    

    【讨论】:

      猜你喜欢
      • 2013-04-25
      • 1970-01-01
      • 1970-01-01
      • 2011-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-05
      相关资源
      最近更新 更多