我正在开发一个应用程序,需要对使用手机相机拍摄的照片应用透视失真校正。
拍摄照片后,想法是将其显示在 imageview 上,让用户标记文档的四个角(一张卡片、一张纸等),然后根据这些点进行校正。
这是我试图实现的一个例子:

http://1.bp.blogspot.com/-ro9hniPj52E/TkoM0kTlEnI/AAAAAAAAAbQ/c2R5VrgmC_w/s640/s4.jpg

关于如何在 android 上执行此操作的任何想法?

最佳答案

你想做的事情有多种艺术名称,“角钉”是视觉效果行业常用的一种。您需要分两步进行:

  • 计算从所需的校正图像到原始失真图像的映射
  • 根据(1)中计算的映射实际扭曲原始图像。

  • 原始图像的 4 个(非共线、透视失真)角和目标(未失真)图像的 4 个角定义映射。这个映射被称为“homography” - 阅读指向的维基百科页面了解详细信息。一旦知道映射,就可以通过插值计算步骤(2)的变形:对于目标图像中的每个像素,找到原始图像中的相应像素。由于这通常不是整数坐标,因此您可以从邻居中插入其颜色。使用了各种插值方案,常见的是最近邻、双线性和双三次(按结果中的平滑度递增顺序)。

    对于 Android,我建议安装 OpenCV SDK ,然后使用 geometry transformation routines (上面两个步骤使用 getPerspectiveTransform 和 warpPerspective)。

    关于android - imageview的透视校正,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10904581/

    10-10 22:37