Java检测图像中的旋转

时间:2013-08-26 12:17:22

标签: java image rotation ocr detect

我正在开发一个主要功能是OCR发票的OCR,现在它可能会在扫描时发生(轻微)旋转。

您建议如何修复轮换?

我现在有什么:

  • 计算图像中“白线数量”的函数。
  • 可以任意角度旋转图像的功能。
  • 当前方法:每次以1度的角度旋转图像,检查最白线的解决方案,并将该图像用于剩余的OCR过程。
  • 缺点:每次旋转需要0.5秒,图像以相当合理的高分辨率(2000宽x 3000高)扫描,并且OCR过程肯定需要分辨率。

有什么方法可以检测到图像中的旋转,这样我只需要做一次昂贵的旋转吗?

问候。

2 个答案:

答案 0 :(得分:3)

  
      
  • 缺点:每次旋转需要0.5秒,图像以相当合理的高分辨率(2000宽x 3000高)扫描,并且OCR过程肯定需要分辨率。
  •   

当然,但为了分析白线,高分辨率可能不需要

我建议在第一个角度确定之前尝试缩小或裁剪图像(缩小版本),并始终使用低分辨率版本直到确定角度。然后交换回用于最终旋转和OCR的大分辨率图像。

答案 1 :(得分:2)

我建议您先降级图片并将其转换为monochrome,这样我们只有0 and 255 in the 8 bit颜色格式有助于识别,然后跟踪black行代替{发票上的{1}}(对您的算法来说不应该是一个很大的改变),因为一般发票都包含水平黑线,所以只要您能找到黑线的斜率(white,我猜输入不会更倾斜那么你可以获得主图像所需的度数旋转。

为了优化这个过程,我建议您在跟踪黑线之前使用图像细化,这样可以获得更好的效果,因为可能有粗黑线。