JPH05205069A - 符号化方法及びその装置 - Google Patents

符号化方法及びその装置

Info

Publication number
JPH05205069A
JPH05205069A JP4010790A JP1079092A JPH05205069A JP H05205069 A JPH05205069 A JP H05205069A JP 4010790 A JP4010790 A JP 4010790A JP 1079092 A JP1079092 A JP 1079092A JP H05205069 A JPH05205069 A JP H05205069A
Authority
JP
Japan
Prior art keywords
edge
data
point
case
pixel
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
JP4010790A
Other languages
English (en)
Other versions
JP3155595B2 (ja
Inventor
Akihiro Katayama
昭宏 片山
Yoshihiro Ishida
良弘 石田
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP01079092A priority Critical patent/JP3155595B2/ja
Priority to EP93100949A priority patent/EP0552791B1/en
Priority to DE69332918T priority patent/DE69332918D1/de
Publication of JPH05205069A publication Critical patent/JPH05205069A/ja
Priority to US08/377,509 priority patent/US5748777A/en
Application granted granted Critical
Publication of JP3155595B2 publication Critical patent/JP3155595B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/20Contour coding, e.g. using detection of edges

Abstract

(57)【要約】 【目的】 輪郭線データから一旦ドットデータに展開す
ることなく符号データを得ることのできる符号化方法及
びその装置を提供しようとするものである。 【構成】 複数の線要素でもって構成された閉輪郭を表
わすベクトルデータから前記ベクトルデータの座標軸の
いずれか一方に平行な走査線との交点座標を求め、検出
された交点座標に基づいてこれら走査線毎に白ラン、黒
ランの長さを表わす符号データを作成する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は符号化方法及びその装置
に係り、詳しくは複数の線要素でもって構成された閉輪
郭データから直接、例えばファクシミリ用の符号データ
を生成する符号化方法及びその装置に関するものであ
る。
【0002】
【従来の技術】この種の画像処理装置においては、画像
データの閉領域内部を塗り潰すことは基本的な画像処理
機能の1つであり、これまで種々の塗り潰し方法が提案
されている。最も基本的な方法は、ソフトウェアによっ
てランダム・アクセス・メモリ(RAM)の各画素ライ
ン毎に塗り潰し範囲を逐一指定し、指定された範囲のラ
イン画素を塗り潰すものである。
【0003】このような方法の代表例としては、文献
「Fundamentals of Interactive Computer Graphics 」
(J.D.FOLEY/A/VAN DAN共著 1982年Addison - Wesley刊
pp.456〜460)に記載されている技術がある。
【0004】この方法を簡単に説明すると以下に示す通
りである。
【0005】頂点データ列で与えられた図2に示す様な
閉図形F1において、この図形を構成する各稜線エッジ
e1〜e10についてそれぞれ図4で示すパケットデー
タを生成し、これらを図5で示すエッジテーブル(E
T)の形にまとめる。このとき、X軸に水平なエッジを
除き、水平でないエッジのみに対してパケットデータを
作成する。エッジテーブル(ET)は、画像メモリが格
納し得る走査線ラスタ数に等しいだけのポインタパケッ
トテーブルAy0〜Ayn(画像が第0ラスタから第n
ラスタまでのn+1ラスタから成る場合)を有してい
る。そして、各稜線エッジe1〜e10の中でX軸に対
して水平でないものに対して、y座標値が小さい方の端
点のy座標値に対応したポインタパケットテーブルに、
それらそれぞれのエッジのパケットデータをリスト構造
で接続する。複数のパケットが同じポインタパケットか
らリスト構造をなす場合には、それぞれのパケット内の
y座標値が小さい方の端点のxの値(xmin )で昇順に
ソートしてリスト構造を形成する。対応するエッジパケ
ットのないポインタパケットには、その旨を示すマーカ
ーコード“λ”を格納する。また、各稜線のy座標方向
の極小値あるいは極大でない場合には、図形要素内外判
定での誤判定を引き起こさないために、本来のy座標値
より1走査分だけ該稜線に沿って進んだ位置をもってy
座標値の小さい方の端点としてエッジテーブル(ET)
を生成する。図2では、e3の端点B,e9の端点I,
e8の端点Gがこれに該当する。
【0006】それぞれの稜線エッジに対応する各エッジ
パケットAe1〜Ae10には、対応する稜線エッジe
1〜e10のy座標が大きい方の端点のyの値(ymax
e1〜ymax e10)とy座標が小さい方の端点のxの
値(xmin e1〜xmin e10)と、y座標値が1だけ
増加したときのx座標値の増分(Δxe1〜Δxe1
0)と、y座標が小さい方の端点のy座標値が共通する
稜線のエッジパケットをx座標値の小さいものから昇べ
きにつなげるポインタ(Pe1〜Pe10)とが格納さ
れている。尚、ポインタPe1〜Pe10における
“λ”は、これ以上結ぶエッジパケットがないことを意
味している(図5)。
【0007】なお、x方向は走査線方向(図示で右方
向)に一致し、y方向は走査線のインクリメント方向
(図示で下方向)に一致している。
【0008】このようにして作成されたエッジテーブル
(ET)を利用して、塗り潰し処理を実行する。まず、
エッジテーブル(ET)にエッジパケットを有する最少
のy座標値に走査線y座標値をセットする。次いで、そ
の走査線y座標値についてエッジパケットを結び、アク
ティブエッジテーブル(AET)(図6参照)を空に初
期化する。
【0009】これ以降、アクティブエッジテーブル(A
ET)及びエッジテーブル(ET)が共に空になるま
で、以下の処理を繰り返す。 (1)アクティブエッジテーブル(AET)のx座標値
(xmin )でのソート順を保ちながら、そのときのエッ
ジテーブル(ET)の情報とアクティブエッジテーブル
(AET)との情報を併合して、走査線y座標値にかか
るエッジパケットを結ぶ新たなアクティブエッジテーブ
ル(AET)を作成する。 (2)アクティブエッジテーブル(AET)のx座標値
(xmin )が小さい方から2個ずつを対として、その間
を図形要素内の塗り潰し区間とし、その区間内の塗り潰
しを実行する。 (3)走査線y座標値をy座標が大きい方の端点のyの
値(ymax )とするエッジパケットを次の走査線におけ
る動作のためにアクティブエッジテーブル(AET)か
ら削除する。 (4)アクティブエッジテーブル(AET)に残ってい
るエッジパケットについて、次の走査線における動作の
ために増分データ(Δx)を利用して、x座標値(x
min )を更新する。即ち、(xmin +Δx)をもって、
新しくxmin とし直す。 (5)かかるx座標値(xmin )の更新後、x座標値
(xmin )に基づいてソーティングし直す。 (6)走査線y座標をインクリメントして(1)の処理
に戻る。
【0010】この様にして、塗り潰しが実行される。こ
こで、図6は走査線y座標値が“14”の場合の図2に
示す図形F1に関するアクティブエッジテーブル(AE
T)である。また、図7は同じく各走査線y座標値(0
〜19)に亙ってのアクティブエッジテーブル(AE
T)の状態の推移を示したものである。
【0011】この他にも、ハードウェアにより高速に塗
り潰しを行うために種々の手法が提案されている。
【0012】この種の方法は、図形の輪郭を定める画素
のみを画像メモリ上に描画した後、この画像メモリをラ
スタ走査し、走査線上の奇数番目の輪郭線ドットで塗り
潰しを開始し、偶数番目の輪郭線ドットで塗り潰しを終
了する(以降、奇偶反転法と呼ぶ)ものである。
【0013】しかし、このような奇偶反転法を用いる場
合は、単純に輪郭の描画を行うと、図8のL1,L2,
L3,L4,L5のように、塗り潰されるべきではない
部分が塗り潰され、塗り潰されるべき部分が塗り潰され
ない(ラインL3の破線部分)という問題があった。
【0014】これをふまえて、輪郭描画に規則を設定し
て、改善を計る提案もなされている。例えば、特公平1
−54752号公報は、下記の5つの規則に従った輪郭
画素の書き込みを開示している。
【0015】規則1:水平な線セグメントは書かない。
【0016】規則2:各線セグメントは各ライン当り1
画素で表す。
【0017】規則3:各線ベクトルの始点は書かない。
【0018】規則4:輪郭線画素はこの画素を書込もう
としているメモリ・アドレスに記憶されている画素デー
タとの排他的論理和を取って、その結果を書き込む。
【0019】規則5:各線セグメントは上から下または
下から上への一方向で指定する。
【0020】上述した規則の内、規則1は図8のライン
L2やL4のように水平な輪郭線部分に含まれる輪郭画
素P1〜P2やP4〜P3によって1ラインに奇数個の
輪郭画素が生じるのを防止している。
【0021】規則2は線セグメントの角度に関係なく、
常に1ライン当り1画素で輪郭線を表すためのものであ
る。
【0022】規則3は上向きまたは下向きの頂点を除去
するものである。規則5に従って例えば上から下への一
方向で線セグメントを指定するものとすれば、規則3は
図8の上向きの頂点の輪郭線画素P5およびP6を除去
する。
【0023】規則4及び規則5は、規則3によって処理
される頂点と反対向きの頂点の輪郭線画素(この例では
P7)を除去するものである。
【0024】
【発明が解決しようとする課題】しかしながら上記従来
例では、輪郭データから中塗りを行うアルゴリズムは示
されているが、輪郭線データから直接、伝送用の符号デ
ータを生成するアルゴリズムは示されていない。上記従
来例をそのまま適用しようとすれば、輪郭線で囲まれる
領域の中塗りを行ってドットデータに展開し、その後に
これを走査して符号データを生成しなければならず、処
理が煩雑である。
【0025】本発明は従来技術に鑑みなされたものであ
り、輪郭線データから一旦ドットデータに展開すること
なく符号データを得ることのできる符号化方法及びその
装置を提供しようとするものである。
【0026】
【課題を解決するための手段】上記目的を達成するため
に本発明の本発明の符号化方法は以下の様な工程を備え
る。即ち、複数の線要素でもって構成された閉輪郭を表
わすベクトルデータより前記ベクトルデータの座標軸の
いずれか一方に平行な走査線との交点座標を求める工程
と、前記交点座標より前記走査線毎に白ラン、黒ランの
長さを表す符号データを作成する工程とを有する。
【0027】また、本発明の符号化装置は以下のような
構成を備える。即ち、複数の線要素でもって構成された
閉輪郭を表わすベクトルデータから前記ベクトルデータ
の座標軸のいずれか一方に平行な走査線との交点座標を
求める交点検出手段と、前記交点検出手段により検出さ
れた交点座標に基づいて前記走査線毎に白ラン、黒ラン
の長さを表わす符号データを作成する符号化手段とを有
する。
【0028】
【作用】以上の構成において、複数の線要素でもって構
成された閉輪郭を表わすベクトルデータより、そのベク
トルデータの座標軸のいずれか一方に平行な走査線との
交点座標を求め、これら交点座標よりそれら走査線毎に
白ラン、黒ランの長さを表わす符号データを作成するよ
うに動作する。
【0029】
【実施例】以下、添付図面を参照して本発明の好適な実
施例を詳細に説明する。 <動作概要の説明>先ず、実施例における動作概要を簡
単に説明する。
【0030】本実施例では、図形の輪郭として、所定方
向に方向付けられた輪郭を用いる。即ち、図3に示すよ
うに、扱う図形の輪郭を全て時計の回転方向(以下、右
回り)に連なるアウトラインベクトル(線要素)の集ま
り、もしくは、扱う図形の輪郭を全て反時計回りの回転
方向(以下、左回り)に連なるアウトラインベクトルの
集まりとして表す。ここで、時計の回転方向に連なるア
ウトラインベクトルとは、そのアウトラインベクトルの
右側を塗り潰すと該当図形が塗り潰されることを意味す
ると考えて良い(図9)。また、反時計の回転方向に連
なるアウトラインベクトルとは、そのアウトラインベク
トルの左側を塗り潰すと該当図形が塗り潰されるもので
ある(図10)。
【0031】さて本実施例では、各アウトラインベクト
ルの向き及び傾斜を判断し、かつ又、各アウトラインベ
クトルの直前のアウトラインベクトルの向き及び傾斜、
及び直後のアウトラインベクトルの向き及び傾斜によっ
て、該当ベクトルの各端点及び両端点以外のベクトル上
の端点を閉区間をなす境界点の判定に用いるか否かを判
定する。しかる後に、各走査毎に該走査線と交差する奇
数番目の境界判定用エッジから偶数番目の境界判定用エ
ッジまでを黒ラン長として計算し、偶数番目から奇数番
目を白ラン長として計算して、符号データを出力する。 <装置構成の説明>図1は、本実施例の符号化装置をフ
ァクシミリ装置に適用した例を示すブロック図である。
図中、101は装置全体を制御する制御部、102は原
稿画像を光電的に読取って入力する読取部、103はア
ウトラインベクトルデータで文書データ等を記憶してい
る輪郭データファイルである。104は操作部で、オペ
レータにより操作されて原稿画像の送信指示等が入力さ
れる。105は表示部で、オペレータへの各種メッセー
ジや機器の状態等を表示する。106は、例えば感熱法
や電子写真法等により受信画像或いは読取部102で読
み取った原稿画像等を記録する記録部である。107は
画像データの変調或いは復調を行うモデム、108は通
信網制御回路(NCU)である。
【0032】次に制御部101の構成を説明すると、1
11はROM112に記憶された制御プログラムに従っ
て全体の制御を行うマイクロプロセッサ等のCPU、1
12はCPU111の制御プログラムや各種データを記
憶しているROM、113はCPU111のワークエリ
アとして使用されると共に各種データを記憶しているR
AMである。114はバッファメモリで、読取部102
で読み取った画像データ或いは輪郭データファイル10
3より読出したアウトラインベクトルデータを記憶して
いる。115は読取部で読み取った原稿画像データを符
号化すると共に、本実施例の特徴であるアウトラインベ
クトルデータより符号化データを作成する符号化部であ
る。116は復号化部で、受信した符号化データを復号
して画像データを作成している。117は送受信バッフ
ァで、送信する符号化された画像データ或いは受信した
符号化画像データを記憶する。尚、以下の説明では、読
取部で読み取った画像データを符号化して送信する処理
は公知であるので、輪郭データに基づいて符号化する処
理について説明する。
【0033】輪郭データファイル103に記憶された輪
郭データは、図11に示すように、対象とする画像内に
含まれている閉ループの数を示すデータ(N)と、各閉
ループを構成する頂点の数(L)を示すデータ群、及び
それら各頂点の座標値(x,y)とで構成される。ただ
し、各閉ループにおける各頂点は、それぞれの閉ループ
上で予め方向づけられた順番に従って隣合う頂点の関係
を維持したままのデータの集まりとして表現される。
【0034】先に説明したように本実施例では、輪郭デ
ータを所定方向に並んだデータの集まりとしてとらえて
いる。例えば、図3に示したのは、右回りアウトライン
データの例で、その輪郭データは図12に示した如くに
なる。図12において、図3の図形F1のアウトライン
は、A→B→C→D→E→F→G→H→I→J→Aの順
にA点を開始点として右まわりに一巡する点列として表
現されている。図12では、閉ループの数(N)が
“1”、頂点の数(L)は“10”であり、その後に各
頂点の座標値が続いている。
【0035】以下、本実施例では、図3に示すように座
標の原点(0,0)は画像の左上隅にあるものとし、主
走査方向(右方向)をx軸に、副走査方向(縦方向)を
y軸として説明する。また、アウトラインは、右回りの
データ表現をとるものとして説明を進める。尚、各閉ル
ープ内の始点はループ上の任意の点でよい。 <主処理の説明>図13は本実施例のファクシミリ装置
におけるCPU111の動作処理手順を示すフローチャ
ートで、以下にそれを説明する。
【0036】ステップS1でその処理を開始するとステ
ップS2へ進み、操作部104より輪郭データのファク
シミリ送信指示が入力されたかをみる。送信指示が入力
されるとステップS3に進み、輪郭データファイル10
3より輪郭データを入力してバッファメモリ104に記
憶する。尚、ここで輪郭データとは、前述したように図
11に示す形式で表現されたアウトラインベクトルデー
タ群である。次にステップS4に進み、図21に示した
規則に従って、前述した図4に示すデータ形式で、各エ
ッジに対するデータを作成し、図5に示した形式のエッ
ジテーブル(ET)を作成して、ステップS5へ進む。
尚、ステップS4のエッジテーブル作成処理の詳細は詳
しく後述する。
【0037】次にステップS5では注目する走査線位置
をページ内の先頭の走査線位置にセットする。即ち、y
=0の走査線位置とする。また、前述の図6に示したよ
うにアクティブエッジポインタ領域を確保する。そして
ステップS6へ進み、注目走査位置における、前述の図
6の如き形式のアクティブエッジテーブル(AET)を
生成する。これに基づき、ステップS7において、白ラ
ン,黒ランのラン長を計算し、それぞれのラン長に応じ
たハフマン符号を出力する。このステップS7の処理内
容も詳しく後述する。
【0038】次にステップS8に進み、注目する走査線
位置を1ライン進める。即ち、それまでy=iの走査位
置を注目していたなら、y=i+1とする。そして、ス
テップS9へ進み、ページ内の最終走査線位置までの処
理が終了したか否かを判定する。最終走査線位置まで終
了している場合はステップS10へ進んで一連の処理を
終了する。ステップS10で最終走査線位置までは終了
していない場合はステップS6へ戻り、次ラインの処理
を続ける。尚、この最終走査線か否かの判定は、図示せ
ぬルーチンにおいて、描画しようとするページ内に含ま
れる走査線数を予め記憶しておき、この走査線数と現在
の注目走査線位置とを比較することにより判定する。 <エッジテーブル作成処理の説明>次に図14を参照し
て、図13のステップS4のエッジテーブル(ET)作
成処理の詳細を説明する。尚、このエッジテーブルはR
AM113内に作成される。
【0039】このエッジテーブルの作成処理を開始する
とステップS51へ進み、エッジテーブル(ET)の初
期化を行う。即ち、図15に示すように、生成しようと
しているページ内に含まれる走査線(ここでは、y=0
〜NまでのN+1ライン)分のアドレスポインタ(以
下、ポインタパケットとも呼ぶ)領域Ay0〜AyNを
RAM113上に確保し、その各領域に参照データは存
在しないことを示すマーカー値“λ”を格納する。次に
ステップS52では、図11に示される形式で与えられ
るアウトラインデータの閉ループ数(N)を参照し、ス
テップS53に進む。ステップS53では、この閉ルー
プ数(N)が“0”よりも大きな値であるか否かを調
べ、0よりも大きな値でなければ、即ち、閉ループが存
在しない時はステップS68へ進み、その一連の処理を
終えてメイン処理に復帰する。一方、閉ループが存在す
る時はステップS54へ進む。
【0040】このステップS54では、図11で与えら
れるアウトラインデータの各ループ内頂点数テーブルの
内、第0ループ内の頂点数を格納してある位置にループ
内頂点数テーブルポインタを初期化してステップS55
へ進む。ステップS55では、ループ内頂点数テーブル
ポインタにより指示される位置のループ内頂点数データ
を参照してステップS56へ進み、ループ内の頂点数が
“2”以上であればステップS57へ進む。
【0041】ステップS57では、該当ループの最終頂
点を始点として、最初の頂点を終点とするエッジを現エ
ッジ(注目エッジ)とみなし、このエッジの向きとxの
増分を算出する。即ち、今当該エッジの始点座標を(x
start ,ystart )、終点座標を(xend ,yend )と
する時、ystart =yend の時、エッジの向きはX軸に
対して水平であるためx座標の増分は算出しない。また
start =yend の時、xstart >xend ならば左向き
エッジとし、xstart <xend ならば右向きエッジとす
る。また、この時、xstart =xend であれば、始点と
終点が一致している一点のみのエッジを意味し、その前
もしくは後のエッジの一部となっているか孤立点のいず
れかである。このようなエッジは図11で示されるデー
タを形成する際に、輪郭を構成するエッジの頂点列か
ら、あらかじめ除去されているものとする。
【0042】ystart >yend の時は、エッジの向きを
上向きと判定し、xの増分は(xst art −xend )/
(ystart −yend )で算出する。
【0043】ystart <yend の時は、エッジの向きを
下向きと判定し、xの増分は(xen d −xstart )/
(yend −ystart )で算出する。
【0044】こうしてステップS57の現エッジデータ
の作成処理を終えるとステップS58へ進み、当該ルー
プの最初の頂点(第0頂点)を始点として、次の頂点
(第1頂点)を終点とするエッジを次エッジ(注目エッ
ジに対して輪郭ループ上の次に接続しているエッジ、即
ち注目エッジの終点を始点とするエッジ)とし、このエ
ッジの向きとxの増分をステップS57と同様に求め
る。このステップS58の処理を終えるとステップS5
9へ進み、注目する頂点座標テーブルポインタを図11
に示す当該ループの第0頂点座標のデータが格納されて
いるアドレス値に設定してステップS60へ進む。
【0045】ステップS60では、この時点の直前にお
ける現エッジデータ(現エッジの向き及びxの増分)を
もって、前エッジ(注目エッジに対して輪郭ループ上、
その直前に接続しているエッジ、即ち、注目エッジの始
点を終点とするエッジ)データとする。そして、ステッ
プS61へ進み、この時点の直前における次エッジデー
タ(次エッジの向き及びxの増分)をもって現エッジデ
ータとする。次にステップS62へ進み、次エッジデー
タ(次エッジの向き及びxの増分)をステップS57と
同様に求める。この時、次エッジの始点は現エッジの終
点であり、次エッジの終点はもちろん現エッジの終点に
対して、ループ上の次の頂点である。これらは、注目す
る頂点位置の次の頂点位置、及び次の次の頂点位置のデ
ータを参照することにより得られるが、この時点での注
目する頂点位置が、該ループの最終頂点にある時は、次
エッジとは該当ループの第0頂点が始点となり、第1頂
点が終点となる。また、注目する頂点位置が、該ループ
の最終頂点の直前の頂点にある時には、最終頂点が始点
となり、第0頂点が終点となる様に制御を行っている。
【0046】ステップS62の処理を終えるとステップ
S63に進み、この時点における前エッジデータ、現エ
ッジデータ及び次エッジデータを基に、現エッジデータ
に関して、前述の図4に示した形態のパケットデータを
作成する。そして、該パケットデータをエッジテーブル
内に追加してエッジテーブルを更新する。この処理の内
容は図16及び図17を参照して詳しく後述する。こう
してエッジテーブルの更新処理を終了するとステップS
64へ進み、注目する頂点座標テーブルポインタの値を
更新し、ループ上の次の頂点の座標テーブルの位置とす
る。そしてステップS65で当該ループ内の全エッジ分
の処理が完了したか否かを判定し、完了していればステ
ップS66へ進み、そうでなければステップS60へ戻
って、次のエッジに対する一連の処理を続ける。全エッ
ジ分の処理が完了したか否かは、例えば各ループ毎に、
このステップS65を通過した回数をカウントしてお
き、その回数が当該ループ内に含まれる頂点の数を越え
たか否かで判定することができる。
【0047】ステップS66では、ループ内頂点数テー
ブルポインタを次のループのデータを保持する位置に更
新してステップS67へ進む。ステップS67では、当
該輪郭データ内に含まれる全てのループに対して一連の
処理が完了したか否かを判定し、完了していればステッ
プS68へ進み、そうでなければステップS55へ戻っ
て次のループに対する一連の処理を続ける。尚、この全
ループの処理を完了したか否かの判定は、例えばこのス
テップS67を通過した回数をカウントしておき、その
回数が当該輪郭データ内に含まれるループの数を越えた
か否かで判定することができる。ステップS68では、
エッジテーブル(ET)作成の処理を終了してメインル
ーチンへ戻る。 <エッジテーブル更新処理の説明>以下、図14のステ
ップS63のエッジテーブルの更新処理を図16及び図
17のフローチャート及び図21を参照して説明する。
ステップS63においては、現エッジ,前エッジ及び次
エッジの向きとxの増分を用いて処理を進める。現エッ
ジに対する図4に示した形態のパケットデータを作成す
る際に、その生成規則を図21に示した。
【0048】まず、現エッジが水平エッジ、即ち、現エ
ッジの向きが左向きであるか又は右向きである場合は、
このエッジに対してはパケットデータは生成せず、エッ
ジテーブルも更新しない。従って、図21には表記して
いない。現エッジが上向き、もしくは下向きの時には、
前エッジデータの内容によって始1〜始10及び終1〜
終10の場合に分けて考える。図21において、始点の
状態の欄には現エッジを実線矢印で、前エッジを破線矢
印で、矢印の向きはそれぞれのエッジの向きを示し、各
エッジの斜線で示される側が、黒データ領域であること
を示している。また、終点の状態欄には現エッジデータ
を実線矢印で、次エッジを破線矢印で、矢印の向きはそ
れぞれのエッジの向きを示し、各エッジの斜線で示され
る側が黒データ領域であることを示している。
【0049】まず、現エッジの始点の取扱いに注目し、
現エッジが上向きである場合(始1〜始5)を説明す
る。前エッジも上向きの場合(ケース始1)は、現エッ
ジの始点は実際よりも一走査線だけエッジに沿って終点
に移動した点にあるとして、パケットデータを作成す
る。前エッジが下向きの場合は、前エッジの終点、即
ち、現エッジの始点が閉図形の凹頂点になる時(ケース
始2)なら、始点はやはり実際よりも一走査線だけエッ
ジに沿って終点に移動した点にあるとしてパケットデー
タを作成する。閉図形の凸頂点になる時(ケース始3)
は、始点は実際の位置の点そのものとして、パケットデ
ータを作成する。尚、ケース始2か、ケース始3かの判
別は、現エッジのx増分と、前エッジのx増分との大小
関係を比較することで可能である。即ち、前エッジのx
増分をΔxpre 、現エッジのx増分をΔxnow とすると
Δxpre >Δxnow の場合はケース始2であり、Δx
pre <Δx now の場合は、ケース始3である。但し、Δ
pre =Δxnow の場合は、ケース始3であると判定す
ることにする。前エッジが左向きの場合(ケース始4)
は、現エッジの始点は、実際の位置の点そのものとして
パケットデータを作成し、前エッジが右向きの場合(ケ
ース始5)は、現エッジの始点は実際よりも一走査線だ
け現エッジに沿って終点に移動した点にあるとしてパケ
ットデータを作成する。
【0050】次に、現エッジが下向きである場合(始6
〜始10)をみると、前エッジが上向きの場合は前エッ
ジの終点、即ち、現エッジの始点が閉図形の凸頂点にな
る(ケース始6)なら、始点は実際の位置の点そのもの
としてパケットデータを作成する。一方、現エッジの始
点が閉図形の凹頂点になる時(ケース始7)は、その始
点は実際よりも一走査線だけ現エッジに沿って終点側に
移動した点にあるとしてパケットデータを作成する。前
エッジが下向きの場合(ケース始8)及び右向きの場合
(ケース始10)には、始点は実際の位置の点そのもの
としてパケットデータを作成する。又、前エッジが左向
きの場合(ケース始9)には、始点は実際よりも一走査
分だけエッジに沿って終点側に移動した点にあるとして
パケットデータを生成する。ここで、ケース始6か、ケ
ース始7かの判別は、現エッジのx増分Δxnow と前エ
ッジのx増分Δxpre との大小関係を比較することで可
能である。即ち、Δxpre <Δxnow の場合はケース始
6であり、Δxpre <Δx now の場合はケース始7であ
る。尚、Δxpre =Δxnow の場合はケース始6である
と判定することにする。
【0051】次に、現エッジの終点の取扱いに注目して
説明する。
【0052】先ず、現エッジが上向きである場合(終1
〜終5)を説明する。次エッジも上向きの場合(ケース
終1)は、現エッジの終点は実際の点そのものとしてパ
ケットデータを作成する。次エッジが下向きの場合は、
次エッジの始点、即ち、現エッジの終点が閉図形の凹頂
点になる時(ケース終3)には、現エッジの終点は実際
の位置よりも一走査線だけ現エッジに沿って始点側に戻
った点にあるとしてパケットデータを作成する。一方、
閉図形の凸頂点になる時(ケース終2)には、現エッジ
の終点は実際の位置の点そのものとして、パケットデー
タを作成する。次エッジが左向きの場合(ケース終4)
には現エッジの終点は実際の位置よりも一走査線だけエ
ッジに沿って始点に戻った点にあるとして、パケットデ
ータを作成する。次エッジが右向きの場合(ケース終
5)には、現エッジの終点は実際の位置の点そのものと
してパケットデータを作成する。ここで、ケース終2
か、ケース終3かの判別は、現エッジのx増分Δxnow
と、次エッジのx増分Δxpostpostとの大小関係を比
較することで可能である。即ち、Δxnow <Δxpost
場合はケース終2であり、Δxnow >Δxpostの場合は
ケース終3である。但し、Δxnow =Δxpostの場合
は、ケース終2であると判定することにする。
【0053】次に、現エッジが下向きである場合(終6
〜終10)について説明する。次エッジが上向きの場合
は次エッジの始点、即ち、現エッジの終点が閉図形の凸
頂点になる時(ケース終6)には、現エッジの終点は実
際の位置の点そのものとしてパケットデータを作成す
る。又、閉図形の凹頂点になる時(ケース終7)には、
現エッジの終点は実際の位置よりも一走査線だけエッジ
に沿って始点側に戻った点にあるとしてパケットデータ
を作成する。更に、次エッジが下向きの場合(ケース終
8)には、現エッジの終点は実際の位置の点そのものと
してパケットデータを作成する。又、次エッジが右向き
の場合(ケース終10)には、現エッジの終点は実際の
位置よりも一走査線だけ現エッジに沿って戻った位置に
あるとしてパケットデータを作成する。ここで、ケース
終6か、ケース終7かの判別は、現エッジのx増分Δx
now と次エッジのx増分Δxpostとの大小関係を比較す
ることで可能である。即ち、Δxnow <Δxpostの場合
はケース終6であり、Δxno w >Δxpostの場合はケー
ス終7である。Δxnow =Δxpostの場合は、ケース終
6であると判定することにする。
【0054】以上の生成規則に従って、図4に示した形
態のパケットデータが現エッジに対して生成される。
【0055】以上説明した処理が図14のステップS6
3で行われることになるが、結局CPU111は図16
及び図17に示すフローチャートに従って処理すること
になる。
【0056】先ず、ステップS63にて、その一連の処
理を開始すると、ステップS631へ進む。この時、入
力データとしては、図14のステップS60で更新され
た前エッジデータ(前エッジの向き、及びx増分Δx
pre )と、ステップS61で更新された現エッジデータ
(現エッジの始点と終点の座標値(それぞれ
(xstart,ystart ),(xend ,yend )とす
る)、向き及びx増分Δxnow )、及びステップS62
で作成された次エッジデータ(次エッジの向き及びx増
分Δxpo st)がある。ステップS631では、現エッジ
データの向きが水平か否か(即ち、右向きもしくは左向
きのいずれかであるかどうか)を判定し、水平であれば
ステップS644へ進み、その一連の処理を終えて本処
理をコールした次のステップ(図14のステップS6
4)へ戻る。
【0057】ステップS631で水平でなければステッ
プS632へ進み、現エッジの向きは上向きか否かを判
定し、上向きであればステップS633へ進んで、以下
上向きエッジ用のパケットデータの生成を行っていく。
一方、上向きでなければ(下向きエッジならば)ステッ
プS645へ進んで、以下、下向きエッジ用のパケット
データの生成を行っていく。
【0058】現エッジが上向きエッジであると判断して
ステップS633に進むと、図4に示す形態のエッジパ
ケットを一旦そのまま作成する。即ち、ymax =y
start ,xmin =xend ,Δx=Δxnow として作成
し、ポインタには、ここでは“λ”(接続先がないこと
を示すマーカ)を持たせておく。加えて、ステップS6
33において、このエッジパケットをETに登録する際
に、該エッジパケットがどのポインタパケットに接続す
べきデータかを示す値ymin も設定する。ここではy
min =yend と設定する。ここでymax とは、現エッジ
の両端点(始点と終点)において、y座標の大きい方の
端点のyの値であり、xmin とymin のそれぞれは、y
座標の小さい方の端点の座標値のxの値とyの値を意味
する。xの増分Δxとは、現エッジ上の点が現エッジに
沿って、y座標の小さい方から大きい方へ向けて移動す
る際の一走査線当りのx座標の変化分を意味している。
実施例では、x座標の正の向きを右向き、y座標の正の
向きを下向きに想定しているので、上述の如く、y
max ,xmin ,Δx,ymin が設定される。こうしてス
テップS633の処理を終えるとステップS634へ進
む。
【0059】ステップS634では、前エッジが下向き
か否かを判定し、下向きであればステップS635へ進
み、そうでなければステップS636へ進む。ステップ
S635では、現エッジの始点がケース始2に該当する
のか、ケース始3に該当するのかを先に説明した方法で
判定し、ケース始2に該当する場合はステップS637
に進み、ymax を“1”減らす。そうでない場合はステ
ップS638へ進む。また、ステップS636では現エ
ッジの始点がケース始4に該当するか否か(即ち、ケー
ス始1またはケース始5に該当するのか)を判定し、ケ
ース始4に該当する場合はステップS638へ進み、そ
うでなければステップS637へ進み、ymax を“1”
減らす、即ち、上向きエッジの始点を一走査線分つめ
る。ステップS637の処理を終えると、ステップS6
38へ進む。これで現エッジが上向きの場合の始点に対
する処理が終了する。
【0060】次にステップS638では、次エッジが下
向きか否かを判定し、下向きであればステップS639
へ進み、そうでなければステップS640へ進む。ステ
ップS639では、現エッジの終点がケース終2に該当
するのか、ケース終3に該当するのかを前述の方法に基
づいて判定し、ケース終2に該当する場合はステップS
643に進み、そうでない場合(ケース終3)はステッ
プS641へ進む。ステップS640では次エッジの向
きが左向きか、即ち、現エッジの終点がケース終4に該
当するか否か(ケース終1或いはケース終5)を判定
し、ケース終4に該当する場合はステップS641へ進
み、xmin をΔxだけ増やす。即ち、上向きエッジの終
点を一走査線分つめたとして、そのx座標値を修正して
いる。一方、そうでない場合はステップS640からス
テップS643に進み、パケットデータをETに登録す
る。ステップS641の処理を終えるとステップS64
2へ進み、ymin を“1”だけ増やす、即ち、上向きエ
ッジの終点を一走査分つめたとして、その終点のy座標
値を修正している。ステップS642の処理を終えると
ステップS643へ進む。
【0061】一方、ステップS632において、現エッ
ジは上向きではない、即ち、下向きのエッジであると判
定された場合を説明する。
【0062】この場合、処理は図17のステップS64
5へ進み、図4に示す形態のエッジパケットを一旦その
まま生成する。即ち、ymax =yend ,xmin =x
start ,Δx=Δxnow として作成し、ポインタは、こ
こでは“λ”(接続がないことを示すマーカ)を持たせ
ておく。加えて、ymin =ystart と設定する。次のス
テップS646では、前エッジは上向きか否かを判定
し、上向きであればステップS647へ進み、そうでな
ければステップS648へ進む。
【0063】ステップS647では、現エッジの始点が
ケース始6に該当するのか、ケース始7に該当するのか
を前述の方法で判定する。ケース始6に該当する場合
(凸部の頂点)にはステップS651に進み、ケース始
7に該当する場合(凹部の頂点)にはステップS649
へ進む。ステップS648では現エッジの始点がケース
始9に該当するのか否か(即ち、ケース始8又はケース
始10に該当するのか)を判定し、ケース始9に該当す
る場合(前エッジが左向きの時)はステップS649に
進んでxmin をΔxだけ増やす、即ち、下向きのエッジ
の指定を一走査線分つめたとして、そのx座標値を修正
している。このステップS649の処理を終えるとステ
ップS650へ進み、ymin を“1”増やす、即ち、下
向きエッジの始点を一走査分つめたとして、その値を修
正している。これで現エッジの始点に対する処理が終了
する。
【0064】ステップS650の処理を終えるとステッ
プS651へ進み、次エッジが上向きか否かを判定し、
上向きであればステップS652へ進み、そうでなけれ
ばステップS653へ進む。ステップS652では、現
エッジの終点がケース終6に該当するのか、ケース終7
に該当するのかを前述の方法で判定する。そして、ケー
ス終6に該当する場合は図16のステップS643へ進
み、ケース終7に該当する場合はステップS654へ進
む。また、ステップS653では、現エッジの終点がケ
ース終9に該当するのか否か(即ち、ケース終8又はケ
ース終10のいずれかに該当するのか)を判定し、ケー
ス終9に該当する場合はステップS643へ進み、そう
でない場合(ケース終8又はケース終10の時)にはス
テップS654へ進んで、ymax を“1”減らす、即
ち、下向きエッジの終点を一走査線分つめる。こうして
ステップS654に処理を終えると、ステップS643
へ進む。
【0065】以上で、現エッジが上向き及び下向きの場
合のそれぞれにおいて、現エッジに対するエッジパケッ
トが図21に記された規則に従って生成される。
【0066】さて、ステップS643では、以上で生成
されたエッジパケットをエッジテーブル(ET)に追加
登録する。即ち、エッジテーブル内のy=ymin に相当
するポインタパケットAyymin につながるエッジパケ
ットのリスト接続に現エッジのエッジパケットを追加す
る。まず、現エッジのエッジパケットを保持する領域を
RAM113上に確保する。次にポインタパケットAy
min の値を吟味して、その値がまだ“λ”であれば、
現エッジのエッジパケットを保持する領域のアドレスに
書き換えて、現エッジのエッジパケットはポインタパケ
ットにリスト接続される。ポインタパケットAyymin
の値が既にある“λ”以外の値をもつ場合には、既にリ
スト接続されている何個かのエッジパケットが存在して
いるので、これらのエッジパケットのxmin の値が、ポ
インタパケット側から見て昇順になるように、現エッジ
のエッジパケットを該リスト接続されているエッジパケ
ット列に挿入する。これは、挿入される直前のパケット
のポインタの値を、現エッジのエッジパケットのポイン
タ部にコピーし、直前のパケットのポインタ部の現エッ
ジのエッジパケットのアドレス値に書き換えることで実
現する。かくして、ステップS643の処理を終えると
ステップS644に進み、エッジテーブル更新の一連の
処理を終えて、本処理をコールした上位のルーチンに戻
る。 <注目走査線輪郭の生成処理の説明>次に、図13にお
けるステップS6の“注目走査線輪郭の生成処理”につ
いて説明する。尚、その時点でのアクティブエッジテー
ブル(AET)を用いて以下に示す手順に従って処理が
進行することになる。
【0067】尚、このアクティブエッジテーブル(AE
T)は、ステップS5において初期化され、最初は空の
状態(マーカ“λ”が書かれた状態)になっているもの
である。以降、一旦処理を終了して、ステップS7へ進
んでも、アクティブエッジテーブルの状態は次にステッ
プS6に再度入るまで保持される。 (1)アクティブエッジテーブル(AET)のx座標値
(xmin )でのソート順を保ちながら、そのときのエッ
ジテーブル(ET)の情報とアクティブエッジテーブル
(AET)との情報とを併合して、走査線y座標値にか
かるエッジパケットを結ぶ新たなアクティブエッジテー
ブル(AET)を作成する。 (2)アクティブエッジテーブル(AET)のx座標値
(xmin )が小さい方からアクセスして、以下のように
処理を進める。
【0068】話をわかりやすくするために、以下に示す
ように記号の定義を行なう。
【0069】xsize :入力画像の主走査方向の画素数 n :AETに登録されているエッジパケットの数 (n=0はAETが空であることを表わす) xmin(i):AETに登録されているi番目(xmin の小
さい方から数える)のエッジパケットのxmin の値。i
は0からn+1までの値をとる。 但し、i=0のときxmin(0)=−1 i=n+1のときXmin(n+1)=xsizeとする。
【0070】このとき、各ラン長(RL(i) ,i=0,
…,n)は、 RL(i) =xtmp(i+1)−xtmp(i) xtmp(i)= xmin(i) (iが奇数の時) 又は、xtmp(i)= xmin(i)+1 (iが偶数の時) となる。
【0071】また、iが偶数のときのRL(i)は白ラ
ン長を表わし、iが奇数のときはRL(i)は黒ラン長
を表わす。
【0072】各ラン長が得られると、それに対応したハ
フマンコードが出力される。但し、RL(n)=0の場
合は符号を出力せず、そのRL(n)の符号の後にEO
L(エンドオブライン)符号を付加して、そのラインの
符号出力を終了する。但し、そのラインの総符号長が規
定のビット数より少ない場合は、その規定ビット数にな
るまでRL(n)符号とEOL符号の間にフィルビット
“0”を挿入する。図18に、白ラン及び黒ラン長に対
応するハフマン符号を示す。 (3)注目走査線のy座標値をy座標が大きい方の端点
のyの値(ymax )とするエッジパケットを、次の走査
線における動作のためにアクティブエッジテーブル(A
ET)から削除する。 (4)アクティブエッジテーブル(AET)に残ってい
るエッジパケットについて、次の走査線における動作の
ために増分データ(Δx)を利用して、x座標値を更新
する。即ち、(xmin +Δx)をもって新しくxmin
し直す。 (5)かかるx座標値(xmin )の更新後、x座標値
(xmin )に基づいてソーティングし直す。
【0073】このソーティングの終了後、ステップS8
で注目走査線を次の走査線位置に更新し、ステップS9
で1ページの処理が全て終了したか否かを判定する。終
了していなければステップS6に移る。終了であればE
OP(エンドオブページ)を示す符号を出力して処理を
終了する。
【0074】図3に対して、本実施例によって得られた
エッジテーブルを図19に示す。即ち、図3の図形F1
に関して、エッジe10は上向きエッジであり、前エッ
ジe9も上向きエッジ、次エッジe1は下向きエッジで
あるから、エッジe10の始点は図21に示すケース始
1に該当し、終点はケース終2に該当している。従っ
て、e10:ymax =8,xmin =7,Δx=−1,y
min =3となる。
【0075】以下、同様にエッジe1は下向きエッジで
あり、始点はケース始6、終点はケース終10に該当し
ているため、e1:ymax =5,xmin =7,Δx=
1,y min =3となる。
【0076】また、エッジe2は水平エッジであるか
ら、エッジパケットは生成されない。次に、エッジe3
は下向きエッジであり、始点はケース始10,終点はケ
ース終9に該当しているため、e3:ymax =15,x
min =19,Δx=0,ymin=6となる。
【0077】次のエッジe4は水平エッジであるから、
エッジパケットデータは生成されない。更に、エッジe
5は上向きエッジであり、始点はケース始4,終点はケ
ース終3に該当しているため、e5:ymax =15,x
min =15,Δx=1,ymi n =14となる。
【0078】次に、エッジe6は下向きエッジであり、
始点はケース始7,終点ケース終9に該当し、e6:y
max =16,xmin =13,Δx=−1,ymin =14
となる。
【0079】又、e7は水平エッジであるから、エッジ
パケットは生成されない。
【0080】次に、エッジe8は下向きエッジであり、
始点はケース始9,終点ケース終6に該当しているの
で、e8:ymax =18,xmin =7,Δx=−1,y
min =17となる。
【0081】更に、エッジe9は上向きエッジであり、
始点はケース始3,終点ケース終1に該当しているの
で、e9:ymax =18,xmin =1,Δx=5/9,
min=9となる。
【0082】以上をエッジテーブルにまとめると、図1
9に示す如くとなる。この図19に基づき、アクティブ
エッジテーブル(AET)を生成し、注目走査線をy=
0より順次1つずつ増やしていった際のAETの変化の
様子が図20に示されている。
【0083】また、以上の議論において、ymax 及びy
min は非負の整数値として扱っている。また、xmin
びΔxに関しては、使用に際して十分な精度をもつ実数
データ(即ち、小数部の情報を有する)として扱ってい
る。但し、走査線を次のラインに更新するときのx座標
は、計算では直前のエッジのx座標に算出したΔxを加
えた値となるが、メモリ上での画素は整数位置にしかと
れない。従って、Δxを足し込んで小数点以下からキャ
リィが発生したときに実際のx座標を変化させている。 <第2実施例>前記第1実施例においては、エッジパケ
ットデータからMH符号を構成する方法及び装置につい
て説明した。ここでは、エッジパケットデータからMR
符号を構成する方法について説明する。現在用いられて
いるMR符号の構成については、吹抜敬彦著「FAX,
OAのための画像信号処理」日刊工業新聞社発行の79
ページからから83ページにかけて説明がなされてい
る。本方式と従来の方式の違いは、本方式の場合はエッ
ジパケットデータから変化画素を見つけるのに対し、従
来は画像を走査して逐次変化画素を見つけるかの点にあ
る。従って、変化画素を見つけてしまえば、あとは従来
法と同様に処理できるので、ここではエッジパケットか
ら変化画素を見つける方法について説明する。ここで、
変化画素とは同一走査線において前の画素の色と異なる
色に変化した画素をいう。
【0084】MR方式は2次元の相関を用いて符号化す
るため、アクティブ・エッジ・テーブル(AET)も、
注目走査線に対するAET(CUR)とその一つ前の走
査線(参照走査線)用のAET(BEF)の2つが必要
となる。MR符号化処理の説明の前に、5種類の変化画
素について定義する。
【0085】a0 :注目走査線上における参照変化画素
あるいは開始変化画素。その位置は直前の符号化モード
で定められる。注目走査線の開始(左端)では、a0
第1画素の直前(左)に仮想的に置いた画素とする。
【0086】a1 :注目走査線のa0 の右にある次の変
化画素。この画素はa0 と反対の色を有し、その次に符
号化すべき変化画素である。
【0087】a2 :注目走査線のa1 のさらに右にある
次の変化画素。
【0088】b1 :参照走査線にあって、開始変化画素
0 の右にある次の変化画素。a1と同じ色を有する。
【0089】b2 :参照走査線にあって、b1 の右にあ
る次の変化画素。
【0090】もし、a0 以外のa1 ,a2 ,b1 ,b2
がないときには、これらはそれぞれの走査線の最後(右
端)の画素の直後(右)に仮想的に考えた画素とする。
【0091】次に、3つのモードを図22を参照して下
記のように定義する。 パスモード:これは「b2 がa1 の左に位置する場
合」と定義する。 垂直モード:a11 の相対的位置で符号化する。a
1 がb1 の左右のいずれにあるかにより、VL (a1
1 )あるいはVR (a11 )と定義する。a11
は、0,±1,±2,±3までであり、これ以上は水平
モードで表わす。 水平モード:上記の場合と、符号化の開始の場合を併
せ、H+M(a01 )+M(a12 )と表わす。こ
こで、M(・)は各々その色とラン長を表わすMH符号
語である。各モードの符号語を図23に示す。また、T
は次の走査線が1次元符号化のときT=1,2次元のと
きT=0とする。
【0092】図24のフローチャートを参照して、処理
を説明する。
【0093】ステップS701〜S704については、
図13のS1〜S4と同じなので説明を省略する。ステ
ップS705において、参照走査線用アクティブエッジ
テーブルAET(BEF)と注目走査線用アクティブエ
ッジテーブルAET(CUR)を初期化し、注目走査線
位置をページ内の先頭の走査線位置にセットする。ステ
ップS706では、注目走査線位置における図6に示す
ような形式のAETを生成する。但し、AET(CU
R)が空でない場合は、これに注目走査線位置のエッジ
バケットを加え、xmin の小さい順にソートしてAET
(CUR)を生成する。
【0094】ステップS707において、AET(BE
F)とAET(CUR)を用いて5種の変化画素位置a
0 ,a1 ,a2 ,b1 ,b2 を決定し、これらの位置関
係から3つのモードのどれかを決定し、図23のように
対応する符号を出力する。ステップS707について
は、後に後述する。ステップS707の処理の終了後、
ステップS708に進み、ここで、AET(BEF)に
AET(CUR)の内容をコピーする。そして、前述の
第1の実施例中でも行っていた処理、注目走査線の番号
とymax の値が同じエッジバケットをAET(CUR)
から削除する。ステップS709において、注目走査線
を次の走査線に移す。ステップS710では、以上の処
理がページ内の最後の走査線まで行われたかどうかを判
断し、行われていなければステップS706へ、行われ
ていれば終了する。
【0095】図25はステップS707の変化画素位置
の検出及び符号出力処理を示すフローチャートである。
ここでは、従来のMR符号化との対応をとりやすくする
ために、図2の如く定義していた座標(0,0)の位置
を(1,1)に変更する。これにともなって、エッジテ
ーブルもymax ,xmin の値にそれぞれ“1”ずつ加算
されたものとなる。
【0096】まず、ステップS721において、a0
(a0P,a0C)=(0,0)にセットして、ステップS
722で、a1 =(a1P,a1C)を検出する。尚、ここ
でa 1 は前述した通り、注目走査線のa0 の右にある次
の変化画素である。但し、x min cur(i),xmin
bef(j)はそれぞれ注目走査線に対応するアクティ
ブエッジテーブルのi番目のエッジバケットのxmin
値と、参照走査線に対応するアクティブエッジテーブル
のj番目のエッジバケットのxmin の値を示している。
【0097】また、a0 ,a1 ,a2 ,b1 ,b2 のデ
ータ構造は、図26に示すように画素位置を示す領域2
60(xP )と、その位置の画素の色を示す領域261
(xC )とから構成されている。この場合、アクティブ
エッジテーブル中のj番目のエッジパケットで示される
画素の色は、iが奇数のとき黒、偶数のとき白であるた
め、画素の色の代わりに奇数か偶数かを示すフラグにし
てもよい。また、a0P,a0Cはそれぞれa0 の画素位
置、偶数か奇数かを示すフラグを示している。a 1P,a
1C,a2P,a2C,b1P,b1C,b2P,b2Cも同様であ
る。
【0098】ここで、CP[x(i) ]、CC(i) を以下
の様に定義する。
【0099】 CP[X(i) ]=x(i) iが奇数のとき x(i) +1 iが偶数のとき CC(i) =1 iが奇数のとき =0 iが偶数のとき このとき、a0P<CP[xmin cur(i) かつ、a0C≠
CC(i) となる最小のi=i0 に対して、a1 =(a
1P,a1C)とすると、 a1P=CP[xmin cur(i0)] a1C=CC(i0) となる。もし、i0 が存在しなければa1P=Xsize
1,a1C=0にセットする。
【0100】次に、ステップS723において、b1
(b1P,b1C),b2 =(b2P,b 2C)の検出を行う。
【0101】b1 =(b1P,b1C)に対しては、CP
[xmin bef(i)>a0Pで、かつCC(i)=a1C
となる最小のi=i1 に対して、 b1P=CP[xmin bef(i1)] b1C=CC(i) また、b2 =(b2P,b2C)に対しては、CP[xmin
bef(i) ]>b1Pとなる最小のi=i2 に対して b2P=CP[xmin bef(i2)] b2C=CC(i) と決定できる。但し、i1 ,i2 が存在しなければb1P
=b2P=Xsize+1,b 1C=b2C=0にセットする。
【0102】a0 ,a1 ,b1 ,b2 が決定されたらス
テップS725に進み、b2P<a1か否かの判定が行わ
れる。そうであればステップS726に進み、パスモー
ドの符号(図23参照)が出力され、ステップS727
において、a0Pにb2Pの値がセットされる。この時、a
0Cの値は、 CP[xmin cur(i) ]≦b2P<CP[xmin cur
(i+1) ] を満たすi=i3 を検出し、a0C=CC(i3 )にセッ
トする。この後、ステップS723に戻る。
【0103】一方ステップS725における判定が「N
o」ならばステップS728に進み、|a1P−b1P|≦
3か否かの判定が行われる。この条件が満足する時はス
テップS729に進み、垂直モードの符号が出力され
る。a0 の値はa0P=a1P,a 0C=a1Cがセットされて
ステップS726に移る。
【0104】また、ステップS728の判定が「No」
であればステップS731に進んでa2 の検出動作に入
る。ステップS731では、CP[xmin cur(i) ]
>a 1Pである最小のi=i4 に対して、a2 の値をセッ
トする。このi4 が存在しなければa2P=xsize+1,
2C=0にセットする。その後、ステップS732に進
み、a0P=0の判定が行われ、a0P=0であればステッ
プS733に進んで、a1P,a0Pの値を“1”だけデク
リメントする。一方、ステップS732でa0P=0でな
い時はステップS734に進み、ここで水平モードの符
号を出力する。その後、ステップS735において、a
0P=a2P,a0C=a2CにセットしてステップS736に
入る。ここで、a0P=xsize+1かどうかの判定が行わ
れ、そうであればステップS737に進んで処理を終了
し、そうでなければステップS722に戻り、前述した
処理を実行する。
【0105】以上の様に符号化部分を構成することによ
り、アクティブエッジテーブルから直接符号化コードが
生成できるので、一旦アウトラインベクトルデータより
ドットデータに変換する作業が不要となり、処理が簡単
になる。
【0106】尚、第2実施例で述べた方法は、厳密には
MMR方式に対応している。現在用いられているMR方
式に対応するには、Kファクタを導入し、数ラインに1
ライン、MH符号化を行えばよい。これは、第1実施
例,第2実施例の2つを合わせれば容易に構成できる。
【0107】また、算術符号等、画素単位に符号化する
方式においては、アクティブエッジテーブルの偶数番目
のエッジパケットのxmin に“1”を加えた値で示され
る画素から次の奇数番目のエッジパケットのxmin から
1を引いた値で示される画素までを白として逐次符号化
し、奇数番目のエッジパケットのxmin で示される画素
から次の偶数番目のエッジパケットのxmin で示される
画素までを黒として符号化すればよい。 <第3の実施例の説明>前記第1の実施例において、図
21に示したエッジパケットの生成規則中、ケース始1
とケース終1、及びケース始8とケース終8の各組に対
しては、次のように規則を変更してもよい。
【0108】即ち、ケース始1:現エッジの始点は、
“つめないでそのまま”として、かつケース終1:現エ
ッジの終点は“一走査線だけつめる”とする。
【0109】又、ケース始8:現エッジの始点は、“一
走査線だけつめる”として、かつ、ケース終8:現エッ
ジの終点は、“つめないでそのまま”とする。
【0110】また、図16及び図17に示した処理の流
れも、これらに合わせて、ケース始1に対してはステッ
プS636、ケース終1に対してはステップS640
が、その規則の変更に応じて変更されることは容易に理
解できる。また、ケース始8に対してはステップS64
8が、ケース終8に対してはステップS653が変更さ
れることも容易に理解できる。
【0111】以上の変更は、上向き同士又は下向き同士
の連続する2つのアウトラインエッジに共有されている
頂点は、その頂点を終点とするエッジ上の点としてのみ
処理されるか、或いは、その頂点を始点とするエッジ上
の点としてのみ処理されるかのいずれでもよいことを暗
示し、双方のエッジ上の点として処理されたり、いずれ
のエッジ上の点でもないとして処理されることがなけれ
ば、いずれでもよいことを意味していると考える事がで
きる。 <第4の実施例の説明>又、第1の実施例では、アウト
ラインは右回りのデータ表現をとるものとして説明した
が、本発明はこれに限るものではなく、左回りのデータ
表現をとる場合にも対応可能である。左回りのデータ表
現時には、エッジパケットの生成規則を図27に示した
ものを用いればよい。この場合も、現エッジと前エッジ
の向き及び傾斜の程度から現エッジの始点の取扱いを判
断し、現エッジと次エッジの向き及び傾斜の程度から現
エッジの終点の取り扱いを判断してゆく。左回りのデー
タ表現のエッジパケットの生成規則に従ったエッジテー
ブル更新の処理の流れも、前述の図16及び図17と略
同様であり、ステップS636,S640,S648,
S653の“Y”,“N”が全て反対になるだけの違い
である。 <第5の実施例の説明>前述の第1の実施例に対し、第
3の実施例で説明した変形と同様に、第4の実施例での
図27の規則においても、ケース始11とケース終1
1、及びケース始18とケース終18がそれぞれ組み合
わされて、ケース始11:現エッジの始点は、“一走査
線だけつめる”として、かつケース終11:現エッジの
終点は“つめないでそのまま”としてもよいし、ケース
始18:現エッジの始点は、“つめないでそのまま”と
して、かつ、ケース終18:“一走査線だけつめる”と
してもよい。 <第6の実施例の説明>前記実施例では、座標の原点は
画像の左上にあるとして説明したが、これに限るもので
はない。即ち、原点の位置及び、座標の向きに応じて前
記説明中での向きの判定法や、ymax ,ymin ,x
min ,Δx等の扱いを変更すれば、同様の処理が可能で
あることはもちろんである。 <第7の実施例の説明>前記実施例においては、一転の
みエッジ、即ち始点と終点が一致しているエッジ(点エ
ッジ)は、図11で示されるデータを形成する際に、輪
郭を構成エッジの頂点列から予め除去されているものと
して説明したが、本発明はこれに限るものではない。即
ち、エッジデータの吟味時に、点エッジのデータは無視
して前述の処理を続行してもよい。図14の処理では、
ステップS57の現エッジデータ作成、ステップS58
の次エッジデータ作成、及びS62の次エッジデータの
作成手順において、処理中のエッジが点エッジであれ
ば、すぐ次の頂点データをさらに読み込んで、新たに
(xend ,yend )として、処理を続ければよい。この
とき、読みとばした頂点の数に応じて、注目頂点の位置
の更新や処理隅の頂点数のカウント等を調整すればよい
のである。かくして、エッジテーブルの作成中に点エッ
ジの除去を行うことももちろん可能である。 <第8の実施例の説明>エッジテーブルの構成は、前述
の構成に限るものではない。即ち、ポインタパケットを
図28に示す様な2次元のリスト構造をもったデータ形
成としてもよい。ポインタパケットは、そのポインタパ
ケットからリスト接続されるエッジパケットのエッジの
y座標の小さい方の端点のy座標値(ymin )(これ
は、このポインタパケットから順に複数のエッジパケッ
トがリスト接続される場合も、それら複数のエッジのy
min は全て等しい値であることに注目)を保持する項
と、y座標値を昇順に見た場合に、リスト接続されるエ
ッジパケットを有するポインタパケットの中で次に来る
ポインタパケットへのポインタの項と、そのポインタパ
ケットに接続されるエッジパケットへのポインタ項より
構成されている。
【0112】図28の形式をもったポインタパケットを
もった構成したエッジテーブルの例が図29である。図
29は、図3で与えられるアウトライン図形に対して構
成されるエッジテーブルである。この様に、2次元のリ
スト構造をもったエッジテーブルも、前述の実施例とほ
ぼ同様の手順で構成が可能であるが、ポインタパケット
領域があらかじめ画像の走査線本数分確保されているの
ではなく、エッジパケットが一つ生成されるたび毎に、
既存のポインタパケットの中に該当エッジパケットの表
すエッジのymin を保持するものがあるか否かを判定す
る。そして、あればそのポインタパケットでなるエッジ
パケットのリスト列に、該当エッジパケットを追加し、
なければ新たなポインタパケットを生成して、そのポイ
ンタパケットにymin を格納し、該当エッジパケットリ
スト接続した上で、新たに生成ポインタパケットをy
min の順で、ポインタパケット列のリスト接続に追加・
挿入しておくという操作を行うようになっている。
【0113】この様なエッジテーブルを用いての、アク
ティブエッジテーブルの生成も前述第1の実施例と同様
である。
【0114】この様な2次元構造をもったリスト構造を
採用すれば、画像の走査線本数のポインタパケット領域
を用意する必要はなくなり、特に扱う画像が大サイズの
ものであればあるほど、エッジテーブルに要するランダ
ムメモリ領域が少量で済ませられるという特有の効果を
生む。
【0115】尚、本発明は複数の機器から構成されるシ
ステムに適用しても、1つの機器からなる装置に適用し
ても良い。また、本発明はシステム或は装置に、本発明
を実施するプログラムを供給することによって達成され
る場合にも適用できることは言うまでもない。
【0116】以上に述べた様に線要素の連続する一方向
における注目線要素とその前後に隣接するそれぞれの線
要素との接続関係に基づいて、主走査から見たときの輪
郭線データを生成し、輪郭線データから送出すべき符号
を生成することにより、処理の高速化及び簡素化が図れ
る。
【0117】
【発明の効果】以上説明したように本発明によれば、閉
輪郭を表わすベクトルデータから符号データを生成する
際、簡素な構成で高速な処理を行うことが可能となる。
【図面の簡単な説明】
【図1】実施例の符号化装置をファクシミリ装置に適用
した概略構成を示すブロック図である。
【図2】アウトライン図形データの一例を示す図であ
る。
【図3】実施例で用いる右回りアウトライン図形データ
の例を示す図である。
【図4】エッジパケットデータのデータ構成を示す図で
ある。
【図5】従来法による図2のアウトライン図形データの
エッジテーブル(ET)の説明図である。
【図6】従来法における図2のアウトライン図形データ
のアクティブエッジテーブル(AET)の説明図であ
る。
【図7】従来法による図2のアウトライン図形データの
アクティブエッジテーブル(AET)の推移を説明する
ための図である。
【図8】奇偶反転法に内在する問題を説明するための図
である。
【図9】右回りアウトライン閉図形の内部領域を説明す
る図である。
【図10】左回りアウトライン閉図形の内部領域を説明
する図である。
【図11】アウトライン図形の座標列形式の輪郭データ
を示す図である。
【図12】図3のアウトライン図形データの座標列形式
の輪郭データを説明した図である。
【図13】第1の実施例におけるファクシミリ装置の符
号化動作を示すフローチャートである。
【図14】第1の実施例におけるエッジテーブル(E
T)の生成手順を示すフローチャートである。
【図15】初期化されたアドレスポインタ領域を示す図
である。
【図16】
【図17】第1の実施例におけるパケットデータの生成
及びエッジテーブルの更新の手順を示すフローチャート
である。
【図18】モデファイド・ハフマン(MH)コードを説
明するための図である。
【図19】図3のアウトライン図形データに基づくエッ
ジテーブル(ET)の説明図である。
【図20】図3のアウトライン図形データアクティブエ
ッジテーブル(AET)の推移を説明するための図であ
る。
【図21】第1の実施例における右回りアウトラインに
対するパケットデータ生成規則を示す図である。
【図22】MR方式における変化画素の定義を説明する
ための図である。
【図23】MR符号化の符号化を説明するための図であ
る。
【図24】第2実施例のファクシミリ装置における符号
化処理の流れを示すフローチャートである。
【図25】図24のステップS707における符号出力
処理のフローチャートである。
【図26】第2の実施例における変化画素のデータ構造
を示す図である。
【図27】他の実施例における左回りアウトラインに対
するパケットデータ生成規則を示す図である。
【図28】他の実施例におけるポインタパケットデータ
のデータ構造を説明するための図である。
【図29】他の実施例における図3のアウトライン図形
データのエッジテーブル(ET)の説明図である。
【符号の説明】
101 制御部 103 輪郭データファイル 104 操作部 111 CPU 112 ROM 113 RAM 114 バッファメモリ 115 符号化部 116 復号化部 117 送受信バッファ

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 複数の線要素でもって構成された閉輪郭
    を表わすベクトルデータより前記ベクトルデータの座標
    軸のいずれか一方に平行な走査線との交点座標を求める
    工程と、 前記交点座標より前記走査線毎に白ラン、黒ランの長さ
    を表す符号データを作成する工程と、 を有することを特徴する符号化方法。
  2. 【請求項2】 前記符号データは、符号化ライン上の白
    画素から黒画素あるいは黒画素から白画素に変化する変
    化画素の位置と参照ライン上の変化画素の位置との相対
    値を表わす符号であることを特徴とする請求項1記載の
    符号化方法。
  3. 【請求項3】 前記符号データは、画素毎に逐次生成さ
    れる符号であることを特徴とする請求項1記載の符号化
    方法。
  4. 【請求項4】 複数の線要素でもって構成された閉輪郭
    を表わすベクトルデータから前記ベクトルデータの座標
    軸のいずれか一方に平行な走査線との交点座標を求める
    交点検出手段と、 前記交点検出手段により検出された交点座標に基づいて
    前記走査線毎に白ラン、黒ランの長さを表わす符号デー
    タを作成する符号化手段と、 を有することを特徴とする符号化装置。
  5. 【請求項5】 前記符号データは、符号化ライン上の白
    画素から黒画素あるいは黒画素から白画素に変化する変
    化画素の位置と参照ライン上の変化画素の位置との相対
    値を表わす符号であることを特徴とする請求項4記載の
    符号化装置。
  6. 【請求項6】 前記符号データは、画素毎に逐次生成さ
    れる符号であることを特徴とする請求項4記載の符号化
    装置。
JP01079092A 1992-01-24 1992-01-24 符号化方法及びその装置 Expired - Fee Related JP3155595B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP01079092A JP3155595B2 (ja) 1992-01-24 1992-01-24 符号化方法及びその装置
EP93100949A EP0552791B1 (en) 1992-01-24 1993-01-22 Apparatus and method for extracting outline data and encoding image data using the outline data
DE69332918T DE69332918D1 (de) 1992-01-24 1993-01-22 Gerät und Verfahren zum Extrahieren von Kantendaten und zur Kodierung von Bilddaten mit diesen Kantendaten
US08/377,509 US5748777A (en) 1992-01-24 1995-01-24 Apparatus and method for extracting outline data and encoding image data using the outline data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP01079092A JP3155595B2 (ja) 1992-01-24 1992-01-24 符号化方法及びその装置

Publications (2)

Publication Number Publication Date
JPH05205069A true JPH05205069A (ja) 1993-08-13
JP3155595B2 JP3155595B2 (ja) 2001-04-09

Family

ID=11760140

Family Applications (1)

Application Number Title Priority Date Filing Date
JP01079092A Expired - Fee Related JP3155595B2 (ja) 1992-01-24 1992-01-24 符号化方法及びその装置

Country Status (1)

Country Link
JP (1) JP3155595B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230154071A1 (en) * 2021-11-12 2023-05-18 Rockwell Collins, Inc. Conversion of filled areas to run length encoded vectors
US11748923B2 (en) 2021-11-12 2023-09-05 Rockwell Collins, Inc. System and method for providing more readable font characters in size adjusting avionics charts
US11842429B2 (en) 2021-11-12 2023-12-12 Rockwell Collins, Inc. System and method for machine code subroutine creation and execution with indeterminate addresses
US11854110B2 (en) 2021-11-12 2023-12-26 Rockwell Collins, Inc. System and method for determining geographic information of airport terminal chart and converting graphical image file to hardware directives for display unit
US11915389B2 (en) 2021-11-12 2024-02-27 Rockwell Collins, Inc. System and method for recreating image with repeating patterns of graphical image file to reduce storage space
US11954770B2 (en) 2021-11-12 2024-04-09 Rockwell Collins, Inc. System and method for recreating graphical image using character recognition to reduce storage space

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230154071A1 (en) * 2021-11-12 2023-05-18 Rockwell Collins, Inc. Conversion of filled areas to run length encoded vectors
US11748923B2 (en) 2021-11-12 2023-09-05 Rockwell Collins, Inc. System and method for providing more readable font characters in size adjusting avionics charts
US11842429B2 (en) 2021-11-12 2023-12-12 Rockwell Collins, Inc. System and method for machine code subroutine creation and execution with indeterminate addresses
US11854110B2 (en) 2021-11-12 2023-12-26 Rockwell Collins, Inc. System and method for determining geographic information of airport terminal chart and converting graphical image file to hardware directives for display unit
US11887222B2 (en) * 2021-11-12 2024-01-30 Rockwell Collins, Inc. Conversion of filled areas to run length encoded vectors
US11915389B2 (en) 2021-11-12 2024-02-27 Rockwell Collins, Inc. System and method for recreating image with repeating patterns of graphical image file to reduce storage space
US11954770B2 (en) 2021-11-12 2024-04-09 Rockwell Collins, Inc. System and method for recreating graphical image using character recognition to reduce storage space

Also Published As

Publication number Publication date
JP3155595B2 (ja) 2001-04-09

Similar Documents

Publication Publication Date Title
JP2806961B2 (ja) 画像符号化方法
EP0667018B1 (en) Polygon rasterization
US6466229B1 (en) Graphics processing apparatus and graphics processing method
EP0633550B1 (en) Image processing method and apparatus thereof
US4817187A (en) Apparatus and method for vectorization of incoming scanned image data
JPH0719297B2 (ja) グラフィック表示処理システム及び方法
US5233671A (en) Image coding method for coding characters using a modified Bezier curve
US5748777A (en) Apparatus and method for extracting outline data and encoding image data using the outline data
EP0600709A2 (en) Range-image processing apparatus and method
EP0200885B1 (en) Method and apparatus for processing image data
EP0522877B1 (en) Image processing
JPH076233A (ja) 曲線を描く装置及び方法
US5317679A (en) Digital image processor including correction for undesirable edge emphasis in outline-demarcated fonts
EP0344686B1 (en) Clipping process and processor
JP3155595B2 (ja) 符号化方法及びその装置
JP2634851B2 (ja) 画像処理装置
US5317650A (en) Determination of the arc length of a curve
JP2009271700A (ja) 画像処理装置および画像処理方法
JP3266905B2 (ja) 図形処理装置
JPH0652304A (ja) 画像処理装置及びその方法
Šrámek Fast ray-tracing of rectilinear volume data
JPH0520467A (ja) 画像処理方法及びその装置
JPH0520466A (ja) 画像処理方法及びその装置
JP2819961B2 (ja) 印刷制御装置
JP3843794B2 (ja) 図形処理装置

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20010109

LAPS Cancellation because of no payment of annual fees