2012-04-10 24 views
8

我正在開發關於光學音樂識別的Android項目。我通過移動相機拍攝一張樂譜照片,並嘗試識別筆記和符號。預處理後,我對方法非常熟悉,但這些工作通常是在掃描儀的幫助下完成的。 (而不是我必須使用手機攝像頭)Android中樂譜圖像的線條檢測

直觀地說,我首先使用hough變換來檢測譜線(譜線),然後計算它們與水平軸之間的角度並旋轉圖像的角度。這可以在理論上工作,但是hough發現線段並且這些段的角度不一致。所以它不起作用(可能是因爲角度的影響)

之後,我嘗試了許多邊緣檢測和線條查找算法,但沒有一個穩定運行。 (包括頻域旋轉和線段檢測器)

現在我正在考慮一種類似於Android上文檔掃描儀的新方法。我嘗試將我的圖像轉換爲掃描文檔等形式。我想將我的圖像與水平軸對齊,並由於傾斜和透視消除效果。

我想知道有沒有人知道如何實現這個「文檔掃描」。或者,如果您有任何關於對齊文檔或穩定線條檢測的想法,這對我未來的工作將會更有幫助。謝謝。

+0

[這個博客(http://gaut.am/making-an-ocr-android-app-using-tesseract/)可能或如果你可能沒有幫助 – 2012-04-10 22:04:40

+0

願意使用Java,你可能想看看http://audiveris.kenai.com/,這是一個開源的光學音樂識別引擎(披露:我很短時間就是一位貢獻者)。 – btown 2012-04-11 04:44:44

+0

@JasonRobinson:這對OCR項目會有所幫助,但對於這個我相信不會有幫助,無論如何,謝謝。 – 2012-04-11 18:24:56

回答

3

您可以簡單地測量紙張左側和右側的頂部或底部壁板的高度,並從中計算出角度。唯一的困難可能是找到一個很好的點來自動測量高度(即找到垂直掃描立柱的那一列)。一種使其穩定的方法是檢查6個或多少個連續的黑色像素,由幾乎恆定寬度的白色區域分隔。當你發現這一點時,你可以確定沒有流浪的音符或符號丟棄測量。

+0

我嘗試了一種非常類似的方法,但由於兩個原因,它在許多情況下都不起作用。首先是線條並不總是線條,因爲光線,分辨率等。其次,透視使照片看起來對齊,但實際上它並不對齊。 – 2012-04-11 18:38:20

+0

你不需要找到一個實際的線本身,你只需要繪製局部最大值(也許經過平均濾波後),看看它們的間隔是否正常。由於線條太多,它應該相當健壯。我不完全確定你的觀點問題是什麼意思。 – dvhamme 2012-04-13 08:00:29