2017-05-05 37 views
2

我绘制了一个带有一些校准点的矢量几何图形。在打印点上调整几何图形

Original draw

我打印该几何结构,然后我物理扫描打印的校准点(I不能扫描几何形状,我只能扫描校准点)。 当我获得这些点时,由于某些打印错误或打印校准不良,这些点不再处于其位置。

Scanned image

的问题是: 是否有任何的算法,帮助我适应在新的点的基础原始几何扫描? 在实践中,我需要扭曲几何图形以获得打印在纸张上的真实几何图形,这些图形与校准点上的打印误差相同。

失真是由材料(未纸但布)的在打印过程中的物理扭曲给出。我不知道在印刷过程中材料会扭曲多少。

+0

有无数*可能*的方式来做你明显要求的。您是否更了解打印和扫描过程中可能出现的失真? –

+0

对Rory的评论进行详细阐述:失真似乎不是标准模型之一(例如径向失真,透视变换等)。关于每个点失真的独立性,你可以说什么?看起来好像有一个潜在的粗糙失真模式(甚至可以用线性变换表示)。每个点上是否存在一些额外的(独立的)噪音?否则,顶行中的中间点看起来真的不合适。您的采集设置中有什么可能的失真来源? –

+1

谢谢大家。在印刷过程中,材料(不是纸,而是布)的物理变形给出了变形。我不知道在印刷过程中这些材料会有多少变形。有一个原始矩阵的点和最终的矩阵点(我可以在图中插入超过8个点),我不能以任何方式计算路径的新点? – stefano

回答

0

是的,有算法来帮助你。一般来说,您需要了解/找到您拥有的两幅图像之间的转换。

典型的几何变换是需要至少三个控制点或分段局部线性/局部加权均值的仿射变换(位移,比例,旋转,剪切,反射),它们至少需要4-6个控制点。你拥有的控制点越多,总的来说就越好。

鉴于在一个图像的一组控制点和控制点的另一图像中的对应的一组有用于发现如果指定了类(仿射或分段局部线性)之间的最佳变换算法。在Matlab中参见例如fitgeotrans。我不知道如何通过某种优化来解决问题。应该很容易找到其他编程语言(Python,C,Java)的可用实现。

剩下的是找到两个图像中控制点之间的对应关系。对于少数图片,您可以手动完成,但在一般情况下,您可能还需要将其自动化。像imregister一般的图像配准算法应该对你的图像有好处。他们给你一个很好的初始估计(可能已经足够了),以便随后识别相应的点对是微不足道的(总是走近)并允许精炼。

所以我建议你先只是尝试与身份转变为初值准图像(灰度数据)。然后识别相应的点对,并使用仿射或碎片/局部变换来细化变换。然后在几何图形上应用变换以获取打印的几何图形。根据你选择的编程语言,你会发现很多实现这个工作的实现。