c#中的图像变换

本文关键字:图像变换 | 更新日期: 2023-09-27 18:10:58

我正在开发一个生成和读取表单的文档处理应用程序。所附的样本表格是作为打印文件生成的,由人们填写,扫描并反馈给应用程序以检测填充值,包括光学标记(气泡),文本(OCR)等。点击这里查看表格示例。

由于扫描在旋转,缩放和平移方面会扭曲图像,因此我使用三个标记来检测方向并以相当原始的方式纠正图像,这在计算和内存上非常昂贵。以下是要点:

  1. 从磁盘读取映像。
  2. 使用AForge.net检测圆球
  3. 使用形状、相对大小和其他属性过滤掉标记。
  4. 计算旋转和旋转图像
  5. 使用AForge.net检测旋转图像中的球体。
  6. 计算缩放和缩放旋转图像。
  7. 使用AForge.net从缩放图像中检测球体
  8. 计算平移和平移旋转,缩放图像。
  9. 使用AForge.net从翻译后的图像中检测球体。
  10. 过滤掉答案标记(气泡),因为我已经有了原始表单的位置。
  11. 提取平均颜色并与阈值进行比较以确定选项是否被填充。

以上是一种非常准确但效率低下的处理方式,我希望采用几何方法只提取一次斑点,过滤掉标记/气泡,并使用简单的数学计算出气泡相对于标记的预期位置。这将减少80%的处理时间和60%的内存使用。

或者,必须有一种方法在一个图像上应用所有三个转换,而不影响下一个。

c#中的图像变换

我将对图像建模并在内存中对该模型进行转换,而不是实际图像。然后,一旦你计算出了变换矩阵,你就可以把它应用到实际图像上进行OCR。