怎样才能将页面的图片整理成看起来像被扫描的图片?
我看过应用程序,想知道如何以编程方式拍摄图像。定义它需要如何转换,使其看起来与摄像机平行,而不是倾斜的视角。怎样才能将页面的图片整理成看起来像被扫描的图片?
然后合并多张照片创建一个pdf文件。例如这个应用程序:https://play.google.com/store/apps/details?id=com.appxy.tinyscan&hl=en
我不使用书籍这种琐碎的事情,所以对不起,我不能推荐任何(尤其是英语)。你需要做的是这样的:
- 输入图像
-
找到主轮廓
理想整个电网,但即使外轮廓就足够了(如果没有网格存在)。您需要将轮廓分成水平(红色)和垂直(绿色)曲线(或一组点)。
-
通过样品轮廓曲线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
。作为(u,v)
的双三次插值计算xi,yi
。并且拷贝像素:dst(x,y)=src(xi,yi);
这仅仅是近邻,但你也可以使用双线性这个......至于三次曲线,我会用这个polynomial。
双立方插值背后的想法很容易。计算点对应4个水平轮廓上的参数
u
。这会给你4个垂直方向的最终三次插值控制点和v
作为参数。生成的坐标是您的源像素位置。
欲了解更多信息,请参阅:
- How can i produce multi point linear interpolation?
- Bicubic interpolation
- OpenCV Birdseye view without loss of data
如果你没有一个网格使用,可以用来作为一个任何信息。例如,文本行可以被认为是一个轮廓...
我会在两天内回复任何问题,这对我来说是很多东西,所以忍受着我。 –
我以前曾问过这个问题,但没有人能回答。这不是微不足道的,我会花6个月的课程,然后感觉舒适。 –
我是一个web开发者,如果你写了一本书,id就买它。这就需要新手程序员使用简单的英语来处理图像处理中的高级概念。 –
http://docs.opencv.org/trunk/da/d6e/tutorial_py_geometric_transformations.html –
请参阅[OpenCV Birdseye view without data of](http ://*.com/a/39316776/2521214)所以找到边缘点,并使用双线性或双三次插值来矫直图像 – Spektre
,这是超过我的头,直观地我可以告诉发生了什么,但相当迷茫。任何你推荐的书都会让我加快速度。 –