Обнаружение линии на музыкальном листе в Android

Я работаю над Android Project об оптическом распознавании музыки. Я фотографирую ноты с помощью мобильной камеры, и я стараюсь распознавать ноты и символы. Я хорошо знаком с методологией после предварительной обработки, но эта работа обычно выполняется с помощью сканера. (Вместо этого я должен использовать мобильную камеру)

Интуитивно я использовал hough transform сначала, чтобы обнаружить шесты (линии персонала), затем вычислить угол между ними и горизонтальной осью и повернуть изображение так же сильно, как и угол. Это может работать теоретически, но он находит сегменты линии, а угол этих сегментов несовместим. Так что это не сработало (возможно, из-за эффекта перспективы)

После этого я попробовал много алгоритмов обнаружения границ и линейного поиска, но ни один из них не работал стабильно. (Включая вращение частотной области и детекторы сегментов линии)

Теперь я думаю о новом подходе, подобном сканерам документов на Android. Я пытаюсь преобразовать свое изображение в форму, такую ​​как отсканированный документ. Я хочу выровнять свое изображение с горизонтальной осью и избавиться от эффекта из-за наклона и перспективы.

Интересно, знает ли кто-нибудь о том, как добиться этого «сканирования документов». Или, если у вас есть идея о выравнивании документа или стабильном обнаружении линии, это будет более чем полезно для моей будущей работы. Спасибо.

Solutions Collecting From Web of "Обнаружение линии на музыкальном листе в Android"

Вы можете просто измерить высоту верхнего или нижнего ножа слева и справа от листа и вычислить угол от него. Единственная трудность может заключаться в том, чтобы найти хорошую точку для автоматического измерения высоты (т. Е. Найти, какой столбец для сканирования вертикально для ножа). Один из способов сделать его надежным – проверить наличие 6 или сколько бы то ни было последовательных черных пикселей, разделенных белыми зонами почти постоянной ширины. Когда вы обнаружите это, вы уверены, что не было ни малейшего внимания, ни символа, отбрасывающего измерение.

Сначала вы должны удалить искажения камеры:

http://en.wikipedia.org/wiki/Distortion_(optics)#Software_correction

Затем, следуя способу реализации openOMR, вы можете использовать следующий фрагмент кода для выполнения БПФ, чтобы найти угол, на котором все изображение искажено:

http://www.koders.com/java/fid38ED5C64ADB6C4F5F01FB05FB08744AF159A8244.aspx?s=FFT#L23