8

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

直观地说,我首先使用霍夫变换来检测五线谱(五线谱),然后计算它们与水平轴之间的角度,并将图像旋转到角度。这在理论上可行,但霍夫发现线段和这些线段的角度不一致。所以它不起作用。(可能是因为透视的影响)

之后,我尝试了许多边缘检测和寻线算法,但没有一个能稳定运行。(包括频域旋转和线段检测器)

现在我正在考虑一种类似于 Android 上的文档扫描仪的新方法。我尝试将我的图像转换为扫描文档之类的形式。我想将我的图像与水平轴对齐并消除由于倾斜和透视而产生的效果。

我想知道是否有人对如何实现这种“文档扫描”有任何想法。或者,如果您对对齐文档或稳定线检测有任何想法,这对我未来的工作会很有帮助。谢谢你。

4

2 回答 2

3

您可以简单地测量板材左侧和右侧的顶部或底部板条的高度,并据此计算角度。唯一的困难可能是找到一个自动测量高度的好点(即找到垂直扫描五线谱的列)。使其健壮的一种方法是检查 6 个或许多连续的黑色像素,这些像素由接近恒定宽度的白色区域隔开。当您发现这一点时,您可以确定没有偏离测量值的杂散音符或符号。

于 2012-04-11T12:01:14.867 回答
2

您应该首先消除相机失真:

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

接下来,按照openOMR的实现方式,你可以使用下面这段代码进行FFT,以求出整个图像倾斜的角度:

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

于 2012-06-20T23:09:18.933 回答