JPS61103276A - イメ−ジ拡大方法 - Google Patents

イメ−ジ拡大方法

Info

Publication number
JPS61103276A
JPS61103276A JP60194035A JP19403585A JPS61103276A JP S61103276 A JPS61103276 A JP S61103276A JP 60194035 A JP60194035 A JP 60194035A JP 19403585 A JP19403585 A JP 19403585A JP S61103276 A JPS61103276 A JP S61103276A
Authority
JP
Japan
Prior art keywords
run
row
black
white
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.)
Granted
Application number
JP60194035A
Other languages
English (en)
Other versions
JP2568493B2 (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPS61103276A publication Critical patent/JPS61103276A/ja
Application granted granted Critical
Publication of JP2568493B2 publication Critical patent/JP2568493B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4007Scaling of whole images or parts thereof, e.g. expanding or contracting based on interpolation, e.g. bilinear interpolation
    • 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/387Composing, repositioning or otherwise geometrically modifying originals
    • H04N1/393Enlarging or reducing
    • H04N1/3935Enlarging or reducing with modification of image resolution, i.e. determining the values of picture elements at new relative positions

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Image Processing (AREA)
  • Editing Of Facsimile Originals (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 以下の順序で本発明を説明する。
A、産業上の利用分野 B、開示の概要 C0従来の技術 り0発明が解決しようとする問題点 E0問題点を解決するための手段 F、実施例 Fl、全般説明(第1図) F2.重置拡大手順の説明 (第2図〜第22図) F3.水平拡大手順の説明 (第23図〜第54図) G0発明の効果 A、産業上の利用分野 本発明は2進ディジタルイメージ処理方法、詳しくはラ
ン表示形式で記憶した2進イメージデータを拡大する方
法に係る。
B、開示の概要 本発明による方法は、下記ステップを含む方法により2
進ディジタルイメージを拡大する。
(a)イメージのロー(row)を複数のラン終了表示
として記憶する(ローは白と黒のラン終了を示す値のシ
ーケンスとして表示される)。
(b)各ラン終了表示の値を変更して、水平軸上でF1
倍に拡大されるようにイメージの各ローを水平軸に沿っ
て拡大する。
(c)部分的に拡大されたイメージの行(line)の
間にローを補間して、垂直軸上でF2倍に拡大されるよ
うにイメージを垂直軸に沿って拡大する。
(d)前記ステップにより生成された。拡大寸法のイメ
ージをラン終了形式で記憶する。
本発明の方法により拡大されたイメージは、該イメージ
画素ブロックに分割し、拡大イメージの画素ブロックご
とに、縮小されたイメージの1画素を割当てる方法によ
り簡単に縮小することができる。縮小されたイメージの
各画素は各ブロックの中心の画素をとるようにセットす
ることができる。
°〜)     。、従来。技術 従来の代表的なシステムに下記のものがある。
米国特許出願第567309号(1983年12月30
日)で開示した2進イメージ拡大方法には下記ステップ
を含む。
(a)イメージをビットシーケンスで記憶する。
(b)イメージの第1の軸に沿って5ビツトのストリン
グごとに少なくとも1つの拡大ビットを挿入し、前記5
ビツトのストリングの各々を少なくとも6ビツトのスト
リングに変換する。
(c)前記ステップにより生成された各拡大ビットの値
を割当てる。
(d)イメージの第2の軸に沿った5ビツトローごとに
少なくとも1つの拡大ビットローを挿入し、イメージの
第2の軸に沿って5ビツトローの各々を少なくとも6ビ
ツトローに変換する。
(e)前記ステップにより生成された各拡大ビットの値
を割当てる。
(f)前記ステップにより生成された拡大イメージを記
憶する。
わぉ、f、□*+よイユー、や0.2□。ユカ、ア  
  1いるが、この拡大は1本発明による方法のように
ラン表示形式でイメージを操作する方法により。
第1および第2の方向で整数倍に拡大するものとは異な
る。前記特許出願による方法は、ラスク上でイメージデ
ータを操作し、挿入された画素の各々を取巻く小さな隣
接部分だけを調べて、その画素の値をいくらにすべきか
を決定するが、本発明による方法は、(直線等の)大き
な特徴がある場合に、イメージの大きな領域全体にわた
って画素を考慮し、これらの特徴の保持、またはその平
滑化を適切に行なうことができる。
米国特許第4303948号はイメージ拡大プロセスを
開示している。この拡大手順では、最初にビットマツプ
表示イメージを整数倍に拡大し。
次いで分数係数により縮小するどい)2段階のプロセス
であるという点で、本発明の方法とは異なる。拡大はビ
ットのコピーにより簡単に行なえるが、本発明では、イ
メージの各カラーのランごとにラン表示を変更して整数
倍に拡大する。
米国特許第4254409号は、任意のデータを含む編
集済みのイメージを操作するよりもむしろ、文字、数字
および簡単な図形によりページ編集を行なうように設計
されたイメージ拡大プロセスを開示している。この場合
、イメージの容体は1組の図形要素として記述し、その
各々は拡大に対応する前走査手順を要するので、イメー
ジが何を表わすかについてのいくらかの知識を前提とす
る。
米国特許第4409591号は、前記同第425440
9号に類似し、任意のイメージデータを操作するよりも
むしろ、符号化された記号(基本的には文字と数字)の
特定のセットだけを操作し、更に、前記同第42544
09号のように1文字は1組の図形要素として記述され
ているものと仮定する。この場合、拡大は、一定数の拡
大寸法中の任意の寸法で各要素を生成するのに使用でき
るドツトパターンの前走査により行なう。
米国特許第4367533号は、画素のコピーと見られ
るプロセスによるイメージの拡大を開示しているが、本
発明では、イメージの各カラーのランごとにラン表示を
変更して整数倍に拡大する。
米国特許第4357604号は、イメージではない符号
化文字に対応するドツトパターンを表示前に拡大するハ
ードウェア装置を開示している。
拡大は、1つの方向では画素をコピーし、他の方向では
画素カラム間に空間を追加して行なう。
米国特許第4267573号は、イメージを(例えば、
対数螺線座標系に)変換する操作を開示している。これ
は本発明の方法よりもずっと複雑である。
米国特許第4153896号は、イメージを、最初は1
つの方向でスケーリングし1次に他の方向でスケーリン
グする手段を開示するもので、どちらかの走査方向でイ
メージを読取るハードウェアにより実現される。大抵の
コンピュータはこのハードウェア能力を持っていないな
いから、ソフトウェアにより直接実現するのには不向き
である。
スケーリング(拡大または縮小)は任意の係数で、、、
、    Q9ft″″″hit’rta、t”7″“
784°140コピーと同等である。
D0発明が解決しようとする問題点 従って1本発明の目的は2進ディジタルイメージを拡大
する方法を提供することである。
E0問題点を解決するための手段 本発明の方法は下記ステップを含む。
(a)イメージのローを複数のラン終了表示として記憶
する(ローは白と黒のラン終了を示す値のシーケンスと
して表示する)。
(b)各ラン終了表示の値を変更し、水平軸に沿ってイ
メージの各ローをFl倍に拡大する。
(c)部分的に拡大されたイメージの行(line)の
間にローを補関し、垂直軸に沿ってイメージをF2倍に
拡大する。
(d)前記ステップにより生成した。拡大サイズのイメ
ージをラン終了形式で記憶する。
F、実施例 Fl、全般説明(第1図) 本発明は、水平および垂直の両方向で、例えば3のよう
な整数倍数により2進イメージを拡大す      す
る問題を解決する。
また1本発明の方法は、アドレス可能度は600ペル(
画素)/2.54C11あるが、解像度は約400ペル
/2.54awL、かない高解像度プリンタに印刷する
のに適合するイメージを作成する。
本発明の拡大方法は、I 8M3081のような汎用コ
ンピュータのソフトウェアで実現するのに向いている。
この方法は、(ビット形式よりも)ラン終了形式のイメ
ージデータを操作し、縁を平滑化して出力装置に合うに
よう修正し、比較的少量の処理で良好なイメージの質を
得ることができる規則を適用する。更に、この方法は、
拡大したイメージを3X3の画素ブロックに分割し、各
ブロックの中央の画素をとることにより、拡大から簡単
に縮小に転じることができるのが特徴である。
本発明による解像度変更方法は、いくらか不規則な形状
のスポットを生じる高解像度プリンタで印刷する場合の
イメージを作成するように設計されている。このような
高解像度のプリンタには、600ペル/2.54国と発
表されていても実際の解像度は、スポットの平均の大き
さの直径は2゜5401の1/600よりも大きいから
、約400ベル/2.54anしかないものがある。こ
れは、白を背景とする黒の画素の長方形は、黒を背景と
する同数の白の画素の配列を含む長方形よりも明白に大
きく見えることを意味する。従って、白および黒の領域
は、少なくともそれらが極めて小さい場合、別の処理を
する必要がある1例えば、本発明の方法では、個々の黒
の画素を2×2の黒の画素の正方形に拡大するが1個々
の白の画素は3X3の白の画素の正方形に拡大する。し
かし、この場合でも、黒のドツトは白のドツトよりもい
くらか大きく見える。
本発明の方法は、要求された入力イメージ行をラン終了
形式で供給し、(拡大された)出力イメージ行を同じラ
ン終了形式で受取る制御プログラム(後述)が存在すも
のと仮定する。I10処理を、拡大アルゴリズムとは別
個のサブルーチンに分離することにより、拡大のアプリ
ケーションに柔軟性を与える。拡大すべきイメージが米
国特許出願第571239号(1984年1月16日出
願)記載のように圧縮・符号化されている場合。
該出願に記載された伸張プロセスを用いて、ラスタイメ
ージを作成せずに、ラン終了を直接得ることができる。
入力イメージがラスタ走査(ビットマツプ)形式の場合
、イメージ行は、米国特許出願第567218号(19
83年12月30日出riIi)記載の手順により、迅
速にラン終了形式に変換することができる。同様に、出
力イメージは。
(前記米国特許出願第571239号記載のように)ラ
スタイメージを作成せずに、ラン終了情報から直接圧縮
することができる。拡大されたイメージをラスタ走査形
式で表示すべき場合、変換は、米国特許出願第5672
92号(1983年12月30日出願)記載の方法によ
り行なうことができる。ラン終了形式のデータを作成ま
たは使用する他のどんな手順をも入出力手順で用いるこ
とができる。
解像度変更に用いるラン終了表示は1組の半ワードを含
む、半ワードの16ビツトは、正の変位’ %、   
    として32Kまでの幅を有するイメージを表わ
すのに適している1行バッファの各々の最初の半ワード
は、ラン終了データのバイト数とカウントの2バイトと
の和(すなわち、そのバッファにあるデータの合計バイ
ト数)を示し、それに続いて、3つのOのラン終了、任
意数の白/黒のラン終了の対、ならびに最後の黒のラン
終了の2つの追加コピーが示される。イメージのローが
黒のランで開始する場合、最初の白のラン終了はOで表
示される。イメージのローが白のランで終了する場合。
最後の・黒のラン終了は、最後の白のラン終了と同じで
あるので、この場合、最後の実際のラン終了の後に、3
つの追加コピーが続く0例えば、次の3行の2進ビット
イメージ: oooooooo  oooooooo  ooooo
ooo  ooooooo。
は、下記のように、半ワード項目を有する3つのベクト
ルを生じる。
24 0 0 00 10 27 28 32 32 
32              。
第1図は本発明によるイメージ拡大手順の概要を示す0
元のイメージ行(ラン終了形式)を最初に水平方向に拡
大する。この拡大では、各々の画素を1元の画素と同じ
カラーの3画素のランに変換するが、下記の規則により
、ラン終了ごとに1画素を追加または除去する。水平に
拡大されたイメージの縁はいくらか平滑化されている0
次に、この(ラン終了形式のままの)イメージを、イメ
ージ行の各対の間に2行を補間するプロセスにより、垂
直方向に3倍に拡大する。補間された行の画素を下記手
順によりセットする。この手順は水平拡大に用いた手順
に似てはいるが同じではない。
イメージの画素数は最終的には1元のイメージの画素数
の9倍になり、補間された画素には縁を平滑化するとと
もに出力装置の特徴を部分的に補償するような値が割当
てられる。
拡大アルゴリズムを逆の順序で適用しても(垂直拡大を
先に行ない、その結果生じたイメージの行を水平に拡大
する)1本発明に従った方法により生じたイメージと同
等の質のイメージを生成する。しかしながら、本発明の
水平拡大アルゴリズムはその入力イメージの行を記憶す
るのに大きな記憶領域を用いる。平滑化を、(2,54
amの領域を1とする)N領域にわたって行なうとすれ
ば、水平拡大は、垂直拡大を最初に行なう場合には。
垂直に拡大されたデータの60ON行を記憶せねばなら
ないが、垂直拡大以前に水平拡大を行なう場合には、2
0ON行だけ記憶することにより同じ領域を処理するこ
とができる。(水平拡大は。
データがラン終了形式であり、行のラン数は拡大によっ
て変更されることはないので、イメージデータの行に必
要な記憶量はふえない、)本発明の方法は、代替方法の
記憶量の1/3だけであれば同質の出力を生成できるの
で、最初に水平拡大を行なうことが望ましいことは明白
である。
F2.垂直拡大手順の説明(第2図〜第22図)最初に
垂直拡大手順について説明する。第2図は垂直拡大の補
間手順である。垂直拡大は、水平に拡大された4行で行
ない、拡大された2行の中間に入る2行の補間行を生成
する0図示のように、水平に拡大された行をA、B、C
およびDと指定し、補間行をXlおよびX2とする。ま
た、ポイン’)OA、OB、QC,OD、PXIおよび
px2はそれぞれの行のラン終了バッファをアドレス指
定し、出力イメージは行B、Xi、X2およびCをその
順序で含むものとする6行Aは、最初の行または最も古
い行とみなされ、その他の行は古い順に文字を付されて
いる。
補間サイクルでは下記のように動作する。水平拡大され
たバッファのポインタを循環し、最も古い行を捨て、新
しい行の場所を空ける(動作1)。
ポインタOAが指した行を落とし、各行を1行ずつ繰上
げる(すなわち、OAはOBの古い値を受取り、同様に
OB、QCはそれぞれQC,ODの古い値を受取る)、
水平拡大された(ラン終了形式の)新しい行を取出し、
それを指すようにポインタODをセットする(動作2)
0次に、補間行PXIおよびPI3を記述するラン終了
バッファ坑     を生成する(動作3)、最後に、
2つの補間行および後続の水平拡大された行を出力する
(動作4)。
補間サイクルは、すべての入力行を処理するまで反復す
る。初期設定および終了コードは、実際に使用可能な入
力行が足りない場合、最初の行および最後の行の追加コ
ピーを補間用に生成する。
第3は垂直拡大プロセスの制御コードを示す。
手順は、中途での割込みと、それに続く再開始が可能な
ように構築される。すなわち、入力の終りを検出した場
合、制御を呼出しプログラムに戻し。
呼出しプログラムは追加の入力行をセットアツプし、次
いでこの手順を再び呼出して、同じ出力イメージに、更
に多くの行を加えることができる。
呼出しプログラムによりフラグがセットされ、入力の終
りが見つかったときパイプラインをブラシュ(flus
h)すべきかどうか制御する。また、成る数の行を処理
した後、(パイプラインをクリアする場合もクリアしな
い場合も)制御を呼出しプログラムに戻すべきことを指
定することも可能で′6 (mt″[Ki!ll1ff
) 、 6”JIftf)LL @*     。
の入力行を読取る前に、指定した行数を処理したかどう
かを判定する検査だけである。指定した行の処理が終っ
ている場合は、あたかもファイルの終りに達したかのよ
うに処理を進める。
垂直拡大における最初のステップは、ステップ30でカ
ウンタLINを検査することである。このカウンタは、
既に処理された現在のイメージの、水平方向に拡大され
た行数を表わす、LINがOでない場合、パイプライン
には既に少なくとも1行の実データがある。従って、処
理は、LINが1よりも大きい場合は補間ループの最初
から開始し、LINが1に等しい場合は最初の行の読取
りとパイプラインのセットアツプ後に(補間ループの最
初から)開始しなければならない。
LINが0の場合、新しいイメージが拡大されつつある
。最初に水平に拡大された行を読取る。
ファイルの終りまたは他のエラーにより、エラーコード
を呼出しプログラムに戻す、エラーが生じない場合、(
ステップ50で、)4行のすべてのポインタを行のラン
終了バッファを指すようにセットする。LINを1にセ
ットして1行読取ったことを示す。次のステージ(LI
N=1の場合の入力点に続く)で、水平に拡大された2
番目の行を読取る。エラーが生じた場合、制御を直ちに
呼出しプログラムに戻す、ファイルの終り(E OF)
の場合、パイプラインをクリアすべきかどうかを制御す
るフラグを検査する。パイプラインをクリアすべき場合
、1行からなる最初のイメージを、3行のコピーを出力
して3行のイメージに変換する。そして制御を呼出しプ
ログラムに戻す。
次の入力行が見つかった場合、(ステップ80で、)L
INを2にセットし、2行読取ったことを示す、更に、
新しい行のアドレス(L I NEADDR)をポイン
タODに置くとともに出力イメージの最初の2行を生成
する。OBとOCは同じであることが分っているので、
(これらの行の2つの追加コピーを生成するだけで)補
間を省略し、行OCの2つのコピーを出力する。
次いで、垂直補間プロセスのメインループを開始し、第
4図に示す動作を実行する。(ステップ100で、)新
しい入力行を読取る。この場合も、エラーが生じると、
直ちに呼出しプログラムに戻る。ファイルの終りの場合
も、ループを抜出る。
その他の場合は、(ステップ130で、)処理された行
数のカウンタLINを増分し、新しい行のアドレスをパ
イプラインに入れ(すなわち、OAはOB+71値を、
OBはoCの値を、OCは0D(7)値を、oDはLI
NEADDR(7)値をトル)1行PXIおよびPN2
をOBとOCの間に挿入し。
挿入された2行および行OCを出力する。この。
ループは入力データがなくなるまで続く。
ファイルの終りの条件により、制御がループを抜出ると
、パイプラインをクリアすべきかどうかを制御するフラ
グを検査する。クリアを要しない場合、制御を直ちに呼
出しプログラムに戻す。その他の場合、(ステップ15
0で、)最新の入力行のラン終了バッファのアドレスを
LINEADDRにコピーする。最後の行の新しいコピ
ーをパイプラインに加え1行PXIおよびPN2をOB
とOCの間に挿入する。補間された行およびそれ41′
、1:       に続いてOCを出力し、その後に
、OCのもう1つのコピーを、出力イメージの最後の行
として加える。これは、最後の行のもう1つのコピーを
パイプラインに加え、もう1つの補間を行なうのに等し
い、その場合、行OBおよびOCは同じであるので、最
初に挿入された行も同じでなければならない。
垂直補間手順は、ラン終了形式のイメージを取込み、最
初のイメージの連続する各々の行対の間に2つの行を挿
入し、元のイメージと同数のビットカラムと、元のイメ
ージの3倍のローを有するイメージを生成する。使用す
るアルゴリズムは、(直角の角または非常に長いランを
検出した場合を除き)縁を平滑にするように設計されて
いる。
このアルゴリズムが生成する出力イメージの特徴として
、白のすしく5treak)は3画素幅よりも狭いもの
はなく、黒のすしは、黒のフィールドから1画素よりも
長く突出ている場合、2画素幅よりも狭いものはない、
(これらの最小限の幅は垂直方向にだけ当てはまる。は
ぼ同じアルゴリズムが水平拡大で使用されるので、最終
的な拡大イメー      1ジは、水平および垂直両
方向について前述の特徴を保持する。)これらの最小限
の幅が必要な理由は、白のランの場合、2つの黒の行の
間で1画素または2画−素の幅しかない白のすしは、隣
接する黒の画素により重ね刷りされるからであり、黒の
ランの場合は、1画素の幅のすしは見に<t)からであ
る、垂直補間アルゴリズムで望ましいもう1つの特徴は
、ランが角でだけ接する場合、対応する出力ランも角で
だけ接することである。本発明の方法では、これは大抵
の場合に当てはまる。
第4図は垂直補間アルゴリズムに示す。ポインタOA、
OB、QC,OD、PXIおよびPN2の各々は、ラン
終了バッファをアドレス指定する。
ラン終了バッファは、(OAHlOBH,OCH。
ODH,PXIおよびPX2Hと呼ばれる)半ワードの
ベクトルで、指標のカウントはOバイトから始まる。従
って、OAHの最初の半ワードはOAH(0)、そノア
ドL/XOAである。0AH(7)次の半ワードはOA
H(2)、そのアドレスはOA+2である。以下、同様
にカウントする。4で割切れる指標は白のラン終了を指
し1間に入る指標(4で割れない)は黒のラン終了を指
すにの方法を実現する際、前述のように、ポインタOB
およびOCには実際に、それらの真の値よりも2少ない
値を便宜的に与える。換言すれば、OBH(0)のアド
レスはOBではなくてOB+2である(しかし、それで
もなおOBH(0)は白のラン終了を指す)、これは、
アルゴリズムを実行するプロセッサが負のオフセットを
用いてアドレス指定することができないにもかかわらず
アルゴリズムがOBH(−2)およびOCH(−2)の
一時的な参照(そのアドレスはこの構成の下では0B−
2および0C−2ではなくてOBおよびOCである)を
必要とするからである。この実現形の詳細は下記の方法
の説明では無視する。
第4図のループを実行するごとに、一致(match)
する白のラン終了の対および後続の一致する黒のラン終
了の対を処理する。同じカラーの2つのラン終了、は、
それらがイメージにある同じ縁(角だけ接触するランは
一致することは見なされない)を定義する場合、一致ま
たは対応するという。次に、2つのランが一致するかど
うかを確認するための検査について説明する。
最初のステップで、処理すべき白のラン終了の対を読取
る(ステップ160)、行Bのラン終了をX、行Cのラ
ン終了をYとし、XとYを比較する(ステップ170)
、XとYが等しい場合、これらのラン終了は垂直の縁を
形成する。XおよびYのような同じ位置の2つのラン終
了は明らかに補間されなければならない、XとYの値を
行x1およびx2で最初に使用可能な位置に書込み(ス
テップ200)、制御を、黒のラン終了を処理するルー
プの部分に進める。
XとYが等しくない場合、追加検査を行なって両者が対
応するかどうかを調べる。最初に終了する白のランに続
く黒のランが他の白のランの終了を越えて伸びる場合、
白のラン終了は対応し、手順WH工(ステップ230)
またはWLO(Xテップ220)の1つを用いて、Xお
よび(または))へ11 Yを変更した後、それらを行X1およびYlを記述する
ラン終了バッファに書込む(ステップ200)。使用す
る手順は1行Bのラン終了が行Cのラン終了の前に終了
するか(WLO)、または後に終了するか(WHI )
により決まる。ラン終了を書込んだ後、アルゴリズムは
次の黒のラン終了に進むことができる。白のラン終了が
対応しない場合、パスが生じ、手順WPASSHI  
(ステップ240)またはWPASSLO(ステップ2
10)を使用する(この場合も、どちらの行が、最初に
終了する白のランを含むかにより決まる)。
これらの手順は、突出ている黒のランと、それを取巻く
白の画素の間を補間する。次に、突出ている黒のランを
含む行のポインタを4増分し、制御をループの最上部に
戻し、その行の新しい白のラン終了および他の行の古い
白のラン終了を処理する。
第4図のループの下半部は黒のラン終了の対を処理する
。この場合は、2つの黒のラン終了をXおよびYとして
(ステップ250)、両者を比較しくステップ260)
、等しい場合は1行の終りに達しているかどうかを調べ
る(ステップ330)。
(この検査は、ラン終了バッファでは最後のラン終了に
追加コピーを付加する方式を用いているので、白のラン
終了を処理する場合には実行する必要はない、また、こ
の検査では、すべての行の長さは等しいと仮定している
。ので、XとYが等しくない場合には行の終りに届いて
いないことになるから、実行しなくてもよいことは明ら
かである。)行の終りに届いている場合はループから抜
出る。
(ステップ350で、)最後のラン終了の後に必要な追
加コピーを生成し、補間行x1およびx2を記述するラ
ン終了バッファの長さをセットアツプして補間を完了す
る。
XとYは等しいが行の終りに達していない場合。
(ステップ340で、)XとYは垂直の縁を形成してい
るの°で、この縁を行x1およびx2で補間しなければ
ならない、この補間は、補間行を記述するラン終了バッ
ファの各々で次の黒のラン終了に使用できるスペースに
XとYの値を書込んで行なう0次イテ、ポインタPXI
、PX2、OBおよびOCを4(2つの半ワード)増分
し、次に処理するラン終了をアドレス指定し、制御をル
ープの最上部に戻す。
XとYが等しくない場合、(ステップ270または28
0で、)白のラン終了を処理するのに用いたのと類似の
手順により、ラン終了が対応するか、またはパスが生じ
るかを決定する。ラン終了が対応する場合は、手順BH
I (ステップ310)またはBLO(ステップ300
)のどちらかで。
Xおよび(または)Yを、それらをループの最下部で書
込む前に変更することができる。パスが生じる場合には
、手順BPASSHI (ステップ310)またはBP
ASSLO(ステップ290)により所要の補間を実行
し、ポインタOBまたはOCの一方を4(2つのラン終
了)増分し、新しい黒のラン終了を比較することができ
る。
ある拡大計算で重要な動作になるのは、外側の行(Aま
たはD)にラン終了があった場合、それが隣接する内側
の行(BまたはC)にあるラン終了に一致するかどうか
の判定である。これらの判定を行なう手順を、5YNC
W(白のラン終了でXとYが対応する場合)、5YNC
B(黒のラン終了でXとYが対応する場合)および5Y
NCBP(黒のラン終了でパスが生じる場合)と呼ぶ。
5YNCWおよび5YNCBの手順により解決する問題
は実際には、一致するランを見つける以上に制約されて
いる。必要なのは、処理中の内側の行のランと同じ位置
に、外側の行の適切なカラーのラン終了があるかどうか
を判定することだけである。説明の便宜上、外側の行を
A、内側の行をB、処理中のラン終了を又とそれぞれ仮
定し、D、CおよびYはそれぞれ適切に置換えるものと
する。
手順5YNCWの入口では、X=0でない限りOAH(
0)<Xが保証される。このループでは。
0A=OA−4とセットし、X>OAH(6)が偽にな
るまで0A=OA+4を反復する。従って。
このループの出口では、 OAH(0)<X<=OAH(4) 邊) となる、5YNCW手順に続イテ、又と0AH(4)を
比較する0両者が等しい場合、垂直方向の2画素の縁が
存在し、等しくない場合は、行AにはXで終了する白の
ランは存在しない。
x=0の場合1行の最初のラン終了の処理中である。こ
の場合、前述のループを実行すれば、OAはその最初の
値のままであり、 OAH(0)=0 0AH(2)=0 0AH(4)=最初の白のラン終了 となる。同じ検査(XとOAA (4)の比較を用いて
垂直方向の2画素の縁が存在するかどうかを判定するこ
とができる。
同様に1手順5YNCBの入口では、0AH(−2)<
Xの状態を保持する。このループでは、OA:0A−8
とセットし、X>OAR(6)が偽になるまで0A=O
A+4を反復する。従って、このループの出口では。
OAH(2)<X<=OAH(6) )ニー @ ′4′・X=OAH(°)06合・1′°
“索01垂直方向の縁が存在に、その他の場合は、Xに
はこのような縁は備在しない。
5YNCBP手順は、白のランが上方または下方の黒の
領域に突出る場合に用いる。第5図は5YNCBPの計
算を示す、最初のセクション5YNCBPIは、絶えず
黒のパスモードで実行し。
ラン終了OAH(6)がXに対応する位置にOAを置く
、第2のセクション5YNCBP2は、突出た白のラン
が分離したすじ以外の場合にだけ実行され、白のラン終
了OAH(4) とZ (Z=OBH(4)、の場合)
とが対応する位置にOAを置く。Zは行B上の突出た白
のランの終了である。
行AにはXおよび(または)Zに対応するラン終了はな
い(すなわち、黒のフィールドは、突出たランの片側ま
たは両側では行Aの上方には広がらない)、この場合、
5YNCBPIの手順は。
Xの左の最後の黒のラン終了とXとが対応することを示
し、5YNCBP2の手順は、Zの右の最初の白のラン
終了とZとが対応することを示す。
これらの定義は、次にBPASSHIおよびBPASS
LOの手順により実行する計算に適合し、突出た白のラ
ンの直上および(両)側面の領域が白であり、従って、
補間はゆるやかな傾斜になることを示す。
5YNCBPIの入口で、又は黒のラン終了を表わし、
かつOAH(0)<=Xになることを保証し、OAが減
分されると、この状態は0AH(4)<=)l変る。X
<=OAH(6)の場合、OAH(6)で終了する黒の
ランとXとが対応し。
処理は完了する。その他の場合は、又と白のラン終了O
AH(8)とを比較するループが開始され、X<OAH
(8)となッテ、点XがOAH(6)に一致するまで、
OAを2つのラン終了ずつ増分する。
5YNCBP2はOAH(6)<Zの場合だけ開始する
。このループでは、Z<=OAH(6)になるまでOA
を増分し、そうなった時点で、OAH(4)とZとは対
応する。OAの最初の増分では、所望の状態を保持しな
いことが明らかであるので検査を必要としない。
第6図はイメージデータのサンプルに5YNCBP手順
を適用した結果を示す、OAポインタの添字を下記のよ
うに定義する。
添字1:OAの最初の位置 添字2:5YNC:BPI実行後のOAの位置添字3 
: 5YNCBP2実行後のOAの位置点の太線は、こ
の方法により対応することが分ったラン終了を示す。
次に1手順WH1,WLO,WPASSHI、WPAS
SLOlBHI、BHL、BPASSH工およびBPA
SSLOについて説明する。これらの手順はそれぞれの
流れ図とそれを実行した結果を示す図面により説明する
。後者の図面は格子状に描かれ、各格子の正方形は1つ
の画素を表わす。二重のクロスハツチの陰影をつけた領
域は元のイメージ行(A、B、CおよびD)の黒のラン
を表わす、実線の一重のクロスハツチの領域は、補間動
作の結果を示す。破線の一重のクロスハツチは、図示さ
れている動作以外の補間動作により土・1.     
 黒0画素を書込“だ領域を示す・場合番°よ′1・(
所定の補間により形成されたちの以外の)縁の一部分が
脱落した場合、図示の画素から判定できないことがある
。そのような場合は、近似値で示す。
WLO手順(第7図および第8図)はx<y<OBH(
2)の場合に使用する。ただし、XおよびYは、第8図
(a)に示す白のラン終了を表ねす、最初の動作ではX
とYの差の絶対値をとる(ステップ400)、ラン終了
の差が1画素だけの場合(D=1) 、XとYの値は変
えない(第8図(b))、ラン終了の差が2画素の場合
(D=2)、xの値は1増加しくステップ420)、縁
をいくらか平滑化する(第8図(C))。Yを減少する
よりもXを増加して白のスペースの量を増す方が有利で
あるのは、プリンタのスポットの寸法が大きいからであ
る。ランがXで始まる黒のランに左下の偶で接する場合
、対応する出力イメージの領域は全く接しない。これは
、接しているランを探す作業を避けるために受諾しうる
犠牲とみられる。                 
          IXとYの差が3画素以上の場合
(D>2)は、追加検査を実行する。行AでXに対応す
るラン終了が見つかり(ステップ440)、それが又と
同じ場合は、XとYをそのままにしておくことにより、
直角の角を保持する(第8図(d))、同様に、行りで
Yに対応するラン終了が見つかり(ステップ460)、
両者が等しい場合は、XとYは不変のままとし、直角の
角を保持する(第8図(e))。
直角の角が見つからない場合、行Bで位置Xから開始す
る黒のランが、行Aのもう1つの黒のランに接している
かどうかを調べる(ステップ470.480)、X>O
AH(2)および0BH(2)くOAH(4)がどちら
も真の場合、行Aには、接している黒のランは存在しな
いが、その他の場合には、前記ランは存在する。いずれ
の場合も更に、Yで終了するランが黒の領域に突出る(
Y<=ODH(2))かどうかを判定する(ステップ4
90または500)。前述の2つの検査では、4つのケ
ースが考えられる0行Bの黒のランが1行Aのもう1つ
の黒のランに接する場合、行Bのランが少なくとも2画
素の厚さに保持されていることを確認しなくてもよい、
これは、アルゴリズムにより、AとBの間が補間される
場合に前記厚みが保証されているからである。
従って、Yで終了する白のランが黒の領域に突出ない場
合は、直接の補間を実行しく第8図(f))、Xを(Y
−X)/3増加し、Yを(Y−X)/3減少する(ステ
ップ510)、白のランが黒の領域に突出る場合に必要
なことは、第2の補間行を、白のランの終了までずっと
白にすることである(すなわちYは不変)から、ラン終
了XとYの差をとり、第1の補間行に分配する(X=X
+ (Y−X)/2;第7図のステップ520、第8図
(g)参照)6行Bの黒のランが行Aのもう1つの黒の
ランに接しない場合、第1の補間行は、X(又は不変)
で開始する黒のランをコピーしなければならない、第2
の補間行は、Yで終了する白のランが黒の領域に突出な
い場合には、XとYの差に応じて設定しくY=Y−(Y
−X)/2 ;ステップ530.第8図(b)参照)、
そうでない場合は、行Cの白のランをコピーしなければ
ならない(Yは不変;第8図(i)参照)。
WHI手順(第9図および第10図)は、XおよびYが
対応する白のラン終了を表わすという点でWLO手順に
類似しているが、この場合、上側の白のランは、第10
図(a)に示すように、下側の白のランよりも長い(す
なわち、y<x<。
CH(2)である)。アルゴリズムはWLOの場合とほ
ぼ同じである。、XとYの差の絶対値をとり(ステップ
54・0)、差が1画素の場合は、XとYはそのままで
ある(第10図(b))、差が2画素の場合、Yの値を
1増分して(ステップ560)縁を平滑化し、白のスペ
ースの量を増加する(第10図(c))、XとYの差が
3画素以上の場合(D>2)、直角の角を探す。直角の
角が見つかった場合(ステップ580または600)、
XとYは不変のままである(第10(d)および(e)
)、直角の角が見つからない場合、Xで終了する白のラ
ンが黒の領域に突出るかどうかを判”’    !t6
 (X<=OAH(2) 、 Xfッ2610)。
更に、行CでYから始まる黒のランが、行りでYの左か
ら始まる黒のランに接する(Y(ODH(2))かどう
かを判定する(ステップ620.630)。
この場合も、2つの検査から4つのケースが生しる。X
で終了する白のランが黒の領域に突出ない場合、厚みが
3画素よりも少ない白の領域を残さずに、第1の補間行
を変更することができる(第10図(f)および(g)
)、Yから始まる黒のランが、Yの左から始まる黒のラ
ンに接する場合、1画素の厚さの黒の領域を多分残さず
に、第2の補間行を変更することができる(第10図(
f)および(h)。変更できる行数により、実行される
補間のタイプが決まる。どの行も変更できない場合は、
行を変更しない。1行しか変更できない場合は、1行を
(Y−X)/2だけ変更する。2行変更できる場合には
、双方の行を(Y−x)/3ずつ変更する。
BHI手順(第11図、第12図)およびBL    
   。
0手順(第13図、第14図)はWLO手順およ   
 □びWHI手順にそれぞれ類似している。これらの手
順は、2つの黒のランが対応する(第12図(a)およ
び第14図(a))の場合の処理を行なう、ラン終了の
正の差をとり(ステップ670および810)、検査を
行なう(ステップ680および820)。差が1の場合
は処理しない(第12図(b)および第14図(b))
。差が2の場合は、長い方の黒のランの補間行を1画素
短かくする(第12図(c)および第14図(C))。
その他の場合(D>2)は、直角の角を調べる(ステッ
プ710,730,850および870、第12図(d
)および(e)、第14図(d)および(e))。直角
の角が見つかった場合は1元のラン終了を補間行にコピ
ーする。そうでない場合は1元のイメージにおける1画
素の厚さの白または黒の特徴を検査しくステップ740
〜770、ステップ870〜900)、必要に応じてX
およびYを変更して補間する(第12図(f) 、(g
)。
(h)、(i)および第14図(f)、(g)、(h)
、(i)、ステップ780〜800.ステップ910〜
930)。
残る4つの手順(WPASSLO,WPASSHI、B
PASSLOおよびBPASSHI)は、内側の行(B
またはC)の1つのラン終了に対応するランが他の行に
はない場合に実行する。変数2は突出ているランの終了
を示す。
これらの4つの手順のうち、WPASSLO(第15図
、第16図)が最も簡単である。この手順は、黒のラン
が下方に突出て白の領域に入る場合に動作する(第16
図(a))。黒のランが行Aのもう1つの黒のランに連
結する(この場合、AとBの間に挿入される行は、行B
のランが少なくとも2画素の厚さであることを保証する
)か、もしくは、連結しない(この場合は、黒のランは
行Bの上に挿入される)ので、どちらかの角で行Cの黒
のランが行Bの黒のランに、接する場合には、角が補間
行に接することを確認するだけでよ&N、Z=Yおよび
X=OCH(−2)の状態(ステップ940および95
0)は、黒のランが、Xで終了する突出た黒のランに右
下および左下の角でそれぞれ接することを示す、これら
の状態の一方、または両方が存在する場合、行Bの黒の
ランは:第1の補間行のラン終了バッファに2つのラン
終了XおよびZを加えて(ステップ960)、行Cにコ
ピーする(第16図(b)および(C))。
前記角に接している第2の補間行のラン終了を生成する
のは、このプロセス部分ではなく、行Cでラン終了を処
理する際である。行Cのランが黒のランに接しない場合
には処理は不要であり、ラン終了を補間行に書込まない
ので、補間行は空白のままである(第16図(d))。
突出た黒のランを処理する他の手順WPASSHI(第
17図、第18図)は、黒のランが上方に突出て白の領
域に入る場合に動作する(第18図(a))。この手順
では、分離した黒のランを。
その上部に第2の黒のランを補間するために、検出可能
でなければならないので、手順WPASSLOよりも複
雑である。
最初の検査は手順WPASSLOで実行した検9゛へ1
     査に類似している(ステップ970および9
80)。
これらの検査により、突出ている黒のランが行Bの黒の
ランの角に接しているかどうかを判定する。
接しているランが見つかった場合は、第2の補間   
行のラン終了バッファにラン終了YおよびZを加えて、
行Cの黒のランを第2の補間行にコピーする(ステップ
1050、第18図(b)および(c)参照)。
その他の場合は、行りを探索し、接しているランを見つ
ける。探索を始める前に、ODの位置を変えて、前にど
の手順を使用していても)ODH(−2)<=Yになる
ようにする(ステップ990)、現在のランの角に接し
ていたランがあらかじめ分っていた場合は先ずODを減
分する。この時点では、ODH(2)<=Yであるので
、同等になるのは行の開始点においてだけである(OD
H(2)=Y=O)。他の場合にはすべて、0DH(2
)で終了する黒のランは1行Cの黒のランの前に終了す
る6Y〉ODH(4)の検査により(ステップ1000
)−行りにおける次の黒のうンがYの後に始まるかどう
かを調べ、Yの後に始まる場合は、白のラン終了ODH
(4)はYに対応するので探索する(第18図(d))
。その他の場合は、ODH(6)の黒のラン終了を検査
しくステップ1010)、Yの左にあるかどうかを調べ
る。黒のラン終了がYの左にある場合は、ODを4(2
つのラン終了)増分しくステップ1020)、最初の黒
のラン終了ODH(6)>=Yが見つかるまで前記検査
を反復する。この黒のランは、行Cの黒のランの右で始
まるか、もしくは、それに接するか、または行Cの黒の
ランに連結する。後者の場合、それに先行する白のラン
終了ODH(4)はYに対応する(第18図(e)およ
び(f) ) 。
Yに対応するラン終了が見つかると1行Cの黒のランに
接する黒のランが行りにあるかどうかの判定は容易であ
る。Y<=ODH(2)の場合(ステップ1030)、
左のラン終了に接するか、または隣接する黒のランが存
在する(第18図(g))、ODH(4)<=Zの場合
(ステップ1040)、行りの白のランは、行Cの黒の
ランまたはその左で終了し1行りに隣接するか、または
接する黒のランが存在することを示す(第18図(h)
)。どちらの場合も、補間行には黒のランを置かない、
これらの条件をどれも満足しない場合、行Cの黒のラン
は分離されたすじ(streak)であるので、第2の
補間行にコピーする(第18図(i))。
手順BPASSLO(第19図、第20図)は、白のラ
ンが下方に突出て黒の領域に入る場合に動作する(第2
0図(a))、最初のステップ1060で、前述の手順
5YNCBPIにより1行AでXに対応する黒のラン終
了を見つける6行Aでこの黒のランが、行Bの白のラン
の終了Zを越えて広がっている場合(ステップ1070
)、白のランは分離されたすしであるので、補間する際
に、その全長を第2の補間行に移し、そのすしが3画素
の幅になるようにする(第20図(b)、ステップ11
80参照)、その他の場合は、白のランの長さを計算す
る(ステップ1080)、白“のランの長さを検査しく
ステップ1090)、1画素または2画素の長さしかな
い場合、第2の補間行にコピーする(第20図(C)、
ステップ1180)。白のランの長さが一定の限界値(
良好な実施例では限界値として600画素を用いる)以
上に長い場合も、白のランを第2の補間行にコピーする
。このように、全長にわたって同じ幅にすることにより
、まっすぐな長い行が曲って見えないようにする。
白のランが分離されずに、その長さが2画素よりも大き
く1選択された限界値よりも小さい場合、2つの別個の
検査により、ランの端でどのように補間すべきかを決め
る。黒の領域は常に第2の補間行まで広がっている。第
1の補間行は白にするが黒の画素は、平滑な傾斜を作る
ように、どちらかの端に書込むことができる。良好な実
施例では、(I+Z−X)/4の画素(白のラン長の約
174)を、白のランのどちらかの端から取除き、黒の
領域に加える(ステップ1100.1130および11
70参照)。
+1.        白のランの左端で、又とOAH
(6)を比較しくステップ1110)、行Aの黒のラン
が、白のすしの部分にまで広がっているかどうかを判定
する。広がっている場合は、第1の補間行の白のランは
1元のランの左端から外に広がり、白の領域は3画素の
厚さになる(第20図(d))。X=OAH(6)の場
合、保存すべき直角の角があるから、同じタイプの補間
を行なう。次に、もう1つの白のランが、行Bの白のラ
ンにその左下の角で接するかどうかを判定する(ステッ
プ1120)。
左下の角で接する場合、第1の補間行の白のランを再び
元のランの左端まで広げ、白の角と接するのを維持する
(第20図(e))、その他の場合は、第1の補間行の
白のランから、その長さの1/4だけ左側を取除き、端
を平滑化する(ステップ1130第20図(f) ) 
白のランの右端を処理する手順もほぼ同じである(ステ
ップ1140)、行Aの、対応する白のラン終了がZよ
りも小さい場合(ステップ1150)、黒のランは白の
ランの端を越えて広がるので、3画素の厚さを保持しな
ければならない(第20図(g))。2つのラン終了が
等しい場合(ステップ1160)、直角の角を保持しな
ければならない、突出た白のランが1行Cの白のランに
接する場合、つながりの部分は保持しなければならない
(第20図(h))、その他の場合は、補間行の白のラ
ンの端を除去する(ステップ1170、第20図(i)
)。
上方に突出て黒の領域に入る白のランを処理するBPA
SSHI手順(第21図、第22図)は、前述のBPA
SSLO手順と全く対称的で、XとYの役割、行Bと行
Cの役割がそれぞれ入れ代り、行りを行Aの代りに使用
している。従ってBPASSHI手順の説明は省略する
。以上が垂直拡大手順についての説明である。
F3.水平拡大手順の説明(第23図、第54図)水平
拡大手順では、水平方向の行(ラン終了形式)を拡大し
、拡大された行を垂直拡大手順の入力として使用する。
水平拡大はいくつかの方法が可能である。最も簡単な方
法は、ラン終了の各々を取出して3倍することであるが
、大抵の行に著しい階段状部分が生じる。この方法の手
順を変更し、隣接する入力行のいくつかを検査して1選
択的にラン終了に対し画素の追加または除去を行なうこ
とにより、質のよい出力を取出せるが、それでもなお、
急傾斜の行の階段状部分は除去できない。
良質の出力を生じる水平拡大を実行する方法は。
(拡大すべき)イメージを90度回転して前述の垂直拡
大アルゴリズムにより拡大し、(拡大された)イメージ
を再び回転して最初の方向に戻すことである。この方法
で問題になるのは、ラン終了形式のイメージの回転に時
間がかかり、かつ大きな記憶領域を必要とすることであ
る。
本発明による方法は、前述のように回転および垂直拡大
の実行により取出されたイメージと同等の良質のイメー
ジを生成し、しかも、記憶装置にはどの時点においても
イメージの小部分だけを保持すればよいから、必要な記
憶量はずっと少なくて済む6本発明の方法の手順では、
元のイメージの行を記述するラン終了バッファを1回に
1つ読取り、ラン終了の値を3倍にすることにより各行
を3倍に拡大する。前の行のラン終了位置のレコ−ドに
より垂直方向の縁を検出し、縁の位置が1画素だけ変化
する場合、その縁の潜在的な階段状部分を取除く処置を
必要とする。この場合、前に拡大した行に戻り、その縁
に1画素加えるか、またはその縁から一1画素除去して
行を平滑化する。
水平拡大方法は完全にラン終了形式のデータを操作する
ので、ラスク形式のデータは不要である。
以下の説明では、イメージデータの行は、その行を表わ
すラン終了バッファを指すものとする。
最近に処理した入力行の経歴を保持し、縁を検出して平
滑化できるようにするため、いくつかの大きなバッファ
、ならびに拡大を制御する変数を使用する。2つのバッ
ファ(1つは前の行のバッファ、他の1つは処理中の行
のバッファ)を、ラン終了ごとに経歴情報を供給するラ
ン終了バッファとともに使用する。保持する情報を第2
3図および第24図に例示する。
l:       第23図では、特定の画素位置の垂
直方向の縁を開始した行番号を含む半ワードを使用して
いる。
縁が現在の位置に移動する直前に何が行なわれたかを示
すため、7つの1ビツトフラグF1、F2、F3、F4
、F5、F6およびF7を使用する。第24図に示す太
線で例示した縁の形状ごとに、3番目のローのラン終了
の縁の部分を記録するフラグF1〜F7をそれぞれ指定
する。それぞれのフラグの特徴を下記に示す。
Fl(第24図(a)): 1画素の左ジョグ(jog
)の有無を示す(有ればF1=1、無ければF1=O,
以下同様)。ジョグは階段状部分を意味する6 F2(同図(b)):2画素以上の左ジョグの有無を示
す。
F3(同図(c)): 1画素の右ジョグの有無を示す
F4(同図(a)):2画素以上の右ジョグの有無を示
す。
F5(同図(e)):前の行にパス(所定の位置で終了
するランが前の行に存在しない状態)があり、かつ縁の
最初の行のラン長(RL)が1であったかどうかを示す
F6(同図(f)):左タッチ(縁の左上の角が、同じ
カラーのもう1つの縁の角に接する状態)があったかど
うかを示す。
F7(同図(g)):右タッチ(縁の右上の角が、同じ
カラーのもう1つの縁の角に接する状S)゛ があった
かどうかを示す。
これらのフラグのどれもがセットされない場合は、パス
を生じ、しかも縁の最初の行が2画素以上の幅であった
ことを表わす。
拡大中のイメージ行を書込むのに大容量のバッファを用
いる。イメージ全体を保持するのに十分な大きさのバッ
ファを設けたり、または行バッファが一杯になったとき
ラン終了バッファを移動したりすることを避けるため、
バッファの終りで、十分なスペースを残していないとき
は必ず、イメージ行をバッファの先頭にラップアラウン
ドする。
それにより、起こりうる最も複雑な有効行(すなわち、
黒と白の画素が交互に生じ、ラン終了バッファの画素ご
とに2バイトを必要とする行)を保持することが可能に
なる。行プロセッサは、もはや必要としない行を解放し
、垂直拡大アルゴリズム(3倍)の入力として使用する
。下記の6つのアドレスポインタにより、このバッファ
のステータスを追跡する。
NEXTは次に読込む行のアドレスである。
OUTは次に出力する行のアドレスである。
FIR8Tは行プロセッサがなお使用中の最も古い行の
アドレスである。
FIR8TVは、垂直拡大アルゴリズムがなお使用中の
最も古い行のアドレスである。垂直拡大手順は、読込む
行の外に古い行を3行使用するので、FIR8TVはO
UTよりも3行だけ先行する。
ENDは行バッファの最後の行のラン終了バッファの終
りのアドレスである。
OLIMは最後の行の終りのアドレスで、  (OLI
M=ENDの場合)バッファの先頭にラップアラウンド
する前、または(OLIM=FIR8Tの場合)より多
くの行を解放する前に出力することができる。
どの行が行バッファのどこにあるかを追跡するため、ス
タックを維持する。スタック項目の各々は1行番号およ
び、その行のラン終了バッファの先頭アドレスからなる
。スタック内のあらゆる行のラン終了バッファのアドレ
スを維持する必要はない6なぜなら、ラン終了バッファ
を連続して書込み、行バッファの最初の行を記述するス
タック項目を常に確保しているからである。行バッファ
で行Nのアドレスを見つけるため1行番号がNよりも小
さいか、またはNに等しい最初のスタック項目を探索す
る。見つかったスタック項目の行番号がNに等しい場合
、単に行アドレスをスタックから読取る。その他の場合
は、行アドレスがスタック内に示されている行を指すよ
うにポインタPをセットし、カウンタCTを、スタック
にある行の行番号に初期設定し、次の手順を使用する。
p=p+ (pで始まるバッファの長さ)”     
   CT=CT+1 (CT<N(1)場合、Jli
jtltり(本発明の良好な実施例で用いたラン終了形
式により、Pで始まるバッファの長さは単に、Pにより
アドレス指定された半ワードである。)このループの実
行で、Pは所望の行のアドレスを取込む6行バッファ内
の最初の行の項目を必ずスタックに取込むことにより、
スタック内に行アドレスが示されている行と所望の行の
間にラップアラウンドが生じないことは確実である。
第25図はスタックおよび行バッファの構成例を示す。
説明の都合上、ラン終了バッファをすべて同じサイズで
示しているが、実際には、これらのサイズは異なる。こ
の図面で、行2B6〜2BEは、水平拡大により解放さ
れており、水平拡大機能が呼出されると、1回に1行ず
つ戻る。バッファが順次に戻る動作は、OUTがOLI
M(バッファの最後の行の終り)に達するまで続く、0
tJTがOLIMに達した時点で、OUTはバッファの
先頭(STARTBUFS)にラップアラウンドし、O
LIMをFIR8Tにリセットする。
これら。バッ、アのすべてが戻った後、NEXT   
    +で始まる新しい行を読込んで記憶する。
第26図は水平拡大手順のルインループの概要を示す、
現在のイメージの水平拡大により出力された行番号LN
Oは、イメージでこの手順を最初に使用する前に呼出プ
ムグラムによりOにリセットされ、その後この手順によ
りカウントを維持するものとする。それゆえ、LNOと
0の比較(ステップ1400)は、新しいイメージを拡
大しようとしているかどうかを示すために行なう、LN
OとOとが等しい場合、必要な初期設定を実行する(ス
テップ1410)。次いで、OUTとOLIMとを比較
する(ステップ1420)。OUTがOLIMよりも小
さい場合、少なくとも1行出力することができる。フラ
グは通常の復帰を表わすようにセットされ、最初に使用
可能な行のアドレスは呼出しプログラムに戻るために記
憶され。
OUTを、戻されるラン終了バッファの長さくLEN)
だけ増分し、次の行を指すようにする(ステップ144
0)−次lいで、OUTとENDとを比較して(ステッ
プ1460)、両者が等しい場合、OUTをバッファの
先頭にラップアラウンドするように、OUTを5TAR
Tにリセ、ツトし、OUTの新しい限界値(OLIM)
を1行プロセッサがまた使用している最初の行のアドレ
ス(FIR8’r)に置く (ステップ1470)、次
いで制御を呼出しプログラムに戻す。
出力すべき行がない場合(ステップ1420)、入力デ
ータの終りが前に見つかっていたかどうか  、を調べ
る(ステップ1430)、入力データの終りが前に見つ
かっている場合は、フラグを1にセットして(ステップ
1450)、ファイルの終りを表示し、制御を呼出しプ
ログラムに戻す。
出力行が完成されず、入力の終りに達していない場合、
ループを開始する。このループは、いくつかの限界値の
1つ(例えば、使用可能なバッファのスペースの終り、
すなわち読取られる最大行番号)に達するまで1行を読
込み処理する。大抵の場合、追加出力行を生成した後、
制御を出力行を戻す手順の部分(Aと表示)に戻す。
入力行が要求されてファイルの終りの状態が生じた場合
、制御はループを抜出し、処理は、Bと表示された点に
続き、まだ完了していないイメージの行を終了して、ブ
ランク行を入力バッファに加え(そのための容量は、バ
ッファ空間を入力を読取ろうとする前に取込むが、入力
が見つからなかったのでその空間は未使用であるから、
十分にあることが保証されている)、行プロセッサを呼
出す(ステップ1480)。ブランク行は垂直方向の縁
を含んでいないから処理中のすべての垂直方向の縁を終
了させる。次に、OLIMとNE XTを比較する(ス
テップ1490)、OLIMがNEXTよりも大きい場
合、0UT−1+NEXTより大きく1行バッファの終
りに向って処理中である。
従って、FIR8TはNEXTの値を受取るので(ステ
ップ1500)、OUTがラップアラウンドするとき、
新しい限界値は使用可能なデータの終りになる。OLI
MがNEXTよりも大きくない場合は、OLIMはNE
XTにリセットされ(ステップ1510)、その点まで
のすべての行へ   、、8ヵオ、ユ、7.1−0 下記により、水平拡大機能の初期設定を行なう。
(a)行バツフア初期設定 5TARTBUFSおよびENDBUFS (第25図
参照)をそれぞれ、行バッファの先頭および終りを指す
ようにセットする。OUT、NEXT、FIR8TV、
FIR8TおよびOL IMをすべて1行バッファの先
頭を指すようにセットする。
ILIM(NEXTで開始し、入力に使用可能な隣接ス
ペースの終り)をENDBUPSにセットする。
FIR8TLNOおよびWRAPをOにセットする。
(b)スタック初期設定 5TACKTOPを、スタックのトップを指すように初
期設定する。
ENDSTACKを、スタックの終りから4番目の項目
を指すように初期設定する。
ENDSTACKにより、スタックがオーパフ    
  jローしようとしているかどうかを判定する。
行0の2つの項目(そのアドレスは行バッファの先頭に
ある)をスタックに置く、2つの項目を必要とするのは
、スタックの最上部の1つを他の行の項目により重ね書
きするからであり、かつスタックには行0の項目が確実
に存在しなければならないからである。
5TACKPTを、スタックの最上部の項目を指すよう
にセットする。
(Q)最初の入力行の読取り CUR(処理すべき入力行の行番号)を1にセットし、
最初の入力行を読取る。エラーまたはパフアイルの終り
”が生じた場合、エラーコードを呼出しプログラムに戻
す。その他の場合は、入力行の画素数を、ラン終了バッ
ファの最後の項目から読取り、IC0LSとして記憶す
る(同じ画素数を後の入力行に確実に含むようにする)
。この値を3倍してNC0LS (水平に拡大する行当
りの画素数)を取出す。所定の画素数を表わすラン終了
バッファを設けるのに必要な最大記憶容量を、(2・I
C:0LS)+20により計算する。
(この値は、起こりうるラン終了ごとの2バイトと、長
さ、先行する複数の0、および最後のラン終了に続く複
数のコピーを表わすのに必要な追加の半ワードとの和で
ある。)ラン終了バッファの終りのアドレスを、NEX
T (次に読取る入力バッファのアドレス)として記憶
する。最後に1行バッファのサイズが少なくとも6・B
UFS I ZEあるかどうかを検査し、垂直拡大(3
倍)アルゴリズムで4デ一タ行の処理が可能なことを確
認する。
(d)行プロセッサの変数の初期設定 CURPC(現在のラン終了バッファのポインタ)を1
行バッファの(最初の)行を指すようにセットする。
CURPXCおよびNEXTPXCを、経歴情報を含む
補助バッファを指すようにセットする。
最初のイメージ行におけるラン終了ごとに、CURPX
Cによりアドレス指定したバッファに経歴項目を生成す
る。縁の起点はすべて、ランの長さが1画素の場合、F
5(ランの長さが1画素のバスモード)を除くすべての
フラグと同じくOにセットする。
第27図は行を水平方向に拡大するのに用いるループの
概要を示す。それぞれのステップの詳細について、以下
に説明する。
CURとLLIMの比較(ステップ1520)は、可能
な全入力行を書込んだかどうかを示す。
可能な全入力行が書込まれている場合(CUR>=LL
IM)、手順FINISHLINESを呼出し、完了し
た出力行を解放する(ステップ1530)。使用可能な
行がない場合(ステップ1550)、(FIR8Tによ
りアドレス指定した)最初の拡大した行を解放するので
、次の行が新しいFIR8Tになる(ステップ1570
)−出力行を出力する手順に制御を戻す。
次の検査で、スタックがオーバフローしようとしている
かどうかを調べる(ステップ1540)。
スタックがオーバフローしようとして場合は、手・〜)
      順FINISHLINESを呼出し・使用
可能な出力行を解放しくステップ1560)、スタック
を圧縮する(行FIR8TLNOの前の行の項目を捨て
、残りの行から1つおきに項目を取除り)。
手順FINISHLINESにより出力行を解放した場
合、行を戻すコードに分岐するか、またはループを続行
する。
NEXTに続く自由なスペースの量が行バッファの終り
により制限され(I LIM=ENDBUFS)、任意
の入力行を取込むのに不十分な(すなわち、BUFS 
I ZEよりも少ないバイト数しか得られない)場合の
手順(図示せず)は次のようになる。ENDはNEXT
の値を受取り、従っで、最後の行バッファの終りを指す
。次いで、NEXTを5TARTBUFSにリセットし
、WRAPは値CUR+1 (読込まれる行の行番号)
を受取る。行番号WRAPおよび行アドレスNEXTか
らなる項目を2つスタックする(1つは固定項目であり
、他の1つは新しい行が読込まれたとき重ね書きされる
)。最後にILIMを、FIR8TおよびFrR3TV
により指定した行の中の      1古い方をアドレ
ス指定するようにリセットする。
NEXTに続く自由なスペースの量が、まだ使用中の、
またはまだ出力されていない行バッファの行により制限
されている場合、手順FINISHL I NE &を
呼出して使用可能な出力行を解放する。解放できる行が
ない場合、新しい行のバイトBUFS I ZEを記憶
装置から取出すのに十分な行を解放する必要がある。次
いで、制御を、出力行を戻す手順に戻す。
この時点で、入力行を読込み、処理するのに十分なスペ
ースの使用が可能である。次の使用可能な行を読取り、
エラー条件によりエラーコードを呼出しプログラムに戻
す。(ラン終了バッファにより示された行の画素数がI
C0LSに等しくない場合、エラーが生じる。)ファイ
ルの終りの条件が生じた場合、フラグをセットし、行拡
大ループは終了する。
新しい入力行をうまく読取った場合、いくつかのポイン
タを更新する。特に、PPにはCURPC(前の行)の
値をと1す、CURPCを、新しい行をアドレス指定す
るようにセットし、NEXTを、新しい行のラン終了バ
ッファの終りを指すようにセットし、CURPXCとN
EXTPXC(補助バッファのポインタ)とをスワップ
する。
CURおよびPREV (現在および前の行の行番号)
もそれぞれ、1増分する。新しい行を行プロセッサに送
る。最後に、新しい行の項目(その行番号および行バッ
ファのアドレスを含む)をスタックに加える。前の行番
号が、ある値K(本発明の良好な実施例ではに=16)
の倍数でない場合、スタックのトップの項目を、新しい
項目を加える前にポツプアップする(ステップ1700
)。その結果、スタックにはあらゆるに番目の行の項目
、ならびに最も最近に処理した行の項目を取込む(ステ
ップ1710)。このパターンは1手順FINISHL
INESを用いる場合には若干変更することがある。)
スタックへの付加は、行を行プロセッサにより処理した
後に行なうが、それは、この手順では、スタックを使用
し、処理中の行の項目を決して必要としないのに、前の
行の項目を使用できることがあるからである。
行がうまく処理された場合、ループを反復する。
第28図は、使用可能な出力行を解放し、スタツクを圧
縮するのに用いる手順FINISHLINESを示す、
最初に、現在の行を検査し、0およびNC0LS以外の
ラン終了を含んでいるかどうかを調べる(ステップ17
20)。0およびNC0LS以外のラン終了を含んでい
ない場合、現在の行までのすべての行を解放することが
できる。
現在の行は解放しない、これは、予期しない関係がポイ
ンタ間に生じることがあるから′である。この場合の手
順はかなり簡単である。最初に、OLIMをリセットす
る@OLIMがFIR8Tに等しくない場合(ステップ
1730)、これはバッファによる最初のサイクル(O
LINES=O)である(コノ場合、OLIMを、NE
XT (最後のバッファの終りのアドレス)を指すよう
にセットするか、または、その他の他の場合、OL I
M=ENDとなる(この場合、OLIMは変更されない
、)OLIM=FIR8Tの場合、解放され1′)(た
行の終りを越えて依然として使用されている入力行が存
在する。現在の行がバッファのFIR8Tに続く場合(
ステップ1760)、OLIMを。
現在の行を指すようにセットしくステップ1790)、
この点までの行のすべてを出力するのを可能にする。現
在の行がFIR8Tに先行した場合、打出カプロセスは
ラップアラウンドしないうちは現在の行に達することが
できない。従って、OLIMを、バッファのデータの終
りを指すようにセットしくステップ1800)、打出カ
プロセスは後にOLIMをリセットしてバッファの先頭
の追加行を取込む。OLIMを(適切な場合)リセット
した後、現在の行が最初の行となり(ステップ1830
)、そのアドレスの2つのコピーをスタックする(1つ
は固定コピーであり、他の1つは。
後続する行を処理したとき重ね書きする)。
現在の行が、0およびNC0LS以外のラン終了を含む
場合1行プロセッサにより変更することがなお可能な最
も古い行を見つける必要がある。
行番号は、0のラン終了またはNC0LSに対応しない
現在の経歴における0RIGWおよび0RIGBの最小
値を見つけることにより取出すことができる(ステップ
1740)。行バッファのアドレスは、所要の値よりも
小さいか、または所要の値に等しい行番号の最初の項目
のスタックを探索し、必要なら、正しい行を得るためラ
ン終了バッファによりカウントすることにより発見でき
る。
OLIMは、FIR8Tを変更する前にリセットしなけ
ればならない。その手順は、水平拡大がなおも必要とす
る最初の行のアドレスを、現在の行のアドレスの代りに
使用する以外は、空の行の場合の手順と同じである。O
LIMがFIR8Tに等しくない場合、それがバッファ
による最初のサイクルであるか(OLINES=O) 
、またはOLIM=ENDであるかを検査する。最初の
サイクルの場合は、OLIMをNEXT (最後のバッ
ファの終りのアドレス)を指すようにセットし。
OLIM=ENDの場合は、OLIMはそのままである
。OLIM=FIR8Tの場合、解放された行の終りを
越えてなお使用中の入力行がある。
なお必要な最初の行がバッファ内のFIR8Tに続く場
合、この行を指すようにOLIMをセットしくステップ
1870)、その点までのすべての行を出力する。最初
の行がなおFIR3Tよりも先行する場合1行出力プロ
セスは、現在の行に達する前にラップアラウンドしなけ
ればならない。
従って、OLIMを、バッファのデータの終りを指すよ
うにセットしくステップ1880)、打出カプロセスは
、後にOLIMをリセットして、バッファの先頭の追加
行を取込む。(必要なら)OLIMをリセットした後、
FIR8TおよびFIR8TLNOをそれぞれ新しい値
に取換える。
次いでスタックを、2つのポインタを保持するループに
より圧縮する。ポインタの1つは、保持すべき最初の行
のアドレスの探索中に見つかった項目で始まる1元のス
タック項目を指すポインタで、もう1つのポインタは、
スタックの最上部で始まり、圧縮されたスタックの項目
を索引するように動作する。保持中の最初の行の項目を
新しいスタックに置き、次いで、古いスタックの終りに
達するまで、最初のポインタを一回に2スタック項目ず
つ、2番目のポインタは一回に1スタツク項目ずつカウ
ントを下げる。最初のスタックからのデータを、段階ご
とに、新しいスタック内の位置にコピーする。新しいF
I R8TLNDがWRAPよりも小さい場合、最初の
スタックはラップ行の項目を含むので、この項目を新し
いスタックに転送しなければならない。この場合、捨て
るべきスタック項目は、この項目が失われていないこと
を確認するため最初に検査する。(第28図には、この
検査を含むスタック圧縮ループ(ステップ1940〜1
950)を示している。FIR3TLNO>=WRAP
の場合、前記検査を省略した代りのループを開始するこ
とがある。)スタックを圧縮した後、もう1つのコピー
を最後の項目から作る(ステップ1920)。このコピ
ーは、更に多くの行を処理するとき重ね書きすることが
できる。
すべての可能な入力行を読込み、しかもFINISHL
INESが行を解放できない場合は、次゛□′□;1.
       の行を、たとえ完全に処理されていなく
ても、送出する必要がある。これは、(後に行プロセッ
サによる変更を試みた場合)出力イメージの質に影響を
及ぼすことがある。第29図は1行を捨てるのに用いる
手順を示す。解放すべき行を記述するバッファの終りを
、一時ポインタTによりアドレス指定し、その位置を指
すようにOLIMをリセットする。Tは、解放された行
がバッファの最後の行でない限り、新しい最初の行の先
頭のアドレスである。この場合(T=END) 、Tを
バッファの先頭にラップアラウンドし、新しい最初の行
のアドレスを得る必要がある1次いで、新しいFIR8
Tの値としてTを記憶し、最初の行の行番号を増分する
(ステップ1990)、最後に、新しい行FIR8Tの
項目を包含するようにスタックを変更する。これを行な
わねばならないのは、行FIR8Tのアドレス指定が必
要になり、しかもスタックにその項目がない場合、解放
された行のアドレスを索引するとともに1行FIR8T
に達するまでバッファを通してカウントを上げようhi
sヵ1.、−Qあう、、ヵ1,4カ、6.ヶよ3ゎえ6
1を記述するバッファがそのままの状態であるという保
証はないので、前記動作は許されない。スタックを固定
するには、行番号が新しいFIR8TLNOよりも小さ
いか、または等しい最初の行を記述する項目を見つけ、
行FIR5TLNOの項目に置換える。
新しい入力行のスペースが十分でなく、使用可。
能なスペースが、解放されていない行バッファにある行
により制限され、FINISHLINESがスペースを
解放できない場合は、たとえ解放すべき行が完全に処理
されていなくても、新しい入力行にスペースを与えるの
に十分な行を送出する必要がある。第30図は行を捨て
るのに用いる手順を示す。この手順から新しい行に必要
な記憶領域の終りのアドレスを得る。このアドレスがE
NDよりも大きいか、またはENDに等しい場合、バッ
ファの終りまでのすべての行を解放する必要がある。バ
ッファの先頭の追加の3行は解放しなければならない。
なぜなら、垂直拡大アルゴリズムが終了し1行が解放さ
れるまで、新しい行を書込むのに必要な記憶領域を使用
できないからである。従って、FIR8TおよびFIR
8TLNOを、バッファ内の4番目の行のアドレスおよ
び行番号を指すようにそれぞれリセットし、新しい最初
の行の項目をスタックに加え、OLIMを。
(OUTがFIR8Tよりも大きい、すなわち、まだラ
ックアラウンドされていない場合には)ENDにセット
するか、または、(OUTが既にラップアラウンドされ
ている場合Jこは)FIR8Tにセットする6次いで、
制御を、出力行を戻す手順に移す。
所要の記憶領域の終りのアドレスがENDよりも小さい
場合(ステップ2010)、新しい行を読込み中の領域
を越えていくつかの入力行を保持できることがある。一
時ポインタTおよびカウンタCTを、現在の行FIR8
Tのアドレスおよび行番号によりそれぞれセットしくス
テップ2030)、解放すべきスペースの終りの後に開
始する行が見つかるまで1行バッファ内を進むループを
開始する。次いで、3つの追加行を処理する。このプロ
セスでラップアラウンドが行なわれた場合、バッファの
先頭の少なくとも1つの行を捨て、FIR8TおよびF
IR3TLNOをリセットしてバッファの先頭の適切な
行を指示し、新しい最初の行の項目をスタックに置き、
(OUTがラップアラウンドされたかどうかにより)O
LIMti−ENDまたはFIR8Tにリセットする必
要がある。
ラップアラウンドが生じない場合は、TおよびCTは、
行バッファの行の終りおよびラップ行を与えるか(Tが
ENDよりも小さくない場合)、または保持されている
ことがある最初の行のアドレスおよび行番号を与える。
TがENDよりも小さくない場合、ラップ行は新しい行
FIR8Tになり、その行番号およびアドレスをF I
R5TLNOおよびFIR8Tとして書込む(ステップ
2170)。行バッファにある最後の行の終りを指すよ
うにOLIMをセットするので、出力はその点まで続<
、TがENDよりも小さい場合、TおよびCTを、新し
い行FIR8Tのアドレスおよび9′11      
行番号として書込み、出力限界○LIMを、その行の先
頭を指すようにセットする(ステップ2180)0次い
で、新しい行FIR8Tの項目をスタックに置き、制御
を、出力行を戻すメインループの部分に戻す。
第31図は行プロセッサのメインループを示す。
このループは、現在の行を記述するバッファにあるラン
終了のすべてにわたって読取り、経歴を更新し、ラン終
了が位置を変更する場合は後退して前の行を変更するこ
とがある。ラン終了の変更(画素の追加または除去)に
より、垂直方向の縁の平滑化を行なう。
このループは、4つのポインタを用いて、現在および前
の行のラン終了バッファ(PCおよびPP)ならびに関
連する経歴バッファ(pxcおよびPXP)をそれぞれ
アドレス指定する。半ワードのベクトルCHおよびPH
は、PCおよびPPに基づいて生成し、ラン終了を含む
、白のラン終了を、4・で割切れる番号により索引し、
黒のラン終了は4で割切れない番号により索引する(例
えば、CH(4)は白のラン終了、PH(2)は黒  
    1のラン終了を示す)。変数0RIGW、FL
GW、0RIGBおよびFLGBtePXCに基づイテ
生成する。これらは新しい行のための起点行およびフラ
グである。変数00RIGW、0FLGW、○0RIG
Bおよび0FLGBは経歴行(古い行)関連の対応する
変数である。本発明の良好な実施例では、起点行の値は
半ワードであり、フラグは前述のF1〜F7の7つのビ
ットフラグを含むバイトである。各カラーの経歴に4バ
イトを割当てるので、ラン終了の対当り合計8バイトを
使用する。
下記の説明では、フラグFLGW、0FLGW、FLG
Bおよび0FLGBの集りを、ある場合には、まとめて
検査し、他の場合には1個々のビットフラグを検査する
。フラグ名の接頭部110 F+は経歴行フラグである
ことを示し、接尾部11 W T1またはIJB”は指
定カラーを示す。従って、0FIBは、経歴行(0)の
黒の縁CB)で左ジョグ1が先行したかどうかを表わす
フラグである。
このループの開始に当り、現在の行のラン終了バッファ
にあるすべてのラン終了を3倍しくステップ2190)
、正確に3倍に拡大した行を生成する。続行する行を処
理する際、画素をラン終了に付加し、またはラン終了か
ら画素を取除くことができる。メインループは、2つの
白のラン終了(一方は前の行、他方は現在の行のラン終
了)の比較で開始する(ステップ2200)、両者が等
しい場合、垂直の端は前の行から現在の行に続くので、
前の行の経歴情報をコピーし、現在の行の経歴バッファ
に入れる。22のラン終了が等しくない場合、1群の手
順の1つを選択し、生起した特定のパターンを処理する
。これらの手順については後に詳述する。制御は、使用
した手順に応じて、SW(白の開始)またはSB(黒の
開始)と表示した点に戻ることができる。場合によって
は、下位手順によりループから抜出す(現在の行のラン
終了バッファの終りに出会った場合)。
白のラン終了を処理した後、2つの黒のラン終了を比較
する(ステップ2220)。この場合も。
両者が等しければ、垂直の縁は現在の行に続く。
次に、現在の行の終りに達したかどうかを検査する(ス
テップ2230)、現在の行の終りに達している場合は
、処理は完了しているので、ループは終了する。(この
場合、最後の黒のラン終了の経歴は更新されない。それ
に包含される情報は、位置NcOLsの黒のラン終了を
変更できないので無関係である。)行の終りに達してい
ない場合、黒の縁の経歴情報をコピーして現在の経歴バ
ッファに入れ、前および現在の行の次の白/黒のラン終
了の対を指すように、ポインタPPおよびPCを増分し
、更に対応する経歴データを指すようにポインタPxP
を増分しくステップ2240)、ループは反復する。
垂直の縁の開始、終了または位置変更の場合を処理する
手順は4つの下位手順により、前の行を変更して縁を平
滑化する。これらの手順には下記を含む。
I NCW :白のラン終了に画素を付加する(・〜、
                     (ラン終
了増分)・DECW:白のラン終了か、ら画素を除去す
る(ラン終了減分)。
INCB:黒のラン終了に画素を付加する(ラン終了増
分)。
DECB :黒のラン終了から画素を除去する(ラン終
了減分)。
これらの手順の各々は2つの変数5TART(変更すべ
き最初の行の行番号)およびCT(変更すべき行の番号
)を必要とする。ラン終了は前の行バッファから読取る
第32図は、代表的な例としてINCW手順を示す、シ
フトすべき垂直の縁の位置を示すRE(ラン終了)を前
の行バッファから読取る(ステップ2250)。(DE
CWおよびDECB手順の場合は、黒のラン終了PH(
2)を読取る。)ラン終了が0とNC0LS(7)間(
OとNC0LSを除く)にない場合は動作は生じないの
で(ステップ2260)、イメージの縁におけるラン終
了が変更されるのを阻止する(例えば、黒の領域の縁は
引込まれず、境界に1カラムの白の画素は現ねれない。
)。次いで5TARTを、なお変更に使用可能な最初の
行の行番号と比較する(ステップ2270)。5TAR
Tの方が小さい場合、変更を要求された行を既に垂直拡
大手順に送出している。従って、変更は行なわれず、変
更されることになっていた行の番号をカウンタERRB
ITSに加える(ステップ2280)。このカウンタは
出力イメージにある画素数を示すが、その値は。
入力行バッファが事実上無限大であった場合の値とは異
なる。
変更が必要であり、可能であることが確認されると、ラ
ン終了バッファを変更するプロセスを開始する。最初に
変更する行は、インデックスで行アドレスを索引し、必
要なら、正しい行が見つかるまで行バツフア内を調べる
ことにより、一時ポインタTによりアドレス指定し、ラ
ン終了を置換えることになっている値Xを計算する。(
DECWおよびDECB手順の場合は、XをRE−1と
して計算する。)次いで1反復する毎に1行ずつ変更す
るループを開始する。最初に、Tによりアドレス指定し
たラン終了バッファでラン終了REを探索し、又と取換
える(ステップ2300)。
ラン終了は白(INCBおよびDECBの場合は黒)で
あることが分っているので、バッファ内の項目を半分探
索するだけでよい6次いで、Tを。
Tによりアドレス指定したラン終了バッファの長さだけ
増分し、ENDと比較する(ステップ2310)。T=
ENDの場合、Tを行バッファの先頭にラップアラウン
ドしなければならない(ステップ2320)。次に、変
更する行番・号のカウントを1減分しくステップ233
0)、カウントがOよりも大きい場合(ステップ234
0)、ループを反復する。
第33図以下の図面は、垂直の縁をシフトする場合の処
理に用いる手順の詳細を示す。行変更の流れ図は対応す
る部分的なイメージ例を示す図面と対応して順次に説明
する1部分的なイメージは。
正方形のグリッドを画素の単位として描いている。
二重のクロスハツチ領域は、元のイメージカラム(3倍
されたラン終了により示した行では、3カラムからなる
各グループの中央のカラム)を表わす。一種のクロスハ
ツチ領域は、ラン終了を3倍することにより補間し、所
定の平滑化動作により変更した画素を示す。実線は、補
間された画素を付加または除去した縁を示す。
垂直の縁をシフトする手順は下記のように分解すること
ができる。
2つの白のラン終了の比較 現在のラン終了の左の経歴 (PH(0)<CH(0)) 現在のラン終了の右の経歴 (CH(0) <PH(0) ) 2つの黒のラン終了の比較 現在のラン終了の左の経歴 (PH(2)<CH(2)) 現在のラン終了の右の経歴 (−CH(2) <PH(2) ) 左上に黒がある4つの角 左上に白がある4つの角 最初の主要な2つのグループを実行する手順は。
′1)    おッ。ヤッヶ、Dユイ27.−771.
−オう。64つの角”の手順は、比較手順の1つによる
か、またはもう1つの“4つの角”の手順による処理の
後に生じ、同じカラーの2つのランが角で接する場合に
、それと同じ特徴を、拡大されたイメージで確実に保持
する。
最初に、2つの白のラン終了を比較するプロセスについ
て説明する。条件PH(0)<CH(0)が真の場合、
現在の行の白のランは、前の行の白のランの右で終了す
る1次に前の行で次の黒のラン終了の位置を検査する。
CH、(0)<PH(2)の場合、前記黒のランは、現
在の行の白のランの右で終了するので、2つの白のラン
終了は、ある形状のイメージの同じ縁を形成する。第3
3図は、このような場合に必要な処理を示し、関連する
ランのパターンを第34図(a)に示す。現在の行番号
を新しい0RIGWとして書込み(ステップ2350)
、新しい経歴バッファにあるフラグをセットする。白の
縁は右ジョブを示すので、ジョ″′)g″< I Lo
”J L、 bz fys・*t=*t 1A k) 
tllyz”i(ステップ2360)により、FG3ま
たはFG4をセットする。(長さ1のジョグの検査では
元のランの長さがすべて3倍されているから、ジョグの
幅を3と比較する。)明らかに左ジョグもしくはパスモ
ードはなく、CH(0)で終了する白のランに右上で接
するランもないので、この手順は実行されない。(なぜ
なら、PH(0)で開始する黒のランに、その左下でラ
ンが接した場合、Lg 4つの角”ルーチンの1つがこ
のケースを処理するからである。、)従って、他のフラ
グはすべて0である。
フラグをセットした後、古いフラグを検査し、前の行で
終了した縁が、縁の開始直前に何を行なったかを判定す
る(ステップ2390)。0FGW1または0FGW2
がセットされている場合は左ジョグがあったことが分り
、0FG3または0FG4がセットされている場合は右
ジョグ、その他の場合はパスがあったとこが分る。左ジ
ョグが生じた場合、少なくとも1つのカラムの黒の画素
が左に突出て白の領域に入ったことを示す(第34図(
b))。この場合、突出た部分に、その左上で接する黒
のランがなければ(OFG6W=O)突出た部分の縁は
、第34図(b)に示すように1画素右に戻され、張出
しを少なくする(ステップ2440)。
パスの状態が、現在の白の形状の縁の位置のシフトより
も先行した場合、白の領域は上方に突出て黒の領域に入
る。この場合、突出たランの最上部の幅が1に等しいか
、または1よりも大きいかどうかを判定する(ス′テッ
プ2420)。最上部の幅が1よりも大きい場合は、直
角の角を保持する。最上部の幅が1に等しい場合、白の
領域の縁を、縁を含む行の後半のランに白の画素を1つ
加えて平滑化する(第34図(c))。
もう一つの右ジョグが現在の右ジョグよりも前にあった
場合、現在の行番号CURから元の0ORIGWを引い
て垂直の縁の長さを決定する(ステップ2400)、縁
の長さが1の場合、変更は不要である。縁の長さが2に
等しい場合、突出ているランの始まりから黒の画素を除
去する(第34図(d))。この処理により、垂直補間
の場合と同様に、縁の平滑化が行なわれ、白のスペース
の量もいくらか増加する。縁の長さが2よりも大きい場
合、右ジョグの大きさを検査する(ステップ2470)
。どちらかが1画素よりも長い場合、直角の角が認めら
れるので、そのままにしておく。
ジョグがどちらも1画素°の場合、縁は垂直方向に急傾
斜しているので1行の最上部の1/3から白の画素を除
去して最下部の1/3に白の画素を付加することにより
、平滑化を行なう(第34図(e))。
PH(0)<CH(0)で、しかもPH(2)<=CH
(2)の場合、先行する行の黒のランは、白のランが終
了する点かまたはその左で終了する。
この場合に実行する手順を第35図および第36図に、
関連する種々の起こりうるイメージ例を第37図に示す
、第37図(a)は、PH(2) =CH(0)の最初
の状態を示す(ランが角で接する)。前の行に黒の形状
のパスがある(PH(2)<CH(o))場合を第37
図(b)に示す。突情      出ている形状の左の
縁の処理は、どちらの場合も同じで、最初に、その縁の
前のジョグの方向を判定する(ステップ2490)。左
ジョグがある場合、黒の画素のカラムは左側の白の領域
に突出ている。黒の領域に左上で接するランがない場合
縁を、その高さ全体にわたって白のラン終了を増分する
ことによりトリム(trim)する、パスが生じた場合
、白の領域は黒の領域に突出る。この場合、平滑化は行
なわない。前の白のジョグが右ジョグであった場合、突
出た黒の領域は、底面に向って右に傾斜する。この場合
、垂直の縁の高さを調べる(ステップ2530)。縁の
高さが1画素の場合、平滑化は行なわない。縁の高さが
2画素に等しい場合、黒の画素を角から除去する(第3
7図(c))、縁の高さが2画素よりも大きく、両ジョ
グが1画素の変化の場合、垂直方向に急傾斜しているの
で、垂直の縁の最上部の173から白の画素を取除き、
最下部の1/3に白の画素を付加して平滑化する(第3
7図(d))。
黒の領域の左の縁を処理した後、CH(0)とPH(2
)を比較しくステップ2580)、黒の領域が右下の角
で、もう1つの黒の領域に接するかどうかを調べる。2
つの黒の領域が接する場合は、制御は°゛4つの角″の
プロセスの入力点BWに進み、2つの黒の領域が接する
場合の処理を行なう、その他の場合は、黒の形状のパス
であるので、その右縁をパスのプロセスにより処理する
パスのプロセスは第36図に示す。このプロセスは、フ
ラグ0FLGBにより示した前の黒のジョグの方向に検
査から開始する(ステップ2590)。
前の黒のジョグが左ジョグであった場合、黒の形状の縁
は底面に向って左に傾斜する。垂直の縁の高さを検査し
くステップ2620)、aの高さが1画素の場合は、平
滑化は不要である。縁の高さが2画素に等しい場合、黒
の画素を、黒の領域の底面の終りから除去する(第37
図(e))。
縁の高さが2画素よりも大きく、かつ、ジョグと黒の形
状の底面の幅とがどちらも1に等しく、かつ、黒の領域
が、黒の領域の底面の左に広がっている(すなわち、白
の右ジョグがある)場合は、縁を、垂直の縁を含む最初
の1/2の行の終りに黒の画素を付加して平滑化する(
第37図(f))。
黒の形状の右縁における前のジョグが右ジョグであった
場合、またはパスがあった場合には、黒の画素のカラム
は右側の白の領域に突出る。この場合、黒の領域は1分
離した1画素幅の垂直方向のすしであるか、または右上
の角に接する黒のう′ンを有する場合を除き、第37図
(g)に示すように、その高さ全体にわたって1画素だ
けトリムしなければならない。垂直方向の1画素幅のす
しを見つけるには、前の白のジョグ(このようなジョグ
があった場合、その幅は1画素幅よりも大きくなければ
ならない)ならびに最上部の黒の形状の幅を検査する。
0F7Bの検査(ステップ2680)では、ランが角に
接するかどうかを調べる。
条件CH(0)<PH(0)が真の場合、現在の行の白
のランは前の行の白のランの左で終了する。更に、PH
(0)<CH(2)が真の場合。
現在の行における次の黒のランは、前の行の白のランの
右で終了するので、2つの白のランは同じ形状の縁を形
成する。この場合に実行する手順を第38図に、関連し
て生じる種々のイメージ例を第39図に示す。第39図
(、)はCH(0)<PH(0)<CH(2)の条件を
満たす最初の状態を示す、現在の行番号を新しい垂直方
向の縁の起点として記憶しくステップ2740)、フラ
グは1の左ジョグまたは2以上の左ジョグを表わすよう
にセットする。次に、前の白のジョグの方向を検査する
(ステップ2780)。もう1つの左ジョグがあった場
合、垂直方向の縁の長さを判定する(ステップ2820
)。縁の長さが1の場合は何も行なわない。縁の長さが
2に等しい場合、突出ている角の発端から黒の画素を除
去する(第39図(b))。縁の長さが2よりも大きく
、かつ、左ジョグのシフトがどちらも1画素であった場
合、縁は急傾斜しているので、縁の長さの最上部の17
3の部分に白の画素を付加し、最下位の173の部分か
ら白の画素を除去する(第39図(c))。
垂直方向の縁が右ジョブまたはパスの後に始ま鴨   
、え□18.ユtt i (7)a # c: * i
 ”c。、う。3の場合、縁の長さが1よりも大きく、
かつ、ある限界値(長い行が角で太く見えるのを阻止す
るようにセット)よりも小さければ(ステップ2810
)、角を平滑化すべきかどうかを判定する。角は、平滑
化すべき垂直方向の縁を含む行の最初または最後の1/
4の部分の終りから白の画素を除去して平滑化する。最
上部の角を平滑化するのは。
1画素の右ジョグが先行し、かつ、白の領域かもう1つ
の白の領域に右上で接しない場合である(第39図(d
))。最下部の角を平滑化するのは、1画素の左ジョグ
が続く場合である(第39図(e))。
CH(0)<PH(0)およびCH(2)(=PH(0
)が真の場合、新しい黒の形状が現在の行で始まる。c
H(2)=PH(0)の場合(第40図ステップ292
0)、この形状はもう1つの黒の領域に右上で接する。
この場合、突出ている形状の左縁の経歴項目が要求され
るので、新しい白(D75グを2′7ト7″プ5・白0
領域0左″′jヨグが1よりも大きかったか、または1
に等しかったかを表示し、現在の行を新しい垂直方向の
縁の起点として記憶する(ステップ2980)。次いで
、制御はパ4つの角″の手順の1つの入力点WB (第
52図)に進み、新しい形状の右縁を処理する。
C)((2)<PH(o)の場合、新しい黒の形状の両
方の縁の新しい経歴項目を生成する。白のフラグをセッ
トする前に、現在の行の白のランの長さが1に等しいか
、または1よりも大きいかを判定するとともに、現在の
行の白のランが前の行の白のランに連結するか、または
角で接するだけかを判定する。黒のフラグの設定は、黒
のランの長さと1とを比較した上で選択する。この縁で
はパスは必ず生じており、角で接するランはない6現在
の行番号を新しい垂直方向の左右両方の縁の起点として
記憶し、PCおよびPxCポインタを増分して現在の行
の新しい白/黒のランの対、および対応する経歴をアド
レス指定しくステップ3050)、制御を、接続点SW
を介して、2つの白のラン終了を検査するメインループ
の部分(第31図)に戻す。
次の手順のグループは、2の黒のラン終了の比較で不一
致が生じる場合に使用する0条件PH(2)<CH(2
)が真の場合、現在の行の黒のランは、前の行の黒のラ
ンの右で終了する。次に。
前の行における次の白のラン終了の位置を調べる。
CH(2)<PH(4)の場合、前記臼のランは、現在
の行の黒のランの右で終了するので、2つの黒のラン終
了は、同じ形状の縁を形成する。この場合の処理を第4
1図に、関連するイメージ例を第42図に示す。第42
図(a)はPH(2) <CH(2)<PH(4)の条
件を満足するラン終了の状態の1つを示す。現在の行番
号を新しい0RIGBとして記憶しくステップ3060
)、新しい経歴バッファのフラグをセットする。黒の縁
は右ジョグを示すので、ジョグの幅が1に等しいか、ま
たは1よりも大きいかにより、BPO4またはBPO4
をセットする。左ジョグまたはパスモードがないことは
明らかであるから、CH(2)で終了する黒のランに右
上で接するランはなく、この手順は、PH(2)で始ま
る白のランに左下で接するランがあった場合には実行さ
れないので、他のフラグをすべて0にセットする。
フラグをセットした後、古いフラグを検査し、前の行で
終了した縁が、縁の開始直前に何を行なったかを判定す
る。もう1つの右ジョグが現在の右ジョブの前にあった
場合は、垂直方向の縁の長さを調べる。縁の長さが1画
素の場合、変更は不要である。縁の長さが2画素に等し
い場合、突出ているランの発端から黒の画素を除去する
(第42図(b))。縁の長さが2よりも大きく、かつ
、2つの右ジョブのシフトがどちらも1画素の場合(ス
テップ3160)、縁は垂直方向に急傾斜しているので
1行の最上部の1/3の部分から黒の画素を除去し、最
下部の173の部分に黒の画素を加えて平滑化する(第
42図(c))。
左ジョグまたはパスが生じた場合、白の1画素または2
画素以上のカラムが左に突出て黒の領域に入る。この場
合、縁の長さが2よりも大きく限″゛     □よ’
) ’b iJsあ4.ゎ、2.ッ。140)、’Mを
平滑化するかどうかを検査する。角を平滑化するには、
平滑化する垂直方向の縁を含む行の最初または最後の1
/4の部分の終りに黒の画素を付加する。最上部の角を
平滑化するのは、1画素の左ジョグが先行し、かつ、白
の領域がもう1つの白の領域に左上で接しない場合であ
る(第42図(d))。また、最下部の角を平滑化する
のは、1画素の右ジョグが続く場合である(第42図(
e))。
PH(2)<CH(2)かつPH(4) <=CH(2
)の場合、先行する行における次の白のランは、黒のラ
ンの終了位置またはその左で終了する。この場合に実行
する手順を第43図および第44図の流れ図に、関連す
る種々の起こりうる状況を第45図に示す、第45図(
a)はPH(4)=CH(2)の最初の状態(ランが角
で接する)を示す、PH(4)=CH(2)の場合およ
びPH(4)<CH(2)の場合はどちらも、突出た形
状0左0縁2同tll°処1す6″゛要”1・    
  1左ジヨグがある場合、白の画素のカラムは、その
左の黒の領域に突出る。垂直方向の縁が2よりも大きく
限界値よりも小さく(ステップ3280)。
ジョグが1画素のシフトであり、かつ白の領域に左上で
接するランがない場合、上部の角を、縁の高さの174
の黒のラン終了を増加して(ステップ3350)、トリ
ムする(第45図(b))。
パスが生じた場合、白のフィールドは黒の領域に突出る
。この場合、平滑化は行なわれない。前の白のジョグが
右シフトであった場合、突出ている白の領域は底面に向
って右に傾斜する。この場合、垂直方向の縁の高さを調
べる(ステップ3290)。
縁の高さが1画素の場合は平滑化は行なわない。
縁の高さが2画素に等しい場合は、角から黒の画素を除
去する(第45図(C))。縁の高さが2画素よりも大
きく、2つのジョグがどちらも1画素の変化の場合には
、垂直方向の急傾斜が存在する。この急傾斜は、垂直方
向の縁の最上部の1/3の黒の画素を除去し、最下部の
1/3に黒の画素を付加する(第45図(d))。
白の領域の左縁を処理した後、前の行のポインタPPお
よびPXPを、新しい白/黒のラン終了対を指すように
増分する(ステップ3370)。
次にCH2と、(PP増分前にはPH(4)であった)
PH(0)とを比較し、白の領域が右下角−でもう1つ
の白の領域に接するかどうかを調べる(ステップ338
0)、両者が接する場合、制御を“′4つの角”のプロ
セスの入力点WB (第52図)に進め、所要の処理を
行なう。その他の場合は、白の形状のパスが存在するの
で、その右縁を:第44図に示す手順により処理する。
この手順では最初に、前の白のジョグの方向(フラグ0
FLGWで示す)を検査する(ステップ3390)。
前の白のジョグが左ジョグであった場合、黒の形状の縁
はその底面に向って左に傾斜する。垂直方向の縁の長さ
を調べ(ステップ3420)、それが1画素゛の場合は
平滑化は不要である。縁の長さが2画素に等しい場合、
突出ている角から黒の画素を除去する(第45図(e)
)、縁の長さが2よりも大きく、ジョグが1画素の変化
であって。
かつ前の行の白のランが1画素幅である場合、垂直方向
の縁を含む行の最初の1/2の終りに白の画素を付加し
て緑を平滑化する(第45図(f))。
白の形状の右縁の始まりでパスが生じた場合は。
そのままにしておく。
白の形状の右縁の前のジョブが右ジョグであった場合、
白の画素のカラムがその右の黒の領域に突出る。垂直方
向の縁が2画素よりも大きくて限界値よりも小さく(ス
テップ3430)、前のジョグが1画素の変化であって
、右上の角で接する白の領域がない場合、突出た白の領
域を、垂直方向の縁を含む行の最初の174のラン終了
から白の画素を除去して平滑化する(第45図(g))
−条件CH(2)<PH(2)が真の場合、現在の行の
黒のランは前の行の黒のランの左で終了する。更に、P
H(2)<CH(4)が真の場合、現在の行における次
の黒のランは前の行の白のランの右で終了するので、同
じ形状の縁を形成する。
この場合の手順を第46図に、関連する種々の起・こり
つる状況を第47図に示す。第47図(a)ハ1   
   は最初の状態を示す。現在の行番号を垂直方向の
新しい縁の起点として記憶しくステップ3510)。
フラグを1の左ジョグまたは1よりも大きい左ジョグを
指すようにセットする。次に、前の黒のジョグの方向を
調べ(ステップ3550)、もう1つの左ジョグがあっ
た場合、垂直方向の縁の長さを調べる(ステップ358
0)、縁の長さが1画素の場合は何も行なわない、縁の
長さが2画素に等しい場合、突出ている角の始まりから
黒の画素を除去する(第47図(b))、縁の長さが2
画素よりも大きく、2つの左ジョブがどちらも1画素の
シフトであった場合、緑は急傾斜するので、縁の長さの
最上部の173に黒の画素を付加し、最下部の1/3か
ら黒の画素を除去して平滑化する(第47図(C))。
垂直方向の縁が右ジョグまたはバスの後に開始した場合
、黒の領域は白の領域に突出る。突出た部分に接する黒
のランがない場合、高さ全体の黒の画素をトリムして縁
の出張りを小さくする(第47図(d))。
縁を処理した後、現在の行、前の行およびそれ    
 1らの経歴バッファのポインタを、すべて、次の白/
黒のラン終了の対を指すように増分しくステップ363
0)、制御を、メインループの部分に戻して2つの白の
ラン終了を検査する。
CH(2)<PH(2)かつCH(4) <==PH(
2)の場合、現在の行で新しい白の形状が始まる。CH
(4)=PH(2)の場合(第48図、ステップ364
0)、この形状はもう1つの白の領域に左上で接する。
この場合、突出ている形状の左縁の経歴項目が必要にな
り、新しい黒のフラグをセットアツプして、黒の領域の
左ジョブが1画素よりも大きいか、または1画素に等し
いかを示し、現在の行を垂直方向の新しい縁の起点とし
て記憶する(ステップ3700)。次に、前の行のポイ
ンタを増分した後、制御を4つの角”の手順の1つの入
力点BW(第49図)に進め、新しい形状の右縁を処理
する。
CH(4)<PH(2)の場合、新しい白の形状の双方
の縁の新しい経歴項目を生成しなければならない、黒の
フラグを2画素以上の左ジョグを示すようにセットし、
垂直方向の縁の起点を記憶する。更に、PCおよびPX
Cを、現在の行における次の白/黒のラン終了の対およ
び対応する経歴データをアドレス指定するように増分し
、現在の行番号を2番目の垂直方向の縁の起点として記
憶する(ステップ3650)。現在の行の黒のランの長
さが1画素に等しいか、または1画素よりも大きくかど
うかを判定しくステップ3690)白のフラグをセット
する。制御を、メインループ(第31図)の、2つの黒
のラン終了を比較する部分に進める。
第49図、第50図および第51図は、前の行の黒のラ
ンの右下の角が、現在の行の黒のランに接する場合(第
51図(a))に用いる最初の′4つの角″′の手順(
BW)を示す、最初の課題は、終了しつつある黒の形状
の縁を、必要なら平滑化することである。縁が1つの左
ジョグで始まり、突出ている白の領域が左上の角で白の
ランに接しないで、垂直方向の縁の長さが2と限界値の
間(2と限界値を含まず)にある場合、垂直方向の端を
含む行の最初の1/4に黒の画素を付加して(ステップ
3780)、白の領域の上部の角を平滑化する(第51
図(b))。
緑を平滑化した後、白のフラグを、右上で接するランを
示すようにセットし、現在の行番号を垂直方向の新しい
縁の起点として記憶し、前の行のポインタPPおよびP
xPを、前の行の新しい白/黒のラン終了の対および関
連する経歴データをアドレス指定するように増分する(
ステップ3790)。次の検査で、現在の行の黒のラン
が前の行の黒のランに連結しているかどうかを判定する
(ステップasoo)、PH(0)=CH(2)の場合
、もう1つの′″4つの角”の状況が存在するので、そ
れを処理する他の′4つの角″′の手順(第52図)に
移る。PH(0)>CH(2)の場合、黒のランの右側
は前の行の黒の領域に連結していないので、垂直方向の
新しい縁の新しい経歴項目が必要になる。黒のフラグを
セットし、左上に接するラン、および必要なら、パスモ
ードの!、%、      1のラン長を記録する。現
在の行番号を垂直方向の縁の起点として記憶し、現在の
行のポインタPCおよびPXCを、次の白/黒のラン終
了の対およびその経歴データを指すように増分する(ス
テップ3850)。次いで制御を、メインループ(第3
1図)の白のラン終了を比較する点に進める。
PH(0)<CH(2)の場合、白の形状は前の行で終
了しているので(第51図(c))、その形状の右縁は
平滑化を必要とすることがある。
この手順を第50図に示す。前のジョグが左シフトであ
った場合(ステップ3860)、白の形状の右縁はその
底面に向って左に傾斜する。垂直方向の縁の長を調べ(
ステップ3900)、縁が1画素の高さの場合、平滑化
は行なわない、縁が2画素の高さに等しい場合、突出て
いる角から黒の画素を除去する(第51図(d))。縁
が3画素以上の高さであり、先行するジョブおよび白の
形状の底面がどちらも1画素の幅を有する場合は、縁の
含む行の最初の1/2の部分に白の画素を付加して縁を
平滑化する(第51図(e))。
白の形状は、パスで始まった場合はそのままである。
白の形状の右縁における前のジョブが右シフトであった
場合、白の画素のカラムは黒の領域に突出る。縁の長さ
が2と限界値の間(2と限界値を除く)にあり(ステッ
プ3890)、ジョグのシフトは1画素であって、白の
領域が、突出ている領域の右上の角に接していない場合
、その角を、縁を含む行の最初の1/4の部分の白の画
素を除去して平滑化する(第51図(f))。
いずれの場合も、制御を、メインループ(第31図)の
、2つの黒のラン終了を比較する点に戻す。
他の4つの角″′の手順WBを第52図、第53図およ
び第54図により説明する。この手順は、前の行におけ
る白のランの右下の角が現在の行の白のランに接する場
合に用いる(第54図(a))。
最初の課題は、必要なら終了しつつある白の形状の縁を
平滑化することである。縁が1の左ジョグで始まり、突
出ている黒の領域が左上の角で黒のランに接しないで、
垂直方向の緑の長さが2と限界値の間(2と限界値を含
まず)にある場合、垂直方向の縁を含む行の最初の17
4の部分に白の画素を付加して(ステップ4020)、
黒の領域の上部の角を平滑化する(第54図(b))。
縁を平滑化した後、黒のフラグを、右上で接するランを
示すようにセットし、現在の行番号を垂直方向の新しい
縁の起点として記憶し、現在の行のポインタP、Cおよ
びPXCを、現在の行の新しい白/黒のラン終了の対と
関連する経歴データとをアドレス指定するように増分す
る(ステップ4300)。次いで、現在の行の白のラン
の右側が前の行の白のランに連結されているかどうかを
判定する(ステップ4040)。PH(0)=CH(2
)の場合、もう1つのパ4つの角″の状態が存在するの
で、制御を他の′4つの角″′の手順(第49図)に進
め、その処理を行なう。PH(2)>C)((0)の場
合、前述のような連結はないので、垂直方向の新しい縁
に必要な経歴項目を新たに作成する。白のフラグは、左
上で接するランまたはパスモードの1のラン長を記録す
るようにセットする。現在の行番号を垂直方向の縁の起
点として記憶しくステップ4090)、制御をメインル
ープ(第31図)の、黒のラン終了を比較する点に戻す
PH(2)<CH(0)の場合、黒の形状は前の行で終
了しているので(第54図(C))、その形状の右縁の
平滑化を要することがある。この場合の動作は第53図
で行なう。前のジョグが左シフトであった場合(ステッ
プ4100)、黒の形状の右縁はその底面に向って左に
傾斜する。垂直の縁の長さを調べ(ステップ4140)
、縁が1画素の高さの場合、平滑化は行なわない。縁が
2画素の高さに等しい場合、突出ている角から黒の画素
を除去する(第54図(d))。縁が2画素よりも高く
、前にあるジョグおよび白の形状の底面がどちらも1画
素の幅で、次の白のランが右ジョブで始まる場合、縁を
含む行の最初の1/−2゜の部分に黒の画素を付加して
縁を平滑化する(第”    54□89.。
白の形状の右縁がパスまたは右シフトの場合、黒の画素
のカラムは白の領域に突出ている。前の行において平滑
化すべき縁に先行する白の領域が右ジョグまたは左ジョ
グを含むんでいた場合、黒の領域が2画素以上の幅にな
る点がある。その他の場合は、BPO4の値は、領域幅
が1画素か、または2画素以上であることを示す。領域
幅が2画素以上あるが、黒のランに右上で接しない場合
黒の領域を、その右縁から1カラムの黒の画素を除去し
てトリムする(第54図(f))。
いずれの場合も、前の行のポインタPPおよびPxPを
、前の行における次のラン終了の対と、対応する経歴デ
ータとをアドレス指定するように増分しくステップ42
30)、制御を、メインループ(第31図)の、2つの
白のラン終了を比較する点に戻す。
前述の手順は、元のイメージを90度回転し、垂直補間
アルゴリズムを適用して拡大するのに似ている。小さな
差異はあるが、両手順はほぼ対称的で、これらの手順を
使用したイメージの体裁は、単純に画素を反復して形成
するイメージに比し非常にすぐれている。更に、前述の
ような手順は、特定の出力装置の特徴を補償するという
柔軟性を具備する。
垂直拡大手順は、任意の倍数に拡大することが必要な環
境でも使用可能であり、整数倍に拡大するためのいくつ
かの手順を開発することができる。
一般に、拡大手順は、入力行の対ごとに、何行捕間すべ
きかを決め、適切な下位手順を用いて実行することがで
きる。
要するに、前述の解像度変更方法は、イメージを、2.
54cm当、す200画素の走査形式から、特定の高解
像度プリンタで印刷するのに必要な2゜54国当り60
0画素の形式に変換する方法を具備する。プロセスは、
イメージを水平方向に3倍に拡大し、その結果生じたイ
メージを垂直方向に3倍に拡大し、イメージデータをラ
ン終了形式で操作し、かつソフトウェアで効率的に実現
しろる簡単な1組の規則により動作する。
G9発明の効果 本発明の方法により、イメージデータをラン終了形式で
操作して水平方向ならびに垂直方向に順次拡大し、イメ
ージを特定の高解像度プリンタで印刷するのに適合する
形式に変換することができる。
【図面の簡単な説明】
第1図は本発明によるイメージ拡大方法の概要図。 第2図は本発明による垂直拡大プロセスを示す図、 第3図は本発明の方法による垂直拡大の制御コードを示
す流れ図、 第4図は本発明の方法による垂直拡大プロセスを示す流
れ図、 第5.7,9.11.13.15,17.19および2
1図は第4図に示された方法で用いる下位手順を示す流
れ図。 第6.8.10.12.14,16.18.20および
22図はこれらの下位手順の使用例を示す図、 第23図は水平拡大アルゴリズムにより、特定の画素位
置のランが最後に位置を変更した場所を決定するのに必
要な経歴情報の例を示す図、第24図は水平拡大アルゴ
リズムにより、特定の画素位置のランで、その現在位置
に移動する前に何が行なわれたかを判定するのに必要な
経歴情報の例を示す図、 第25図は水平拡大の行バッファと指標スタックの構成
を示す図。 第26図は本発明による方法の水平拡大の制御コードを
示す流れ図、 第27図は行を水平方向に拡大するループを示す流れ図
、 第28図は水平方向に拡大された出力の行を解放し、イ
ンデックススタックを圧縮するのに用いる手順を示す流
れ図。 第29図は水平行プロセッサによるすべての行の変更が
完了する前に出力の行を解放するのに用・・、、   
 b゛a*′$″″″< t ’t!f、h Z 。 第30図は水平行プロセッサによるすべての行の変更が
完了する前に出力の行のグループを解放するのに用いる
方法を示す流れ図。 第31図は本発明の方法による水平拡大プロセスを示す
流れ図。 第32図は水平に拡大された行のラン終了を変更するの
に用いる手順の1つを示す流れ図。 第33.35.36.38.40.41.43.44.
46.48.49.50.52および53図は。 第31図に示す方法で用いる下位手順の流れ図、第34
.37.39.42.45.47.51および54図は
、これらの下位手順の適用例を示す図である6 10・・・・水平拡大手順、20・・・・垂直拡大手順
。 出願人  インターナショナル・ビジネス・マシーンズ
・コーポレーション 代理人  弁理士  頓  宮  孝  −1(外1名
) 12IiJ オ久犬さ剋tこイメージ (フンと冬S形我) ハ1 重置、拡大の制得ロード 第3回 重亘才l!間のメインルーフ。 才 4 図 0A)−KO)<−X−OBH(2) OA)−1(6)<Z−OBH(4)It合ノミン7.
 t K行5YNCBP  手用Q 第5図  z SYNCBPG動イ%%ノ艮の崎1イ11才6図 句のラン於了、0BHTo)<0CH(0)<0BH(
2+1!I WLO+用々 オフ図 才8 口 WLOのttJ作易呆の学伸1 (a) 人口   (bl D−+     (cl 
DII2白のランyp了、0CH(0)<08H(0)
<0CH(2)WHI  手用Q 才9図 1r10 回 WHOの動詐棉釆の辛夢1 (a)   入 口          (b)  [
)雪1              (cl  D−2
Y<−00H(2) 黒のクシ終了、0CH(21<0BH(2)<0CH(
41EIHr手)晴 第11 日 (a)  入口    (bl D*I      (
cl D璽2(d) X=OAH+6)     Te
) Y=OOH(61(f) X>=OAH(41BH
Iの動イl結夙の辛到 才 12  図 爪のラン詳3,0BH(2)<0CH(2)<0BH(
4)BLO呼 用婁 才130 才 14 図 BLOの勤1ト枯呆の辛例 (a1人口   (bl O−1(c) D−2(dl
  X−0AH+6+      Tel  Y−00
8(6)      Tfl  X<0AH(41Y>
−ODH(4) f 15 (¥1 ’WPASSLO手111與 そ]のラン姪%M、0BH(0)<0BH(2)<= 
0CH(0)(a)八〇(b) Y=Z (c)  X10CH(−2>           
  (d)   Y>ZWPASSLOの勅作祢采の辛
γり 才16 圀 セのラン、声些了、0CH(0)<0CH(2)(=O
BH(0)WPASSHr 手lイ黍で 矛17  の −218図 WPASSHI のすかイ丘とき累の1シ4シリ(d)
  Y<−0DH+4)        (・)  Y
>00H+4)         lず)  Y>0O
H(alY<−QC)H(6)        Y<−
ODH(6)(g)Y<−0DH(2)      (
h)Y>0DH(21(i)Y>0DH(2)ODH(
4)<−Z            0DH(4)>Z
枯1 BPASSLO手順 オ 19  回 第20図 EIPASSLOノ動4T−m 派n 4P 9’1(
a)  入口   (b) 0AH(6)>sZ   
((1) O<−2BPASSHr手頑 才21 日 才22図 8PASSH1の物′1γめ泉の幸チ1のり 0さ くa)       (b)       (c)  
     (d)左ジョグlII   PLジコグ〉1
  石ジ」グー1   石ジョブ〉I(e)     
   (f)        (g)ノずス、RL!1
   、!liり・ソテ    石ダ・・/チg装置の
泳のフラグ 才241)       ( ;・へ11 石12性ト方伺に肱犬するル−フ・ 才27 圀 行1酔俳1スタックをFL鳴す6子禰 オ 28 図 第29日 村と才gでる8311句 才30図 1NCW予−嘴 オ 32  日 (a)          (b)         
 (c)(d)          (・) ランP、3の1肚七較具瓢ボ勿串ψリ (PH+01<
CH(01< PH(2)の爲合 )才34 圀 ラン謬了り比執(PH(0) <P+(21<・CH(
01の4合)1・111        才35圀 la)        (bl        (c)
        1dl(・)、、       (f
l       (9)ラン終了の、比東−も釆の辛グ
リ (Pイψ)<PH(2)<−CH(φ)の碍合)第
37回 j ンRゴの比IQ (CH(01< PM(0) <
 CH(2ンngg+オ38 回 la)       (bl       (c)(d
)       (・) ラン%j了@E較拠ff1o辛例  (CH(+111
 < PH+111 < CH(2)c)’4合>ir
 39 図 1°111 ラン終了のス較 CPH(2)<CH(21< PH+
4)の)1@合)才41 図 第42 m ラン終了のt較81い辛移’](PH(2)<CH(2
)<PH(4)の21合 )(a)         
(b)         (c)(d)       
  (e) 才 45 回 (a)        (b)        (c)
        (d)(e)        (f)
        (g)うA修了の貝」交(CHT2)
<PH(2)< CH(41の爲合)第46図 1r47  ロ ランP了a、泗ヒj獣交s%!に’?J  (cH(2
)<pH<2)<cHt4sの16合 )(a)   
    fb)       (cl       l
d)第48図 ランに径Jの比較(CH(21<CH(4)<・PM(
21の場合)う〉3冬ゴの比磨交(CH(0)−PH(
2111* 1才 49 日 オ 50  図 ラン襲4の比較 + CM+01・P)I(−21% 
PH+01<CH(2)の場合)(才31flへン オ 51 日 ラシy杏子の貝ブト準占尤中J (CH(0)−PH(
2)のy徐合 )(a)       (b)    
   (c)(d)        (e)     
   (f)ラン終了のし−K(CH(23−PH(0
)のJ@合ンオ52回 ランと杏子の北1交(CH(−23・PH(01i P
H(23(CH(0)のヂら合)’ff′53  口 R54図

Claims (1)

  1. 【特許請求の範囲】 2進ディジタルイメージを拡大する方法であつて、前記
    イメージのローを、白と黒のラン終了を示す値のシーケ
    ンスとして表示された複数のラン終了表示として記憶し
    、 前記イメージのローの各々を、前記ラン終了表示の各々
    の値を所定の拡大係数F1により変更することにより、
    第1の軸に沿つて拡大し、 前記イメージを、部分的に拡大されたイメージの行間に
    所定の拡大係数F2によりローを補間することにより、
    第2の軸に沿つて拡大し、 前記ステップによりラン終了形式で生成された拡大サイ
    ズのイメージを記憶する ステップを設けたことを特徴とするイメージ拡大方法。
JP60194035A 1984-10-24 1985-09-04 イメ−ジ拡大方法 Expired - Fee Related JP2568493B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US66426384A 1984-10-24 1984-10-24
US664263 1984-10-24

Publications (2)

Publication Number Publication Date
JPS61103276A true JPS61103276A (ja) 1986-05-21
JP2568493B2 JP2568493B2 (ja) 1997-01-08

Family

ID=24665298

Family Applications (1)

Application Number Title Priority Date Filing Date
JP60194035A Expired - Fee Related JP2568493B2 (ja) 1984-10-24 1985-09-04 イメ−ジ拡大方法

Country Status (4)

Country Link
EP (1) EP0179203B1 (ja)
JP (1) JP2568493B2 (ja)
CA (1) CA1248648A (ja)
DE (1) DE3585939D1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62243076A (ja) * 1986-04-16 1987-10-23 Yokogawa Electric Corp 文字フォントの拡大装置
US4953423A (en) * 1988-06-09 1990-09-04 Nissan Motor Co., Ltd. Steering wheel with shock absorber
JPH05258067A (ja) * 1991-12-23 1993-10-08 Internatl Business Mach Corp <Ibm> 圧縮されたイメージを復号する方法
US5295710A (en) * 1990-11-16 1994-03-22 Nissan Motor Co., Ltd. Energy absorbing steering wheel asssembly

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2577748B2 (ja) * 1986-12-01 1997-02-05 サカタインクス株式会社 画像信号の補間方法及びそれを実施する画像信号処理装置
JPS63245569A (ja) * 1987-03-31 1988-10-12 Yokogawa Medical Syst Ltd 画像表示処理装置
JP2912736B2 (ja) * 1991-08-01 1999-06-28 松下電送システム株式会社 符号化および復号化方法
US5745123A (en) * 1995-11-27 1998-04-28 Sun Microsystems, Inc. Method for resizing an image by a factor of two
CN115239561B (zh) * 2022-07-25 2023-04-18 广东保伦电子股份有限公司 一种图像缩小下防止图像剪切现象的处理方法及处理终端

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4124871A (en) * 1977-08-31 1978-11-07 International Business Machines Corporation Image data resolution change apparatus and process utilizing boundary compression coding of objects
US4193092A (en) * 1978-06-21 1980-03-11 Xerox Corporation Image interpolation system
GB2030823B (en) * 1978-10-02 1982-11-03 Ibm Image data manipulation apparatus
DE3483521D1 (de) * 1984-01-16 1990-12-06 Ibm Verfahren zum kodieren und dekodieren eines digitalen bildes.

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62243076A (ja) * 1986-04-16 1987-10-23 Yokogawa Electric Corp 文字フォントの拡大装置
US4953423A (en) * 1988-06-09 1990-09-04 Nissan Motor Co., Ltd. Steering wheel with shock absorber
US5295710A (en) * 1990-11-16 1994-03-22 Nissan Motor Co., Ltd. Energy absorbing steering wheel asssembly
JPH05258067A (ja) * 1991-12-23 1993-10-08 Internatl Business Mach Corp <Ibm> 圧縮されたイメージを復号する方法

Also Published As

Publication number Publication date
EP0179203B1 (en) 1992-04-29
EP0179203A3 (en) 1988-12-14
DE3585939D1 (de) 1992-06-04
EP0179203A2 (en) 1986-04-30
CA1248648A (en) 1989-01-10
JP2568493B2 (ja) 1997-01-08

Similar Documents

Publication Publication Date Title
EP0597555B1 (en) Image processing apparatus
US5847714A (en) Interpolation method and apparatus for fast image magnification
US5043713A (en) Graphic data processing apparatus for processing pixels having a number of bits which may be selected
EP0216501B1 (en) Digital image rotation
US4637057A (en) Rotation of digital images
JPS61103276A (ja) イメ−ジ拡大方法
CN110113617A (zh) 一种图像压缩与解压缩的方法及装置
EP0177640B1 (en) Image reduction method
JPH01304588A (ja) クリッピング処理方式
US6826314B2 (en) Image size transforming apparatus, method and record medium storing image size transform program therein
US5920648A (en) Image processing method and apparatus which replace horizontal and vertical vectors with an inclined vector
JP4109740B2 (ja) 畳み込み走査ラインレンダリング
JPH0370431B2 (ja)
JPH04125786A (ja) 画像データ処理方法および装置
JP3066596B2 (ja) アドレス変換装置
US6677950B1 (en) Graphics computer
JP2002335396A (ja) 画像圧縮データ処理装置および画像表示方法
Misra et al. A memory efficient method for fast transposing run-length encoded images
JPH05342340A (ja) 画像処理方法及びその装置
JP2974596B2 (ja) カラー画像処理装置
JP3236481B2 (ja) 画像変換方法及び画像変換装置
JP3748272B2 (ja) 画像処理装置
JP2744229B2 (ja) 画像処理装置
JP2000184197A (ja) 画像処理装置
JPH05101175A (ja) デジタル2値画像の拡大・縮小処理方式

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees