透视修复怎么办?

时间:2013-12-31 23:20:01

标签: java math logic perspective

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

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

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

通过Perspective Fixing,我的意思是Photoshop中的那个。就像:

如果您告诉我代码片段是如何工作的,我会很感激,因为我想了解逻辑。

1 个答案:

答案 0 :(得分:3)

简单的解决方案是将坐标从原始图像重新映射到最终图像,将像素从一个坐标空间复制到另一个坐标空间,根据需要进行四舍五入 - 这可能会导致某些像素被相互复制多次,和其他像素被跳过,取决于你是否在任一维度上拉伸或缩小(或两者)。确保您的复制遍历目标空间,因此所有像素都被覆盖在那里,即使它们被多次绘制,而不是通过可能跳过输出中的像素的源。

更好的解决方案包括计算相应的源坐标而不进行舍入,然后使用其在像素之间的分数位置来计算围绕该位置的(通常)四个像素的适当平均值。这实际上是一个过滤操作,所以你失去了一些分辨率 - 但结果看起来对人眼来说更好;它可以更好地保留小细节,避免产生人类反感的直线文物。

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