1

私は単純なOCRアプリケーションに取り組んでいます(これまでに開発できるものよりもはるかに優れたアプリケーションとテクノロジーがすでに存在することは知っていますが、それは楽しみです)。私のアプローチは、次のような画像の特定の特性を比較することにより、スキャンされた文字を既知の文字のトレーニングセットと比較することです。

  1. 幅高さ
  2. ペイントされたピクセルの数
  3. コーナー数

誰かが3.と4のアルゴリズムを教えてもらえますか(擬似コードは問題ありません)?

4

1 に答える 1

0

これを試してみてください

プライベート関数 getCornerType($im, $x, $y) {

    $p11 = $this->getBWcolor($im, $x, $y);
    $p21 = $this->getBWcolor($im, $x+1, $y);
    $p12 = $this->getBWcolor($im, $x, $y+1);
    $p22 = $this->getBWcolor($im, $x+1, $y+1);

    $sum = $p11 + $p12 + $p21 + $p22;

    if ($sum % 2 == 0){
        return false;
    }


    if (($p11==COLOR_BLACK)&&($p21==COLOR_WHITE)&&($p12==COLOR_WHITE)&&($p22==COLOR_WHITE)){
        return CORNER_BP_LEFT_TOP;
    }

    if (($p11==COLOR_WHITE)&&($p21==COLOR_BLACK)&&($p12==COLOR_WHITE)&&($p22==COLOR_WHITE)){
        return CORNER_BP_RIGHT_TOP;
    }

    if (($p11==COLOR_WHITE)&&($p21==COLOR_WHITE)&&($p12==COLOR_BLACK)&&($p22==COLOR_WHITE)){
        return CORNER_BP_LEFT_BOTTOM;
    }

    if (($p11==COLOR_WHITE)&&($p21==COLOR_WHITE)&&($p12==COLOR_WHITE)&&($p22==COLOR_BLACK)){
        return CORNER_BP_RIGHT_BOTTOM;
    }

    if (($p11==COLOR_WHITE)&&($p21==COLOR_BLACK)&&($p12==COLOR_BLACK)&&($p22==COLOR_BLACK)){
        return CORNER_WP_LEFT_TOP;
    }

    if (($p11==COLOR_BLACK)&&($p21==COLOR_WHITE)&&($p12==COLOR_BLACK)&&($p22==COLOR_BLACK)){
        return CORNER_WP_RIGHT_TOP;
    }

    if (($p11==COLOR_BLACK)&&($p21==COLOR_BLACK)&&($p12==COLOR_WHITE)&&($p22==COLOR_BLACK)){
        return CORNER_WP_LEFT_BOTTOM;
    }

    if (($p11==COLOR_BLACK)&&($p21==COLOR_BLACK)&&($p12==COLOR_BLACK)&&($p22==COLOR_WHITE)){
        return CORNER_WP_RIGHT_BOTTOM;
    }

}

これがうまくいくことを願っています

于 2012-12-28T07:38:25.593 に答える