查找图像角点数和其他特征/特征的算法? (OCR,字母识别)

时间:2012-12-16 13:16:16

标签: ocr feature-detection

我正在研究一个简单的OCR应用程序(我知道已经存在的应用程序和技术比我将要开发的更好,但它很有趣)。我的方法是通过比较图像的某些特征来比较扫描角色和已知角色的训练集,例如:

  1. 宽度,高度
  2. 绘制像素数
  3. 角落数
  4. 有人能告诉我3.和4的算法。(伪代码很好)?

1 个答案:

答案 0 :(得分: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;
    }

}

希望这有效