(57)【要約】【課題】２値画像を対象とした画像処理において、その画像処理により発生する画質劣化を防止しつつ、対象とした２値画像と画像処理後の２値画像の濃度が変化することを抑制するようにした画像処理装置を提供する。【解決手段】画像処理装置の計数手段は、２値画像の黒画素数又は白画素数を計数し、画素数算出手段は、前記２値画像に対する変形量と前記計数手段によって計数された画素数に基づいて、該２値画像を変形した場合の黒画素数又は白画素数を算出し、変形手段は、前記２値画像に対して前記変形量に基づいて前記変形を行い、閾値算出手段は、前記変形手段によって変形された画像の画素値ごとの画素数と前記画素数算出手段によって算出された画素数に基づいて、前記変形手段によって変形された画像を２値化する場合の閾値を算出し、２値化手段は、前記閾値算出手段によって算出された閾値に基づいて、前記変形手段によって変形された画像を２値化する。【選択図】図１９
2011119824.tif 000002
【特許請求の範囲】
【請求項１】
２値画像の黒画素数又は白画素数を計数する計数手段と、
前記２値画像に対する変形量と前記計数手段によって計数された画素数に基づいて、該２値画像を変形した場合の黒画素数又は白画素数を算出する画素数算出手段と、
前記２値画像に対して前記変形量に基づいて前記変形を行う変形手段と、
前記変形手段によって変形された画像の画素値ごとの画素数と前記画素数算出手段によって算出された画素数に基づいて、前記変形手段によって変形された画像を２値化する場合の閾値を算出する閾値算出手段と、
前記閾値算出手段によって算出された閾値に基づいて、前記変形手段によって変形された画像を２値化する２値化手段
を具備することを特徴とする画像処理装置。
【請求項２】
前記変形手段は、前記２値画像に対して移動量に基づいて変形する
ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記２値化手段は、前記閾値算出手段によって算出された閾値と前記変形手段によって変形された画像の画素値との比較によって２値化し、該閾値と該画素値が同じ場合は、前記画素数算出手段によって算出された画素数に基づいて、該画素値の画素を２値化する
ことを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
対象とする２値画像を矩形に分割する分割手段と、
前記２値化手段によって２値化された２値画像を合成する合成手段
をさらに具備し、
前記計数手段と前記変形手段が対象とする２値画像は、前記分割手段によって矩形に分割された２値画像とする
ことを特徴とする請求項１から３のいずれか一項に記載の画像処理装置。
【請求項５】
コンピュータを、
２値画像の黒画素数又は白画素数を計数する計数手段と、
前記２値画像に対する変形量と前記計数手段によって計数された画素数に基づいて、該２値画像を変形した場合の黒画素数又は白画素数を算出する画素数算出手段と、
前記２値画像に対して前記変形量に基づいて前記変形を行う変形手段と、
前記変形手段によって変形された画像の画素値ごとの画素数と前記画素数算出手段によって算出された画素数に基づいて、前記変形手段によって変形された画像を２値化する場合の閾値を算出する閾値算出手段と、
前記閾値算出手段によって算出された閾値に基づいて、前記変形手段によって変形された画像を２値化する２値化手段
として機能させることを特徴とする画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置及び画像処理プログラムに関する。
【背景技術】
【０００２】
２値画像を対象とした画像処理の技術、例えば、２値画像を縮小する技術がある。
これに関連する技術として、例えば、特許文献１には、縮小画像での画質が大幅に向上し、しかも任意の縮小率に容易に対応することができる画像縮小装置を提供することを課題とし、ラインバッファは、所望する縮小率にしたがって入力２値画像から画素ブロックを生成し、平均値算出器は、画素ブロック内の画素値の平均値を求め、加算器は、平均値算出器の結果に周囲の画素ブロックからの誤差を加算し、閾値比較器は、加算器の加算結果と所定の閾値とを比較し、この結果をラインバッファへ縮小画像の画素として出力し、画素カウンタは、縮小画素の黒画素数を計数し、誤差算出器は、加算器の加算結果と画素カウンタの計数結果とに基づいて前記誤差を算出することが開示されている。
【０００３】
また、例えば、特許文献２には、解像度の異なる画像入出力装置間において、入力画像の大きさを保ち、かつ画質の劣化を抑えることが可能な２値画像の解像度変換法を提供することを課題とし、白黒２値で構成される画像データの解像度を変換する方法において、原画像である２値画像の解像度変換テーブルを、変換前後の解像度より算出される変換比率により作成するステップと、白黒判定閾値を設定するステップと、前記変換テーブルと変換前画像の各ドットにおける２値データより変換後画像の各ドットにおける黒の占める割合を点数を算出するステップと、この算出した各ドットの黒の点数と設定した白黒判定閾値から変換後の白黒判定を行うことにより変換画像を得るステップとを具備することが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−１７８５４４号公報
【特許文献２】特開２００１−３５８９３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、２値画像を対象とした画像処理において、その画像処理により発生する画質劣化を防止しつつ、対象とした２値画像と画像処理後の２値画像の濃度が変化することを抑制するようにした画像処理装置及び画像処理プログラムを提供することを目的としている。
【課題を解決するための手段】
【０００６】
かかる目的を達成するための本発明の要旨とするところは、次の各項の発明に存する。
請求項１の発明は、２値画像の黒画素数又は白画素数を計数する計数手段と、前記２値画像に対する変形量と前記計数手段によって計数された画素数に基づいて、該２値画像を変形した場合の黒画素数又は白画素数を算出する画素数算出手段と、前記２値画像に対して前記変形量に基づいて前記変形を行う変形手段と、前記変形手段によって変形された画像の画素値ごとの画素数と前記画素数算出手段によって算出された画素数に基づいて、前記変形手段によって変形された画像を２値化する場合の閾値を算出する閾値算出手段と、前記閾値算出手段によって算出された閾値に基づいて、前記変形手段によって変形された画像を２値化する２値化手段を具備することを特徴とする画像処理装置である。
【０００７】
請求項２の発明は、前記変形手段は、前記２値画像に対して移動量に基づいて変形することを特徴とする請求項１に記載の画像処理装置である。
【０００８】
請求項３の発明は、前記２値化手段は、前記閾値算出手段によって算出された閾値と前記変形手段によって変形された画像の画素値との比較によって２値化し、該閾値と該画素値が同じ場合は、前記画素数算出手段によって算出された画素数に基づいて、該画素値の画素を２値化することを特徴とする請求項１又は２に記載の画像処理装置である。
【０００９】
請求項４の発明は、対象とする２値画像を矩形に分割する分割手段と、前記２値化手段によって２値化された２値画像を合成する合成手段をさらに具備し、前記計数手段と前記変形手段が対象とする２値画像は、前記分割手段によって矩形に分割された２値画像とすることを特徴とする請求項１から３のいずれか一項に記載の画像処理装置である。
【００１０】
請求項５の発明は、コンピュータを、２値画像の黒画素数又は白画素数を計数する計数手段と、前記２値画像に対する変形量と前記計数手段によって計数された画素数に基づいて、該２値画像を変形した場合の黒画素数又は白画素数を算出する画素数算出手段と、前記２値画像に対して前記変形量に基づいて前記変形を行う変形手段と、前記変形手段によって変形された画像の画素値ごとの画素数と前記画素数算出手段によって算出された画素数に基づいて、前記変形手段によって変形された画像を２値化する場合の閾値を算出する閾値算出手段と、前記閾値算出手段によって算出された閾値に基づいて、前記変形手段によって変形された画像を２値化する２値化手段として機能させることを特徴とする画像処理プログラムである。
【発明の効果】
【００１１】
請求項１の画像処理装置によれば、２値画像を対象とした画像処理において、その画像処理により発生する画質劣化を防止しつつ、対象とした２値画像と画像処理後の２値画像の濃度が変化することを抑制できる。
【００１２】
請求項２の画像処理装置によれば、画像処理として移動による変形もできる。
【００１３】
請求項３の画像処理装置によれば、２値化の閾値と画素値が同じ場合でも、対象とした２値画像と画像処理後の２値画像の濃度が変化することを抑制できる。
【００１４】
請求項４の画像処理装置によれば、２値画像の矩形毎に画像処理により発生する画質劣化を防止しつつ、対象とした矩形内の２値画像と画像処理後の矩形内の２値画像の濃度が変化することを抑制できる。
【００１５】
請求項５の画像処理プログラムによれば、２値画像を対象とした画像処理において、その画像処理により発生する画質劣化を防止しつつ、対象とした２値画像と画像処理後の２値画像の濃度が変化することを抑制できる。
【図面の簡単な説明】
【００１６】
【図１】画像内の１画素の例を示す説明図である。
【図２】画素のベクトル表現の例を示す説明図である。
【図３】アフィン変換後の画素の例を示す説明図である。
【図４】アフィン変換後の画素と出力画像の画素との関係の例を示す説明図である。
【図５】アフィン変換後の画素と出力画像の画素との関係の例を示す説明図である。
【図６】逆アフィン変換後の画素と対象画像の画素との関係の例を示す説明図である。
【図７】逆アフィン変換後の画素と対象画像の画素との関係の例を示す説明図である。
【図８】シフト変換の例を示す説明図である。
【図９】シフト変換の例を示す説明図である。
【図１０】シフト変換後の各画素の濃度値の例を示す説明図である。
【図１１】シフト変換をした後、２値化を行った例を示す説明図である。
【図１２】シフト変換の例を示す説明図である。
【図１３】シフト変換をした後、誤差拡散による２値化を行った例を示す説明図である。
【図１４】画素値と画素数の関係例を示す頻度分布のグラフである。
【図１５】画素値と画素数の関係例を示す累積頻度分布のグラフである。
【図１６】累積頻度分布のグラフから２値化の閾値を決定する例を示す説明図である。
【図１７】シフト変換の例を示す説明図である。
【図１８】シフト変換をした後、本実施の形態による２値化を行った例を示す説明図である。
【図１９】本実施の形態の構成例についての概念的なモジュール構成図である。
【図２０】累積頻度分布テーブルのデータ構造例を示す説明図である。
【図２１】画素値と累積頻度の関係例を表すグラフである。
【図２２】誤差拡散の例を示す説明図である。
【図２３】誤差拡散の拡散係数例を示す説明図である。
【図２４】ブロック毎に変形を行う例を示す説明図である。
【図２５】本実施の形態を実現するコンピュータのハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【００１７】
まず、実施の形態の説明の準備として、２値画像を対象とした画像処理であるアフィン変換、２値化等について説明する。
＜１．１．  アフィン変換＞
まず、アフィン変換の対象である座標（ベクトル）を式（１）とする。
【数１】
2011119824.tif 000003
出力座標（ベクトル）を式（２）とする。
【数２】
2011119824.tif 000004
ベクトルｐがアフィン変換されてベクトルｑとなるとき、ベクトルｐとベクトルｑは（３）式の関係を持つ。
【数３】
2011119824.tif 000005
ただし、Ａは変形量を表す２×２の行列であり、ｔはシフト量を表す列ベクトルである（（４）式参照）。
【数４】
2011119824.tif 000006
例えば、行列Ａと列ベクトルｔを（５）式のようにすると、変換後のベクトルｑは、変換前のベクトルｐの２倍の大きさとなる。つまり、２倍拡大されていることになる。
【数５】
2011119824.tif 000007
また、例えば、行列Ａと列ベクトルｔを（６）式のようにすると、変換後のベクトルｑは、変換前のベクトルｐの１／２倍の大きさとなる。つまり、１／２に縮小されていることになる。
【数６】
2011119824.tif 000008
一般にアフィン変換は、平行四辺形を平行四辺形に写す処理といえる。そのため、もともと正方形であった画素は、平行四辺形の形状に変換されることになる。ただし、写った先が平行四辺形であるためには、前記行列Ａが正則である（行列式が０ではない、あるいは、逆行列を持つ）ことが必要である。以下の実施の形態では、行列Ａが正則である場合に限定した処理を行う。
【００１８】
＜１．２．  画素座標の定義＞
以下、画像の１画素を縦の長さが１、横の長さが１の正方形で表すこととする。また、画像の各画素を取り囲む線分の座標値は、（ｘ，ｙ）座標系上で整数となるように並ぶとする。例えば、図１の例に示すように、左下を原点（０，０）とした座標系で、処理対象の画像内の１つの画素１００の頂点の座標は、（０，０）、（１，０）、（０，１）、（１，１）となり、その他の画素の頂点の座標も（ｘ，ｙ）座標系上で整数となるように並んでいることになる。
処理対象である画像（以下、「対象画像」という場合がある。）の各画素、あるいは、アフィン変換処理を施した出力画像（以下、単に「出力画像」という場合には、対象画像にアフィン変換を施し、２値化する前の画像を指すものとする。）の各画素は、図１の例に示されるような縦横１のグリッド上に配置されることになる。
【００１９】
＜１．３．  投影法を用いたアフィン変換＞
次に前記の定義を用いて、処理対象の２値画像のアフィン変換を行う方法について説明する。
まず、処理対象の２値画像にＮ個の画素が含まれているとする。ｉ番目の画素をＰｉとする。また、Ｐｉの４つの頂点の座標をベクトル表現で（ｐｉ００、ｐｉ１０、ｐｉ０１、ｐｉ１１）とする。つまり、図２の例に示すように、画像２２０の左下の頂点は位置ベクトル２００（ｐｉ００）、左上の頂点は位置ベクトル２０１（ｐｉ０１）、右下の頂点は位置ベクトル２１０（ｐｉ１０）、右上の頂点位置ベクトル２１１（ｐｉ１１）となる。
ここで、画素Ｐｉがアフィン変換されるとする。アフィン変換後の画素をＱｉとする。４つの頂点の位置ベクトルを、（ｑｉ００、ｑｉ１０、ｑｉ０１、ｑｉ１１）とすると、（７）式のようになる。
【数７】
2011119824.tif 000009
ただし、ｕ∈｛０，１｝、ｖ∈｛０，１｝である。
したがって、図３の例に示すような変換となり、アフィン変換後の画素Ｑｉ（画像３２０）の形状は、頂点を位置ベクトル３００（ｑｉ００）、位置ベクトル３０１（ｑｉ０１）、位置ベクトル３１０（ｑｉ１０）、位置ベクトル３１１（ｑｉ１１）とする平行四辺形となる。
この状態で、出力画像の画素値を求めたい。出力画像の１つの画素は、縦横の長さが１のグリッド（図１の例）である。そこで、図３の例に示す平行四辺形を出力画像のグリッド上（各グリッドは画素を表す）に、重ね合わせて表示した例が図４である。図４で点線で囲まれた正方形（出力画像４００を構成する４つの正方形）が出力画像の１画素に相当する。
【００２０】
そこで、出力画像の１つの画素Ｒｊに注目する。出力画像に含まれる画素数がＭ個であるとして、ｊは出力画像の画素を示すインデックスである。いま、画素Ｒｊ内には、アフィン変換後の画素Ｑが１又は複数含まれている。図５の例に示すように、出力画像の画素５１０（Ｒｊ）内には、アフィン変換後の画素５２０内の１又は複数の画素Ｑが含まれている。
このとき、出力画像の画素Ｒｊの内部に存在している画素Ｑｉの面積を（８）式のように定義する。
【数８】
2011119824.tif 000010
画素Ｒｊの面積は１であるから、（８）式は、画素Ｒｊの内部に存在している画素Ｑｉの面積割合を示しているといってもよい。なお、（８）式が０である画素Ｑｉは画素Ｒｊの外側に存在していることになる。
ここで対象画像内のｉ番目の画素Ｐｉの画素値をＸｉで表すこととする。同様に、ｊ番目の出力画像の画素Ｒｊの画素値をＹｊで表す。画素値Ｙｊは、（９）式のように算出し得る。
【数９】
2011119824.tif 000011
【００２１】
あるいは、出力画像の画素グリッドを逆変換しても算出し得る。
出力画像の画素Ｒｊの４つの頂点の位置ベクトルを、（ｒｊ００、ｒｊ１０、ｒｊ０１、ｒｊ１１）とすると、これらのベクトルを（１０）式によって逆変換すると、出力画像の画素を対象画像の画素上にマッピングし得る。
【数１０】
2011119824.tif 000012
ただし、ｕ∈｛０，１｝、ｖ∈｛０，１｝である。
（ｓｊ００、ｓｊ１０、ｓｊ０１、ｓｊ１１）は、出力画像の画素の頂点位置を、対象画像にマッピングしたときの位置ベクトルである。（ｓｊ００、ｓｊ１０、ｓｊ０１、ｓｊ１１）を４頂点とする平行四辺形の画素をＳｊとする。図６の例に示すように、対象画像の画素６３０に対して、逆アフィン変換後の画素６２０は位置ベクトル６００（ｓｊ００）、位置ベクトル６０１（ｓｊ０１）、位置ベクトル６１０（ｓｊ１０）、位置ベクトル６１１（ｓｊ１１）の頂点を保つ平行四辺形に囲まれている画素である。
このとき、出力画像の画素Ｓｊの内部に存在している対象画像の画素Ｐｉの面積を出力画像の画素Ｓｊの面積で割った値（画素Ｓｊの内部に存在しているＰｉの面積割合）を、（１１）式のように定義する。
【数１１】
2011119824.tif 000013
ここで、（１２）式が成り立つので、出力画像の画素値Ｙｊは、（１３）式で算出し得る。
【数１２】
2011119824.tif 000014
【数１３】
2011119824.tif 000015
【００２２】
実際には、（８）式と（１１）式のうち算出の容易なほうを採用すればよい。以下、（８）式と（１１）式とを区別する必要はないため、（１４）式とする。
【数１４】
2011119824.tif 000016
本節の結論として、投影法によるアフィン変換後の画素値は、（１５）式のようになる。
【数１５】
2011119824.tif 000017
ただし、ここで算出した画素値Ｙｊは、多値（グレイ値）であり、２値とはなっていない点に注意が必要である。
【００２３】
＜１．４．  補間法を用いたアフィン変換＞
アフィン変換後の画素値を算出するには、線形補間法（バイリニア法）やキュービックコンボリューション法（バイキュービック法）などのように周囲の画素値を用いて画素と画素との間の値を補間によって求める手法がある。
例えば、線形補間法では下記のような処理となる。
図７の例に示すように、逆アフィン変換後の画素７１０（Ｓｊ）の中心点７１１（２つの対角線の交点）の座標を（ｓｊｘ，  ｓｊｙ）とする。同様に、対象画像の画素Ｐｉの中心点の座標を（ｐｉｘ，  ｐｉｙ）とする。
ここで、Ｓｊの中心点に近い４つの対象画像の画素をＰ１（画素７０１）、Ｐ２（画素７０２）、Ｐ３（画素７０３）、Ｐ４（画素７０４）とする。４つの画素Ｐ１、Ｐ２、Ｐ３、Ｐ４の画素値をＸ１、Ｘ２、Ｘ３、Ｘ４とする。このとき、出力画像の画素Ｓｊの画素値Ｙｊは、（１６）式とすると、（１７）式のような形で表し得る。
【数１６】
2011119824.tif 000018
【数１７】
2011119824.tif 000019
（１７）式の形は、（１５）式の形と同じである。周囲４画素以外の画素に対する重みｗｉｊを０と考えればよい。上の説明では、線形補間法を用いたため、出力画像の画素Ｓｊの中心点に近い周囲の４画素の値を用いたが、その他の補間方式、例えば、キュービックコンボリューションでは周囲の１６画素の値を用いることになる。その場合でも、（１５）式と同じ形の算出式となる。
結局、重みｗｉｊを適切に算出することによって、投影法でも補間法でも（１５）式の形で出力画像の画素Ｓｊの画素値を求めることになる。
【００２４】
＜１．５．  ２値化＞
（１５）式の出力は、一般的には多値となる。２値画像出力とするためには、これを２値化する必要がある。以下、多値データＹｊを２値化した結果をＺｊとする。
例えば、ここでは、対象画像の画素値を、０と１の２値であるとする。このとき、（１５）式の出力Ｙｊは、
０≦Ｙｊ≦１
の実数値となる。これを、０又は１の２値とするため、一般的には、閾値処理が行われる。すなわち、予め定められた閾値ＴＨを用いて、（１８）式を適用する。
【数１８】
2011119824.tif 000020
（１８）式で、画素値Ｙｊと閾値ＴＨの比較を行うとき、等号の場合はＺｊ＝０としてもよいし、Ｚｊ＝１としてもよい。いずれでも構わない。
このように、単一の閾値で２値化を行うと、対象画像の直線や曲線の滑らかさが保存されない場合がある。この不具合例に関して、以下示す。ここでは、単純なアフィン変換としてシフトだけを行う例（（１９）式）を示す。
【数１９】
2011119824.tif 000021
この変換では、ｘ方向、ｙ方向にそれぞれ１／３画素シフトすることになる。図８の例を用いて説明すると、実線で囲まれた四角形は変換前の画素、点線で囲まれた四角形は変換後の画素である。
ここで、変換前の画像を図９の例に示すものとする。つまり、下段の行で１つ置きに黒画素が配列されているような画像である。
ここで、変換後の画素値を投影法を用いて算出する。
投影法では面積比を用いて濃度値を算出するため、各画素の２値化前の画素値（グレイ値）は図１０の例に示すようになる。つまり、出力画像の上段の左角にある画素の画素値は１／９、その右隣にある画素の画素値は２／９、下段の左角にある画素の画素値は２／９、その右隣にある画素の画素値は４／９である。
通常（１８）式の閾値ＴＨは０．５を用いることが多い。図１０の例の場合、変換後の全ての画素値が閾値ＴＨ（０．５）未満であるため、出力の２値画像は、図１１の例に示すように、全て白の画像となってしまう。
【００２５】
前述のような不具合（濃度の非保存）が生じる可能性があるため、特許文献１や特許文献２などの従来例では、誤差拡散を行って対象画像の濃度を保存する処理を行う。誤差拡散では、濃度を保存するため、点線が消えてしまうという問題は発生しない。しかし、誤差拡散を行った場合、直線などにガタツキが生じるという問題点がある。以下、誤差拡散の問題例を示す。
アフィン変換を（２０）式とする。
【数２０】
2011119824.tif 000022
このアフィン変換では、ｙ方向に１／３画素だけシフトすることになる。
変換前の画像を図１２の例に示す。変換前の画像は、縦１画素幅の横ラインである。この画像（直線画像）を点線の画素位置に変換して、さらに誤差拡散により２値化すると、図１３の例に示すようになる。
誤差拡散方式ではできるだけ濃度を保存するように誤差を拡散しているため、もともとの濃度の低い場所であっても、たまたま拡散された誤差が蓄積すると黒画素として２値化されてしまう。さらに、低い濃度の画素が黒画素となってしまうと、濃度を下げる方向に誤差が近隣の画素に拡散されるため、もともと濃度の高い画素が白画素となってしまうことが生じる。
前述のように、誤差拡散を行うと、真っ直ぐな直線にガタツキが発生してしまう。このような問題は直線以外でも発生し、ガタツキとなって感知される。あるいは、ガタツキがボケとなって感知される場合もある。すなわち、近づいて見ると（あるいは低解像度画像では）ガタツキであるが、遠くから見ると（あるいは高解像度画像では）、人間の視覚周波数特性から、ボケとなって知覚される場合がある。
特に、ＣＧ（Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ）で作成した直線や図形や文字などのデータでは、直線性が高かったり、曲線が滑らかであったりするため、拡大、縮小、あるいはアフィン変換した場合にこれらのガタツキ、あるいは、ボケが特に気になる場合がある。
【００２６】
＜２．  実施の形態の概要＞
まず、以下に示す実施の形態では、処理対象である２値画像の黒画素数を計測する。対象２値画像の黒画素数をＫとする。
行列Ａを用いるアフィン変換では、変換後の四角形の面積は、変換前の四角形の面積のｄｅｔ（Ａ）倍になる。ここで、ｄｅｔ（Ａ）は、行列Ａの行列式である。よって、変換後の２値画像の黒画素数Ｌ（目標黒画素数）は、（２１）式によって得られる。
【数２１】
2011119824.tif 000023
単純な拡大あるいは縮小であれば、ｄｅｔ（Ａ）は、拡大率（あるいは縮小率）の２乗として計算すればよい。ここで拡大率とは（出力画像の縦あるいは横の画像サイズあるいは画素数）／（対象画像の縦あるいは横の画像サイズあるいは画素数）を示す。縮小率の定義も拡大率の定義と同じとしている。
以下に示す実施の形態では、このＬを満たす閾値ＴＨを画像毎に算出する。
そのために、変換後の（２値化前の）画像（グレイ値）の頻度分布を算出する。
例えば、ここでは、グレイ値Ｇを８ビット整数Ｆで表現するとする。
グレイ値Ｇは０から１．０までの間の値をとる。この区間［０，  １］を、２５６分割して、０から２５５までの値（Ｆ）にマッピングすればよい。ただし、ここでは、黒を０、白を２５５の値にするとする。つまり、グレイ値Ｇ＝０をＦ＝２５５にマッピングし、グレイ値Ｇ＝１をＦ＝０にマッピングする。間の値は線形にマッピングする。
このようにすると、各Ｆの値毎に、何画素存在しているかというデータ（Ｆの頻度分布）を取得することができる（図１４参照）。
【００２７】
次に、この頻度分布から、累積頻度分布を取得する。これは、画素値Ｆ以下の画素数をプロットしたものである（図１５参照）。画素値Ｆ＝２５５では、出力画像の全画素数となる。
ここで、例えば、変換後の２値画像の黒画素数Ｌを１５０００とする。このＬを実現する閾値は、図１５の例に示す累積頻度分布を用いて、図１６の例に示すように求めることができる。すなわち、Ｌの値に最も近い累積頻度を持つ画素値Ｆを閾値とする。
最終的に閾値ＴＨは、画素値Ｇと比較できる値でなければならないため、画素値Ｆで１６０として算出した閾値を、［０，１．０］内の値にマッピングすればよい。
（あるいは、現実的には、グレイ画素値Ｇ自体を［０，１．０］内の実数値として計算するのではなく、０から２５５までの整数値として計算することが多い。この場合には、画素値Ｇと画素値Ｆはまったく同じものになるため、変換の必要はない）
以上で、画素値Ｆとして８ビット整数を用いたが、これは何ビットでもよい。整数ではなく、固定小数点であると考えてもよい。
画素数Ｋ、あるいは目標画素数Ｌとして、実際の画素数を用いたが、これは、全体の画素数で割った比の値を用いてもよい。その他、画素数Ｋと目標画素数Ｌの比が変わらないような値であれば何でもよい。ただし、その値を用いて累積頻度分布をとりさえすればよい。
前述のように閾値ＴＨを定めて、（１８）式を用いて２値化する。
このようにすることで、図９の例の場合は、図１７の例に示すように点線を保持し得る。
また、図１２の例に示す場合は、直線性を保持し得る。
【００２８】
＜３．１．  第１の実施の形態＞
以下、図面に基づき本発明を実現するにあたっての好適な各種の実施の形態の例を説明する。
図１９は、第１の実施の形態の構成例についての概念的なモジュール構成図を示している。
なお、モジュールとは、一般的に論理的に分離可能なソフトウェア（コンピュータ・プログラム）、ハードウェア等の部品を指す。したがって、本実施の形態におけるモジュールはコンピュータ・プログラムにおけるモジュールのことだけでなく、ハードウェア構成におけるモジュールも指す。それゆえ、本実施の形態は、コンピュータ・プログラム、システム及び方法の説明をも兼ねている。ただし、説明の都合上、「記憶する」、「記憶させる」、これらと同等の文言を用いるが、これらの文言は、実施の形態がコンピュータ・プログラムの場合は、記憶装置に記憶させる、又は記憶装置に記憶させるように制御するの意である。また、モジュールは機能に一対一に対応していてもよいが、実装においては、１モジュールを１プログラムで構成してもよいし、複数モジュールを１プログラムで構成してもよく、逆に１モジュールを複数プログラムで構成してもよい。また、複数モジュールは１コンピュータによって実行されてもよいし、分散又は並列環境におけるコンピュータによって１モジュールが複数コンピュータで実行されてもよい。なお、１つのモジュールに他のモジュールが含まれていてもよい。また、以下、「接続」とは物理的な接続の他、論理的な接続（データの授受、指示、データ間の参照関係等）の場合にも用いる。
また、システム又は装置とは、複数のコンピュータ、ハードウェア、装置等がネットワーク（一対一対応の通信接続を含む）等の通信手段で接続されて構成されるほか、１つのコンピュータ、ハードウェア、装置等によって実現される場合も含まれる。「装置」と「システム」とは、互いに同義の用語として用いる。もちろんのことながら、「システム」には、人為的な取り決めである社会的な「仕組み」（社会システム）にすぎないものは含まない。
【００２９】
本実施の形態である画像処理装置は、図１９に示すように、黒画素数計測モジュール１９１０、行列式算出モジュール１９２０、目標黒画素数算出モジュール１９３０、アフィン変換モジュール１９４０、頻度分布モジュール１９５０、累積頻度分布モジュール１９６０、閾値算出モジュール１９７０、２値化モジュール１９８０を有している。
【００３０】
この画像処理装置が受け付けるものは、下記３つである。
（１）処理対象である２値画像１９０１
（２）変形量Ａ１９０２
（３）シフト量ｔ１９０３
２値画像１９０１の受け付けには、例えば、スキャナ、カメラ等で画像を読み込むこと、ファックス等で通信回線を介して外部機器から画像を受信すること、ハードディスク（コンピュータに内蔵されているものの他に、ネットワークを介して接続されているもの等を含む）等に記憶されている画像を読み出すこと等が含まれる。
変形量Ａ１９０２は、アフィン変換を示す式（４）内の２×２の行列である。単純な拡大あるいは縮小の場合は、行列ではなくてスカラー値の拡大率あるいは縮小率であっても構わない。
シフト量ｔ１９０３は、アフィン変換を示す式（４）内の２次元ベクトルである。シフトを行わない場合は、存在していなくても構わない。
変形量Ａ１９０２、シフト量ｔ１９０３の受け付けは、例えば、利用者の操作によるもの、通信回線を介して外部機器から値を受信すること、ハードディスク等に記憶されている値を読み出すこと等が含まれる。
【００３１】
黒画素数計測モジュール１９１０は、２値画像１９０１を受け取り、目標黒画素数算出モジュール１９３０と接続されており、黒画素数計測モジュール１９１０で、２値画像１９０１の黒画素数を計数し、その計数結果である黒画素数を目標黒画素数算出モジュール１９３０へ渡す。
行列式算出モジュール１９２０は、変形量Ａ１９０２を受け取り、目標黒画素数算出モジュール１９３０と接続されており、変形量Ａ１９０２の行列式を計算し、その行列式を目標黒画素数算出モジュール１９３０へ渡す。単純な拡大あるいは縮小の場合は、拡大率の２乗等の演算でよい。縦横の拡大率が異なる場合は、縦の拡大率×横の拡大率でもよい。いずれにせよ、これらの演算は行列式の演算で包含されている。
目標黒画素数算出モジュール１９３０は、黒画素数計測モジュール１９１０、行列式算出モジュール１９２０、閾値算出モジュール１９７０と接続されており、黒画素数計測モジュール１９１０によって計数された黒画素数と行列式算出モジュール１９２０による行列式算出結果を乗算して、２値画像１９０１を変形量Ａ１９０２又はシフト量ｔ１９０３（変形量Ａ１９０２だけの場合、変形量Ａ１９０２とシフト量ｔ１９０３の両方を含む）に基づいて変形した場合の黒画素数である目標黒画素数を算出し、その算出結果である目標黒画素数を閾値算出モジュール１９７０へ渡す。
【００３２】
アフィン変換モジュール１９４０は、２値画像１９０１、変形量Ａ１９０２、シフト量ｔ１９０３を受け取り、頻度分布モジュール１９５０、２値化モジュール１９８０と接続されている。２値画像１９０１に対して変形量Ａ１９０２又はシフト量ｔ１９０３（変形量Ａ１９０２だけの場合、変形量Ａ１９０２とシフト量ｔ１９０３の両方を含む）に基づいてアフィン変換を行う。アフィン変換は、前述した方法を用いる。アフィン変換後の画像（グレイ値）を頻度分布モジュール１９５０、２値化モジュール１９８０へ渡す。
ここでは、アフィン変換後の画素値を０から２５５の２５６値のグレイ値で表現することとする。これは、２値画像１９０１の白を２５５、黒を０として、アフィン変換を浮動小数点演算で（あるいは固定小数点演算で）行い、変換結果を、整数に丸めることによって算出するようにしてもよい。もちろん、黒を１、白を０として、アフィン変換を行い、変換結果の０〜１の値を２５５〜０の値に線形にマッピングするようにしてもよい。
【００３３】
頻度分布モジュール１９５０は、アフィン変換モジュール１９４０、累積頻度分布モジュール１９６０と接続されており、アフィン変換モジュール１９４０によってアフィン変換された画像内の０から２５５の各画素値ごとの画素数がどれだけあるかを計測する。計測した結果を累積頻度分布モジュール１９６０へ渡す。
累積頻度分布モジュール１９６０は、頻度分布モジュール１９５０、閾値算出モジュール１９７０と接続されており、画素値Ｆ以下の画素数を算出する。なお、画素値Ｆは０から２５５の値である。
累積頻度分布モジュール１９６０の出力は、図２０の例に示すような累積頻度分布テーブル２０００となる。図２０は、累積頻度分布テーブル２０００のデータ構造例を示す説明図である。累積頻度分布テーブル２０００は、画素値欄２０１０、累積頻度分布欄２０２０を有しており、各画素値以下の画素値を有する画素の数（累積頻度分布）を対応付けている。
【００３４】
閾値算出モジュール１９７０は、目標黒画素数算出モジュール１９３０、累積頻度分布モジュール１９６０、２値化モジュール１９８０と接続されており、累積頻度分布モジュール１９６０によって算出された画素数と目標黒画素数算出モジュール１９３０によって算出された目標黒画素数に基づいて、アフィン変換モジュール１９４０によってアフィン変換された画像を２値化する場合の閾値ＴＨを算出する。つまり、累積頻度分布の値が目標黒画素数に最も近い画素値をＴＨとして算出する。また、累積頻度分布の値が目標黒画素数よりも大きく、かつ、累積頻度分布の値が目標黒画素数に最も近い画素値をＴＨとして算出するようにしてもよい。そして、算出した閾値ＴＨを２値化モジュール１９８０へ渡す。
２値化モジュール１９８０は、アフィン変換モジュール１９４０、閾値算出モジュール１９７０と接続されており、閾値算出モジュール１９７０によって算出された閾値に基づいて、アフィン変換モジュール１９４０によってアフィン変換された画像を２値化し、その２値化した画像を出力２値画像１９９９として出力する。
ここで、０〜２５５の値にマッピングされたアフィン変換後の画素値をＦとする。２値化出力をＨとする。２値化モジュール１９８０は、（２２）式を用いて２値化を行う。なお、Ｈ＝０が白、Ｈ＝１が黒とする。
【数２２】
2011119824.tif 000024
【００３５】
＜３．２．  第２の実施の形態＞
前述の第１の実施の形態では、閾値算出モジュール１９７０では、累積頻度分布の値が目標黒画素数に近い画素値をＴＨとして求めており、２値化モジュール１９８０では、（１８）式の演算を行って２値画像を出力するようにしている。このような場合に、次のような現象が起きる場合がある。
図２１に示す例は、目標画素数より小さい累積頻度分布の値をもつ画素値のうち、目標画素数に最も近い累積頻度分布の値をもつ画素値Ｆ１と、目標画素数より大きい累積頻度分布の値をもつ画素値のうち、目標画素数に最も近い累積頻度分布の値をもつ画素値Ｆ２との、累積頻度分布の値の差が激しい場合である。このような場合、閾値ＴＨをＦ１とすると目標黒画素数を大きく下回ってしまうこととなる。逆にＴＨをＦ２とすると目標黒画素数を大きく上回ってしまうこととなる。
このような場合に対処するため、次の動作を行う。
閾値算出モジュール１９７０では、累積頻度分布の値が目標黒画素数よりも大きく、かつ、累積頻度分布の値が目標黒画素数に近い画素値をＴＨとして算出する。図２１に示した例では、ＴＨ＝Ｆ２である。なお、Ｆ１は、閾値ＴＨよりも１低い画素値である。
【００３６】
そして、２値化モジュール１９８０では、閾値算出モジュール１９７０によって算出された閾値とアフィン変換モジュール１９４０によってアフィン変換された画像の画素値との比較によって２値化し、その閾値と画素値が同じ場合は、目標黒画素数算出モジュール１９３０によって算出された目標黒画素数に基づいて、画素値の画素を２値化する。例えば、その閾値と画素値が同じ場合は、目標黒画素数算出モジュール１９３０によって算出された目標黒画素数と閾値と画素値が同じ画素の画素数に基づいて、その画素値の画素を２値化するようにしてもよい。そして、その閾値と画素値が同じ場合の２値化は、誤差拡散、距離変換を行って黒画素の塊の外側から削って行くように２値化を行うようにしてもよい。
より具体的には、例えば、（２３）式にしたがって２値化処理を行う。
【数２３】
2011119824.tif 000025
Ｆ＝ＴＨの場合には、画素値が閾値ＴＨである画素の一部を黒画素とし、残りを白画素とする。以下、Ｆ＝ＴＨの場合に限定した２値化モジュール１９８０の処理を示す。
目標黒画素数から、Ｆ＝Ｆ１の場合の累積頻度を引くと、Ｆ＝ＴＨのときに何画素黒画素にしなければならないかが判明する。この画素数をＩ（画素値が閾値ＴＨである画素のうち黒画素とする画素数）とする。さらに、累積頻度分布モジュール１９６０で算出されているので、Ｆ＝Ｆ２となる画素数Ｊも判明している。
Ｆ＝ＴＨの場合には、Ｉ／Ｊの確率で黒画素、（Ｊ−Ｉ）／Ｊの確率で白画素となるように制御すればよい。
例えば、ランダムに選択してもよいし、Ｉ／Ｊを有理数Ｕ／Ｖ（ただし、Ｕ、Ｖは、できるだけ小さな自然数）で近似して、Ｕ個を続けて黒画素とした後に、Ｖ個を続けて白画素とする処理を繰り返してもよい。
あるいは、誤差拡散的に、Ｆ＝ＴＨの場合の濃度目標値をＩ／Ｊとして、誤差をＦ＝ＴＨの画素のみに拡散させてもよい。すなわち、初期値ｅ＝０として、適当な閾値ＴＨ２（例えば０．５）を定め、
ｅ＋Ｉ／Ｊ  ＞  ＴＨ２  のとき、Ｈ＝１とし、ｎｅｗ＿ｅ＝ｅ＋Ｉ／Ｊ−１を近隣のＦ＝ＴＨの画素に分散させる。
ｅ＋Ｉ／Ｊ  ≦  ＴＨ２  のとき、Ｈ＝０とし、ｎｅｗ＿ｅ＝ｅ＋Ｉ／Ｊを近隣のＦ＝ＴＨの画素に分散させる。
ここで、近隣のＦ＝ＴＨの画素とは、ラスタスキャンで次に出現するＦ＝ＴＨの画素であってもよいし、まだ２値化していない、同一行同一列で次に出現するＦ＝ＴＨの画素であってもよい。あるいは、斜め左下や、斜め右下で、次に出現するＦ＝ＴＨの画素であってもよい。
通常のＦｌｏｙｄ＆Ｓｔｅｉｎｂｅｒｇ方式の誤差拡散であれば、近隣の４画素へ拡散させる。次に出現する４番目のＦ＝ＴＨの画素まで拡散させるという手法もある。
【００３７】
一例として、以下の手法を示す。
図２２は、誤差拡散の例を示す説明図である。
まず図２２の例に示すように、Ｘは、２値化を行う対象画素とする。また、Ｆ＝ＴＨであるとする。Ａ，Ｂ，Ｃ，Ｄの画素のうち、Ｆ＝ＴＨであるものにＦｌｏｙｄ＆Ｓｔｅｉｎｂｅｒｇ方式と同じ係数で誤差を拡散させる。Ａ，Ｂ，Ｃ，Ｄの画素のうち、Ｆ＝ＴＨであるものが４画素とも無い場合、拡散できなかった誤差は、ラスタスキャンで次に出現したＦ＝ＴＨの画素に拡散させる。そのときの係数は、拡散できなかった係数のうち、大きなものから順に使用する。
Ｆｌｏｙｄ＆Ｓｔｅｉｎｂｅｒｇ方式の拡散係数を図２３の例に示す。なお、係数はこれ以外にも様々なものがあるため、これに限るものではない。
あるいは、２値画像の距離変換を行ってもよい。距離変換は、２値画像の黒画素の塊の外周からの距離を各画素の値とする変換である。Ｆ＝ＦＨとなる画素のうち、距離が小さい画素から白画素としていく。この手法によって、黒画素の塊の外側から削って行くようにしてもよい。
【００３８】
＜３．３．  その他の実施の形態＞
前述の実施の形態では、対象画像全体の濃度保存を行う処理を示した。
対象画像の部分毎の濃度保存でもよい。対象画像をブロックに分割して、ブロック毎に黒画素数を計測して、その黒画素数を保存する処理を行ってもよい。つまり、対象とする２値画像１９０１をブロックに分割する分割モジュールと２値化モジュール１９８０によって２値化された２値画像を合成して、２値画像１９０１のアフィン変換後の２値画像を生成する合成モジュールを付加してもよい。この場合、黒画素数計測モジュール１９１０とアフィン変換モジュール１９４０が対象とする２値画像は、分割モジュールによってブロックに分割された２値画像となる。
すなわち、図２４の例に示すように、分割モジュールは、対象画像である２値画像１９０１（図２４（ａ）参照）をブロックに分割する（図２４（ｂ）参照）。
分割したブロック画像（図２４（ｃ）参照）を図１９における対象の２値画像１９０１であるとする。
図１９の例に示す構成を用いて、出力２値画像１９９９を作成する。これを出力ブロック画像とする（図２４（ｄ）参照）。
複数のブロック画像（図２４（ｃ）参照）に対し、複数の出力ブロック画像（図２４（ｄ）参照）を生成する。個々の出力ブロック画像を生成するときに使用した閾値はそれぞれ独立に算出することになる。もちろん、ブロック毎の閾値は異なる値となる場合もあり、同じ値となる場合もある。
そして、合成モジュールは、２値化モジュール１９８０が複数生成した出力ブロック画像を合わせて、合成後の出力２値画像（図２４（ｅ）参照）を生成する。
【００３９】
前述の実施の形態では、対象２値画像の黒画素数を計数していたが、計数するのは白画素数でも構わないのは自明である。もちろん、目標黒画素数も目標白画素数とする。あるいは、対象２値画像の黒画素数又は白画素数を用いて平均濃度などを計測して用いてもよい。いずれにせよ、黒画素数と相互に変換可能な値であれば、同様の処理が可能である。
【００４０】
図２５を参照して、前述の実施の形態の画像処理装置のハードウェア構成例について説明する。図２５に示す構成は、例えば、パーソナルコンピュータ（ＰＣ）などによって構成されるものであり、スキャナ等のデータ読み取り部２５１７と、プリンタなどのデータ出力部２５１８を備えたハードウェア構成例を示している。
【００４１】
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２５０１は、前述の実施の形態において説明した各種のモジュール、すなわち、黒画素数計測モジュール１９１０、行列式算出モジュール１９２０、目標黒画素数算出モジュール１９３０等の各モジュールの実行シーケンスを記述したコンピュータ・プログラムにしたがった処理を実行する制御部である。
【００４２】
ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２５０２は、ＣＰＵ２５０１が使用するプログラムや演算パラメータ等を格納する。ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２５０３は、ＣＰＵ２５０１の実行において使用するプログラムや、その実行において適宜変化するパラメータ等を格納する。これらはＣＰＵバスなどから構成されるホストバス２５０４により相互に接続されている。
【００４３】
ホストバス２５０４は、ブリッジ２５０５を介して、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ／Ｉｎｔｅｒｆａｃｅ）バスなどの外部バス２５０６に接続されている。
【００４４】
キーボード２５０８、マウス等のポインティングデバイス２５０９は、操作者により操作される入力デバイスである。ディスプレイ２５１０は、液晶表示装置又はＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）などがあり、各種情報をテキストやイメージ情報として表示する。
【００４５】
ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）２５１１は、ハードディスクを内蔵し、ハードディスクを駆動し、ＣＰＵ２５０１によって実行するプログラムや情報を記録又は再生させる。ハードディスクには、受け付けた画像、画素数の計数結果、２値化の閾値、出力画像などが格納される。さらに、その他の各種のデータ処理プログラム等、各種コンピュータ・プログラムが格納される。
【００４６】
ドライブ２５１２は、装着されている磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリ等のリムーバブル記録媒体２５１３に記録されているデータ又はプログラムを読み出して、そのデータ又はプログラムを、インタフェース２５０７、外部バス２５０６、ブリッジ２５０５、及びホストバス２５０４を介して接続されているＲＡＭ２５０３に供給する。リムーバブル記録媒体２５１３も、ハードディスクと同様のデータ記録領域として利用可能である。
【００４７】
接続ポート２５１４は、外部接続機器２５１５を接続するポートであり、ＵＳＢ、ＩＥＥＥ１３９４等の接続部を持つ。接続ポート２５１４は、インタフェース２５０７、及び外部バス２５０６、ブリッジ２５０５、ホストバス２５０４等を介してＣＰＵ２５０１等に接続されている。通信部２５１６は、ネットワークに接続され、外部とのデータ通信処理を実行する。データ読み取り部２５１７は、例えば、スキャナであり、ドキュメントの読み取り処理を実行する。データ出力部２５１８は、例えば、プリンタであり、ドキュメントデータの出力処理を実行する。
【００４８】
なお、図２５に示す画像処理装置のハードウェア構成は、１つの構成例を示すものであり、本実施の形態は、図２５に示す構成に限らず、本実施の形態において説明したモジュールを実行可能な構成であればよい。例えば、一部のモジュールを専用のハードウェア（例えば、特定用途向け集積回路（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：ＡＳＩＣ）等）で構成してもよく、一部のモジュールは外部のシステム内にあり通信回線で接続しているような形態でもよく、さらに図２５に示すシステムが複数互いに通信回線によって接続されていて互いに協調動作するようにしてもよい。また、複写機、ファックス、スキャナ、プリンタ、複合機（スキャナ、プリンタ、複写機、ファックス等のいずれか２つ以上の機能を有している画像処理装置）などに組み込まれていてもよい。
【００４９】
なお、前述の実施の形態においては、数式を用いて説明したが、数式には、その数式と同等のものが含まれる。同等のものとは、その数式そのものの他に、最終的な結果に影響を及ぼさない程度の数式の変形、又は数式をアルゴリズミックな解法で解くこと等が含まれる。
また、前述の各種の実施の形態を組み合わせてもよく（例えば、ある実施の形態内のモジュールを他の実施の形態内に適用する、入れ替えする等も含む）、各モジュールの処理内容として背景技術で説明した技術を採用してもよい。
【００５０】
なお、説明したプログラムについては、記録媒体に格納して提供してもよく、また、そのプログラムを通信手段によって提供してもよい。その場合、例えば、前記説明したプログラムについて、「プログラムを記録したコンピュータ読み取り可能な記録媒体」の発明として捉えてもよい。
「プログラムを記録したコンピュータ読み取り可能な記録媒体」とは、プログラムのインストール、実行、プログラムの流通などのために用いられる、プログラムが記録されたコンピュータで読み取り可能な記録媒体をいう。
なお、記録媒体としては、例えば、デジタル・バーサタイル・ディスク（ＤＶＤ）であって、ＤＶＤフォーラムで策定された規格である「ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ−ＲＡＭ等」、ＤＶＤ＋ＲＷで策定された規格である「ＤＶＤ＋Ｒ、ＤＶＤ＋ＲＷ等」、コンパクトディスク（ＣＤ）であって、読出し専用メモリ（ＣＤ−ＲＯＭ）、ＣＤレコーダブル（ＣＤ−Ｒ）、ＣＤリライタブル（ＣＤ−ＲＷ）等、ブルーレイ・ディスク（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ（登録商標））、光磁気ディスク（ＭＯ）、フレキシブルディスク（ＦＤ）、磁気テープ、ハードディスク、読出し専用メモリ（ＲＯＭ）、電気的消去及び書換可能な読出し専用メモリ（ＥＥＰＲＯＭ）、フラッシュ・メモリ、ランダム・アクセス・メモリ（ＲＡＭ）等が含まれる。
そして、前記のプログラム又はその一部は、前記記録媒体に記録して保存や流通等させてもよい。また、通信によって、例えば、ローカル・エリア・ネットワーク（ＬＡＮ）、メトロポリタン・エリア・ネットワーク（ＭＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、インターネット、イントラネット、エクストラネット等に用いられる有線ネットワーク、あるいは無線通信ネットワーク、さらにこれらの組み合わせ等の伝送媒体を用いて伝送させてもよく、また、搬送波に乗せて搬送させてもよい。
さらに、前記のプログラムは、他のプログラムの一部分であってもよく、あるいは別個のプログラムと共に記録媒体に記録されていてもよい。また、複数の記録媒体に分割して
記録されていてもよい。また、圧縮や暗号化など、復元可能であればどのような態様で記録されていてもよい。
【符号の説明】
【００５１】
１９０１…２値画像
１９０２…変形量Ａ
１９０３…シフト量ｔ
１９１０…黒画素数計測モジュール
１９２０…行列式算出モジュール
１９３０…目標黒画素数算出モジュール
１９４０…アフィン変換モジュール
１９５０…頻度分布モジュール
１９６０…累積頻度分布モジュール
１９７０…閾値算出モジュール
１９８０…２値化モジュール
１９９９…出力２値画像
【図１】
2011119824.tif 000026
【図２】
2011119824.tif 000027
【図３】
2011119824.tif 000028
【図４】
2011119824.tif 000029
【図５】
2011119824.tif 000030
【図６】
2011119824.tif 000031
【図７】
2011119824.tif 000032
【図８】
2011119824.tif 000033
【図９】
2011119824.tif 000034
【図１０】
2011119824.tif 000035
【図１１】
2011119824.tif 000036
【図１２】
2011119824.tif 000037
【図１３】
2011119824.tif 000038
【図１４】
2011119824.tif 000039
【図１５】
2011119824.tif 000040
【図１６】
2011119824.tif 000041
【図１７】
2011119824.tif 000042
【図１８】
2011119824.tif 000043
【図１９】
2011119824.tif 000044
【図２０】
2011119824.tif 000045
【図２１】
2011119824.tif 000046
【図２２】
2011119824.tif 000047
【図２３】
2011119824.tif 000048
【図２４】
2011119824.tif 000049
【図２５】
2011119824.tif 000050