清洁低质量扫描的乐谱工作流程。

3
我正在寻找一种工作流程,可以清洁(并可能矫正)乐谱的老旧和糟糕扫描图像(例如下面的图像)。
我尝试使用去噪、霍夫滤波器、imagemagick几何滤波器,并努力识别一系列过滤器以去除扫描仪噪声/偏差。 enter image description here

你那里的图像相当糟糕,非常非常糟糕。解决方案可能不会容易,也不会可扩展到数据集中的其他样本。准备好失去很多原始信号(或图像)。如果使用深度学习进行这种重建,我不会感到惊讶,因为这可能是唯一可行的选择。 - stateMachine
@stateMachine 这可能是个好主意。你有什么提示可以让我人工生成类似的噪声模式,以便我可以为该角色训练一个神经网络吗? - Oren Pinsky
我认为这需要手动用户输入。最好的情况是你可以帮助用户清理一下,并准确地转录笔记。 - Christoph Rackwitz
我觉得我可能在这本书中读到过相关内容,但我记不清了。 - Sam
1个回答

0

一些快速的想法:

  1. 去除灰度噪点:进行低通滤波(暗色),因为音乐比很多噪音更暗。剩余的噪音主要是垂直线。

  2. 旋转图像:对图像的每一列求灰度值之和,得到一个向量表示该列的像素亮度总和。使用梯度下降或搜索图像的旋转角度(在+/- 15度旋转范围内)来最大化该向量的方差。这里的想法是垂直噪音线表示垂直对齐,所以我们希望图像的列与这些噪音线对齐(= 最大化方差)。

  3. 去除垂直线噪声:旋转后,取每列的中位数值。离该中位暗度值更远(平方差异)的像素,我们越有信心它是其真实颜色(例如,当垂直噪音为灰色时,一个纯白色或黑色像素)。由于噪音不是白色的,可以尝试通过中位数的白度混合此距离,作为替代置信度指标。理想情况下,我认为你需要训练某个7x7x2卷积过滤器(2个通道是像素值和距离中位数)来估计像素的真实值。那将是最简单的机器学习方法,而不是使用一些成熟的NN。然而,考虑到你缺乏训练数据,我们必须为像素值的真实价值创造自己的启发式算法。你可能需要尝试一下,但这里是我认为可能会起作用的:

    • 设置某种置信度阈值;在该阈值以上,我们按原样取值。在阈值以下,将其设置为白色(整个页面预期像素值的二进制值)。
    • 对于所有低于阈值的值,取+/- 2像素L1距离(例如5x5卷积)内的最大置信度值作为该像素的值。似乎特征至少相隔2个像素,但对于较低分辨率可能需要调整窗口大小。由于白色像素可能会更加自信,因此您可以尝试优先考虑较暗的像素(以某种方式增加它们的自信心)。
    • 夹紧图像对比度,或者进行另一个低通滤波。

玩弄中我注意到垂直线在顶部似乎略微弯曲,因此您可以尝试按100像素垂直分块计算。或者,不要让整个图像的聚合列总和/中位数来进行聚合,而是在100像素窗口中进行聚合。 - Azmisov
非常感谢您的见解。我会尝试编写一些相关代码并分享结果! - Oren Pinsky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接