一种按行和列方式读取图像的算法?

时间:2013-06-27 18:15:48

标签: algorithm image-processing extract

有人可以帮我阅读并逐行提取图像的信息吗?

我的努力是从音乐壁上提取信息。

音乐五线谱图像示例:

Image

对于包含多条木板线的图像,我需要按顺序提取stave数据。

有人可以帮我一起使用代码段吗?要使算法逐行提取?

1 个答案:

答案 0 :(得分:2)

无论您做什么,图像中的信息都会以“行/列方式”提取;请记住,从像素中分析图像,即小方块。它一个接一个地读取所有这些小方块。

图像处理中的困难部分是处理特定的几何问题。例如:从此逐行读取复杂形状,如链接中的一个五线谱。

这里有一个小代码(用C#.NET编写)提供了你想要的算法的简单版本:它通过影响单个变量(readVertically)逐行或逐列读取。我想这是一个很好的介绍来帮助你:

private void readImage(string imagePath)
{
    Bitmap imageBitMap = (Bitmap)Bitmap.FromFile(imagePath);

    bool readVertically = true; //This flag tells where the image will be analysed vertically (true) or horizontally (false)

    int firstVarMax = imageBitMap.Width; //Max. X
    int secondVarMax = imageBitMap.Height; //Max. Y
    if (!readVertically)
    {
        firstVarMax = imageBitMap.Height;
        secondVarMax = imageBitMap.Width;
    }

    for (int firstVar = 0; firstVar < firstVarMax; ++firstVar)
    {
        for (int secondVar = 0; secondVar < secondVarMax; ++secondVar)
        {
            //Color of the given pixel. Here you can do all the actions you wish (e.g., writing these pixels to other file)
            if (readVertically)
            {
                Color pixelColor = imageBitMap.GetPixel(firstVar, secondVar);
            }
            else
            {
                Color pixelColor = imageBitMap.GetPixel(secondVar, firstVar);
            }
        }
    }
}