JP2608570B2 - 画像ランレングス・デ−タをコンパイルする方法及び装置 - Google Patents

画像ランレングス・デ−タをコンパイルする方法及び装置

Info

Publication number
JP2608570B2
JP2608570B2 JP63011817A JP1181788A JP2608570B2 JP 2608570 B2 JP2608570 B2 JP 2608570B2 JP 63011817 A JP63011817 A JP 63011817A JP 1181788 A JP1181788 A JP 1181788A JP 2608570 B2 JP2608570 B2 JP 2608570B2
Authority
JP
Japan
Prior art keywords
slice
open list
row line
column
line
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP63011817A
Other languages
English (en)
Other versions
JPS63261478A (ja
Inventor
ジョン・エム・ロイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Steel Corp
Original Assignee
Nippon Steel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Steel Corp filed Critical Nippon Steel Corp
Publication of JPS63261478A publication Critical patent/JPS63261478A/ja
Application granted granted Critical
Publication of JP2608570B2 publication Critical patent/JP2608570B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/42Global feature extraction by analysis of the whole pattern, e.g. using frequency domain transformations or autocorrelation
    • G06V10/421Global feature extraction by analysis of the whole pattern, e.g. using frequency domain transformations or autocorrelation by analysing segments intersecting the pattern
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/44Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
    • G06V10/457Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by analysing connectivity, e.g. edge linking, connected component analysis or slices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/41Bandwidth or redundancy reduction
    • H04N1/411Bandwidth or redundancy reduction for the transmission or storage or reproduction of two-tone pictures, e.g. black and white pictures
    • H04N1/413Systems or arrangements allowing the picture to be reproduced without loss or modification of picture-information

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Signal Processing (AREA)
  • Image Processing (AREA)
  • Character Input (AREA)
  • Image Analysis (AREA)

Description

【発明の詳細な説明】 〔関連出願〕 本発明は、共に本願の譲受人に譲渡されたYih−Liang
Lien Loisの係属中の米国特許出願「入力する走査画像
データのベクトル化のための装置および方法」およびDa
vid M.Krichの係属中の米国特許出願「高速直列ピクセ
ルの近傍プロセッサおよび方法」と関連している。
〔産業上の利用分野〕
本発明は、グラフィック画像等の行単位の電子的走査
により得られるデータを簡単にする方法および装置に関
し、特にベクトル化されそして(または)文字認識操作
の対象にされるべきデータを取出すため最小のメモリー
・アクセス操作回数で、走査されたピクセル・データを
圧縮してこれを以降のベクトル化および(または)文字
認識操作のため利用することができるフォーマットに組
立てるための装置および方法に関する。
〔従来の技術および解決しようとする課題〕
走査された画像データ即ちピクセル・データについて
操作するため多くの手法が用いられてきた。一般に使用
される大部分の手法は、走査された点の色の暗さを表わ
すピクセル・コードの形態に全てのピクセルを格納する
ステップを含み、各ピクセル・コードはこのピクセル・
コードを生じた走査点の場所に対応する記憶場所に格納
される。このような手法は、走査された文書全体を表わ
す全てのピクセル・コードを格納するため非常に大きな
メモリー量を必要とする。必要なメモリー量および必要
なメモリー集約的なピクセル操作回数を減少するため、
所謂「細線化(line thinning)」および「境界トレー
シング」のベクトル化手法を含む色々なベクトル化手法
が開発されてきた。これら手法の全てではなくともその
大半が、広範なピクセル操作必要とし、従って必要以上
に遅くなり、かつ必要以上に大きなメモリー量を必要と
した。最終的に再生された画像における精度のかなりな
喪失もまた、これまでのベクトル化手法の大きな欠点と
なった。
1つの従来技術の文献である、日本の信州大学工学部
教授M.OkamotoおよびH.Okamoto著「ラン・レングス情報
のみを用いることによる手書き図のライン認識」は、手
書き図のライン認識のための手法について記載し、この
手法においては、もしある結合性条件および他の条件が
満たされるならば、連続するラインの走査が「ブロッ
ク」に変っていくランレングス・データを生じる。直接
的なピクセル操作量はこれにより減少する。ピクセル間
の単なる分断即ち小さな間隙は排除される。
前記のOkamotoの文献においては、走査された画像は
「全体的」な観点から操作されない。即ち、観察者によ
り見える全画像はその全体においてはシミュレートされ
ない。その代り、画像は多数のブロック即ち台形に細分
化され、これを走査された画像における元の対象物を表
わすベクトル・データになるよう前記台形即ち小片を合
成する試みにおいて適用される数百の「特例」則にかけ
られる。この試みにより生じたベクトル化データは、グ
ラフィック画像のライン単位の走査のためのほとんどの
従来の手法に必要とされたビット操作量およびメモリー
量を大幅に減少するが、走査画像の多くの形態の全体的
な特徴を正確に保存することはない。
〔課題を解決するための手段〕
本発明の目的は、走査された画像を更に正確に表わし
てそれを表わすデータを過度に「メモリー集約的な」ビ
ット操作を行なわずに以降の処理のため使用することが
できるフォーマットで表示することができる連係リスト
の提供にある。
要約すると、本発明はその一実施例によれば、画像を
走査することにより得られる連続するランレングスデー
タであって、それぞれが繋がれた黒のピクセルによる連
続する直線の長さと最終ピクセルの番号の情報を持つ
「スライス」をデータとして含むランレングスデータを
提供するものである。
このランレングスデータは、ライン毎に演算され、連
続する各々が簡単な形状の画像のスライスの全てを含む
複数の更にリンクされたリストの最初の連係リストを含
むソフトウェアの「対象」を形成する最初の判断ツリー
のスライス分類サブルーチンにより、ライン単位に演算
される。これは、最初のオープンリストを形成し、その
内の画像の最初の行のスライスを挿入することにより行
なわれる。次いで、最初のオープンリストに挿入された
スライスの最後の行におけるスライスと、画像の次の行
のスライスとが最初のスライス分類サブルーチンにより
演算され、この要素が画像の次の行のスライスを最初の
オープンリストにおける最後の行のスライスに加えて、
最初のオープンリストの分岐すなわち列を生長(成長)
させ、最初のオープンリストの新しい分岐を生成し、画
像の次の行のスライスを新しい分岐に挿入し、あるいは
オープンリストの最後の行の個々のスライスと画像の次
の行のスライスとの間の関係に従って、最初のオープン
リストの分岐の成長を終了する。対象のスライスは、走
査される同じ左から右への順序で「フレーム」に入れら
れ、小さな水平および垂直のスライス間の間隙を除去す
るため「フィルタ」される。小さな水平間隙は、その両
側におけるスライスを含めるようにこのような間隙にま
たがってスライスを拡張することにより除去される。小
さな垂直間隙は、第2のオープンリストを形成する第2
のスライス分類サブルーチンの実行により除去され、こ
のリストの列は小さな垂直間隙を形成するため収束し得
る発散を生じる。もしこれが生じるならば、垂直間隙の
反対側の対応するスライスを含むように垂直間隙の片側
の対応するスライスはそれにまたがって拡張される。あ
る「良好な作用」の画像を表わすため必要なデータを大
幅に簡単にするため、第3のオープンリストが形成さ
れ、第2のオープンリストの最初の行からのスライスが
これに挿入される。第3のオープンリストに挿入された
最後の行のスライスおよび第2のオープンリストの次の
行におけるスライスは、第1と第2のスライスの分類サ
ブルーチンと略々類似する第3のスライス分類サブルー
チンにより演算され、これにより第3のオープンリスト
の分岐を成長させ、その新しい分岐を生じ、それに第2
のオープンリストの次の行のスライスを挿入するか、あ
るいは第3のオープンリストに挿入された最後の行の個
々のスライスと、第2のオープンリストの次の行の個々
のスライスとの間の関係に従って、第3のオープンリス
トの成長する分岐を終了する。第3のオープンリストの
分岐のエッジの勾配は、4つの隅の点で表わすことがで
きる台形としてどの形状が表わされ得るか、またその全
てスライスを含む不規則な斑点として表わされる筈であ
るかを判定するためその直線性についてテストされる。
台形として分類することができる第3のオープンリスト
の分岐部分は、その4隅の点が他の隣接する台形レコー
ドおよび「斑点レコード」に対するアドレス・ポインタ
によりリンクされる台形レコードに対して入れられる。
台形として表わすことができない分岐部分は斑点として
表わされ、その全てのスライスは、隣接する斑点レコー
ドまたは第3のオープンリストと関連した台形レコード
に対するアドレス・ポインタによりリンクされる斑点レ
コードに対して入れられる。収束および発散すなわち拡
散を識別するレコードは、隣接する斑点および第3のオ
ープンリストと関連した台形のレコードに対するアドレ
ス・ポインタにより格納されてリンクされる。
〔実施例〕
第1図においては、オリジナルの線図1、典型的には
設計図面等が適当な画像スキャナー2により走査される
システムが示されている。(種々の画像スキャナーが市
販されている。)画像スキャナー2は、直列ピクセル・
データ3を「自動図面認識システム」4に出力し、この
認識システムは本発明に従って、以降に述べるようにピ
クセル・データを簡略化し、必要に応じて、矢印5で示
されるように、VERTICOM社のグラフィックス・ボード、
高解像度グラフィックス・モニター8、キーボード9、
マウス10、フロッピー・ディスク11およびハード・ディ
スク12を含むIBM社のPCATデスクトップ・コンピュータ
を含む「ワーク・ステーション」に対するピクセル、ピ
クセルのグループを表わすベクトル、認識された文字、
および記号を生じる。
キーボード9またはマウス10を介して入力される演算
ソフトウェアの指令および入力パラメータは、自動図面
認識システム4に対してワーク・ステーション6によっ
て印加される。オリジナルの線図1を表わすデータは、
自動図面認識システム4により簡略化された後、ハード
・ディスク12上にワーク・ステーション・コンピュータ
6によって記憶される。この図面は、ワーク・ステーシ
ョンの指令7に応答して、ピクセル、ベクトル、文字お
よび記号5を修正して編集された図面はハード・ディス
ク11上に記憶することができる。
適当な指令と同時に、編集された線図14は、従来のペ
ン・プロッタ13によりプロットされ、あるいはグラフィ
ックス・モニター8上に表示することができる。
第2図は第1図のシステムを通る一般データのフロー
を示しているが、同図では適当な同じ照合番号が使用さ
れる。第2図は、スキャナー2により生じたピクセルが
ランレングス・データ・エンコーダ2Bに対して送られる
前にフィルタされることを示している。
第2図に示されるランレングス・エンコーダ2Bは、ス
キャナー2からの「ピクセル・イン」信号、行の終り
(EOR)信号、およびページの終り(EOP)信号を受取
り、あるノイズはノイズ・フィルタによってフィルタさ
れる比較的簡単な回路である。これらの信号は、新しい
非ゼロ・ピクセル・コードが受取られる毎に増進される
ピクセル・カウンタ2Dに対して与えられる「増進」信号
および「クリア」信号を生じる制御回路2Cに対して送ら
れる。この制御回路2Cはまた、新しいピクセル入力信号
が受取られる毎に増進される列カウンタ回路2Eに対して
与えられる「増進」信号および「クリア」信号を生じ
る。ピクセル・カウンタに対するクリア入力信号は、接
続された「黒」即ち非ゼロ・ピクセルのストリングから
「白」のピクセルへの変換がある毎に前記カウンタをリ
セットし、この時ピクセル・カウンタの内容が32ビット
×512ワードのFIFO(先入れ先出し)バッファ2Fに対し
書込まれる。このため、ピクセル・カウンタ2Dは、書類
上の対象の走査から結果として得られた暗いピクセルの
その時のストリング即ちスライスの長さを常に格納す
る。列カウンタのクリア信号は、EOR信号に応答して各
行の終りに生じる。「書込み」信号は、ピクセル・カウ
ンタ2Dと列カウンタ2Eの双方の内容を、あるスライスの
終りが生じるかあるいは行の終りが生じる度毎にFIFOバ
ッファ2Fに書込ませる。バス制御回路2Hは、コンピュー
タに対し、最初のエントリ即ち最初のスライスの終りの
後データがFIFOバッファにおいて得られることを通知
し、またこの時本発明によるソフトウェアがFIFOバッフ
ァの内容をそれ自体のRAM(ランダム・アクセス・メモ
リー)にバス2Gを介して読込みを開始する。
ランレングス・エンコーダ2Bの出力、即ち上記のFIFO
バッファから読出された32ビット・ワードが第2図の照
合番号17で示される。生の各ランレングスは以下本文に
おいては「スライス」と呼び、「繋がった」(即ち、そ
の間に間隙がない)水平のピクセルの黒(または暗色)
のストリングを表わす。本発明によれば、生のランレン
グス・データは、OBGRABと呼ばれる「対象グラバー」プ
ログラム19により実時間ベースに基いて演算される。OB
GRABは生の複数のリストをリンクしたリンクドリストに
組み立てる。このリンクドリストは、以下では第6図の
説明に関連して説明される「対象(オブジェクト)」と
呼ばれる。「対象」は白(即ち透明)のピクセルによっ
て囲まれた一体の繋がった黒色ピクセルであり、「形
状」の結合されたグループによって構成され、そして
「形状」はリンクドリストの1つによって表される。
対象分類プログラム18は、この対象が照合番号26によ
り全体的に示される文字の認識システムへ、あるいは前
掲の係属中のLouis Lienの米国特許出願において記載さ
れるベクトル化プログラム25へ送られるかどうかを判定
する。
最後に、認識された文字即ち第2図において照合番号
27により示されるベクトル生成、すなわち、ベクトル化
プログラム25により生じるベクトル・セグメントを表わ
す情報は、ワーク・ステーション6に対して「メタファ
イル・フォーマッタ」28と呼ばれるルーチンにより通さ
れるフォーマットされたファイルに送られる。
次に第3図においては、点線のブロックがルーチンお
よびサブルーチンを示し、かつ実線のブロックがルーチ
ンにより生じるソフトウェア・ファイルを表わすことが
判るであろう。OBGRABと呼ばれるプログラムは、第2図
の上記の「対象グラバー」ルーチン19である。OBGRAB
は、上記のFIFOメモリー2F(第2B図)から読出される32
ビット・ワードの形態の生のランレングス・データにつ
いて演算し、このデータは各々1つのスライスにおける
ピクセル数、およびこのスライスの最後のピクセルの
「ピクセル番号」または「列番号」を表わす。ORGRABル
ーチン19は上記の「対象」を生成即ち形成し、これは各
々連係されたリストがさらに連係された連携リストを構
成し、この連携リストの各グループは対象の1つの「形
状」または「分岐」における全てのピクセルを含む。第
3図のOBCLASSと呼ばれる対象の分類サブルーチン20
は、この対象がCHARECと呼ばれる文字認識プログラム26
により有効に操作することができか、あるいは問題の対
象がMETACTRLと呼ばれるメタ制御プログラム21により操
作される場合の回路図あるいは機械的な図面の如き図の
性格を呈する印字された文字の如き「文字」であるかど
うかを判定する。
本発明によればプログラムMETACTRAL(メタ制御)
は、それぞれFILLFRAME(フレーム充填)、FILLHORIZ
(水平充填)、FILLVERT(垂直充填)、及びMETAGRAB
(メタグラバー)と呼ばれる4つのサブルーチン34、3
5、36および22の動作を関連付ける。これらプログラム
の使用が近傍のスライス間の小さな水平および垂直の間
隙を充填して、全て以下に説明する斑点(ブロブ:blo
b)レコード、台形レコード、収束レコードおよび発散
レコードからなる対象の境界の「指向性を持たせたグラ
フ」として当業者が認識するものを形成することにより
簡略化されたデータからOBGRABサブルーチン19により生
じる対象30を再構成することにより、典型的な設計図面
を正確に表わすため必要なデータ量を大幅に減少するこ
とが示されるであろう。指向性を持たせたグラフは、上
記の係属中のLouis Lienの米国特許出願において記載さ
れるVECGENベクトル生成プログラム25により有効に使用
することができる。
VECGENプログラムにより生成されるベクトルはベクト
ル・ファイル27に格納され、次いでMETAFILE(メタファ
イル)と呼ばれるファイル5Aに格納するために適当なフ
ォーマットに文字、斑点、記号およびベクトルを表わす
データを置く機能を実施するようにMETAFORM(メタフォ
ーム)と呼ばれるプログラム39により操作され、このフ
ァイルから前記データが矢印5で示されるようにワーク
・ステーション6に対して出力される。
第3図のOBGRAB(対象グラバー)プログラムルーチン
19は、上記FIFOバッファ2F(第2A図)から生のランレン
グスデータ即ちスライスを受け取り、その行ラインに存
在する複数のスライス(各スライスはその行ラインにお
いて黒の連続するピクセルの集合毎に形成される)のそ
れぞれを表す「オープンリスト・ノード」が複数格納さ
れた「オープンリスト・ヘッダ」を形成する。ここで最
初に走査された、または後に述べる比較時に比較の基準
として既に処理された行ラインにおけるスライスを、A
スライス(又はスライスA)とする。この時、OBGRABル
ーチンは、比較のために次に走査された行ラインのスラ
イス(これを「Bスライス」又は「スライスB」とす
る)を受け取り、各「Bスライス」を適当なオープンリ
スト・ノードの「Aスライス」に「帰属」させることが
できるかどうかを判定し、また新しいオープンリスト・
ノードが形成される必要があるかどうか、またその時の
オープンリスト・ノードが除去される必要があるかどう
かを判定する。
第3図のブロック19に示される対象グラバーサブルー
チンOBGRABは、これにより、入力文書を走査された画像
の境界と「幾何学的に」対応するかあるいは対応しない
方法で構成された生のランレングス・データに含まれる
全てのスライスを含む連係されたリストの連携リストを
生成する。(第6図参照)。第4図は、この機能を行な
うOBGRABルーチンを示す。OBGRABは第4A図のPROCESS ON
E LINE(1ラインプロセス、即ち単線プロセス)サブル
ーチンを呼出し、このサブルーチンは更に第4B図のCLAS
SIFIER(分類)サブルーチンを呼出し、これが更に第4C
図乃至第4N図のOBGRAB FCNサブルーチンを呼出す。
次に第4図においては、OBGRABルーチンにはラベル19
において入り、ブロック320に行き、0に等しく行変数R
OWをセットし、次いでブロック321へ行き、「偽の条
件」を表わす論理値「0」に等しく「ファイルの終り」
または「対象の終り」変数EOFをセットする。次に、OBG
RABルーチンは判断ブロック322へ行きEOFをテストして
これが「真」の条件を表わす論理値「1」であるかどう
かを判定する。この判定が否定である限り、ブロック32
3においてROWを増し、かつブロック324に示されるよう
にPROCESS ONE LINE(第4A図)を実行し、判断ブロック
322へ戻る。この状態は、OBGRABが入力文書上で走査さ
れる画像の終りに達するまで継続し、この時肯定的な判
定がブロック322において得られ、OBGRABは判断ブロッ
ク325へ行き、変数OPEN COUNT(オープン・カウント)
をテストする。OPEN COUNTはオープンリストにおけるノ
ード数を表わし(OBGRABの初期化において生成されたも
のとする)、このリストにおいては多数のオープンリス
ト・ノードが確立されて起動点を提供し、この起動点か
ら画像の脚または支葉を表わすリストが連続的なスライ
スが付されると成長して0より大きくなる。
もしブロック325の判定が否定であれば、OBGRABルー
チンは呼出しプログラムへ戻る。さもなければ、このル
ーチンはブロック326へ行き、第2A図のランレングス・
エンコーダから受取ったスライスが付されるオープンリ
ストの初めにカーソル変数OPEN CURSOR(オープン・カ
ーソル)をリセットする。変数OPEN CURSORは、OBGRAB
がオープンリストのどこにあるかを追跡する。次に、OB
GRABはブロック327へ行き、オープンリストから次のス
ライスを得て、変数C OPENCTをOPEN COUNTへセットす
る。OBGRABがオープンリストを通過するにつれて、C OP
ENCTと呼ばれる変数(オープンリストの終りに達した時
を示す)がその初期値から0まで減分される。次に、OB
GRABは判断ブロック329へ進み、これが未だ0まで減分
されたかどうかを調べるためOPEN CURSORをテストす
る。もしその答えが肯定であれば、ORGRABは呼出しプロ
グラムへ戻るが、さもなければ、判断ブロック331へ進
んでその時のオープンリスト・レコードがOBGRABにより
形成されつつある対象の最後の分岐を表わすかどうかを
判定する。もしこの判定が否定であれば、OBGRABはブロ
ック333へ行き、オープンリストからその時のオープン
リスト・レコードを削除し、判断ブロック329へ戻る。
もしブロック331の判定が肯定ならば、このルーチンは
文字認識システムにより、あるいは後で説明するMETACT
RLサブルーチンによりこれ以上の処理についての待ち行
列に対象を置く。
入力するスライスを分類することにより連携リストが
如何にして組立てられるべきかを判定するため、OBGRAB
ルーチンはCLASSIFIERと呼ばれる第4B図の「分類ルーチ
ン」を呼出す。CLASSIFIERの説明の前に、この分類ルー
チンが行なうことが「Aスライス」と「Bスライス」と
呼ばれる2つのスライスの比較であることを理解するこ
とが必要となろう。
さしあたり第5図に関して述べれば、照合番号42が一
般化された「Aスライス」を示し、照合番号43が一般化
された「Bスライス」を示している。「Aスライス」は
照合の基準となるので、常にオープンリストのオープン
リスト・ノードから読出され、このリストはオープンリ
スト・ヘッダで始まる。Bスライスは常にFIFOメモリー
2Fの如き入力バッファから受取られる。Aスライスの左
側の終端点がA1と呼ばれ、右側の終端点がA2と呼ばれ
る。第5図の照合番号42Aおよび43Aにより示されるよう
に、Bスライスの左側の終端点はB1と呼ばれ、右側の終
端はB2と呼ばれる。スライスAとスライスBとの間の関
係に対しては多くの可能性があることが判るであろう。
例えば、それらの左端部は重なり得るかあるいは重なら
なり得ない。それらの右端部は重なり得るかあるいは重
なり得ない。A1の長さは、B1の長さと等しいか、これよ
り大きいか、あるいはこれより小さく、またA2の長さは
B2と等しいか、これより大きいか、あるいはこれより小
さい。
第4B図のCLASSIFIERサブルーチンはその時のAスライ
スおよびBスライスを分析して、可能性のある関係のど
れが存在するかを判定し、従って、異なる多数のサブル
ーチンの1つを呼出してスライスAが読出されるオープ
ンリスト・ノードにスライスBを加えるかどうかを判定
し、これにより連携リストの内のリスト(即ち、「対
象」)の「分岐」の成長を継続するか、あるいはこの時
のスライスAが続けられる分岐を終了するか、あるいは
オープンリスト・ノードの形成または削除を行なう。CL
ASSIFIERサブルーチンの実行は常に、AとBのスライス
間の識別された関係に従って、FCN0、FCN1、FCN3、FCN
4、FCN5、FCN6、FCN7、FCN8、FCN9、FCN10またはFCN12
を呼ばれるグループをなす「機能サブルーチン」の1つ
の呼出しを生じる結果となる。
もし第4B図のCLASSIFIERルーチンがAスライスから
「外れ」、1つ以上のBスライスがそのままであれば、
FCN13が呼出されて1つ以上の新しいオープンリスト・
ノード(FIFOバッファ2Fからその時走査されたリストの
残る各Bスライスに対するもの)をOBGRABのオープンリ
スト・ヘッダに添付する。
第4B図のCLASSIFIERルーチンが、OBGRABルーチン19、
FILLVERTルーチン36およびMETAGRABルーチン20を含む本
発明の3つの異なるルーチンにより呼出すことができる
ことを認めねばならない。これら3つのルーチンの各々
毎に、呼出される各機能サブルーチン(FCN0、FCN1等)
が、どのルーチンがCLASSIFIERを呼出しつつあるかに従
って異なり得る。もしCLASSIFIERルーチンがOBGRABルー
チン19により呼出されるならば、第4C図乃至第4N図のOB
GRABFCNサブルーチンのFCN0、FCN1等が呼出される。も
しCLASSIFIERルーチンがFILLVERTルーチン36により呼出
されるならば、第8A図乃至第8L図のFILLVERTFCNサブル
ーチンが呼出される。もしCLASSIFIERサブルーチンがME
TAGRABルーチン22により呼出されるならば、第9A図乃至
第9L図のMETAGRAB FCNサブルーチンが呼出される。
次に第4B図においては、ラベル41を介してCLASSIFIER
サブルーチンに入り、判断ブロック44へ進み、ここでこ
の時のAスライスの左側のX軸のA1がBスライスの左側
のX軸のB1よりも小さいかどうかを判定する。もしA1が
B1よりも小さければ、CLASSIFIERが判断ブロック45へ進
んで、A2がB1よりも小さいかどうかを判定する。もしそ
うであれば、このプログラムはブロック46において、1
をA2のX軸に加え、ブロック47において増分された変数
A2がB1と等しくないかを判定する。もし増分したA2がB1
と等しくなければ、このことはこの時のBスライスがA
スライス即ちこの時のオープンリスト・ノードに続けら
れないことを意味する。
第4B図においては、この時のAスライスおよびBスラ
イスの小さなレプリカが種々のFCNラベル付近に書き直
され、判定が分類ルーチンの判断ツリーにより判定され
る関係が存在することを示すことに注意されたい。上部
の線はAスライスを示し、下部の線はBスライスを示し
ている。
もし判断ブロック47の判定が否定であれば、このこと
は1増分されたA2のX座標がB1のX座標に等しい(又
は、ほぼ等しい)ことを意味する。これは、スライスB
がその時のスライスAに繋がるものと見做すことがで
き、従ってスライスAを含むその時のオープンリスト・
ノードに「添付する」ことができるだけ充分に接近して
いると見做される。
もし判断ブロック45の判定がA2がB1よりも小さくない
ことであれば、このことはA2のX軸がB1のそれと等しい
かあるいはこれより大きいことを意味する。判断ブロッ
ク50は、これら2つの可能性のある関係のどちらが存在
するかを判定する。もしA2がB2より大きければ、スライ
スAとスライスBとの間の関係がスライスAがスライス
Bの左右両側まで拡がり、CLASSIFIERサブルーチンは、
CLASSIFIERがOBGRAB、FILLVERTまたはMETAGRABのいずれ
により呼出されつつあるかに従って適当なFCN4サブルー
チンを呼出す。(FCNサブルーチンがどのルーチンがそ
の時CLASSIFIERを呼出しつつあるかに依存することを想
起されたい。) もし判断ブロック50の判定が否定であれば、この判定
はA2がB2と等しいかどうかについてなされなければなら
ない。もしそうであれば、適当なFCN3サブルーチンが呼
出される。
もし判断ブロック51の判定が否定であれば、その時の
AおよびBスライスは、ラベル53により示されるように
適当なFCN1サブルーチンと対応する関係を有する。もし
ブロック51の判定が肯定ならば、照合番号52により示さ
れるようにFCN3が呼出される。
上記の判定は、A1がB1より小さいという条件について
の判断ツリーの可能性を尽すものである。もし判断ブロ
ック44の判定が否定であれば、A1はB1と等しいかあるい
はこれよりも大きくなければならない。CLASSIFIERサブ
ルーチンは判断ブロック54へ進み、A1がB1よりも大きい
かどうかを判定する。もしそうならば、このサブルーチ
ンは判断ブロック55へ進んでA1がB2よりも大きいかどう
かを判定する。もしそうならば、ブロック56により示さ
れるようにB2のX軸を増分して判断ブロック57へ進み、
A1がB2の増分された値と等しくないかどうかを判定す
る。もしA1がB2の増分値と等しくなければ、示されるよ
うにスライスAはスライスBの右側に存在し、ラベル58
で示されるように(呼出しルーチンに従って)適当なFC
N12サブルーチンが呼出される。もし判断ブロック57の
判定が否定であれば、スライスAの左端部がスライスB
の右端部の右側の1つのピクセルとなり、ラベル59によ
り示されるように適当なFCN10サブルーチンが呼出され
る。
もし判断ブロック55の判定が否定ならば、CLASSIFIER
サブルーチンは判断ブロック60へ進み、A2がB2よりも小
さいかどうかを判定する。もしこの判定が肯定ならば、
スライスBの両端部はスライスAの端部を越えて延び、
ラベル61により示されるように適当なFCN8サブルーチン
が呼出される。さもなければ、プログラムは判断ブロッ
ク62へ進み、A2がB2と等しいかどうかを判定する。もし
そうならば、スライスAおよびスライスBの両端部が整
合され、ラベル63により示されるように適当なFCN9サブ
ルーチンが呼出される。さもなければ、ラベル64により
示されるように適当なFCN10サブルーチンが呼出され
る。
もし判断ブロック54の判定がA1がB1より大きくないこ
とであった(これは、A1とB1のX座標が等しいことを意
味する)ならば、CLASSIFIERサブルーチンは判断ブロッ
ク65へ進み、A2がB2より小さいかどうかを判定する。も
しそうならば、ラベル66により示されるように適当なFC
N5サブルーチンが呼出される。さもなければ、CLASSIFI
ERサブルーチンは判断ブロック67へ進み、A2がB2より大
きいかどうかを判定する。もしそうならば、示されるよ
うにスライスAの右端部がスライスBの右端部を越えて
延び、ラベル68で示されるように適当なFCN7サブルーチ
ンが呼出される。さもなければ、スライスAおよびスラ
イスBの左右の両端部が完全に整合され、ラベル69で示
されるように適当なFCN6サブルーチンが呼出される。
第4B図のCLASSIFIERルーチンについてこれまで記述し
たが、CLASSIFIERの判定ツリー自体がスライスAおよび
スライスBが比較される度に呼出されることを理解すべ
きである。
更に、OBGRABの持続期間中、CLASSIFIERは第4図に示
されるPROCESS ONE LINE(単線プロセス)と呼ばれるサ
ブルーチンにより呼出される。
PROCESS ONE LINEは、CLASSIFIFIERがライン単位に実
行される方法を制御する。前に示したように、CLASSFIE
Rは3つの異なるルーチン、即ち、OBGRAB、第8図に述
べたFILLVERTと呼ばれるルーチンおよび第9図に関して
述べたMETAGRABのどれかにより呼出すことができる。こ
れら3つのルーチンのどれがスライス分類ルーチンを呼
出すかに拘らず、呼出す側のルーチンが第4A図のPROCFS
S ONE LINEサブルーチンに略々類似するサブルーチンを
呼出すことになる。
PROCESS ONE LINEにはラベル650において入り、ブロ
ック651へ進む。このサブルーチンは、OBGRABによる
「対象」の形成、METAGRABによる「メタ対象」の形成の
目的のため、あるいはFILLVERTルーチンの目的のため、
適当なオープンリスト・ヘッダが既に呼出し側のルーチ
ンにより生成されていることを前提とする。PROCESS ON
E LINEサブルーチンはオープンリスト・ヘッダの左端部
から始動し、ブロック652において示されるように最初
のオープンリスト・ノードからスライスAを読出す。次
いでこのプログラムはブロック652Aへ進み、データ・バ
ッファから次のスライスBを読出し、次いで判断ブロッ
ク653へ進んで、走査線におけるその時の位置がその時
のリストに対するオープンリストの終りにあるか、ある
いはその時のラインに対するデータ・バッファの終りに
あるかを判定する。
もしこの判定が否定であれば、PROCESS ONE LINEルー
チンは、呼出し側のルーチンOBGRAB、FILLVERTあるいは
METAGRABのどれであるかを識別することにより、第4B図
のCLASSIFIERルーチンを呼出し、その結果適正なOBGRAB
FCNサブルーチン、FILLVERT FCNサブルーチン、あるい
はMETAGRAB FCNサブルーチンが呼出される。第4B図のス
ライス分類ルーチンは、判断ブロック653により肯定的
な判定がなされるまで、オープンリストのその時のライ
ンおよびデータ・バッファについて演算し続ける。もし
このサブルーチンがオープンリスト・ヘッダの終りまた
はデータ・バッファにおけるラインの終りにあるなら
ば、サブルーチンは判断ブロック654へ進み、これら2
つの場合のどちらが生じるかを判定する。もし判断ブロ
ック654の判定が、サブルーチンがオープンリスト・ヘ
ッダのラインの終りにあってデータ・バッファのライン
の終りにはないことであれば、サブルーチンはブロック
656へ進むが、これは取扱うべきで「残りの」スライス
Bが存在するためである。
判断ブロック656は、このBスライスが別のスライス
に添付されるかどうかを判定する。もしこの判定が肯定
であれば、オープンリスト・ヘッダにおける新しいノー
ドを生成する必要がなく、そのためルーチンはブロック
657へ進み、次のスライスBをデータ・バッファから読
出す。いずれの場合も、ルーチンは判断ブロック658へ
進み、サブルーチンがデータ・バッファに関してその時
のラインの終りにあるかの判定を行なう。もしこの判定
が肯定であれば、サブルーチンはオープンリスト・ノー
ドおよびデータ・バッファの双方の終りにあり、ラベル
661へ進んで呼出し側のルーチン(OBGRAB)へ戻る。
もし判断ブロック658の判定が否定であれば、PROCESS
ONE LINEサブルーチンは、ブロック659に示されるよう
に、呼出し側のルーチン、即ちOBGRAB FCN13、FILLVERT
FCN13、あるいはMETAGRAB FCN13(以下に説明する)と
対応するFCN13サブルーチンを呼出す。PROCESS ONE LIN
Eサブルーチンはこの時ブロック660へ進み、データ・バ
ッファから次のスライスBを読出し、判断ブロック658
へ戻るというこのループを肯定的な判定が得られるまで
反復する。
もし判断ブロック654の判定が否定であれば、サブル
ーチンは判断ブロック655へ進み、これがサブルーチン
がデータ・バッファのラインの終りにあるがオープンリ
スト・ヘッダの終りにはないかどうかを判定する。もし
そうであれば、スライスAのどれも何も添付できない。
もし判断ブロック655の判定が否定であり、サブルーチ
ンもまたオープンリスト・ヘッダにおける両方のスライ
スAから外れ、かつ同時にデータ・バッファにおけるス
ライスBから外れたならば、サブルーチンは呼出し側の
ルーチンへ戻る。
もし判断ブロック655の判定が肯定ならば、サブルー
チンは判断ブロック662へ進み、次の残りのスライスA
が何かに添付されるかどうかを判定する。もしこの判定
が否定であれば、サブルーチンはブロック664へ進み、
その時のスライスがオープンリスト・ヘッダのラインの
終りにあるかどうかを判定する。もしそうならば、サブ
ルーチン呼出し側のルーチンへ戻る。もし判断ブロック
662の判定が肯定ならば、サブルーチンはブロック663へ
進み、オープンリストから次のスライスを読出し、判断
ブロック664へ進む。もし判断ブロック664の判定が否定
ならば、サブルーチンはブロック665へ進み、適当なFCN
0サブルーチン(即ち、OBGRAB FCN0、FILLVERT FCN0、
あるいはMETAGRAB FCN0)を呼出して、判断ブロック664
へ戻る。
第4B図のOBGRABルーチンにより(PROCESS ONE LINEに
より間接的に)更に呼出される時、第4図のCLASSIFIER
ルーチンにより呼出される第4C図乃至第4N図のOBGRAB F
CNサブルーチンについて、次に記述する。
OBGRABにより呼出される時、もし第4B図の判断ツリー
CLASSIFIERがFCN0を選択するならば、第4C図の判断ブロ
ック70に入り、スライスAが前にその時のスライスBの
行におけるスライスに対し添付されたかどうかについて
の判定が行なわれる。もしこの判定が肯定ならば、サブ
ルーチンはブロック71へ進み、オープンリストから次の
スライスAを読出して戻る。さもなければ、サブルーチ
ンはブロック72へ進み、このことはスライスAが依然と
して成長しつつある分岐の一部ではないことを意味す
る。ブロック72においては、OBGRAB FCN0サブルーチン
が、スライスAが一部をなす対象の「オープン分岐カウ
ント)から1を控除し、判断ブロック73へ進む。各対象
がそれに示される分岐数のオープン分岐カウンタを有す
ることに注意されたい。判断ブロック73においては、サ
ブルーチンが、オープン分岐カウントが0であるかどう
かを判定し、もしそうでなければ、ブロック75へ進んで
オープンリストからスライスAを取出して戻る。さもな
ければ、サブルーチンはブロック74へ進んでその時の対
象を「完了した対象待ち行列」(対象キュー)にその時
の対象を置き、次いでブロック75へ進む。
OBGRAB FCN1サブルーチンが第4D図に示され、判断ブ
ロック76に入ってスライスAがスライスBのライン上の
別のスライスに前に添付されたかどうかを判定し、もし
そうであれば、判断ブロック77へ進んで新しい列を生成
し、ブロック78へ進んでその中のスライスBを用いて新
しいオープンリスト・レコードを生成して新しい列を表
示し、次いでブロック79へ進んでオープンリストからOB
GRABについて次のスライスAを読出す。この時、サブル
ーチンは呼出し側のサブルーチンに戻る。もし判断ブロ
ック76の判定が否定であれば、プログラムはブロック80
へ進んで、第14図のGROW BRANCH(生長分岐)を実行す
ることによりスライスBを成長する列のスライスAに添
付する。次いでプログラムはブロック79へ進む。
第4E図においては、もしOBGRAB FCN3サブルーチンが
選択されるならば、OBGRAB FCN1と略々同じサブルーチ
ンがブロック81に示されるように実行され、次いで次の
スライスBが次の未使用のスライスを含むデータ・バッ
ファから読出される。次いでサブルーチンは呼出し側の
ルーチンに戻る。
第4F図においては、OBGRAB FCN4サブルーチンが、ス
ライスAが判断ブロック83において前のスライスBに前
に添付されたかどうかを判定し、もしそうであれば、ブ
ロック84に示されるように新しい列レコードを生成し、
新しいオープンリスト・ノードを生成し、ブロック85に
示されるようにその中にスライスBを挿入し、次いでブ
ロック86に示されるようにデータ・バッファから次のス
ライスBを読出した後戻る。
もしスライスAが前に添付されなかったならば、サブ
ルーチンはブロック87へ進み、スライスBを列を成長中
のスライスAへ添付する。次いで、サブルーチンはブロ
ック86へ進む。
第4G図においては、ブロック88に示されるようにOBGR
AB FCN5サブルーチンがスライスBを成長中の列のスラ
イスAへ添付し、ブロック89に示されるようにオープン
リストから次のスライスAを読出して戻る。
第4H図においては、ブロック90に示されるように、OB
GRAB FCN6サブルーチンがスライスBを成長中の列のス
ライスAの添付し、ブロック91に示されるように次のス
ライスAを読出し、ブロック92に示されるようにデータ
・バッファから次のスライスBを読出して戻る。
第4I図においては、ブロック93に示されるようにOBGR
AB FCN7サブルーチンがスライスBを成長中の列のスラ
イスAに添付し、ブロック94に示されるようにデータ・
バッファから次のスライスBを読出して戻る。
第4J図においては、OBGRAB FCN8サブルーチンが、ス
ライスBが同じリストにおける別のスライスに前に添付
されたかどうかを判定する。もしそうならば、サブルー
チンはブロック96に進んでスライスAがその一部である
(この時までに白のピクセルにより完全に囲まれた異な
る対象であった)対象を、スライスBがその一部である
対象に対して併合し、次いでブロック97に進み、OBGRAB
のオープンリストからスライスAのレコードを除去す
る。次いで、サブルーチンは判断ブロック98へ進む。も
しスライスBが同じラインの別のスライスに前に添付さ
れなかったならば、ブロック99に示されるようにスライ
スBは成長中の列のスライスAに添付され、次いでプロ
グラムは判断ブロック98へ進む。判断ブロック98は、ス
ライスAがどれかのスライスBに添付されるかどうかを
判定する。もしそうならば、サブルーチンはブロック10
0に示されるようにオープンリストから次のスライスA
を読出して戻る。さもなければ、サブルーチンは直ちに
呼出し側のルーチンへ戻る。
次に第4K図においては、OBGRAB FCN9サブルーチンが
判断ブロック101において、スライスBが前のスライス
Aに前に添付されたかどうかを判定し、またこの判定が
肯定ならば、ブロック102において示されるようにスラ
イスAがスライスBが一部をなす対象をスライスBがそ
の一部である対象に併合し、次いでブロック103におい
て示されるようにオープンリストからのスライスAのレ
コードを除去する。サブルーチンは次に判断ブロツク10
5へ進む。もしスライスBが前に添付されなかったなら
ば、ブロック104に示されるようにサブルーチンがスラ
イスAをスライスBへ添付することにより「列を成長さ
せ」、判断ブロック105へ進む。判断ブロック105は、ス
ライスAが前に添付されたかどうか、またもしそうであ
れば、オープンリフトから次のスライスAを読出してブ
ロック107へ進む。さもなければ、サブルーチンは単に
判断ブロック107から判断ブロック106へ進み、データ・
バッファから次のスライスBを読出して戻る。
第4L図においては、OBGRAB FCN10サブルーチンが、ス
ライスBが判断ブロック108において前のスライスAに
前に添付されたかどうかを判定し、もしそうであれば、
スライスAがその一部である対象をスライスBがその一
部である対象に合併し、ブロック110に進んでデータ・
バッファから次のスライスBを読出して戻る。もしスラ
イスBが前に添付されなかったならば、スライスBがス
ライスAに添付されて、ブロック111に示されるよう
に、OBGRABにより形成されつつある対象のその時の列を
成長させる。次いでサブルーチンはブロック110へ進
む。
第4M図においては、OBGRAB FCN12サブルーチンが、判
断ブロック112において、スライスBが前のスライスA
に前に添付されたかどうかを判定する。もしそうであれ
ば、サブルーチンはブロック116へ進み、データ・バッ
ファから次のスライスBを読出して戻る。さもなけれ
ば、サブルーチンはブロック113に示されるようにオー
プンリストに新しいノード(新しい列を表わす)を生成
し、ブロック115に示されるようにスライスBをそれに
挿入する。次いで、サブルーチンはブロック114に進
み、スライスAを含むレコードの前に新しいレコードを
挿入してブロック116へ進む。
最後に、第4N図においては、OBGRAB FCN13サブルーチ
ンがブロック117に示されるように新しい対象を生成
し、次いでブロック118に示されるようにスライスBを
含む新しいオープンリスト・レコードを生成する。サブ
ルーチンは、この時、ブロック119に示されるように新
しいレコードをオープンリストの終りに付加し、次いで
ブロック120へ進み、データ・バッファから次のスライ
スBを読出し、呼出し側のルーチンへ戻る。
連係リストの各々は他のリストに対するポインタを含
み得る。最初のリストは、連続的に続いたスライスを含
む全てのリストに対するポインタを含む。
よく考察すれば、当業者は、別個の「対象」として開
始する走査された文書の2つの画像が接触する時、また
従って1つの対象に併合される時、あるいはまた対象が
個々の繋がった形状に分割し始めるならば、形成されつ
つある対象の「形状」は走査されつつある文書における
画像の実際の形状とは大幅に異なり得るが、これは対象
のリストを構成する分岐が、各分岐の最上位のスライス
がライン単位の走査プロセスにおいて走査される順序で
開始されるためである。このため、変更された「形状」
は、スライスが以降のベクトル化および(または)文字
認識操作において必要とされるため対象におけるスライ
スの位置決めを更に困難にすることになろう。実質的に
明らかになるように、本発明はMETAGRABルーチンを用い
て対象から走査された画像の「指向性(directed)グラ
フ」を再構成して、ベクトル化あるいは認識されるべき
画像を表わす「レコード」の完全な「データ付勢」グル
ープの提供、ならびに画像を表わす「指向性グラフ」の
「分岐」または「列」への走査された画像の分岐の幾何
学的関係の「復元」を行なうようにする。このため、以
降のベクトル化操作を行なう時スライスを位置決めする
問題を簡単にする。
本発明によれば、連係リストに含まれるスライス・デ
ータの処理における次の段階は、小さな(明るい)ピク
セル間隙を削除し、台形によりどんな形状を表わすこと
ができるかを判定し、METAOBJECT(メタオブジェクト)
と呼ばれる新しい再構成された「対象」を生成すること
であるが、前記対象は、個々のピクセルまたはスライス
または座標についてメモリー内を探査する必要もなくベ
クトル化プロセスを行なうことを可能にするこれもまた
「データ付勢」連係リストの形態における遥かに少ない
データによって対象を表わす。
次に第7図においては、FILLFRAMEサブルーチンがフ
ローチャート形態で示されている。FILLHORIZサブルー
チンわずかなピクセル巾よりも小さな水平間隙を充填す
る)およびFILLVERTサブルーチン(3または4ラインよ
り小さな垂直間隙を充填する)が第20図のMETACTRLルー
チンにより整合されるライン単位で実行されることを理
解すべきである。
FILLHORIZサブルーチンは同じライン上の例えば4つ
のピクセル間隙よりも狭く、近接するスライスを接続す
る。
第7図においては、FILLFRAMEルーチンにはラベル200
においてルーチンに入る。ブロック201においては、ル
ーチンの主な機能に対してやや周辺的な操作が行なわれ
る。もし前のフレームがFILLFRAMEにより処理されて
も、その最後の3つのラインが未だルーチンMETAGRABに
よって処理されなかったならば、このフレームの最後の
3つのラインは、METAGRABがラインを処理する前に垂直
間隙を充填させるため、まさに充填されるフレームの最
初の3つのラインに移動される必要はない。
その時、FILLFRAMEルーチンは判断ブロック202へ進
み、Y+400がYMAXよりも小さいかどうかを判定する。Y
MAXはY軸方向におけるその時の対象の最大寸法であ
る。400の走査行即ちピクセルは、各フレームの高さで
ある。Yは下方向に増加する垂直方向の縦軸である。
判断ブロック202は、その時の対象がまさに充填され
るべきその時のフレームで終るかどうかを判定する。も
しこの判定が肯定ならば、LOOPLIMIT(ループ・リミッ
ト)と呼ばれる論理変数は値YMAX−Yに設定される。も
し走査されつつある対象がその時のフレームで終らなけ
れば、LOOP LIMITはその時のフレームにおける行数であ
る400に設定され、対象がその時のフレームで終了する
ならば、これよりも短く停止されるのではなく、その時
のフレームの全ての400行にわたり完了するようにFILLF
RAMEルーチンが実行される。
いずれの場合も、FILLFRAMEルーチンはブロック205へ
進み、最初の列アドレスに対して変数COLUMN ADDRESS
(列アドレス)をセットする。
形成された「対象」の全般的な構造即ち「形状」(連
係リストのリスト)を示す第6図に簡単に触れれば、左
側の列がその次の列のアドレス(即ち、アドレス・ポイ
ンタ)を有する。右の各列においては、このパターンは
右側の列に達するまで反復される。連係リストの各リス
トは、最初に走査された画像の特徴と対応する。
一旦FILLFRAMEに対する最初の列位置が対象の左側列
即ち連係リストのリストに対してセットされると、FILL
FRAMEルーチンは判断ブロック206に進み、その時の列ア
ドレスが0である、即ち連係リストの右側の列を越える
かどうかを判定する。もしこの判定が肯定ならば、対象
の多くが入ることができたようにその時のフレームに入
れられたことを意味する。もしそうであれば、プログラ
ムはブロック214へ進み、LAST LINE(最終ライン)と呼
ばれる変数を400またはYMAX−YであるLOOP LIMITへセ
ットし、またY+LOOP LIMITと等しくFRAME OFFSET(フ
レームオフセット)と呼ばれる変数をセットしてラベル
215から出る。
もしその時のフレームが充填されなかったならば、ル
ーチンは判断ブロック207へ進み、COLUMN BOTTOM(列の
最下位、即ち最下位列)と呼ばれる変数がYより大きい
かあるいはこれと等しいかどうかを判定する。ここで行
なわれる判定は、その時の列における対象のその時のス
ライスがこの列の最下位にあるかどうかである。もしそ
うであれば、ブロック207の判定は否定となり、ルーチ
ンはブロック213へ進み、COLUMN ADDRESSを次の列に進
め、即ち1つの列を右方へ進め、判断ブロック206へ戻
る。もしその時の列の最下位に未だに達していなかった
ならば、FILLFRAMEルーチンはブロック208へ進み、FRAM
E ROW(フレーム行)をYUNUSED−Yと等しくセットする
が、ここでYUNUSEDは、その時のフレームに未だ入れら
れなかったその時の分岐の次のスライスの「行番号」即
ちY座標である。
その時、ルーチンは判断ブロック208Aへ進み、FRAME
ROWが400より小さいかこれと等しいかを判定し、もしこ
の判定が否定であれば、ブロック213へ進んでCOLUMN AD
DRESSを更新して次の別へ進む。さもなければ、ルーチ
ンはブロック209へ進み、サブルーチンを実行してその
時の列の対象の最上位の未使用のスライスをFRAME ROW
により指示されたその時のフレーム行の適正な側方位置
におけるその時のフレームへ挿入する。ブロック209に
ついては、第7A図に関して詳細に記述する。
次に、FILLFRAMEはブロック210へ進み、FRAME ROWを
増分し、ブロック211へ進み、Yを増分して目的状態の
この時の列における次のスライスまたは連係リストのリ
ストへ進む。
次いで、FILLFRAMEは判断ブロック212へ進み、FRAME
ROWのその時の値がLOOP LIMITの前にセットした値より
も大きいか、あるいはまた対象のスライスがその時の列
に残らないかどうかを判定する。もしこの判定が否定で
ある、即ちこのフレームに更に多くの行が充填されてそ
の時の対象のその時の列に更に多くのスライスが残るな
らば、プログラムはブロック209へ戻り、次の最上位の
未使用のスライスをこのフレームのその時の行の適正な
側方位置へ挿入し、繰返す。さもなければ、プログラム
はブロック213へ進み、対象の次の列の右方へ進む。
次に、第7図の説明を完了する前に、第7図のブロッ
ク209のプロセスについて第7A図に関して更に詳細に記
述するが、同時においてPUT SLICE INTO FRAME IN PROP
ER LEFT−TO−RIGHT ORDERと呼ばれる、適切に左から右
へ順番にスライスをサブルーチンに入れるサブルーチン
がラベル209で入力され、判断ブロック250へ進む。判断
ブロック250は、その時のフレーム行が空であるかどう
かを判定する。もしこの判定が肯定であれば、サブルー
チンはブロック251へ進み、その時のフレーム行の初め
のフレームにデータの新しいスライスを入れ、呼出し側
サブルーチンへ戻る。
さもなければ、第7A図のサブルーチンは判断ブロック
252へ進み、新しいスライスのX座標がその時のフレー
ムのスライスのそれよりも小さいかどうかを判定する。
もしこの判定が否定であれば、サブルーチンはブロック
255へ進み、既にこのフレームにあるスライスを1つの
水平スライス位置だけその時のフレーム位置の右側へ移
動する。その時、サブルーチンはブロック256へ進み、
新しいスライスをステップ255に生成された初めに挿入
し、呼出し側のサブルーチンへ戻る。もし判断ブロック
252の判定が肯定であれば、サブルーチンは判断ブロッ
ク253へ進み、その時の位置が行の初めにあるかどうか
を判定する。もしこの判定が肯定ならば、サブルーチン
は前に述べたブロック255へ進む。もしこの判定が否定
ならば、サブルーチンはブロック254へ進み、その時の
フレーム・スライスの左側のフレーム・スライスを得
て、判断ブロック252へ戻る。
次に第8図においては、FILLVERTは、予め定めた数の
行および高さよりも小さな、例えば高さが4つの行より
小さな垂直間隙を充填するルーチンである。このサブル
ーチンには第8図のラベル216を介して入ってブロツク2
17へ進み、このブロックが充填されたフレームの最後の
行を読出し、またOBGRABにより形成される「対象」のそ
の時の行を読出し、即ち第6図に示された関係リストの
リストが第4A図のPROCESS ONE LINEサブルーチンを実行
し、これにより第4B図のCLASSIFIERサブルーチンを実行
し、第8A図乃至第8P図のFCNルーチンを選択してラベル2
18から出る。
第4B図のCLASSIFIER判断ツリーがFILLVERT FCN0を呼
出す時、このサブルーチンは第8A図の判断ブロック133
へ入り、スライスAがその時のFRAME ROWと対応する対
象連係リストのその時の行の他のスライスに前に添付さ
れたかどうかを判定する。もしスライスAが前に添付さ
れたならば、FILLVERT FCN0サブルーチンは対象連係リ
ストの次の行を構成するリストから次のスライスAを読
出し、判断ツリーCLASSIFIERへ戻る。もし判断ブロック
133の判定が否定ならば、FILLVERT FCN0サブルーチンは
ブロック135へ進んで第8M図の「END NODE(終端)」サ
ブルーチンを実行し、ブロック136へ進んでその時充填
されたフィルタされつつあるフレームと関連する「オー
プンリスト」のオープンリスト・ノードから「スライス
A」と呼ばれる変数を取出す。次いで、このサブルーチ
ンは第4B図の判断ツリーCLASSIFIFERの初めに戻る。
次に、第8M図のEND NODEサブルーチンについて述べる
のが好都合であろう。しかしこのサブルーチン、また第
8N図、第8O図および第8P図のサブルーチンを理解するた
めには、第18図および第19図の図および用語を理解する
ことが必要である。
第19図は、第8図のFILLVERTルーチンおよび第8A図乃
至第8P図のサブルーチンの実行中、第4B図の判断ツリー
CLASSIFIERを実行する再使用しなければならない「オー
プンリスト・ノード」のデータ・フィールドを示してい
る。第19図においては、データ・フィールド1がオープ
ンリスト・リンク(オープンリストの連係)を含み、こ
れは次のオープンリストレコードの初めを指示するアド
レスである。データ・フィールド2は、LEFT COUNT(左
側カウント)と呼ばれる変数の値を含む。データ・フィ
ールド3は、RIGHT COUNT(右側カウント)と呼ばれる
変数を含む。データ・フィールド4および5は、それぞ
れ「左側ホール・レコード・ポインタ」および「右側ホ
ール・レコード・ポインタ」を含む。データ・フィール
ド6は、その時のスライスAに対するアドレス・ポイン
タを含む。データ・フィールド7、即ちその時のオープ
ンリスト・ノードの最後のデータ・フィールドもまた、
その時のスライスBに対するアドレス・ポインタを含
み、またその時のスライスAの終端点であるA1およびA2
を含む。
オープンリスト・レコードは、連続する行のスライス
間の各「ホール」即ち垂直間隙の「ホール・レコード」
を維持する。第18図は、このような「ホール・レコー
ド」を示している。第18図においては、照合番号125は
異なる「ホール・レコード」を指示する。照合番号26
は、垂直の「ホール・レコード」を示している。上記
「左側カウント」および「右側カウント」の変数は、如
何にして高い対応した垂直ホールがこれまで成長したか
を示している。照合番号26A〜Fは、前記ホールの仕切
となるスライスに対するポインタを表わしている。ホー
ル・レコードの目的は、「解放された終端」、即ち成長
する垂直のホールの仕切となるスライスの結合されない
終端を追跡することである。ホール・レコード、即ち第
8M図のEND NODE(終端ノード)サブルーチンおよび第8N
図のFILL HOLE(ホール充填、即ち間隙充填)サブルー
チンを用いることにより、ホールを充填するかどうかの
判定を行なうことができる。
各オープンリスト・ノードはある対象の成長部分即ち
「分岐」を表わすから、各オープンリスト・ノードは、
潜在的にホールを閉じ得る壁がどこに形成されるかを判
定するため監視されねばならない。このようなあるノー
ドのみが潜在的なホールの成長する壁を表わす。第18図
の照合番号26のようなホール・レコードは、ある成長す
るホールの凸凹の縁部を追跡するため必要である。ホー
ルが2つの「一緒に成長する」壁により「閉じられた」
即ち「充填された」ならば、このホール・レコードは、
FILLVERT(第8図)を許容するスライス・アドレスおよ
びホールであった孔隙を埋めるFILL HOLE(第8N図)を
格納する。左右の「壁」ポインタ26A〜Fは、ホールを
形成するスライスの解放された終端のアドレスである。
各ホール・レコードの左のマーク27Gおよび右のマーク2
7Hは、もし左右の「壁」が「そのまま」であるならば
「1」である。第18図において、照合番号125は、オー
プンリスト・レコードに含まれる「ホール・レコード・
ポインタ」を示しており、一方は右のホール・レコード
・ポインタであり他方は左のホール・レコード・ポイン
タである。
第18図の照合番号1はオープンリスト・リンクを指
す。従って、第18図の全体図は、「成長するホール」を
表わすホール・レコードを指示する「成長する壁」を表
わすオープンリスト・ノードの連係リストを示してい
る。
第8M図のEND NODEサブルーチンの目的は、単にメモリ
ーを再要求して、典型的には小さな垂直のホールおよび
そのホール・レコードを規定するため使用されるメモリ
ーの64バイト部分を解放する無効ホール・レコードを排
除して、再要求されたメモリーを、その時ある他の目的
のためコンピュータのオペレーティング・システムによ
り使用することができる再使用可能なメモリー・リスト
に戻すことである。
成長する垂直ホールの成長する壁は、実際には、FILL
VERTが実行中使用されるオープンリスト・ノードの成長
ノードの一部である。もしノードが成長する時、ホール
の代りに発散が形成されることが判定されるか、あるい
はホールが充填されるならば、ホール・レコードはもは
や必要でない。
次に第8M図においては、ラベル220からEND NODEサブ
ルーチンに入り、判断ブロック221へ進み、変数LEFT CO
UNT(左側カウント)が0より大きいかどうかを判定す
る。もしそうでなければ、サブルーチンは判断ブロック
225へ進むが、これはその時のノードに添付される左の
ホール・レコードがないためである。しかし、もしLEFT
COUNTが0より大きければ、このことはその時のオープ
ンリスト・ノードに対して、即ち充填されつつありかつ
ホールまたは発散の接合点であり得る成長する孔隙の壁
を表わすフレームにおける対象の成長部分に対して添付
された第18図の26の如き左のホール・レコードがあるこ
とを意味する。この時、END NODEサブルーチンは判断ブ
ロック222へ進み、「左のホール・レコードの左側のマ
ーク」が0であるかどうかを判定する。
もしこの判定が否定であれば、これは、成長する孔隙
が依然としてオープンリストの別のノードによりホール
となる可能性を持つものと認識されることを意味する。
従って、その時のホール・レコードにより占められるメ
モリーは未だ再要求できないが、これはホール・レコー
ドが依然としてこのホール・レコードの反対側の壁と関
連するオープンリスト・ノードによりアクセスされねば
ならないためである。従って、サブルーチンはブロック
224へ進んで、ホール・レコードの右側マークを「0」
に等しくセットして、判断ブロック225へ進む。もし判
断ブロック225の判定が肯定ならば、このことは、ホー
ル・レコードの両方の壁がホール・レコードと無関係と
なり、前記の関連のレコードを維持するため用いられた
メモリーはもはや必要でなく再要求できることを意味す
る。
この時、END NODEサブルーチンは判断ブロック223へ
進んで、左のホール・レコードを格納するため用いられ
たメモリーを「再要求」し、これをコンピュータのオペ
レーティング・システムに戻して、判断ブロック225へ
進む。
判断ブロック225および226、およびブロック228およ
び227においては、略々同じ手順が繰返されて、右のホ
ール・レコードに対する需要があるかどうかを判定し、
もしそうでなければ、これに用いられたメモリーがオペ
レーティング・システムに対し再要求される。
次に第8B図においては、もし第4B図の判断ツリーCLAS
SIFIERがFILLVERT FCN1を選択するならば、このサブル
ーチンは判断ブロック137へ進んで、前に問題となった
スライスAがその時のスライスBのライン上の他のスラ
イスに前に添付されたかどうかを判定する。もしこの判
定が肯定ならば、サブルーチンは第8O図のサブルーチン
を実行することにより1つのホール・レコードを始動す
る。もしスライスAが前に添付されなかったならば、プ
ログラムは第8P図の添付られたスライスBサブルーチン
を実行することによりスライスBをスライスAへ添付し
て、CLASSIFIERの初めに戻る。
ここで、第8O図のSTART HOLE(ホール・レコード・ス
タート)サブルーチンについて述べておくことが好都合
であろう。第8O図においては、もしスライスAとBとの
関係がFILLVERT FCN1、3または4を呼出させるなら
ば、このサブルーチンがFILLVERTにより呼出される時CL
ASSFIERにより呼出される。いずれの場合でも、形成さ
れつつある対象の発散の可能性がある。この状態が生じ
ると直ちに、第18図に関して述べたタイプのホール・レ
コードを開始することが必要で、左右の壁ポインタを生
成することによりホールの成長を記録する。このルーチ
ンは最初に判断ブロック301へ進み、既にスライスAに
添付されたスライスBと同じ走査線上に1つのスライス
が存在するかどうかを判定する。もしそうであれば、ス
ライスAに別のスライスを添付することが孔隙即ち潜在
的なホールまたは発散の成長を開始することになる。も
し判断ブロック301の判定が否定ならば、このサブルー
チンから出る。もしこの判定が肯定ならば、ルーチンは
判断ブロック302へ進み、充填し得る最大許容垂直ホー
ル高さまでの値を持ち得る変数RIGHT COUNT(右側カウ
ント)が0より大きいかどうかを判定する。
もし判断ブロック302の判定が否定ならば、プログラ
ムはブロック303へ進み、新しいオープンリスト・ノー
ドを生成し、これを埋められつつあるフレームと関連す
る全てのオープンリスト・ノードからなるオープンリス
トに挿入する。次いでプログラムはブロック310へ進
む。
もしRIGHT COUNTが0より大きければ、このことは、
1つのホールが既にその右側において成長しつつあるこ
とを意味する。このことを理解するためには、その時の
ノードの左側のオープンリストがその時のデータ・バッ
ファからのスライスBを含む「履歴」およびそれ以前を
表わすことを認識することがおそらく助けとなろう。右
側にあってその時のノードを含むオープンリストは、最
も最近のデータ・バッファの履歴を表わしている。その
時のノードの履歴は成長しつつあるホールの壁を表わ
し、もしLIGHT COUNTが0よりも大きければ、このこと
はホールが既にその右側で成長中であることを意味す
る。
もしRIGHT COUNTが0より大きければ、ルーチンはブ
ロック304へ進み、ブロック304において、RIGHT COUNT
(OLD NODE(古いノード))と等しいRIGHT COUNT(TEM
P)と呼ばれる一時変数をセットするが、これは既に成
長中のホールに対するRIGHT COUNTのその時の値、即ち
その時のオープンリスト・レコードにおけるRIGHT COUN
Tの値である。このステップの理由は、RIGHT COUNTの値
がその後生成されて開いたリストに挿入される新しいオ
ープンリスト・ノードにおいて使用することができるよ
うにするためである。
ルーチンはこの時ブロック305へ進み、一時アドレス
変数RIGHT HOLE ADDRESS(右側ホール・アドレス)(TE
MP)をその時のオープンリスト・ノードにおける右側の
ホール・レコード・アドレスの値、即ちRIGHT HOLE REC
ORD ADDRESS(OLD NODE)の値に等しくセットする。こ
のブロックにおいては、一時的変数RIGHT HOLE RECORD
ADDRESS(TEMP)がRIGHT HOLE RECORD ADDRESS(OLD NO
DE)に等しくセットされ、再び生成されるべき新しいオ
ープンリスト・ノードにおいて使用される値を保管す
る。
次に、ルーチンはブロック306へ進み、RIGHT HOLE RE
CORD LEFT WALL POINTER(右側ホール・レコードの左側
壁ポインタ)と呼ばれるポインタをスライスBのアドレ
スに等しくセットする。成長中のホールの内側のスペー
スは対象の発散する新しい分岐により分割されつつある
ため、この事実はホール・レコードに反映されねばなら
ない。次いでルーチンはブロック307へ進み、新しいオ
ープンリスト・ノードを生成し、これをフレームの充填
のため成長中のその時のオープンリストへ挿入する。そ
の後、ルーチンはブロック308へ進み、ブロック307に生
成された新しいノードのRIGHT COUNTをブロック304にセ
ットされた一時的なRIGHT COUNTの値に等しくセット
し、ブロック309において、ルーチンはブロック307に生
成された新しいノードのRIGHT HOLE ADDRESSをRIGHT HO
LE ADDRESS(TEMP)にセットする。次いでルーチンはブ
ロック310へ進んで新しい左側のホール・レコードを生
成する。
以降のステップは、それぞれ新しいオープンリストの
レコードの左側のカウントおよび左側ホール・レコード
・アドレスを「1」および新しいホール・レコードのア
ドレスに等しくする。これはブロック311および312にお
いて行なわれる。ブロック313においては、RIGHT COUNT
(OLD NODE)が「1」にセットされる。ブロック314に
おいては、古いノードに対するRIGHT HOLE RECORD ADDR
ESS(右側ホール・レコード・アドレス)手段が新しい
ホール・レコードのアドレスにセットされる。ブロック
311および313が同じホールを指すことに注意すべきであ
る。古いオープンリスト・ノードおよび新しいオープン
リスト・ノードは、新しいホールの左側壁および右側壁
を表わす。しかし、1つのホールしかないため、両方の
壁は同じホールを「見る」即ち指示する。ブロック315
においては、新しいホール・レコードに対するLEFT MAR
K(左側マーク)は「1」にセットされ、またブロック3
16においては、新しいホール・レコードに対するRIGHT
MARK(右側マーク)が「1」にセットされる。
これらのステップは、その時両方の新しいオープンリ
スト・ノードがブロック303および310のいずれにおいて
も生成し、またスライスAが取出された古いオープンリ
スト・ノードがその時同じ新しいホール・レコードにお
いて同時にブロック310に生じるように行なわれる。新
しいホール・レコードのLEFT MARKおよび新しいホール
・レコードのRIGHT MARKが共に「1」に等しいという事
実は、生成されつつあるホールが存在することを示して
いる。
ブロック317および318においては、新しいホール・レ
コードの第1の左側壁ポインタが、判断ブロック301に
おいて判定されるようにスライスAが既に添付された前
のスライスBのアドレスに対してセットされ、新しいホ
ール・レコードの第1の右側壁ポインタがその時のスラ
イスBのアドレスにセットされる。別の左側壁ポインタ
が埋められる小さなホールの最大許容垂直値高さまでホ
ールの高さの各行に1つずつ存在し得ることに注意され
たい。
その時、サブルーチンはこれを呼出したFILLVERT機能
サブルーチンへ戻る。
次に第8P図のATTACH SLICEルーチンについて述べる。
1つのホールの成長中1つのスライスを添付するための
第8図のサブルーチンは、1つのスライスの垂直のホー
ルの片側を形成するフレームにおける「列」への添付を
行なう。サブルーチンは最初に判断ブロック261へ進
む。このサブルーチンがFILLVERT FCN1またはFILLVERT
FCN3−10のいずれかにより呼出される時、ホール・レコ
ードは既に始動されている。判断ブロック261は、この
ホールのLEFT COUNTが0より大きいかどうかを判定す
る。もしこの判定が否定ならば、この成長中のノードま
たは分岐の左側には成長中のホールがないことを意味す
る。
もし判断ブロック261の判定が肯定ならば、この成長
中のノードの左側に成長するホールが存在することを意
味する。この場合、ルーチンは判断ブロック262へ進
み、左側のホール・レコードのLEFT MARKが「1」に等
しいかどうかを判定する。もしそうでなければ、これは
ホールが決して閉じないことを意味する。従って、左側
ホール・レコードが格納されるメモリー部分がブロック
264に示されるように再要求され、ブロック265に示され
るようにLEFT COUNTは0にセットされ、LEFT HOLE RECO
RD ADDRESS(左側ホール・レコード・アドレス)もまた
0にセットされる。ルーチンはこの時判断ブロック271
へ進んで、その時成長中のノードの右側に存在するホー
ルに対するプロセスを反復する。読者は、左、右という
上記の定義がスライスの特定の成長ノードまたは列また
は分岐に関して付された相対的条件であることを留意す
べきである。
もし判断ブロック262の判定が肯定ならば、これは列
が依然として成長中であり、これと依然として関連する
左側のホール・レコードを有することを意味する。次い
でサブルーチンは判断ブロック263へ進んで、成長中の
列と関連したホールの垂直高さが典型的3乃至4本の水
平走査線としてセットされる最大値MAXよりも小さいか
どうかを判定する。LEFT COUNTおよびRIGHT COUNTは単
に垂直ホールがこれまでどれだけ高く成長したかのカウ
ントに過ぎない。もし判断ブロック263におけるLEFT CO
UNT変数がMAXよりも小さければ、ルーチンはブロック26
6へ進んでLEFT COUNTを増分し、次いでブロック267へ進
んで左側ホール・レコードを指示し、右側壁を形成する
その時のスライスBのアドレスを格納する。
この時、プログラムは判断ブロック271へ進んで右側
のホール・レコードに対する前のプロセスを反復する。
もしLEFT COUNTがMAXよりも小さくなければ、これは
成長中のホールが高さにおいてとるに足りない即ち小さ
なホールに対する基準値よりも大きいことを意味し、そ
の結果ホールは「埋め」られることがない。従って、ホ
ールと関連する全てのホール・レコードが除去され、関
連するメモリーがオペレーティング・システムにより使
用のため再要求される。次いでルーチンは、ブロック25
8、259および260に示されるように、LEFT HOLE RECORD
RIGHT MARK(左側ホール・レコードの右側マーク)を
「0」に等しくセットし、LEFT COUNTを「0」に等しく
セットし、またLEFT HOLE RECORD ADDRESS(左側ホール
・レコード・アドレス)を「0」に等しくセットする。
次いで、プログラムは判断ブロック271に進む。判断
ブロック271〜280はRIGHT HOLE RECORD(右側ホール・
レコード)に対する前のプロセスを反復して、これがブ
ロック274において格納されたメモリーを再要求し、も
しRIGHT HOLE RECORD MARK(右側ホール・レコードのマ
ーク)が「1」に等しくなければブロック275において
その関連する変数を「0」に等しくリセットし、判断ブ
ロック271に示されるようにRIGHT COUNTが「0」であれ
ば呼出しルーチンへ戻り、もしこのホールがその最大許
容値のMAX+1に達しなければRIGHT COUNTを増分して、
ブロック277に示されるようにその時のスライスのアド
レスを左側の壁スロットに格納し、さもなければ、ブロ
ック278〜280においてRIGHT HOLE RECORDと関連する変
数をリセットする。
次に第8C図のFILLVERT FCNサブルーチンの説明に戻
り、もしFILLVERT FCN3が呼出されるならば、第8B図のF
ILLVERT FCN1サブルーチンが実行され、次いでブロック
140に示されるように次のスライスBが読出される。第8
D図はFILLVERT FCN4を示しており、これにおいては判断
ブロック141において、スライスAがその時の走査線上
のスライスBスライスに対し前に添付されたかどうかが
判定される。もしこの判定が肯定ならば、このサブルー
チンは第80図の上記のサブルーチンを呼出し、バッファ
142に示されるように1つのホール・レコードを始動す
る。もし判断ブロック141の判定が否定ならば、ブロッ
ク143に示されるように、第8P図の上記のサブルーチン
を呼出すことによりスライスBが添付される。いずれの
場合も、ブロック144に示されるように、次のスライス
Bが入力バッファから読出される。
もし第8E図のFILLVERT FCN5サブルーチンが呼出され
るならば、ブロック145に示されるように第8P図の上記
のサブルーチンを呼出すことによりスライスBがスライ
スAに添付され、次のスライスAが次のオープンリスト
・ノードから読出される。
第8F図においては、もしFILLVERT FCN6サブルーチン
がCLASSIFIERにより呼出されるならば、ブロック147に
示されるように第8P図のサブルーチンを実行することに
よりスライスBがスライスAに添付される。次いで、ブ
ロック148および149に示されるように、次のスライスA
およびスライスBが得られる。
第8G図において、もしFILLVERT FCN7サブルーチンが
呼出されるならば、ブロック150に示されるように、ス
ライスBがスライスAに添付され、またブロック151に
示されるように、次のスライスBが入力バッファから読
出される。
第8H図においては、判断ブロック152に示されるよう
に、FILLVERT FCN8サブルーチンが、スライスBが前に
別のスライスAに対して前に添付されたかどうかを判定
する。もしこの判定が肯定ならば、ブロック153に示さ
れるように、後で述べる第8N図のFILL HOLEサブルーチ
ンを実行することによりホールが埋められ、またブロッ
ク154に示されるようにスライスAがオープンリスト・
ノードから取除かれる。もし判断ブロック152の判定が
否定ならば、ブロック155に示されるように、スライス
BがスライスAに対して添付される。いずれの場合も、
判断ブロック156がその時の走査線上のスライスBに対
してスライスAが添付されるかどうかを判定する。もし
この判定が肯定ならば、ブロック157に示されるよう
に、次のスライスAがオープンリスト・ノードから読出
される。
ここで、第8N図のFILL HOLEサブルーチンについて述
べるのが好都合であろう。このサブルーチンにはラベル
230を介して入り、最初に判断ブロック231へ進む。判断
ブロック231は、ホールが埋められるべきでないこと、
スライスBがその時の走査線上の別のスライスに添付さ
れた(その結果垂直のホールが形成された)条件が存在
しなければFILL HOLEがラベル248を通って戻り、LEFT C
OUNTは0より大きく、LEFT HOLE RECORDのLEFT MARKが
1と等しいことを判定する。もしそうであれば、ホール
が埋められるべきであるという判定がなされる。サブル
ーチンはブロック232に進み、LOOP INDEX(ループ指
標)を垂直ホールの高さであるLEFT COUNTと等しくセッ
トし、判断ブロック233へ進み、LOOP INDEXが0より大
きいかどうかを判定する。
もしLOOP INDEXが0より大きければ、ホールは未だ埋
められないことを意味し、ブロック234においてサブル
ーチンはホールの左側スライスのアドレスをLEFT WALL
INDEX(左側の壁指標)に等しくセットし、ブロック235
において右側アドレスをRIGHT WALL INDEX(右側の壁指
標)に等しくセットし、ブロック236において左側スラ
イスを右側スライスのアドレス内容にセットする。上記
のループにおいて起ることは、ホールが埋められつつあ
るということである。上記のループを通過する毎に、ホ
ールの左側のスライスおよびその時のラインのホールの
右側におけるスライスと共に「スライス」して1つのス
ライスを生成する。ブロック234、235および236は、ル
ープの次の実行が左側の壁を表わすスライスを見出すこ
とができるようにセットアップされる。このことは、左
側の壁が「偽のスライス」を後に残して埋められた間隙
があり得るため必要となる。
次に、サブルーチンは判断ブロック273へ進む。もし3
2ビット・ワードである左側スライスがその最上位ビッ
ト、即ち「1」にセットされるビット31を有するなら
ば、このことは左側スライスの次に低い31ビットが左側
スライスのアドレスであることを意味する。もし左側ス
ライスのビット31が「0」ならば、残りの31の更に低い
ビットが左側のスライスのデータとなる。もし左側スラ
イスが次の左側スライスのアドレスであれば、サブルー
チンはバッファ238へ進み、左側スライスのビット31を
マスクし、ブロック239へ進み、左側スライスのアドレ
スを左側スライスの31の更に低位のビットであるマスク
された左側スライスに等しくセットする。次いでサブル
ーチンはブロック240へ進み、左側スライスを左側スラ
イスのアドレスに等しくセットする。ルーチンは次に判
断ブロック237へ戻る。ホールはその時のノードの左側
に生じ得るため、その時の左側スライスが「妥当」であ
ることを仮定できず、従って実際に「妥当」なスライス
がその時のライン上に見出されるまで、その時のノード
の左側のスライスの探索が行なわれる。「不当」なスラ
イスは、他のホールの充填の結果から生じる残留スライ
スであり、この場合2つのスライスが1つのホールの充
填のため接合される時生じるスライスに対する不当なポ
インタを残す。
結局、判断ブロック237の判定は否定となり、このこ
とは実際の左側スライスが見出されたことを意味する。
ブロック241においては、左側スライスを右側スライス
の右端部に拡張することにより、ルーチンがその時の右
側スライスと左側スライスとの間の間隙を埋める。
この時、サブルーチンはバッファ242へ進み、右側ス
ライスのビット31を「1」にセットし、ブロック243へ
進む。ブロック243においては、サブルーチンが右側ス
ライスの下位の31ビットをADDRSS OF RIGHT SLICEに等
しくセットする。これにより行なわれることは、右側ス
ライスを不当としてマークすること、および不当左側ス
ライスのアドレスを右側スライスのアドレスであったも
のに格納することである。次いで、サブルーチンはブロ
ック244へ進み、LOOP INDEXを減分し、判断ブロック233
へ戻る。結局、判断ブロック233によりホールが埋めら
れたことが判定される時、サブルーチンはブロック245
へ進み、左側ホール・レコードが格納されたメモリー部
分を再要求してオペレーティング・システムが使用でき
るようにする。次いでサブルーチンは、ブロック246、2
47に示されるようにLEFT COUNTおよびLEFT HOLE RECORD
ADDRESSを0にセットし、ラベル248を介して呼出し側
ルーチンへ戻る。
再びFILLVERT FCNサブルーチンについて見れば、FILL
VERT FCN9サブルーチンが第8I図に示されるが、同図に
おいて判断ブロック158はスライスBが前に用いられた
かどうかを判定する。もしそうであれば、ホールは、ブ
ロック159に示されるように、第8N図の上記FILL HOLEサ
ブルーチンを呼出すことにより埋められる。ブロック16
0に示されるように、スライスAがオープンリスト・ノ
ードから取除かれる。もし判断ブロック158の判定が否
定ならば、ブロック161に示されるようにスライスBが
スライスAに添付される。いずれの場合も、サブルーチ
ンは判断ブロック162へ進み、スライスAが前に使用さ
れたかどうかを判定する。もしこの判定が肯定ならば、
ブロック163に示されるように、次のスライスAがオー
プンリスト・ノードから読出される。いずれの場合も、
ブロック164に示されるように、次のスライスBが入力
バッファから読出される。
次に第8J図においては、FILLVERT FCN10がスライスB
が判断ブロック165において前に添付されたかどうかを
判定する。もしそうであれば、ブロック166に示される
ように、FILL HOLEサブルーチンが呼出される。もしそ
うでなければ、ブロック167に示されるように、スライ
スBが第8P図のサブルーチンによってスライスAに添付
される。いずれの場合も、ブロック168に示されるよう
に、次のスライスBが入力バッファから読出される。
第8K図においては、FILLVERT FCN12サブルーチンは、
スライスBが前に添付されたかどうかを判断ブロック16
9において判定し、もしそうであったならば、ブロック1
71へ進んで次のスライスBを読出す。もしスライスBが
前に添付されなかったならば、ブロック170に示される
ようにサブルーチンは新しいオープンリスト・ノードの
項目を生成して、それにスライスBを挿入し、次いでブ
ロック171へ進んで戻る。
第8L図において、もし第4B図の判断ツリーCLASSIFIER
へ進むに先立ちスライスAがなくスライスBのみが存在
することが判定されるならば、FILLVERT FCN13サブルー
チンが呼出される。もしそうであれば、サブルーチンは
ブロック172へ進み、新しいオープンリスト・ノード項
目を生成してこれにスライスBを挿入し、次にブロック
173に示されるように次のスライスを読出して戻る。
次に第9図においては、サブルーチンMETAGRABのフロ
ーチャートが示されている。このサブルーチンは、水平
および垂直のホールが埋められかつ同じ走査線上のスラ
イス間の(走査された画像に関する)左右の適正な関係
が回復された後、(FILLHORIZおよびFILLVERTにより)
「フィルタ」され、フレームにおけるデータの境界の
「方向を持つグラフ」の形態の「幾何学的に」認識され
たデータの対象を「再構成」する機能を行なう。METAGR
ABルーチンはまた、充分に直線状の縁部を有するあらゆ
る形状即ち斑点を台形に変換して、「充分な挙動を与え
た」対象を表わすため必要なデータ量を大幅に減殺す
る。
第9図のMETAGRABサブルーチンにはラベル400におい
て入り、判断ブロック401へ進み、その時のMETAGRABの
パスがこの時の対象に対する最初のパスであるかどうか
を判定する。もしそうであれば、サブルーチンはブロッ
ク402へ進み、初期化サブルーチンINITMGを呼出して対
象を開いたリストを生成することにより再構成されるべ
く初期化する。この時、サブルーチンはブロック403へ
戻る。もしこの時のパスが最初のパスでなければ、サブ
ルーチンはブロック403へ進んで第4A図のPROCESS ONE L
INEサブルーチンを呼出し、このサブルーチンは更に第4
B図のCLASSIFIERサブルーチンおよびそのMETAGRAB FCN
サブルーチンの適当なものを呼出して、オープンリスト
のヘッダが先頭にあるデータの列を組立てて走査された
元の画像を表わす。ブロック402においては、METAGRAB
サブルーチンがデータの1つの行の処理のためのその変
数を初期化するMETAGRABサブルーチンは、FILLHORIZお
よびFILLVERTのライン単位の実行に続いて、ライン単位
に実行される。
ここで、METAGRAB FCNO−13サブルーチンについて、
第9A図乃至第9L図に関して記述することにする。METAGR
ABにより呼出される時、第4図の判断ツリーCLASSIFIER
がFCNOを選択するならば、第9A図の判断ブロック503に
入り、スライスAが前にこの時のスライスBの行上のど
れかのスライスに添付されたかどうかについて判定が行
われる。もしこの判定が肯定ならば、サブルーチンはブ
ロック504へ進み、オープンリストから次のスライスA
を読出して戻る。さもなければ、サブルーチンはバッフ
ァ505へ進み、第12A図のEND BRANCH(終端分岐)サブル
ーチンを実行し、次いでブロック506に示されるように
オープンリストからスライスAを除去してMETAGRABへ戻
る。
第9B図においては、もしMETAGRAB FCN1が選択される
ならば、判断ブロック507が、スライスAが前に添付さ
れたかどうかを判定し、もしそうであれば、ブロック50
8に示されるように拡散レコードを生成し、またブロッ
ク509に示されるように新しいオープンリスト・ノード
又は項目を生成してこれにスライスBを挿入する。もし
スライスAが前に添付されなかったならば、サブルーチ
ンはブロック510へ進み、スライスBをスライスAに添
付することにより分岐を辿る。これは、第14図のGROW B
RANCH(生長分岐)サブルーチンを実行することにより
行われる。いずれの場合も、サブルーチンがオープンリ
ストから次のスライスAを読出し、METAGRABへ戻る。
第17図のサブルーチンが第9B図のブロック508第9D図
の515において拡散レコードを生成するため実行され、
また第16図のサブルーチンは、第9H図のブロック527、
第9J図のブロック541および第9I図のブロック534におい
て収束レコードの生成のため実行される。
第9C図においては、もしMETAGRAB FCN3が選択される
ならば、ブロック512に示されるように、METAGRAB FCN1
と略々同じサブルーチンが実行され、次いでデータ・バ
ッファから次のスライスBが読出され、このバッファは
フレームから次の未使用のスライスを保有する。次い
で、サブルーチンはMETAGRABへ戻る。
第9D図においては、METAGRAB FCN4サブルーチンは、
判断ブロック514において、スライスAが前に添付され
たかどうかを判定し、もしそうであれば、ブロック515
に示されるように拡散レコードを生成し、新しいオープ
ンリストノードを生成し、ブロック516に示されるよう
にスライスBをそれに挿入し、次いでオープンリストか
ら次のスライスBを読出す。
もしスライスAが前に添付されなかったならば、サブ
ルーチンはブロック517へ進み、分岐を成長することに
よりスライスBをスライスAへ添付する。これは、第14
図のGROW BRANCHサブルーチンを実行することにより行
われる。次いで、サブルーチンはブロック518へ進んで
戻る。
第9E図においては、METAGRAB FCN5サブルーチンは、
ブロック519に示されるようにGROW BRANCHを実行するこ
とによりスライスBをスライスAに添付し、ブロック52
0に示されるように、オープンリストから次のスライス
Aを読出して戻る。
第9F図においては、METAGRAB FCN6サブルーチンが、
ブロック521に示されるようにスライスBをスライスA
に対しGROW BRANCHを実行することにより添付し、ブロ
ック522に示されるように次のスライスAを読出し、ブ
ロック523に示されるように、次のスライスBをデータ
・バッファから読出して戻る。
第9G図においては、METAGRAB RCN7サブルーチンが、
ブロック524に示されるようにスライスBをスライスA
へGROW BRANCHにより添付し、またブロック525に示され
るように次のスライスBを読出して戻る。
第9H図においては、METAGRAB FCN8サブルーチンは、
スライスBが同じライン上の別のスライスに対して前に
添付されたかどうかを判定する。もしそうであれば、ブ
ロック527におけるように収束レコードが生成され、ま
たブロック528に示されるようにスライスAがオープン
リストから除去される。次いで、サブルーチンは判断ブ
ロック530へ進む。もしスライスBが同じライン上の別
のスライスに対し前に添付されなかったならば、ブロッ
ク529に示されるようにスライスBはスライスAに対しG
ROW BRANCHにより添付され、次いでプログラムは判断ブ
ロック530へ進む。判断ブロック530は、スライスAがど
れかのスライスBに対して添付されるかどうかを判定す
る。もしそうであれば、サブルーチンは、ブロック531
に示されるようにオープンリストから次のスライスAを
読出して戻る。さもなければ、サブルーチンは単にMETA
GRABへ戻る。
次に第9I図においては、METAGRAB FCN9サブルーチン
が、スライスAが前に判断ブロック533に添付されたか
どうかを判定し、もしこの判定が肯定ならば、収束レコ
ードを生成してブロック534に示されるように第16図の
サブルーチンを実行し、ブロック535に示されるように
オープンリストからスライスAを除去し、次いで判断ブ
ロック537へ進む。もしスライスBが前に添付されなか
ったならば、サブルーチンはブロック536に示されるよ
うにスライスAをスライスBに添付することにより分岐
を成長させ、判断ブロック537へ進む。判断ブロック537
は、スライスAが前に添付されたかどうかを判定し、も
しそうであれば、オープンリストから次のスライスAを
読出してブロック539へ進む。さもなければ、サブルー
チンは単に判断ブロック537からブロック539へ進み、次
のスライスBをデータ・バッファから読出して戻る。
第9J図においては、METAGRAB FCN10サブルーチンが、
判断ブロック540においてスライスBが前に添付された
かどうかを判定し、もしそうであれば、第16図のサブル
ーチンを実行することにより収束レコードを生成し、次
いでブロック543へ進んで、データ・バッファから次の
スライスBを読出して戻る。もしスライスBが前に添付
されなかったならば、ブロック542に示されるように、
スライスBがスライスAへ添付される。次いでサブルー
チンはブロック543へ進む。
第9K図においては、METAGRAB FCN12サブルーチンが判
断ブロック544において、スライスBが前に添付された
かどうかを判定する。もしそうであれば、サブルーチン
はブロック547へ進み、データ・バッファから次のスラ
イスBを読出して戻る。さもなければ、サブルーチン
は、ブロック545に示されるように、第10図のNEW BRANC
H(新分岐)サブルーチンを呼出すことによりオープン
リストに新しい分岐またはノードを生成し、ブロック54
6に示されるようにその中にスライスBを挿入する。サ
ブルーチンは次にブロック547へ進んで戻る。
最後に第9L図において、METAGRAB FCN13サブルーチン
は、第10図のNEW BRANCH(新分岐)サブルーチンを実行
することによりブロック548に示されるように新しい分
岐を生成し、次いでブロック549において、スライスB
を新しいオープンリスト・ノードとしてオープンリスト
に挿入する。更に、METAGRAB FCN13は、オープンリスト
の終りに対してその中にスライスBを含む新しいオープ
ンリスト・ノードを付加する。次いで、プログラムはデ
ータ・バッファから次のスライスBを読出してMETAGRAB
へ戻る。新しい分岐が新しいオープンリスト・ノードを
生成することが新しいオープンリスト・ノードの生成、
および分岐が成長するMETAOBJECTの恒久的な部分である
このノードにスライスBを挿入することとは異なるが、
これが一時的なものでありかつ最終的にはこれから出る
ことをやめることになりメモリが要求されることになる
ことを表わすオープンリスト・ノードが再要求されるこ
とに注意されたい。
次に第10図においては、プログラムNEW BRANCHにはラ
ベル420から入る。このNEW BRANCHサブルーチンは、MET
AGRABにより呼出される第4A図のPROCESS ONE LINEサブ
ルーチンの特殊バージョンの一部としてMETAGRABにより
呼出される。このNEW BRANCHサブルーチンは、新しい分
岐レコードを生成する。換言すれば、サブルーチンNEW
BRANCHは、ブロック421において、GET MEMと呼ばれる通
常のサブルーチン(詳細には開示しない)を実行するこ
とによりメモリーの適当な部分を取得し、分岐レコード
においてあるデータ・フィールドをセットアップする。
この時の走査線が処理された後で、第11図のCREATE B
RANCH(分岐生成)サブルーチンが、METAGRABと呼ばれ
る第4A図のPROCESS ONE LINEサブルーチンの特殊バージ
ョンの一部として呼出される。第4A図のブロック650,65
7,658および659はそれぞれ第11図のブロック426,427,42
8および433と対応する。CREATE BRANCHの目的は、オー
プンリストのヘッダからスライスAの1つのラインの走
査を終った後に「残される」未使用のスライスBの全て
について新しい分岐を生成することである。第11図のCR
EATE BRANCHサブルーチンはラベル425から判断ブロック
426へ進み、その時のスライスBが前に添付されたかど
うかを判定する。もしこの判定が肯定ならば、これは次
のスライスBをブロック427に示されるようにデータ・
バッファから読出す。もし判断ブロック426の判定が否
定ならば、すなわち、この時のスライスBがスライスA
へ前に添付されなかったならば、判断ブロック428へ進
む。判断ブロック428は、走査がその時のラインの終り
に未だあるかどうかを判定する。もしこの判定が肯定な
らば、サブルーチンはブロック432へ進み、同じ判定を
再び行い、呼出し側のルーチンへ戻る。もし判断ブロッ
ク428の判定が否定ならば、サブルーチンは判断ブロッ
ク429へ進み、オープンカーソル変数OPEN CURが0に等
しいかどうかを照合して、サブルーチンがオープンリス
トの終りにあるかどうかを判定する。もしそうであれ
ば、サブルーチンはブロック431へ進み、OPEN CURをPRE
V CURと呼ばれる前のカーソルの値にセットし、判断ブ
ロック432に進む。もし判断ブロック430の判定が否定な
らば、サブルーチンブロック432へ進んで否定の判定を
得、従ってサブルーチンはブロック433へ進んで前に説
明したMETAGRAB FCN13を呼出す。いずれの場合も、サブ
ルーチンは判断ブロック432へ進み、その時のスライス
Bがその時の走査線の終りにあるかどうかを判定する。
もしこの判定が肯定ならば、サブルーチンは呼出し側の
サブルーチンへ戻る。さもなければ、CREATE BRANCHサ
ブルーチンが第9L図のMETAGRAB FCN13サブルーチンを呼
出し、オープンリストにおいてスライスBと対応する新
しいノードおよび新しい分岐レコードをセットアップす
る。
次に第12図においては、DEL ENTS(エンティティ削
除)サブルーチンはMETAGRABにより呼出される第4A図の
PROCESS ONE LINEサブルーチンの上記の特殊なバージョ
ンの一部である。特に、第4A図のブロック662,663,664
および665はそれぞれ、第12図のブロック461,464,465お
よび463と対応する。その時の分岐の最後のスライスB
が添付された後、ラベル460を介してDEL ENTSサブルー
チンに入る。DEL ENTSサブルーチンは判断ブロック461
へ進み、スライスAが別のスライスに添付されるかどう
かを判定する。もしこの判定が否定ならば、DEL ENTSサ
ブルーチンはブロック464へ進み、オープンリストから
次のスライスAを読出す。いずれの場合も、サブルーチ
ンは次に判断ブロック462へ進み、変数OPEN LIST COUNT
(オープンリスト・カウント)が0であるかどうかを判
定する。(DEL ENTSサブルーチンの制御は、初期値から
0までOPEN LIST COUNTをカウント・ダウンすることに
より行われる。)もしこの判定が肯定ならば、サブルー
チンは呼出し側のルーチンへ戻り、さもなければブロッ
ク463へ進んで、第9L図の上記METAGRAB FCN13サブルー
チンを呼出す。
次に第12A図においては、END BRANCH(終端分岐)サ
ブルーチンにはブロック440において入る。このサブル
ーチンは、第9A図のMETAGRAB FCN0サブルーチンによ
り、また第12図のDEL ENT(エンティティ削除)サブル
ーチンにより呼出される。END BRANCHサブルーチンはブ
ロック441へ進み、終了される分岐のその時のデータの
タイプが、「未知の台形」,「未知のタイプ」,斑点,
もしくは第14図のGROW BRANCHサブルーチンにおけると
同じ方法の台形であるかどうかを判定する。もしその時
の分岐のタイプが未知の台形(UTR)であれば、サブル
ーチンはラベル442を経てブロック443へ進み、サブルー
チンGET MEMを実行してメモリーの64バイト部分を使用
できるようにし、分岐のデータ・タイプをUNK(未知の
タイプ)にセットし、ラベル445へ進む。
もしその時の分岐のデータ・タイプが未知のタイプで
ある場合は、プログラムはブロック446へ進み、データ
・タイプを斑点としてセットしてその時の分岐における
全てのスライスがレコードに格納されねばならないこと
を意味する。次いでプログラムはブロック447へ進んで
その時の分岐のスライスを完了される斑点レコードに入
力する。次いで、プログラムは呼出し側のサブルーチン
へ戻る。もしブロック441において終りつつあるその時
の分岐が斑点(BLOB)であることが判定される場合、終
端分岐サブルーチンはラベル448を経てブロック449へ進
み、その時の分岐のデータを完了しつつある斑点レコー
ドに入力する。もしブロック441においてその時の分岐
のデータ・タイプが台形(TRAP)であると判定されるな
らば、サブルーチンはラベル450を経てブロック451へ進
み、台形の最後の2つの隅の点を完了されつつある台形
レコードへ入れて戻る。
次に第13図においては、INITMGサブルーチンが第9図
のMETAGRABサブルーチンのブロック402により呼出され
て、ラベル470を経てブロック471へ進む。INITMGサブル
ーチンの目的は、オープンリスト・ノード、フレームお
よび「メタ対象」ヘッド・レコードを適正に初期化する
ことである。一旦データ構造が適正に初期化されると、
サブルーチンは、メタ対象が形成される時新しい各スラ
イスを見出すためメモリーを探索する必要もなく、「付
勢データ」モードで作動する。
ブロック471においては、サブルーチンは第9図のMET
AGRABサブルーチンにおいて用いられた変数に対する局
部RAM領域をクリアする。この時、ブロック472に示され
るように、局部変数が初期化される。次いでサブルーチ
ンはブロック473へ進み、データ・バッファから次のス
ライスBを読出す。プログラムはこの時ブロック474へ
進み、メタ対象(METAOBJECT)ヘッダ・レコードに対す
る新しいレコードを生成するメモリーの新しい64バイト
部分をセットアップして、ブロック475へ進む。ブロッ
ク475においては、サブルーチンはメタ対象ヘッダ・レ
コードをセットアップし、このレコードは、第9図のME
TAGRABサブルーチンによりメタ対象が生成された後、対
象の異なる分岐の初めに対するポインタを含む。この
時、メタ対象に対する全てのアクセスはメタ対象ヘッダ
・レコードを通ることになる。
次に、INITMGサブルーチンは判断ブロック476へ進ん
で、第9図のMETAGRABサブルーチンにより実行される最
初のラインが完了したかどうかを判定する。これは、IN
ITMG手順が単に最初のラインの間だけ実行されるに過ぎ
ないため必要である。もし判断ブロック476の判定が肯
定ならば、サブルーチンはブロック481へ進んでその時
のメタ対象ヘッダのカウント(即ち、オープンリスト・
ノードにおける分岐数)をメタ対象ヘッダ・レコードに
対して書込む。次いで、サブルーチンはブロック482へ
進み、ヘッダ・レコード・アドレスをMOB PTR(メタ対
象ポインタ)と呼ばれる変更できる場所へ入力する。次
いでプログラムは呼出し側のサブルーチンへ戻る。
もし判断ブロック476の判定が否定ならば、プログラ
ムはブロック477へ進み、メタ対象ヘッダ・カウンタを
更新する。この時、プログラムは第10図のNEW BRANCHサ
ブルーチンを呼出し、これを実行して新しい分岐レコー
ドを作り、ブロック479へ進み、新しいノードをオープ
ンリストに挿入するサブルーチンINS OPLを呼出し、次
いでブロック480に示されるようにデータ・バッファか
ら新しいスライスBを読出して、判断ブロック476へ戻
る。これは、最初のラインの終りまで反復される。
このように、サブルーチンINITMGは、第21図のMETACT
RLサブルーチンからフレーム入力の最初の行において存
在する全てのスライスに対して新しい分岐およびオープ
ンリスト・ノードを生成し、またメタ対象ヘッダをセッ
トアップする。
次に第14図,第14A図および第14B図においては、前に
説明したようにMETAGRABにより呼出されるGROW BRANCH
サブルーチンに第14図のラベル600において入り、最初
にブロック601へ進む。ブロック601において、GROW BRA
NCHがB USEDと呼ばれるスライスBのフラッグを「1」
にセットし、ブロック602へ進み、ここでA USEDと呼ば
れるスライスAのフラッグが「1」にセットされる。次
いで、プログラムはブロック603へ進み、スライスBと
関連する「繋ぎ(コネクト)カウンタ」即ちB CNNECTを
B CONNECT+1へ増分する。次いで、サブルーチンはブ
ロック604へ進み、繋ぎカウンタA CONNECTをA CONNECT
+1に等しくセットすることにより増分する。
「メタ対象」の分岐即ちMETAGRABにより形成されつつ
ある方向を持つグラフにおいては、フレームのオープン
リストの最新のスライスであるスライスAがなにか即ち
オープンリストのノードと繋げられねばならず、また入
力バッファから得た最新の読出されたスライスBがOBGR
ABにより前に形成された対象のその時のライン上の「次
の」スライスであることを理解すべきである。
ブロック601〜604の最初の4つのステップはこの状態
と対応するが、これは、収束および拡散が生じる時、ス
ライスAとスライスBの連続性の状態を知らねばならな
いためである。スライスAの繋ぎカウンタおよびスライ
スBの繋ぎカウンタが、このような連続性を表わす。こ
のカウンタは、どれだけの数の分岐が収束状態に収束す
るか、また発散状態から拡散するかを記録するため使用
される。
GROW BRANCHサブルーチンはブロック604から判断ブロ
ック605へ進み、DATA TYPE(データ・タイプ)と呼ばれ
る変数をテストして、これにその時の分岐が台形である
ことを示すコードが割当てられたかどうかを調べる。も
しこの判定が否定ならば、GROW BRANCHはブロック617へ
進む。もしその時の成長する分岐が台形であれば、プロ
グラムは判断ブロック606へ進むが、その目的は成長す
る分岐の境界に「隅部」の急激な発生があったかどうか
を迅速に判定することである。
判断ブロック606は、これをスライスAとBの長さに
おける変化の絶対値を用いることにより行う。もしこれ
が予め定めた定数よりも小さくなければ、成長する形状
の1つの境界にある急激な変化が存在することを意味
し、その時の台形を終らせねばならない。
もしそうであれば、プログラムはブロック608〜611へ
進み、その時の台形レコードを終り、ブロック609にお
いて新しい未知のタイプ・レコードを生成し、ブロック
610に示されるように、新しい未知のレコードが成長す
る閉じられた台形レコードに連係させて、オープンリス
ト・レコードを更新する。即ち、ブロック610において
は、プログラムは新しいレコードが台形の連続であるこ
とを示すアドレス・ポインタを生成する。次いでプログ
ラムはブロック611においてオープンリスト・レコード
を更新し、これがデータ・タイプを「未知のタイプ」
(UNK)にセットすることを意味する。新しい未知の形
状のオープンリスト・ノードは、これが繋げられる台形
についても同じものである。ブロック611の後、GROW BR
ANCHサブルーチンは呼出し側のルーチンへ戻る。
もし判断ブロック606のテストが肯定ならば、プログ
ラムは判断ブロック607へ進み、その時依然として台形
であることが知られる成長する形状の縁部が、その縁部
の最初の消長量(derivative)が予め定めた値よりも小
さいように「充分に対処される」かどうかを判定する。
もしこの判定が否定ならば、プログラムは前に説明した
ブロック608へ進む。もし判断ブロック607の判定が肯定
ならば、プログラムはブロック612へ進む。判断ブロッ
ク612においては、プログラムは成長する台形の前後の
縁部の第2の消長量が予め定めた値よりも小さいかどう
かを判定し、もしそうでなければ、ブロック614に示さ
れるように、プログラムはブロック613へ進み、成長す
る台形のエントリを終了してその時の台形の成長を続け
る。このような場合には、その時の台形は最初の消長テ
ストをパスし、第2の消長テストを通らず、このためそ
の縁部は激しく変化しないが、その境界が依然として充
分に対処されるべく略々良好な状態であり、そのため別
の台形として表わし続けることができる。そのため、最
初の成長する台形は終り、別の「継続する」台形が最初
のものから延長する。次いで、この生長分岐ルーチン
は、呼出し側のルーチンに戻る。
もし判断ブロック612の判定が肯定ならば、プログラ
ムはブロック615へ進み、オープンリスト・レコードを
更新し、このことは同じ台形がその時のそれに関するス
ライス情報を格納することにより継続し、その結果次に
プログラムが次のスライスAを取得する時その時のスラ
イスとなることを意味する。即ち、その時のスライスB
の2つの終端がその時のオープンリスト・ノードにおけ
る次のスライスAとなるのである。
ブロック615におけるオープンリスト・レコードの更
新はまた、その時成長する分岐に対して格納される新し
い各スライスBに対する成長する台形のX座標における
変化であるΔXを格納することを含む。
もし判断ブロック605の判定がその時のデータ・タイ
プが台形ではないことであったならば、プログラムは判
断ブロック617へ進み、データ・タイプが「未知の台
形」(UTRAP)であるかどうかを判定する。もしこの判
定が否定ならば、プログラムは判断ブロック628へ進む
が、これはその時のデータ・タイプが未知のタイプ(UN
K)であるためである。もしその時のデータ・タイプが
判断ブロック617において判定されたように未知の台形
であれば、プログラムは判断ブロック618へ進んで、未
知の台形のスライス・カウントが3に等しいかどうかを
判定する。もし未知の台形のスライス・カウントが3よ
り小さければ、判断ブロック618の判定は否定となり、
プログラムはブロック619へ進み、成長する未知の台形
に対するオープンリストを更新して呼出し側のサブルー
チンへ戻る。
ブロック618に示されるように、もし未知の台形のス
ライス・カウントが3ならば、プログラムはブロック62
0へ進み、未知の台形の前後の両側における第2の消長
量を計算する。次いで、GROW BRANCHサブルーチンが判
断ブロック621へ進み、左側縁部の第2の消長量(DDX
左)が予め定めた制限値よりも小さいかどうかを判定
し、また右側縁部の消長量(DDX右)が予め定めた制限
値より小さいかどうかを判定する。実際に、判断ブロッ
ク621は成長する未知の台形が充分に処された前後の縁
部を持つかどうかを判定する。もしこの判定が否定なら
ば、GROW BRANCHはブロック622へ進み、台形レコードを
閉じ、次いでブロック623において、新しい「未知のデ
ータ・タイプ」レコードを生成し、ブロック624へ進
み、新しい未知のデータ・タイプ・レコードと閉じた台
形レコードとの間にポインタを生成することにより、新
しい未知のレコードを閉じた台形レコードと連係させ
る。次いでブロック625において、GROW BRANCHはオープ
ンリストのレコードを更新して、呼出し側のルーチンへ
戻る。
もし判断ブロック621の判定が肯定ならば、プログラ
ムはブロック626へ進み、オープンリストのレコードを
リセットして成長する未知の台形が実際には既知の台形
であることを示す。次いで、プログラムはブロック627
へ進み、新しい台形の成長を続けるため必要なオープン
リストのレコードへエントリを行い、呼出し側のルーチ
ンへ戻る。
もし判断ブロック617がその時の成長する分岐のデー
タ・タイプが「未知のタイプ」であることを判定するな
らば、GROW BRANCHは判断ブロック628へ進み、このデー
タ・タイプが未知のタイプであるかどうかを判定する。
もしこの判定が肯定ならば、ルーチンは判断ブロック62
9へ進み、未知のタイプのスライス・カウントが3に等
しいかどうかを判定する。もしこれが3より小さけれ
ば、プログラムはブロック630へ進み、オープンリスト
を更新して成長する分岐が未知のタイプであることを示
し、呼出し側のサブルーチンへ戻る。もし未知のタイプ
のスライス・カウンタが判断ブロック629により3に等
しいと判定されるならば、プログラムはブロック631へ
進み、前後の両縁部の第2の消長量を計算し、判断ブロ
ック632へ進み、これらの消長量をテストしてこれらが
共にある予め定めた制限値より小さいかどうかを判定す
ることにより、その時の分岐の未知の成長形状の前後の
縁部が「充分に対処される」かどうかを判定する。もし
この判定が否定ならば、プログラムはブロック633へ進
み、オープンリストのデータ・タイプをリセットしてそ
の時の形状が斑点であることを示し、またブロック634
においては、未知のレコードをリセットしてその時の分
岐の成長する形状が斑点であることを示す。
プログラムはこの時ブロック635へ進み、オープンリ
ストのレコードからのスライスを斑点レコードへ入れ、
呼出し側のルーチンへ戻る。もし縁部が判断ブロック63
2において充分に対処されるものと判定されるならば、
プログラムはブロック636へ進み、オープンリストのデ
ータ・タイプをリセットして成長する形状が台形である
ことを示し、ブロック637へ進む。ブロック637において
は、GROW BRANCHが未知のレコードを台形レコードとし
てリセットし、次いでブロック638において、ブロック6
37においてリセットされた台形のレコードにおける台形
のエントリを開始する。プログラムは次に、ブロック63
9に示されるようにオープンリストのレコードを更新し
て台形を成長させ、呼出し側のルーチンへ戻る。
もしブロック628においてデータ・タイプが未知であ
ったことが判定されたならば、残る唯一の可能性はその
時の成長する分岐の最も低い部分の形状が斑点であるこ
とであり、GROW BRANCHはこの場合ブロック640へ進み、
この分岐の前後の縁部の第2の消長量を計算し、次いで
判断ブロック641へ進み、これら2つの第2の消長量が
共に予め定めた制限値よりも小さいかどうかを判定し
て、前後の縁部が「充分に対処されている」かどうかを
判定する。もしこれら縁部がそうでなければ、プログラ
ムはブロック642へ進み、スライスBを成長する斑点の
レコードに加算する。もし判断ブロック641の判定が肯
定ならば、これは斑点の縁部が直線になることを意味
し、その結果ブロック643に示されるように、斑点のレ
コードは閉じられ、新しい台形の一部を構成し得る斑点
レコードにおけるスライスが除去される。プログラムは
その時ブロック644へ進み、新しい台形のレコードを生
成し、ブロック645へ進み、最後の斑点に対する新しい
台形レコードにアドレス・ポインタを生成することによ
り新しい台形レコードを前の斑点のレコードにリンク
し、次いでブロック646へ進み、オープンリストのレコ
ードを更新して新しい台形の成長を容易にさせる。次い
でプログラムは呼出し側のルーチンへ戻る。
GROW BRANCHサブルーチンを要約すれば、METAGRABに
より生成されたメタ対象の境界を正確かつ充分に記述す
る台形が生成される。台形が「認識」される方法は、非
直線領域に対して生成されるMETAOBJECTの成長する分岐
の左右の両境界を「監視」することによる。両方の境界
が完全に直線状を呈する限り、GROW BRANCHHは台形を成
長させ続ける。前縁部または後縁部のいずれかの境界が
充分に非直線状に挙動を呈する時、前後の縁部の成長終
りを形成するその時の境界座標即ちその時のスライスの
終端点は台形の底部として記録される。成長する分岐の
前後の縁部の境界の直線状は、(1)成長する分岐の添
付されるスライス間の長さの変化を計算しテストするこ
とにより、(2)下式により与えられる瞬間的な第2の
累積消長量を計算することにより監視される。即ち、 Δ2X=ΔX(MAX)−ΔX(MIN) また、(3)下式により与えられる低い周波数の累積消
長量を計算することにより監視される。即ち、 もし前後縁部の境界が共に前述の3つのテストに対す
る予め選定された最大限界値を満たすならば、両方の縁
部は直線状と見做され、分岐は成長する台形であり続け
る。テスト(1)の長さの変化に対するこの時の限界値
は、縁部が直線状と見做されるためには約10乃至15ピク
セルである。テスト(2)の第2の消長量に対するこの
時の限界値は縁部が直線状と見做されるためには2乃至
3ピクセルである。テスト(3)の限界値は依然実験中
である。
成長する分岐の前後の縁部の第2の消長量の検査のた
め用いられるサブルーチンは、DX−DDXと呼ばれ、第15
図に示されている。このサブルーチンは、形状の前また
は左側の縁部のX座標における行単位の変化量であるDX
0と、成長する分岐の後または右側の縁部における行単
位の変化量であるDX1の最小および最大の値を見出す。
前縁部の第2の消長量の値は、DX0MAX−DXMINであるDDX
0である。成長する分岐の後の縁部の第2の消長量はDDX
1であり、DX1MAX−DX1MINに等しい。
第15図のDX−DDXサブルーチンには、どの演算がその
時必要とされるかに従って、ラベル520,522または524を
介して入ることができる。ブロック521においては、第
1の消長量が計算されて「大域テーブル」に格納され、
その結果DD−DDXと呼ぶルーチンがこれらの結果に対し
てアクセスする。第15図のブロック523は第1の消長量
の最小および最大の値を計算する。第15図のブロック52
5においては、DX0の最小値全体およびDX0の最大値全体
が計算されて格納され、同様に、DX1の最小値および最
大値全体が計算されて格納される。第2の消長量はDX0
の最大値および最小値全体の間の差として計算される。
成長する分岐の後縁部の第2の消長量のD5はDX1の最大
および最小値間の差である。
次に第16図においては、METAGRAB FCN8−10サブルー
チンにより呼出されるCONVERGE(収束)サブルーチンに
ラベル530を介して入り、判断ブロック531へ進む。この
サブルーチンはこの時のスライスBがこの時のオープン
リスト・ノードの1つ以上のスライスAに対して添付さ
れる時呼出される。
ブロック531は、B CONNECTと呼ばれる変数が「1」に
等しいかどうかを判定する。もしこの判定が肯定なら
ば、これは、Bが収束となるため少なくとも2回繋げら
れねばならないため、収束レコードが未だ生成されなか
ったことを意味する。もしB CONNECTが「1」に等しく
なければ、CONVERGEサブルーチンはブロック543へ進
み、A CONNECT,B CONNECT,COANVERGENCY COUNT(収束カ
ウント)と呼ばれる変数、および他の色々なカウンタを
更新する。サブルーチンはこの時ブロック544へ進み、
スライスBにより生成されるこの時の収束と繋がれる全
ての分岐に対する分岐レコードを閉じ、これら分岐をこ
の時の収束レコードにリンクし、次いで呼出し側サブル
ーチンへ戻る。
もしB CONNECTが「1」に等しければ、サブルーチン
はブロック532へ進み、新しい収束レコードを生成し、
ブロック533へ進む。
もし判断ブロック533の判定が肯定ならば、サブルー
チンはブロック534へ進んで「特殊な場合(特殊ケー
ス)」のサブルーチンを実施するが、この特殊な場合と
はA1が収束または拡散スライスであるならば、この時の
収束レコードがこの収束または拡散スライスと連係され
ることである。
もし判断ブロック533の判定が否定ならば、CONVERGE
サブルーチンは前のスライスAと対応する分岐データ・
タイプについて分類機構を実施して、前の形状が未知の
タイプ(UNK)、斑点(BLOB)未知の台形(UTR)、ある
いは台形(TRAP)のどれかであることを示す。この時、
サブルーチンはブロック539へ進み、スライスBに対す
る収束のラインの終端点を見出す。次いでサブルーチン
はブロック540へ進んで収束レコード・フィールドをセ
ットアップし、次いでブロック541へ進み、最後のスラ
イスであるスライスBに対する新しい分岐を生じ、新し
い分岐に対するオープンリストのレコードを修飾する。
この時プログラムはブロック542へ進み、収束レコード
変数を更新し、ブロック543へ進み、A CONNECTED,B CON
NECTED,CONVERGENCY COUNT,およびRECORD COUNTを更新
し、ブロック544へ進み、第12A図のEND BRANCHを実行す
ることによりこれがどのタイプであるかに従ってこの分
岐を終る。
次に第17図においては、METAGRAB FCN1,3および4サ
ブルーチンにより呼出されるDIVERGE(拡散)サブルー
チンにラベル550を介して入り、判断ブロック551へ進
み、A CONNECTが「1」に等しいかどうかを判定する。
もしA CNNECTが「1」に等しければ、これは発散が丁度
生じたことを意味するが、スライスAが丁度一旦繋がれ
たためである。従って、ブロック552におけるように、
拡散レコードの生成を含む特殊な動作をとらねばならな
い。
もしA CONNECTが「1」に等しくなければ、DIVERGEサ
ブルーチンはブロック565へ進み、次のB1,B2等に対する
NEW BRANCHを実行することにより新しい分岐を生じて戻
る。
もしA CONNECTが「1」に等しければ、これは拡散が
丁度始まりサブルーチンがブロック552において拡散レ
コードを生成することを意味する。拡散レコードの生成
は、(GET MEMと呼ばれるサブルーチンの実行により)
使用できるメモリーから64バイトのレコードを取得して
これをフォーマット化することを含む。次いでプログラ
ムはバッファ553へ進み、前のスライスBが収束レコー
ドであったかどうかを判定する。もし判断ブロック553
の判定が肯定ならば、プログラムはブロック554へ進
み、この時の拡散レコードを前の収束レコードにリンク
する機能を行い、次いでブロック562へ進む。
もしブロック553の判定が否定ならば、プログラムは
前の分岐(前のスライスBと対応する)をそれぞれ照合
番号555,556,557および558により示されるように、カテ
ゴリUNK,BLOB,UTR,又はTRAPの1つに分類し、最後に
(ブロック565において)NEW BRANCH(第10図)の実行
によりその時のスライスBを含む新しい分岐を生じる。
次いでDIVERGEはブロック559へ進み、スライスAによ
り構成される拡散のラインの終端点を見出し、次いでブ
ロック560に示されるように、拡散レコード素子を初期
化する。次いで、サブルーチンはブロック561へ進み、
スライスB1に対して新しい分岐を生じ、これに従ってこ
の時のオープンリストを修飾する。(他のスライスB3…
…BNはDIVERGEサブルーチンに対する他の呼出しと同時
に処理される。)次いでサブルーチンはブロック562へ
進み、種々の拡散と関連する大域ポインタおよびカウン
タを更新する。この時、サブルーチンはブロック563へ
進み、B USED,A CONNECT,B CONNECT,DIVERGENCE COUNT
(拡散すなわち発散カウント、RECORD COUNT(レコード
・カウント)を更新し、次いでブロック565に進み、NEW
BRANCH(第10図)の実行によりスライスB2を含む新し
い分岐を生じる。
前述のように、第20図のMETACTRLサブルーチンは上記
のFILLFRAME,FILLHORIZ,FILLVERT,およびMETAGRABサブ
ルーチンの動作を整合する。METACTRLサブルーチンには
ラベル350を介して入り、ブロック351へ進み、第7図の
FILLFRAMEサブルーチンを実行してフレーム全体を埋め
る。フレームが埋められた後、METACTRLサブルーチンは
ブロック352へ進み、フレームの最初の行に対してFILLH
ORIZを実行し、例えば3または4ピクセルよりも接近し
た同じ行のスライス間の間隙を削除する。(実際にFILL
FRAMEを実行することは、全ての分岐の適正な左右の配
置および全ての分岐における適正な垂直方向の配列が文
書における最初に走査された対象の形状と対応するよう
に、第4A図のOBGRABルーチンによりフレーム内に形成さ
れる対象のスライスを「注入する」。) この時、METACTRLサブルーチンはブロック353へ進
み、フレームの行1に対してFILLHORIZサブルーチンを
実行し、再び小さな3または4ピクセル巾の間隙を埋め
る。次に、サブルーチンはブロック354へ進み、第8図
のFILLVERTサブルーチンを初期化し、次いで第9図のME
TAGRABサブルーチンをブロック355において初期化す
る。FILLVERTおよびMETAGRABの初期化は、セットされね
ばならない種々の大域変域があるため、各対象毎に行わ
れる。オープンリストは、対象の最初の行を含むように
開始されなければならない。FILLVERTおよびMETAGRABの
双方においては、初期化のための個々のエントリ点があ
る。METAGRABの場合には、対象ヘッダ・レコードから始
められる。METACTRLサブルーチンはFILLFRAME,FILLHORI
Z,FILLVERT,およびMETAGRABを同期させる。METACTRLサ
ブルーチンは最初OBGRABにより形成された対象からデー
タを充分に取得してその時のフレームを完全に1ステッ
プで埋める。
これが行われると、METACTRLは埋められたフレームの
最上位から始まり、同期された方法でライン単位に進行
して、以下に述べるようにFILLHORIZ,FILLVERTおよびME
TAGRABを呼出す。記述する手法は、これら機構の各々に
対して個々のループを用いる必要を減らす利点を有し、
その結果必要とされるメモリーの大きさを節減し、また
速度の増加をもたらすことになる。
次に、METACTRLサブルーチンはブロック356へ進み、
フレームの行1に対して第8図のFILLAVERTサブルーチ
ンを実行する。このため、METACTRLはフレームの充填を
行い、METAGRABプロセスと同期してその直前に、一時に
1ラインづつ全ての小さな水平および垂直の間隙を除去
する。
次いでMETACTRLサブルーチンがブロック356から判断
ブロック357へ移り、この時の対象が更に処理状態に止
まるかどうかを判定する。
FILLHORIZは、FILLVERTサブルーチンの最適の効果を
得るため、FILLVERTの前にフレームの各行毎に実行され
る必要があることに注意されたい。ブロック355におけ
るMETAGRABの初期化は、単に、行0のスライスおよび初
期化された大域の変数を含むように対象のヘッダ・レコ
ードが生成されオープンリストを初期化する必要がある
ことを意味するに過ぎない。一旦この初期化が行われる
と、METACTRLは判断ブロック357へ進み、これ以上の対
象が処理される状態に止まるかどうかを判定する。これ
は、対象の必要を最初に格納して対象が処理されるに伴
ない減分されるカウンタにより判定される。もし対象が
完全にその時のフレームで処理されるならば、サブルー
チンはラベル359を経て戻る。
さもなければ、サブルーチンは判断ブロック358へ進
んで、その時のフレームがこれ以上処理される状態に止
まるかどうかを判定する。もしこの判定が否定ならば、
サブルーチンはブロック363へ進み、次のフレームにつ
いてFILLFRAMEを実行し、判断ブロック357へ戻る。もし
判断ブロック358の判定が肯定ならば、プログラムはブ
ロック361に示されるようにブロック360へ進み、1行に
ついて水平間隙を充填し、フレームの行について垂直間
隙を充填し、またブロック362に示されるようにMETAGRA
Bを実行する。このMETAGRABサブルーチンは常にFILLHOR
IZおよびFILLVERTサブルーチンの後の予め定めた行数に
あり、そのためMETAGRABは「フィルタ」されたデータの
みについて動作する。METAGRABが実行された後、METAGR
ABサブルーチンは判断ブロック358へ戻る。
このように、OBGRABにより生成される対象から得られ
フレームに入れられて小さな水平および垂直の間隙を除
去するためフィルタされるデータについて作動するMETA
GRABサブルーチンは、元の文書から走査された対象の形
態に忠実であり、かつ対象を表わすため劇的に少ないデ
ータしか必要としないOBGRABによって生成される対象の
方向性グラフの「再構成」をもたらす結果となることが
判るであろう。
【図面の簡単な説明】
第1図は本発明が用いられる自動図形認識システムを示
すフロー図、第2図は第1図の自動図形認識システムの
ハードウェアおよびソフトウェアの両部分を更に詳細に
示す別のフロー図、第2A図は第2図のブロック2Bに示さ
れたランレングス・エンコーダを示すブロック図、第3
図は第2図に示されたシステムにより生じるあるサブル
ーチンおよびファイルを示すフロー図、第4図はOBGRAB
と呼ばれる「対象形成」ルーチンを示すフロー図、第4A
図は第4図のOBGRABサブルーチンにより呼出されるPROC
ESS ONE LINEと呼ばれるサブルーチンを示すフロー図、
第4B図は第4A図のPROCESS ONE LINEサブルーチンにより
呼出されるCLASSIFIERと呼ばれるスライス分類サブルー
チンと呼ばれる基本を示す図、第4C図乃至第4N図は生の
ランレングススライスから対象を形成するOBGRABにより
使用される時第4図の基本分類サブルーチンにより呼出
される機能サブルーチンを示すフロー図、第5図は第4
図のスライス分類サブルーチンの動作を説明する上で役
立つ図、第6図は第4図のOBGRABルーチンおよび第4A図
乃至第4L図のOBGRAB FCNサブルーチンにより生のランレ
ングス・データから形成される「対象」を構成する連係
されたリストの連係リストを示す図、第7図はFILLFRAM
Eと呼ばれるサブルーチンを示すフロー図、第7A図は第
7図のサブルーチンにより充填されるフレームにおける
スライスの正しい左から右の配置を生じる第7図のブロ
ック209と対応するサブルーチンを示すフロー図、第8
図はFILLVERTと呼ばれるサブルーチンを示すフロー図、
第8A図乃至第8P図は対象のスライス間の小さな垂直の間
隙を充填する第8図のFILLVERTサブルーチンにより呼出
されるフロー図、第9図は対象のフィルタされたデータ
からソフトウェアの対象を再構成するMETAGRABと呼ばれ
るルーチンを示すフロー図、第9A図乃至第9L図は第9図
のMETAGRABルーチンの間実行される分類サブルーチンに
より呼出される分類機能サブルーチンを示すフロー図、
第10図は第9図のMETAGRABルーチンにより実行されるNE
W BRANCHと呼ばれるサブルーチンを示すフロー図、第11
図は第9図のMETAGRABルーチンにより実行されるCREATE
BRANCHと呼ばれるサブルーチンを示すフロー図、第12
図は第9図のMETAGRABルーチンにより実行されるDEL EN
TSと呼ばれるサブルーチンを示すフロー図、第12A図は
第9図のMETAGRABルーチンにより実行されるEND BRANCH
と呼ばれるサブルーチンを示すフロー図、第13図は第9
図のMETAGRABルーチンにより実行されるINITMGと呼ばれ
るサブルーチンを示すフロー図、第14図、第14A図およ
び第14B図は第9図のMETAGRABルーチンにより実行され
るGROW BRANCHと呼ばれるサブルーチンのフロー図を構
成する図、第15図は第9図のMETAGRABルーチンにより実
行されるDX DDXと呼ばれるサブルーチンを示すフロー
図、第16図は第9図のMETAGRABルーチンにより実行され
るCONVERGEと呼ばれるサブルーチンを示すフロー図、第
17図は第9図のMETAGRABルーチンにより実行されるDIVE
RGEと呼ばれるサブルーチンのフロー図、第18図はオー
プンリスト・ノードのデータ・フィールドを示す図、第
19図は「ホール・レコード」および「オープンリストの
レコード」の説明の際役立つ図、および第20図はFILLFR
AME,FILLHORIZ,FILLVERTおよびMETAGRABルーチンの実行
を組合せるMETACTRALと呼ばれる制御ルーチンを示す図
である。 1……オリジナル線図、2……画像スキャナー 2B……ランレングス・データ・エンコーダ 2C……制御回路、2D……ピクセル・カウンタ 2E……列カウンタ回路 2F……FIFO(先入れ先出し)バッファ 2G……バス、2H……バス制御回路 4……自動図面認識システム 6……ワーク・ステーション 8……グラフィックス・モニター 9……キーボード、10……マウス 11……フロッピー・ディスク 12……ハード・ディスク、13……ペン・プロッタ 18……対象分類プログラム 19……OBGRABルーチン 20……METAGRABルーチン 22……METAGRABルーチン 25……VECGENベクトル生成プログラム 26……文字認識システム 27……ベクトル・ファイル 34,35……サブルーチン 36……FILLVERTルーチン 39……METAFORMプログラム。

Claims (21)

    (57)【特許請求の範囲】
  1. 【請求項1】画像の連続する行ラインを走査することに
    よって得られる直列ピクセル・データをコンパイルする
    方法であって、画像が少なくとも1つの対象(オブジェ
    クト)を有し、該対象が透明ピクセルによって完全に囲
    まれている複数の暗いピクセルを含むという特性を有
    し、各対象が1つのオープンリストに対応している、コ
    ンパイル方法において、 (a)直列ピクセル・データを符号化して、各々が複数
    の連続するピクセルを含む複数のスライスを含んでいる
    ランレングス・データを生成するステップと、 (b)画像の第1番目の行ライン上の複数のスライスを
    含む第1のオープンリストを作成するステップと、 (c)前記第1のオープンリストに入れられた内の最終
    行ラインである第i番目(i=1,2,3,・・・)の行ライ
    ンの任意の第1のスライスが、次に入れられる第i+1
    番目の行ラインの任意の第2のスライスに重なっている
    か否かを判定するステップと、 (d)前記第1のスライスが前記第2のスライスに重な
    っている場合に、前記第1のスライスが、前記第2のス
    ライス以外の前記第i+1番目の行ラインの他のスライ
    スに重なっているか否かを判定するステップと、 (e)前記第1のスライスが前記第2のスライスに重な
    っており、かつ前記第1のスライスが前記他のスライス
    に重なっていない場合に、前記第1のオープンリスト中
    の前記第1のスライスを含む第1の列に第2のスライス
    を添付して、該第1の列を成長させるステップと、 (f)前記第1のスライスが前記第2のスライスに重な
    っており、かつ前記第1のスライスが他のスライスに重
    なっている場合に、前記第1のオープンリストに新たな
    第2の列を生成して、該第2の列に前記第2のスライス
    を入れるステップと からなり、前記画像のすべてのスライスが前記第1のオ
    ープンリストに記憶されるまで、上記ステップ(c)〜
    (f)を反復実行することを特徴とするコンパイル方
    法。
  2. 【請求項2】請求項1記載のコンパイル方法において、
    該方法はさらに、 前記第1のスライスが前記第2のスライスに重ならない
    場合は、画像の他の対象に対応する他の第1のオープン
    リストを作成して、該他の第1のオープンリストに前記
    第2のスライスを入れるステップ を含んでいることを特徴とするコンパイル方法。
  3. 【請求項3】請求項2記載のコンパイル方法において、
    該方法はさらに、 前記第1のオープンリストに入れられた前記第i番目の
    行ラインのスライス及び前記他の第1のオープンリスト
    に入れられた前記第i番目の行ラインのスライスの双方
    が、前記第i+1番目の行ラインの1つのスライスに重
    なっている場合に、前記他の第1のオープンリストを前
    記第1のオープンリストに統合するステップ を含んでいることを特徴とするコンパイル方法。
  4. 【請求項4】請求項1〜3いずれかに記載のコンパイル
    方法において、該方法はさらに、フレーム中のスライス
    間の微細な水平間隙を充填するステップを含み、該ステ
    ップは、 各行ラインにおいて、隣接するスライス間の水平間隙を
    検出するステップと、 これら水平間隙の幅が所定値よりも小さい場合に、該水
    平間隙の一方側のスライスを延長して他方側のスライス
    を結合するステップと を含んでいることを特徴とするコンパイル方法。
  5. 【請求項5】請求項1〜4いずれかに記載のコンパイル
    方法において、該方法はさらに、画像のスライスによっ
    て形成された微細な垂直間隙を充填するステップを含
    み、該ステップは、 (1)画像の第1番目の行ラインにおける複数のスライ
    スを含む第2のオープンリストを作成するステップと、 (2)前記第2のオープンリストに入れられた内の最終
    行ラインである第j番目(j=1,2,3,・・・)の行ライ
    ンの任意の第1のスライスが、次に入れられる第j+1
    番目の行ラインの任意の第2のスライスに重なっている
    か否かを判断するステップと、 (3)上記ステップ(2)において重なっていると判定
    した場合に、 (イ)前記第1のスライスが、前記第2のスライス以外
    の前記第j+1番目の行ラインの他のスライスに重なっ
    ているか否かを判定するステップと、 (ロ)前記ステップ(イ)において重なっていないと判
    定した場合に、前記第2のオープンリスト中の前記第1
    のスライスを含む第1の列に前記第2のスライスを添付
    して、該第1の列を成長させるステップと、 (ハ)前記(イ)において重なっていると判定した場合
    に、前記第2のオープンリストに新たな第2の列を生成
    して、該第2の列に前記第2のスライスを入れるステッ
    プと、 (ニ)前記第2のオープンリスト中の共通のスライスか
    ら拡散された前記第1及び第2の列を成長することによ
    って形成された2つの側壁の垂直方向の高さを検出して
    記憶するステップと、 (ホ)前記第2のオープンリスト中の前記第1または2
    の列に入れられる前記第j+1番目の行ラインのスライ
    スが、前記第1の列に入れられた前記j番目の行ライン
    のスライス及び第2の列に入れられた前記第i番目の行
    ラインのスライスの双方と重なっている場合に、垂直間
    隙が形成されたことを判定するステップと、 (ヘ)前記垂直間隙の側壁の高さが所定値よりも小さい
    場合に、該側壁の一方を形成するスライスを、該側壁の
    他方を形成する対応スライスまで延長するステップと を含んでいることを特徴とするコンパイル方法。
  6. 【請求項6】請求項1〜5いずれかに記載のコンパイル
    方法において、該方法はさらに、フレームに記憶される
    データを単純化するステップを含み、該単純化するステ
    ップは、 [1]画像の第1番目の行ラインにおける複数のスライ
    スを含む第3のオープンリストを作成するステップと、 [2]前記第3のオープンリストに入れられた内の最終
    行ラインである第k番目(k=1,2,3,・・・)の行ライ
    ンの任意の第1のスライスが、次に入れられる第k+1
    番目の行ラインの任意の第2のスライスに重なっている
    か否かを判断するステップと、 [3]前記ステップ[2]において重なっていると判定
    した場合に、 [イ]前記第1のスライスが、前記第2のスライス以外
    の前記第k+1番目の行ラインの他のスライスに重なっ
    ているか否かを判定するステップと、 [ロ]前記[イ]において重なっていないと判定した場
    合に、前記第3のオープンリスト中の前記第1のスライ
    スを含む第1の列に前記第2のスライスを添付して、該
    第1の列を成長させるステップと、 [ハ]前記[イ]において重なっていると判定した場合
    に、前記第3のオープンリストに新たな第2の列を生成
    して、該第2の列に前記第2のスライスを入れるステッ
    プと、 [4]前記[2]において重なっていないと判定した場
    合に、他の第3のオープンリストを作成して、該他の第
    3のオープンリストに前記第2のスライスを入れるステ
    ップと、 [5]前記第3のオープンリストの成長するそれぞれの
    列の前縁及び後縁を結ぶ傾斜の変化を検出し、該成長す
    る列が台形で表される場合には、該台形の4つのコーナ
    の座標を台形レコードに記憶し、それ以外の場合は、列
    の非線形終端部の各スライスを斑点レコードに記憶する
    ステップと を含んでいることを特徴とするコンパイル方法。
  7. 【請求項7】請求項6記載のコンパイル方法において、
    該方法はさらに、 前記斑点レコード又は台形レコードの各々を他のレコー
    ドにリンクするための、これらレコードにおけるアドレ
    ス・ポインタを記憶するステップ を含んでいることを特徴とするコンパイル方法。
  8. 【請求項8】請求項6または7記載のコンパイル方法に
    おいて、該方法はさらに、 前記第3のオープンリストの前記第1または第2の列に
    入れられた前記第k番目の行ラインのスライスが、前記
    第1の列に入れられる前記第k+1番目の行ラインのス
    ライス、及び前記第2の列に入れられる前記第k+1番
    目の行ラインのスライスの双方と重なっている場合に、
    拡散レコードを生成するステップ を含んでいることを特徴とするコンパイル方法。
  9. 【請求項9】請求項6〜8のいずれかに記載のコンパイ
    ル方法において、該方法はさらに、 前記第3のオープンリストの前記第1または2の列に入
    れられる前記第k+1番目の行ラインのスライスが、前
    記第1の列に入れられた前記k番目の行ラインのスライ
    ス、及び前記第2の列に入れられた前記第k番目の行ラ
    インのスライスの双方と重なっている場合に、収束レコ
    ードを生成するするステップ を含んでいることを特徴とするコンパイル方法。
  10. 【請求項10】画像の連続する行ラインを走査すること
    によって得られる直列ピクセル・データをコンパイルす
    る方法において、 (a)直列ピクセル・データを符号化して、各々が複数
    の連続するピクセルを含む複数のスライスを生成するス
    テップと、 (b)第1のオープンリストを作成し、該第1のオープ
    ンリストに画像の第1番目の行ラインのスライスを挿入
    するステップと、 (c)前記第1のオープンリストに挿入された内の最後
    行ラインにおけるスライス、及び次に挿入される行ライ
    ンにおけるスライスを、第1のスライス分類付手段によ
    り操作することにより、 前記次の行ラインのスライスを前記第1のオープンリス
    トに入れられた最終行ラインのスライスに添付して該第
    1のオープンリストの列を成長させるか、 前記第1のオープンリストに新しい列を生成して、該新
    しい列に前記次の行ラインのスライスを挿入するか、ま
    たは、 前記第1のオープンリストの列の成長を終了させるか を、前記第1のオープンリストに挿入された最終行ライ
    ンのスライスと前記次の行のスライスとの間の関係に応
    じて実行するステップと、 (d)画像の各行ラインに対して前記ステップ(c)を
    実行するステップと、 (e)前記第1のオープンリストからのスライス・デー
    タの一部分をフレームに入力するステップと、 (f)前記フレーム中のスライス間の微細な水平間隙に
    またがってスライスを延長することによって、該微細な
    水平間隙を除去するステップと、 (g)第2のオープンリストを生成して、該第2のオー
    プンリストにフレームの第1の行ラインから順次各行ラ
    インのスライスを挿入することにより、微細な垂直間隙
    を除去する手段と、 (h)前記第2のオープンリストに挿入された内の最終
    行ラインにおけるスライス、及び次に挿入される行ライ
    ンにおけるスライスを、第2のスライス分類付手段によ
    り操作することにより、 前記次の行ラインのスライスを前記第2のオープンリス
    トに入れられた最終行ラインのスライスに添付して該第
    2のオープンリストの列を成長させるか、 前記第2のオープンリストに新しい列を生成して、該新
    しい列に前記次の行ラインのスライスを挿入するか、ま
    たは、 前記第2のオープンリストの列の成長を終了させるか を、前記第2のオープンリストに挿入された前記最終行
    ラインのスライスと前記次の行のスライスとの間の関係
    に応じて実行するステップと、 (i)拡散を形成する列の高さと前記第2のオープンリ
    スト中に形成された列の間隙とを判定し、所定の高さ以
    下の間隙を、該間隙の一方側の側壁を囲むスライスを延
    長して該スライスが該間隙の他方側の側壁に隣接する対
    応スライスを含むようにすることにより、該間隙を充填
    するステップと、 (j)前記第2のオープンリストのデータを、台形レコ
    ード及び斑点レコードをリンクしたアセンブリに単純化
    するステップであって、 (i)前記第3のオープンリストを作成して、該第3の
    オープンリストに前記第2のオープンリスト中の第1番
    目の行ラインから順次各行ラインのスライスを挿入し、 (ii)前記第3のオープンリストに挿入された内の最終
    行ラインにおけるスライスと次に挿入する行ラインにお
    けるスライスとを、第3のスライス分類付手段によって
    操作して、 前記次の行ラインのスライスを前記第3のオープンリス
    ト中に挿入された最終行ラインのスライスに添付して該
    第3のオープンリストの列を成長させるか、 前記第3のオープンリストに新しい列を形成して、該新
    しい列に前記次の行ラインのスライスを挿入するか、ま
    たは 前記第3のオープンリストの列の成長を終了させるか を、前記第3のオープンリストに挿入された最終行ライ
    ンのスライスと前記次の行ラインのスライスとの関係に
    応じて実行し、 (iii)前記第3のオープンリストの列の線形性を検出
    し、 (iv)列の前縁端及び後縁端がほぼ線形である場合に
    は、得られた台形の4つのコーナの座標を台形レコード
    に入れ、 (v)列の前縁端または後縁端が線形でない場合には、
    非線形前縁端又は後縁端に隣接するすべてのスライスを
    斑点レコードに入れ、さらに (vi)斑点レコード又は台形レコードからアドレス・ポ
    インタを隣接する列のレコード、あるいは台形または斑
    点レコードに供給する ことからなる単純化ステップと を含んでいることを特徴とするコンパイル方法。
  11. 【請求項11】画像の連続する行ラインを走査すること
    によって生成される直列ピクセルデータをコンパイルす
    るためのコンパイル装置において、 (a)直列ピクセルデータを符号化して、各々が複数の
    連続するピクセルを含む複数のスライスを生成する手段
    と、 (b)第1のオープンリストを生成して、該第1のオー
    プンリストに画像の第1番目の行ラインのスライスを挿
    入する手段と、 (c)前記第1のオープンリストに挿入された内の最終
    行ラインにおけるスライスと次に挿入する行ラインにお
    けるスライスとを、第1のスライス分類付手段によって
    操作して、 前記第1のオープンリストに挿入された最終行ラインの
    スライスに次の行ラインのスライスを添付して、該第1
    のオープンリストの列を成長させるか、 前記第1のオープンリストに新しい列を生成して、該新
    しい列に前記次の行ラインのスライスを挿入するか、ま
    たは 前記第1のオープンリストの列の成長を終了させるか を、前記第1のオープンリストに挿入された最終行ライ
    ンのスライスと前記次の行ラインのスライスとの間の関
    係に応じて実行する手段と、 (d)前記第1のオープンリストからのスライスの一部
    を、フレームに入れる手段と、 (e)前記フレーム中のスライス間の微細な水平間隙に
    跨がってスライスを延長することにより、該水平間隙を
    除去する手段と、 (f)第2のオープンリストを生成して、該第2のオー
    プンリストにフレームの第1番目の行ラインから順次各
    行ラインのスライスを挿入することにより、微細な垂直
    間隙を除去する手段と、 (g)前記第2のオープンリストに挿入された内の最終
    行ラインにおけるスライスと次に挿入される行ラインに
    おけるスライスとを、第2のスライス分類付手段によっ
    て操作して、 前記第2のオープンリストに挿入された前記最終行ライ
    ンのスライスに前記次の行ラインのスライスを添付し
    て、該第2のオープンリストの列を成長させるか、 前記第2のオープンリストに新しい列を生成して、該新
    しい列に前記次の行ラインのスライスを挿入するか、ま
    たは 前記第2のオープンリストの列の成長を終了させるか を、前記第2のオープンリストに挿入された前記最終行
    ラインのスライスと前記次の行ラインのスライスとの間
    の関係に応じて実行する手段と、 (h)拡散を形成する列の高さと前記第2のオープンリ
    ストに形成された列の垂直間隙とを判定する手段、前記
    第2のオープンリスト中に形成された所定の高さ以下の
    垂直間隙を、該垂直間隙の一方の側壁に隣接するスライ
    スを延長して、他方の側壁に隣接する対応スライスを含
    むようにすることにより、充填する手段と、 (i)前記第2のオープンリストのデータを台形レコー
    ド及び斑点レコードのアセンブリに単純化する手段であ
    って、 (i)第3のオープンリストを生成して、該第3のオー
    プンリストに第2のオープンリスト中の第1番目の行ラ
    インから順次各行ラインのスライスを挿入する手段と、 (ii)前記第3のオープンリストに挿入された内の最終
    行ラインにおけるスライスと次に挿入される行ラインに
    おけるスライスとを、第3のスライス分類付手段によっ
    て操作し、 前記次の行ラインのスライスを前記第3のオープンリス
    トに挿入された最終行ラインのスライスに添付して、該
    第3のオープンリストの列を成長させるか、 前記第3のオープンリストに新しい列を生成して、該新
    しい列に前記次の行ラインのスライスを挿入するか、ま
    たは第3のオープンリストの分岐の成長を終了させるか を、前記第3のオープンリストに挿入された前記最終行
    ラインのスライスと前記次の行ラインのスライスとの間
    の関係に応じて実行する手段と、 (iii)前記第3のオープンリスト中の列の線形性を検
    出する手段と、 (iv)前記第3のオープンリストの列の前縁および後縁
    がほぼ線形である場合に、得られた台形の4つのコーナ
    の座標を台形レコードに入れる手段と、 (v)前記第3のオープンリストの列の前縁および後縁
    がほぼ線形でない場合に、該非線形前縁または後縁に隣
    接するすべてのスライスを斑点レコードに入れる手段
    と、 (vi)前記斑点レコードまたは台形レコードからアドレ
    ス・ポインタを、隣接する列の台形レコードまたは斑点
    レコードに供給する手段と からなる単純化手段と を含んでいることを特徴とするコンパイル装置。
  12. 【請求項12】画像の一連の行ラインを走査することに
    よって生成される直列ピクセルデータをコンパイルする
    ためのコンパイル装置において、 (a)前記直列ピクセルデータを符号化して、各々が複
    数の連続するピクセルを含む複数のスライスを含んでい
    るランレングスデータを生成する手段と、 (b)画像の第1番目の行ラインの複数のスライスを挿
    入した第1のオープンリストを生成する手段と、 (c)前記第1のオープンリスト中に挿入された内の最
    終行ラインの任意の第1のスライスが、次に挿入される
    行ラインの第2のスライスに重なるか否かを判断する手
    段と、 (d)前記第1のスライスが、前記第2のスライスに重
    なり、かつ前記第2のスライス以外の前記次の行ライン
    の他のスライスに重ならない場合に、前記第1のスライ
    スに前記第2のスライスを添付することによって、前記
    第1のオープンリストの成長する列に前記第2のスライ
    スを添付する手段と、 (e)前記第1のスライスが、前記第2のスライスに重
    なり、かつ前記第2のスライス以外の前記次の行ライン
    の他のスライスに重なる場合に、前記第1のオープンリ
    ストに他の列を生成して、該他の列に前記第2のスライ
    スを入れる手段と からなることを特徴とするコンパイル装置。
  13. 【請求項13】請求項12記載のコンパイル装置におい
    て、該装置はさらに、スライス間の微細な水平間隙を充
    填する手段を含み、該手段は、 フレームに、複数のリストをリンクして構成したリンク
    ド・リストによって表される対象の上方部分を入れる手
    段と、 前記フレームの最上部の行ラインから開始して、順次各
    行ライン上の隣接するスライス間の微細な水平間隙を検
    出する手段と、 前記微細な水平間隙の一方側のスライスを延長して、該
    水平間隙の他方側のスライスと結合する手段と から構成されていることを特徴とするコンパイル装置。
  14. 【請求項14】請求項13記載のコンパイル装置におい
    て、該装置はさらに、前記フレーム中のスライスによっ
    て形成される垂直間隙を充填する手段を含み、該手段
    は、(1)前記フレームの第1番目の行ラインの複数の
    スライスを挿入した第2のオープンリストを形成する手
    段と、 (2)第2のオープンリストに挿入された内の最終行ラ
    インの任意の第1のスライスが、次に挿入すべきフレー
    ムからの行ライン、すなわち次の行ラインの任意の第2
    のスライスに重なるか否かを判断する第1の判断手段
    と、 (3)第1の判断手段において、重なると判断した場
    合、 前記第1のスライスが、前記第2のスライス以外の前記
    次の行ラインの他のスライスに重ならない場合に、前記
    第2のオープンリストの前記第1のスライスに第2のス
    ライスを添付することによって、該第2のスライスを前
    記第2のオープンリストの成長する第1の列に添付し、 前記第1のスライスが前記他のスライスに重なっている
    場合に、前記第2のオープンリストに第2の列を生成し
    て、該第2の列に前記第2のスライスを入れ、 前記第2のオープンリストの共通スライスから拡散され
    かつ成長する第1及び第2の列によって形成される側壁
    の高さをそれぞれ検出して記憶し、 前記側壁をそれぞれ形成するスライスの終端のアドレス
    ポインタを記憶し、 前記側壁の高さが所定の微小値以下の場合に、アドレス
    ・ポインタを用いて、垂直間隙の一方側の側壁を形成す
    るスライスを他方側の側壁を形成する対応スライスに延
    長して、垂直間隙を充填する 手段と を含んでいることを特徴とするコンパイル装置。
  15. 【請求項15】請求項13または14記載のコンパイル装置
    において、該装置はさらに、前記フレームのデータを単
    純化する手段を含み、該手段は、 前記フレーム中のある行ラインのスライスを挿入した第
    3のオープンリストを作成する手段と、 前記第3のオープンリストに挿入された内の最終行ライ
    ンの任意の第1のスライスが、フレーム中の次に挿入す
    べき行ライン(次の行ライン)の任意の第2のスライス
    に重なっているか否かを判断する第2の判断手段と、 前記第2の判断手段において重なっていると判断した場
    合、 前記第1のスライスが、前記第2のスライス以外の前記
    次の行ラインの他のスライスに重なっていない場合に、
    前記第3のオープンリストの前記第1のスライスに前記
    第2のスライスを添付することによって、該第3のオー
    プンリストの成長する第1の列に前記第2のスライスを
    添付し、 前記第1のスライスが、前記他のスライスに重なってい
    る場合に、前記第3のオープンリストに第2の列を生成
    して、該第2の列に前記第2のスライスを入れる 手段と、 前記第3のオープンリストの前記第1のスライスが前記
    第2のスライスに重なっていない場合は、他の第3のオ
    ープンリストを生成して、該他の第3のオープンリスト
    に前記第2のスライスを入れる手段と、 前記他の第3のオープンリストの成長する列の前縁部お
    よび後縁部の傾斜の変化を検出し、成長する列が台形で
    表される場合は、該台形の4つのコーナの座標を台形レ
    コードに記憶し、台形で表されない場合は、成長する列
    の非線形端部のスライスをそれぞれ斑点レコードに記憶
    する手段と を含んでいることを特徴とするコンパイル装置。
  16. 【請求項16】請求項15記載のコンパイル装置におい
    て、該装置はさらに、 斑点レコード及び台形レコードの一方を他方にリンクす
    るためのアドレス・ポインタを、斑点レコード又は台形
    レコードに記憶する手段 を含んでいることを特徴とするコンパイル装置。
  17. 【請求項17】請求項15記載のコンパイル装置におい
    て、該装置はさらに、 前記第2の判断手段において重なると判断し、かつ前記
    第3のオープンリストの前記第1のスライスの左側終端
    の水平座標が前記次の行ラインの前記第2のスライスの
    左側終端の水平座標よりも小さく、該第1のスライスが
    前記第2のスライス以外の前記次の行ラインの他のスラ
    イスに添付される場合に、拡散レコードを生成する手段 を含んでいることを特徴とするコンパイル装置。
  18. 【請求項18】請求項15記載のコンパイル装置におい
    て、該装置はさらに、 前記第2の判断手段において重なると判断し、かつ前記
    第3のオープンリストの前記第1のスライスの左側終端
    の水平座標が前記次の行ラインの前記第2のスライスの
    左側終端の水平座標よりも大きく、該第2のスライスが
    該第1のスライスと同一の行ラインの他のスライスに添
    付されている場合に、収束レコードを生成する手段 を含んでいることを特徴とするコンパイル装置。
  19. 【請求項19】画像の連続する行ラインを走査すること
    によって生成される直列ピクセルデータをコンパイルす
    るためのコンパイル装置において、 (a)前記直列ピクセルデータを符号化して、各々が複
    数の連続するピクセルを含む複数のスライスを生成する
    手段と、 (b)第1のオープンリストを生成して、該第1のオー
    プンリストに画像の第1番目の行ラインのスライスを挿
    入する手段と、 (c)前記第1のオープンリストに挿入された内の最終
    行ラインの任意のスライスと次に挿入される行ライン、
    すなわち次の行ラインにおける任意のスライスとを、第
    1のスライス分類付手段によって操作して、 前記第1のオープンリストに挿入された前記最終行ライ
    ンのスライスに前記次の行ラインのスライスを添付し
    て、前記第1のオープンリストの列を成長させるか、 前記第1のオープンリストに新しい列を生成して該新し
    い列に前記次の行ラインのスライスを挿入するか、また
    は 前記第1のオープンリストの列の成長を終了させるか を、前記第1のオープンリストに挿入された前記最終行
    ラインのスライスと前記次の行ラインのスライスとの間
    の関係に応じて実行する手段と、 (d)前記第1のオープンリストからのスライスの一部
    を、フレームに入れる手段と、 (e)前記フレーム中のスライス間の微細な水平間隙に
    跨がってスライスを延長することにより、該水平間隙を
    除去する手段と、 (f)第2のオープンリストを生成して、該第2のオー
    プンリストにフレーム中の第1番目の行ラインから順次
    各行ラインのスライスを挿入することにより、微細な垂
    直間隙を除去する手段と、 (g)前記第2のオープンリストに挿入された内の最終
    行ラインのスライスと次に挿入する行ライン、すなわち
    次の行ラインのスライスとを、第2のスライス分類付手
    段によって操作して、 前記第2のオープンリストに挿入された前記最終行ライ
    ンのスライスに、前記次の行ラインのスライスを添付し
    て、前記第2のオープンリストの列を成長させるか、 前記第2のオープンリストに新しい列を生成して、該新
    しい列に前記次の行ラインのスライスを挿入するか、ま
    たは 前記第2のオープンリストの列の成長を終了させるか を、前記第2のオープンリストに挿入された最終行ライ
    ンのスライスと前記次の行ラインのスライスとの間の関
    係に応じて実行する手段と、 (h)拡散を形成する列の高さと前記第2のオープンリ
    ストに形成された列の垂直間隙とを判定する手段、及び
    前記第2のオープンリスト中に形成された所定の高さ以
    下の垂直間隙を、該垂直間隙の一方の側壁に隣接するス
    ライスを延長して、該スライスが反対側の側壁に隣接す
    る対応するスライスを含むようにすることにより、充填
    する手段と を含んでいることを特徴とするコンパイル装置。
  20. 【請求項20】画像の連続する行ラインを走査すること
    によって得られる直列ピクセル・データをコンパイルす
    る方法において、 (a)前記直列ピクセル・データを符号化して、各々が
    複数の連続するピクセルを含む複数のスライスを含んで
    いるランレングス・データを生成するステップと、 (b)各々が関連するオープンリスト・レコードを含む
    複数のオープンリスト・ノードと、該オープンリスト・
    ノードにおける画像の第1番目の行ラインの複数のスラ
    イスとを含んでいる第1のオープンリストを形成し、ス
    ライスを含んでいるオープンリスト・ノードのオープン
    リスト・レコードにおけるそれぞれのスライスに関連す
    るデータを記憶するステップであって、該記憶されたデ
    ータが、各スライスの左側終端の水平座標と右側終端の
    水平座標とを含み、かつ、これらの水平座標から得られ
    る付加的データであって、後に実行されるデータ比較、
    データ判定、またはレコード生成に用いられる付加的デ
    ータを含んでいる、オープンリスト作成/データ記憶ス
    テップと、 (c)前記第1のオープンリストに挿入された内の最終
    の行ラインにおける第1のスライスのオープンリスト・
    レコードを用いて、前記第1のスライスが、次に挿入さ
    れる行ライン、すなわち次の行ラインにおける第2のス
    ライスに重なるか否か判断するステップと、 (d)前記ステップ(c)において重なると判断され、
    かつ前記第1のスライスが前記第2のスライス以外の前
    記次の行ラインの他のスライスに重ならない場合は、前
    記第1のスライスを含むオープンリスト・ノードのオー
    プンリスト・レコードにおいて、前記第2のスライスの
    左側終端の水平座標を前記第1のスライスの左側終端の
    水平座標の代わりに用い、前記第2のスライス右終端の
    水平座標を前記第1のスライスの右側終端の水平座標の
    代わりに用いることによって、前記第1のスライスに前
    記第2のスライスを添付し、それにより、前記第1のオ
    ープンリストの成長する第1の列に第2のスライスを添
    付するステップと、 (e)前記ステップ(d)により前記第1及び第2のス
    ライスを含むことになったオープンリスト・ノードのオ
    ープンリスト・レコードにおける付加的データを用い
    て、コンパイルされたピクセル・データを単純化する
    か、または成長する前記第1の列を表す斑点レコードま
    たは台形レコードを発生するステップと を含んでいることを特徴とするコンパイル装置。
  21. 【請求項21】請求項20記載のコンパイル方法におい
    て、該方法はさらに、前記ステップ(c)において重な
    ると判断され、かつ前記第1のスライスが前記次の行ラ
    インの前記他のスライスに重なる場合は、 前記第1のオープンリストに成長する第2の列を生成す
    るステップと、 前記第2のスライスの左側終端の水平座標及び右側終端
    の水平座標、並びにスライスの水平座標から得られる付
    加的データであって、後に実行されるデータ比較、デー
    タ判定、またはレコード生成に用いられる付加的データ
    を、成長する前記第2の列に入れることによって、該第
    2の列に前記第2のスライスを入れるステップと、 前記第2のスライスを含むことになったオープンリスト
    ・ノードのオープンリスト・レコード中の付加的データ
    を用いて、拡散レコードまたは収束レコードを生成する
    ステップと を含んでいるコンパイル方法。
JP63011817A 1987-02-19 1988-01-21 画像ランレングス・デ−タをコンパイルする方法及び装置 Expired - Lifetime JP2608570B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16662 1987-02-19
US07/016,662 US4821336A (en) 1987-02-19 1987-02-19 Method and apparatus for simplifying runlength data from scanning of images

Publications (2)

Publication Number Publication Date
JPS63261478A JPS63261478A (ja) 1988-10-28
JP2608570B2 true JP2608570B2 (ja) 1997-05-07

Family

ID=21778288

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63011817A Expired - Lifetime JP2608570B2 (ja) 1987-02-19 1988-01-21 画像ランレングス・デ−タをコンパイルする方法及び装置

Country Status (5)

Country Link
US (1) US4821336A (ja)
EP (1) EP0279157A3 (ja)
JP (1) JP2608570B2 (ja)
AU (1) AU589833B2 (ja)
IL (1) IL84649A0 (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4949388A (en) * 1987-02-19 1990-08-14 Gtx Corporation Method and apparatus for recognition of graphic symbols
US4817187A (en) * 1987-02-19 1989-03-28 Gtx Corporation Apparatus and method for vectorization of incoming scanned image data
US5095512A (en) * 1988-10-24 1992-03-10 Netexpress Systems, Inc. Method and apparatus for manipulating image data employing an intermediate format
US5129012A (en) * 1989-03-25 1992-07-07 Sony Corporation Detecting line segments and predetermined patterns in an optically scanned document
EP0405400A3 (en) * 1989-06-30 1992-09-02 Mita Industrial Co., Ltd. Image distinguishing device
US5153748A (en) * 1989-09-28 1992-10-06 Eastman Kodak Company Detection of gaps in scanned images
EP0423959A3 (en) * 1989-10-16 1993-03-10 Apple Computer, Inc. Recursive run array storage of data
JPH03223966A (ja) * 1989-12-26 1991-10-02 Fuji Xerox Co Ltd ファイリング装置およびそれを用いたファイル検索方法
JP2637591B2 (ja) * 1990-01-22 1997-08-06 松下電器産業株式会社 位置認識装置及びその方法
JP2766053B2 (ja) * 1990-07-30 1998-06-18 株式会社日立製作所 画像データ処理方法
US5295236A (en) * 1991-03-04 1994-03-15 Aldus Corporation Applying traps to a printed page specified in a page description language format
US5542052A (en) * 1991-03-04 1996-07-30 Adobe Systems Incorporated Applying traps to a printed page specified in a page description language format
JPH04328956A (ja) * 1991-04-26 1992-11-17 Dainippon Screen Mfg Co Ltd 画像デ−タの読出し方法
JPH04343178A (ja) * 1991-05-20 1992-11-30 Sony Corp 画像処理装置
EP0536892B1 (en) * 1991-10-07 1997-02-05 Xerox Corporation Image editing system and method have improved color key editing
JP2749020B2 (ja) * 1991-11-14 1998-05-13 日立ソフトウエアエンジニアリング株式会社 ダイアグラム認識システム
US5666543A (en) * 1994-03-23 1997-09-09 Adobe Systems Incorporated Method of trapping graphical objects in a desktop publishing program
DE4415798C1 (de) * 1994-05-05 1995-08-03 Jenoptik Technologie Gmbh Verfahren und Schaltungsanordnung zur Auflösung von Äquivalenzen zeilenförmig erfaßter topologisch zusammenhängender Bildstrukturen
US5726760A (en) * 1996-04-03 1998-03-10 Oce-Nederland, B.V. Method and apparatus for converting image representation formats as well as an image production system provided with such an apparatus
US5923782A (en) * 1996-08-01 1999-07-13 Nynex Science & Technology, Inc. System for detecting and identifying substantially linear horizontal and vertical lines of engineering drawings
US6009425A (en) * 1996-08-21 1999-12-28 International Business Machines Corporation System and method for performing record deletions using index scans
US6130956A (en) * 1998-02-17 2000-10-10 Butterworth; Francis M. Continuous microbiotal recognition method
US7016536B1 (en) 1999-11-24 2006-03-21 Gtx Corporation Method and apparatus for automatic cleaning and enhancing of scanned documents
US8103104B2 (en) * 2002-01-11 2012-01-24 Hewlett-Packard Development Company, L.P. Text extraction and its application to compound document image compression
US7880750B2 (en) * 2005-01-06 2011-02-01 Zenographics, Inc. Digital image processing with inherent compression
US7817307B2 (en) 2005-01-06 2010-10-19 Zenographics, Inc. Digital image processing without rasterization
US8212216B2 (en) * 2007-03-30 2012-07-03 Halliburton Energy Services, Inc. In-line process measurement systems and methods
JP5153676B2 (ja) * 2009-02-10 2013-02-27 キヤノン株式会社 画像処理装置、画像処理方法、プログラムおよび記憶媒体
US8767240B1 (en) 2011-01-28 2014-07-01 Marvell International Ltd. Method and apparatus for encoding data to perform real-time rendering
CN109829474B (zh) * 2018-12-27 2020-12-22 北京邮电大学 一种电路图识别方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4103287A (en) * 1973-12-17 1978-07-25 Bell Telephone Laboratories, Incorporated Variable length codes for high quality image encoding
US4107648A (en) * 1976-04-12 1978-08-15 Bell Telephone Laboratories, Incorporated Scan encoding of two dimensional pictorial entities
US4183013A (en) * 1976-11-29 1980-01-08 Coulter Electronics, Inc. System for extracting shape features from an image
US4189711A (en) * 1977-11-08 1980-02-19 Bell Telephone Laboratories, Incorporated Multilevel processing of image signals
US4307377A (en) * 1979-11-09 1981-12-22 Bell Telephone Laboratories, Incorporated Vector coding of computer graphics material
DE3128794A1 (de) * 1981-07-21 1983-05-05 Siemens AG, 1000 Berlin und 8000 München Verfahren zum auffinden und abgrenzen von buchstaben und buchstabengruppen oder woertern in textbereichen einer vorlage, die ausser textbereichen auch graphik-und/oder bildbereiche enthalten kann.
JPS5837773A (ja) * 1981-08-28 1983-03-05 Fuji Electric Co Ltd 複数パタ−ン処理装置
US4499597A (en) * 1982-03-29 1985-02-12 Hughes Aircraft Company Small-object location utilizing centroid accumulation
JPS5958587A (ja) * 1982-09-29 1984-04-04 Fuji Electric Co Ltd パタ−ン処理装置
US4486784A (en) * 1982-12-27 1984-12-04 International Business Machines Corporation Image compression systems
US4603431A (en) * 1983-03-14 1986-07-29 Ana Tech Corporation Method and apparatus for vectorizing documents and symbol recognition
JPS59189469A (ja) * 1983-04-12 1984-10-27 Fujitsu Ltd 線画像のベクトル発生方式
JPS60207971A (ja) * 1984-03-31 1985-10-19 Toshiba Corp 連結成分抽出回路
ES8701398A1 (es) * 1985-05-14 1986-11-16 Intersoftware Sa Procedimiento para la lectura automatica de imagenes y aparato para la realizacion del mismo
JPH0614354B2 (ja) * 1985-09-21 1994-02-23 大日本印刷株式会社 多値画像処理方法
US4797806A (en) * 1987-02-19 1989-01-10 Gtx Corporation High speed serial pixel neighborhood processor and method
US4949388A (en) * 1987-02-19 1990-08-14 Gtx Corporation Method and apparatus for recognition of graphic symbols

Also Published As

Publication number Publication date
AU589833B2 (en) 1989-10-19
EP0279157A3 (en) 1989-11-23
EP0279157A2 (en) 1988-08-24
AU1176288A (en) 1988-09-22
IL84649A0 (en) 1988-04-29
JPS63261478A (ja) 1988-10-28
US4821336A (en) 1989-04-11

Similar Documents

Publication Publication Date Title
JP2608570B2 (ja) 画像ランレングス・デ−タをコンパイルする方法及び装置
US5048107A (en) Table region identification method
US5555362A (en) Method and apparatus for a layout of a document image
US6404936B1 (en) Subject image extraction method and apparatus
US5647021A (en) Image segmenting apparatus and methods
KR20200108609A (ko) 머신러닝 학습 데이터 증강장치 및 증강방법
CN106598846B (zh) 应用界面测试方法和装置
JP2011123895A (ja) 情報処理装置、情報処理システム、情報処理方法、情報処理プログラム及びコンピュータ読み取り可能な記録媒体
JPH10164370A (ja) 画像の階調補間方法および装置並びに画像フィルタリング方法および画像フィルタ
JP4804382B2 (ja) 画像処理方法、画像処理プログラムおよび画像処理装置
US5787196A (en) Method and apparatus for splitting connected characters into component characters
CN116167910A (zh) 文本编辑方法、装置、计算机设备及计算机可读存储介质
JP2720807B2 (ja) シナリオ編集装置
JPH11272503A (ja) プログラムのテストデータ自動生成装置
JPH09167251A (ja) アニメーション生成装置及びその方法
US6462749B1 (en) Image processing unit, image processing method, storage medium synthesizing a scenario including an object's position, size and display time
CN110245668A (zh) 基于图像识别的终端信息获取方法、获取装置及存储介质
JPH1145345A (ja) 画像処理装置
JPH05241987A (ja) 試験方法
JP2634127B2 (ja) コンピュータ・ディスプレイ・システム及び方法
JP2800205B2 (ja) 画像処理装置
KR100245337B1 (ko) 거리 영상 파일 분류 및 검색 방법 및 장치
JPH01243188A (ja) 輪郭検出装置
CN113704125A (zh) 基于图形用户界面的黑盒自动化测试方法
JP3024234B2 (ja) 文書画像の罫線抽出装置

Legal Events

Date Code Title Description
EXPY Cancellation because of completion of term