(57)【要約】【課題】誤差拡散法本来の特徴を失うことなく「ドット発生の遅延」と「尾ひき」の問題を解決し、さらに処理の速い誤差拡散法を用いた画像処理装置や方法、及びプログラムを提供すること。【解決手段】入力画像データに対して、画素ごとに２種類以上の階調値を有する出力画像データに変換する変換手段と、前記変換手段により発生した誤差を、正値と負値の係数からなる拡散マトリックスにより未変換画素に拡散させる誤差拡散手段と、を備えた画像処理装置であることを特徴とする。【選択図】図３
2005341355.tif 000002
【特許請求の範囲】
【請求項１】
入力画像データに対して、画素ごとに２種類以上の階調値を有する出力画像データに変換する変換手段と、
前記変換手段により発生した誤差を、正値と負値の係数からなる拡散マトリックスにより未変換画素に拡散させる誤差拡散手段と、
を備えたことを特徴とする画像処理装置。
【請求項２】
前記拡散マトリックスは、注目画素から位置が遠いほど小さな係数を配置する、ことを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記負値の係数は、少なくとも前記拡散マトリックスの外周の画素のいずれかに配置される、ことを特徴とする請求項１記載の画像処理装置。
前記拡散マトリックスにおいて、注目画素に隣接する画素に拡散させる誤差の係数の合計値は１よりも大きな値である、ことを特徴とする請求項１記載の画像処理装置。
【請求項４】
前記拡散マトリックスにおいて、注目画素に隣接する画素に拡散させる誤差の係数の合計値は１よりも大きな値である、ことを特徴とする請求項１記載の画像処理装置。
【請求項５】
前記拡散マトリックスは、注目画素に隣接する画素に対し、前記注目画素により発生した誤差よりも絶対値が大きな値を前記誤差として拡散させるよう前記係数が配置される、ことを特徴とする請求項１記載の画像処理装置。
【請求項６】
前記拡散マトリックスは、前記注目画素に隣接する画素以外の画素に前記負値の係数が配置される、ことを特徴とする請求項４又は５記載の画像処理装置。
【請求項７】
前記拡散マトリックスは、注目画素に対し主走査方向の画素に配置される係数の合計が１となるように前記係数が配置されるとともに、前記注目画素に対し前記主走査方向でかつ副走査方向に斜め方向に位置する画素に負値の係数が配置される、ことを特徴とする請求項１記載の画像処理装置。
【請求項８】
入力画像データに対して、画素ごとに２種類以上の階調値を有する出力画像データに変換する変換工程と、
前記変換工程により発生した誤差を、正値と負値の係数からなる拡散マトリックスにより未変換画素に拡散させる誤差拡散工程と、
を備えたことを特徴とする画像処理方法。
【請求項９】
入力画像データに対して、画素ごとに２種類以上の階調値を有する出力画像データに変換する変換処理と、
前記変換処理により発生した誤差を、正値と負値の係数からなる拡散マトリックスにより未変換画素に拡散させる誤差拡散処理と、
をコンピュータに実行させることを特徴とするプログラム。
【請求項１０】
入力画像データに対して、画素ごとに２種類以上の階調値を有する出力画像データに変換する画像処理装置において、
注目画素の前記入力画像データと前記注目画素の周辺画素から拡散された誤差とを加算して加算値を出力する加算手段と、
前記加算手段からの加算値を閾値に基づいて前記出力画像データに変換する変換手段と、
前記変換手段で発生した誤差を正値と負値の係数からなる拡散マトリックスにより未変換画素に拡散させる誤差拡散手段と、
を備えたことを特徴とする画像処理装置。
【請求項１１】
入力画像データに対して、画素ごとに２種類以上の階調値を有する出力画像データに変換する画像処理方法において、
注目画素の前記入力画像データと前記注目画素の周辺画素から拡散された誤差とを加算して加算値を出力する加算工程と、
前記加算工程からの加算値を閾値に基づいて前記出力画像データに変換する変換工程と、
前記変換工程で発生した誤差を正値と負値の係数からなる拡散マトリックスにより未変換画素に拡散させる誤差拡散工程と、
を備えたことを特徴とする画像処理方法。
【請求項１２】
入力画像データに対して、画素ごとに２種類以上の階調値を有する出力画像データに変換する画像処理をコンピュータに実行させるプログラムにおいて、
注目画素の前記入力画像データと前記注目画素の周辺画素から拡散された誤差とを加算して加算値を出力する加算処理と、
前記加算処理による加算値を閾値に基づいて前記出力画像データに変換する変換処理と、
前記変換処理で発生した誤差を正値と負値の係数からなる拡散マトリックスにより未変換画素に拡散させる誤差拡散処理と、
をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多階調画像データを低階調画像データに変換する誤差拡散法を用いた画像処理装置、画像処理方法、及びプログラムに関する。詳しくは、誤差拡散法で使用する拡散マトリックス内に正値と負値の両方の係数を用いて処理を行う画像処理装置、画像処理方法、及びプログラムに関する。
【背景技術】
【０００２】
従来から、プリンタなどの画像処理装置は、画素ごとに多値の階調値を有する階調データに対して、ドットの有無を表す２値の値に変換して印刷用紙に印刷等を行うようになされている。このような低階調の画像データに変換する場合に、原画像の画品質をできるだけ維持するための技術として誤差拡散法による擬似中間調表現が利用されている。誤差拡散法は、注目画素で発生した量子化誤差を当該画素の近傍の未量子化画素に拡散させて処理を行う方法である（例えば、以下の非特許文献１）。
【０００３】
しかし、ハイライト領域（ドット密度の低い領域）の立ち上がり部分で誤差拡散法による処理を行うと、ドットの発生が大幅に遅れる、いわゆる「ドット発生の遅延」と呼ばれる現象が発生する。また、入力階調値が大きく変化するエッジの領域では尾を引いたようにドットが抜けてしまう、いわゆる「尾ひき」と呼ばれる現象も発生する。
【０００４】
そのため、従来では、入力階調値に応じて誤差拡散法で使用される閾値を変更することで早くドットを発生させ「ドット発生の遅延」と「尾ひき」の問題を解決したものがある（以下の特許文献１）。しかし、かかる技術では閾値を変化させているため入力画像のエッジ部分の前後等でドットが発生し、結果的に画像のエッジの部分がシャープに再現されない問題があった。
【０００５】
そこで、隣接画素との濃度差を演算してエッジを検出しその値によって閾値を固定にしたり、変化させることで、エッジの再現性を良好にするとともに「ドット発生の遅延」と「尾ひき」の問題を解決したものがある（例えば、以下の特許文献２）。
【０００６】
また、入力階調値にランダムノイズを付加することでかかる問題点を解決したものもある（例えば、以下の特許文献３、４）。さらに、ドットが安定して発生している状態では量子化誤差は一定の範囲内に収束していることに着目して、量子化誤差を強制的に収束範囲内に収めるようにすることで、エッジ部分をシャープに再現しつつ「ドット発生の遅延」と「尾ひき」の問題を解決したものもある（例えば、以下の特許文献５）。
【非特許文献１】Ｒｏｂｅｒｔ  Ｕｌｉｃｈｎｅｙ著、“Ｄｉｇｉｔａｌ  Ｈａｌｆｔｏｎｉｎｇ”、Ｔｈｅ  ＭＩＴ  Ｐｒｅｓｓ（１９８７年発行）、ｐ．２３９−２５２
【特許文献１】特開平７−１１１５９１号公報
【特許文献２】特開平８−２４２３７４号公報
【特許文献３】特開平１０−４２１３２号公報
【特許文献４】特開平１０−４２１３３号公報
【特許文献５】特開平１１−２１５３７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した特開平８−２４２３７４号においては、濃度差を演算してその値によって閾値を固定にしたりする等、条件分岐が多くそれだけ計算量が多くなり、誤差拡散処理が遅くなってしまう問題点があった。
【０００８】
また、特開平１０−４２１３２号や特開平１０−４２１３３号もランダムノイズを付加する等の処理により処理が遅くなってしまう問題点がある。
【０００９】
さらに、特開平１１−２１５３７７号では、本来とは異なる誤差値を他の画素に拡散させているため、画像全体の平均濃度（平均階調値）の誤差を最小にするという誤差拡散法本来の特徴を失っている。
【００１０】
そこで、本発明の目的は、誤差拡散法本来の特徴を失うことなく「ドット発生の遅延」と「尾ひき」の問題を解決し、さらに処理の速い誤差拡散法を用いた画像処理装置や方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するために本発明は、入力画像データに対して、画素ごとに２種類以上の階調値を有する出力画像データに変換する変換手段と、変換手段により発生した誤差を、正値と負値の係数からなる拡散マトリックスにより未変換画素に拡散させる誤差拡散手段と、を備えたことを特徴としている。これにより、例えば、「ドット発生の遅延」や「尾ひき」を解消した再生画像を得るとともに、誤差値として拡散される値が入力階調値よりも大きな値を誤差値として拡散されず本来の誤差拡散法の特徴を失うことはない。
【００１２】
また、本発明は上記画像処理装置において、上記拡散マトリックスは、注目画素から位置が遠いほど小さな係数を配置する、ことを特徴としている。これにより、例えば、注目画素の近傍ではより大きな誤差値が拡散されるため、「ドット発生の遅延」等の問題を解決することができる。
【００１３】
さらに、本発明は上記画像処理装置において、上記負値の係数は少なくとも拡散マトリックスの外周の画素のいずれかに配置される、ことを特徴としている。これにより、例えば、注目画素の近傍ではより大きな誤差値が拡散されるため、「ドット発生の遅延」等の問題を解決することができる。
【００１４】
さらに、本発明は上記画像処理装置において、上記拡散マトリックスに関し、注目画素に隣接する画素に拡散させる誤差の係数の合計値は１よりも大きな値である、ことを特徴としている。これにより、例えば、注目画素の近傍ではより大きな誤差値が拡散されるため「ドット発生の遅延」等の問題を解決することができる。
【００１５】
さらに、本発明は上記画像処理装置において、上記拡散マトリックスは、注目画素に隣接する画素に対し、注目画素により発生した誤差よりも絶対値が大きな値を前記誤差として拡散させるよう係数が配置される、ことを特徴としている。これにより、例えば、注目画素の近傍ではより大きな誤差値が拡散されるため「ドット発生の遅延」等の問題を解決することができる。
【００１６】
さらに、本発明は上記画像処理装置において、上記拡散マトリックスは、注目画素に隣接する画素以外の画素に負値の係数が配置される、ことを特徴としている。これにより、例えば、注目画素に近い画素には大きな誤差値が拡散されてドットの生成は早まり、遠い画素には低い誤差値が拡散されることで全体として入力階調値よりも大きな誤差値を拡散しないことになる。
【００１７】
さらに、本発明は上記画像処理装置において、上記拡散マトリックスは、注目画素に対し主走査方向の画素に配置される係数の合計が１となるように配置されるとともに、注目画素に対し主走査方向でかつ副走査方向に斜め方向に位置する画素に負値の係数が配置される、ことを特徴としている。これにより、例えば、主走査方向への「ドット発生の遅延」と「尾ひき」が解消される。
【００１８】
また、上記目的を達成するために本発明は、入力画像データに対して、画素ごとに２種類以上の階調値を有する出力画像データに変換する変換工程と、変換工程により発生した誤差を、正値と負値の係数からなる拡散マトリックスにより未変換画素に拡散させる誤差拡散工程と、を備えた画像処理方法であることを特徴としている。これにより、例えば、例えば、「ドット発生の遅延」や「尾ひき」を解消した再生画像を得るとともに、誤差拡散法本来の特徴を失うことなく処理を行うことができる。
【００１９】
さらに、上記目的を達成するために本発明は、入力画像データに対して、画素ごとに２種類以上の階調値を有する出力画像データに変換する変換処理と、変換処理により発生した誤差を、正値と負値の係数からなる拡散マトリックスにより未変換画素に拡散させる誤差拡散処理と、をコンピュータに実行させるプログラムであることを特徴としている。これにより、例えば、「ドット発生の遅延」や「尾ひき」を解消した再生画像を得るとともに、誤差拡散法本来の特徴を失うことなくコンピュータに処理を行わせることができる。
【００２０】
さらに、上記目的を達成するために本発明は、入力画像データに対して、画素ごとに２種類以上の階調値を有する出力画像データに変換する画像処理装置において、注目画素の入力画像データと注目画素の周辺画素から拡散された誤差とを加算して加算値を出力する加算手段と、加算手段からの加算値を閾値に基づいて出力画像データに変換する変換手段と、変換手段で発生した誤差を正値と負値の係数からなる拡散マトリックスにより未変換画素に拡散させる誤差拡散手段と、を備えたことを特徴としている。これにより、例えば、「ドット発生の遅延」等の問題も解消し、処理の速い画像処理装置を提供することができる。
【００２１】
さらに、上記目的を達成するために本発明は、入力画像データに対して、画素ごとに２種類以上の階調値を有する出力画像データに変換する画像処理方法において、注目画素の入力画像データと注目画素の周辺画素から拡散された誤差とを加算して加算値を出力する加算工程と、加算工程からの加算値を閾値に基づいて出力画像データに変換する変換工程と、変換工程で発生した誤差を正値と負値の係数からなる拡散マトリックスにより未変換画素に拡散させる誤差拡散工程と、を備えたことを特徴としている。これにより、例えば、「ドット発生の遅延」等の問題も解消し、処理の速い画像処理方法を提供することができる。
【００２２】
さらに、上記目的を達成するために本発明は、入力画像データに対して、画素ごとに２種類以上の階調値を有する出力画像データに変換する画像処理をコンピュータに実行させるプログラムにおいて、注目画素の入力画像データと注目画素の周辺画素から拡散された誤差とを加算して加算値を出力する加算処理と、加算処理による加算値を閾値に基づいて出力画像データに変換する変換処理と、変換処理で発生した誤差を正値と負値の係数からなる拡散マトリックスにより未変換画素に拡散させる誤差拡散処理と、をコンピュータに実行させるプログラムであることを特徴としている。これにより、例えば、「ドット発生の遅延」等の問題も解消し、処理の速いプログラムを提供することができる。
【発明を実施するための最良の形態】
【００２３】
以下、図面を参照して本発明を実施するための最良の形態を説明する。図１は、本発明が適用される画像処理装置２０を含むシステム全体の構成を示す図である。図に示すように本システムは階調画像データ出力装置１０と、画像処理装置２０と、２値画像出力装置３０とから構成される。
【００２４】
階調画像データ出力装置１０は、画像処理装置２０と接続され、処理対象の階調画像データｄ０を出力する。本実施例において階調画像データｄ０は、各画素ごと、８ビット構成で０〜２５５までの２５６階調値を有している。階調画像データ出力装置１０は、例えば、ホストコンピュータ、イメージスキャナ、デジタルカメラ、ビデオカメラなどである。
【００２５】
画像処理装置２０は、階調画像データ出力装置１０からの階調画像データｄ０が入力され、誤差拡散法による処理で２階調（０又は１）の画像データＢに変換する。かかる画像データＢは２値画像出力装置３０に出力される。
【００２６】
２値画像出力装置３０は、画像処理装置２０と接続され、画像処理装置２０からの２階調画像データＢに基づいて原画像を再生出力する。２値画像出力装置３０は、例えば、プリンタ、ディスプレイ、ファクシミリ、複写機、プリンタやファクシミリ等の機能を有する複合機などである。
【００２７】
次に、画像処理装置２０の構成について説明する。図１に示すように画像処理装置２０は、加算器２１と、２値化部２２と、減算器２３と、重み付け誤差演算部２４、及び誤差メモリ２５とから構成される。
【００２８】
加算器２１は、階調画像データ出力装置１０と接続されるとともに、後述する誤差メモリ２５、２値化部２２、および減算器２３と接続される。階調画像データ出力装置１０からの階調画像データｄ０と、誤差メモリ２５からの誤差値Ｅ０とが入力され、階調画像データｄ０に誤差値Ｅ０を加算した値ｆを２値化部２２に出力する。また、この加算値ｆは減算器２３にも出力される。
【００２９】
２値化部２２は、減算器２３に接続されるとともに２値画像出力装置３０にも接続される。加算器２１からの加算値ｆと閾値とを比較し、その大小によって２階調画像データＢに変換する。本実施例では、閾値を“１２８”とし加算値ｆが閾値と等しいか大きいときはドット生成を示す“１”、そうでないときはドット無しを示す“０”とすることで２階調の値Ｂに変換する。この値Ｂが、２階調画像データとして２値画像出力装置３０に出力される。
【００３０】
減算器２３は、重み付け誤差演算部２４にも接続される。減算器２３は、誤差演算手段として機能し、加算器２１からの加算値ｆに対して２値化部２２からの２階調の値Ｂ’（Ｂ＝１のときＢ’＝２５５、Ｂ＝０のときＢ’＝０）を減算する。減算後の誤差値Ｅ’は重み付け誤差演算部２４に出力される。
【００３１】
重み付け誤差演算部２４は、誤差メモリ２５にも接続される。減算器２３からの誤差値Ｅ’が入力され、拡散マトリックス内の各係数値Ｗｘｙで積算（重み付け）し、各画素ごと、重み付け誤差値Ｅ’（ｉ’、ｊ’）を誤差メモリ２５に出力する。ここでは、注目画素の近傍で２階調画像データＢに変換されていない画素に誤差値Ｅ’（ｉ’、ｊ’）を拡散することになる。なお、拡散マトリックスは重み付け演算部２４に格納され、処理の際にマトリックス内の各係数値Ｗｘｙを読み出して処理が行われる。
【００３２】
誤差メモリ２５は、重み付け誤差演算部２４からの重み付け誤差値Ｅ’（ｉ’、ｊ’）を一時記憶する。同じ画素位置に以前の重み付け誤差値Ｅ’（ｉ’、ｊ’）が記憶されていれば、記憶された誤差値Ｅ’（ｉ’、ｊ’）に重み付け誤差演算部２４からの誤差値Ｅ’（ｉ’、ｊ’）を加算して記憶することになる。そして、階調画像データｄ０と同じ画素位置の誤差値Ｅ’（ｉ’、ｊ’）を加算器２１に出力する。なお、重み付け誤差演算部２４と誤差メモリ２５とで誤差拡散手段として機能する。
【００３３】
［正負両方の係数を有する拡散マトリックスを用いた誤差拡散処理］
以上のように構成された画像処理装置２０の動作について図２のフローチャートを参照しながら説明するが、その前に誤差拡散法による処理で用いる、本発明に係る拡散マトリックについて説明する。
【００３４】
誤差拡散法による処理は、画素ごとに加算値ｆ（階調画像データｄ０の入力階調値と誤差値との加算値）と閾値とを２値化部２２で比較し、２値化された値との誤差を減算器２３で演算している。そして、その誤差を拡散マトリックス内にある係数Ｗｘｙで積算し、その値を注目画素の周辺に拡散させている。この拡散マトリックスの例を図３（Ａ）に示す。
【００３５】
図３（Ａ）に示すように本発明に係る拡散マトリックス２４１は、注目画素（図中“＊”で示す）の周辺に“０．５”、さらに注目画素の２つ下の画素に“−０．５”の係数を持つ。すなわち、正の誤差値に対して注目画素に近い画素には多くの誤差値が拡散され、注目画素から遠い画素にはそれよりも小さな誤差値が拡散されるように係数を有している。注目画素に近い画素位置に大きな値の係数を有することで、より絶対値の大きな誤差値が近くの画素に拡散され、その後誤差値と入力階調値とを加算すればそれだけ早くドットが生成されることになる。なお、図３（Ａ）に示すように図面上右方向が主走査方向で、下方向が副走査方向である。
【００３６】
図３（Ｂ）には、従来から存在するＦｌｏｙｄ  ａｎｄ  Ｓｔｅｉｎｂｅｒｇの拡散マトリックスを示す。このマトリックス２４１で注目画素の右隣には、“７／１６”で図３（Ａ）に示す“０．５”より小さい係数である。さらに、注目画素の下と右斜め下の係数はさらに小さい係数である。したがって、図３（Ｂ）のマトリックス２４１により拡散される誤差値は注目画素の近くでは図３（Ａ）のマトリックスよりも誤差値の絶対値が小さいものとなる。
【００３７】
図３（Ｃ）には、従来からのＪａｒｖｉｓ、Ｊｕｄｉｃｅ  ａｎｄ  Ｎｉｎｋｅの拡散マトリックスを示す。このマトリックス２４１は、図３（Ａ）に示すマトリックス２４１と比較して係数はより小さな値となっている。この場合も、周りの画素に拡散される誤差値は注目画素の近くでは図３（Ａ）の場合よりも低い値となっている。
【００３８】
ドット密度の低い領域の立ち上がり部分で発生する「ドット発生の遅延」は、拡散マトリックス２４１での係数が小さな値となっていることに加え、入力階調値が低い値のため周辺画素に拡散する誤差値が非常に小さく閾値に達するまで時間がかかることが原因である。また、エッジ部分で発生する「尾ひき」についても、例えばドット密度の低い領域からドット密度の高い領域に変わる領域において、誤差値が非常に小さいためにあるドット密度の低い領域で蓄積された誤差がドット密度の高い領域で相殺されるまで時間がかかることが原因である。
【００３９】
そこで、図３（Ａ）に示すように拡散マトリックス２４１の係数を注目画素に近い画素には大きな係数を、注目画素から遠い画素には小さな係数となるように構成している。より具体的には、注目画素に隣接する画素（注目画素の右隣、右斜め下、下、左斜め下の最大４つの画素）に与える係数の合計値が１よりも大きな値となるように構成する。すなわち、注目画素に隣接する画素に拡散される重み付け誤差の合計が誤差値よりも絶対値を大きくとるように係数Ｗｘｙを与える。例えば、図３（Ａ）の例では主走査方向、副走査方向を図面のようにとったときに、右隣と、下、及び左斜め下の画素（この例では右斜め下の画素に与える係数はない）に与える係数の合計値は“１．５”となっている。これにより、大きな誤差値が拡散され「ドット発生の遅延」等の問題を解消することができる。
【００４０】
しかしながら、大きな係数となるように拡散マトリックス２４１を構成しても、誤差値として拡散される値が本来の誤差値とは異なる値となっては、画像全体の平均階調値の誤差を最小にするという誤差拡散法の特徴を失うことになる。例えば、入力階調値が“１０”で誤差値が“１０”となったとき、ドットの生成を早めるために周辺の画素に“２０”、“３０”などの誤差値を拡散させると、画像全体の誤差が多くなってしまう。
【００４１】
そこで、注目画素の近い画素に大きな係数を割り当てたとき、遠くの画素に負値の係数を割り当て、拡散される値が全体としてみると誤差値と等しくなるようにする。図３（Ａ）の例では、注目画素から２つ下の画素位置に負値である“−０．５”を割り当て、全体として“１．０”としている。これにより、注目画素での誤差値分を拡散させることになる。
【００４２】
拡散マトリックス２４１に負値の係数を割り当てる例としては、図３（Ｄ）や図３（Ｅ）に示すマトリックス２４１であってもよい。ちなみに、これらの拡散マトリックス２４１において注目画素に隣接する画素に与える係数の合計値はそれぞれ“２３／１６”、“６２／４８”である。
【００４３】
次に、図４（Ａ）に示す入力階調値を例にとって図２に示すフローチャートを説明する。拡散マトリックス２４１は図３（Ａ）に示すものを用いるものとする。なお、図４（Ａ）に示す入力バッファ１１は入力階調値ｄ０を格納するためのもので各座標位置は全体画像の座標位置に対応する。誤差メモリ２５や出力バッファ３１の座標位置も同様である。出力バッファ３１は２値化後の値Ｂを格納するためのものである。
【００４４】
ここで、入力バッファ１１は本実施例においては階調画像データ出力装置１０にあり、出力バッファ３１は２値画像出力装置３０にあるものとするが、入力バッファ１１と出力バッファ３１とは処理の動作を理解し易くするために示したものである。よって画像処理装置２０に入力バッファ１１や出力バッファ３１があってもよいし、バッファ１１、３１自体なくてもよい。
【００４５】
まず、本発明にかかる誤差拡散法による処理が開始される（ステップＳ１０）と、注目画素の指定を行う（ステップＳ１１）。注目画素について最初は（１，１）に位置する画素である。図４（Ｂ）に示すように注目画素を太線で示す。なお、最初に画素（１，１）に対する処理を行うと次の注目画素として（２，１）となり、以後主走査方向に順次移動することになる。
【００４６】
次いで、注目画素の階調値ｄ０と注目画素の誤差値Ｅ０とを加算器２１にて加算する（ステップＳ１２）。図４（Ｂ）の例では、注目画素の階調値ｄ０は“１６”、当該画素の誤差値Ｅ０は“０”なので、加算後の値ｆは“１６”となる。
【００４７】
次いで、加算後の値ｆに対して２値化部２２において２値化を行う（ステップＳ１３）。図４（Ｂ）の例では、加算値ｆは“１６”であるから閾値“１２８”と比較し２値化すると“０”となる（図４（Ｂ）の出力バッファ３１参照）。
【００４８】
次いで、２値化したことによる誤差値Ｅ’を減算器２３で演算する（ステップＳ１４）。すなわち、加算値ｆから２値化後の値Ｂ’を減算する。図４（Ｂ）の例では、加算値ｆは“１６”で２値化後の値Ｂ’は“０”、したがって誤差値Ｅ’“１６”を得る。
【００４９】
次いで、重み付け誤差演算部２４において重み付け誤差値Ｅ’（ｉ’、ｊ’）を演算する（ステップＳ１５）。すなわち、誤差値Ｅ’に拡散マトリックス２４１の各係数Ｗｘｙを積算する。上述の例では、図３（Ａ）に示すマトリックス２４１から注目画素（１，１）に対して画素（２，１）と画素（１，２）には“８”（＝１６×０．５）、画素（１，３）には“−８”（＝１６×（−０．５））となる。すなわち、Ｅ’（２，１）＝Ｅ’（１，２）＝８、Ｅ’（１，３）＝−８を得る。
【００５０】
次いで、重み付け誤差値Ｅ’（ｉ’、ｊ’）を加算して誤差メモリ２５に格納する（ステップＳ１６）。上述の例では、図４（Ｂ）の誤差メモリ２５に示すように（２，１）と（１，２）の位置に“８”、（１，３）の位置に“−８”が格納される。なお、ここでは図示しないが、画素位置（−１，２）に拡散される誤差Ｅ’（−１，２）＝８も画素（−１，２）の誤差を格納する誤差メモリ２５に加算される。
【００５１】
次いで、未処理画素があるか否か判断し（ステップＳ１７）、未処理画素があれば（“ＹＥＳ”のとき）ステップＳ１１に移行し上述の処理を繰り返す。未処理画素がないと（“ＮＯ”のとき）本処理は終了する（ステップＳ１８）。図４（Ｂ）に示す例では、未処理画素があるため処理を繰り返すことになる。
【００５２】
以下、図４（Ｂ）の例で処理を進めると、図５（Ａ）に示すように注目画素を（２，１）とし（ステップＳ１１）、当該画素位置の入力階調値ｄ０“１６”と誤差メモリ２５の当該画素位置の誤差値Ｅ０“８”とを加算する（ステップＳ１２）と加算値ｆ“２４”を得る。閾値“１２８”と比較することで２値化すると“０”となる（ステップＳ１３、図５（Ａ）の出力バッファ３１参照）。誤差値Ｅ’は“２４”（ステップＳ１４）で、拡散マトリックス２４１から重み付け誤差値Ｅ’（ｉ’、ｊ’）を演算する（ステップＳ１５）。そして、誤差メモリ２５に誤差値Ｅ’（ｉ’、ｊ’）を加算して格納する（ステップＳ１６）と、図５（Ｂ）の誤差メモリ２５に示す状態となる。以後、同様の処理を繰り返し、画素（４，１）まで処理を終了したときの入力バッファ１１、誤差メモリ２５、出力バッファ３１の状態を図６（Ａ）に示す。
【００５３】
ここで、誤差メモリ２５に格納された各値を検討する。図６（Ｂ）には従来例の拡散マトリックス２４１により同じ画素位置（４，１）まで同じ処理を行ったときの誤差メモリ２５と出力バッファ３１の状態を示す。
【００５４】
両者の誤差メモリ２５に格納された値を比較すると、処理が行われた画素位置のすぐ下の画素には図６（Ａ）の方が図６（Ｂ）より多くの誤差値が拡散されていることがわかる。
【００５５】
このことから、多くの誤差値が拡散された画素では閾値よりも高くなる可能性が高まり、ドットが生成されやすくなる。すなわち、ハイライト領域の立ち上がり部分でドットの生成が遅れる「ドット発生の遅延」が解消される可能性が高くなる。また、入力画像のドット密度の低い領域から高い領域に変化するようなエッジ部分でも多くの誤差値が拡散されるためドット密度の高い領域でドットが生成されやすくなるため、「尾ひき」の問題も解消される可能性が高くなる。
【００５６】
また、本処理において注目画素位置で入力階調値ｄ０と誤差値Ｅ０とを加算した加算値ｆと閾値とを比較して２値化するだけであって、隣接画素との入力階調値の差によって閾値を変更するような複雑な条件分岐を行うことがないためその分処理が早くなる。
【００５７】
さらに、図６（Ａ）で誤差メモリ２５に拡散された値の合計値は“５６”、処理済みの４画素（（１，１）〜（４，１）の４画素）の入力階調値の合計値は“６４”で、ほぼ処理済みの階調値の合計値が周辺の画素に拡散されており、入力階調値よりも大きな値を拡散させるようなことはしていないことになる。すなわち、画像全体の平均階調値の誤差を最小にするという誤差拡散法本来の特徴を失っていないと言える。
【００５８】
図６（Ａ）の処理を（５，３）の画素まで行ったときの例を図７（Ａ）に示す。この図に示すように、（３，３）の画素位置でドットが生成されている。一方、図７（Ｂ）は図６（Ｂ）に示す従来例での拡散マトリックス２４１により処理を行ったときの例である。この例ではドットが生成されていない。すなわち、本発明に係る拡散マトリックス２４１による処理を行うことで「ドット発生の遅延」が解消されている。なお、図２の動作に戻ると、（５，３）を最後の画素としたとき、当該画素に対して処理が終了すると未処理画素がなくなるためステップＳ１７で“ＮＯ”が選択され、一連の処理が終了することになる（ステップＳ１８）。
【００５９】
次に全体画像による本発明の有効性について検討する。図８（Ａ）、（Ｂ）は従来例の拡散マトリックス（図３（Ｂ）に示す拡散マトリックス２４１）を用いた場合の本処理後の再生画像の例である。図８（Ｃ）、（Ｄ）は本発明に係る拡散マトリックス（図３（Ｄ）の拡散マトリックス２４１）を用いた場合の再生画像の例である。入力画像は、図８（Ａ）、（Ｃ）については入力階調値“１５”の領域に入力階調値“１８０”の線が存在している例で、図８（Ｂ）、（Ｄ）については入力階調値“２４０”の領域に入力階調値“１５”の四角形が存在している例である。
【００６０】
図８（Ａ）では画像の左上の領域にドットの発生が遅れる「ドット発生の遅延」が生じ、画像中央の縦線、横線の右斜め下方向にドットが打たれていない「尾ひき」が生じている。また、図８（Ｂ）についても画像の左上の領域で白ドットの発生が遅れており、四角形の右斜め下方向でも白ドットが打たれていない。
【００６１】
一方、図８（Ｃ）、（Ｄ）に示すように本発明に係る拡散マトリックス２４１を用いて処理を行った場合には、画像の左上の領域でドットの発生が遅れる「ドット発生の遅延」が解消され、また、エッジの右斜め下方向にドットが打たれない「尾ひき」の問題も解消されている。理由は上述したように、拡散マトリックス２４１内で注目画素に近い画素位置に大きな係数、すなわち、注目画素に隣接する画素に与える係数の合計値を１よりも大きくしているからである。
【００６２】
以上、本発明によれば、誤差拡散法本来の特徴を失うことなく「ドット発生の遅延」と「尾ひき」の問題を解決し、さらに処理の速い誤差拡散法を用いた画像処理装置や方法、及びプログラムを提供することができる。
【００６３】
［重心位置に注目画素が位置するように係数を配置した拡散マトリックスによる誤差拡散処理］
次の実施例として、誤差拡散法で用いる拡散マトリックスで注目画素にマトリックスの重心位置が位置するように係数を配置した例について説明する。まず、従来例の拡散マトリックス２４１を例にとって説明する。図９（Ａ）にその例を示す。
【００６４】
図９（Ａ）の例は、注目画素の位置（“＊”で示す）を（０，０）としたとき、（１，０）、（−１，１）、（０，１）、（１，１）の位置に“０．２５”の係数を配置させた例である。このときの拡散マトリックス２４１内の重心位置を以下の式によって求める。
【００６５】
【数１】
2005341355.tif 000003
【００６６】
（ここで（ｍ１，ｍ２）は重心位置の位置座標を示す）
以後の重心位置は[数１]を用いて演算する。実際に演算すると、（ｍ１，ｍ１）＝（０．２５，０．７５）となる。この位置２４３を図面上、黒丸で示す。一方、注目画素（０，０）に着目すると、当該位置には拡散対象の入力階調値があり、その重心位置は当該画素（０，０）の中央に位置する。注目画素の重心位置２４２を図中白丸で示す。図９（Ａ）に示すように、本来の重心位置２４２に対して実際の重心位置２４３がずれている。すなわち、注目画素から離れた位置に拡散マトリックス２４１の重心が位置する。
【００６７】
この重心位置のずれは、入力階調値を誤差値として周囲の画素に拡散させたときにも生じる。すなわち、図９（Ｂ）で示す入力階調値に対して注目画素を（２，１）とし、その階調値“１６”が誤差値として周囲の画素に拡散させると、誤差メモリ２５には同図に示すように拡散する。このとき、誤差メモリ２５内の注目画素の本来の重心位置２４２は（２，１）で、実際の重心位置２４３は（２．７５，１．７５）となり、２つの重心位置にずれが生じている。
【００６８】
このように拡散マトリックス２４１内での重心位置の右斜め下方向（図３（Ａ）に示す主走査方向、副走査方向を図面上にとったときの右斜め下方向）へのずれは、誤差値に対しても右下方向へのずれとなって現れ、全体として見ると入力階調値（誤差値）の移動が右斜め下方向に生じることになる。つまり、この右斜め下方向の入力階調値の移動が「ドット生成の遅延」や「尾ひき」が右斜め下方向に向けて発生している原因となっている。
【００６９】
例えば、上述した図６（Ｂ）の例でも、本来の重心位置２４２は図９（Ｃ）に示すように（２．５，１）に位置するはずであるが、実際の重心位置２４３は（２．９７，１．９１）と右斜め下方向にずれ、「ドット生成の遅延」等が右斜め下方向に発生することになる。
【００７０】
このときにドットの発生位置に着目すると、全体として入力階調値が重心位置のずれの方向に沿って移動するため、本来の重心位置にドットが打たれる可能性が低くなる。すなわち、拡散マトリックス２４１の重心位置のずれによって、入力階調値に忠実なドットが生成される可能性が低くなる。拡散マトリックス２４１によって、いわば、入力階調値を歪ませてしまい、歪んだ領域に対する誤差拡散処理と同等の処理を行っていることになる。
【００７１】
そこで、本発明は拡散マトリックス２４１の重心位置のずれに着目し実際の重心位置を本来の重心位置、すなわち注目画素の位置にマトリックス２４１の係数を配置することで、入力階調値に忠実なドットを生成させるようにする。
【００７２】
例えば、図９（Ａ）の拡散マトリックス２４１で重心位置を注目画素に近づけるようにするには、図１０（Ａ）に示すようにさらに周囲の画素位置に負値の係数を配置させるようにすればよい。そうすると、矢印で示すように重心位置が移動するはずである。
【００７３】
重心位置が注目画素に位置する拡散マトリックス２４１の例としては、図１０（Ｂ）に示すものがある。これは、上述した図３（Ａ）と同じ拡散マトリックス２４１である。重心位置を求めると、（０，０）で注目画素の画素位置、すなわち本来の重心位置（０，０）と一致する。注目画素が重心位置となる係数の配置となっている。
【００７４】
図１０（Ｃ）に示すように、上述の例で画素（４，１）までの処理が終了した時点での誤差メモリ２５の状態において、誤差値の重心位置２４３は（２．８６，０．８６）となる。本来の重心位置２４２の近傍に位置している。前述の図９（Ｃ）と比較しその差は歴然である。ドットは、図７（Ａ）に示すように（３，３）の画素位置に発生する。本来は（３，２）の位置にドットが発生するはずであるが、（１，１）の画素や（５，１）の画素等、端部で拡散されていない誤差があるため若干の歪みが生じているためである。
【００７５】
しかしながら、拡散マトリックス２４１内に負の係数を与えなくても、係数を工夫することで、「ドット発生の遅延」等が右斜め下方向（すなわち、主走査方向かつ副走査方向）に発生する問題を改善することは可能である。
【００７６】
例えば、図１１（Ａ）や図１１（Ｂ）に示す拡散マトリックス２４１で考察してみる。図１１（Ａ）に示すマトリックス２４１は、係数に着目すると、（１，０）と（１，１）の係数の和は“７／１６”で、（−１，１）の係数“７／１６”と同じ値となっている。すなわち、注目画素を中心にして左右対称（主走査方向で対称）の係数が配置されている。重心位置を演算すると、（０，０．６２５）で、左右方向（主走査方向）へのずれが生じないことになる。すなわち、「ドット発生の遅延」等が発生したとき、主走査方向への遅延等は改善することができる。
【００７７】
図１１（Ｂ）の拡散マトリックス２４１も注目画素を中心にして左右対称の係数が配置されている。重心位置は（０，０．５）となる。
【００７８】
以上から、拡散マトリックス２４１内の係数を注目画素に対して左右対称（主走査方向で対称）にするなどして、重心位置と注目画素の位置とでその主走査方向成分を等しくすれば、「ドット発生の遅延」等が生じたときに主走査方向への「ドット発生の遅延」等を解消し、さらに重心位置に近い位置にドットが生成される。
【００７９】
実際に図１１（Ｂ）に示す拡散マトリックス２４１による誤差拡散処理の例を以下に示す。本実施例においても誤差拡散処理が行われる画像処理装置２０の構成は図１に示すもので、その動作は図２に示すフローチャートに従う。入力階調値の例も上述の例と同様に図１１（Ｂ）に示す例を用いる。
【００８０】
まず、注目画素を指定する（ステップＳ１１）。最初は（０，０）の画素位置である（図１２（Ａ）の入力バッファ１１参照）。誤差メモリ２５内の当該画素位置の誤差は“０”であるので加算値ｆは“１６”となる（ステップＳ１２）。閾値“１２８”との比較により２値化すると“０”（ステップＳ１３、図１２（Ａ）の出力バッファ３１参照）、誤差値Ｅ’は“１６”となる（ステップＳ１４）。拡散マトリックス２４１により重み付け誤差値Ｅ’（ｉ’、ｊ’）を演算する（ステップＳ１５）と、Ｅ’（２、１）＝“８”（＝１６×０．５）となり、誤差メモリ２５にすでに格納された値“０”とを加算して格納する（ステップＳ１６、図１２（Ａ）の誤差メモリ２５参照）。まだ未処理画素が存在するので（ステップＳ１７で“ＹＥＳ”）、同様の処理を繰り返すことになる。
【００８１】
（４，１）の画素位置まで処理を終了したときの状態を図１２（Ｂ）に示す。一方、従来の拡散マトリックス２４１を用いた場合の当該画素位置まで処理を終了したときの状態は図６（Ｂ）である。図６（Ｂ）に示す誤差メモリ２５に格納された誤差値の重心位置は（２．９７，１．９１）、一方、図１２（Ｂ）に示す誤差メモリ２５内での重心位置は（２．７９，１．１７）である。（１，１）から（４，１）までの４画素の重心位置は（２．５，１）であるから、本発明に係る拡散マトリックス２４１を用いた方が従来のマトリックス２４１を用いたものよりも本来の重心位置に近づいている。したがって、従来のマトリックス２４１を用いたものよりも重心位置に近づいてドットが発生する。
【００８２】
以後、未処理画素がなくなるまで処理を進めると図１３（Ａ）に示す状態となる。この場合、出力バッファ３１に示すようにドットが生成されていないが、同じ階調値でさらに広域の領域での処理を行うと、図６（Ｂ）に示す拡散マトリックス２４１を用いた場合と比較して、重心位置に対して右斜め下方向にドットが生成するのではなく、重心位置の下方向（副走査方向）にドットが生成するはずである。
【００８３】
図１４には、図８と同じ入力画像に対して図１１（Ａ）に示す拡散マトリックス２４１を用いて処理を行ったときの再生画像の例を示す。副走査方向に対して「ドット発生の遅延」と「尾ひき」が発生しているものの、主走査方向に対しては発生していないことがわかる。上述したように、図１１（Ａ）の拡散マトリックス２４１ではその重心位置２４３が注目画素から主走査方向にずれがなく、副走査方向にのみずれているためである。
【００８４】
このように本発明によれば、拡散マトリックス２４１の重心位置を注目画素に位置するよう係数を配置したり、注目画素に近づけるよう係数を配置することで入力階調値に忠実なドットを生成させ、画質劣化のない再生画像を得ることができる。
【００８５】
［正負両方の係数を有するとともに、重心位置に注目画素が位置するように係数を配置した拡散マトリックスによる誤差拡散処理］
図１１（Ａ）、（Ｂ）で示した拡散マトリックス２４１はその係数が注目画素に対して左右対称のため、その重心位置は主走査方向に対しては注目画素に位置している。しかしながら、副走査方向に対しては重心位置は注目画素に位置していない。したがって、係数の与え方によっては「ドット発生の遅延」等が主走査方向で解消されても副走査方向で解消されないことになる（図１４（Ａ）、（Ｂ）参照）。
【００８６】
そこで、負の係数を拡散マトリックス２４１内に与え、かつ、重心位置に注目画素が位置するように係数を配置させることで、主走査及び副走査方向への「ドット発生の遅延」等を解消することができる。
【００８７】
上述した図１０（Ｂ）の例で考察してみると、この拡散マトリックス２４１は注目画素内に重心位置２４２が位置している（本来の重心位置２４２と実際の重心位置２４３とが一致する）。したがって入力階調値に忠実なドットを生成させる可能性が高くなる。しかも、注目画素に隣接する画素に多くの係数（その係数の和が１よりも大きい、すなわち誤差値よりも絶対値が大きな値を当該画素に拡散させる）を与えているため、「ドット発生の遅延」等自体を解消させることができる。さらに、本来の誤差値と異なる誤差値を与えないようにするために注目画素から遠くの画素位置に負の係数を与えている。そして、注目画素を含めた（１，０）、（−１，１）、（０，１）、の４つの画素に注目するとその係数は左右対称であり、「ドット発生の遅延」等が主走査方向に発生することはないが、副走査方向へ発生することも考えられる。ここで、（０，２）の画素位置に係数“−０．５”を与えることで重心位置が注目画素に位置することになり、副走査方向への「ドット発生の遅延」等を解消することができる。
【００８８】
本実施例における画像処理装置２０の構成及び動作はそれぞれ図１及び図２に示すものと同様である。よって、上述の例と同様に複雑な条件分岐の処理を行うことがないので、処理の速い誤差拡散処理を行うことができる。図１０（Ｂ）に示す拡散マトリックス２４１の例は図３（Ａ）に示すマトリックス２４１と同様である。そのドット発生の過程は上述した図４乃至図７を用いて説明したのでここでは省略する。
【００８９】
図３（Ｄ）、（Ｅ）に示す拡散マトリックス２４１も、正負両方の係数を与え、かつ、その重心位置は（０，０）となり、注目画素の重心位置に一致し、上述の効果を得ることができる。
【００９０】
なお、拡散マトリックス２４１内に負の係数を与える位置によって、主走査方向や副走査方向への「ドット発生の遅延」等の解消、及び注目画素に対して左下方向（図３等に示す主走査方向、副走査方向としたときの左下方向）へ誤差値を残しやすくなる、ことが言える。負の係数を与える拡散マトリックス２４１は上述の例では３ラインで実現しているが、例えば、図１３（Ｂ）に示す拡散マトリックス２４１でもよい。すなわち、注目画素の右方向（主走査方向と副走査方向を図のようにとったときの右方向）の画素に拡散される重み付け誤差の合計が誤差値と同じ値になるよう係数を与えるとともに、注目画素の誤差値と異なる値が誤差として全体に拡散されないよう、かつ、主走査方向で重心位置が注目画素の位置と等しくなるように負の係数を注目画素から右斜め下方向の画素に与えるようする。ただし、かかるマトリックス２４１では隣接する画素に誤差値よりも絶対値の大きな誤差値を与える作用があるとは限らないが、図面上右方向に誤差値と合計で同じ値の誤差を拡散させるとともに、図面上左下方向に誤差を残すようにすることで「ドット発生の遅延」等の問題を解決するようにしている。
【００９１】
[他の実施例]
図１に示すように本発明にかかる画像処理装置２０はハードウェア構成により実現したが、上述した機能をソフトウェアにより実現することもできる。その例を図１５に示す。すなわち、画像処理装置２０の機能が図１５に示すＣＰＵ３２、ＲＯＭ３３、ＲＡＭ３４により実現される。図２のフローチャートはＲＯＭ３３に格納されたプログラムをＣＰＵ３２が読み出して実行することで処理が行われる。この例では、２値画像出力装置３０の例としてプリンタを用いた場合の例であり、この出力装置３０内に画像処理装置２０の機能を有することになる。なお、本発明に係る拡散マトリックス２４１は、ＲＯＭ３３又はＲＡＭ３４に格納され、ＣＰＵ３２によって処理の際に適宜読み出され処理が行われる。
【００９２】
また、図１６に示す階調画像データ出力装置１０内に画像処理装置２０の機能を有するようにしてもよい。すなわち、この図に示す画像処理部１６が本発明に係る画像処理装置２０に対応する。この例では、階調画像データ出力装置１０がホストコンピュータ１２であり、２値画像出力装置３０がそのホストコンピュータ１２に接続されたプリンタ３０の例である。図１５及び図１６に示すシステムにおいても上述したものと全く同様の作用効果を奏する。
【００９３】
さらに、階調画像データ出力装置１０からは２５６階調（８ビット）の画像データが入力するものとして説明したが、もちろんこれ以外にも１２８階調（７ビット）、６４階調（６ビット）、さらに５１２階調（９ビット）等であってもよい。また、上述の画像処理装置２０内で２値化部２２において２値化するとして説明したが、３値、４値等、入力階調値の階調数と同じかそれ以下に階調化するようにしてもよい。この場合、図１の２値化部２２が３値、４値等への変換部、又は量子化部として構成される。
【００９４】
さらに、上述した例ではモノクロデータを例にして説明したが、カラーデータに対しても同様の作用効果を奏する。すなわち、図１の階調画像データ出力装置１０からは色変換処理後のＣ（シアン）、Ｍ（マゼンタ）、Ｙ（イエロー）、Ｋ（ブラック）の各色ごとの階調データが入力され、それぞれの色の階調値に対して上述した拡散マトリックス２４１を用いて誤差拡散処理を行えばよい。もちろん、カラーを表現する色成分としてＣ、Ｍ、Ｙ、Ｋの４色以外にもライトシアン、ライトマゼンダを含めた６色や、さらにそれ以外の色成分を含めた複数色の場合でも同様の効果を得ることができる。
【図面の簡単な説明】
【００９５】
【図１】本発明が適用されるシステム全体の構成を示す図である。
【図２】画像処理装置２０における動作を示すフローチャートである。
【図３】拡散マトリックス２４１の例を示す図である。
【図４】入力バッファ１１、誤差メモリ２５、出力バッファ３１の例を示す図である。
【図５】入力バッファ１１、誤差メモリ２５、出力バッファ３１の例を示す図である。
【図６】入力バッファ１１、誤差メモリ２５、出力バッファ３１等の例を示す図である。
【図７】入力バッファ１１、誤差メモリ２５、出力バッファ３１の例を示す図である。
【図８】再生出力画像の例を示す図である。
【図９】拡散マトリックス２４１、入力バッファ１１、誤差メモリ２５の例を示す図である。
【図１０】拡散マトリックス２４１、誤差メモリ２５の例を示す図である。
【図１１】拡散マトリックス２４１、入力バッファ１１等の例を示す図である。
【図１２】入力バッファ１１、誤差メモリ２５、出力バッファ３１の例を示す図である。
【図１３】入力バッファ１１、誤差メモリ２５、出力バッファ３１の例を示す図である。
【図１４】再生画像の例を示す図である。
【図１５】画像処理装置２０の他の構成を示す図である。
【図１６】画像処理装置２０の他の構成を示す図である。
【符号の説明】
【００９６】
１０  階調画像データ出力装置、  １２  ホストコンピュータ、  ２０  画像処理装置、  ２１  加算器、  ２２  ２値化部、  ２３  減算器、  ２４  重み付け誤差演算部、  ２５  誤差メモリ、  ３０  ２値画像出力装置、  ２４１  拡散マトリックス、２４２  注目画素の重心位置、  ２４３  拡散マトリックス内での係数を考慮した重心位置
【図１】
2005341355.tif 000004
【図２】
2005341355.tif 000005
【図３】
2005341355.tif 000006
【図４】
2005341355.tif 000007
【図５】
2005341355.tif 000008
【図６】
2005341355.tif 000009
【図７】
2005341355.tif 000010
【図８】
2005341355.tif 000011
【図９】
2005341355.tif 000012
【図１０】
2005341355.tif 000013
【図１１】
2005341355.tif 000014
【図１２】
2005341355.tif 000015
【図１３】
2005341355.tif 000016
【図１４】
2005341355.tif 000017
【図１５】
2005341355.tif 000018
【図１６】
2005341355.tif 000019