Java 如何进行透视修正?

Java 如何进行透视修正?,java,math,logic,perspective,Java,Math,Logic,Perspective,我正在寻找一种快速的方法来修复用java或任何语言给出的图片的透视图。目前我真的不知道怎么做,也没有在Google中找到任何有用的东西 输入: 点[4],颜色[][] 输出: 透视固定颜色[][] 我指的是Photoshop中的透视图修复。就像: 如果您能告诉我代码段是如何工作的,我将不胜感激,因为我想了解逻辑。简单的解决方案是将坐标从原始图像重新映射到最终图像,将像素从一个坐标空间复制到另一个坐标空间,根据需要进行舍入——这可能会导致某些像素彼此相邻地复制多次,而其他像素会被跳过,具体取决于

我正在寻找一种快速的方法来修复用java或任何语言给出的图片的透视图。目前我真的不知道怎么做,也没有在Google中找到任何有用的东西

输入: 点[4],颜色[][]

输出: 透视固定颜色[][]

我指的是Photoshop中的透视图修复。就像:


如果您能告诉我代码段是如何工作的,我将不胜感激,因为我想了解逻辑。

简单的解决方案是将坐标从原始图像重新映射到最终图像,将像素从一个坐标空间复制到另一个坐标空间,根据需要进行舍入——这可能会导致某些像素彼此相邻地复制多次,而其他像素会被跳过,具体取决于在任一维度上是拉伸还是收缩(或两者兼而有之)。确保您的复制在目标空间中进行迭代,以便所有像素都被覆盖,即使它们被多次绘制,而不是通过源进行复制,因为源可能会跳过输出中的像素

更好的解决方案是在不舍入的情况下计算相应的源坐标,然后使用其像素之间的分数位置来计算该位置周围(通常)四个像素的适当平均值。这本质上是一个过滤操作,所以你会失去一些分辨率——但结果在人眼看来要好得多;它在保留小细节方面做得更好,并避免创建人类认为令人反感的直线工件


请注意,相同的基本方法可用于将平面图像重新映射到任何其他形状上,包括3D曲面映射。

简单的解决方案是将坐标从原始图像重新映射到最终图像,将像素从一个坐标空间复制到另一个坐标空间,根据需要进行舍入——这可能会导致某些像素彼此相邻地复制多次,而其他像素会被跳过,具体取决于在任一维度上是拉伸还是收缩(或两者兼而有之)。确保您的复制在目标空间中进行迭代,以便所有像素都被覆盖,即使它们被多次绘制,而不是通过源进行复制,因为源可能会跳过输出中的像素

更好的解决方案是在不舍入的情况下计算相应的源坐标,然后使用其像素之间的分数位置来计算该位置周围(通常)四个像素的适当平均值。这本质上是一个过滤操作,所以你会失去一些分辨率——但结果在人眼看来要好得多;它在保留小细节方面做得更好,并避免创建人类认为令人反感的直线工件


请注意,相同的基本方法可用于将平面图像重新映射到任何其他形状上,包括3D曲面映射。

简单的解决方案是将坐标从原始图像重新映射到最终图像,将像素从一个坐标空间复制到另一个坐标空间,根据需要进行舍入——这可能会导致某些像素彼此相邻地复制多次,而其他像素会被跳过,具体取决于在任一维度上是拉伸还是收缩(或两者兼而有之)。确保您的复制在目标空间中进行迭代,以便所有像素都被覆盖,即使它们被多次绘制,而不是通过源进行复制,因为源可能会跳过输出中的像素

更好的解决方案是在不舍入的情况下计算相应的源坐标,然后使用其像素之间的分数位置来计算该位置周围(通常)四个像素的适当平均值。这本质上是一个过滤操作,所以你会失去一些分辨率——但结果在人眼看来要好得多;它在保留小细节方面做得更好,并避免创建人类认为令人反感的直线工件


请注意,相同的基本方法可用于将平面图像重新映射到任何其他形状上,包括3D曲面映射。

简单的解决方案是将坐标从原始图像重新映射到最终图像,将像素从一个坐标空间复制到另一个坐标空间,根据需要进行舍入——这可能会导致某些像素彼此相邻地复制多次,而其他像素会被跳过,具体取决于在任一维度上是拉伸还是收缩(或两者兼而有之)。确保您的复制在目标空间中进行迭代,以便所有像素都被覆盖,即使它们被多次绘制,而不是通过源进行复制,因为源可能会跳过输出中的像素

更好的解决方案是在不舍入的情况下计算相应的源坐标,然后使用其像素之间的分数位置来计算该位置周围(通常)四个像素的适当平均值。这本质上是一个过滤操作,所以你会失去一些分辨率——但结果在人眼看来要好得多;它在保留小细节方面做得更好,并避免创建人类认为令人反感的直线工件


请注意,相同的基本方法可用于将平面图像重新映射到任何其他形状,包括3D曲面贴图。

顺便说一句,任何关于现代计算机图形学的好书都可能会向您展示这一点,以及更多更详细的信息。(许多年前,我在“拼贴”中编写了一个版本)工具,作为麻省理工学院建筑机器组的一个学生项目。Mine允许在一张图片上画另一张图片,并添加了一个透明贴图(以及一个与之配套的绘画工具),允许用户选择在任意点保留这两张图片中的哪一张,允许使用精美的剪切形状。)+1:反转透视图不仅需要自由形式的变换,还需要您描述的技术。这对于OP来说可能“足够好”,因为它不太难,可以快速实现