1. 辞書作成プログラムMakeDictionary

    特徴量辞書の作成は,MakeDictionaryディレクトリにあるMain.cのプログラムで行っています.ここでは,重要な定数について説明します.

    11  /* 認識する文字の数 */ 
    12  #define CHAR_NUM 10
    13  /* 辞書として登録する文字の数 */
    14  #define SAMPLE_NUM 10
    15 /* 辞書のあるディレクトリ */
    16 #define DICT_DIR "..\\DictionaryData\\"
    17 /* メッシュ特徴量の辞書名 */
    18 #define MESH_DICTIONARY "Mesh.dict"
    • 12行目にあるCHAR_NUMは,認識対象となる文字の数を表わしています.ここでは0から9までの10種類を対象としているので,10と定義しています.
    • 14行目にあるSAMPLE_NUMは,1つの文字に対して,特徴量辞書に登録している画像の数を表わしています.この数が多いと,さまざまなフォントの文字について認識することが可能となりますが,多く登録しすぎると逆に弊害が生じる可能性があります.
    • 16行目にあるDICT_DIRは,特徴量辞書がある場所を表わしています.
    • 18行目にあるMESH_DICITIONARYは,メッシュ特徴量の辞書のファイル名を表わしています.


  2. 数字認識プログラムDigitRecognition

    数字認識はDigitDictionaryディレクトリにあるMain.cのプログラムで行っています.ここでは,重要な定数について説明します.
    /* 辞書のあるディレクトリ */ 
    10  #define DICT_DIR "..\\DictionaryData\\"
    11  /* メッシュ特徴量の辞書名 */
    12  #define MESH_DICTIONARY "Mesh.dict"
    13 /* ファイル名の長さ */
    14 #define FILENAME_SIZE 1024
    15 /* 認識を行う文字のあるディレクトリ */
    16 #define RECOGNIZED_CHAR_DIR "..\\RecognizedData\\"
    17 /* 認識を行う文字 */
    18 define RECOGNIZED_CHAR "4-00.pbm"


  3. ビットマップ構造体

    特徴量辞書を作成するときや,数字認識を行うときにPBM画像ファイルを読みだし,ビットマップ構造体(Bitmap)に入れています.Bitmap構造体の定義は,Featureディレクトリの下のincludeディレクトリにBitmap.hとして記述されています.また,Bitmap構造体に関連する関数はFeatureディレクトリの下のBitmap.cに記述してあります.ここでは,Bitmapに関係する関数について説明します.
    ビットマップ構造体の初期化
    void setPixel(Bitmap *bitmap, unsigned int x, unsigned int y, Pixel p)
    Bitmap * bitmap ビットマップ構造体の先頭アドレス
    unsigned int width ビットマップの幅
    unsigned int height ビットマップの高さ
    戻り値 なし  

    ビットマップに画素を設定する
    void initBitmap(Bitmap *bitmap, unsigned int width, unsigned int height)
    Bitmap * bitmap ビットマップ構造体の先頭アドレス
    unsigned int x 設定する画素の位置(X座標)
    unsigned int y 設定する画素の位置(Y座標)
    Pixel p 設定する画素(黒か白)
    戻り値 なし  

    ビットマップに描画されている画素を得る
    Pixel getPixel(Bitmap *bitmap, unsigned int x, unsigned int y)
    Bitmap * bitmap ビットマップ構造体の先頭アドレス
    unsigned int x 得たい画素の位置(X座標)
    unsigned int y 得たい画素の位置(Y座標)
    戻り値 なし  

    ビットマップを解放する
    void freeBitmap(Bitmap *bitmap)
    Bitmap * bitmap メモリを解放するビットマップ構造体の先頭アドレス
    戻り値 なし  

    ファイルより画像を読み込む
    bool readBitmap(Bitmap *bitmap, char *filename)
    Bitmap * bitmap ビットマップ構造体の先頭アドレス
    char * filename 読み込むファイル名
    戻り値 ファイルが読み込めたら真,読み込めなかったら偽を返す 


  4. 新しいフォントを辞書に追加するには

    • 辞書に登録する画像をgimpで描く.
      • 幅32[pixel],高さ32[pixel]サイズの画像を新規作成する.
      • PBM形式の画像として保存する.
    • 所定の場所に画像ファイルを設置する.
      • DigitRecognition\DictionaryData\[文字]\[文字]-[番号].pbmとする.
    • MakeDictionary\Main.cのなかのSAMPLE_NUMの数を増やす.