4

文字と記号の分類が必要なプロジェクトに取り組んでいます(基本的には、単一のASCII文字と楽譜などの記号を処理する必要があるOCR)。私はベクターグラフィックス(WPFのパスとグリフ)を使用しているので、画像は任意の解像度にすることができ、回転は無視できます。トレーニングセットにないフォントとパスを分類する(そしておそらくそこから学ぶ)必要があります。高精度が優先されますが、パフォーマンスは重要です。

Emgu CV(OpenCVの.Netラッパー)を使用した画像検出の例をいくつか見てきました。しかし、私が見つけた例とチュートリアルは、分類ではなく画像検出を具体的に扱っているようです。大きな画像内で画像のインスタンスを見つける必要はありません。画像内のシンボルの種類を決定するだけです。

うまくいく可能性のある方法は多岐にわたるようで、どこから始めればよいのかわかりません。アドバイスや役立つリンクをいただければ幸いです。

4

3 に答える 3

2

あなたはおそらく論文を見る必要があります:それは手書きの文字と数字を指しますが、文書認識に適用される勾配ベースの学習。BelongieとMalikによるShapeContextについても読む必要があります。あなたが探しているべき彼らのキーワードは、数字/文字/形の認識です(検出ではなく、分類ではありません)。

于 2010-07-05T04:53:02.377 に答える
2

EmguCVを使用している場合は、SURF機能の例(StopSign検出器)から始めるとよいでしょう。別の(おそらく補完的な)アプローチは、MatchTemplate(..)メソッドを使用することです。

しかし、私が見つけた例とチュートリアルは、分類ではなく画像検出を具体的に扱っているようです。大きな画像内で画像のインスタンスを見つける必要はありません。画像内のシンボルの種類を決定するだけです。

画像内のシンボルのインスタンスを見つけることにより、事実上それ分類しています。なぜそれがあなたが必要としているものではないと思うのかわからない。

    Image<Gray, float> imgMatch = imgSource.MatchTemplate(imgTemplate, Emgu.CV.CvEnum.TM_TYPE.CV_TM_CCOEFF_NORMED);

        double[] min, max;
        Point[] pointMin, pointMax;
        imgMatch.MinMax(out min, out max, out pointMin, out pointMax);
//max[0] is the score
        if (max[0] >= (double) myThreshold)
        {
            Rectangle rect = new Rectangle(pointMax[0], new Size(imgTemplate.Width, imgTemplate.Height));
            imgSource.Draw(rect, new Bgr(Color.Aquamarine), 1);
        }

そのmax[0]は、ベストマッチのスコアを示します。

于 2010-07-05T09:13:57.637 に答える
1

すべての画像を標準の解像度(適切に拡大縮小して中央に配置)にします。
キャンバスをn個の正方形または長方形のブロックに分割します。

ブロックごとに、そのブロック内の黒のピクセル数または黒と白の比率を測定し、それを特徴として扱うことができます。

画像を特徴のベクトル(各特徴は異なるブロックから発生)として表すことができるようになったので、多くの標準的な分類アルゴリズムを使用して、画像が属するクラスを予測できます。

このタイプのより精巧な方法については、Googleの「ビオラジョーンズ」。

于 2010-07-05T04:20:41.130 に答える