【事件の表示】
　特許第２６４６４７５号「文字データ入力出力装置と入力出力方法」の特許に対する特許異議の申立てについて、次のとおり決定する。
【結論】
　訂正を認める。
　本件特許異議の申立てを却下する。
【理由】
１．手続きの経緯
　本件特許第２６４６４７５号の請求項１乃至７に係る発明についての出願は、平成４年９月１日に特許出願され、平成９年５月９日にその発明について特許の設定登録がなされ、その後、請求項３及び５に係る発明の特許について、異議申立人清宮桂及び松本茂より特許異議の申立がなされ、取消理由通知がなされ、その指定期間内である平成１０年１２月８日に訂正請求がなされ、その訂正請求に対して訂正拒絶理由通知がなされ、その指定期間内である平成１１年６月８日に手続補正書が提出されたものである。
２．訂正の適否についての判断
（１）訂正請求に対する補正の適否について
　訂正請求に対する補正は、全文訂正明細書中の段落【０１３０】、【０１５０】、【０１５６】及び【０１６３】における固定点の取り方についての記載を補正するとともに、この補正と整合性を保つように訂正請求書の（２）訂正の目的、（３）訂正の内容及び（４）請求の原因の記載を補正しようとするものであり、明瞭でない記載の釈明を目的とするものであって、訂正請求書の要旨を変更するものではなく、特許法第１２０条の４第３項で準用する同法第１３１条第２項の規定に適合する。
（２）訂正の内容
　上記補正の結果、特許権者が求める訂正の内容は、請求項３及び５を削除し、それに伴い、請求項４を請求項３とし、請求項６を請求項４とし、請求項７を請求項５とするとともに、段落【０１３０】、【０１５０】、【０１５６】及び【０１６３】における固定点の取り方についての記載を訂正するものである。
（３）訂正の目的の適否、新規事項の有無及び拡張・変更の存否
　請求項３及び５を削除する訂正は、特許請求の範囲の減縮を目的とするものであり、上記段落【０１３０】、【０１５０】、【０１５６】及び【０１６３】における固定点の取り方についての記載の訂正は、明瞭でない記載の釈明を目的とするものであり、請求項４を請求項３とし、請求項６を請求項４とし、請求項７を請求項５とする訂正は、請求項３及び５の削除に伴い、訂正前の請求項３乃至請求項７の項番号を繰り上げるものにすぎない。そして、それら訂正は、願書に添付した明細書に記載された事項の範囲内においてするものであり、実質上特許請求の範囲を拡張し、又は変更するものでもない。
（４）むすび
　以上のとおりであるから、上記訂正は、特許法第１２０条の４第２項及び同条第３項で準用する特許法第１２６条第２項乃至第４項の規定に適合するので、当該訂正を認める。
３．特許異議の申立てについての判断
　請求項３及び５に係る発明は、訂正の結果削除され、特許異議の申立ての対象が存在しないので、本件特許異議の申立ては、不適法なものである。
　よって、結論のとおり決定する。
【異議決定日】
平成１１年８月５日（１９９９．８．５）
【訂正の要旨】
（訂正の要旨）
ａ．平成９年１月３０日付け本件請求人提出の補正書により補正された特許請求の範囲の請求項３を、特許請求の範囲の減縮を目的として、削除する。旧請求項４を新請求項３とする。
ｂ．平成９年１月３０日付け本件請求人提出の補正書により補正された特許請求の範囲の請求項５を、特許請求の範囲の減縮を目的として、削除する。旧請求項６を新請求項４とし、旧請求項７を新請求項５とする。
ｃ．特許明細書中の
「　【０１３０】
　図１９において、最も始めに曲率によって選んだ仮接合点がｘｉ（Ｃの近く）である。近傍接合点がｘｊ（Ｂの近く）である。入力近傍の場合は、仮接合点の次の仮接合点ｘｉ＋１（Ｄの近く）と、仮接合点ｘｊの一つ前の仮接合点ｘｊ−１（Ａの近く）を考える。この４点を通る曲線が最も滑らかになるようにこれらの点を通るようにする。これら４つの仮接合点の内両側のＡ、Ｄは固定し、中間のＢ、Ｃのみを動かして適合係数を求める。Ｂ、Ｃの点は２α＋１個の接合点候補を持つ。そこで、（２α＋１）２個の組み合せの区分的多項式近似をする。この内、最も滑らかに４点を繋ぐ近似が最も高い適合係数を与える。」
を、明瞭でない記載の釈明を目的として、
「　【０１３０】
　図１９において、最も始めに曲率によって選んだ仮接合点がｘｉ（Ｃの近く）である。近傍接合点がｘｊ（Ｂの近く）である。入力近傍の場合は、仮接合点の次の仮接合点ｘｉ＋１（Ｄの近く）と、仮接合点ｘｊの一つ前の仮接合点ｘｊ−１（Ａの近く）を考える。この４点を通る曲線が最も滑らかになるようにこれらの点を通るようにする。これら４つの仮接合点の内両側のＡ、Ｄは固定し、中間のＢ、Ｃのみを動かして適合係数を求める。Ｂ、Ｃの点は２α＋１個の接合点候補を持つ。
ＣＡＳＥ１では、ｘｊ−１の接合点候補λｌ’（ｊ−１）の中でｍａｘ１’Ｐｊ−１（ｔ−１）（ｌ’）の点を固定点とする。ｘｉ＋１の接合点候補λｏ’（ｉ＋１）の中でｍａｘｏ’Ｐｉ＋１（ｔ−１）（ｏ’）の点を固定点とする
と補正する。
ｄ．特許明細書の
「　【０１５０】
　これも曲線ＡＤの全てに渡って曲率を求めるのでなく、４点だけ計算すればよいので簡単である。曲率の反転回数により変曲点の数ｎｃを求める。変曲点の数は当然３以下である。図２１は曲線の概略と変曲点の数ｎｃの例を示す図である。変曲点を×印によって表す。（ａ）は変曲点の数が３つの場合である。蛇行が甚だしい。（ｂ）は変曲点の数が２つの場合である。（ｃ）は変曲点数が１の場合である。（ｄ）は変曲点数が０の場合である。これが最も滑らかに４点を繋いでいる。これを採用するのが望ましい。この場合にｒｉｊ（ｏｌ）が１になるように決める。例えば変曲点数ｎｃを用いて、」
を、明瞭でない記載の釈明を目的として、
「　【０１５０】
　これも曲線ＡＤの全てに渡って曲率を求めるのでなく、４点だけ計算すればよいので簡単である。曲率の反転回数により変曲点の数ｎｃを求める。変曲点の数は当然３以下である。図２１は曲線の概略と変曲点の数ｎｃの例を示す図である。変曲点を×印によって表す。
ｘｊ−１の接合点候補λｌ’（ｊ−１）の中でｍａｘＰｊ−１（ｔ−１）（ｌ’）の点を固定点とする。ｘｉ＋１の接合点候補λｏ’（ｉ＋１）の中でｍａｘＰｉ＋１（ｔ−１）（ｏ’）の点を固定点とする。
と補正する。
ｅ．特許明細書の
「　【０１５６】
　それぞれの仮接合点ｘｉ−１、ｘｉ、ｘｉ＋１の接合点候補を、Ａ、Ｂ、Ｃとする。点Ａはλｌ（ｉ−１）（ｘｉ−１ｌ，ｙｉ−１ｌ）でｌがパラメータである。点Ｂはλｏ（ｉ）（ｘｉｏ，ｙｉｏ）でパラメータはｏである。点Ｃはｘｉ＋１の接合点候補λｈ（ｉ＋１）（ｘｉ＋１ｈ，ｙｉ＋１ｈ）で、ｍａｘｈ（Ｐｉ＋１ｈｔ−１）を示す。ｍａｘｈはパラメータｈのなかでの最大を示す。」
を、明瞭でない記載の釈明を目的として、
「　【０１５６】
　それぞれの仮接合点ｘｉ−１、ｘｉ、ｘｉ＋１の接合点候補を、Ａ、Ｂ、Ｃとする。点Ａはλｌ（ｉ−１）（ｘｉ−１ｌ，ｙｉ−１ｌ）でｌがパラメータである。点Ｂはλｏ（ｉ）（ｘｉｏ，ｙｉｏ）でパラメータはｏである。点Ｃはｘｉ＋１の接合点候補λｈ（ｉ＋１）（ｘｉ＋１ｈ，ｙｉ＋１ｈ）で、ｍａｘｈ（Ｐｉ＋１ｈｔ−１）を示す。ｍａｘｈはパラメータｈのなかでの最大を示す。
ＣＡＳＥ２では、ｘｉ＋１の接合点候補λｈ（ｉ＋１）の中でのｍａｘｈＰｉ＋１（ｔ−１）（ｈ）の点を固定点とする。
と補正する。
ｆ．特許明細書の
「　【０１６３】
　Ｄはｘｉ−１の接合点候補λｏｉ−１（ｘｉ−１ｏ，ｙｉ−１ｏ）の一つである。これの前回の確率計算で最大値を与えるもので固定値である。
図示したように実際にはｏ’であるが、’が１／４角にならないのでここでは’を省いている。以上のように４点が定まる。これより後の計算はさきに説明したＣＡＳＥ１の場合と同じである。」
を、明瞭でない記載の釈明を目的として、
「　【０１６３】
　Ｄはｘｉ−１の接合点候補λｏｉ−１（ｘｉ−１ｏ，ｙｉ−１ｏ）の一つである。これの前回の確率計算で最大値を与えるもので固定値である。
ＣＡＳＥ３では、ｘｊ＋１の接合点候補λｌ’（ｊ＋１）の中でｍａｘｌ’Ｐｊ＋１（ｔ−１）（ｌ’）の点を固定点とする。ｘｉ−１の接合点候補λｏ’（ｉ−１）の由でｍａｘｏ’Ｐｉ−１（ｔ−１）（ｏ’）の点を固定点とする。
と補正する。
（５４）【発明の名称】
文字データ入出力装置と入出力方法
（５７）【特許請求の範囲】
　　【請求項１】　（ａ）光学的に文字フォントデータを読み取り、縦横に有限個並ぶ画素に対応させて記憶する文字読み取り装置と、
（ｂ）縦横に並ぶ画素に対応付けて読み取られた文字の輪郭線を抽出する輪郭線抽出機構と、
（ｃ）抽出された輪郭線の２次元座標（Ｘ，Ｙ）を連続する群毎に記憶する輪郭線点列記憶機構と、
（ｄ）前記の群毎の輪郭線点列のＸ、Ｙ座標をｔを独立変数、ｘとｙを従属変数とする２次の区分的多項式で近似し、近似精度が所定範囲になるまで２次の区分的多項式の次元数を増やしながら最小二乗近似を繰り返し輪郭線点列の群毎の近似多項式を求めるデータ近似機構Ａと、
（ｅ）前記の近似結果からｘ、ｙ空間での群毎の輪郭線点列の各点における曲率を求める曲率演算機構と、
（ｆ〉群毎の曲率のデータから真円を抽出する真円抽出機構と、
（ｇ）真円を除いた輪郭線点列の曲率のデータから無限大であるかある一定値より大きい値の曲率を持つ点を仮接合点として抽出する仮接合点位置抽出機構と、
（ｈ）前記仮接合点の１つ（第１仮接合点）の輪郭線点列上の前後所定個の点の１つを第１接合点候補とし、前記第１仮接合点から所定半径内で同一輪郭線点列上にある他の仮接合点の１つ（近傍接合点）の輪郭線点列上の前後所定個の点の１つを第２接合点候補とし、同一輪郭線点列上で点列走査方向に第１固定点と前記第１仮接合点と前記近傍接合点と第２固定点がこの順で一列状に並ぶように前記近傍接合点と第１固定点と第２固定点を選択する手段と、前記第１接合点候補と前記第２接合点候補のすべての組合せについて、前記第１固定点と前記第１接合点候補と前記第２接合点候補と前記第２固定点の４点を最も滑らかに結ぶ線の滑らかさに基づき前記第１接合点候補の適合度を求める手段と、最も適合度の高い前記第１接合点候補を選択して前記第１仮接合点に代わる最適接合点とする手段とを有する最適接合点抽出機構と、
（ｉ）連続する二以上の直線又は連続する二以上の円弧の始点である最適接合点の中からそれがなくても近似精度が保たれるような不要な最適接合点を見いだしこれを除去し直線又は円弧を統合する不要接合点除去機構と、
（ｊ）除去されずに残った最適接合点を最終接合点として記憶する最終接合点記億装置と、
（ｋ）同一群の点列内の隣接する最終接合点の間を直線、円弧の順で近似しこれで所定の近似精度が得られないときはｔを独立変数、ｘ、ｙを従属変数とした２次の区分的多項式で近似し近似精度が所定の値に収まるまで２次の区分的多項式の次元数を増加させながら最小二乗近似を繰り返して隣接する最終接合点の間を、直線、円弧、区分的多項式で近似するデータ近似機構Ｂと、
（ｌ）真円データと点列の群毎に前記の最終接合点の座標と隣接する最終接合点の間を近似する関数のパラメータとを記憶する圧縮データ記憶機構と、
（ｍ）記憶された圧縮データを入力し真円データと点列の群毎の最終接合点の座標と隣接する最終接合点の間を近似する関数のパラメータを得て輪郭線を再生する輪郭再生機構と、
（ｎ）再生された輪郭線の内部の画素と、外部の画素に異なる値を対応させる文字再生機構と、
（ｏ）再生された文字フォントを文字として出力する再生データ出力機構を含むことを特徴とする文字データ入力出力装置。
　　【請求項２】　（ａ）光学的に文字フォントデータを読み取り、縦横に有限個並ぶ画素に対応させて記憶する文字読み取り装置と、
（ｂ）縦横に並ぶ画素に対応付けて読み取られた文字の輪郭線を抽出する輸郭線抽出機構と、
（ｃ）抽出された輪郭線の２次元座標（Ｘ，Ｙ）を連続する群毎に記憶する輪郭線点列記憶機構と、
（ｄ）前記の群毎の輪郭線点列のＸ、Ｙ座標をｔを独立変数、ｘとｙを従属変数とする２次の区分的多項式で近似し、近似精度が所定範囲になるまで２次の区分的多項式の次元数を増やしながら最小二乗近似を繰り返し輪郭線点列の群毎の近似多項式を求めるデータ近似機構Ａと、
（ｅ）前記の近似結果からｘ、ｙ空間での群毎の点列の各点における曲率を求める曲率演算機構と、
（ｆ）群毎の曲率のデータから真円を抽出する真円抽出機構と、
（ｇ）真円を除く輪郭線点列の曲率のデータから無限大であるかある一定値より大きい値の曲率を持つ点を仮接合点として抽出する仮接合点位置抽出機構と、
（ｈ）前記仮接合点の１つ（第１仮接合点）の輪郭線点列上の前後所定個の点の１つを第１接合点候補とし、前記第１仮接合点から所定半径内で同一輪郭線点列上にある他の仮接合点の１つ（近傍接合点〉の輪郭線点列上の前後所定個の点の１つを第２接合点候補とし、同一輪郭線点列上で点列走査方向に第１固定点と前記第１仮接合点と前記近傍接合点と第２固定点がこの順で一列状に並ぶように前記近傍接合点と第１固定点と第２固定点を選択する手段と、前記第１接合点候補と前記第２接合点候補のすべての組合せについて、前記第１固定点と前記第１接合点候補と前記第２接合点候補と前記第２固定点の４点を最も滑らかに結ぶ線の滑らかさに基づき前記第１接合点候補の適合度を求める手段と、最も適合度の高い前記第１接合点候補を選択して前記第１仮接合点に代わる最適接合点とする手段とを有する最適接合点抽出機構と、
（ｋ）同一群の点列内の隣接する最適接合点の間を直線、円弧の順で近似しこれで所定の近似精度が得られないときはｔを独立変数、ｘ、ｙを従属変数とした２次の区分的多項式で近似し近似精度が所定の値に収まるまで２次の区分的多項式の次元数を増加させながら最小二乗近似を繰り返して隣接する最適接合点の間を、直線、円弧、区分的多項式で近似するデータ近似機構Ｂと、
（ｌ）真円データと点列の群毎に前記の最適接合点の座標と隣接する最適接合点の間を近似する関数のパラメータとを記憶する圧縮データ記憶機構と、
（ｍ）記憶された圧縮データを入力し真円データと点列の群毎の最適接合点の座標と隣接する最適接合点の間を近似する関数のパラメータを得て輪郭線を再生する輸郭再生機構と、
（ｎ）再生された輪郭線の内部の画素と、外部の画素に異なる値を対応させる文字再生機構と、
（ｏ）再生された文字フォントを文字として出力する再生データ出力機構を含むことを特徴とする文字データ入力出力装置。
　　【請求項３】　（ａ）光学的に文字フォントデータを読み取り、縦横に有限個並ぶ画素に対応させて記憶する文字読み取り装置と、
（ｂ）縦横に並ぶ画素に対応付けて読み取られた文字の輪郭線を抽出する輪郭線抽出機構と、
（ｃ）抽出された輪郭線の２次元座標（Ｘ，Ｙ）を連続する群毎に記憶する輪郭線点列記憶機構と、
（ｅ）Ｘ、Ｙ空間での群毎の点列の各点における離散的曲率を求める曲率演算機構と、
（ｆ）群毎の曲率のデータから真円を抽出する真円抽出機構と、
（ｇ）真円を除く輪郭線点列の曲率のデータから無限大であるかある一定値より大きい値の曲率を持つ点を仮接合点として抽出する仮接合点位置抽出機構と、
（ｈ）前記仮接合点の１つ（第１仮接合点）の輪郭線点列上の前後所定個の点の１つを第１接合点候補とし、前記第１仮接合点から所定半径内で同一輪郭線点列上にある他の仮接合点の１つ（近傍接合点）の輪郭線点列上の前後所定個の点の１つを第２接合点候補とし、同一輪郭線点列上で点列走査方向に第１固定点と前記第１仮接合点と前記近傍接合点と第２固定点がこの順で一列状に並ぶように前記近傍接合点と第１固定点と第２固定点を選択する手段と、前記第１接合点候補と前記第２接合点候補のすべての組合せについて、前記第１固定点と前記第１接合点候補と前記第２接合点候補と前記第２固定点の４点を最も滑らかに結ぶ線の滑らかさに基づき前記第１接合点候補の適合度を求める手段と、最も適合度の高い前記第１接合点候補を選択して前記第１仮接合点に代わる最適接合点とする手段とを有する最適接合点抽出機構と、
（ｉ）連続する二以上の直線又は連続する二以上の円弧の始点である最適接合点の中からそれがなくても近似精度が保たれるような不要な最適接合点を見いだしこれを除去し直線又は円弧を統合する不要接合点除去機構と、
（ｊ）除去されずに残った最適接合点を最終接合点として記憶する最終接合点記憶装置と、
（ｋ）同一群の点列内の隣接する最終接合点の間を直線、円弧の順で近似しこれで所定の近似精度が得られないときはｔを独立変数、ｘ、ｙを従属変数とした２次の区分的多項式で近似し近似精度が所定の値に収まるまで２次の区分的多項式の次元数を増加させながら最小二乗近似を繰り返して隣接する最終接合点の間を、直線、円弧、区分的多項式で近似するデータ近似機構Ｂと、
（ｌ）真円データと点列の群毎に前記の最終接合点の座標と隣接する最終接合点の間を近似する関数のパラメータとを記憶する圧縮データ記憶機構と、
（ｍ）記憶された圧縮データを入力し真円データと点列の群毎の最終接合点の座標と隣接する最終接合点の間を近似する関数のパラメータを得て輪郭線を再生する輪郭再生機構と、
（ｎ）再生された輪郭線の内部の画素と、外部の画素に異なる値を対応させる文字再生機構と、
（ｏ）再生された文字フォントを文字として出力する再生データ出力機構を含むことを特徴とする文字データ入力出力装置。
　　【請求項４】　（ａ）光学的に文字フォントデータを読み取り、縦横に有限個並ぶ画素に対応させてデータを記憶し、
（ｂ）縦横に並ぶ画素に対応付けて読み取られた文字の輪郭線を抽出し、
（ｃ）抽出された輪郭線の２次元座標（Ｘ，Ｙ）を連続する群毎に記憶し、
（ｄ）前記の群毎の輪郭線点列のＸ、Ｙ座標をｔを独立変数、ｘとｙを従属変数とする２次の区分的多項式で近似し、近似精度が所定範囲になるまで区分的多項式の次元数を増やしながら最小二乗近似を繰り返し輪郭線点列の群毎の近似多項式を求め、
（ｅ）前記の近似結果からｘ、ｙ空間での群毎の点列の各点における曲率を求め、
（ｆ）群毎の曲率のデータから真円を抽出し、
（ｇ）真円を除く輪郭線点列の曲率のデータから無限大であるかある一定値より大きい値の曲率を持つ点を仮接合点として抽出し、
（ｈ）前記仮接合点の１つ（第１仮接合点）の輪郭線点列上の前後所定個の点の１つを第１接合点候補とし、前記第１仮接合点から所定半径内で同一輪郭線点列上にある他の仮接合点の１つ（近傍接合点）の輪郭線点列上の前後所定個の点の１つを第２接合点候補とし、同一輪郭線点列上で点列走査方向に第１固定点と前記第１仮接合点と前記近傍接合点と第２固定点がこの順で一列状に並ぶように前記近傍接合点と第１固定点と第２固定点を選択し、前記第１接合点候補と前記第２接合点候補のすべての組合せについて、前記第１固定点と前記第１接合点候補と前記第２接合点候補と前記第２固定点の４点を最も滑らかに結ぶ線の滑らかさに基づき前記第１接合点候補の適合度を求め、最も適合度の高い前記第１接合点候補を選択して前記第１仮接合点に代わる最適接合点とし、
（ｉ）連続する二以上の直線又は連続する二以上の円弧の始点である最適接合点の中からそれがなくても近似精度が保たれるような不要な最適接合点を見いだしこれを除去し直線又は円弧を統合し、
（ｊ）除去されずに残った最適接合点を最終接合点として記憶し、
（ｋ）同一群の点列内の隣接する最終接合点の間を直線、円弧の順で近似しこれで所定の近似精度が得られないときはｔを独立変数、ｘ、ｙを従属変数とした２次の区分的多項式で近似し近似精度が所定の値に収まるまで２次の区分的多項式の次元数を増加させながら最小二乗近似を繰り返して隣接する最終接合点の間を、直線、円弧、区分的多項式で近似し、
（ｌ）真円データと点列の群毎に前記の最終接合点の座標と隣接する最終接合点の間を近似する関数のパラメータとを記憶することによって文字フォントデータを入力し、
（ｍ）他方文字を出力するときは、記憶された真円データと点列の群毎の最終接合点の座標と隣接する最終接合点の間を近似する関数のパラメータを出力し、これから文字フォントの輪郭線を再生し、
（ｎ）再生された輪郭線の内部の画素と外部の画素に異なる値を対応させることにより文字を再生し、
（ｏ）再生された文字フォントを文字として出力することを特徴とする文字データ入力出力方法。
　　【請求項５】　（ａ）光学的に文字フォントデータを読み取り、縦横に有限個並ぶ画素に対応させてデータを記憶し、
（ｂ）縦横に並ぶ画素に対応付けて読み取られた文字の輪郭線を抽出し、
（ｃ）抽出された輪郭線の２次元座標（Ｘ，Ｙ）を連続する群毎に記憶し、
（ｅ）Ｘ、Ｙ空間での群毎の点列の各点における離散的曲率を求め、
（ｆ）群毎の曲率のデータから真円を抽出し、
（ｇ）真円を除く輪郭線点列の曲率のデータから無限大であるかある一定値より大きい値の曲率を持つ点を仮接合点として抽出し、
（ｈ）前記仮接合点の１つ（第１仮接合点）の輪郭線点列上の前後所定個の点の１つを第１接合点候補とし、前記第１仮接合点から所定半径内で同一輪郭線点列上にある他の仮接合点の１つ（近傍接合点）の輪郭線点列上の前後所定個の点の１つを第２接合点候補とし、同一輪郭線点列上で点列走査方向に第１固定点と前記第１仮接合点と前記近傍接合点と第２固定点がこの順で一列状に並ぶように前記近傍接合点と第１固定点と第２固定点を選択し、前記第１接合点候補と前記第２接合点候補のすべての組合せについて、前記第１固定点と前記第１接合点候補と前記第２接合点候補と前記第２固定点の４点を最も滑らかに結ぶ線の滑らかさに基づき前記第１接合点候補の適合度を求め、最も適合度の高い前記第１接合点候補を選択して前記第１仮接合点に代わる最適接合点とし、
（ｉ）連続する二以上の直線又は連続する二以上の円弧の始点である最適接合点の中からそれがなくても近似精度が保たれるような不要な最適接合点を見いだしこれを除去し直線又は円弧を統合し、
（ｊ）除去されずに残った最適接合点を最終接合点として記憶し、
（ｋ）同一群の点列内の隣接する最終接合点の間を直線、円弧の順で近似しこれで所定の近似精度が得られないときはｔを独立変数、ｘ、ｙを従属変数とした２次の区分的多項式で近似し近似精度が所定の値に収まるまで２次の区分的多項式の次元数を増加させながら最小二乗近似を繰り返して隣接する最終接合点の間を、直線、円弧、区分的多項式で近似し、
（ｌ）真円データと点列の群毎に前記の最終接合点の座標と隣接する最終接合点の間を近似する関数のパラメータとを記憶することによって文字フォントデータを入力し、
（ｍ）他方文字を出力するときは、記憶された真円データと点列の群毎の最終接合点の座標と隣接する最終接合点の間を近似する関数のパラメータを出力し、これから文字フォントの輪郭線を再生し、
（ｎ）再生された輪郭線の内部の画素と、外部の画素に異なる値を対応させることにより文字を再生し、
（ｏ）再生された文字フォントを文字として出力することを特徴とする文字データ入力出力方法。
【発明の詳細な説明】
　　【０００１】
　　【産業上の利用分野】
　この発明は文字フォント（活字体や毛筆体など）を画像読み取り装置によって二値データとして得て、文字の特徴を失うことなくノイズを除去しつつ圧縮して記憶させ、圧縮したデータから文字を再生するものである。とくに文字フォントを字母から自動的にデジタルデータ化し、これを任意の大きさ任意の位置に再生することに利用され、印刷機器やワープロ等に簡単に使用できるものである。
　　【０００２】
　文字フォントは形状の規定された文字の集まりであるが、自在に縮小拡大して利用しようとすると文字の二次元的な形状そのものではなく抽象的なデータとして記憶させる必要がある。漢字を含む文字の数が多いので一文字毎のデータの数が多いと入力に時間が掛かるし記憶装置の容量も大きいものが要求される。また出力にも時間が掛かるし経済的でない。できるだけ一文字あたりのデータ数は少ないほうが良い。
　　【０００３】
　従来文字毎のデータを記憶装置に記憶させる方法として二つの方法があった。
▲１▼文字データを二値データの列と見做してコード化する方法。これは文字を白黒の二値画像にし、微分などによって輪郭線を抽出し、輪郭線の連続する方向を求めてチェーン符号化し始点と符号列を記憶するものである。
　　【０００４】
▲２▼文字フォントの輪郭線を抽出しこれを直線や円弧によって近似し始点の座標と直線、円弧などの関数を記憶する方法。これはデータを圧縮できるので入力、出力に便利な方法である。
　　【０００５】
　本発明は後者のカテゴリーに属する方法である。文字フォントの輪郭線を抽出した後、チェーン符号化すると、画像の最小単位である画素によって輪郭点列座標を記憶するため拡大した場合の再生文字の品質が劣る。記憶させたデータに一定の乗数をかけて拡大文字の座標を決定するから、輪郭点列が滑らかでなくギザギザになる。従ってチェーン符号化法では任意の倍率の良好な拡大文字を再生することができない。輪郭線は直線、円弧などの組み合わせと考えられるが、その他の形状の一部である場合もある。これは何らかの関数で表すことができよう。データの取り扱いの容易さを考えるとデータの数は少ない程便利である。文字フォントを正確に表現するためには輪郭線を正確に近似できるデータを求めなければならない。であるからデータの数をできるだけ少なくしてできるだけ正確に輪郭線を近似する方法が希求されている。
　　【０００６】
　　【従来の技術】
　文字フォントの輪郭線は直線、円弧、その他の滑らかな曲線の集まりであると考えるとこれらの曲率の変化する点をまず検出するということが必要である。曲率の変わる点を接合点と言う。隣接する接合点の間では直線、円弧、または簡単な関数で輪郭線を近似することができる。するとできるだけ正確に接合点を求めるということが重要である。接合点が決まれば、隣接する二つの接合点間を表す直線、円弧、曲線などの区分片を求める。この区分片を区分関数で表す。このようにすれば、接合点と、これを始点とする区分関数の組み合わせによって全輪郭線を表現できる。接合点の精度と、区分関数の精度により近似の精度が決まる。
　　【０００７】
　文字フォントは二次元的な情報である。これについての従来技術は乏しい。一次元情報についてのデータの圧縮法としては、特願昭６３−２１１９４８号がある。これはひと続きの曲線を二次曲線で近似し、近似式から各点の曲率を求めて微分不連続な点を求める。微分不連続点が接合点に該当するということができる。次いで隣接する微分不連続点の間のデータを二次関数で近似してデータ圧縮する。この二次関数は簡単なパラメータによって指定することができる。すると微分不連続点と二次関数列のパラメータを指定することにより、一次元データを近似できる。
　　【０００８】
　　【発明が解決しようとする課題】
　従来文字フォントを少ないデータで記憶し任意の大きさの文字を再生できるような技術は存在しなかった。前述の方法は独立変数が時間で従属変数が変位である場合などに使うのでデータが一次元の情報なのである。例えば音のような一変数を扱う場合である。
　　【０００９】
　これを文字フォントのように二次元の情報のデータ圧縮に使うことができない。文字フォントは横軸をｘ、縦軸をｙとしてｙをｘの関数として表すことができるから、２次元に拡張してこの方法を使うことができるように見える。しかしそうではない。文字フォントの輪郭線は閉じられた二次元の情報であるので、独立変数をｘとすると、ｙがこれの多価関数になり、この方法を使うことが簡単にはできない。
　　【００１０】
　また先述の方法が対象にしていたものは二次元情報でないので輪郭線や接合点というような明確な意味を持っていなかった。変数の変化はランダムで、微分不連続点の意味がまだ明確でなく、これの決定について誤りがあるかどうかということについては考慮されていない。ところが文字のような場合は直線成分が多く含まれるし、円弧部分も多い。変数がランダムに変化するという訳ではない。
　　【００１１】
　また先述の方法を二次元情報に適用するためにある独立変数を考えて、輪郭線のｘ、ｙ座標を独立変数に対する従属変数とすることが考えられよう。しかしこの場合、何が曲率を表すのかということが明確でない。接合点というものが二次元情報を取り扱う時に初めて現れるがこれは単に微分不連続点として求められるものではない。ノイズの影響を考慮しなければならない。ノイズによって見掛け上接合点として現れる場合もある。これを除去し正しい接合点を求める必要がある。
　　【００１２】
　本発明は、文字フォントを読み取り自動的にデータ圧縮して記憶し任意の大きさの文字として任意の場所に再生できるようにする文字フォントデータ入力出力装置を提供する。その目標は次のように纏められる。
　　【００１３】
（１）フォントの作成労力を省くこと。
（２）高品質の文字の取り扱いが可能なこと。
（３）フォントのデータ量が少ないこと。
　　【００１４】
　　【課題を解決するための手段】
　本発明の文字データ入力出力装置は、光学的に文字フォントデータを読み取り、縦横に有限個並ぶ画素に対応させて記憶する文字読み取り装置と、縦横に並ぶ画素に対応付けて読み取られた文字の輪郭線を抽出する輪郭線抽出機構と、抽出された輪郭線の２次元座標（Ｘ，Ｙ）を連続する群毎に記憶する輪郭線点列記憶機構と、前記の群毎の輪郭線点列のＸ、Ｙ座標をｔを独立変数、ｘとｙを従属変数とする２次の区分的多項式で近似し、近似精度が所定範囲になるまで２次の区分的多項式の次元数を増やしながら最小二乗近似を繰り返し輪郭線点列の群毎の近似多項式を求めるデータ近似機構Ａと、前記の近似結果からｘ、ｙ空間での群毎の輪郭線点列の各点における曲率を求める曲率演算機構と、群毎の曲率のデータから真円を抽出する真円抽出機構と、真円を除いた輪郭線点列の曲率のデータから無限大であるかある一定値より大きい値の曲率を持つ点を仮接合点として抽出する仮接合点位置抽出機構と、前記仮接合点の１つ（第１仮接合点）の輪郭線点列上の前後所定個の点の１つを第１接合点候補とし、前記第１仮接合点から所定半径内で同一輪郭線点列上にある他の仮接合点の１つ（近傍接合点）の輪郭線点列上の前後所定個の点の１つを第２接合点候補とし、同一輪郭線点列上で点列走査方向に第１固定点と前記第１仮接合点と前記近傍接合点と第２固定点がこの順で一列状に並ぶように前記近傍接合点と第１固定点と第２固定点を選択する手段と、前記第１接合点候補と前記第２接合点候補のすべての組合せについて、前記第１固定点と前記第１接合点候補と前記第２接合点候補と前記第２固定点の４点を最も滑らかに結ぶ線の滑らかさに基づき前記第１接合点候補の適合度を求める手段と、最も適合度の高い前記第１接合点候補を選択して前記第１仮接合点に代わる最適接合点とする手段とを有する最適接合点抽出機構と、連続する二以上の直線又は連続する二以上の円弧の始点である最適接合点の中からそれがなくても近似精度が保たれるような不要な最適接合点を見いだしこれを除去し直線又は円弧を統合する不要接合点除去機構と、除去されずに残った最適接合点を最終接合点として記憶する最終接合点記億装置と、同一群の点列内の隣接する最終接合点の間を直線、円弧の順で近似しこれで所定の近似精度が得られないときはｔを独立変数、ｘ、ｙを従属変数とした２次の区分的多項式で近似し近似精度が所定の値に収まるまで２次の区分的多項式の次元数を増加させながら最小二乗近似を繰り返して隣接する最終接合点の間を、直線、円弧、区分的多項式で近似するデータ近似機構Ｂと、真円データと点列の群毎に前記の最終接合点の座標と隣接する最終接合点の間を近似する関数のパラメータとを記憶する圧縮データ記憶機構と、記憶された圧縮データを入力し真円データと点列の群毎の最終接合点の座標と隣接する最終接合点の間を近似する関数のパラメータを得て輪郭線を再生する輪郭再生機構と、再生された輪郭線の内部の画素と、外部の画素に異なる値を対応させる文字再生機構と、再生された文字フォントを文字として出力する再生データ出力機構を含むことを特徴とする。
　　【００１５】
　　【作用】
　図１に全体の構成を一覧表にして示す。ここにすべての機構を予め記す。
Ａ．画像記憶装置１
Ｂ．輪郭点列抽出装置
Ｃ．輪郭点列記憶装置
Ｄ．データ近似機構Ａ
Ｅ．曲率演算機構
Ｅ’．近似曲率記憶装置
Ｆ．真円抽出機構
Ｇ．真円記憶装置
Ｈ．接合点位置抽出機構
Ｉ．接合点位置記憶装置
Ｊ．最適接合点抽出機構
Ｋ．最適接合点記憶装置
Ｌ．接合点除去機構
Ｍ．最終接合点記憶装置
Ｎ．データ近似機構Ｂ
Ｏ．圧縮データ出力機構
Ｐ．圧縮データ記憶装置
Ｒ．輪郭再生機構
Ｓ．文字再生機構
Ｔ．再生データ出力機構
Ｕ．画像記憶装置２
　　【００１６】
　例えば図３０に示す「ぱ」という文字について手順を簡単に説明する。図３０はもう一度説明される。まず紙に書いてある「ぱ」をイメージスキャナで読み取る。これが文字の光学的な読み取り、入力である。輪郭線の集合である輪郭点列抽出をすると白抜きの文字になる。この例で輪郭点列の群としては５つある。左の縦線が一つ、中央の「よ」に似た部分が二つ、右肩の丸が内外に二つの輪郭点列を持つ。媒介変数表示を用いて、Ｘ、Ｙ座標をｔの関数とする。それぞれの輪郭点列群において全体に渡って区分的多項式で近似する。区分的多項式で連続関数になるから各輪郭点列において２階微分し曲率を求める。曲率が一定である輪郭点列は真円である。これは真円として分離される。この例では右肩の○が除かれる。残りはこの例で３つの輪郭点列群になる。曲率の大きいところが接合点である。４段目で輪郭点列の交点、曲点などに×の印が付いている。これが接合点である。輪郭点列は後に追加されることもある。
　　【００１７】
　接合点によって輪郭点列を分割するのである。接合点は曲率が大きいとして求めた一次的な接合点（仮接合点という）を用いてもよい。文字フォントの場合は初めからきれいに描かれた文字を対象にするからノイズが入り難いために曲率だけからでも接合点を正確に求めることができる。こうすると計算が極めて単純化される。
　　【００１８】
　接合点についてはさらに彫琢を重ねることがある。この場合は近傍の接合点との整合性を考えて接合点を修正する。これは仮接合点と接合点候補として後に説明する。また接合点の位置を修正した後、不要な接合点を除去するということも有効である。さらに新たに接合点を追加するということもある。このようにすると光学的読み取りなどにおいて発生したノイズなどを有効に除去できる。
　　【００１９】
　接合点が確定すると、接合点の間を直線、円弧、自由曲線によって近似する。近似は直線、円弧、自由曲線の順で行う。文字フォントであるから、直線の部分が多い。特に漢字の場合は直線の部分の比率が極めて高い。直線についで多いのは円弧である。漢字の場合、直線、円弧、自由曲線の順に多いと考えられる。しかし近似の順が直線、円弧、自由曲線である理由は頻出度がこの順であるからではない。
　　【００２０】
　そうではなくて、記録されたデータの品質を上げるためにこの順で近似をする。もしも初めから自由曲線として近似すると、直線や円弧もそれなりに２次曲線で近似してしまう。２次曲線の集合は直線や円弧を正確に表現できない。ノイズがある場合は直線、円弧がさらに変形するように近似される。直線、円弧部分が確かに存在するはずでこれらを確実に抽出するために、直線、円弧、自由曲線の順で近似するのである。直線の場合は近似に要する時間は短い。データ量も少ない。円弧の近似も簡単である。中心の座標、半径、中心角を与えれば良い。
　　【００２１】
　直線でも円弧でも近似できない場合は、自由曲線近似する。この場合は接合点間をｎ個の細区間に分割し区分的多項式で近似する。細区分の数を増やすと近似を高めることができるので所望の精度の近似をすることができる。
　　【００２２】
　こうして接合点と、直線、円弧、自由曲線のパラメータが得られるので、これを文字フォントのデータとして記憶する。画数や複雑さによるが１文字当たり大体３００〜５００ｂｙｔｅ程度のデータで済む。白黒画像のままであると画面を構成する全画素の数だけのデータがある。例えば縦横２５６画素とすると、８ｋｂｙｔｅもあるが、本発明では大幅にデータを圧縮できる。このデータは逆に読み出して接合点を基準として直線、円弧、自由曲線を再生することができる。計算によって任意の大きさ、任意の位置に再生することができる。
　　【００２３】
　　【実施例】
　［Ａ．画像記憶装置１］　これは紙などに書かれた文字フォントを光学的手段によって読み取り、画素毎に分解された情報として記憶するものである。文字は着色されていてもよいが必要なのは白黒の２値画像である。例えば着色部は黒となり、文字を構成しない部分を白として２値画像にし、これを画像ごとに記憶させる。
　　【００２４】
　例えばイメージスキャナを用いて２５６×２５６ドットの精度で入力される。ドットの数はもちろん任意であり、ドット数の多い方が文字フォントとして記憶されるものは高品質になるはずであるが、ドットが多いと計算時間、記憶容量が大きくなるので、適当なドット数の画像読み取り装置を用いればよい。ドット（画素）毎にこれが白画素か黒画素かが区別されて一時的に記憶されるのである。以後一つの画素を点ということがある。また連続する一続きの黒画素列を点列という。点を示すために画面上での画素の横方向の番号ｘと、縦方向の番号ｙとからなる座標（ｘ，ｙ）を用いる。座標変数には様々なサフィックスを付けて区別する。
　　【００２５】
　［Ｂ．輪郭点列抽出装置］　輪郭点列抽出装置は読み取った文字の輪郭線を求める操作を行うものである。大まかな流れを先に述べる。
▲１▼画素データを左上から右下に走査し、まだ見付けられていない輪郭点を見付ける（図４に示す）。
▲２▼輪郭線を一周するまで次の輪郭点を探索する。輪郭点は２でマークされる。
▲３▼画像データの右下のデータまで調べる。
　　【００２６】
　この操作を行うにあたってまず定義から説明する。画像は画素の集まりで表される。画素は画面内での座標で指示される。画素の座標は行（横方向〉方向の座標をｘとし、列（縦）方向の座標をｙとする。左上の座標はｘ＝０、ｙ＝０である。横にＸ、縦にＹの画素があるとすると、ｘは０〜Ｘ−１、ｙは０〜Ｙ−１の値を取る。座標系は図２のように右下向きのものである。画像自体は文字を入力したものであるので、白と黒の２値しかない。画素ごとに白黒の指定をする。
　　【００２７】
　○二値画像入力
　特性関数ｇｘｙをつぎのように定義する。
（ｉ）０≦ｘ＜Ｘ−１、０≦ｙ＜Ｙ−１における座標（ｘ，ｙ）に点（黒画素）が存在する場合
　　ｇｘｙ＝１　　　（１）
（ｉｉ）その他の場合（その点に黒画素が存在しない）
　　ｇｘｙ＝０　　　（２）
　これは画像を２値で表現したもので、白の部分は０、黒の部分は１とする。
　　【００２８】
　○輪郭点列の表現
　輪郭点列というのは黒画素の固まりの外周に存する黒画素の左右上下斜めに連続した点の列である。外部だけでなく内部にも輪郭点列がある。閉じられた一つの点列を輪郭点列という。輪郭点列の総数をＵとする。Ｕ個の輪郭点列には０からＵ−１の番号が付けられる。ｕ番目の輪郭点列の輪郭点の総数をＮ（ｕ）で表す。ひとつの輪郭点列において連続する点に番号ｋを付す。ｋは０〜Ｎ（ｕ）−１の整数である。
　　【００２９】
　ｕ番目の輪郭点列のｋ番目の輪郭点の座標を（ｘｋｕ，ｙｋｕ）によって表現する。全輪郭点は
　　｛（ｘｋｕ，ｙｋｕ）｝ｋ＝０Ｎ（ｕ）−１ｕ＝０Ｕ−１　　（３）
によって表現される。ｋ＝０Ｎ（ｕ）−１というのは点列番号が０からＮ（ｕ）−１までの値を取り得るということである。ｕ＝０Ｕ−１は輪郭点列群の番号ｕが０〜Ｕ−１の値を取るということである。
　　【００３０】
　○チェーンコード
　ある画素を中心として、廻りの８点の画素に右回りの番号０〜７を付けて示す。これは輪郭点における点列の連続を示すために使う。また連続の状態を調べるためにも用いる。ｃをチェーンコードとして次の関数α（ｃ）とβ（ｃ）とを定義する。関数α（ｃ）は、
　　【００３１】
　　ｃ＝３，４，５のとき、　　α（ｃ）＝−１　　（４）
　　ｃ＝２，６のとき、　　　　α（ｃ）＝０　　　（５）
　　ｃ＝０，１，７のとき、　　α（ｃ）＝１　　　（６）
　　【００３２】
とし、関数β（ｃ）は、
　　【００３３】
　　ｃ＝５，６，７のとき、　　β（ｃ）＝−１　　（７）
　　ｃ＝０，４のとき、　　　　β（ｃ）＝０　　　（８）
　　ｃ＝１，２，３のとき、　　β（ｃ）＝１　　　（９）
　　【００３４】
である。これらの定義に基づいて輪郭線の抽出を行う。先述のように図４に示すごとく全体の画像を左上から右方向に走査して黒画素を見いだす。輪郭線は二値画像のｇｘｙ＝１となる部分の外周の画素であるが、これを１周しながら点列の座標を記憶していく。１周する方向はその領域の外側を回るときは時計回りに回り、内側を回るときは反時計廻りに回ることとする。図５に輪郭点を廻る順序を示す。勿論反対にしても良いのであるがここではそのように決める。
　　【００３５】
　さて、ある輪郭点列のある輪郭点が分かったとする。此の次の輪郭点を求めるにはこの輪郭点を中心として、前回の輪郭点から時計回りに８個の近傍画素を探索する。図６に一例を示す。☆印を付したものが最新の輪郭点であるとする。時計回りに次の輪郭点を探索するが、番号１、２、３、４、５まではすべて白画素ｇｘｙ＝０であるので該当しない。６番目の画素が黒画素であり、ｇｘｙ＝１であるから輪郭点である。こうして次の輪郭点が求まったので、６番目の画素を中心に据えてその次の輪郭点を求める。
　　【００３６】
　以下同様の手順によって輪郭点を次々に求めることができる。近傍８画素から次の輪郭点を求めるので連続して輪郭点列が得られる。輪郭点はｇｘｙの値を２とする。これによって内部の黒画素ｇｘｙ＝１と区別できる。またｇｘｙ＝１の画素が画面上で局在しているはずであるから輪郭点を逐次求めて行くと最初の輪郭点に戻る。つまり輪郭点列は環状になっている。このような輪郭点列は全部でＵ個あるとしている。輪郭点列の番号はｕで示すが、ある輪郭点列ｕでの点の番号はｋである。
　　【００３７】
　一つの輪郭点列が確定すると、図４の走査を再開し、次の輪郭点を捜す。これが分かると同様の手順によって輪郭点の座標を確定して行く。複数の輪郭点列があるときは当然左上からこれらの処理を行うことになり順に０、１、・・（Ｕ−１）の輪郭点列番号を付す。内部に穴のあるような場合も図５に示すように何回目かの走査で何れかの点が検出される。図６に示すような隣接点の探索を行うが、穴の場合は図５のように輪郭点を反時計廻りに見いだして行くことになる。こうして外部の輪郭点列も内部の輪郭点列も探索されて点列の座標が記憶される。これらのｇｘｙの値は２になっている。
　　【００３８】
　輪郭点列の探索はもちろんｇｘｙ＝１の画素について行われるのであるから、このようにすると外周と内周の幅が１画素分しかない場合は少し問題が起きる。図７にこれを示す。（ａ）は１画素分の幅しかない環状のパターンである。ｇｘｙ＝１の画素が正方形状に分布する。幅が２以上あれば前述の手順で外部輪郭点列、内部輪郭点列が問題なく求まる。しかし幅が１画素であると、まず外周の輪郭点列を決めた後ｇｘｙ＝１の画素が輪郭点であるのでｇｘｙ＝２となる。輪郭点の探索がｇｘｙ＝１の画素についてなされるのでｇｘｙ＝２ではもはや輪郭点列とはならない。内周の輪郭点列が認識されず、穴が無視される。これではいけないので、その対策として、次の輪郭点が現在のものより下にあるときはマーク（ｇｘｙ→２）を行わないこととする。この点はｇｘｙ＝１のまま残る。図７の（ｂ）で右中段の値が１であるのはこれを示す。値が１であるので内輪郭点の出発点として発見される。この点から出発して内輪郭点列を抽出することができる。結局内部の穴が無視されることなく内外の輪郭点列を抽出することが出来る。図７（ｃ）はこれを示す。
　　【００３９】
　輪郭点列が確定すれば、輪郭点列で囲まれる内部の黒画素はこれの領域を規定するためには最早必要でなくなる。そこで内部の黒画素は記憶する必要がない。これによって記憶すべきデータの量を先ず減らすことができる。
　　【００４０】
　［Ｃ．輪郭点列記憶装置］　輪郭点列記憶装置は前段で求めた輪郭点列を記憶する装置である。（ｘｋｕ，ｙｋｕ）ｋ＝０Ｎ（ｕ）−１ｕ＝０Ｕ−１という形でこれを記憶する。先述のように、Ｕが全点列の数であり、ｕが点列に付けた番号である。点列ｕにおける点の数はＮ（ｕ）であり、ｋがこれに付けた点番号である。このようなことをｋ＝０Ｎ（ｕ）−１ｕ＝０Ｕ−１によって表現する。（ｘｋｕ，ｙｋｕ）はｕ番目の点列のｋ番目の点のｘ、ｙ座標である。
　　【００４１】
　［Ｄ．データ近似機構Ａ］　データ近似機構は二つある。これは最初のものであるが、区別するためにＡと付記する。これは仮に輪郭点列の曲率の大きいところを求め接合点を求めるために必要とされる。曲率を求めるには、離散的な点の内、いくつかをデータとして採用しこれから求めることもできる。本発明はこのような離散的曲率を採用しても実行できる。しかしここではデータを連続関数で近似してからこれを２階微分して曲率を求めるようにする。このための近似がここでのデータ近似である。
　　【００４２】
　曲率を求めるのであるから、ｘを独立変数、ｙを従属変数としてｙのｘによる２階微分を求めるというのが通常の方法であろう。しかしそうするとｘ、ｙについて取り扱いが非対称になって好ましくない。本発明ではそのような方法を採用しない。
　　【００４３】
　ここでは独立変数をｔとし、従属変数をｘ、ｙとし前記の連続群ごとの輪郭点列のｘ、ｙ座標をｔを独立変数、ｘとｙを従属変数とする２次の区分的多項式で近似し、近似精度が所定範囲になるまで最小二乗法近似を繰り返し輪郭線点列の群ごとの近似多項式を求めるものである。これは最終的なデータを得ようとするものではなく、接合点を求めるものである。
　　【００４４】
　先述のように群ｕの点列ｋの座標を（ｘｋｕ，ｙｋｕ）とかく。これは前記の輪郭線点列記憶機構から得られる。図９にここでの操作を示す。まず輪郭点列記憶装置から輪郭点列の（ｘｋｕ，ｙｋｕ）を全て読み込む。これを媒介変数へ分解する。つまり各点について、２つの（ｘｋｕ，ｙｋｕ）に共通の媒介変数ｔを対応させる。これにも添え字を付けてｔｋｕとする。二次元情報であったがこれを一次元問題にするために媒介変数を用いるのである。図９の２段目はこれを示す。
　　【００４５】
　媒介変数を用いることにより、（ｔｋｕ，ｘｋｕ）と（ｔｋｕ，ｙｋｕ）の二つの座標の組み合わせが各輪郭点列の各点に対応する。以後は２変数について同じことをするので一つについて説明する。群ｕでの輪郭点列（ｔｋｕ，ｘｋｕ）を近似するｔの関数Ｓｘ（ｔ）を、２次のフルーエンシー関数系｛φｍ｝を底とする一次結合として与える。Ｓｘ（ｔ）によって群ｕでのｔの関数としてのｘを近似するのである。同様にＳｙ（ｔ）によって群ｕでのｙを近似する。近似関数として適切であるかどうかの評価は最小二乗法で誤差が所定の範囲内であるかどうかということで確かめる。
　　【００４６】
　注意すべきことは、Ｓｘ（ｔ）、Ｓｙ（ｔ）によって輪郭点列群ｕの全体の閉曲線を一挙に近似するということである。接合点を途中にもつのではなく全体を一つの関数Ｓｘ（ｔ）で近似する。このようにするのは未だ接合点が決まっていないからである。先に述べたように曲率を求めるにはこのように近似によることなくもっと簡便な方法がある。それは輪郭点列のデータを直接に用いて離散的曲率を求める方法である。本発明を行うにはこのような離散曲率によってもよい。しかしここではそれについては説明せず、近似関数Ｓｘ（ｔ）、Ｓｙ（ｔ）の生成について説明する。
　　【００４７】
　Ｓｘ（ｔ）は非周期ｍ次のフルーエンシー関数ψｋを基底として展開する。
　　　　Ｓｘ（ｔ）＝Σｋ＝−ｍＭ＋ｍＣｋｘφｋ（ｔ）　　　（１０）
　　【００４８】
　フルーエンシー関数というのは本発明者が命名した関数名である。次数ｍは多項式の次数に対応する。Ｍは次元数である。一般にｍ次のフルーエンシー関数は、定義域を［０，Ｔ］とし、パラメータをｋとし、このパラメータをサフィックスとして付けて表す。Ｃｋｘは線形一次結合の係数である。φｋ自体がｋの近傍で値を持つ多項式である。
　　【００４９】
　　【００５０】
　但し、ｋ＝−ｍ，−ｍ＋１，・・・，０，１，２，・・・，ｍ＋Ｍ
　　【００５１】
　ここでｍ乗の下に付したプラスは、括弧内が負のときは０で、正の時にはｍ乗であるということで、次のような定義である。
　　【００５２】
　　　（ｔ−ａ）ｍ＋＝（ｔ−ａ）ｍ　　ｔ＞ａ　　　　（１２）
　　　　　　　　　　　０　　　　　　　ｔ≦ａ　　　　（１３）
　　【００５３】
　基底関数φｋは区分番号ｋ〜ｋ＋ｍ＋１まで有限の値を持ちその両側は０になる山形の関数である。これは｛ｔ−（ｋ＋ｑ）（Ｔ／Ｍ）｝ｍ＋のような０から立ち上がるｍ次関数を一つずつ座標をよこにずらせて（ｑを一つずつ増やす）これを重ね合わせる形になっている。ｔ＞（ｋ＋ｍ＋１）（Ｔ／Ｍ）の時に恒等的に０でなければならない。この条件によって重ね合わせの係数が（−１）ｑ／｛ｑ！（ｍ＋１−ｑ）！｝というふうに決まる。領域の大きさＴは輪郭点列群の数Ｎ（ｕ）に等しくするのが簡単であるが、比例するものとして定義してもよい。このようにフルーエンシー関数を用いて、輪郭点列を近似するが、Ｔ／Ｍの間隔を持つ分割点が多数あるので接合点がなくても近似することができる。近似の度合いを高めるにはフルーエンシー関数の次数ｍを高めればよい。しかし次数が高いと計算の回数が増えるので処理時間が掛かる。
　　【００５４】
　発明者の主張は、多くの自然界の物理量の変動を表す関数が、１次、２次のフルーエンシー関数の線形結合として表されるということである。フルーエンシー関数は完備直交規格化関数ではない。もしもｍとして∞までの関数を採用し、これの一次結合とすれば任意の関数が表現しうる。これは疑いがない。しかし本発明者のいうのはそうではなく、わずかな次元数のフルーエンシー関数によって自然界の物理量の変動を書き下せるということなのである。ここではｍ＝２のみを採用する。これによって文字などの輪郭線は過不足なく表現できる。勿論本発明はｍ＝３以上のフルーエンシー関数を用いて構成できる。
　　【００５５】
　最も相応しい関数系を採用してこれの一次結合によって物理量の変動を書き表すとすれば最も数少ない関数で最適の近似を得ることができる。関数系が良くないと多くの関数を底として一次結合の式を展開しなければならない。これではよい近似を得ることができないし、最終的なデータの数も多くなって記憶装置の負担も大きい。またこれを読み出して利用するのも容易でない。最適関数系を選ぶべきである。ｍ＝２が最適と本発明者は思う。
　　【００５６】
　本発明者はここではｍ＝２のフルーエンシー関数を用いる。図４０（ａ）に２次のフルーエンシー関数の概略を示す。これは３つの区間にわたる２次曲線である。両端での立ち上がり立ち下がりは２次関数である。中央の点で最大であるがこの近傍でも２次関数である。０次のフルーエンシー関数は図４０（ｂ）に示すように１区間のみで一定値をとる箱型の関数である。１次フルーエンシー関数は（ｃ）に示すよう２区間にまたがる三角形状の関数である。３次のフルーエンシー関数は４つの区間におよぶ関数である。一般にｍ次フルーエンシー関数は、（ｍ＋１）区間に渡って存在し中央部で極大を持つ滑らかな（ｍ≧２）関数である。両端ではｍ乗で立ち上がり立ち下がる。中央部での関数形はやはりｍ乗である。基底φｋのパラメータｋが一つふえるともとのものを右へ一つ平行移動したことになる。ある区間でなんらかの変動をｍ次区分的多項式で近似すると、その区間で値を持つ関数の基底が（ｍ＋１）個あるということである。ｍ＝３以上のものを採用することができるがここではｍ＝２とする。つまり３つの区間に渡って値があり、極大と端点で２次関数的である。上の式はｍ＝２のとき、
　　【００５７】
　　【００５８】
　　【００５９】
となる。基底関数は｛ｔ−（ｋ＋ｑ）（Ｔ／Ｍ）｝２＋で示される横方向へＴ／Ｍずつずらせた４つの０から立ち上がる２次関数の重ね合わせである。細区分の数がｋからｋ＋３まで値のある関数である。ｋ＋３以上で恒等的に０であるために重ね合わせの係数が（−１）ｑ／｛ｑ！（３−ｑ）！｝となる。基底関数の数はＭ＋５個である。Ｍは全区間の分割数でありこれを近似の次元数と呼ぶ。これとフルーエンシー関数の次数ｍとを混同してはいけない。図４１によって説明する。（ａ）にデータ点を示す。データの変域が０〜Ｔである。（ｂ）は基底関数が３つであり、次元数Ｍが１の場合を示す。この場合基底関数が少なすぎるので係数の数も少なく良い近似を与えない。しかし次元数Ｍを増やしてゆくと、（ｃ）に示すようにどんな複雑な変化でもそれなりに近似できる。近似の程度はこれがどれほどもとの輪郭点列（ｘｋｕ，ｙｋｕ）に近いかということで判断できる。最小二乗法によりこれを評価するが、これは
　　【００６０】
　　【００６１】
を最小にするということである。積算の範囲は輪郭点列群ｕの点全部である。ここでは曲率を求めるだけであるから精度はそれ程高くなくても良い。後に説明する第２回目のデータ近似Ｂでも同様の近似をする。その場合精度はより高いものとする。この部分のフローチャートを図１０に示す。係数Ｃｈをきめるのであるが、これの階数がＭである。あるＭを規定すると、（１０）から係数Ｃｈｘは一義的に決まる。しかしこの係数が最小二乗法による制限を満たすとは限らない。この場合は次元数Ｍを一つ増加させる。そして所望の近似範囲まで達するとこれで次元数Ｍでの係数Ｃｈを確定する。
　　【００６２】
　（１０）において左辺のＳｘ（ｔ）が、ｔ＝ｔｋである時に、Ｓｘ（ｔ）＝ｘｋｕとなるべきである。そこで（１０）にこれを代入して、
　　【００６３】
　　【００６４】
これにφｗ（ｔｋｕ）をかけて、点列ｋについて加算する。
　　【００６５】　　　　　　　
　　【００６６】
　ここで２番目の式から３番目の式への変化は積算の順序を置き換えたものである。有限数列であるので積算順は自由に変更できる。
　　【００６７】
るＭ＋５列、Ｍ＋５行の正方行列と考えることができる。また右辺の後項ＣｈｘはＭ＋５列の列べクトルである。→を文字の上に付すことができないので、以下ベクトルを表す→は文字の後に付けることにする。ベクトルｂｘ→、ｃｘ→を
　　【００６８】
　　　ベクトルｃｘ→＝Ｔ｛Ｃ−２ｘ，Ｃ−１ｘ，・・・，ＣＭ＋２ｘ｝　　（１９）
　　【００６９】
　　【００７０】
によって定義する。Ｔは転置行列であることを示す。行列Ｇを
　　【００７１】
　　【００７２】
によって定義する。この間には、
　　【００７３】
　　　ｂｘ→＝Ｇｃｘ→　　（２２）
　　【００７４】
という式が成立する。これは、ベクトルｂｘ→を求める式であるが、
　　【００７５】
　　　ｃｘ→＝Ｇ−１ｂｘ→　　　（２３）
　　【００７６】
としてある次元数Ｍについての係数Ｃｈを求めることができる。Ｇ−１は行列Ｇの逆行列である。これはｘについての計算である。ｙについても同様に、
　　【００７７】
　　【００７８】
　　【００７９】
　　【００８０】
が成立ち、ベクトルｂｙ→、ｃｙ→を
　　【００８１】
　　　ベクトルｃｙ→＝Ｔ｛Ｃ−２ｙ，Ｃ−１ｙ，・・・・ＣＭ＋２ｙ｝　　（２６’）
　　【００８２】
　　【００８３】
によって定義する。（２３）と同様にｙ成分についても、
　　【００８４】
　　　ｃｙ→＝Ｇ−１ｂｙ→　　　　（２８）
　　【００８５】
としてある次元数Ｍについての係数Ｃｈｙを求めることができる。Ｇ−１は行列Ｇの逆行列でｘの計算に用いたものと同一である。図１０はこのようなことを述べている。最初は群番号ｕ＝０について行う。また近似の次数Ｍは１から始める。こうして輪郭点列ｕ＝０について（ｘｋｕ，ｙｋｕ）を近似するＳｘ（ｔ）、Ｓｙ（ｔ）の係数Ｃｈｘ、Ｃｈｙが求まる。これと、（ｘｋｕ，ｙｋｕ）点との差の二乗の和Ｑを計算する。
　　【００８６】
　　【００８７】
　これと予め定めた閾値εとを比較する。これは十分に小さい確定した正定数である。ここでは１画素分の距離にとっている。もしもＱ＞εであれば近似が不十分であるということである。そこでこの場合、次元数Ｍを１から２に増やす。するとＣｈの数が一つ増える。
　　【００８８】
　この状態で同じ事を繰り返す。これでもＱ＞εであれば、さらにＭをひとつ増やす。以下同様に繰り返して近似を上げてゆき、Ｑ＜εとなるようにする。ここでＭと｛Ｃｈｘ｝、｛Ｃｈｙ｝とを確定する。近似関数Ｓｘ（ｔ）、Ｓｙ（ｔ）が求まる。輪郭点列群ｕ＝０について計算できると次はｕ＝１の群について行う。以下同様に、あるｕの値に対して係数を決定すると、次のｕ＋１の輪郭点列について同様の計算を行う。そしてｕ＝Ｕ−１群まで繰り返して行う。図４２によりもう一度この過程を説明する。画面上に「和」という文字が入力されたとする。輪郭点列抽出をすると３つの輪郭点列群が得られる。左の輪郭点列がｕ＝０、右の「ロ」の部分は外輪郭点列ｕ＝１と内輪郭点列ｕ＝２を持つ。画面の左上の点（０，０）から右方向へ１行ずつ画素の値をスキャンして行く。最初に輪郭線にぶつかった点を（ｔ００，ｘ００）、（ｔ００，ｙ００）とし輪郭点列の座標をｔをパラメータとして求めてゆく。ｔの関数として輪郭点列座標ｘ（ｔ）、ｙ（ｔ）が得られる。２次のフルーエンシー関数を用いて近似するとして、まずＭ＝１から出発する。これは全区間［０，１］をひとつの区間として扱う。３つの基底関数φ−２、φ−１、φ０がこの区間で値を持つ。これの係数３つの値を適当に選ぶ。すると中段に示す近似曲線がえられる。拡大してみると原データとの誤差が大きいということが分かる。誤差の２乗の和によって誤差を評価し近似が不十分なときは、Ｍを一つ増やす。次の段ではＭ＝２の例が示される。基底関数が４つに増える。最下段はＭ＝１０の場合を示す。基底関数の数は１２個である。Ｍが大きくなるにつれて複雑な曲線を精密に近似できる。ここで説明したのは曲率を求めるための近似であるが、後程述べるデータ圧縮時の近似ではこのような操作を各区分について行う。以上がデータ近似機構Ａである。
　　【００８９】
　［Ｅ．曲率演算機構］　全ての輪郭点列群に対して近似関数が求まったのでこれを２階微分することにより各輪郭点列群、各点での曲率を求める。図１１が曲率演算のフローチャートを示す。輪郭点列群ｕのｋ番目の点（ｘｋｕ，ｙｋｕ）での曲率Ｋ（ｔｋｕ）は、
　　【００９０】
　　　Ｋ（ｔｋｕ）＝｛Ｓｘ’（ｔｋｕ）Ｓｙ’’（ｔｋｕ）−Ｓｘ’’（ｔｋｕ）Ｓｙ’（ｔｋｕ）｝／｛Ｓｘ’（ｔｋｕ）２＋Ｓｙ’（ｔｋｕ）２｝３／２　　　　（３０）
　　【００９１】
によって計算することができる。最初ｕ＝０の輪郭点列群のｋ＝０の点からこの計算を始める。この計算は点毎に行う。つまりｋ番目の点について計算できると次にはｋ＋１番目の点について同様の計算をする。ひとつの輪郭点列群での計算が終わると次の輪郭点列に移る。そして全ての輪郭点列の全ての点について曲率を求める。
　　【００９２】
　［Ｅ’．近似曲率記憶装置］　前段で求めた曲率Ｋ（ｔｋｕ）を点（輪郭点列群ｕ、点番号ｋ）毎に記憶する装置である。
　　【００９３】
　［Ｆ．真円抽出機構］　これは近似曲率に基づいてある輪郭点列が真円であるかそうでないかを判別し真円を抽出するものである。文字には真円である部分がかなりある。このような文字フォントの性質を利用するものである。これを抽出すると次の利点がある。ひとつは本来真円であるものがノイズのために少し歪んでいても真円としてデータ化するのでノイズが落ちてしまい形状をより正確に決定できる。また円は半径と中心の座標だけで指定できるのでデータ圧縮の点で極めて有効である。
　　【００９４】
　真円というのはその輪郭点列での各点での曲率が全て等しいというものである。そのような性質を使って真円を抽出できる。図１２にフローチャートを説明する。先ず曲率Ｋ（ｔｋｕ）に関するデータを読み込む。そして各輪郭点列群ｕが円をなすか否かを調べる。輪郭点列群ｕについての平均曲率Ｋ（ｕ）を求める。これは単に曲率を平均するものである。群番号ｕは括弧をつけ（ｕ）とすべきであるがこれはサフィックスに入れることができないから単に、ｕとしている。図面では括弧が付いている。
　　【００９５】
　　【００９６】
　これが平均曲率である。曲率の上限ε１を決めておき、平均曲率がこれ以上であればこの輪郭点列群は真円でないとする。
　　【００９７】
　　　｜Ｋ（ｕ）｜＞ε１　　　　（３２）
　　【００９８】
　曲率が極めて大きい点を含む場合である。円ではなく微分できない点折曲点などに対応する。この場合群ｕは真円でないという表示ＣｉｒｃＩｅ（ｕ）＝０をする。これに反して平均曲率がε１より小さければ、群ｕは真円である可能性がある。そこでｋ＝０の点から点近傍での曲率Ｋ（ｔｋｕ）と、平均曲率Ｋ（ｕ）の差の絶対値を求めこれが一定の閾値ε２より小さいかどうかを調べる。
　　【００９９】
　　　｜Ｋ（ｕ）−Ｋ（ｔｋｕ）｜＜ε２　　（３３）
　　【０１００】
　もしそうであればこれは円の一部である可能性がある。それで次の点ｋ＝１の曲率についても同様に平均曲率との差の絶対値を求めε２と比較する。このように群ｕの全ての点について順次比較を行う。この不等式が成り立つ限りこれらの点は円弧の上にある。ある点で曲率と平均曲率の差がε２より大きいとこれはもはや円弧の上にない。この点を含む輪郭点列群はもはや真円を形成しない。この群が真円でないという表示Ｃｉｒｃｌｅ（ｕ）＝０を付ける。
　　【０１０１】
　もしも、群での全ての点について曲率と平均曲率の差がε２より小さいと、この輪郭点列は真円である。そこで真円である表示Ｃｉｒｃｌｅ（ｕ）＝１を付ける。このような真円の抽出を全ての輪郭点列群について０〜Ｕ−１まで行う。最後にこれを纏めて群ｕ＝０から群についてＣｉｒｃｌｅ（ｕ）＝０であるかどうかを調べる。全ての輪郭点列群ｕについてＣｉｒｃｌｅ（ｕ）＝０であれば、この文字フォントにおいて真円はひとつもないということである。Ｃｉｒｃｌｅ（ｕ）＝１のものがあれば、この群は真円であり、この中心座標（Ｘ，Ｙ）と半径ｒとを求め、真円記憶装置Ｇにこれを入力して記憶させる。
　　【０１０２】
　［Ｇ．真円記憶装置］　前段階において求めた真円の中心座標と半径ｒを記憶するものである。これにより群ｕのデータが３つの値で記述できる。文字フォントを対象とするので全ての輪郭点列は閉曲線である。一重の真円の場合これは内部全体が黒画素で塗り潰された円であるので、孤立した円点である。２重の真円の場合は、２重円の間が黒画素で塗り潰された丸（ぱぴぷぺぽ）などに対応する。
　　【０１０３】
　［Ｈ．接合点位置抽出機構］　接合点というのは直線と直線の継ぎ目、曲線と曲線の継ぎ目、直線と曲線の継ぎ目などである。異なる勾配の線が接触するのでこれを接合点というのである。文字フォントを関数近似するとき接合点は極めて重要な役割を果たす。それ故接合点の役割、接合点の意義、接合点の抽出などに関して明確な観念を持つことが必要である。本発明は接合点の正確適切な決定を通じて文字フォントを高品質に維持しながら、データ量を最小にすることができるのである。
　　【０１０４】
　図１３は接合点抽出手続きの概略を示す。文字を入力してこれを画像とし、２値画像にして外周をなす輪郭点列を抽出する。これによって得た各輪郭点列群に対して接合点を抽出する。先ず明白な接合点を抽出する。これは曲率が大きい点として決定できる。これは仮の接合点であって最適のものでない。またこれだけでは全ての接合点を見いだせない。逆に接合点として不要なものも含まれる。
　　【０１０５】
　従って接合点の指定に関して修正が必要である。その後直角部分の接合点の抽出を行う。これは後に述べるが文字の二つの直線が交差するときに交差点での接続を滑らかにするためである。直線の接合点というのは始点と終点であり、細線であって曲率が大という条件では現れない接合点を追加するものである。文字の場合これはほとんど必要ない。
　　【０１０６】
　反対に不必要な接合点があるのでこれらを除去する必要がある。一つは直線の中にある接合点である。接合点が直線の半ばにあり直線からの距離が小さいときこれを除いても直線を維持できることがある。これはノイズによって生じた接合点であるから除去する。もう一つは円弧の接合点である。本来ひとつの円孤であるべきものが接合点が多くて二つの円弧に分離して現れることがある。これも中間の接合点を除去して円弧を合体して一つの円弧にする。
　　【０１０７】
　そして接合点が確定すると各区間を区分的多項式によって近似する。この区分的多項式の近似は先にデータ近似機構Ａで述べたものと同じであるが前回のものは近似区間が全輪郭点列群に渡っていた。今度はそうでなく接合点毎に区分的多項式近似を行う。
　　【０１０８】
　まず仮接合点の抽出について説明する。接合点において勾配が変化するために曲率も大きい。接合点は次に関数近似するときにおいて関数の定義域を決定するものである。接合点と接合点の間は直線であるか、滑らかに勾配の変化する曲線である。接合点の間の近似関数は簡単な形で表現できる。従って接合点の座標と接合点の間の近似関数を求めればこの文字フォントについてすべてのデータが求まったということになる。
　　【０１０９】
　しかし接合点の選択が適切でなく、接合点同士が離れ過ぎると、隣接接合点の間を簡単な形の近似関数で表すことができないために、却ってデータ数が増えてしまう。反対に接合点が多すぎると、接合点の座標に関するデータが増えるので十分にデータ圧縮をすることができない。かように接合点の選択は重要である。図１４のフローチャートによって接合点位置抽出の手法を説明する。先に全輪郭点列について近似曲率が求められているので、これを利用する。
　　【０１１０】
　近似曲率記憶装置Ｅ’から曲率を読み込む。｛Ｋ（ｔｋｕ）｝である。これらのデータから群ｕの全ての点ｋ＝０〜Ｎ−１について曲率がある値δより大きいか否かを順次調べる。
　　【０１１１】
　　　｜Ｋ（ｔｋｕ）｜＞δ　　　　（３４）
　　【０１１２】
　接合点というのは勾配において変化が急の所とすると曲率がある程度大きい点であるので、このような手法によって求めることができるのである。δの値は目的により適宜決定できる。
　　【０１１３】
　しかも真円をなす輪郭点列は既に除かれているので円弧の一部で曲率が大きいという点（これは接続点でありえない）はこの演算では出てこない。そこで曲率がδを越える点を、仮接合点とする。そしてこの座標（ｘｋｕ，ｙｋｕ）を接合点位置記憶装置Ｉに記憶させる。仮接合点の番号をｉとする。そこでｉ番目の仮接合点はｄｉ（ｘｉｕ，ｙｉｕ）と書くことができる。輪郭点列での番号ｋが接合点番号ｉに置換されている。このような比較と接合点の抽出を各点ｋについて行う。群ｕについてこのようなことをした後、ｕ＋１について同様のことをする。こうして各群でのすべての仮接合点の座標を得る。
　　【０１１４】
　直感的に接合点を説明する。図１５はひらがなの「あ」とカタカナの「ポ」での原文字である。これを画像処理装置に入力して輪郭点列抽出をし、接合点を抽出したものを図１６に示す。×の印を付した所が接合点である。これを誤りなく抽出するためにこれ以後いくつかの計算を行う。
　　【０１１５】
　［Ｉ．接合点位置記憶装置］　これは前述の操作で求めた仮接合点の番号と座標｛ｄｉ（ｘｉｕ，ｙｉｕ）｝記憶するものである。仮接合点と言ったほうが正確である。接合点に関しては前記の曲率が大きい事で選んだ仮接合点と、これから述べる接合点候補と最適接合点の３種類がある。これを混同してはいけない。
　　【０１１６】
　［Ｊ．最適接合点抽出機構］　これまでに求めたものは、曲率の大きさだけで判定した仮接合点である。これらは実際の接合点でないことがある。文字フォントを光学的に読み取った画像にはレンズやガラスにおける光の反射や散乱、外乱光などのためノイズああるので、実際に２直線、２曲線の接合点の曲率が小さくなることがある。ために前段の処理で接合点として残らないことがる。反対にノイズのために直線、曲線の中間点であるにも拘わらず曲率が大きくなり接合点と見えることがある。
　　【０１１７】
　それで最適の接合点を見い出す必要がある。最適接合点は先述の手法で求めた接合点候補の近くにあるはずである。最適接合点というのは前述のように、直線と直線の交点や折曲点などであるから文字に固有のものである。これがノイズのために曲率の大小だけでは正確に見つけることができない。
　　【０１１８】
　図１７に最適接合点の抽出機構のフローチャートを示す。接合点位置記憶装置１から仮接合点ｄｉ（ｘｉｕ，ｙｉｕ）ｉ＝０Ｉ−１を読み込む。ここでｕは輪郭点列の群番号、ｉはこの群での仮接合点の番号、Ｉはこの群での仮接合点の数である。仮接合点と呼ぶのはこれが最終的な接合点でないからである。本発明の顕著な特徴はここにもあり、接合点の位置について彫琢を重ねるということが本発明において重要である。
　　【０１１９】
　仮接合点の近傍に幾つかの接合点候補というものを考える。これをλ０（ｉ）とし、座標を付けてλ０（ｉ）（ｘｉ０，ｙｉ０）と書く。ｉは仮接合点の番号である。群ｕという表示は省略してある。勿論ｕのｉ番目の仮接合点の近傍にある接合点候補である。この接合点候補の数をＯとする。これはどの仮接合点についても同一の数である。図１８はこれを示している。
　　【０１２０】
　中央のｘｉが曲率によって選ばれた仮接合点であり、これの前後α個が接合点候補である。ただしここで、ｘｉと書いてあるのはｄｉ（ｘｉｕ，ｙｉｕ）のことであり、ｘ座標とｙ座標の両方を意味する。ｄｊと書けば良いのであるがここでは位置座標であることをはっきりと示すために単にｘｉと書いている。次に出る近傍接合点の表記も同様である。
　　【０１２１】
　接合点候補はｏ＝０，１，・・・，Ｏ−１まである。これはｄｊ＋α又はｄｉ−αによって求める。これは、仮接合点の前後α個の輪郭点列を接合点候補とするということである。仮接合点もこれにあたるのでＯ＝２α＋１である。この内にひとつの最適接合点が存在する。αの大きさは仮接合点と最適接合点のずれの大きさの評価から決まるがこのずれが大きな場合はαを大きくする必要がある。しかしこれを大きくするとあとの計算の数が増える。両者を勘案し適当な数を決定すべきである。
　　【０１２２】
　次にこれから近傍接合点｛ｄｊ（ｘｊｕ，ｙｊｕ）｝を抽出する。近傍接合点は仮接合点ｘｉを中心として半径ρの円内にある仮接合点であって、連続する輪郭点列によって繋がっているもの及びこの仮接合点を含む輪郭点列によって囲まれる輪郭点列内にあるものである。例えば、「は」という文字の場合、右下の○の内側の輪郭点列も外側の仮接合点の近傍接合点になる。近傍接合点に付ける番号をｊとする。先程の考察の対象となる仮接合点ｘｉがｉを番号としておりこれらで区別している。半径ρ内にあるというのは、
　　【０１２３】
　　　｛（ｘｉ−ｘｊ）２＋（ｙｉ−ｙｊ）２｝１／２＜ρ　　　　（３５）
　　【０１２４】
という条件で表すことができる。輪郭点列によって繋がっているという条件がなぜ必要かというと、この最適接合点の抽出というものが、線と線の交差において交差を挟んだ接合点同士が滑らかに繋がるようにするためであるからである。輪郭点列によって繋がっていない接合点同士の相対的な関係はどうでもよい。また輪郭点列によって（黒画素の連結）繋がるという条件はｘｊがｘｉと同一の輪郭点列群にあるかどうかということで簡単に調べることができる。
　　【０１２５】
　近接接合点は、正確にはｘｊ（ｘｊｕ，ｙｊｕ）と書くべきであるが、冗漫であるので以後簡単にｘｊと書くことにする。これはｘ座標だけでなくｙ座標も含んでいる。
　　【０１２６】
　近接接合点の数をＪとする。Ｊは０のこともあるし、１以上のこともある。Ｊ＝０というのは近傍接合点がないということである。Ｊが１以上であるというのは幾つかの近傍接合点があるということである。二つの場合について処理が異なる。Ｊ≧１の場合と、Ｊ＜１（つまりＪ＝０）の場合に分けて説明する。
　　【０１２７】
　Ｊ≧１の場合、さらに二つの場合を区別する。輪郭点列の追跡は外部に輪郭点列があると時計廻り、内部にある場合は反時計廻りである。それ故、考察の対象になっている仮接合点ｘｉより、先に近接接合点ｘｊがある場合と、ｘｉよりも前に近接接合点ｘｊがある場合がある。両者を区別しなければならない。
　　【０１２８】
　曲率で選んだ仮接合点ｘｉより前にある近傍接合点ｘｊは入力近傍という。これを図１９に示す。仮接合点ｘｉより後にある近傍接合点ｘｊは出力近傍という。つまり仮接合点ｘｉから、輪郭点列の走査の向きに発したベクトルの出て行く先にある近傍接合点が出力近傍である。逆に近傍接合点から走査の向きに発したベクトルが入って来る仮接合点が入力近傍である。出力近傍と入力近傍の判定については後に説明する。
　　【０１２９】
　［ＣＡＳＥ　１（Ｊ≧１で入力近傍の場合）］　まず図１９によって、入力近傍の近傍接合点について考える。これはいくつもの考え方がありうる。ここでは、４つの仮接合点の近傍を考える。そしてこの４点を繋ぐ曲線が最も滑らかであるという条件によって、仮接合点の近くの接合点候補λ０（ｉ）（ｘｉ０，ｙｉ０）の内最適のものを決める。
　　【０１３０】
　図１９において、最も始めに曲率によって選んだ仮接合点がｘｉ（Ｃの近く）である。近傍接合点がｘｊ（Ｂの近く）である。入力近傍の場合は、仮接合点の次の仮接合点ｘｉ＋１（Ｄの近く）と、仮接合点ｘｊの一つ前の仮接合点ｘｊ−１（Ａの近く）を考える。この４点を通る曲線が最も滑らかになるようにこれらの点を通るようにする。これら４つの仮接合点の内両側のＡ、Ｄは固定し、中間のＢ、Ｃのみを動かして適合係数を求める。Ｂ、Ｃの点は２α＋１個の接合点候補を持つ。
ＣＡＳＥ１では、ｘｊ−１の接合点候補λｌ’（ｊ−１）の中でｍａｘｌ’Ｐｊ−１（ｔ−１）（ｌ’）の点を固定点とする。ｘｉ＋１の接合点候補λｏ’（ｉ＋１）の中でｍａｘｏ’Ｐｉ＋１（ｔ−１）（ｏ’）の点を固定点とする。
　　【０１３１】
　滑らかという条件をどう表現するか？いくつもあるが、ここでは曲線の変曲点が最も少ないという条件によって評価することにする。逐次近似を上げてゆくが、近似の回数をｔで表す。
　　【０１３２】
　曲線の端点Ａは、ｘｊ−１のどれかの接合点候補λｌｊ−１（ｘｊ−１ｌ、ｙｊ−１ｌ）である。ただしここで接合点候補の添え字はｌ’であるが「’」を１／４角にできないのでここではｌと書いている。実際にはでｌ’である。
　　【０１３３】
　中間点Ｂは近傍接合点ｘｊの何れかの接合点候補λｌｊ（ｘｊｌ，ｙｊｌ）である。接合点候補の番号をｌによって表している。ｌがパラメータになりｌを変えて同じ計算を何回もする。
　　【０１３４】
　中間点Ｃは元の仮接合点ｘｉの何れかの接合点候補λｏｉ（ｘｉｏ，ｙｉｏ）である。接合点候補の番号はｏによって表している。ｏがパラメータになりこれを変えて同じ計算を何回も繰り返す。
　　【０１３５】
　曲線の他の端点Ｄは、ｘｉ＋１の何れかの接合点候補λｏｉ＋１（ｘｉ＋１ｏ，ｙｉ＋１ｏ）である。ただしここでも接合点候補の添え字はｏ’であるが「’」は１／４角にできないので単にｏと書いている。実際は図１９のようにｏ’である。
　　【０１３６】
　計算の順序であるが、両端のＡ、Ｄ点は固定点（ｔ回目の近似において）であり、中間点Ｂの接合点候補λｌ（ｊ）（ｘｊｌ，ｙｊｌ）、中間点Ｃの接合点候補λｏ（ｉ）（ｘｉｏ，ｙｉｏ）についてはパラメータｌ、ｏを一つずつ変えて計算を繰り返す。この計算で接合点としての適合性を確率関数として計算する。確率関数は曲線の滑らかさによる係数ｒｉｊ（ｏｌ）を持つ。この係数は適合係数ということができる。ｉとｊは仮接合点ｘｉと近傍接合点ｘｊの符号である。
　　【０１３７】
　ｏとｌはこれらの仮接合点の属する接合点候補の番号である。この係数がパラメータｏ、ｌ毎に決まる値であるのでこれだけの添え字を必要とする。これは曲線ＡＢＣＤが十分に滑らかであるとき１となり、滑らかでないときは１より小さくなる。だから曲線の適合性を決めるパラメータとなり得る。
　　【０１３８】
　図２０は近傍接合点が存在する場合（Ｊ≧１）の適合係数ｒｉｊ（ｏｌ）の決定法を示すフローチャートである。パラメータの範囲をまず指定している。ｉが０からＩ−１というのは、曲率によって求めた仮接合点ｘｉについてこのような計算を０からＩ−１まで繰り返すということである。
　　【０１３９】
　ｏが０から２αまでと言うのは、対象とする仮接合点ｘｉにおいて２α＋１個の接合点候補があるので、これについて一つずつすべて計算するということである。ｊが０からＪ−１までと言うのは、近傍接合点ｘｊが複数ある場合はこの計算をあるだけ繰り返すということである。Ｊ＞１であるからこのようなことが必要である。
　　【０１４０】
　ｌが０から２αまでというのは、近傍接合点ｘｊにおいて２α＋１個の接合点候補があるので、これらについて一つずつすべて計算するということである。ｉ、ｏ、ｊ、ｌのパラメータについてこのような計算をするが、ここでは順序不同に書いており、始めのものほど大きいループを構成するということはない。しかし以後の説明によりこれらパラメータの変化は一義的に与えられる。
　　【０１４１】
　始めにデータ近似したのと同様の種歩により、点Ａ、Ｂ、Ｃ、Ｄをフルーエンシー関数によって近似する。つまり区分的多項式によって近似するのである。近似関数の次数は２次でよい。先述の式で、ｍ＝２とする。
　　【０１４２】
　　【０１４３】
　　【０１４４】
　　【０１４５】
　　　ｋ＝−２，−１，０，・・・，Ｍ＋２　　　（３９）
　　【０１４６】
　ここでパラメータｔは連続量を表すｔである。先程述べた近似の段階を示すｔとは異なる。文字の数が足らないので別異のことを同じｔで表現している。最初のデータ近似のときは、全輪郭点列について範囲Ｔを定めて、全輪郭点列について一つの近似をしていた。であるから全ての輪郭点列の座標データが参照されなければならなかった。
　　【０１４７】
　しかしここではそうでなく、４点Ａ、Ｂ、Ｃ、Ｄを繋げば良いのである。４点の座標のみが必要で、４点の間の数多くの輪郭点列の座標はもはや不要である。４点を繋げば良いのであるから、ＡＤ間を区分多項式によって近似する。区間Ｔは曲線ＡＤに対応している。図１０に示すような計算をするのであるが、点の数が著しく少ないのでこの近似は簡単である。最小二乗法で係数を確定する点も同じである。このような近似により４点を通る近似曲線ＡＢＣＤを作る。
　　【０１４８】
　曲線ＡＢＣＤの各輪郭点に於ける曲率を計算する。これは近似関数Ｓｘ（ｔ）、Ｓｙ（ｔ）があるので、
　　【０１４９】
　　　Ｋ（ｔｗｕ）＝｛Ｓｘ’（ｔｗｕ）Ｓｙ’’（ｔｗｕ）−Ｓｘ’’（ｔｗｕ）Ｓｙ’（ｔｗｕ）｝／｛Ｓｘ’（ｔｗｕ）２＋Ｓｙ’（ｔｗｕ）２｝３／２　　　　（４０）
　　ただし、ｗ＝Ａ、Ｂ、Ｃ、Ｄである。
　　【０１５０】
　これも曲線ＡＤの全てに渡って曲率を求めるのでなく、４点だけ計算すればよいので簡単である。曲率の反転回数により変曲点の数ｎｃを求める。変曲点の数は当然３以下である。図２１は曲線の概略と変曲点の数ｎｃの例を示す図である。変曲点を×印によって表す。
ｘｊ−１の接合点候補λｌ’（ｊ−１）の中でｍａｘＰｊ−１（ｔ−１）（ｌ’）の点を固定点とする。ｘｉ＋１の接合点候補λｏ’（ｉ＋１）の中でｍａｘＰｉ＋１（ｔ−１）（ｏ’）の点を固定点とする。
　　【０１５１】
　　　ｒｉｊ（ｏｌ）＝ｍｉｎ｛１／ｃ２（ｎｃ−ｃ１），１｝　　　（４１）
　　【０１５２】
というふうに決める。この例では変曲点の数が３のときｒｉｊ（ｏｌ）＝１／３となっている。これはｃ１＝−１、ｃ２＝３／４としたものである。こうするとｎｃ＝２で、４／９、ｎｃ＝１で２／３、ｎｃ＝０で１となる。もちろんこれらの定数は適宜決定すれば良い。１とｍｉｎ演算するのは、変曲点数が少ないときに大きくなりすぎるのでこれを防ぐためであるが、ｒｉｊ（ｏｌ）の上限が１でなければならないということはない。単にｒｉｊ（ｏｌ）＝１／ｃ２（ｎｃ−ｃ１）としても良い。
　　【０１５３】
　このような計算を何回か重ねる。近似計算の回数をｔで表現する。これは確率を求める計算である。近似計算については後に述べる。ここでは適合係数ｒｉｊ（ｏｌ）の決定についてだけ説明した。
　　【０１５４】
　［ＣＡＳＥ　２（Ｊ＜１の場合：近傍接合点がない）］　図２２はＪ＜１つまり近傍接合点が存在しない場合の処理のフローチャートを示す。図２３はこの場合の接合点の位置の例を示している。これは仮接合点ｘｉの前の仮接合点ｘｉ−１と、後の仮接合点ｘｉ＋１と３点の接続を問題にする。図２２のフローチャートも、パラメータの範囲について初めに定義している。
　　【０１５５】
　ｉは０〜Ｉ−１であるがこれは仮接合点の番号である。すべての仮接合点について演算を行うということである。ｏは仮接合点ｘｉの接合点候補λｏ（ｉ）（ｘｉｏ，ｙｉｏ）の番号である。ｌはｘｉより前の仮接合点ｘｉ−１の接合点候補λｌ（ｊ）（ｘｊｌ，ｙｊｌ）の番号である。すべての接合点候補について計算する。ｊはｉ−１〜ｉ−１、つまりｊ＝ｉ−１のみである。
　　【０１５６】
　それぞれの仮接合点ｘｉ−１、ｘｉ、ｘｉ＋１の接合点候補を、Ａ、Ｂ、Ｃとする。点Ａはλｌ（ｉ−１）（ｘｉ−１ｌ，ｙｉ−１ｌ）でｌがパラメータである。点Ｂはλｏ（ｉ）（ｘｉｏ，ｙｉｏ）でパラメータはｏである。点Ｃはｘｉ＋１の接合点候補λｈ（ｉ＋１）（ｘｉ＋１ｈ，ｙｉ＋１ｈ）で、ｍａｘｈ（Ｐｉ＋１ｈｔ−１）を示す。ｍａｘｈはパラメータｈのなかでの最大を示す。
ＣＡＳＥ２では、ｘｉ＋１の接合点候補λｈ（ｉ＋１）の中でのｍａｘｈＰｉ＋１（ｔ−１）（ｈ）の点を固定点とする。
　　【０１５７】
　これらの３点をフルーエンシー関数で補間する。これは図１０に示すような方法で行うが、３点しかなく、極めて簡単である。ただしこれも近似を上げて行くようにし、近似の回数をｔで表す。そして最小二乗法による誤差がεｍａｘになるまで近似する。このときの近似の次元数をＭとする。ｒｉｊ（ｏｌ）はｍｉｎ｛１／（ｃ３Ｍ＋ｃ４ε）、１｝で決める。εは最終誤差、Ｍは最終次元である。
　　【０１５８】
　つまりできるだけ低い次元数で、誤差少なく近似できる点を求めるということである。このような点はそれぞれが属する仮接合点の接合点候補の内、最も滑らかな曲線を与えることができる。ｔは近似の回数であり、０からこれを上げて行く。先に説明したＪ≧１の時と同じように、ｔは０〜４とし４回で近似を打ち切る。
　　【０１５９】
　［ＣＡＳＥ　３（Ｊ≧１で出力近傍の場合）］　図１９で示したのは、Ｊ≧１で仮接合点ｘｉに対する近傍接合点ｘｊが入力近傍である時である。Ｊ≧１であって、近傍接合点ｘｊが出力近傍である場合も同様な計算をするのであるが、この場合４点の取り方が少し違う。
　　【０１６０】
　図２４に出力近傍の場合の近傍接合点ｘｊに対する４点の取り方を示す。近傍接合点ｘｊが、ｘｉを中心とする半径ρのなかにある。しかもこれは走査の方向に関し元の仮接合点ｘｉよりも先にある。４点は、対象となる仮接合点ｘｉの前の仮接合点ｘｉ−１と、近傍接合点ｘｊの次の仮接合点ｘｊ＋１である。これらの近くにある２α個の接合点候補から４点を取る。
　　【０１６１】
　Ａはｘｊ＋１の接合点候補λｌ（ｊ＋１）（ｘｊ＋１ｌ，ｙｊ＋１ｌ）の一つである。ただしここでｌは「’」が付いているが、これは１／４角にできないので「’」を省いている。これは前回の確率計算で最大値を与えたものとして決っており、固定値である。
　　【０１６２】
　Ｂは近傍接合点ｘｊの接合点候補λｌ（ｊ）（ｘｊｌ，ｙｊｌ）の一つである。Ｃは対象としている仮接合点ｘｉの接合点候補λｏ（ｉ）（ｘｉｏ，ｙｉｏ）の一つである。
　　【０１６３】
　Ｄはｘｉ−１の接合点候補λｏｉ−１（ｘｉ−１ｏ，ｙｉ−１ｏ）の一つである。これの前回の確率計算で最大値を与えるもので固定値である。
ＣＡＳＥ３では、ｘｊ＋１の接合点候補λｌ’（ｊ＋１）の中でｍａｘｌ’Ｐｊ＋１（ｔ−１）（ｌ’）の点を固定点とする。ｘｉ−１の接合点候補λｏ’（ｉ−１）の中でｍａｘｏ’Ｐｉ−１（ｔ−１）（ｏ’）の点を固定点とする。
　　【０１６４】
　［出力近傍と入力近傍の決め方］　仮接合点は曲率が大きい輪郭点であり、主に２本の線が直角に近い角度で交わる交差点が典型的なものである。交差点を正確に決めるには、交差点を通る２本の輪郭線を正確に求めて、その交点を求めなければならない。１本の輪郭線は交差点と１つの近傍接合点を通り、もう１本の輪郭線は交差点と他の近傍接合点を通る。
　　【０１６５】
　接合点はこのように２つの近傍接合点を持つので、交差点を求める対象となる仮接合点ｄｉ（ｘｉ，ｙｉ）の近傍接合点ｄｊ（ｘｊ，ｙｊ）として、出力近傍と入力近傍とを区別しなければならない。接合点と入力近傍を通る最も滑らかな線と、接合点と出力近傍を通る最も滑らかな線を求めて、それらの線の交点から正しい交差点を再生するのである。
　　【０１６６】
　仮接合点ｄｉ（ｘｉ，ｙｉ）とその前の仮接合点ｄｉ−１（ｘｉ−１，ｙｉ−１）の２点を通り、輪郭点列の走査の方向に沿うベクトル（ｄｉ−１→ｄｉ）が近傍接合点ｄｊ（ｘｊ，ｙｊ）に向かうとき、この近傍接合点ｄｊ（ｘｊ，ｙｊ）を出力近傍という。反対に、近傍接合点ｄｊ（ｘｊ，ｙｊ）とその前の仮接合点ｄｊ−１（ｘｊ−１，ｙｊ−１）の２点を通り、輪郭点列の走査の方向に沿うベクトル（ｄｊ−１→ｄｊ）が仮接合点ｄｉ（ｘｉ，ｙｉ、）に向かうとき、これを入力近傍という。図２５は入力、出力近傍接合点の決定のためのフローチャートである。始めに全ての接合点候補λｏ（ｉ）（ｘｉｏ，ｙｉｏ）を入力する。
　　【０１６７】
　ｉは計算対象たる仮接合点ｄｉ（ｘｉ，ｙｉ）の番号であり，これは一つの輪郭点列群ｕについてＩ個ある（０〜Ｉ−１）。これについてｉ＝０から始める。ｊは近傍接合点の番号であるが、はじめから近傍であるかどうか分かっている訳ではない。始めは全ての仮接合点ｄｊ（ｘｊ，ｙｊ）をとる。ｏはその仮接合点の近くの２α個内に含まれる接合点候補の番号である。図中ではｏに上線を付けているが、明細書では上線を付けられないので省く。仮接合点ｄｉ（ｘｉ，ｙｉ）のｉだけ固定し近傍接合点を決める。
　　【０１６８】
　ｄｊ（ｘｊｕ，ｙｊｕ）はｊ番目の仮接合点の座標であるが、簡単のために単にｄｊと書いている。これがλｏ（ｉ）（ｘｉｏ，ｙｉｏ）（簡単のためλｏ（ｉ）と書く）を中心とする半径ρ内に存在するかどうかを調べる。これは（３５）に示した条件であるが再び記述すると、
　　【０１６９】
　　　｛（ｘｉｏ−ｘｊ）２＋（ｙｉｏ−ｙｊ）２｝１／２＜ρ　　　　（４２）
　　【０１７０】
となる。（３５）は仮接合点の座標（ｘｉ，ｙｉ）をそのまま用いているが、ここではｄｉの接合点候補の座標を用いている。もしもｄｊが半径ρ内にあるとこれは近傍接合点である可能性がある。次にｄｊと、λｏ（ｉ）が同一の輪郭線点列にあるかどうかを調べる。異なる輪郭線点列にあればこれらは近傍接合点でない。
　　【０１７１】
　もしも同一の輪郭点列にあると、ｄｊはλｏ（ｉ）が属する仮接合点ｘｉの近傍接合点である。対象としている仮接合点ｄｉにおいて、ある一定数β前の点の座標は（接合点候補とは限らない）ｄｉ−βで表すことができる。ベクトル（ｄｉ−β→ｄｉ）は仮接合点における走査の方向に沿う方向を持つ。一方近傍接合点ｄｊにおいてこれより一定数βだけ後の点の座標はｄｊ＋βと書くことができる。ベクトル（ｄｊ→ｄｊ＋β）は近傍接合点の直後における走査の方向に沿う方向を持つ。
　　【０１７２】
　仮接合点ｄｉから近傍接合点ｄｊに向かうベクトル（ｄｉ→ｄｊ）が、輪郭点列の走査の方向に沿って仮接合点ｄｉに向かうベクトル（ｄｉ−β→ｄｉ）とほぼ順平行であり、輪郭点列の走査の方向に沿って近傍接合点から出るベクトル（ｄｊ→ｄｊ＋β）とほぼ順平行であるとき、近傍接合点ｄｊは仮接合点ｄｉの出力近傍である。すなわち、
　　【０１７３】
　　　（ｄｉ−β→ｄｉ）／／（ｄｉ→ｄｊ）／／（ｄｊ→ｄｊ＋β）　　　　　（４３）
　　【０１７４】
という条件をほぼ満たすということであり、ベクトルの内積と外積の式で表すと、
　　【０１７５】
　　　｜（ｄｉ−β→ｄｉ）×（ｄｉ→ｄｊ）｜＜ε
　　　｜（ｄｉ→ｄｊ）×（ｄｊ→ｄｊ＋β）｜＜ε　　　　　　　　　　　　　（４４）
　　　【０１７６】
　　　　（ｄｉ−β→ｄｉ）×（ｄｉ→ｄｊ）＞０
　　　　（ｄｉ→ｄｊ）×（ｄｊ→ｄｊ＋β）＞０　　　　　　　　　　　　　　（４５）
　　【０１７７】
がすべて成り立つということである。ただしεは適当な小さい値である。つまり、ベクトル（ｄｉ−β→ｄｉ）、（ｄｉ→ｄｊ）、（ｄｊ→ｄｊ＋β）がすべてほぼ同一方向を向いているとき、４点ｄｉ−β、ｄｉ、ｄｊ、ｄｊ＋βはほぼ一直線に並んでいることになる。この場合はｄｊは出力近傍である。そこでこれをｄｊｏｕｔｐｕｔ（ｉ）として登録する。
　　【０１７８】
　他方近傍接合点ｄｊにおいてこれより一定数βだけ前の点の座標はｄｊ−βと書くことができる。ベクトル（ｄｊ−β→ｄｊ）は近傍接合点の直前における走査の方向に沿う方向を持つ。仮接合点ｄｉにおいてこれより一定数βだけ後の点の座標はｄｉ＋βと書くことができる。ベクトル（ｄｉ→ｄｉ＋β）は仮接合点の直後における走査の方向に沿う方向を持つ。近傍接合点ｄｊから仮接合点ｄｉに向かうベクトル（ｄｊ→ｄｉ）が、輪郭点列の走査の方向に沿って仮接合点ｄｉから出るベクトル（ｄｉ→ｄｉ＋β）とほぼ順平行であり、輪郭点列の走査の方向に沿って近傍接合点ｄｊに向かうベクトル（ｄｊ−β→ｄｊ）とほぼ順平行であるとき、近傍接合点ｄｊは仮接合点ｄｉの入力近傍である。すなわち、
　　【０１７９】
　　　（ｄｊ−β→ｄｊ）／／（ｄｊ→ｄｉ）／／（ｄｉ→ｄｉ＋β）　　　　　　（４６）
　　【０１８０】
という条件をほぼ満たすということであり、ベクトルの内積と外積の式で表すと、
　　【０１８１】
　　　｜（ｄｊ−β→ｄｊ）×（ｄｊ→ｄｉ）｜＜ε
　　　｜（ｄｊ→ｄｉ）×（ｄｉ→ｄｉ＋β）｜＜ε　　　　　　　　　　　　　　（４７）
　　【０１８２】
　　　（ｄｊ−β→ｄｊ）・（ｄｊ→ｄｉ）＞０
　　　（ｄｊ→ｄｉ）・（ｄｉ→ｄｉ＋β）＞０　　　　　　　　　　　　　　　　（４８）
　　【０１８３】
がすべて成り立つということである。ただしεは適当な小さい値である。つまり、ベクトル（ｄｊ−β→ｄｊ）、（ｄｊ→ｄｉ）、（ｄｉ→ｄｉ＋β）がすべてほぼ同一方向を向いているとき、４点ｄｊ−β、ｄｊ、ｄｉ、ｄｉ＋βはほぼ一直線に並んでいることになる。この場合はｄｊは入力近傍である。そこでこれをｄｊｉｎｐｕｔ（ｉ）として登録する。
　　【０１８４】
　［確率の計算］　最適接合点を求めるには接合点候補について次のような計算をして最適のものを選ぶ。図２６はこの計算を示すフローチャートである。入力するものは、
　　【０１８５】
　　　λｏｉ（ｘｉｏ，ｙｉｏ）、ｄｊｉｎｐｕｔ（ｉ）、ｄｊｏｕｔｐｕｔ（ｉ）　（４９）
　　【０１８６】
である。λｏｉ（ｘｉｏ，ｙｉｏ）は曲率によって選ばれた仮接合点ｘｉの近くの接合点候補である。ｏは接合点候補につけた番号である。ｉはｘｉに関するものと言う意味である。ｄｊｉｎｐｕｔ（ｉ）は仮接合点ｘｉの近傍接合点の内、入力近傍接合点の位置座標である。ｄｊｏｕｔｐｕｔ（ｉ）はｘｉの近傍接合点の内、出力近傍接合点の位置座標である。
　　【０１８７】
　これだけのものを始めに入力する。確率計算の次数をｔで示す。これは最小二乗法で誤差がある程度小さくなった時に中止するというのではなく、始めから回数を決めておく。例えば４回とする（ｔ＝０〜４）。勿論目的によって５回以上にしても良い。
　　【０１８８】
　確率変数Ｐｉｔ（ｏ）を定義する。これは仮接合点ｘｉの近くにある２α＋１の（ｘｉ自身を含む）接合点候補の内ｏのｔ回目の確率である。ｔ乗ではなくｔ回目であるから括弧をつけるべきであるが括弧をサフィックスにいれることができないから単にｔと書いている。どういう確率かというと、最適接合点としての確率である。２α＋１個の接合点候補の内これの最も高いものを選ぶ。確率計算の回数ｔを増やす毎に接合点としてより適するものの確率変数が高まってゆく。そのように確率変数を決める。もちろん幾つもの定義が可能である。ここでは、次のように決める。
　　【０１８９】
　相補確率変数Ｑｉｔ（ｏ）を考える。これも接合点候補ｏのｔ回目の確率を与えている。これは入力近傍からの寄与ｑｉｉｎｐｕｔ（ｏ）と、出力近傍からの寄与ｑｉｏｕｔｐｕｔ（ｏ）の和である。これも回数ｔが入るが、ここでは略す。
　　【０１９０】
　Ｑｉｔ（ｏ）＝ｑｉｉｎｐｕｔ（ｏ）＋ｑｉｏｕｔｐｕｔ（ｏ）　　　（５０）
　　【０１９１】
　ｑｉｉｎｐｕｔ（ｏ）とｑｉｏｕｔｐｕｔ（ｏ）は次のように定義する。
　　【０１９２】
　　　ｑｉｉｎｐｕｔ（ｏ）＝ｍａｘ｛ｒｉｊ（ｏｌ）×Ｐｊｔ−１（ｌ）｝　　　（５１）
　　　　　　　　　　（λｌｊ∈｛ｄｊｉｎｐｕｔ（ｉ）の接合点候補｝）　　　　（５２）
　　【０１９３】
　但しｍａｘの計算は接合点候補λｉｊがｄｊｉｎｐｕｔ（ｉ）の接合点候補に属しているという条件で最大の値をとるということである。ここではｌが変化するパラメータである。適合係数ｒｉｊ（ｏｌ）は先に与えられている。同様に、
　　【０１９４】
　　　ｑｉｏｕｔｐｕｔ（ｏ）＝ｍａｘ｛ｒｉｊ（ｏｌ）×Ｐｊｔ−１（ｌ）｝　　（５３）
　　　　　　　　　　　（λｌｊ∈｛ｄｊｏｕｔｐｕｔ（ｉ）の接合点候補｝）　　（５４）
　　【０１９５】
　ｍａｘは、接合点候補λｌｊが、ｄｊｏｕｔｐｕｔ（ｉ）の接合点候補に属しているという条件で最大の値を取るということである。ｔ＋１回目の確率変数は、ｔ回目の確率変数、相補確率変数などを用いて次のように定義される。
　　【０１９６】
　　　Ｐｉｔ＋１（ｏ）＝Ｐｉｔ（ｏ）Ｑｉｔ＋１（ｏ）／｛ΣＰｉｔ（ｏ）Ｑｉｔ＋１（ｏ）｝
　　　　　　　　　　　（Σはλｏｉについて行う）　　　　　　　　　　　　　　　　（５５）
　　【０１９７】
　このような計算をｔ＝０〜４まで行う。但しこれは始め（ｔ＝０）の確率変数が分からないと計算できない。初期確率Ｐｉ（ｏ）（ｏ）はどのように与えてもよいのであるが、ここではｘｉに近いほど大きい値を与える。最適接合点は仮接合点ｘｉの近くにあると考えられ、ｘｉの初期確率を高くすると確率変数の収束が早くなると考えられるからである。
　　【０１９８】
　図２８に初期値の設定を説明する。接合点候補λｏｉはｏが０から２α＋１個ある。ｏ＝αはｘｉ自身である。初期値Ｐｉ’（ｏ）はｏ＝αの時に最大値Ｋを取る。ｏ＝α−１、α＋１は（Ｋ−２）とする。以下αから遠ざかるに従って２ずつ減少して行くものとする。ｏ＝０、２αでは初期値は１である。初期確率Ｐｉ（ｏ）（ｏ）は、初期値を用いて、
　　【０１９９】
　　　Ｐｉｏ（ｏ）＝Ｐｉ’（ｏ）／ΣＰｉ’（ｏ）　　　（５６）
　　【０２００】
である。Σの積算はｏについて行う。こうして初期確率が与えられたので、適合係数ｒｉｊ（ｋｏ）と組み合わせて、ｔ＝１でのｑｉｉｎｐｕｔ（ｏ）とｑｉｏｕｔｐｕｔ（ｏ）を計算することができる。これの和として相補確率変数Ｑｉｔ（ｏ）を計算し、さらに、ｔ＋１回目の確率変数Ｐｉｔ（ｏ）を計算できる。これはｔ＝４になるまで繰り返し行う。ｔ＝４で最高の確率変数を持つ接合点候補が最適接合点である。ここでの出力はＰｉ４（ｏ）ｉ＝０Ｉ−１ｏ＝０Ｏ−１である。これを図２９に示す。
　　【０２０１】
　このようにして曲率から求めた仮接合点の近くにある接合点候補から最適の接合点を求める事ができる。始めに仮接合点を求めているのにさらにこの近くの輪郭点列にまで範囲を広げて接合点候補とし、ここから最適の接合点を求めるは本発明の著しい特徴の一つである。これは曲率が極大の点が必ずしも接合点として最適でないという本発明者の発見に基づくものである。
　　【０２０２】
　［適合係数の他の定義］　最適接合点の条件は前述の方法では４つの点を結ぶ曲線の変曲点が最も少ないということであった。つまり最も滑らかに接続するということである。これは変曲点の数を数える他に、曲線の曲率を直接に対象とする方法も可能である。図２７はこのような他の条件による接合点候補の適合係数の求め方を示すフローチャートである。
　　【０２０３】
　始めのＪ＞１は近傍接合点が存在するという条件である。この場合、入力近傍と出力近傍を考え、４点Ａ、Ｂ、Ｃ、Ｄを通る曲線を考えるが（図１９、図２４）このとき変曲点ではなくて、曲率を求める。Ｋｉｎｐｕｔというのは入力近傍における４点を結ぶ曲線の最大曲率である。これが小さくなる曲線が望ましい。Ｋｏｕｔｐｕｔは出力近傍における４点を結ぶ曲線の最大曲率である。これも小さい方が良い。そこで両者の和を取ってこれの最小を与える点を求めることとする。そこで適合係数を
　　【０２０４】
　　　ｒｉｊ（ｏｌ）＝ｍｉｎ｛γ（Ｋｉｎｐｕｔ＋Ｋｏｕｔｐｕｔ）−１，１｝　　（５７）
　　【０２０５】
として定義する。γは定数である。これは最適である時に曲率の和がほぼγになるように決める。
　　【０２０６】
　図２９は確率変数の計算を繰り返してｔ＝４になった時に繰り返しを停止してこれで得た確率変数Ｐｉ４（ｏ）が最大になる接合点候補の番号ｏを求めこれを、前記の仮接合点ｘｉが属する接合点候補の内の最適接合点λｏｉとするのである。これを最適接合点記憶装置Ｋに入力する。このような操作を輪郭点列群の全ての仮接合点について行い、それぞれのカテゴリーの接合点候補を決定する。
　　【０２０７】
　［最適接合点記憶装置］　前記の操作によって求めた最適接合点を全て格納する装置である。図２９の最下段に示すように、最適接合点を（ｘｉｕ，ｙｉｕ）として格納する。ｕは輪郭点列の番号である。ｉは群ｕの中で接合点に付けた番号である。先程は仮接合点にｘｉという番号（ｙ座標も代表させている）を付けており、番号ｉが同一であるが、これは差し支えないことである。仮接合点一つに最適接合点一つが対応するし、最適接合点は先程求めた仮接合点と同一かまたは極近くにあるからである。
　　【０２０８】
　ここまでの操作を順に説明したが、筋道を分かりやすくするために、ここで「ぱ」という文字を例にしてこれまでの操作を簡単に振り返る。図３０において黒字で「ぱ」という文字がある。これをイメージスキャナで読み込んで画像とする。画像処理して輪郭点列抽出を行う。これは白抜きの文字で表される。右肩の丸は真円抽出によって取り出され真円記憶機構によって記憶される。
　　【０２０９】
　残りは「は」になる。輪郭点列としては独立の３つの群がある。これらの全長に渡って区分的多項式近似をする。そして曲率を計算して仮接合点を求める。これが３段目に書いてある。仮接合点は線分の継ぎ目に現れる。４段目に×の印で仮接合点を示す。曲率で選ぶので「は」の右下部分は仮接合点として現れないことがある。この場合はこの点が接合点となるように追加する。次に接合点候補を求める。さらに「は」の下の交差点の部分において近傍接合点を抽出する。以上の説明でここまで明らかになっている。
　　【０２１０】
　［Ｌ．接合点除去機構］　ここではこれま包こ抽出された接合点の内不要である接合点を除去する。図３１はこれを表すフローチャートである。最適接合点記憶装置から最終接合点を読み込む。｛λｏｉ｝＝｛（ｘｉｕ，ｙｉｕ）｝ｉ＝０ｌ−１である。ｕは群番号、ｉは群での接合点の番号である。この後直線近似における冗長な接合点除去を行う。
　　【０２１１】
　さらに円弧近似における冗長な接合点を除去する。最終接合点は輪郭点列ごとに、座標（ｘｉ’ｕ，ｙｉ’ｕ）と、番号ｉ’によって記憶装置に記憶される。
　　【０２１２】
　これまでに求めた接合点は、輪郭線を区分的多項式で近似し、曲率を求め、仮接合点を求め接合点候補から最終接合点を求めたものである。従って不要な接合点は殆どない筈であるがそれでも画像ノイズの影響などで、不要な接合点が存在する可能性がある。それは直線の接合点と、円弧の接合点である。
　　【０２１３】
　［直線の接合点の除去］　　図３２の輪郭点列の例は線分の中に接合点がある場合を示す。これの座標を（Ｘｉ４Ｂ，Ｙｉ４Ｂ）によって表現する。この接合点を順次評価し、直線の接合点が２点以上連続した区間が存在する時、これの内３つの連続する点列をとり、ｉ４＝ｎｓ、ｎｓ＋１、ｎｓ＋２とする。両側の（ＸｎｓＢ，ＹｎｓＢ）と（Ｘｎｓ＋２Ｂ，Ｙｎｓ＋２Ｂ）を直線で結ぶ。中間の接合点（Ｘｎｓ＋１Ｂ，Ｙｎｓ＋１Ｂ）からこの直線に下した垂線の長さをＬｎｓ＋１とする。これが予め定めた定数Ｋ７より小さいとき
　　【０２１４】
　　　Ｌｎｓ＋１＜Ｋ７　　　　（５８）
　　【０２１５】
この接合点は除去する。図３３はこのような接合点を除去し両側の接合点を結び付けた状態を示す。反対に、垂線の足Ｌｎｓ＋１が定数Ｋ７以上である時
　　【０２１６】
　　　Ｌｎｓ＋１≧Ｋ７　　　（５９）
　　【０２１７】
この接合点は維持される。このような評価を全ての接合点に対して行う。
　　【０２１８】
　［円弧の接合点の除去］　前段階までに抽出された円弧の接合点の中に、複数個の接合点が連続している事がある。この場合において、中間の接合点を除去してもデータの品質が保たれる場合、その接合点を除去する事とする。除去の可能性の判定は次のように行う。図３４に示すように、円弧の接合点を（Ｘｉ４Ｂ，Ｙｉ４Ｂ）で表す。ｉ４が連続番号である。
　　【０２１９】
　図３４のように３つの接合点（ＸｎｓＢ，ＹｎｓＢ）、（Ｘｎｓ＋１Ｂ，Ｙｎｓ＋１Ｂ）、（Ｘｎｓ＋２Ｂ，Ｙｎｓ＋２Ｂ）が連続して存在するとする。この時（ＸｎｓＢ，ＹｎｓＢ）から開始する円弧（メ）と（Ｘｎｓ＋１Ｂ，Ｙｎｓ＋１Ｂ）から開始する円弧（ミ）とに着目する。図３５に示すように、両円弧の半径をｒｎｓ、ｒｎｓ＋１とする。中心座標をそれぞれ（ｘｎｓ，ｙｎｓ）、（ｘｎｓ＋１，ｙｎｓ＋１）とする。円弧メ、ミは次の条件を満足する時単一の円弧と見なされる。
　　【０２２０】
　　　｜ｒｎｓ＋１−ｒｎｓ｜＜Ｋ８　　　　（６０）
　　【０２２１】
　　　｛（ｘｎｓ＋１−ｘｎｓ）２＋（ｙｎｓ＋１−ｙｎｓ）２｝１／２＜Ｋ９　　　（６１）
　　【０２２２】
　つまり中心座標がほぼ同一点で半径がほぼ同じであれば、２つの円弧メ、ミは同じ円弧の一部分と見做すのである。この場合中間の接合点（Ｘｎｓ＋１Ｂ，Ｙｎｓ＋１Ｂ）は不必要であるものとして除去される。そうでない場合この接合点は維持される。
　　【０２２３】
　このような判定と除去、維持の作業が順次全ての円弧の接合点に対して行われる。半径差、中心差のしきい値は適当に決めるべきであるが、例えばＫ８＝１，Ｋ９＝２と定めると好都合である。
　　【０２２４】
　以上の操作によって直線と円弧において、不要な接合点が除かれる。これはデータを圧縮するという上で有効である。それだけでなく、直線や円弧であるべきものをあるべき姿に修正するのであるからデータの品質を高めるという積極的な意義がある。こうして選ばれた接合点は最終接合点ということにする。
　　【０２２５】
　［Ｍ．最終接合点記憶装置］　不要な接合点を除去して得た、最終接合点は最終接合点記憶装置に記憶される。これは図３１の最終段に示すとおり、座標（ｘｉｕ，ｙｉｕ）ｉ＝０Ｉ−１である。ただし図面では、最適接合点と区別するために’が付いている。’は１／４角にできないので明細書では’を省いている。実際は’が付いてるのである。
　　【０２２６】
　［Ｎ．データ近似機構Ｂ］　これまでに得た輪郭点列、最終接合点、真円などのデータからデータを近似する機構である。本発明の中心的な部分である。それぞれの記憶装置から入力されるものは、図３６に示すように、
　　【０２２７】
　輪郭点列記憶装置・・・・輪郭点列｛（ｘｋｕ，ｙｋｕ）｝ｋ＝０Ｎ（ｕ）−１ｕ＝０Ｕ−１
　最終接合点記憶装置・・・最終接合点（ｘｉｕ，ｙｉｕ）ｉ＝０Ｉ−１
　真円記憶装置・・・・・・円Ｃｉｒｃｌｅ（ｕ）
　　【０２２８】
である。輪郭点列のサフィックスのｕは輪郭点列群の番号である。ｋはその輪郭点列群ｕでの輪郭点列番号である。Ｎ（ｕ）（Ｎｕとなっている）は群ｕでの輪郭点列の数である。ｉは群ｕでの最終接合点である。単にｉと書いているが、図３６に示すように実はｉ’である。’は１／４角にできないのでここでは’を省いている。最終接合点が得られているが、隣接する二つの接合点の間（接合点間）を直線、円弧、自由曲線近似する。近似において媒介変数ｔを用いてｘ成分をｓｘ（ｔ）により、ｙ成分をｓｙ（ｔ）によって表現する。
　　【０２２９】
　これは最初に輪郭点列の全体を媒介変数ｔで表現したのと同じ手法である。しかし今度は領域が接合点の間になっているから、ｔの範囲やｔとｓｘ（ｔ）、ｓｙ（ｔ）の対応は前回のものとは異なっている。またある接合点から始まる区間が直線の区間であるか、円弧の区間であるか、あるいは自由曲線の区間であるかということは、曲率を各点において求めるときに分かっている。
　　【０２３０】
　これを記録している場合は、始めから直線、円弧、自由曲線の何れであるかを区別できる。つまりその区間の全点における曲率が０であればこれは直線である。またその区間での曲率が一定値であればこれは円弧である。さらに曲率が変動すればこれは自由曲線である。このように区間を区別できると近似計算のパラメータを決定するのは簡単である。
　　【０２３１】
　しかし反対に曲率計算の結果を記憶させていなくても、この段階で直線、円弧、自由曲線の別を調べることができる。区別をしてから近似をしても良い。本発明は何れの場合にも適用できる。まず前者の場合について述べる。
　　【０２３２】
　［直線区間の近似］　直線の接合点から始まる区間の近似について説明する。接合点の抽出段階において直線と判断されている。弧のとき、ｘ方向の近似曲線ｓｘ（ｔ）は始点ｘｉと終点ｘｎｓとを結ぶ一次関数になる。ｙ方向の近似曲線ｓｙ（ｔ）は、始点ｙｉと終点ｙｎｓとを結ぶ一次関数になる。この場合媒介変数に対してｘ、ｙともに一次関数になる。
　　【０２３３】
　媒介変数ｔとｓｘ（ｔ）、ｓｙ（ｔ）の比例定数がパラメータになる。しかしこの比例定数は記憶する必要がない。直線区間であると始点（ｘｉ，ｙｉ）と終点（ｘｎｓ，ｙｎｓ）が分かればこの間に直線を引けば良いからである。また終点の（ｘｎｓ，ｙｎｓ）は次の区間の始点として与えられるので、ここでは記憶する必要がない。
　　【０２３４】
　［円弧区間の近似］　円弧の接合点から始まる区間の近似について説明する。この区間は接合点抽出の段階において円弧と判断されている。円弧を表す近似曲線ｓｘ（ｔ）、ｓｙ（ｔ）は、次の三角関数の線形結合で表される。観測区間をｔ∈［０，Ｔ］とすると、ｓｘ（ｔ）、ｓｙ（ｔ）は、
　　【０２３５】
　　　ｓｘ（ｔ）＝Ａｘｃｏｓ（２πｔ／（Ｔ／ｎａｒｃ））＋Ｂｘｓｉｎ（２πＴ／（Ｔ／ｎａｒｃ））＋Ｃｘ　　　（６２）
　　【０２３６】
　　　ｓｙ（ｔ）＝Ａｙｃｏｓ（２πｔ／（Ｔ／ｎａｒｃ））＋Ｂｙｓｉｎ（２πＴ／（Ｔ／ｎａｒｃ））＋Ｃｙ　　　（６３）
　　【０２３７】
によって表現される。ｎａｒｃは円弧の全円に対する比である。つまり円弧の中心角を３６０度で割った値である。例えば４分円の場合は、ｎａｒｃは１／４である。であるから２πｎａｒｃがこの円弧の中心角である。変数２πｔ／（Ｔ／ｎａｒｃ）は円弧の始点からパラメータｔに対応する点までの中心角である。（Ｃｘ，Ｃｙ）は円弧の中心の座標である。この時、
　　【０２３８】
　　　Ａｘ２＋Ｂｘ２＝Ａｙ２＋Ｂｙ２　　　（６４）
　　【０２３９】
　　　Ｂｙ／Ａｙ＝Ｂｘ／Ａｘ　　　（６５）
　　【０２４０】
が成立すれば近似関数は円弧となる。この場合、円弧を規定するパラメータは関数のそれぞれの係数Ａｘ、Ｂｘ、Ｃｘ、Ａｙ、Ｂｙ、Ｃｙ、ｎａｒｃである。もしも始めからこの区間が円弧であることが分かっていれば、始点、終点の座標と、曲率と中間の一点の座標とからこのようなパラメータを一義的に決定できる。
　　【０２４１】
　［自由曲線の近似］　直線の接合点でも、円弧の接合点でもない接合点から始まる区間を自由曲線近似する。媒介変数ｔで表現するが、輪郭点列は（ｘｉ３ｕ，ｙｉ３ｕ）で表され、これにｔを対応させて、（ｔｉ３ｕ，ｘｉ３ｕ）、（ｔｉ３ｕ，ｙｉ３ｕ）という媒介変数表示とする。これまで輪郭点列のサフィックスはｋであったが、ここで区間の区分の番号としてｋを用いるからｋの代わりに、ｉ３を輪郭点列の番号とするのである。そして輪郭点列の総数をｎ３とする。
　　【０２４２】
　そして、二次のフルーエンシー関数ψｋを底としてｓｘ（ｔ）、ｓｙ（ｔ）を展開する。フルーエンシー関数については図４０に示した通りである。これは３つの細区分にのみ値を持つ関数である。区間を［０，Ｔ］として、二次フルーエンシー関数φｋは、Ｍ次元の関数系
　　【０２４３】
　　【０２４４】
である。これを底としてｓｘ（ｔｉ３）、ｓｙ（ｔｉ３）は、係数ｃｋｘ、ｃｋｙを用いて、
　　【０２４５】
　　【０２４６】
　　【０２４７】
と表現される。ここで、
　　【０２４８】
　　　ｔ＞ξｋ＋ｑ、の時　（ｔ−ξｋ＋ｑ）２＋＝（ｔ−ξｋ＋ｑ）２　　　　　（６９）
　　【０２４９】
　　　ｔ≦ξｋ＋ｑの時　　（ｔ−ξｋ＋ｑ）２＋＝０　　　　　　　　　　　（７０）
　　【０２５０】
と定義されている。ξｋ＋ｑは、区間ＴをＭ等分したときの細区分である。
　　【０２５１】
　　ξｋ＋ｑ＝（ｋ＋ｑ）Ｔ／Ｍ　　　　　　　　　　　　　　　　　　（７１）
　　【０２５２】
　係数ｃｋｘ、ｃｋｙは、各輪郭点列の値（ｘｉ３ｕ，ｙｉ３ｕ）と、ｓｘ（ｔｉ３）、ｓｙ（ｔｉ３）の値が近似するように決定する。最小二乗法で係数の値を決める。２乗誤差Ｑは
　　【０２５３】
　　　【０２５４】
によって定義される。これを最小にするために、
　　　【０２５５】
　　　【０２５６】
　　　（ｍ＝−２，−１，０，１，・・・，Ｍ＋２）　　　　　　　（７５）
　　　【０２５７】
によって決定される。これを解いて、係数ｃｋｘ、ｃｋｙを求めることができる。この係数が適当であるかどうかを評価するために、次のように各点での誤差の最大値εを求める。
　　【０２５８】
　　　ε＝ｍａｘｉ３＝０ｎ３｛（ｘｉ３ｕ−ｓｘ（ｔｉ３））２＋（ｙｉ３ｕ−ｓｙ（ｔｉ３））２｝１／２　　　　（７６）
　　【０２５９】
ただし、ｍａｘ演算では、ｉ３の範囲は０からｎ３−１までである。この範囲での最大を求めるということである。εが一定数より小さくなるとこれで近似ができたということにする。例えばε＜０．９となるかどうかということで判定する。もしも一定数よりεが大きいと、次元数Ｍをひとつ増やして同様の計算を行う。次元数が高くなると区分の数が増えるので、近似の精度が向上する。同様の誤差の計算をすると、いつかε＜０．９となる。この時近似計算が完了したことになる。
　　【０２６０】
　［Ｏ．圧縮データ出力機構］　文字フォントの輪郭線がこれまでの手順によって、直線（線分）、真円、円弧、自由曲線に分離された。これらは始点、終点を持ち、傾き、中心、半径などのパラメータを持っている。それぞれの種類によって格納すべきデータも異なっている。
　　【０２６１】
　直線データの場合は、直線であることを示すフラグ、直線の始点座標をデータとして格納する。終点座標は次の区間の始点として与えられるのでここでは格納する必要がない。直線の傾きは直線を定義するパラメータであるが始点と、次の接合点の座標を結ぶことにより直線ができるので傾きも不要である。これも格納しない。
　　【０２６２】
　真円データの場合は、真円記憶装置Ｇから直接にデータを得ることができる。これは１回目のデータ近似機構Ａによって既に選び出されている。真円の場合、真円を示すフラグ、円の中心座標、円の半径をデータとして格納する。
　　【０２６３】
　円弧データとして、円弧であることを示すフラグ、円弧の始点座標、円弧分割長（円弧長／周長）、輪郭点数、関数の係数を格納する。　自由曲線のデータとしては、関数の次元数、輪郭点数、輪郭点列の変動の中点及び関数の係数を格納する。
　　【０２６４】
　［Ｐ．圧縮データ記憶装置］圧縮データ出力機構から出力された、直線、真円、円弧、自由曲線などのデータを記憶する。これは記憶した後適当な時期に出力する。ここまではデータを圧縮生成し記憶する装置である。これ以後が蓄積されたデータから文字を再生する装置を説明する。圧縮データ記憶装置Ｐに格納されるデータ構造を表１に示す。
　　【０２６５】
　【表１】
　　【０２６６】
　以下に説明する輪郭再生機構Ｒ、文字再生機構Ｓ，再生データ出力機構Ｔは文字フォントを任意の大きさに再生するための再生データ生成装置を構成する。
　　【０２６７】
　［Ｒ．輪郭再生機構］　これは記憶されている圧縮データから文字フォントの骨格となるべき輪郭線を再生する機構である。輪郭線は直線、真円、円弧、自由曲線の場合がある。
　　【０２６８】
　［直線の再生］　直線の再生は、始点の座標から、次の区間の接合点の座標までを直線で結ぶことによって行われる。直線の傾きに関するデータは不要である。
　［真円の再生］　真円の再生は、中心の座標と半径のデータから、中心座標を中心として与えられた半径の円を描くことによって行われる。
　［円弧の再生］　円弧の再生は格納されている各データ（Ａｘ，Ｂｘ，・・・・）を次の式に代入することによって行われる。
　　【０２６９】
　　　Ｓｘ（ｔ）＝Ａｘｃｏｓ｛２πｔ／（Ｔ／ｎａｒｃ）｝＋Ｂｙｓｉｎ｛２πｔ／（Ｔ／ｎａｒｃ）｝＋Ｃｘ　（７７）
　　【０２７０】
　　　Ｓｙ（ｔ）＝Ａｙｃｏｓ｛２πｔ／（Ｔ／ｎａｒｃ）｝＋Ｂｙｓｉｎ｛２πｔ／（Ｔ／ｎａｒｃ）｝＋Ｃｙ　（７８）
　　【０２７１】
　パラメータｔを［０〜Ｔ］の区間で変動させることにより、Ｓｘ（ｔ）、Ｓｙ（ｔ）からｘ、ｙ座標を得る。
　　【０２７２】
　［自由曲線の再生］　各標本点ｔｉに於ける近似関数の基底φｋの値は、標本点ｔｉが区間［（Ｌ＋２）（Ｔ／Ｍ，Ｌ（Ｌ＋３）（Ｔ／Ｍ）］内にある時（１≦Ｌ≦Ｍ）、ｐ＝Ｌ＋３−ｔｉ×Ｍ／Ｔを用いて、
　　【０２７３】
　　　φｋ（ｔｉ）＝０．５ｐ２　　　　　　　ｋ＝Ｌ　　　　　　　　　（７９）
　　　φｋ（ｔｉ）＝ｐ（１−ｐ）＋０．５　　ｋ＝Ｌ＋１　　　　　　　（８０）
　　　φｋ（ｔｉ）＝０．５（ｐ−１）２　　　ｋ＝Ｌ＋２　　　　　　　（８１）
　　　φｋ（ｔｉ）＝０　　　　　　　　　　　ｋ≦Ｌ−１，Ｌ＋３≦ｋ　（８２）
によって表される。ただしＬは次元数Ｍ以下の自然数である。同一の性質の数であるからＭ’と書くべきであるが、’が１／４角にならないので、Ｌで表現している。
　　【０２７４】
　このような基底φｋを用いて各標本点に於ける近似関数値Ｓ（ｔｉ）は
　　【０２７５】
　　【０２７６】
によって求められる。
　　【０２７７】
　［Ｓ．文字再生機構］　輪郭線が得られたので輪郭線で囲まれた部分を黒画素として、白黒の２値画像にして文字形状に再生する。あるいは反対に輪郭線で囲まれた部分を白画素とし、残りを黒画素とすることもできる。さらに輪郭線で囲まれた部分をある色彩とし、多の部分を他の色彩とすることもできる。要するに輪郭線の内外が区別できるようにすればよい。
　　【０２７８】
　［Ｔ．再生データ出力機構］　関数の係数から画像を再生するために、例えば再生画像の大きさを１ｍｍ角からＡ３版まで指定できるレイアウトエディタを用いる。再生画像は３００ＤＰＩの精度を持つレーザプリンタを用いて印字される。さらに、３０００ＤＰＩの電植機（印刷機器）、または４００ＤＰＩのポストスクリプト対応プリンタ、レーザカッタ等によって出力することができる。
　　【０２７９】
　文字フォントは関数の係数の形で記憶されていて、任意の倍率に拡大縮小することができる。また座標もその中心を任意に指定することができる。このため、任意のデザイン文字を任意の位置に任意の大きさで植字することができる。
　　【０２８０】
　上記の機構は、Ｃ言語を用いたプログラムによって、浮動小数点演算用の数値演算プロセッサを登載したＰＣ−９８０１ＤＡに実装することができる。
　　【０２８１】
　本発明の効果を確かめるために、明朝体「明」「体」ゴシック体の「語」及びＪＩＳ第１水準の文字について本発明によりデータ圧縮した。その結果を表２に示す。またこれら、「明」、「体」、「語」の３文字について図３７から図３９に原画像と、本発明による再生画像（３００ＤＰＩのレーザプリンタによる）を示す。ほぼ忠実に再生できていることがわかる。
　　【０２８２】
　【表２】
　　【０２８３】
　表２はそれぞれの文字を本発明の方法によりデータ圧縮した後のデータ量（Ｂｙｔｅ）と圧縮率（％）、圧縮時間（秒）を示している。ここで圧縮率と言うのは、原画像のデータ量（約８ｋｂｙｔｅ）によって本発明方法に従って圧縮されたフォントのデータ量（ｂｙｔｅ）を割って１００を掛け％として表したものである。原画像が約８ｋｂｙｔｅのデータ量を持つが、本発明方法で圧縮すると、３００から５００ｂｙｔｅのデータ量に減少する。
　　【０２８４】
　圧縮率が２〜６％程度であって、極めて少量のデータに還元できる。また１文字当りの圧縮時間は数秒程度であって、極めて短時間である。ここでいう圧縮時間はＣＰＵ時間であり、一語に納められるデータの分割合成処理時間、グラフィック時間も含まれている。
　　【０２８５】
　このように処理時間が短く、データ量が少なくなるのは、活字体の文字は多く直線部分よりなり、明白な接合点として第１段階で抽出されるため、第２段階で反復近似して求められる接合点の数が少ないためである。
　　【０２８６】
　［Ｕ．画像記憶装置２］　再生された文字フォントをそのまま記憶するものである。プリンタによって打ち出された文字をそのまま記憶する全ての機構装置を意味する。ビデオカメラなどを用いることもできる。プリントされた紙面もこれに含まれる。画像記憶装置は別段なくても差し支えない。
　　【０２８７】
　　【発明の効果】
　本発明は、基本となる文字フォントを読み取り、少ないデータにして記憶し蓄積することを可能とする。また１文字当りの処理時間が短い。ために数千字からなる漢字の新規な文字フォントを創案した時でもこれを短時間にデータとして蓄積できる。単に蓄積しただけでなく、再生するのも簡単である。蓄積データを用いて、任意の大きさの文字を再生できる。
　　【０２８８】
　従来は文字の拡大、縮小が容易でなく、光学的手段によって拡大、縮小する他に手段がなかった。光学的に画像を拡大縮小移動などを行うとノイズが入って品質が低下する。また自由度も低く時間も掛かる。
　　【０２８９】
　本発明は、接合点と区分的多項式の係数としてデータを蓄積するので、文字スケールの拡大縮小などは計算によって行うことができる。従って文字の拡大縮小移動などが迅速で自由に行える。これらの操作によって文字の品質が劣化するということもない。本発明はさらに接合点の除去を通じて文字フォントの品質を向上させることができる。
【図面の簡単な説明】
　　【図１】
　本発明の文字フォントデータ入力出力装置の全体の機構を示す全体構成図、
　　【図２】
　文字を読み取った画像において画素に対して定義するＸ，Ｙ座標系を示す図、
　　【図３】
　一つの画素の周りのチェーンコードを示す図、
　　【図４】
　画像データにおいて輪郭点を探索するための走査の方向を示す図、
　　【図５】
　１つの輪郭点が分かった時に次の輪郭点を見つけるための探索方向を示す図、
　　【図６】
　黒画素と白画素が存在する時ある輪郭点とその次の輪郭点を示す図、
　　【図７】
　ロの字型の画像データにおいて外側の輪郭線と内側の輪郭線を抽出し画素に値２を対応させている状態を示す図、
　　【図８】
　輪郭点列抽出装置の構成を示すフローチャート、
　　【図９】
　輪郭点列を近似し曲率を求めるためのデータ近似機構のフローチャート、
　　【図１０】
　データ近似機構の一部であって輪郭点列の全体を区分的多項式で近似する際の係数を決定する過程を示すフローチャート、
　　【図１１】
前段で近似された輪郭点列の各点に於ける曲率計算のためのフローチャート、
　　【図１２】
　区分的多項式で近似されたデータに基づいて真円を抽出するための機構を示すフローチャート、
　　【図１３】
接合点抽出手法の概略を示す流れ図、
　　【図１４】
　先に計算された曲率から接合点の位置を抽出するための機構を示すフローチャート、
　　【図１５】
　文字フォントを作るための原文字の一例「あ」、「ポ」を示す図、
　　【図１６】
　「あ」と「ポ」の輪郭点列を求めさらに接合点を抽出した例を示す図、
　　【図１７】
　最適接合点抽出機構の概略のフローチャート、
　　【図１８】
　曲率によって選ばれた仮接合点とこの近傍の接合点候補の番号を示す図、
　　【図１９】
　曲率によって選ばれた仮接合点に出力近傍の近傍接合点がある場合の各点に付す番号を示す図、
　　【図２０】
　近傍接合点がある場合において適合係数を決定するためのフローチャート、
　　【図２１】
　曲率によって選ばれた仮接合点の近くの接合点候補Ｃ，出力近傍の接合点候補Ｂ，仮接合点の次の接合点Ｄと、出力近傍の接合点の直前の接合点Ａを結ぶ近似曲線の例と変曲点の数を示す図、
　　【図２２】
　曲率によって選ばれた仮接合点に近傍接合点が存在しない場合の適合係数を求めるためのフローチャート、
　　【図２３】
　仮接合点に近傍接合点が存在しない場合において、この仮接合点の接合点候補Ｂと、前後の仮接合点の接合点候補Ａ、Ｃとこれらを結ぶ曲線と、これらの点に付する番号を明かにするための図、
　　【図２４】
　曲率によって選ばれた仮接合点の近くの接合点候補Ｃ，入力近傍の近傍接合点の近くの接合点候補Ｂ、その仮接合点の直前の仮接合点の接合点候補Ｄの定義と符号を説明するための図、
　　【図２５】
　一つの仮接合点の入力近傍、出力近傍である近傍接合点の決定のためのフローチャート、
　　【図２６】
　接合点候補の内どれが最適の接合点であるかを表す確率変数の定義と繰り返し演算を示すフローチャート、
　　【図２７】
　他の適合係数の与え方を示すフローチャート、
　　【図２８】
　仮接合点を中心とする２α＋１個の接合点候補に与える初期確率を示す図、
　　【図２９】
　全ての仮接合点に関して確率変数の計算を行い、最大確率を与える接合点候補を最適接合点とし最適接合点記憶装置に記憶することを示す図、
　　【図３０】
　「ぱ」を例にしてこれまでの手順を簡単に振り返って示す図、
　　【図３１】
　最適接合点から不要な接合点を除去し、最終接合点を求める操作を説明するフローチャート、
　　【図３２】
　複数個の直線の接合点が連続して存在している時において除去すべきか否かを判断すべき対象である中間の接合点と両端の接合点の符号を示す図、
　　【図３３】
　図３５の配置において両端の接合点を結ぶ直線へ中間の接合点から下した垂線の足の長さがあるしきい値よりも小さいときに中間の接合点を除去することを示す図、
　　【図３４】
　複数個の円弧の接合点が連続して存在している時において除去すべきか否かを判断すべき中間の接合点と、両端の接合点の符号を示す図、
　　【図３５】
　図３７において第１の接合点から始まる円弧の半径、中心、第２の接合点から始まる円弧の半径、中心を示す図、
　　【図３６】
　輪郭点列、最終接合点、真円などのデータからデータを近似し近似関数によって輪郭点列を表す操作を説明するための図、
　　【図３７】
　体という文字の原画像とこれを本発明の方法によってデータ圧縮しさらに再生した画像の図、
　　【図３８】
　語という文字の原画像とこれを本発明の方法によってデータ圧縮しさらに再生した画像の図、
　　【図３９】
　明という文字の原画像とこれを本発明の方法によってデータ圧縮しさらに再生した画像の図、
　　【図４０】
　２次のフルーエンシー関数と０次、１次、３次のフルーエンシー関数の概略図、
　　【図４１】
　２次のフルーエンシー関数を採用した場合に基底関数の数が少ない時十分にデータを近似できないとしても、次元数を上げると近似を上げることができることを示す図、
　　【図４２】
　「和」という文字を例に取り、輪郭点列の全体を区分的多項式近似する手続きを示す図。