2013-08-26 82 views
1

我正在研究OCR的哪些主要功能是OCR發票,現在可能會發生它們在掃描時發生(輕微)旋轉。Java在圖像中檢測旋轉

你會建議如何解決旋轉問題?

我目前有:

  • ,其計算圖像中的「白線量」的功能。
  • 可以以任意角度旋轉圖像的功能。
  • 當前方法:每次旋轉圖像1度的角度,檢查白線最多的解決方案,並將該圖像用於剩餘的OCR處理。
  • 缺點:每次旋轉需要0.5秒,圖像以相當合理的高分辨率(2000寬×3000高)進行掃描,OCR過程肯定需要分辨率。

有沒有什麼辦法可以檢測圖像中的旋轉,這樣我只需要做一個昂貴的旋轉?

問候。

+0

請問您能分享想法如何檢測圖像是否旋轉並向相反方向旋轉? – Arvind

回答

3
  • 缺點:每旋轉花費0.5秒,圖像被在一個相當合理的高分辨率(2000寬×3000高度)掃描,並且是絕對需要的OCR處理的分辨率。

當然,但高分辨率可能是不需要爲了分析的白線。

我建議在第一個角度確定之前嘗試縮小或裁剪圖像(以較小的副本),並一直使用低分辨率版本,直到確定角度。然後交換回到最後一個旋轉和OCR的大分辨率圖像。

+0

很快就會明確測試解決方案(tm)。但爲了保持理論性,如果我將寬度和高度降低兩倍,那麼對於1000寬度×1500高度的分辨率,所花費的時間應該是0.125秒?再次只是在理論上。 – skiwi

+0

Re。次/持續時間。如果線算法是逐像素計算,那麼可能是1/4。 –

+0

有趣的是,在一半分辨率下,每次嘗試需要0.015s,而在四分之一分辨率下,每次嘗試需要0.01s。雖然在全分辨率上仍然需要0.45s。 – skiwi

2

我建議你先降級的圖像,並將其轉換成monochrome所以我們只有0 and 255 in the 8 bit顏色格式,將在查明幫助),然後跟蹤black線,而不是white的發票(這不應該是一個大的變化在你的算法中),因爲通常發票包含水平黑線,所以一旦你能找到黑線的斜率(that are 30 degree +/- to you plane,因爲我猜輸入不會更傾斜那麼),你可以得到你需要的旋轉角度主要圖像。

爲了優化這個過程,我建議您在跟蹤黑線之前也使用圖像細化,這樣可以獲得更好的效果,因爲可能會有粗黑的線條。

+0

這是'單色'的+1,但閱讀,..great的答案! –

+0

@AndrewThompson謝謝:) – dirtydexter