在Android的乐谱图像上的线条检测

我正在开发关于光学音乐识别的Android项目。 我通过移动照相机拍了一张乐谱的照片,并尝试识别笔记和符号。 预处理后我对方法非常熟悉,但这些工作通常是在扫描仪的帮助下完成的。 (而不是我必须使用手机相机)

直观上,我首先使用hough变换来检测谱线(谱线),然后计算它们与水平轴之间的angular度并旋转图像的angular度。 这可以理论上工作,但houghfind线段和这些段的angular度是不一致的。 所以这是行不通的(也许是因为angular度的影响)

之后,我尝试了许多边缘检测和线条查找algorithm,但没有一个稳定。 (包括频域旋转和线段探测器)

现在我正在考虑一种类似于Android上文档扫描仪的新方法。 我尝试将我的图像转换为扫描文档的forms。 我想将我的图像与水平轴alignment,摆脱倾斜和透视的效果。

我想知道有没有人知道如何实现这个“文档扫描”。 或者,如果您有任何关于alignment文档或稳定的行检测的想法,这将对我未来的工作有很大的帮助。 谢谢。

Solutions Collecting From Web of "在Android的乐谱图像上的线条检测"

您可以简单地测量纸张左侧和右侧的顶部或底部壁板的高度,并从中计算出angular度。 唯一的困难可能是find一个好的点来自动测量高度(即find垂直扫描立柱的那一列)。 一种可靠的方法是检查6个或多个连续的黑色像素,由几乎恒定宽度的白色区域分隔。 当你发现这一点的时候,你肯定没有遗漏的符号或符号丢掉测量。

你应该先去掉相机扭曲:

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

接下来,遵循openOMR的实现方式,您可以使用下面的一段代码来执行FFT,以便find整个图像倾斜的angular度:

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