考察:「若葉の弛緩法」

by ご近所のきよきよ


 

 分岐点と断点によって線分セットを作ってから、弛緩法で全体の画像がなにを表しているか判断していきます。この辺の議論は、前に述べたことだと思います。弛緩法のためのデータの記述法も述べています。・・・が、若葉の作成に当たって、もう一度弛緩法関連のアイデアをまとめていきましょう。


 パターンは線分の形状(属性)と線分間の関係(配置関係)であります。細かい多項関係の記述は面倒ですから、すべて二項関係で記述するものとします。たぶん、二項関係記述で十分の能力があると思われます。


 配置情報は英語の前置詞とか、数値とかで良いでしょう。後は曲率とかの記述、三角形、円、四角形とかのオブジェクト記述になるでしょう。たぶん精密な記述体系は不要そうです。人間の記述力はそんなものです。精密なパターンマッチングが必要なときは、テンプレートマッチングを実施できるようにすることで良いでしょう。


 線分の属性と関係を順次精密に把握していくアルゴリズム(弛緩法)を実現すればいいのです。それは、各線分と線分二項関係に投票していくテーブルを作って、ゴリゴリと解析していくことになります。力、力、力よ。力で押し切るのが弛緩法の極意です。

 その中で、ここで決めておかねばならない事柄は、パターンの記述規則であり、アルゴリズムの考え方です。先ずは、パターンの記述規則を考えていきましょう。

【パターン記述規則】

鼻は顔の輪郭(circle_001)の垂直の線(virtical_middle_line_002)である。

 (pattern,id=nose_001; (target;vertical_middle_line_002) (position;(center,of=circle_001)) )


 顔の認識ですと、正面のパターン定義、横顔のパターン定義、上向き、下向き、背面とかグループで定義することになります。

 また、線には相対的な大きさのレベル、曲率、角などの属性が振られます。弛緩法の実施を全ての線の組み合わせに対して行うのは現実的でないですから、こうした属性によって、線を分類して、弛緩法を適用する組み合わせを低減することも必要なことです。弛緩法は何段階にもわたって実施していくことになります。線の持っている雑音なのか、本当に必要な情報なのかを判断し、次に、全体の図形の認識に至っていくのです。


【アルゴリズムスケルトン】

 弛緩法はそれらしい解釈に対して、相互に投票し合うことが基本的な処理です。そこで、線の解釈を表現するオブジェクトを作り、そこに投票していくことをプログラムとして作っていくことになります。そのオブジェクトをRelaxNodeとしましょう。すると、RelaxNodeは解釈(顔輪郭か目か、鼻か、眉毛か、口か・・・)と、投票数と自分の解釈コマンド(他の線の解釈を支持するデータ)を持つことになります。


 弛緩法は、Relaxer処理クラスでじつげんする。このクラスは、RelaxNode群を相互参照しながら順次確信に至っていくことになります。

 そこでRelaxNodeは図形を2次元表現するMapSystemの各ピクセルからポイントされ、そのピクセルが一つの線分の一部であることが示されます。MapSystem線分を表すRelaxNodeの位置関係を示します。だから、MapSystemを解析することで、図形認識ができていくことになります。

 弛緩法の処理は3段階になるでしょう。前処理と本処理、後処理です。前処理で線分の属性と位置関係を全体図形との関連で相対評価します。大きいとか、中くらいとか、小さいとか。また、大体の図形の構造を与えるものです。初期設定ですね。本処理は、弛緩法を本格的に展開していく局面です。終了処理は最も確からしい認識結果を目標のものとして選別していく過程です。

 

おわり