如何确定是否需要旋转图像

时间:2016-04-18 16:57:44

标签: algorithm opencv image-processing imagemagick leptonica

我正在尝试找到一种方法来确定是否需要旋转图像以使文本水平对齐。如果它确实需要旋转多少度呢?

我将图像发送到tesseract并使tesseract有效,图像中的文本需要水平对齐。

我正在寻找一种方法,而不依赖于"定位"图像中的元数据。

我已经考虑过以下方法:

  1. 将图像顺时针旋转90度,然后将所有四张图像发送到tesseract。这不是理想的,因为需要处理一次图像4次。
  2. 使用hough line变换来查看线条是垂直还是水平。如果它们是垂直的,则旋转图像。这样,图像仍然可能需要旋转180度。所以我不确定这会有多有效。
  3. 我想知道是否有其他方法可以使用OpenCV,imageMagik或任何其他图像处理技术来实现这一目标。

3 个答案:

答案 0 :(得分:0)

如果您有1000张水平或垂直图像,您可以将这些图像调整为224x224,然后微调卷云神经网络,如AlexNet或VGG,以完成此任务。如果您想知道对图像进行多少次正确旋转,可以将标签设置为顺时针旋转的数量,如0,1,2,3。

http://caffe.berkeleyvision.org/gathered/examples/finetune_flickr_style.html

答案 1 :(得分:0)

在所有4个方向上尝试ocr似乎是一个合理的选择,我怀疑你会发现更可靠的启发式。

如果速度是一个问题,您可以首先OCR图像的一小部分。选择一个矩形区域,该区域具有适当数量的边缘像素和文本的白/黑比率,然后将其发送到不同方向的tesseract。对于一个小区域,您甚至可以尝试小于90°的步长,或者将其与另一种启发式方法(如Hough)结合使用。

如果您还记得基于之前图像的最可能的方向,并且在tesseract成功处理方向后停止,您在大多数情况下甚至不必尝试大多数方向。

答案 2 :(得分:0)

您可以在带有tesseract的psm选项的终端中解决此问题。

tesseract --psm 0 "infile" "outfile"将创建outfile.osd,其中包含以下信息:

Page number: 0
Orientation in degrees: 90
Rotate: 270
Orientation confidence: 27.93
Script: Latin
Script confidence: 6.55

man tesseract

...       
--psm N
           Set Tesseract to only run a subset of layout analysis and assume a certain form of image. The options for N are:

               0 = Orientation and script detection (OSD) only.
               1 = Automatic page segmentation with OSD.
               2 = Automatic page segmentation, but no OSD, or OCR. (not implemented)
...