gpt4 book ai didi

javascript - 如何将页面图片拉直,使其看起来像扫描的一样?

转载 作者:行者123 更新时间:2023-11-28 18:08:28 24 4
gpt4 key购买 nike

我看过应用程序,想知道如何以编程方式拍摄图像。定义它需要如何转换,以便它看起来与相机平行,而不是倾斜透视。

然后合并多张照片来创建一个 pdf 文件。例如,这个应用程序执行此操作:https://play.google.com/store/apps/details?id=com.appxy.tinyscan&hl=en

最佳答案

我不会用书籍来做这些琐碎的事情,所以很抱歉我不能推荐任何书籍(尤其是英文的)。您需要做的是:

control points

  1. 输入图片
  2. 找到主要轮廓

    理想情况下整个网格,但即使是外部轮廓也足够了(如果不存在网格)。您需要将轮廓分为水平(红色)和垂直(绿色)曲线(或点集)。

  3. 通过 4 个“等距”点对轮廓曲线进行采样

    由于图像扭曲(不仅仅是旋转),那么我们至少需要使用双三次插值。为此,每个补丁需要 16 点 (Aqua)。

  4. 添加镜像点以覆盖整个网格

    图像上的镜像(黄色)点仅适用于水平轮廓,您也应该对垂直轮廓执行此操作(图像中不适合我,并且不想为此放大分辨率)以及 Angular 点,因此你有6x6控制点。镜像可以线性完成(就像我做的那样)。

现在转换是这样完成的:

  1. 处理所有像素 dst(x0,y0)目标图像
  2. 句柄 x,y作为三次插值的参数

    如果xs,ys则目标图像分辨率为:

    u=(3.0*x)/xs
    v=(3.0*y)/ys

    现在三次插值通常在参数 t=<0.0,1.0) 上完成所以
    如果u=<0.0,1.0>使用t=u和控制点0,1,2,3
    如果u=<1.0,2.0)使用t=u-1.0和控制点1,2,3,4
    如果u=<2.0,3.0>使用t=u-2.0和控制点2,3,4,5

    垂直轮廓和v也是如此。 。计算xi,yi作为 (u,v) 的双三次插值。并复制像素:

    dst(x,y)=src(xi,yi);

    这只是最近邻,但您也可以使用双线性...作为三次曲线,我将使用此 polynomial .

    双三次插值背后的想法很简单。计算参数u对应的点4 个水平轮廓上。这将为您提供垂直方向上最终三次插值的 4 个控制点和 v作为参数。生成的坐标是您的源像素位置。

更多信息请参见:

如果您没有网格,请使用任何可以用作网格的信息。例如,文本行可以被视为此轮廓...

关于javascript - 如何将页面图片拉直,使其看起来像扫描的一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42144001/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com