0

この場合、何を開始すればよいかわかりません。次の tiff 画像から赤いブロック画像を抽出する必要があります。ここに画像の説明を入力

抽出後、グラフを読み取って、次のように出力を取得する必要があります。どのアルゴリズムを使用する必要がありますか?プログラミング言語として C# を使用しています

4

1 に答える 1

0

多分MODIがあなたを助けます:

http://www.codeproject.com/Articles/29172/Converting-Images-to-Text-using-Office-2007-OCR-Op

更新しました:

あなたは正しく試したと思います(AForge.net)。AForge.Math.Geometry.SimpleShapeChecker クラスを使用すると、すべての長方形が見つかります。もう一度やり直します。

更新しました

Aforge.net を使用すると、2 つの画像を比較できます。あなたの問題では、各セルの元の空のセル(標準セル)と比較する必要があります。類似度の順に並べると、最初の 24 個のセル (最も類似していないセル) が必要になります。

このような:

private void ProccessBitmap(Bitmap img, Bitmap original_cell)
    {
        int cellWidth = img.Width / 24;
        int cellHeight = img.Height / 4;
        IList<KeyValuePair<float, Rectangle>> table = new List<KeyValuePair<float, Rectangle>>();
        Bitmap cell;
        Rectangle rect;

        AForge.Imaging.ExhaustiveTemplateMatching tm = new AForge.Imaging.ExhaustiveTemplateMatching(0);

        for (int rowIndex = 0; rowIndex < 4; rowIndex++)
        {
            for (int colIndex = 0; colIndex < 24; colIndex++)
            {
                rect = new Rectangle(colIndex * cellWidth, rowIndex * cellHeight, cellWidth, cellHeight);

                cell = img.Clone(rect, img.PixelFormat);

                var matchings = tm.ProcessImage(original_cell, cell);
                table.Add(new KeyValuePair<float, Rectangle>(matchings[0].Similarity, rect));

                cell.Dispose();
            }
        }

        using (Graphics gr = Graphics.FromImage(img))
        {
            gr.DrawRectangles(new Pen(Color.Red, 3.0f), table.OrderBy(a => a.Key).Take(24).Select(a => a.Value).ToArray());
        }

        pictureBox1.Image = img;
    }
于 2012-09-11T07:34:20.717 に答える