我见过应用程序,并想知道如何以编程方式拍摄图像。定义它需要如何变换,使其看起来与相机平行,而不是倾斜透视。
然后组合多张照片以创建pdf文件。例如,这个应用程序执行:https://play.google.com/store/apps/details?id=com.appxy.tinyscan&hl=en
答案 0 :(得分:3)
我不会因为这些琐碎的事情而使用书籍而对不起我不推荐任何书籍(特别是英文版)。你需要做的是:
查找主要轮廓
理想情况下整个网格,但即使外部轮廓也足够(如果不存在网格)。您需要将轮廓分为水平(红色)和垂直(绿色)曲线(或一组点)。
样本等高线曲线4"等距离"点强>
由于图像失真(不仅仅是旋转),我们需要至少使用双三次插值。为此,我们需要每个补丁16点(Aqua)。
添加镜像点以覆盖整个网格
图像上的是镜像(黄色)点,仅适用于水平轮廓,你也应该对垂直轮廓进行此操作(不适合我在图像中,并且不想为此扩大分辨率)以及角点也是如此你有6x6
个控制点。镜子可以线性完成(就像我一样)。
现在转换完成如下:
dst(x0,y0)
处理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。
双三次插值背后的想法很简单。在4个水平轮廓上对应于参数u
的计算点。这将为垂直方向的最终三次插值和v
作为参数提供4个控制点。结果坐标是您的源像素位置。
有关详细信息,请参阅:
如果您没有网格,请使用可以作为一个网格使用的任何信息。例如,文本行可以被认为是这个的轮廓...