(57)【要約】【課題】文書画像中の文字列の行間隔から、埋め込まれた透かし情報をより高精度に抽出する。【解決手段】文書画像を画像データとして入力する入力手段と、入力した前記画像データから第１の方向に対して縮小された縮小画像データを生成する画像縮小手段と、該画像縮小手段で生成された縮小画像データを、ローパスフィルタを用いて平滑化するフィルタ手段と、該フィルタ手段による平滑化後の縮小画像データを前記第１の方向と予め定められた関係にある第２の方向に走査し、当該第２の方向に連続する非有意画素の領域の長さを行間隔として検出する検出手段と、該検出手段で検出した文字列の行間隔に基づき、前記文書画像に埋め込まれた透かし情報を抽出する抽出手段とを備える。【選択図】図１０
2008301284.tif 000002
【特許請求の範囲】
【請求項１】
文書画像を入力し、当該文書画像中の文字列の行間隔から、埋め込まれた透かし情報を抽出する画像処理装置であって、
文書画像を画像データとして入力する入力手段と、
入力した前記画像データから第１の方向に対して縮小された縮小画像データを生成する画像縮小手段と、
該画像縮小手段で生成された縮小画像データを、ローパスフィルタを用いて平滑化するフィルタ手段と、
該フィルタ手段による平滑化後の縮小画像データを前記第１の方向と予め定められた関係にある第２の方向に走査し、当該第２の方向に連続する非有意画素の領域の長さを行間隔として検出する検出手段と、
該検出手段で検出した文字列の行間隔に基づき、前記文書画像に埋め込まれた透かし情報を抽出する抽出手段と
を備えることを特徴とする画像処理装置。
【請求項２】
前記フィルタ手段は、さらに、
前記ローパスフィルタで平滑化された縮小画像データに対し２値化処理を行うことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記画像縮小手段は、更に、前記画像データから前記第１と直交した方向に対して縮小した第２の縮小画像データを生成し、
前記検出手段で有効な行間隔が検出されなかった場合、
前記フィルタ手段は、該第２の縮小画像データを、ローパスフィルタを用いて平滑化し、
前記検出手段は、該平滑化後の第２の縮小画像データを前記第１の方向に走査し、当該第１の方向に連続する非有意画素の領域の長さを行間隔として検出し、
前記抽出手段は、該検出された文字列の行間隔に基づき、前記文書画像に埋め込まれた透かし情報を抽出することを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
文書画像を入力し、当該文書画像中の文字列の行間隔から、埋め込まれた透かし情報を抽出する画像処理装置の制御方法であって、
文書画像を画像データとして入力する入力工程と、
入力した前記画像データから第１の方向に対して縮小された縮小画像データを生成する画像縮小工程と、
該画像縮小工程で生成された縮小画像データを、ローパスフィルタを用いて平滑化するフィルタ工程と、
該フィルタ工程による平滑化後の縮小画像データを前記第１の方向と予め定められた関係にある第２の方向に走査し、当該第２の方向に連続する非有意画素の領域の長さを行間隔として検出する検出工程と、
該検出工程で検出した文字列の行間隔に基づき、前記文書画像に埋め込まれた透かし情報を抽出する抽出工程と
を備えることを特徴とする制御方法。
【請求項５】
更に、
前記画像データから前記第１と直交した方向に対して縮小した第２の縮小画像データを生成する工程と、
前記検出工程で有効な行間隔が検出されなかった場合、
該第２の縮小画像データを、ローパスフィルタを用いて平滑化する工程と、
該平滑化後の第２の縮小画像データを前記第１の方向に走査し、当該第１の方向に連続する非有意画素の領域の長さを行間隔として検出する工程と、
該検出された文字列の行間隔に基づき、前記文書画像に埋め込まれた透かし情報を抽出する工程と、
を備えることを特徴とする請求項４に記載の制御方法。
【請求項６】
請求項４または請求項５に記載の画像処理装置の制御方法の各工程をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文書画像中の文字列の行間隔に基づき当該文書画像に埋め込まれた透かし情報を抽出する画像処理技術に関するものである。
【背景技術】
【０００２】
文書画像に著作権や複写制御等の情報を持たせるため、非特許文献１の１９８ページ〜１９９ページの記載に示されるように、行間隔を利用して情報を埋め込む方法（以下、行間透かしと呼ぶ。）が知られている。図２は、行間透かしの概念を示す図である。行間透かしを用いた文書画像から埋め込まれた情報を抽出する場合には、まず当該文書画像内の文字列間の行間隔を求めることになる。行間隔を求めるため、一般的には文書画像に対して全走査を行いヒストグラムを求め、当該ヒストグラムから行間隔を導出する。そして、導出された行間隔と埋め込み時に使用した規則とに従って情報を抽出する。規則とは、例えば、図２に示すように、２値情報の「０」を埋め込みたい場合は行間隔Ｕ，Ｄに対しＵ＞Ｄとなるよう設定することである。一方、２値情報の「１」を埋め込みたい場合は行間隔Ｕ，Ｄに対しＵ＜Ｄとなるよう設定する。
【非特許文献１】松井甲子雄著  「電子透かしの基礎」  森北出版株式会社  １９９８年
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上述の行間透かしを用いた文書画像から埋め込まれた情報を抽出する方法においては以下の問題点がある。すなわち、行間隔を測定するために、文書画像に対して全走査を行い、ヒストグラムを求める必要があり、情報抽出処理に時間がかかる。特に埋め込む情報が複製制御情報の場合、複写機内で複写制御情報を抽出し、抽出した情報から複写可能か否かの判断を行い、その後、複写処理を行うため、一枚の文書を複写する一連の処理にかなりの時間を有することになる。
【０００４】
また、入力された文書画像の文字列がアルファベットを含む場合、ベースラインからのはみ出しなどにより精度の高い行間隔の導出が困難であるという問題があった。
【課題を解決するための手段】
【０００５】
上述の問題点の少なくとも１つを解決するため、本発明の画像処理装置は以下の構成を備える。すなわち、文書画像を入力し、当該文書画像中の文字列の行間隔から、埋め込まれた透かし情報を抽出する画像処理装置であって、文書画像を画像データとして入力する入力手段と、入力した前記画像データから第１の方向に対して縮小された縮小画像データを生成する画像縮小手段と、該画像縮小手段で生成された縮小画像データを、ローパスフィルタを用いて平滑化するフィルタ手段と、該フィルタ手段による平滑化後の縮小画像データを前記第１の方向と予め定められた関係にある第２の方向に走査し、当該第２の方向に連続する非有意画素の領域の長さを行間隔として検出する検出手段と、該検出手段で検出した文字列の行間隔に基づき、前記文書画像に埋め込まれた透かし情報を抽出する抽出手段とを備える。
【０００６】
上述の問題点の少なくとも１つを解決するため、本発明の画像処理装置の制御方法は以下の構成を備える。すなわち、文書画像を入力し、当該文書画像中の文字列の行間隔から、埋め込まれた透かし情報を抽出する画像処理装置の制御方法であって、文書画像を画像データとして入力する入力工程と、入力した前記画像データから第１の方向に対して縮小された縮小画像データを生成する画像縮小工程と、該画像縮小工程で生成された縮小画像データを、ローパスフィルタを用いて平滑化するフィルタ工程と、該フィルタ工程による平滑化後の縮小画像データを前記第１の方向と予め定められた関係にある第２の方向に走査し、当該第２の方向に連続する非有意画素の領域の長さを行間隔として検出する検出工程と、該検出工程工程で検出した文字列の行間隔に基づき、前記文書画像に埋め込まれた透かし情報を抽出する抽出工程とを備える。
【発明の効果】
【０００７】
本発明によれば、文書画像中の文字列の行間隔に基づいて文書画像に埋め込まれた透かし情報をより効率的に抽出可能とする技術を提供することができる。
【発明を実施するための最良の形態】
【０００８】
以下に、図面を参照して、この発明の好適な実施の形態を詳しく説明する。なお、以下の実施の形態はあくまで例示であり、本発明の範囲を限定する趣旨のものではない。
【０００９】
（第１実施形態）
本発明に係る画像処理装置の第１実施形態として、紙の文書原稿を画像読取装置（スキャナ）で読み込み、読み込んだ文書画像データに対し透かし情報の抽出を行う画像処理装置を例に挙げて以下に説明する。
【００１０】
＜装置構成＞
図１は、第１実施形態における画像処理装置１１の主要な機能構成を示すブロック図である。図１に示すように、画像処理装置１１は、画像入力部１０１、画像縮小部１０２、情報抽出部１０３、フィルタ処理部１０４、制御部１１０、操作部１１１から構成される。
【００１１】
画像入力部１０１は、上述の透かし情報の埋め込まれた文書画像に対応する画像データを入力する機能部である。具体的には、外部のスキャナにより読み取られ生成された紙の文書原稿に基づいた画像データをＵＳＢなどの外部機器接続用インタフェースにより入力する。もちろん、イーサネット（登録商標）などのネットワークを介して画像データを入力するよう構成してもよい。
【００１２】
画像縮小部１０２は、画像入力部１０１により入力された画像データに対し、第１の方向（たとえば画像の水平方向）と、第１の方向と直交する第２の方向（たとえば画像の垂直方向）へそれぞれ縮小する機能部である。入力された画像データがビットマップ（ラスタ）形式である場合、一般的には、上述の第１および第２の方向は画像データを構成する画素の配列方向と一致する。なお、ここでは直交する２つの方向に縮小する構成であると説明したが、後述するように、１つの方向のみに縮小する構成としてもよい。
【００１３】
フィルタ処理部１０４は、画像データに対しフィルタ処理を実行する機能部である。フィルタ動作の詳細については後述する。
【００１４】
情報抽出部１０３は、画像縮小部１０２により生成された縮小画像データから、透かし情報に対応するバイナリ（２値）情報を抽出する機能部である。具体的には、画像縮小部１０２により生成された縮小画像データに対し、有意画素の有無を検出することにより実行される。そして、有意画素が検出された部分を文字列領域として判定し、有意画素が検出されない領域を行間部分として判定する。そして、行間部分として判定された複数の行間それぞれに対応する長さ（連続する画素数）に基づいて、各行間に対応する２値（０または１）を決定する。なお、行間部分の長さと２値との対応や情報量（ビット数）などの、透かし情報の埋め込みアルゴリズムについては、予め情報抽出部１０３に設定されているものとする。
【００１５】
制御部１１０は、上述の各機能部が連係して動作するよう制御するための機能部である。また、操作部１１１はユーザからの指示を受け付けるための機能部である。なお、上述の各機能部の動作の詳細については後述する。
【００１６】
＜透かし情報の埋め込まれた画像データ＞
第１実施形態では、透かし情報の埋め込みアルゴリズムは以下の通りであるとして説明する。もちろん、文字列の行間隔に基づいて透かし情報を埋め込むものであれば、他のアルゴリズムであっても適用可能である。
【００１７】
図２は、透かし情報が埋め込まれた文書原稿を例示的に示す図である。図２においては、白色の用紙に黒色で文字が記録されている。また、複数の行からなる文字列のそれぞれの間隔（行間隔）についてＵ，Ｄの２種類を用いて、２値情報を埋め込んでいる。具体的には、連続する２つの行間（ＵｎおよびＤｎ：ｎは自然数）に対して、以下のように行間を設定する。
【００１８】
「０」を埋め込む場合：  Ｕｎ＞Ｄｎ
「１」を埋め込む場合：  Ｕｎ＜Ｄｎ
そして、当該透かし情報入り文書原稿は、電荷結合素子（ＣＣＤ）などの光学センサを有するスキャナにより読み取られ、画像データＩが生成される。ここでは、生成された文書画像データＩは、紙原稿の文字部分が黒、背景部分が白である２値画像であるとして説明する。なお、以降では文字部分に対応する”黒画素”のことを”有意画素”と呼ぶこともある。
【００１９】
図３は、透かし情報の埋め込まれた２値画像データを例示的に示す図である。なお、画像データの水平方向の画素数はＷ０、垂直方向の画素数はＨ０とする。ここで、図３（ａ）は、横書きの文字原稿が正しい方向で記録された画像データを示している。一方、図３（ｂ）と図３（ｃ）とは傾きのある文書画像である。上述のように紙の文書原稿をスキャナにより読み取る際には、基準方向とのずれやユーザによる紙原稿配置のミスなどにより、図３（ｂ）と図３（ｃ）のような画像データが入力されることがある。
【００２０】
＜装置の動作＞
以下、画像処理装置１１が、画像データＩから透かし情報を抽出する動作をフローチャートを参照して詳細に説明する。
【００２１】
図１０は、第１実施形態に係る画像処理装置１１の動作フローチャートである。なお、以下のフローはたとえばユーザによる操作部１１１を介した画像読取指示をトリガに実行される。
【００２２】
ステップＳ１００１では、画像入力部１０１は、透かし情報入り文書画像に対応する画像データＩをスキャナから受信し、画像データＩを画像縮小部１０２に供給する。
【００２３】
ステップＳ１００２では、画像縮小部１０２は、画像入力部１０１より供給された画像データＩを水平方向と垂直方向へそれぞれ縮小し、水平方向の縮小画像データＩｓｈ、垂直方向の縮小画像データＩｓｖを生成する。そして、縮小画像データＩｓｈおよび縮小画像データＩｓｖをフィルタ処理部１０４に供給する。
【００２４】
図４は、画像データＩを水平方向に縮小した縮小画像データＩｓｈ、および、垂直方向へ縮小した縮小画像データＩｓｖの例を示す図である。なお、図４（ａ）は図３（ａ）の文書画像、図４（ｂ）は図３（ｂ）の文書画像、図４（ｃ）は図３（ｃ）の文書画像のそれぞれに基づいて生成した縮小画像データである。なお、縮小画像データＩｓｈの水平方向の画素数はＷ１（１＜Ｗ１＜Ｗ０）、垂直方向の画素数はＨ０とする。縮小画像データＩｓｖの水平方向の画素数はＷ０、垂直方向の画素数はＨ１（１＜Ｈ１＜Ｈ０）とする。なお、縮小画像Ｉｓｈ、Ｉｓｖを生成する際の縮小率は、入力された画像データに対し解像度情報検出を行い当該解像度情報に基づいて決定すると好適である。
【００２５】
なお、ここで、水平・垂直の２つの方向に対して縮小画像を生成するのは、図３（ｃ）に示すように９０度傾きのある画像データＩが入力された場合に対応するためである。このような状況は、スキャナによる読み取りではしばしば発生する。そのため、あらかじめ画像データＩの入力方向が保障されている場合は、文字列方向に対応する１方向のみに縮小を行うよう構成してもよい。
【００２６】
図４から、画像縮小部１０２による縮小により、文字列方向に縮小した縮小画像に対しては、複数の文字列が複数の有意画素の固まり（オブジェクト）として表現されることがわかる。以下、当該縮小画像の生成についてさらに詳しく説明する。
【００２７】
画像縮小部１０２が実行する縮小処理の具体的な計算手法としては、入力された画像データに対し単に一定周期での画素の間引きによる縮小が考えられる。しかし、文字列部分と行間部分とをより正確に識別するために、以下のようなバイリニア法を利用した計算を行うとよい。
【００２８】
バイリニア法では、画像データＩの中の近接する４つの画素の画素値に基づいて、対応する縮小画像データの画素の画素値を算出する。この場合、４つの画素の少なくとも１つが黒である場合計算結果は中間調（グレー）となる（図５左）。具体的には、白を０黒を１として演算した結果が０より大きく１より小さい値となる。
【００２９】
行間部分には有意画素である黒画素は存在しないため、１つでも黒画素が存在する場合、当該近接する４つの画素の存在する部分は文字列領域であると推定できる。そのため、中間調として算出された部分を有意画素である黒へと変換させる（図５右）ことにより、文字列領域と行間領域とをより高精度に分割することができる。つまり、文字列領域には有意画素が存在しない場合がある（画数の少ない文字など）が、行間領域には有意画素は一般に存在することは無いことを利用しているのである。なお、この２値化処理をステップＳ１００２で実行せず、後述するステップＳ１００３における２値化処理のみ実行するよう構成してもよい。
【００３０】
なお、画像縮小部１０２による水平・垂直方向への縮小率は、オブジェクトが認識できる程度の大きさとなる縮小率であればよい。具体的な縮小率の値は予め指定した固定値としてもよいし、入力された画像データの付加データ（スキャナによる読取解像度情報など）に基づいて随時決定してもよい。また、ここでは縮小画像を生成するアルゴリズムの一例としてバイリニア法を適用したが、本発明はこれに限定されることはない。ニアレストレイバー、バイキュービックなど、種々の計算手法を利用して縮小可能である。
【００３１】
ステップＳ１００３では、フィルタ処理部１０４は、以下に説明するフィルタ処理を縮小画像データＩｓｈに対して実行する。
【００３２】
図１７は、アルファベットを含む文書画像から生成された縮小画像データＩｓｈを例示的に示す図である。アルファベットを含む文書画像特有の現象として、図１７のように、縮小画像の行オブジェクトの上下に「ひげ」のような領域が出現することがあげられる。これは、英文の場合、以下の３つの特徴があるためである。
【００３３】
（１）各単語の先頭が大文字で残りが小文字になっている。
【００３４】
（２）ｂ、ｄなど、他の小文字の高さに加えて突き出ている部分（アセンダと呼ばれる）がある文字がある。
【００３５】
（３）ｇ，ｊのように、ベースラインより下に突き出ている部分（ディセンダと呼ばれる）がある文字がある。
【００３６】
こうした「ひげ」が存在すると、「ひげ」が存在する部分と存在しない部分で行オブジェクトの高さにばらつきが生じるため、行間隔を求める際に誤差が生ずる。そのため、フィルタ処理部１０４で以下の１と２のフィルタ処理を行う。
【００３７】
・１．  平滑化フィルタ（ローパスフィルタ）処理
まず、「ひげ」と「ひげ」の間を画素で補完するために平滑化フィルタをかける。平滑化フィルタの例として、本実施形態ではメディアンフィルタを用いる。メディアンフィルタは、通常、注目画素の周辺３ｘ３や５ｘ５をフィルタ（ウインドウ）サイズとし、フィルタサイズ内の画素の分布を調べ、中央値を注目画素の新たな画素値とするフィルタである。
【００３８】
・２．  ２値化処理
平滑化後の画像は、一般に２値画像では無くより多諧調のグレースケール画像となる。そこで、グレー部分を黒へと変換させるために、白画素以外の画素をすべて黒画素に変換する２値化処理を行う。たとえば、８ビットグレースケール画像において、白画素の画素値を２５５、黒画素の画素値を０とした場合、
画素値が０の場合  −＞  ０
画素値が０より大きい場合  −＞  １
という規則で２値化処理を行う。
【００３９】
図１８は、図１７に示した縮小画像データＩｓｈに対し平滑化フィルタ処理および２値化処理を施した結果を示す図である。図から分かるように、平滑化フィルタ処理と２値化処理によって、「ひげ」が存在する場合であっても、より文字列対応部分が明確化された画像が得られていることが分かる。
【００４０】
ステップＳ１００４では、情報抽出部１０３は、フィルタ処理部１０４より供給された縮小画像データの１つを用いて各文字列領域間の長さ（行間隔）を計測する。ここでは、水平方向に縮小した縮小画像データＩｓｈに対して計測するものとする。具体的な計測方法は以下の通りである。
【００４１】
図６は、縮小画像データＩｓｈの拡大図である。まず、情報抽出部１０３は、縮小画像データＩｓｈに対し縮小方向（ここでは水平方向）と直交する方向（ここでは垂直方向）へ、走査を行うことにより有意画素の有無を検出する。そして、有意画素／非有意画素が反転する位置を文字列領域を行間領域との境界として決定する。
【００４２】
たとえば、図６における矢印に沿って反転位置を検出した場合、ｘ１〜ｘ１０の各画素位置が検出されることになる。このとき、行間隔であるＵ１、Ｄ１、Ｕ２、Ｄ２のそれぞれの長さは、Ｕ１＝ｘ３−ｘ２、Ｄ１＝ｘ５−ｘ４、Ｕ２＝ｘ７−ｘ６、Ｄ２＝ｘ９−ｘ８である（単位は画素（ｐｉｘ））。
【００４３】
前述のように、ステップＳ１００２における縮小処理の結果、文字列領域が文字の並び方向に縮小されると同時に、中間調部分が有意画素に変換されている。そのため、文字列領域における有意画素（ここでは黒）の密度が結果的に高くなっている。その結果、情報抽出部１０３は、文字列領域と行間領域との境界をより高精度に検出可能であり、行間隔を高精度に計測可能である。
【００４４】
なお、上述の方法は、縮小画像データＩｓｈが図４（ｂ）に示すよう多少傾いている場合においても有効である。図８は、図４（ｂ）の縮小画像データＩｓｈに対する走査を例示的に示す図である。この場合、矢印に沿った行間隔の長さは、図６の場合とは異なる結果となる。具体的には、文字列の傾きθ（度）としたとき、長さが１／ｃｏｓθ倍になる。ただし、各行間隔の相対的長さ関係は変化しない。
【００４５】
なお、図６に示したように縮小画像データ内のオブジェクトが理想的な形状（つまり矩形）をしている場合は、一般的には１回の走査で十分である。しかし、図１８に示したような縮小画像データ内のオブジェクトに対しより高精度に検出を行うときには、縮小した画像に対して、複数の走査を行うことが有効である。
【００４６】
図７は、縮小画像データＩｓｈに対し複数回の走査を実行する様子を例示的に示す図である。図７では、黒色オブジェクトで示される文字列部分が、より現実の縮小画像データに近いものとして示している。つまり、図６のような理想的な矩形オブジェクトでは無く、走査位置によってオブジェクト間（行間隔）の計測値が微妙に異なることになる。
【００４７】
例えば、図７に示すように走査位置を３箇所（矢印（１）（２）（３））行った場合を考える。ここで、黒画素から白画素、または白画素から黒画素に変化する点の座標値をｙｉｊとする。ここで、図７に示されるように、ｉは走査位置（矢印）に対応づけられた添え字で、（１）ならｉ＝１，（２）ならｉ＝２，（３）ならｉ＝３とする。また、ｊはそれぞれの走査位置に対し、最上部で黒画素から白画素に変化する点を起点として、白／黒が反転する座標を上から順番につけた番号とする。図７における、走査結果が、
（１）  ｙ１１＝２０，  ｙ１２＝３０，  ｙ１３＝４３，  ｙ１４＝５４
（２）  ｙ２１＝１８，  ｙ２２＝３１，  ｙ２３＝４４，  ｙ２４＝５２
（３）  ｙ３１＝２１，  ｙ３２＝３２，  ｙ３３＝３９，  ｙ３４＝５３
であったとする。
【００４８】
次に、以下の規則にしたがって同一のｊを持つ複数の座標から１つの座標を選び出す。
【００４９】
奇数のｊを持つ座標からは、同一のｊを持ち、異なるｉを持つ複数の座標値の中で最大のものを選択。
【００５０】
偶数のｊを持つ座標からは、同一のｊを持ち、異なるｉを持つ複数の座標値の中で最小のものを選択。
【００５１】
つまり、黒画素から白画素に変化する場合はなるべく下方に位置する点をオブジェクトの下部の境界と判断し、白画素から黒画素に変化する場合はなるべく上方に位置する点を上部の境界と判断するのである。
そして、選択された座標値からオブジェクト間距離を求める。
【００５２】
その結果、図の例の場合、オブジェクト間距離Ｕ１，Ｄ１はそれぞれ、
Ｕ１  ＝  ３０−２１  ＝  ９［ｐｉｘ］
Ｄ１  ＝  ５２−４４  ＝  ８［ｐｉｘ］
となる。
【００５３】
Ｕ２とＤ２も同様に、ｊ＝５，６，７，８の座標から求める。
【００５４】
ステップＳ１００５では、情報抽出部１０３は、ステップＳ１００３で導出した行間隔に基づいて透かし情報を導出する。具体的には、情報抽出部１０３に予め設定された埋め込みアルゴリズムに対応させて透かし情報を算出する。例えば、
Ｕ１＝９［ｐｉｘ］、Ｄ１＝  ８［ｐｉｘ］、Ｕ２＝５［ｐｉｘ］、Ｄ２＝１０［ｐｉｘ］
であった場合、Ｕ１＞Ｄ１なので「０」、Ｕ２＜Ｄ２なので「１」、つまり、透かし情報は「０１（２進）」として導出される。
【００５５】
ただし、ステップＳ１００４で、図４（ｃ）に示す縮小画像データＩｓｈに対して計測した場合、オブジェクト間の距離を計測することができない。そのため、ステップＳ１００５で、透かし画像を抽出することができない。つまり、ステップＳ１００１において、９０度回転した状態で画像データＩが入力されていたため、縮小画像データＩｓｈは一般的に黒色のべた画像となってしまっているからである。
【００５６】
ステップＳ１００６では、制御部１１０は、ステップＳ１００４において情報が抽出できたか否かを判定する。情報が抽出できたか否かの判断は、例えば、Ｕｎ，Ｄｎが計測できた場合は、情報が抽出できたとし、Ｕｎ，Ｄｎが計測できなかった場合は抽出ができなかったと判定する。あるいは、予め設定された埋め込みアルゴリズムで規定された値以外の値が検出された場合に情報が抽出できなかったとする。また、読み取り結果に対して、予め指定された誤検出／未検出の判定を行うことにより決定してもよい。
【００５７】
ステップＳ１００７では、フィルタ処理部１０４は、ステップＳ１００３で説明したフィルタ処理を縮小画像データのもう１つに対して実行する。つまり、ここでは、垂直方向に縮小した縮小画像データＩｓｖ（第２の縮小画像データ）に対して計測するものとする。
【００５８】
ステップＳ１００８では、情報抽出部１０３は、フィルタ処理部１０４より供給された縮小画像データＩｓｖを用いて各文字列領域間の長さ（行間隔）を計測する。具体的な計測方法はステップＳ１００４と同様である。ただし、情報抽出部１０３は、縮小画像データＩｓｖに対し縮小方向（ここでは垂直方向）と直交する方向（ここでは水平方向）へ、走査を行うことにより有意画素の有無を検出することに注意する（図９）。
【００５９】
尚、ステップＳ１００４では、垂直方向に走査し、ステップＳ１００８では、水平方向に走査する例を示したが、ステップＳ１００４で水平方向に走査し、ステップＳ１００８で垂直方向に走査することにしてもよい。また、これら２つの方向（第１の方向と第２の方向）は、直交していることが望ましいが、必ずしも直交しなくてもよく、多少の傾きを有していても構わない。例えば、８５度回転方向や９５度回転方向であっても構わない。つまり、第１の方向と第２の方向は、実施形態の構成をシンプルにする上では、直交であることが望ましいが、ほぼ直交となるような予め決められた関係にあればよい。
【００６０】
ステップＳ１００９では、情報抽出部１０３は、ステップＳ１００８で導出した行間隔に基づいて透かし情報を導出する。具体的な計測方法はステップＳ１００５と同様である。
【００６１】
以上のような動作フローを経て、画像処理装置１１は、画像データＩから透かし情報を抽出する。
【００６２】
なお、上述の説明においては、図３に示したパターンの文書画像データであるとして説明した。つまり、ほぼ正常な方向か９０度回転入力される文書画像データであるとした。これらに加え、上下あるいは左右逆に入力される場合は、図６〜図９に示した走査方向に加え逆方向の走査も実行するよう構成するとよい。さらに、そのような状況が想定される場合には、透かし情報の埋め込みアルゴリズムとして読取開始方向に依存しないよう構成したアルゴリズムを用いることも好適である。
【００６３】
例えば、埋め込む情報が「１０１（２進）」や「１１０１０（２進）」で、スタートビットを「０」、ストップビットを「１１」とした場合、情報は、「０１０１１１（２進）」、「０１１０１０１１（２進）」となる。さらに、どちらからでも読み取りが可能なように「０１０１１１０００１０１（２進）」、「０１１０１０１１００１０１００１（２進）」のようにした情報を埋め込めば、上から下の走査１回のみで情報の抽出が可能である。なお、上記情報の後半部分がビット反転しているのは、判定条件が
「０」を埋め込む場合：  Ｕｎ＞Ｄｎ
「１」を埋め込む場合：  Ｕｎ＜Ｄｎ
の場合、反対方向から読むとＵｎとＤｎの順序が反対となり、ビット反転するためである。
【００６４】
また、上記とは別に、スタートビット、ストップビットを同じ「０」としておけば、埋め込む情報が「１０１（２進）」の場合は「００１０１０（２進）」となる。反対方向から読むと「１０１０１１（２進）」で、スタートビットが「１」となっている。よって、情報部分を反転させ「０１０１００（２進）」さらに反対方向に並べかえることにより「００１０１０（２進）」となり、抽出することができる。
【００６５】
なお、第１実施形態では、図２に示したような、透かし情報を１組（２つ）の行間隔の相対的長さに対応させて埋め込むアルゴリズムを用いて説明を行った。しかし、最初に述べたように本発明は、この埋め込みアルゴリズムに限定されることない。例えば、最初の行間隔（文字列の１行目と２行目との間）を基準として、２つ目（文字列の２行目と３行目との間）以降の行間隔を最初の行間隔との相対的長さに対応させて情報を埋め込むアルゴリズムなどでもよい。また、相対的行間隔による２値情報ではなく、行間隔に基づくより多値の情報を埋め込むようにしてもよい。つまり、行間隔を使用した任意の埋め込みアルゴリズム全般に対し有効な手法である。
【００６６】
以上説明したように、第１実施形態に係る画像処理装置によれば、より高精度にあるいはより高速に、透かし情報を抽出することが可能となる。また、入力された画像データが傾きを有していた場合であっても、煩雑な操作を行うことなく情報を抽出可能となる。
【００６７】
（第２実施形態）
第２実施形態では、第１実施形態とは異なるフィルタ処理部１０４の動作例について説明する。つまり、第１実施形態で説明したステップＳ１００３相当部分の動作のみが異なる例について説明する。その他の処理は第１実施形態と同様であるため説明は省略する。具体的には、第１実施形態では正方ウインドウを用いてメディアンフィルタを実行したが、ここでは、幅が縮小画像の水平方向画素数、高さが数ピクセルのウインドウを用いて以下の処理を実行する。ただし、垂直方向の画素数Ｈｗは１≦Ｈｗを満たす任意の値、水平方向の画素数Ｗｗは（１＜Ｗｗ≦Ｗ１）を満たす任意の値が利用可能である。
【００６８】
・ウインドウを縮小画像Ｉｓｈに対し１ピクセルずつずらしながら走査する。
【００６９】
・ウインドウ内に白画素以外の画素が１つでもあった場合、矩形内の画素をすべて黒画素に逐次変換する。つまり、ウインドウ内の全画素が白画素である場合のみ当該領域は白画素の領域と見なされる。
【００７０】
図１２は、ウインドウが縮小画像Ｉｓｈを走査している様子を示す図である。そして、図１３は、上述の画素置換処理による縮小画像の変化を示す図である。図１３における左図が処理前、右図が処理後の縮小画像データを示している。
【００７１】
このような、ウインドウを用いた画素置換を行うことにより、アルファベットを含む文書画像であっても、図６に示すような理想的な縮小画像を取得することが可能となり、より精度の高い情報抽出が可能となる。
【００７２】
（第３実施形態）
第３実施形態では、第１実施形態とは異なる情報抽出部１０３の動作例について説明する。つまり、第１実施形態で説明したステップＳ１００４相当部分の動作のみが異なる例について説明する。その他の処理は第１実施形態と同様であるため説明は省略する。具体的には、第１実施形態では複数のライン走査を用いて距離計測を実行したが、ここでは、幅が縮小画像の水平方向画素数、高さが数ピクセルのウインドウを用いて以下の処理を実行する。
【００７３】
なお、ここで高さを数ピクセル設ける理由は、図１４のように、元画像の文書に傾きがある場合でもオブジェクト間の距離を測定可能にするためである。ただし、矩形ウインドウの幅は２ピクセル以上であれば良く、高さは１ピクセル以上であれば後述の処理を行うことが可能である。
【００７４】
図１６は、矩形ウインドウを用いたオブジェクトの上部と下部の座標決定のフローチャートである。また、図１５は、矩形ウインドウが縮小画像Ｉｓｖ内のオブジェクトを走査している状態を示す図である。以下の処理は情報抽出部１０３が実行する。
【００７５】
ステップＳ１５０１では、矩形ウインドウ内の有意画素（黒画素）を検出する。
【００７６】
ステップＳ１５０２では、黒画素から白画素に遷移する境界が存在するかどうか判定する。つまり、矩形ウインドウ内の上方部分が黒画素、下方部分が白画素となる部分（ライン）が存在するか否かを判定する。存在すると判定すればステップＳ１５０３に、存在しないと判定すればステップＳ１５０４に進む。
【００７７】
ステップＳ１５０３では、オブジェクトの開始位置候補と判断し現在の矩形ウインドウが位置する縦の座標値を記録する。たとえば、矩形ウインドウの横方向画素数が１０画素の場合、
２１，  １９，  ２０，  ２１，  ２０，  ２０，  ２１，  ２０，  １９，  ２１
の１０個の座標が、黒画素から白画素に遷移した座標として記録される。
【００７８】
ステップＳ１５０４では、下方向に黒画素数が増加したか減少したかを判定し、その結果を記録する。
【００７９】
ステップＳ１５０５では、白画素から黒画素に遷移する境界が存在するかどうか判定する。存在すると判定した場合ステップＳ１５０７に、存在しないと判定した場合ステップＳ１５０６に進む。
【００８０】
ステップＳ１５０６では、矩形ウインドウを１画素下方に移動し、ステップＳ１５０１に戻る。
【００８１】
ステップＳ１５０７では、オブジェクトの終了位置候補と判断し現在の矩形ウインドウが位置する縦の座標値を記録する。たとえば、矩形ウインドウの横方向画素数が１０画素の場合、
３３，  ３２，  ３３，  ３１，  ３０，  ３０，  ３２，  ３３，  ３０，  ３２
の１０個の座標が、黒画素から白画素に遷移した座標として記録される。
【００８２】
ステップＳ１５０８では、ステップＳ１５０４で記録した黒画素数の増減を判定し、オブジェクトの開始位置候補から終了位置候補の間の区間で増加し、増加から減少に転じた場合、有効なオブジェクトと判定する。その際、ステップＳ１５０３およびステップＳ１５０５で求めた候補点のうち、開始位置からは最も上部の座標値を、終了位置からは最も下部の座標を、それぞれ、オブジェクトの開始位置・終了位置として確定する。上記の例の場合、オブジェクトの開始位置は１９，終了位置は３３となる。
【００８３】
このような、ウインドウを用いたオブジェクト位置の決定を行うことにより、アルファベットを含む文書画像であっても、より精度の高い情報抽出が可能となる。
【００８４】
（第４実施形態）
第４実施形態では、上述の実施形態とは異なり、文書画像中の文字列のベースライン間の間隔に基づいて埋め込まれた透かし情報情報抽出する場合について説明する。
【００８５】
図１９は、ベースライン間の間隔に基づいて透かし情報が埋め込まれた文書原稿を例示的に示す図である。ここでは、Ｕ１，Ｄ１，Ｕ２，Ｄ２はそれぞれ、ベースライン間の間隔を表している。他の、埋め込み規則は第１実施形態と同様である。また、第１実施形態におけるステップＳ１００３に相当するフィルタ処理についても同様に実施するものとする。
【００８６】
以下では、情報抽出部１０３の動作例について説明する。具体的には、第３実施形態と同じように、幅が縮小画像の水平方向画素数、高さが数ピクセルのウインドウを用いた処理について説明する。
【００８７】
図２０は、矩形ウインドウを用いて、２値化された縮小画像内のオブジェクトを走査している様子を示す図である。
【００８８】
図２１は、矩形ウインドウでオブジェクトのベースライン座標値を求めるフローチャートである。
【００８９】
ステップＳ２２０１では、矩形ウインドウ内の有意画素（黒画素）を検出する。
【００９０】
ステップＳ２２０２では、白画素から黒画素に遷移する境界が存在するかどうか判定する。つまり、矩形ウインドウ内の上方部分が白画素、下方部分が黒画素となる部分（ライン）が存在するか否かを判定する。存在すると判定すればステップＳ１５０４に、存在しないと判定すればステップＳ１５０３に進む。
【００９１】
ステップＳ２２０３では、矩形ウインドウを１画素下方に移動し、ステップＳ２２０１に戻る。
【００９２】
ステップＳ２２０４では、オブジェクトの終了位置候補と判断し現在の矩形ウインドウが位置する縦の座標値を記録する。たとえば、矩形ウインドウの横方向画素数が１０画素の場合、
３３，  ３２，  ３３，  ３１，  ３０，  ３０，  ３２，  ３３，  ３０，  ３２
の１０個の座標が、黒画素から白画素に遷移した座標として記録される。
【００９３】
ステップＳ２２０５では、ステップＳ２２０４で記録した縦の座標値の分布に基づいてベースライン位置の座標と判定する。例えば、縦の座標値の最頻値、平均値などが用いられる。上記の例において最頻値を利用する場合、オブジェクトのベースライン座標値は３０となる。
【００９４】
なお、ステップＳ２２０５におけるベースラインの判定において、ステップＳ２２０４で記録した境界の縦の座標値のうち、横方向に連続する黒画素数が最大になる座標をベースライン座標値と判定することも可能である。上記の例の場合、オブジェクトのベースライン座標値は３０となる。
【００９５】
さらに、急激に境界の座標値が増加し、数ピクセル連続したあと減少する場合、「ひげ」である確率が高い。そのため、それらの座標値をベースライン座標値の候補から除外するよう構成してもよい。上記の例の場合、７番目の３２と８番目の３３が除外すべき座標値となる。
【００９６】
（第５実施形態）
第５実施形態では、スキャナなどで読み取った文書画像をコンピュータ（ＰＣ）上で動作するプログラムにより、透かし情報の抽出を実行する形態について説明する。
【００９７】
＜機器構成＞
図１１は、ＰＣの内部構成を示す図である。
【００９８】
同図において、１１０１はＣＰＵで、ＲＡＭ１１０２やＲＯＭ１１０３に格納されているプログラムやデータに基づいて、図１に示した、機能ブロックの各部を実現する。
【００９９】
１１０２はＲＡＭで、外部記憶装置１１０８からロードされたプログラムやデータを記憶する。また、他のコンピュータシステム１１１４からＩ／Ｆ（インターフェース）１１１５を介してダウンロードしたプログラムやデータを一時的に記憶する。さらに、ＣＰＵ１１０１が各種の処理を行うために必要とするエリアを備える。
【０１００】
１１０３はＲＯＭで、コンピュータの機能プログラムや設定データなどを記憶する。１１０４はディスプレイ制御装置で、画像や文字等をディスプレイ１１０５に表示させるための制御処理を行う。１１０５はディスプレイで、画像や文字などを表示する。なお、ディスプレイとしてはＣＲＴや液晶画面などが適用可能である。
【０１０１】
１１０６は操作入力デバイスで、キーボードやマウスなど、ＣＰＵ１１０１に各種の指示を入力することのできるデバイスにより構成されている。１１０７は操作入力デバイス１１０６を介して入力された各種の指示等をＣＰＵ１１０１に通知するためのＩ／Ｏである。
【０１０２】
１１０８はハードディスクなどの大容量情報記憶装置として機能する外部記憶装置で、ＯＳ（オペレーティングシステム）や各種アプリケーションプログラム、さらに、入出力原稿画像などを記憶する。外部記憶装置１１０８への情報の書き込みや外部記憶装置１１０８からの情報の読み出しはＩ／Ｏ１１０９を介して行われる。
【０１０３】
１１１０は文書や画像を出力する為のプリンタで、出力データはＩ／Ｏ１１１１を介してＲＡＭ１１０２、もしくは外部記憶装置１１０８から送られる。なお、文書や画像を出力する為のプリンタとしては、例えばインクジェットプリンタ、レーザビームプリンタ、熱転写型プリンタ、ドットインパクトプリンタなどが挙げられる。
【０１０４】
１１１２は文書や画像を読み取るためのスキャナで、入力データはＩ／Ｏ１１１３を介してＲＡＭ１１０２、もしくは外部記憶装置１１０８に送られる。
【０１０５】
１１１６は、ＣＰＵ１１０１、ＲＯＭ１１０３、ＲＡＭ１１０２、Ｉ／Ｏ１１１１、Ｉ／Ｏ１１０９、ディスプレイ制御装置１１０４、Ｉ／Ｆ１１１５、Ｉ／Ｏ１１０７、Ｉ／Ｏ１１１３を繋ぐバスである。
【０１０６】
＜装置の動作＞
外部記憶装置１１０８には、アプリケーションプログラムとして、第１実施形態で説明した各機能部および動作フローを実現するための、画像処理プログラムが記憶されている。ユーザによる、操作入力デバイス１１０６を介した、当該画像処理プログラムの起動指示に基づき、第１実施形態で説明した動作フローが開始される。なお、詳細動作は第１実施形態とほぼ同様であるため省略する。
【０１０７】
（他の実施形態）
以上、本発明の実施形態について詳述したが、本発明は、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【０１０８】
なお、本発明は、前述した実施形態の機能を実現するプログラムを、システム或いは装置に直接或いは遠隔から供給し、そのシステム或いは装置が、供給されたプログラムコードを読み出して実行することによっても達成される。従って、本発明の機能処理をコンピュータで実現するために、コンピュータにインストールされるプログラムコード自体も本発明の技術的範囲に含まれる。
【０１０９】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【０１１０】
プログラムを供給するための記録媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク（ＣＤ、ＤＶＤ）、光磁気ディスク、磁気テープ、不揮発性のメモリカード、ＲＯＭなどがある。
【０１１１】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【０１１２】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【０１１３】
【図１】第１実施形態における画像処理装置１１の主要な機能構成を示すブロック図である。
【図２】透かし情報が埋め込まれた文書原稿を例示的に示す図である。
【図３】透かし情報の埋め込まれた２値画像データを例示的に示す図である。
【図４】画像データＩを水平方向に縮小した縮小画像データＩｓｈ、および、垂直方向へ縮小した縮小画像データＩｓｖの例を示す図である。
【図５】中間調として算出された部分の有意画素である黒への変換を例示的に示す図である。
【図６】縮小画像データＩｓｈの拡大図である。
【図７】縮小画像データＩｓｈに対し複数回の走査を実行する様子を例示的に示す図である。
【図８】図４（ｂ）の縮小画像データＩｓｈに対する走査を例示的に示す図である。
【図９】縮小画像データＩｓｖに対し水平方向へ走査を行う様子を例示的に示す図である。
【図１０】第１実施形態に係る画像処理装置１１の動作フローチャートである。
【図１１】ＰＣの内部構成を示す図である。
【図１２】ウインドウが縮小画像Ｉｓｈを走査している様子を示す図である。
【図１３】画素置換処理による縮小画像の変化を示す図である。
【図１４】元画像の文書に傾きがある場合の距離測定を示す図である。
【図１５】矩形ウインドウが縮小画像Ｉｓｖ内のオブジェクトを走査している状態を示す図である。
【図１６】矩形ウインドウを用いたオブジェクトの上部と下部の座標決定のフローチャートである。
【図１７】アルファベットを含む文書画像から生成された縮小画像データＩｓｈを例示的に示す図である。
【図１８】図１７に示した縮小画像データＩｓｈに対し平滑化フィルタ処理および２値化処理を施した結果を示す図である。
【図１９】ベースライン間の間隔に基づいて透かし情報が埋め込まれた文書原稿を例示的に示す図である。
【図２０】矩形ウインドウを用いて、２値化された縮小画像内のオブジェクトを走査している様子を示す図である。
【図２１】矩形ウインドウでオブジェクトのベースライン座標値を求めるフローチャートである。
【図１】
2008301284.tif 000003
【図２】
2008301284.tif 000004
【図３】
2008301284.tif 000005
【図４】
2008301284.tif 000006
【図５】
2008301284.tif 000007
【図６】
2008301284.tif 000008
【図７】
2008301284.tif 000009
【図８】
2008301284.tif 000010
【図９】
2008301284.tif 000011
【図１０】
2008301284.tif 000012
【図１１】
2008301284.tif 000013
【図１２】
2008301284.tif 000014
【図１３】
2008301284.tif 000015
【図１４】
2008301284.tif 000016
【図１５】
2008301284.tif 000017
【図１６】
2008301284.tif 000018
【図１７】
2008301284.tif 000019
【図１８】
2008301284.tif 000020
【図１９】
2008301284.tif 000021
【図２０】
2008301284.tif 000022
【図２１】
2008301284.tif 000023