本発明の第1の観点によれば、以下の構成の画像処理装置が提供される。即ち、この画像処理装置は、特徴点検出部と、傾き演算部と、特徴点回転演算部と、矩形領域演算部と、を備える。前記特徴点検出部は、原稿を読み取ることにより形成された画像データから原稿輪郭の特徴点を複数検出する。前記傾き演算部は、原稿の傾きに関する値を演算する。前記特徴点回転演算部は、前記特徴点検出部が検出した複数の特徴点を、前記原稿の傾きを矯正する方向に当該傾きの角度だけ所定の中心点の周りに回転移動させた回転後特徴点の位置を演算する。前記矩形領域演算部は、前記回転後特徴点の位置に基づいて、当該回転後特徴点に近接する輪郭を有する傾きなしの矩形領域を演算する。
この構成により、画像データにおける原稿部分の形状及び傾きに基づいて、原稿の傾きを矯正した場合における当該原稿部分を含む矩形領域を適切に定めることができる。また、原稿そのものの輪郭の特徴点から矩形領域を定めるので、非四角形を含む様々な形状の原稿についても適当な矩形領域を定めることができる。更に、画像データ全体を回転処理するのではなく、特徴点を回転した後の位置だけで原稿部分の矩形領域を決定できる。従って、計算コストを効果的に低減できるとともに、処理時間を短縮することができる。更に、矩形領域は傾きが無い状態で求められるので、データとして取扱いが容易であり、計算も簡単になる。
前記の画像処理装置においては、前記傾き演算部は、前記特徴点検出部で検出された特徴点のうち少なくとも2つの特徴点の位置から原稿の傾きに関する値を演算することが好ましい。
この構成により、例えば、画像データにおいて原稿部分を含む領域をどのサイズで取り出すか等を、適切に且つ自動的に決定することができる。また、画像データを印字データとして利用することができ、印字する際に別途処理する必要がない。
前記の画像処理装置においては、前記サイズ情報決定部は、予め定められた複数の定型サイズから前記矩形領域の大きさに最も近い大きさの定型サイズを選択することにより、前記サイズ情報を決定することが好ましい。
この構成により、例えば、画像データから原稿部分を含む領域を一般的な定型サイズに従って取り出すことが可能になり、便宜である。また、矩形領域に近い大きさの定型サイズが選択されるので、原稿部分の大きさとの関係で適切な定型サイズを選択することができる。また、演算された特徴点の位置等に多少の誤差が生じても、サイズ情報が当該誤差の影響を受けることを抑制することができる。
前記の画像処理装置においては、前記サイズ情報決定部は、予め定められた定型サイズから、前記矩形領域を含むことが可能でかつ最小の定型サイズを選択することにより、前記サイズ情報を決定することが好ましい。
この構成によっても、例えば、画像データから原稿部分を含む領域を一般的な定型サイズに従って取り出すことが可能になり、便宜である。また、矩形領域を含むことが可能な最小の定型サイズが選択されるので、原稿部分の大きさとの関係で適切なサイズを選択できるとともに、当該定型サイズの領域から原稿部分がハミ出すことを防止できる。
前記の画像処理装置においては、以下の構成とすることが好ましい。即ち、この画像処理装置は、対象領域決定部と、抽出領域演算部と、抽出回転処理部と、を備える。前記対象領域決定部は、前記サイズ情報に相当する大きさの傾きなしの矩形である原稿対象領域の位置を、前記矩形領域と少なくとも一部が重なるように決定する。前記抽出領域演算部は、前記原稿対象領域を前記中心点の周りに前記原稿の傾きの角度だけ回転させることにより、前記画像データにおける抽出領域を演算する。前記抽出回転処理部は、前記画像データから前記抽出領域の部分を取り出すとともに、前記原稿の傾きを矯正するように回転処理することにより、前記原稿対象領域に相当する画像データを得る。
この構成により、画像データにおいて原稿部分を適当なサイズに従って取り出し、原稿の傾きを矯正して良好な読取画像を得ることができる。また、傾き補正処理と取出し処理を同時並行的に行うことも容易である。
前記の画像処理装置においては、前記対象領域決定部は、前記原稿対象領域の中心が前記矩形領域の中心と一致するように当該原稿対象領域の位置を決定することが好ましい。
この構成により、得られた画像データにおいて原稿部分が中央位置に配置されるので、画像データの利便性を向上することができる。また、原稿対象領域は前記矩形領域と同様に傾きなしの矩形として得られるので、計算が簡単になり、処理を高速化できる。
この構成により、画像データにおいて前記矩形領域の縁の部分に原稿の縁が枠状に現れても、塗潰し処理によって除去し、いわゆる自動枠消し機能を実現することができる。
本発明の第2の観点によれば、前記の画像処理装置を備える画像読取装置であって、原稿を読み取って画像データを取得する画像読取部を備え、前記画像データを前記画像処理装置で処理することを特徴とする画像読取装置が提供される。
この構成により、画像データにおける原稿部分の形状及び傾きに基づいて、原稿の傾きを矯正した場合における当該原稿部分を含む矩形領域を適切に定めることができる。従って、例えば原稿の大きさの自動認識等に好適である。
本発明の第3の観点によれば、以下のような画像処理プログラムが提供される。即ち、この画像処理プログラムは、特徴点検出ステップと、傾き演算ステップと、特徴点回転演算ステップと、矩形領域演算ステップと、を含む。前記特徴点検出ステップでは、原稿を読み取ることにより形成された画像データから原稿輪郭の特徴点を複数検出する。前記傾き演算ステップでは、原稿の傾きに関する値を演算する。前記特徴点回転演算ステップでは、前記特徴点検出部が検出した複数の特徴点を、前記原稿の傾きを矯正する方向に当該傾きの角度だけ所定の中心点の周りに回転移動させた回転後特徴点の位置を演算する。前記矩形領域演算ステップでは、前記回転後特徴点の位置に基づいて、当該回転後特徴点に近接する輪郭を有する傾きなしの矩形領域を演算する。
この構成により、画像データにおける原稿部分の形状及び傾きに基づいて、原稿の傾きを矯正した場合における当該原稿部分を含む矩形領域を適切に定めることができる。また、原稿そのものの輪郭の特徴点から矩形領域を定めるので、非四角形を含む様々な形状の原稿についても適当な矩形領域を定めることができる。更に、画像データ全体を回転処理するのではなく、特徴点を回転した後の位置だけで原稿部分の矩形領域を決定できる。従って、計算コストを効果的に低減できるとともに、処理時間を短縮することができる。更に、矩形領域は傾きが無い状態で求められるので、データとして取扱いが容易であり、計算も簡単になる。
次に、発明の実施の形態を説明する。図1は本発明の一実施形態に係るイメージスキャナ装置の全体的な構成を示す正面断面図である。
図1に示すように、画像読取装置としてのイメージスキャナ装置101は、オートドキュメントフィーダ部及びフラットベッド部からなる画像読取部115を備えている。
前記画像読取部115は、読取原稿を載置するプラテンガラス102が配設された原稿台103と、この読取原稿を前記プラテンガラス上に押圧した状態で保持するための原稿台カバー104と、を備えている。また、イメージスキャナ装置101には、原稿の読取開始等を指示するための図略の操作パネルが備えられている。原稿台カバー104の下面には、原稿を下向きに押し付けるための押さえパッド121が、前記プラテンガラス102に対面するように取り付けられている。
前記原稿台カバー104には、オートドキュメントフィーダ(自動原稿送り装置)107が配設されている。このオートドキュメントフィーダ107は、原稿台カバー104の上部に設けられた原稿トレイ111と、この原稿トレイ111の下方に設けられた排紙トレイ112と、を備える。
図1に示すように、前記原稿台カバー104の内部には、原稿トレイ111と排紙トレイ112とを繋ぐ湾曲状の原稿搬送経路15が構成されている。この原稿搬送経路15には、ピックアップローラ51と、分離ローラ52と、分離パッド53と、搬送ローラ55と、排紙ローラ58と、が配置されている。
ピックアップローラ51は原稿トレイ111上の読取原稿を繰り込み、分離ローラ52及び分離パッド53は、繰り込まれた原稿を1枚ずつ分離するように構成されている。搬送ローラ55は、分離された原稿を原稿読取位置15Pに向けて搬送し、排紙ローラ58は、読取後の原稿を排紙トレイ112へ排出するように構成されている。また、前記原稿読取位置15Pにおいて、プラテンガラスに対向するように押さえ部材122が備えられている。
上記の構成で、原稿トレイ111に重ねてセットされた読取原稿は、1枚ずつ分離されて湾曲状の前記原稿搬送経路15に沿って搬送され、原稿読取位置15Pを通過して後述のスキャナユニット21によって読み取られた後、排紙トレイ112へ排出される。
図1に示すように、前記原稿台103の内部にはスキャナユニット21が備えられる。このスキャナユニット21は、原稿台103の内部で移動可能なキャリッジを備えている。
このキャリッジ30は、光源としての蛍光ランプ22と、反射ミラー23,23・・・と、集光レンズ27と、電荷結合素子(CCD)28と、を備える。蛍光ランプ22は読取原稿に対して光を照射し、読取原稿からの反射光は、複数の反射ミラー23,23・・・で反射した後、集光レンズ27を通過して収束してCCD28表面に結像する。前記CCD28は、入射された収束光を電気信号に変換して出力する。
本実施形態において前記CCD28は3ライン式のカラーCCDとされている。このCCD28は、主走査方向(原稿の幅方向)に細長く延びる一次元ラインセンサが赤、緑、青(RGB)の各色について設けられるとともに、各ラインセンサに対応して異なるカラーフィルタを備えた構成となっている。
前記原稿台103の内部には、駆動プーリ47及び従動プーリ48が回転自在に支持される。そして、駆動プーリ47及び従動プーリ48の間に無端状の駆動ベルト49が張架され、この駆動ベルト49の適宜箇所に前記キャリッジ30が固定されている。この構成で、前記駆動プーリ47を図略の電動モータで正逆駆動することにより、キャリッジ30を副走査方向に沿って水平に走行させることができる。
この構成で、前記原稿読取位置15Pに対応する位置に前記キャリッジ30を予め移動させた状態で、オートドキュメントフィーダ107を駆動する。すると、原稿搬送経路15を搬送される読取原稿が原稿読取位置15Pにおいて走査され、蛍光ランプ22から照射されて読取原稿で反射した反射光はキャリッジ30内へ導入され、反射ミラー23,23・・・により集光レンズ27を通してCCD28へ導かれて結像する。この結果、CCD28は読取内容に応じた電気信号を出力することができる。
また、フラットベッドスキャナとして使用する場合は、キャリッジ30をプラテンガラス102に沿って一定の速度で移動させながら、当該プラテンガラス102上に載置された読取原稿を走査する。原稿からの反射光は、上記と同様にキャリッジ30内のCCD28へ導かれて結像する。
図2はイメージスキャナ装置101のブロック図である。図2に示すように、イメージスキャナ装置101は前記スキャナユニット21のほか、CPU41と、ROM42と、画像処理部43と、イメージメモリ44と、画像自動取出部(画像処理装置)95と、符号変換部45と、出力制御部46と、を備えている。
CPU41は、イメージスキャナ装置101に備えられるスキャナユニット21、画像自動取出部95、符号変換部45、及び出力制御部46等を制御するための制御部として設けられている。この制御のためのプログラム及びデータ等は、記憶部としてのROM42に格納されている。
前記スキャナユニット21はアナログフロントエンド(AFE)63を備えており、このAFE63はCCD28に接続されている。原稿読取時において、CCD28が備えるRGB各色の前記ラインセンサは、原稿内容を主走査方向に走査して1ライン分を読み取り、各ラインセンサの信号は前記AFE63によってアナログ信号からデジタル信号に変換される。この主走査により、1ライン分の画素のデータがRGB各色の階調値としてAFE63から出力される。以上の処理を、原稿又はキャリッジ30を副走査方向に微小距離ずつ送りながら反復することで、原稿を含む読取領域全体の画像データをデジタル信号として得ることができる。
なお、前記スキャナユニット21(CCD28)は、原稿の領域だけを読み取るのではなく、原稿を含む領域であって原稿よりやや広い領域を読み取るように構成されている。これにより、後述の原稿画素及び背景画素の検出が可能になっている。
スキャナユニット21はデータ補正部65を備えており、前記AFE63が出力する画像データのデジタル信号は、このデータ補正部65に入力される。このデータ補正部65は、主走査ごとに1ラインずつ入力される画素データに対しシェーディング補正を行って、スキャナユニット21の光学系に起因する読取ムラの補正を行う。またデータ補正部65は、前記画素データに対し、CCD28におけるRGB各色のラインセンサの配置間隔(ラインギャップ)を原因とする読取位置のズレを矯正する補正を行う。
前記イメージメモリ44は、スキャナユニット21で読み取った画像を蓄積するためのものである。スキャナユニット21で読み取られた画像データは、画像処理部43において公知の画像処理(フィルタ処理等)が更に行われた後、イメージメモリ44に入力されて蓄積される。
前記画像自動取出部95は、画像データから原稿領域を含む適宜のサイズの矩形領域を抽出し、これを回転することで、傾きのない原稿画像を得るものである。この画像自動取出部95は、傾き検出部70と、画像抽出決定部80と、抽出回転処理部90と、を備えている。
前記傾き検出部70は、前記CCD28で読み取られた原稿の傾きを検出するためのものである。この傾き検出部70は、スキャナユニット21のデータ補正部65から画像データが1ラインずつ入力されると、その画像データを解析する処理を行い、原稿の傾き(その傾きを矯正するために回転すべき角)を検出する。
この傾き検出部70は、エッジ画素取得部71と、特徴点検出部72と、ステータス取得部73と、傾き演算部74と、を備えている。
前記エッジ画素取得部71は、スキャナユニット21から画像データが1ラインずつ入力されるごとに、当該ラインにおいて原稿の輪郭部分(言い換えれば、原稿と背景の境界)に位置するエッジ画素の位置を求めることが可能に構成されている。
前記特徴点検出部72は、前記エッジ画素取得部71により得られたエッジ画素の位置を、所定本数のライン分だけ記憶することができる。そして、その複数本のラインにおける当該エッジ画素の位置の特徴に基づいて、原稿の輪郭に関する特徴点を検出し、その特徴点の位置を求めることができる。なお、本明細書において「特徴点」とは、原稿の輪郭の図形的特徴部分に位置する点をいい、例えば原稿の角部の頂点である。
前記ステータス取得部73は、特徴点検出部72で取得された特徴点を含むライン又はその近傍のラインにおけるエッジ画素の位置の特徴を調べる。そしてステータス取得部73は、その結果に基づいて、原稿の向きに関するステータス(傾きなしであるか、一側に傾いているか、他側に傾いているか)を求めることが可能に構成されている。
前記傾き演算部74は、それぞれの特徴点のステータスを集計して最多数のステータスを求め、この最多数のステータスと一致するステータスを有する特徴点から2つの特徴点を選択し、この選択された特徴点の位置から原稿の傾きに関する値(傾きを表現するパラメータ。本実施形態では、正接値)を演算して取得する。
画像抽出決定部80は、読み取られた画像データにおける原稿部分の大きさ及び原稿の傾き等に基づいて、画像データから抽出すべき領域を自動的に決定する。この画像抽出決定部80は、特徴点回転演算部81と、矩形領域演算部82と、サイズ情報決定部83と、対象領域決定部84と、抽出領域演算部85と、を備えている。
特徴点回転演算部81は、前記傾き演算部74から原稿の傾きに関する値を入力し、前記特徴点検出部72が検出した複数の特徴点を、所定の中心点を中心にして前記傾きの角度だけ(原稿の傾きを矯正する方向に)回転移動させた点の位置を演算する。
矩形領域演算部82は、特徴点回転演算部81が求めた回転後の特徴点(以下、回転後特徴点)の位置に基づいて、当該回転後特徴点に近接する輪郭を有する傾きなしの矩形領域の位置及び大きさを演算する。
サイズ情報決定部83は、矩形領域演算部82が求めた矩形領域の大きさに基づいて、前記画像データにおける原稿部分を取り出し、傾きを矯正して出力するのに適切な出力サイズに関する情報(サイズ情報)を決定する。
対象領域決定部84は、前記サイズ情報に相当する大きさの傾きなしの矩形である原稿対象領域の位置を決定する。この対象領域の位置は、前記矩形領域演算部82が演算した矩形領域の少なくとも大部分を含むように定められる。
抽出領域演算部85は、対象領域決定部84が決定した原稿対象領域を前記中心点の周りに回転移動させることで、画像データにおける抽出領域を演算する。
抽出回転処理部90は、前記傾き検出部70及び画像抽出決定部80の処理結果に基づいて、イメージメモリ44の画像データを読み出す時に前記抽出領域に従って抽出するとともに、抽出したデータを回転処理することによって原稿の傾きを電子的に補正するものである。この抽出回転処理部90は、抽出パラメータ入力部91と、元画像対応位置演算部92と、二次元補間部93と、を備えている。
抽出パラメータ入力部91は、前記抽出領域演算部85が演算した抽出領域の情報を入力する。また、この抽出領域の情報に基づいて適宜計算を行うことで、2つの傾きパラメータ整数を、第1整数パラメータa及び第2整数パラメータbとして取得可能に構成されている。なお、2つの整数パラメータa,bの比の値(a/b)は、画像を回転すべき角度(原稿の傾き角度)の正接値tanθに等しい。
元画像対応位置演算部92は、回転画像における注目画素(m,n)の位置に基づいて所定の計算を行うことで、元画像において前記注目画素(m,n)に対応する位置の画素である対応注目画素(i,j)の位置を求める。また、元画像対応位置演算部92は、前記注目画素の位置に基づいて所定の計算を行うことで、前記二次元補間部93が行う補間において用いられるx方向重み係数kwx及びy方向重み係数kwyを求める。
二次元補間部93は、前記対応注目画素(i,j)と、当該対応注目画素とx座標及びy座標の少なくとも何れか一方が異なる3つの画素と、に基づいて二次元補間を行うことにより、回転画像における注目画素の画素値Q(m,n)を求める。この二次元補間には、前記x方向重み係数kwx及びy方向重み係数kwyをそれぞれ整数bで除した割合(kwx/b,kwy/b)が用いられる。なお、抽出回転処理部90による回転処理の詳細は後述する。
符号変換部45は、イメージメモリ44に保存された画像データに対し、例えばJPEG等の公知の圧縮処理を行って符号化する。
出力制御部46は、符号化された画像データを、イメージスキャナ装置101と接続される上位装置としてのパーソナルコンピュータ(図略)に送信する。送信方法は任意であるが、例えば、ローカルエリアネットワーク(LAN)を用いる方法、及びユニバーサルシリアルバス(USB)を用いる方法等が考えられる。
本実施形態において、データ補正部65、傾き検出部70、画像抽出決定部80、抽出回転処理部90及び符号変換部45等は、例えばASIC又はFPGA等のハードウェアを用いて実現されている。
次に、前記傾き検出部70による原稿の傾きの検出処理について、図3のフローチャートを参照しながら説明する。図3には、傾き検出処理のメインルーチンが示されている。
図3のメインルーチンが開始されると、傾き検出部70は先ず、前記データ補正部65が出力する画素データを1ライン分入力する(S101)。次に、入力された1ライン分の画素データから原稿画素と背景画素とを検出する処理を行う(S102)。
本実施形態において、原稿画素及び背景画素の検出処理は以下のようにして行う。即ち、本実施形態において、走査される原稿の裏面側に配置される前記押さえパッド121及び押さえ部材122(図1)の表面には、通常の紙よりも明るい白色のシート(プラテンシート)が貼り付けられている。従って、CCD28で読み取られた画像データにおいて、原稿の周囲の背景部分は輝度が高くなる。
これを利用して、S102の処理では、画素データのRGB成分から公知の式に従って輝度(Y成分)を計算する画像処理を行い、その輝度が所定の閾値以上である場合は背景画素、前記閾値を下回る場合は原稿画素とする2値化処理を行う。本実施形態では、背景画素を「0」、原稿画素を「1」で表すこととしている。
なお、原稿画素と背景画素の検出精度の観点からは、S102の処理の前に、元の画像データに対してシェーディング補正、ガンマ補正等の適宜の画像処理を行うことが好ましい。また、前記シェーディング補正においてシェーディングデータの白に所定量を加算し、通常よりも明るい値を生成して処理することにより、原稿と背景とを容易に区別することができる。
これにより、図4に示すように、画像データから原稿領域を判定することができる。なお、図4において、細かく区切られた1つのマスが1つの画素に対応するとともに、空白のマスが背景画素を、斜線が引かれたマスが原稿画素をそれぞれ表している。また、図4においてX方向が主走査方向であり、Y方向が副走査方向である。
図4では原稿画素の領域全体を判り易く示すために画像データ全体が描かれているが、図3のS102で示す原稿画素及び背景画素の検出処理は、主走査方向と同方向のラインに沿って1画素ずつ逐次行われる。また、以降の説明では、長方形の原稿が斜行した状態でオートドキュメントフィーダ部により搬送され、スキャナユニット21で読み取られた結果、図4に示すように、正規の向きから反時計方向に若干回転した長方形の画像が原稿画素領域として得られる場合で傾き検出処理を説明する。なお、フラットベッドスキャナ部の前記プラテンガラス102に長方形の原稿が斜めにセットされて読み取られた場合でも、図4に示すように傾いた画像が原稿画素領域として得られる。前記傾き検出部70では、画像データが図4の上端のラインから1ラインずつ処理され、最後に下端のラインが処理されることになる。
前述したように、図3のS102の処理は、1ライン毎に、各ラインの一端から他端(左端から右端)に向かって1画素ずつ順次行われる。また、このS102の処理が1画素分完了する毎に、2値化後のデータの変化が調べられる(S103)。そして、S103の処理では、各ラインにおいて左端から画素を順次処理したときに、2値化後の画素が最初に「0」から「1」(即ち、背景から原稿)に変化した箇所での「1」となった画素を、第1エッジ画素(左端画素)と認定する。また、2値化後の画素が最後に「1」から「0」(即ち、原稿から背景)に変化した箇所での「1」であった画素を、第2エッジ画素(右端画素)と認定する。
こうして得られた2つのエッジ画素(左端画素及び右端画素)は、当該ラインにおいて原稿と背景の境界(言い換えれば原稿の輪郭)を示すことになる。S103の処理では、左端画素及び右端画素の位置を、適宜の記憶手段としてのメモリに記憶する。
本実施形態の傾き検出部70は、こうして得られた2つのエッジ画素の位置を、現在処理している1ライン分と、直近に処理した8ライン分の、計9ライン分だけ記憶することができる。図4には、ある瞬間において処理対象とされているラインが符号S1で示されるとともに、直近に処理された8本のラインが符号S2〜S9で示されている。また、図4では、各ラインS1〜S9において検出された左端画素12L及び右端画素12Rの位置に相当するマスに、細かいハッチングが施されている。
エッジ画素の検出処理後は、この9ライン分の左端画素12L及び右端画素12Rの位置の特徴に基づいて、原稿の輪郭に関する特徴点(例えば、原稿の角部の頂点等)を検出する(S104)。
以下、この特徴点を検出する具体的処理の第1例として、原稿の先頭側に位置する角部(先頭角部)を検出する処理を図5に基づいて説明する。図5のフローは、図3のS104の処理で実行されるサブルーチンの1つを示している。
図5のサブルーチンでは最初に、最も過去に処理したラインから現在処理中のラインに至る9ラインにおいて、過去のラインから新しいラインに1ラインずつ近づくに従って、左端画素が連続して同位置又は左へ移動しているか否かを調べる(S201)。この条件を満たさない場合は、先頭角部を検出できなかったものとしてサブルーチンを終了する。
S201の条件が満たされていた場合は、最も過去に処理したラインから現在処理中のラインに1ラインずつ近づくに従って、右端画素が連続して同位置又は右へ移動しているか否かを調べる(S202)。S202の条件が満たされた場合は、先頭角部を認定する(S203)。条件を満たさない場合は、先頭角部を検出できなかったものとしてサブルーチンを終了する。
S201〜S202の判断について、図6を参照して詳細に説明する。図6には、現在処理対象となっているラインS1が示されており、図3のS103の処理の結果、左端画素L1及び右端画素R1の位置が図6に示すように得られたとする。また、過去の直近8ライン分の処理において、左端画素L2〜L9及び右端画素R2〜R9の位置がそれぞれ得られ、記憶されているものとする。
この場合において、図5のS201の処理では上述したとおり、9ライン分の領域において、過去のラインから新しいラインに1ラインずつ近づくに従って、左端画素が同位置又は左に移動しているか否かが判断される。
例えば図6の場合、左端画素の位置は、最も過去のラインS9から1つ新しいラインS8へ移行するに従って、L9からL8へと左端へ近づく向きに移動している。ラインS8からラインS7へ移行する場合、・・・、ラインS2から現在処理中のラインS1に移行する場合も同様である(L8〜L1)。従って、図6の場合、図5のS201の条件は満たすと判定される。
また、S202の処理では、9ライン分の領域において、過去のラインから新しいラインに1ラインずつ近づくに従って、右端画素が同位置又は右に移動しているか否かが判定される。
図6の例で説明すると、最も過去のラインS9から1つ新しいラインS8へ移行するに従って、右端画素の位置はR9からR8へと右端へ近づく向きに移動している。ラインS8からラインS7へ移動する場合は、R8とR7から明らかであるように、右端画素は同位置である。ラインS7からラインS6へ移行する場合、ラインS6からラインS5へ移行する場合も、右端画素は同位置である(R7〜R5)。ラインS5から現在処理中のラインS4へ移行する場合は、右端画素はR5からR4へと右端へ近づく向きに移動している。ラインS4からラインS3へ移行する場合、ラインS3からラインS2へ移行する場合は、右端画素は同位置である。ラインS2から現在処理中のラインS1へ移行する場合は、右端画素はR2からR1へと右端へ近づく向きに移動している。従って、図6の場合、図5のS202の条件は満たすと判定される。
従って、図6の例では前記サブルーチンはS203の処理に移行し、原稿の先頭角部が認定されることになる。具体的には、最も過去に処理したラインS9上の原稿画素の位置を先頭角部の位置として認定する。図6では、ラインS9上の原稿画素は1つだけであり、この画素が先頭角部として認定される(黒塗りのマスで図示)。なお、ラインS9上に原稿画素がない場合も考えられ、このときはラインS8上の左端画素L8又は右端画素R8が特徴点として認定される。こうして検知された原稿の先頭角部の位置は、適宜のメモリに記憶される。
以上のようにして原稿の先頭角部が検出されると、次に図5のS204の処理で、当該角部が直角であるか否かを調べる。
この直角の判定は以下のように、9本のライン上の左端画素及び右端画素の位置の特徴に基づいて行う。具体的には、先ず、最も過去のラインS9から現在のラインS1に8本分移行するまでに左端画素が左端側へ移動した距離DLxと、右端画素が右端側へ移動した距離DRxを求める。
そして、DLx>DRxの場合、最も過去のラインS9からDRx本だけ新しいラインに移行するまでに左端画素が左端側へ移動した距離DLが8に(実質的に)等しいか否かを調べ、等しい場合は直角であると判定し、等しくない場合は直角でないと判定する。
一方、DLx<DRxの場合、最も過去のラインS9からDLx本だけ新しいラインに移行するまでに右端画素が右端側へ移動した距離DRが8に(実質的に)等しいか否かを調べ、等しい場合は直角であると判定し、等しくない場合は直角でないと判定する。
図6の例では、最も過去のラインS9から現在のラインS1に移行するまでに、左端画素は左端側へ42画素分だけ、右端画素は右端側へ2画素分だけそれぞれ移動している(L9とL1、R9とR1の位置を参照)。従って、DLx=42,DRx=2となり、DLx>DRxである。そして、最も過去のラインS9から2本だけ新しいラインS7に移行するまでに、左端画素はL9からL7まで左端側へ8画素分移動しており、DL=8である。従って、図6の例において、図5のS204の処理では先頭角部は垂直であると判定される。
次にS205の処理で、原稿の向きに関するステータスを求める。このステータスは、原稿が傾きなしであるか、時計方向に回転しているか、反時計方向に回転しているか、の状態を示すものである。なお、このステータスは上記に代えて、原稿の回転の必要なしであるか、反時計方向に回転すべきであるか、時計方向に回転すべきであるか、という状態を示すようにしても良いことは勿論である。
具体的には、前述の距離DLx及びDRxがDLx>DRxの関係を満たせば反時計方向の回転、DLx<DRxの関係を満たせば時計方向の回転と判定する。なお、DLx=0かつDRx=0であれば、傾きなしと判定される。
図6の例ではDLx>DRxとなるので、図5のS205において画像は反時計方向に回転していると判定される。従って、S205の処理では、[反時計回転]のステータスを、S203の処理で求めた先頭角部の位置と対応付けて適宜のメモリに記憶する。
次に、特徴点を検出する具体的処理の第2例として、原稿の左側に位置する角部(左角部)を検出する処理を図7に基づいて説明する。図7のフローは、図5のフローと同様に、図3のS104で実行されるサブルーチンの1つを示している。
図7のサブルーチンが実行されると、最初に、前記9ラインのうち、最も過去に処理したラインS9から中央のラインS5までの5本分のラインにおける左端画素の位置を調べる(S301)。具体的には、S9〜S5のラインにおいて、過去のラインから新しいラインに1ラインずつ近づくごとに、左端画素が同位置又は左へ移動しているか否かを調べる。この条件を満たさない場合は、左角部を検出できなかったものとしてサブルーチンを終了する。
S301の条件が満たされていた場合は、中央のラインS5から現在処理しているラインS1までの5本分のラインにおける右端画素の位置を調べる(S302)。具体的には、S5〜S1のラインにおいて、過去のラインから新しいラインに1ラインずつ近づくごとに、左端画素が同位置又は右へ移動しているか否かを調べる。この条件が満たされた場合は、左角部を認定する(S303)。条件を満たさない場合は、左角部を検出できなかったものとしてサブルーチンを終了する。
S301〜S302の判断について、図8を参照して詳細に説明する。図8には、現在処理対象となっているラインS1が示されており、図3のS103の処理によって、左端画素L1の位置が図8に示すように得られたとする。また、過去の直近8ライン分の処理において、左端画素L2〜L9の位置がそれぞれ得られ、記憶されているものとする。
この場合において、図7のS301の処理では上述したとおり、S9〜S5の5ライン分の領域において、過去のラインから新しいラインに1ラインずつ近づくに従って、左端画素が同位置又は左に移動しているかが調べられる。
例えば図8の場合、左端画素の位置は、最も過去のラインS9から1つ新しいラインS8へ移行するに従って、L9からL8へと左端へ近づく向きに移動している。ラインS8からラインS7へ移行する場合、・・・、ラインS6からラインS5に移行する場合も同様である(L8〜L5)。従って、図8の場合、図7のS301の条件は満たすと判定される。
また、S302の処理では、S5〜S1の5ライン分の領域において、過去のラインから新しいラインに1ラインずつ近づくに従って、左端画素が同位置又は右に移動しているか否かが判定される。
この点、図8の例では、ラインS5から1つ新しいラインS4へ移行するとき、L5とL4から明らかであるように、左端画素は同位置である。ラインS4からラインS3へ移行する場合、ラインS3からラインS2へ移行する場合も、左端画素は同位置である(L4〜L2)。ラインS2から現在処理中のラインS1へ移行する場合は、左端画素はL2からL1へと右端へ近づく向きに移動している。従って、図8の場合、図7のS302の条件は満たすと判定される。
従って、図8の例では前記サブルーチンはS303の処理に移行し、原稿の左角部が認定されることになる。具体的には、図8に示すように、9本のラインの中央に位置するラインS5上の左端画素L5の位置を、左角部の位置として認定する(黒塗りのマスで図示)。ただし、例えばラインS2上の左端画素L2の位置を左角部の位置として認定しても良い。こうして検知された原稿の左角部の位置は、適宜のメモリに記憶される。
原稿の左角部が検出された場合、図7のS304の処理で、当該角部が直角であるか否かを判定する。
この直角の判定は以下のようにして行う。即ち、最も過去に処理したラインS9から中央のラインS5に移行するまでに左端画素が左端側へ移動した距離DLxaを求める。また、中央のラインS5から現在処理しているラインS1まで左端画素が右端側へ移動した距離DLxb求める。
そして、DLxa>DLxbの場合、中央のラインS5からDLxbだけ古いラインに移行するまでに左端画素が右端側へ移動した距離DLが4に(実質的に)等しいか否かを調べ、等しい場合は直角であると判定し、等しくない場合は直角でないと判定する。
一方、DLxa<DLxbの場合、中央のラインS5からDLxa本だけ新しいラインに移行するまでに左端画素が右端側へ移動した距離DRが4に(実質的に)等しいか否かを調べ、等しい場合は直角であると判定し、等しくない場合は直角でないと判定する。
図8の例では、最も過去のラインS9から中央のラインS5へ移行するまでに、左端画素は左端側へ19画素分だけ移動している(L9とL5の位置を参照)。また、中央のラインS5から現在の処理対象のラインS1へ移行するまでに、左端画素は右端側へ1画素分だけ移動している(L5とL1の位置を参照)。従って、DLxa=19,DLxb=1となり、DLxa>DLxbである。そして、中央のラインS5から1本だけ古いラインS6に移行するまでに、左端画素はL5からL6まで右端側へ4画素分移動しており、DL=4である。従って、図8の例において、図7のS304の処理では左角部は垂直であると判定される。
次にS305の処理で、原稿の向きに関するステータスを求める。具体的には、前述の距離DLxa及びDLxbがDLxa>DRxbの関係を満たせば反時計方向の回転、DLxa<DRxbの関係を満たせば時計方向の回転と判定する。
図8の例では、DLxa>DLxbとなるので、画像は反時計方向に回転していると判定される。従って、S305の処理では、[反時計回転]のステータスを、S303の処理で求めた左角部の位置と対応付けて適宜のメモリに記憶する。
次に、特徴点を検出する具体的処理の第3例として、原稿の平行辺上の点を検出する処理を図9に基づいて説明する。図9のフローは、図5及び図7のフローと同様に、図3のS104の処理で実行されるサブルーチンの1つを示している。
図9のサブルーチンでは最初に、前記9ラインの何れにおいても、左端画素から右端画素までの距離が(実質的に)等しいか否かを調べる(S401)。S401の条件が満たされた場合は、平行辺を認定する(S402)。条件を満たさない場合は、平行辺を検出できなかったものとしてサブルーチンを終了する。
S401の判断について、図10を参照して詳細に説明する。図10には、現在処理対象となっているラインS1が示されており、図3に示すS103の処理の結果、左端画素L1及び右端画素R1の位置が図10に示すように得られたとする。また、過去の直近8ライン分の処理において、左端画素L2〜L9及び右端画素R2〜R9の位置がそれぞれ得られ、記憶されているものとする。
この場合において、S401の処理では上述したとおり、S1〜S9の9本のラインそれぞれにおいて、左端画素と右端画素との間の距離が等しいか否かが調べられる。
例えば図10の場合、左端画素から右端画素までの距離は、図面から明らかであるように9本のラインS1〜S9において全く一致している。従って、図10の場合、図9のS401の条件は満たすと判定される。
従って、図10の例では前記サブルーチンはS402の処理に移行し、原稿の平行辺が認定されることになる。このS402の処理では、平行辺上の何れかの点を代表させて、その位置を適宜のメモリに記憶させる。本実施形態では、現在処理対象となっているラインS1上の左端画素L1の位置を特徴点として記憶させている(黒塗りのマスで図示)。ただし、右端画素の位置を特徴点としても良いし、過去に処理したラインS2〜S9上のエッジ画素の位置を特徴点としても良い。なお、左端画素及び右端画素の両方の位置を特徴点とすると、平行線に基づく特徴量が多くなり、精度が良くなる点で好ましい。
次に、図9のS403の処理で、原稿の向きに関するステータスを求める。具体的には、最も過去に処理したラインS9の左端画素の位置(L9)と、現在処理対象となっているラインS1の左端画素の位置(L1)と、を比較する。そして、L1の位置がL9の位置よりも左端側に近い場合は時計方向の回転と判定し、L9の位置がL1の位置よりも左端側に近い場合は反時計方向の回転と判定する。なお、L1とL9が同位置である場合は、傾きなしと判定する。
図10の例では、L9の位置がL1の位置よりも左端側に近い。従って、S403の処理では、[反時計回転]のステータスを、S402の処理で求めた平行辺上の点の位置と対応付けて適宜のメモリに記憶する。その後、サブルーチンを終了する。
なお、例えば長方形の原稿を読み取った場合は、平行辺上の特徴点が連続的に多数検出されることになる。これを避けるため、一度平行辺を検出した場合は、所定のライン数だけ検出しないようにすることが望ましい。この所定ライン数は、解像度、検出角度の精度等に応じて決定される。例えば読取解像度が200dpiである場合、平行辺の検出をスキップするライン数を200とすると、少なくとも25.4mm以上の間隔をあけて平行辺上の特徴点が検出されることになる。
以上に説明した3つのサブルーチンを実行することにより、原稿の先頭角部、左角部、及び平行辺を検出することができる。なお、メインルーチンのS104の処理では、上記のほか、原稿の末尾側に位置する角部(末尾角部)及び右側に位置する角部(右角部)の検出のためのサブルーチンも併せて実行される。右角部の検出のためのサブルーチンは、前述した左角部の検出のためのサブルーチンにおいて主走査方向の位置関係を逆にすることで実現できるので、説明を省略する。
末尾角部の検出のためのサブルーチンについて、図11を参照して説明する。図11のサブルーチンでは最初に、最も過去に処理したラインから現在ラインの直前のラインまでの8ラインにおいて、過去のラインから新しいラインに1ラインずつ近づくに従って、左端画素が連続して同位置又は右へ移動しているか否かを調べる(S501)。この条件を満たさない場合は、末尾角部を検出できなかったものとしてサブルーチンを終了する。
S501の条件が満たされていた場合は、最も過去に処理したラインから現在ラインの直前のラインまでに1ラインずつ近づくに従って、右端画素が連続して同位置又は左へ移動しているか否かを調べる(S502)。この条件を満たさない場合は、末尾角部を検出できなかったものとしてサブルーチンを終了する。
S502の条件が満たされていた場合は、現在処理しているラインにおいて、左端画素及び右端画素が検出されているか否かを調べる(S503)。検出されていない場合は、末尾角部を認定し、その位置を求めて記録する(S504)。検出された場合は、末尾角部を検出できなかったものとしてサブルーチンを終了する。
即ち、ラインが原稿の末尾角部に近づくに従って、左端画素は右側へ移動し、右端画素は左側へ移動し、ラインが原稿の末尾角部を過ぎると原稿画素が検出されなくなる。上記のS501〜S504の処理は、この末尾角部の特徴を用いて末尾角部の判定を自動的に行っている。
次に、検出された末尾角部が直角か否かを判定して記録する(S505)。また、原稿の向きに関するステータスを求めて記録する(S506)。このS505及びS506の処理は、先頭角部の検出処理(図5)における直角判定処理(S204)及び向き判定処理(S205)と実質的に同様であるので、説明を省略する。
上記の各サブルーチンの処理が終わり、図3のS104の処理が完了すると、全てのラインの画素データが入力されたか否かを判断する(S105)。そして、全ラインの入力がまだ完了していない場合は、S101の処理に戻る。
以上のフローにより、全ライン分の原稿読取データが入力されるまで、S103、S104の処理が1ラインの入力ごとに反復される。従って、このS101〜S104のループ処理によって、原稿の先頭角部、左角部、末尾角部、右角部、及び平行辺を表す特徴点が検知されることになる。また、特徴点が検知される毎に、当該特徴点の位置と、(角部について)直角であるか否かの判定結果と、原稿の向きに関するステータスと、が記憶される。
図12には、検知された特徴点の位置と、それぞれの特徴点において得られた直角判定及びステータスの例が示されている。本実施形態では4つの角部が特徴点として認定されるが、この角部は隣り合う2つの辺が交わる共通の点であるから、1つの角部を検出することで2つの辺上の点を検出したことになる。従って、図12のように原稿が4辺形の場合、4つの辺それぞれについて1点以上の特徴点が検出されることになる。なお、平行辺については、互いに十分に離れた2つの点(平行辺(1)及び平行辺(2))が認定され、そのそれぞれの位置とステータスが記憶されている。
全ライン分のデータについて処理が完了すると、メインルーチンは図3のS106の処理に移行する。このS106の処理では、S104で検知された特徴点から、直角でないと判定された角部の特徴点を除外する。除外された特徴点は、後述のS107、S108の処理において考慮されない。図12の例では、4つの角部全てが直角であると判定されているので、どの特徴点も除外されない。
次に、得られた特徴点についてステータスを集計し、最多数のステータスを決定する(S107)。図12の例では、全ての特徴点のステータスが[反時計回転]であるので、最多数のステータスは[反時計回転]であると決定される。なお、上位2つのステータスが同数である場合も考えられるが、この場合は、予め定めた優先順位に従ってステータスを決定する。
次に、図3のS108の処理において、最多数のステータスと一致するステータスを有する特徴点から、予め定められている優先順位に従って、2つの特徴点の組合せを選択する。この優先順位の例が図13に示される。この例では、平行辺上の2点よりも、離れて存在する原稿の角部の2点を優先して選択するように優先順位が定められている。これにより、傾きの検出精度を高めることができる。
図12の例では、全ての特徴点のステータスが[反時計回転]であるので任意の特徴点が選択可能であるが、図13の優先順位に従って、先頭角部と左角部が選択される。
次に、図3のS109の処理に移行し、選択された2つの特徴点の位置に基づいて、原稿の傾きに関する値が算出される。本実施形態では、選択された先頭角部と左角部の点の位置に基づいて、原稿の傾き角度の正接値を求めている。ただし、原稿の傾き角度そのものの数値を、前記2つの特徴点を結ぶ直線の傾きに基づいて求めても良いし、例えば正弦値、余弦値を求めても良い。要するに、傾きの度合いを表現可能なパラメータであれば、どのようなパラメータであっても良い。
なお、S107の集計処理時において、特徴点のステータスがバラバラで、最多数のステータスを求めることができない場合も考えられる。この場合は、ステータスに関係なく、平行辺の2点が得られている場合は当該平行辺の2点に基づいて原稿の傾きを求める。
以上に示す処理により、CCD28の読取データのように、ライン単位で画素毎に連続して出力されるデータに基づいて、原稿の傾きに関するパラメータを演算して取得することができる。そして、このパラメータ(正接値)を画像抽出決定部80に渡すことで画像データの抽出領域を適切に決定することができる。また、原稿の傾きに関するパラメータを正確に計算できるので、抽出回転処理部90において適切な角度の画像回転処理を行い、傾きが電子的に補正された良好な読取画像を得ることができる。
そして、上記で説明した傾き検出処理は、原稿に折れ又は破れが生じていても傾きを良好に検出することができる。例えば、原稿の左角部に折れ及び破れが生じている場合の読取結果の例を図14に示す。この図14の例では、特徴点として左角部が検出される際に、その折れ部分の形状的特徴から、当該左角部が直角であると判定され、かつステータスが[時計回転]と判定されたとする。なお、左角部以外の特徴点は図12と同様に、角部の場合は直角であると判定されるとともに、[反時計回転]のステータスが得られているものとする。
図14の場合、1つの特徴点は[時計回転]のステータスを有し、他の5つの特徴点は[反時計回転]のステータスを有している。従って、図3のS107の処理において、最多数のステータスは[反時計回転]と決定される。この結果、S108の特徴点の選択時には、図14の左角部は最多数のステータスと一致しない[時計回転]のステータスを有しているため、選択されない。結局、図13の優先順位に従って右角部と末尾角部が選択され、この2つの特徴点に基づいて原稿の傾きが的確に検知される。
また、原稿の先頭側が大きく折られて非長方形となっている場合の読取結果の例を図15に示す。この図15の例では、特徴点として先頭角部及び左角部が検出される際に直角でないと判定され、後端角部及び右角部については直角であると判定される。
この場合、図3のS106の処理において、直角でない先頭角部及び左角部が除外される。従って、S107の最多数ステータスの決定処理及びS108の特徴点選択処理において、先頭角部及び左角部は無視される。結局、図15の例では右角部と後端角部が選択され、この2つの特徴点に基づいて原稿の傾きが的確に検知される。
図16の例は非四角形の原稿を読み取らせた場合であり、検出された4つの角部全てにおいて直角でないと判定されている。この場合は、図3のS106の処理で4つの角部全てが除外されるため、S108の処理で平行辺の2点が選択される。従って、非四角形の原稿であっても平行辺を有していれば、その平行辺上の2点に基づいて傾きを的確に検出することができる。
以上に説明した傾き検出処理は、原稿画素を検出して解析することにより、原稿内容の如何にかかわらず適切に傾きを検出することができる。また、折れ又は破れが生じている原稿、角丸長方形、非長方形、非四角形の原稿等、様々な状態及び形状の原稿について、傾きを的確に検出することができる。
次に、元の画像データから原稿領域を含む所定サイズの抽出領域を決定する処理(画像抽出決定部80の処理)について説明する。図17は、画像抽出決定部で実行される抽出領域決定処理を示すフローチャートである。
図17のフローが開始されると、最初に、前述の処理で得られた各特徴点の座標を、所定の中心点を中心として、前述の傾き検出処理で得られた傾き角度だけ(当該傾きを矯正する方向に)回転させる処理が行われる(S601)。この回転移動は、各特徴点のx座標及びy座標に対し公知のアフィン変換を適用することにより実現することができる。図18には、図16のデータから得られた複数の特徴点10pを中心点13の周りに傾き角度θだけ回転させ、回転後特徴点10qを得る処理が示されている。
次に、この回転後特徴点10qの全てを含むように矩形領域11が決定される(S602)。この矩形領域11は、前記回転後特徴点に近接する輪郭を有する、傾きなしの矩形の輪郭を有している。
前記矩形領域11は、例えば以下のようにして求めることができる。即ち、それぞれの回転後特徴点10qのx座標及びy座標を調べ、x座標の最大値xmax、最小値xmin、y座標の最大値ymax、及び最小値yminを求める。そして、点(xmin,ymin)及び点(xmax,ymax)を対角線とする矩形で囲まれた領域を、求める矩形領域11とする。
次に、前記矩形領域11の大きさに基づいて、出力サイズに関するサイズ情報が決定される(図17のS603)。この出力サイズとは、スキャナユニット21で読み取った画像データから抽出した領域を出力する場合の媒体サイズを意味する。このサイズ情報は、例えば、前記画像データから所定の領域を抽出するとともに原稿の傾きを補正した画像を取得し、これを埋め込んだページを有するPDFファイルを生成する場合に、当該ページを印刷するときの印刷先媒体のサイズを指定する情報を当該PDFファイルに記述するときに用いることができる。また、前記サイズ情報は、このイメージスキャナ装置101を適宜の画像形成装置と組み合わせてコピー機能を実現する場合に、当該画像形成装置におけるコピー先用紙の大きさの選択のために用いることができる。
本実施形態において前記出力サイズの決定は、予め記憶された定型サイズ(例えば日本工業規格のB5、A4、B4、A3等のサイズ)の中から、前記矩形領域11の幅と高さに最も近い幅と高さを有するものを選択することにより行う。ただし、ユーザの指示によっては、出力サイズとして定型サイズを用いず、前述の矩形領域11の大きさをそのまま出力サイズとして決定することもできる。
出力サイズが決定されると、当該出力サイズに相当する幅と高さを有する原稿対象領域12の位置を決定する処理が行われる(S604)。前記原稿対象領域12は、前記矩形領域11と同様に、傾きなしの矩形の輪郭を有している。原稿対象領域12の位置は、当該原稿対象領域12が前記矩形領域11の少なくとも大部分を含むように決定される。本実施形態では、原稿対象領域12の位置を、当該原稿対象領域12の中心が矩形領域11の中心と一致するように決定している。
次に、前記原稿対象領域12を、前記中心点13を中心として図19に示すように傾き角度θだけ回転させる処理が行われる(図17のS605)。このときの原稿対象領域12の回転方向は、原稿が傾いている方向であり、図18で示す特徴点の回転方向と逆方向である。なお、この回転移動もS602の処理と同様に、公知のアフィン変換を使用して行われる。
これにより、図19に示すように原稿の傾き角度と同じ角度で傾いた矩形の領域(抽出領域14)を得ることができる。この抽出領域14を図16の画像データに重ねた状態が図20に示され、当該抽出領域14に沿って画像を取り出すことにより、原稿領域を実質的に含み且つ前記出力サイズに相当する大きさの矩形の画像を得ることができる。
この抽出領域14の情報は適宜出力され(図17のS606)、抽出回転処理部90において画像の抽出処理のために利用される。具体的には、矩形である前記抽出領域14の4つの頂点のうち、3つの頂点14a,14b,14cの座標が、抽出回転処理部90にパラメータとして渡される。
次に、前記抽出回転処理部90による画像の抽出及び回転処理について説明する。図21の例では、原稿が斜行した状態でオートドキュメントフィーダ部により搬送され、スキャナユニット21で読み取られた結果、正規の向きから時計方向に若干回転した長方形の画像が原稿画素領域として得られている。
この場合、前記画像抽出決定部80において前述と同様の処理が行われ、図21で示すように、原稿の傾きとほぼ同じ傾きを有する抽出領域14が決定される。そして、当該抽出領域14の角部に位置する3つの頂点14a,14b,14cの座標が抽出回転処理部90に抽出パラメータとして入力される。
抽出回転処理部90は、入力されたパラメータを適宜のメモリに記憶する。そして抽出回転処理部90は、入力された3つの頂点のうち、2つの頂点14a,14bのx座標の差及びy座標の差を演算して求める。ここで求められたy座標の差をdyとし、x座標の差をdxとする。図21の例では、dy=12,dx=60である。
そして、抽出回転処理部90は、y座標の差dy及びx座標の差dxをそれぞれ最大公約数で除し、得られた結果を傾きパラメータa,bとする。図21の例では、a=1,b=5である。
ここで、原稿の傾き角度をθとすると、θ=tan-1(dy/dx)=tan-1(a/b)の関係が成り立つ。即ち、aとbの比の値(a/b)は、原稿の傾き角度の正接値tanθに一致する。
2つの頂点14a,14bのx座標及びy座標はそれぞれ整数で表されるので、上述したy座標の差dy及びx座標の差dxも整数となり、傾きパラメータa,bも整数になる。
なお、傾き検出部70及び画像抽出決定部80の処理は、元画像を解像度変換(変倍)することなく行っても良いが、元画像を縮小化した縮小画像データを用いて角度検出を行ってもよい。縮小画像データを用いることにより、特にソフトウェアで処理する場合には、角度検出処理の高速化を図ることができる。
次に、抽出回転処理部90で行われる画像回転処理の詳細について、図22のフローチャートを参照しながら説明する。
図22のフローが開始されると、抽出回転処理部90は先ず、前記抽出領域14の2つの頂点14a,14bのx座標及びy座標の差から2つの傾きパラメータ整数を求め、これを第1整数パラメータa及び第2整数パラメータbとして入力する(S701)。
次に、変数の初期化処理を行う(S702)。この初期化処理では、回転画像における注目画素のx座標m及びy座標nがゼロにリセットされる。また、対応注目画素(前記注目画素に対応する元画像の画素)の位置を演算する際に使用されるx方向のオフセット値moff及びy方向のオフセット値noffについては、図21に示す抽出領域14の左上に位置する頂点14aのx座標(s)及びy座標(t)が初期値として設定される。更に、二次元補間に使用されるx方向重み係数kwx及びy方向重み係数kwyについては、ゼロに初期化される。なお、上記の変数m,n,moff,noff,kwx,kwyは、何れも整数変数である。
次に、回転画像の注目画素(m,n)の画素値Q(m,n)を計算する(S703)。この処理では最初に、元画像の前記対応注目画素の位置(i,j)を計算する。対応注目画素のx座標iは、回転画像の注目画素のx座標mにオフセット値moffを加えることで得られる(i=m+moff)。同様に、対応注目画素のy座標jは、回転画像の注目画素のy座標nにオフセット値noffを加えることで得られる(j=n+noff)。
ここで、前記オフセット値moffは、回転画像の注目画素がy方向に(b/a)画素移動するごとに1減算される(S704)。また、オフセット値noffは、回転画像の注目画素がx方向に(b/a)画素移動するごとに1加算される(S705)。なお、このオフセット値の加算/減算処理については後述する。
図23に、図21の例で求めた傾きパラメータ整数a=1,b=5を抽出回転処理部90に第1整数パラメータ及び第2整数パラメータとして入力した場合の、回転画像の注目画素と元画像の対応注目画素との対応を示す。
図23には、回転画像の1行目及び1列目を注目画素とした場合の当該注目画素と、元画像の対応注目画素が、二重線で囲ったマスでそれぞれ示されている。図23の上側で示すように、元画像の対応注目画素は、回転画像の注目画素がx方向に5画素(=b/a)移動するごとに、y方向に1画素分ズレる。また、元画像の対応注目画素は、回転画像の注目画素がy方向に5画素移動するごとに、x方向に1画素分ズレる。
次に、回転画像の注目画素の画素値Q(m,n)を、二次元線形補間することにより取得する。この二次元線形補間は、図24に示すように、元画像の対応注目画素(i,j)と、この対応注目画素にx方向で隣り合う画素(i−1,j)と、y方向で隣り合う画素(i,j+1)と、斜めに隣り合う画素(i−1,j+1)と、の計4つの画素を対象にして行われる。そして、この4つの画素それぞれの画素値P(i,j)、P(i−1,j)、P(i,j+1)、P(i−1,j+1)に基づいて、x方向重み係数kwxを第2整数パラメータbで除した割合(kwx/b)、及び、y方向重み係数kwyを第2整数パラメータbで除した割合(kwy/b)によって線形補間することにより、回転画像の注目画素(m,n)の画素値Q(m,n)を取得する。
ここで、x方向重み係数kwxは、回転画像の注目画素がy方向に1画素移動するごとに、第1整数パラメータaだけ加算される(図22のS712)。また、y方向重み係数kwyは、回転画像の注目画素がx方向に1画素移動するごとに、第1整数パラメータaだけ加算される(S705)。なお、この重み係数の加算処理については後述する。
図22のS703には、図24の概念図で説明した注目画素の画素値Q(m,n)の計算式が示されている。なお、この計算式は、第2整数パラメータbでの除算が大カッコ[〜]で括った外側に出るように変形されている。これにより、計算コストの大きい除算処理を第2整数パラメータの2乗(b2)での除算1回にまとめることができ、計算処理を高速化することができる。
S703の画素値の取得処理(二次元補間ステップ)が終了した後、注目画素のx座標mに1を加算する(S704)。この処理は、回転画像の注目画素(m,n)をx方向に1画素分移動させることに相当する。
次に、y方向重み係数kwyに第1整数パラメータaを加算する(S705)。そして、加算後のy方向重み係数kwyが第2整数パラメータb以上か否かを調べる(S706)。第2整数パラメータb以上であった場合は、y方向のオフセット値noffに1を加算するとともに(S707)、y方向重み係数kwyから第2整数パラメータbを減算する(S708)。その後、S706の処理に戻る。
y方向重み係数kwyが第2整数パラメータbを下回っている場合、S709の処理に移行し、回転画像の注目画素のx座標mが、回転画像の幅widthに原稿の傾き角度の余弦値(cosθ)を乗じた数を下回っているか否かが判定される。x座標mがwidth×cosθを下回っていた場合は、S703の処理に戻る。
以上のフローにより、回転画像の注目画素(m,n)を、そのx座標mを0から(width×cosθ−1)まで1ずつ変化させながら、画素値Q(m,n)を計算する処理が反復される。そして、x座標mが1変化するごとにy方向重み係数kwyがaずつ加算されるので(S705)、画素値Q(m,n)の計算の際の二次元補間において、図24の下側2つの画素値P(i,j+1)、P(i−1,j+1)が反映される重みが増大する。mが1変化するごとの当該重みの変化割合は、aをbで除した値に一致する。更に、y方向重み係数kwyがb以上になると、y方向オフセット値noffが1加算される。これは、元画像の対応注目画素(i,j)がy方向に1画素分ズレることを意味する。
S709の判断で、注目画素のx座標mがwidth×cosθ以上であった場合、当該x座標m、前記y方向オフセット値noff及びy方向重み係数kwyがそれぞれリセットされる(S710)。具体的には、x座標mの値はゼロにリセットされ、y方向重み係数kwyはゼロにリセットされ、y方向オフセット値noffには、前記抽出領域14の左上に位置する頂点14aのy座標(t)が設定される。次に、注目画素のy座標nに1が加算される(S711)。この処理は、回転画像の注目画素(m,n)をy方向に1画素分移動させることに相当する。
次に、x方向重み係数kwxに第1整数パラメータaを加算する(S712)。そして、加算後のx方向重み係数kwxが第2整数パラメータb以上か否かを調べる(S713)。第2整数パラメータb以上であった場合は、x方向のオフセット値moffに1を加算するとともに(S714)、x方向重み係数kwxから第2整数パラメータbを減算する(S715)。その後、S713の処理に戻る。
x方向重み係数kwxが第2整数パラメータbを下回っている場合、S716の処理に移行し、回転画像の注目画素のy座標nが、回転画像の高さheightに原稿の傾き角度の余弦値(cosθ)を乗じた数を下回っているか否かが判定される。y座標nがheight×cosθを下回っていた場合は、S703の処理に戻る。y座標nがheight×cosθ以上であった場合、注目画素の画素値の計算が全て完了したことを意味するので、処理を終了する。
以上のフローにより、回転画像の注目画素(m,n)を、そのy座標nを0から(height×cosθ−1)まで1ずつ変化させながら、画素値Q(m,n)を計算する処理が反復される。そして、nが1変化するごとにx方向重み係数kwxがaずつ加算されるので、画素値Q(m,n)の計算の際の二次元補間において、図24の左側2つの画素値P(i−1,j)、P(i−1,j+1)が反映される重みが増大する。nが1変化するごとの当該重みの変化割合は、aをbで除した値に一致する。更に、x方向重み係数kwxがb以上になると、x方向オフセット値moffが1減算される。これは、元画像の対応注目画素(i,j)がx方向に1画素分ズレることを意味する。
以上により、図25の上側に示すような元画像のラスター画像を回転処理して、下側に示すような回転画像を得ることができる。そして、図22に示すフローのうち二次元補間処理(S703)において、計算式の[〜]内は整数同士の加算及び乗算で実現でき、除算は1回のみ(整数b2による除算のみ)で注目画素の画素値Q(m,n)を得ることができる。また、重み係数の計算(S705、S708、S712、S715)は整数の加算/減算処理で実現でき、対応注目画素の位置をオフセットすべきか否かの判定(S706,S713)は整数同士の比較処理で実現できる。従って、計算コストを著しく低減でき、処理時間を短縮できる。
なお、図22及び図25は画像を反時計方向に回転する場合を示しているが、画像を時計方向に回転することも可能である。この処理は、図22のフローチャートのS703、S707及びS714の処理において、−1を+1に変更し、+1を−1に変更すれば良い。
また、図23及び図25では説明を簡単にするために縦18画素×横18画素程度の小さな画像で説明したが、実際には、スキャナユニット21で読み取った画像データから前記抽出領域14に従って取り出された画像に対して上記の回転処理が行われることになる。なお、上述の回転処理後、前記抽出領域14の縁の部分に相当する部分を、例えば白色で塗り潰す処理を行っても良い。このマスク処理により、原稿の縁の境界が枠となって画像に現れるのを防止し、良好な読取画像を得ることができる。
更に、図23及び図25ではグレースケール画像の例で説明しているが、抽出回転処理部90の回転処理は、RGBの各色の階調について上記と同様の処理を行うことによりカラー画像の回転にも適用できる。カラー画像を回転する場合、各画素について3成分共通の重み係数を生成した後、順次色成分毎に補間演算することが好ましい。即ち、画素ごとに色成分を切り替えることが好ましい。これにより、重み係数を算出する処理を色成分間で共通化でき、処理時間の短縮化を図ることができる。
以上に示すように、本実施形態のイメージスキャナ装置101に備えられる画像自動取出部95は、特徴点検出部72と、傾き演算部74と、特徴点回転演算部81と、矩形領域演算部82と、を備える。前記特徴点検出部72は、スキャナユニット21で原稿を読み取ることにより形成された画像データから原稿輪郭の特徴点を複数検出する。前記傾き演算部74は、原稿の傾きに関する値を演算する。前記特徴点回転演算部81は、前記特徴点検出部72が検出した複数の特徴点10pを、前記原稿の傾きを矯正する方向に当該傾きの角度θだけ所定の中心点13の周りに回転移動させた回転後特徴点10qの位置を演算する。前記矩形領域演算部82は、前記回転後特徴点10qの位置に基づいて、当該回転後特徴点10qに近接する輪郭を有する傾きなしの矩形領域11を演算する。
これにより、原稿の形状及び傾きに基づいて、原稿の傾きを矯正した場合における当該原稿部分を含む矩形領域11を適切に定めることができる。従って、原稿の大きさ等の自動認識に好適である。また、原稿そのものの輪郭の特徴点から矩形領域11を定めるので、非四角形を含む様々な形状の原稿についても適当な矩形領域11を定めることができる。更に、画像データ全体を回転処理するのではなく、特徴点を回転した後の位置だけで原稿部分の矩形領域11を決定できる。従って、計算コストを効果的に低減できるとともに、処理時間を短縮することができる。更に、矩形領域11は傾きが無い状態で求められるので、データとして取扱いが容易であり、計算も簡単になる。
また、本実施形態の画像自動取出部95において、前記特徴点検出部72は、例えば図12に示すように、原稿が4辺を有する場合、その4辺のそれぞれが何れかの前記特徴点を含むように、特徴点を検出している。
これにより、検出された特徴点の位置から、原稿部分を含む矩形領域を容易に演算して決定することができる。
また、本実施形態の画像自動取出部95において、前記特徴点検出部72は、原稿輪郭から平行線を検出し、その結果から特徴点を求めている。
これにより、(例えば角部を検出するよりも)簡単な処理によって特徴点を算出することができる。
また、本実施形態の画像自動取出部95において、前記傾き演算部74は、例えば図12に示すように、前記特徴点検出部72で検出された特徴点のうち少なくとも2つの特徴点の位置から原稿の傾きに関する値を演算するように構成されている。
これにより、特徴点を傾きの検出にも用いることができ、処理の効率化及び高速化を図ることができる。
また、本実施形態の画像自動取出部95は、前記矩形領域11の大きさに基づいてサイズ情報を決定するサイズ情報決定部83を備えている。
これにより、画像データにおいて原稿部分だけを取り出したときに、出力先をどのサイズにすべきか等を適切に且つ自動的に決定することができる。また、例えばコピー機能を実現する場合に、画像データをそのまま印字データとして利用することが可能であり、印字の際に特別な処理を行う必要がない。
また、本実施形態の画像自動取出部95において、前記サイズ情報決定部83は、予め定められたA4、B5等の複数の定型サイズから前記矩形領域11の大きさに最も近い大きさの定型サイズを選択することにより、前記サイズ情報を決定するように構成されている。
これにより、画像データから原稿部分の領域を一般的な定型サイズに従って取り出すことができ、便宜である。また、矩形領域11に近い大きさの定型サイズが選択されるので、原稿部分の大きさとの関係で適切なサイズを選択することができる。更に、演算された特徴点の位置等に多少の誤差が生じても、サイズ情報が当該誤差の影響を受けることを抑制することができる。従って、同じ定型サイズの原稿を複数枚読み取らせた場合に、出力サイズが1枚ごとにバラつくことを防止することができる。
ただし、前記サイズ情報決定部83は、予め定められた定型サイズから前記矩形領域11を含むことが可能でかつ最小の定型サイズを選択することにより、前記サイズ情報を決定するように構成することもできる。
この場合も、画像データから原稿部分の領域を一般的な定型サイズに従って取り出すことができ、便宜である。また、矩形領域11を含むことが可能な最小の定型サイズが選択されるので、原稿部分の大きさとの関係で適切なサイズを選択できるとともに、取り出した画像データから原稿部分が欠落することを確実に防止することができる。
また、本実施形態の画像自動取出部95は、対象領域決定部84と、抽出領域演算部85と、抽出回転処理部90と、を備える。前記対象領域決定部84は、前記サイズ情報に相当する大きさの傾きなしの矩形である原稿対象領域12の位置を、前記矩形領域11と少なくとも一部が重なるように決定する。前記抽出領域演算部85は、前記原稿対象領域12を前記中心点13の周りに前記原稿の傾きの角度θだけ回転させることにより、画像データにおける抽出領域14を演算する。前記抽出回転処理部90は、前記画像データから前記抽出領域14の部分を取り出すとともに、前記原稿の傾きを矯正するように回転処理することにより、前記原稿対象領域12に相当する画像データを得る。
これにより、画像データにおいて原稿部分を適当なサイズに従って取り出し、原稿の傾きを矯正して良好な読取画像を得ることができる。また、原稿対象領域12は前記矩形領域11と同様に傾きなしの矩形として得られるので、計算が簡単になり、処理を高速化できる。更に、傾き補正処理と取出し処理を同時並行的に行うことも容易である。
また、本実施形態の画像自動取出部95において、前記対象領域決定部84は、前記原稿対象領域12の中心が前記矩形領域11の中心と一致するように当該原稿対象領域12の位置を決定している。
これにより、得られた画像データにおいて原稿部分が中央位置に配置されるので、画像データの利便性を向上させることができる。例えば、仮に原稿部分が画像データの端に配置されると、プリンタ等で当該画像データを印刷した場合に原稿部分が用紙端部の印刷不可能領域に掛かってしまい、欠けて印刷されるおそれがある。この点、上記構成によれば原稿部分が画像データの中央に配置されるので、印刷時に原稿部分が欠ける可能性は殆どない。
また、本実施形態の画像自動取出部95において、前記抽出回転処理部90は、前記矩形領域11の縁に相当する部分を所定の色で塗り潰す処理を行う。
これにより、画像データにおいて前記矩形領域11の縁の部分に原稿の縁が枠状に現れていても、塗潰し処理によって除去し、いわゆる自動枠消し機能を実現することができる。
更に、本実施形態のイメージスキャナ装置101は、原稿を読み取って画像データを取得する画像読取部115を備え、この画像データを前記画像自動取出部95で処理するように構成している。
これにより、読み取った原稿の形状及び傾きに基づいて、原稿の傾きを矯正した場合における、画像データの中での原稿部分を含む矩形領域を適切に定めることができる。従って、原稿の大きさ等の自動認識、及び、出力画像サイズの決定等に好適である。
なお、本実施形態では、データ補正部65、傾き検出部70、画像抽出決定部80、抽出回転処理部90及び符号変換部45等は、前述のとおりASIC等のハードウェアを用いて実現されている。しかしながらこれに代えて、上記の各部を、適宜の記録媒体を用いてインストールされるプログラムと、CPU41との組合せにより実現してもよい。
この場合、当該プログラムは、特徴点検出ステップと、傾き演算ステップと、特徴点回転演算ステップと、矩形領域演算ステップと、を含む。前記特徴点検出ステップでは、原稿を読み取ることにより形成された画像データから原稿輪郭の特徴点を複数検出する。前記傾き演算ステップでは、原稿の傾きに関する値を演算する。前記特徴点回転演算ステップでは、前記特徴点検出部が検出した複数の特徴点を、前記原稿の傾きを矯正する方向に当該傾きの角度だけ所定の中心点の周りに回転移動させた回転後特徴点の位置を演算する。前記矩形領域演算ステップでは、前記回転後特徴点の位置に基づいて、当該回転後特徴点に近接する輪郭を有する傾きなしの矩形領域を演算する。
この構成によっても上記と同様に、画像データにおける原稿部分の形状及び傾きに基づいて、原稿の傾きを矯正した場合における当該原稿部分を含む矩形領域を適切に定めることができる。
以上に本発明の好適な実施形態を説明したが、以上の構成は例えば以下のように変更することができる。
図3のS102の処理では、前記押さえパッド121及び押さえ部材122の白色と原稿の白色との輝度の違いを利用して、原稿画素と背景画素の検出を行っている。しかしながら、原稿画素と背景画素の検出方法としては他の方法を採ることもできる。例えば、前記押さえパッド121及び押さえ部材122に黄色のプラテンシートを貼り付ける構成とすることが考えられる。この場合、入力されたRGB値から色に関するパラメータであるCb値を公知の式により計算し、このCb値と所定の閾値とを比較することにより原稿画素と背景画素を検出することができる。
また、押さえパッド121及び押さえ部材122のプラテンシートを黒色とし、主走査方向の端部側で読み取られる黒画素を背景画素とみなすことで、原稿と背景を識別することもできる。
更には、フラットベッド部のプラテンガラス102に原稿を載置し、原稿台カバー104を開いたままの状態でスキャンを行う場合が考えられる。この場合は、原稿のない範囲は反射光が検出されず黒画素として検出されることを利用して、ラインの両端側で黒として検出される画素を背景画素と認定することができる。具体的には、イメージスキャナ装置101が原稿台カバー104の開閉を検知する適宜のセンサを備えるように構成し、原稿台カバー104が開かれていることを前記センサが検知した場合に上記の処理を行うようにすれば良い。
S104の処理で、4つの角部及び平行辺のほか、例えば左角部のラインにおける右端画素、及び、右角部のラインにおける左端画素を特徴点として検出するよう変更することができる。また、平行辺上の点を3点以上検出するように変更することができる。このように特徴点を多くした場合、矩形領域と原稿領域との差異を小さくすることができ、好ましい。
図9の平行辺検知フローでは、原稿輪郭から左右の平行辺を検出する場合に代えて、又はそれに加えて、原稿の先頭及び末尾に現れる平行辺を検出し、その結果から特徴点を検出する構成とすることができる。この場合、適宜のメモリに1枚分の画像データを格納してから処理を行うことが好ましい。
矩形領域11は、図18のように回転後特徴点10qを含むように決定することに代えて、例えば回転後特徴点10qの若干内側の領域を囲むように決定するように変更することができる。要は、原稿の領域を実質的にカバーできるように矩形領域11を定めれば良い。
矩形領域11を含むように原稿対象領域12を定めるにあたっては、図18に示すように、原稿対象領域12の中心が矩形領域11の中心と一致するように定める場合に限られない。例えば、原稿対象領域12の一隅を矩形領域11の一隅と一致するように原稿対象領域12を定めるように変更することができる。
傾き演算部74は、特徴点の位置から原稿の傾きに関する値を求める構成に限定されない。例えば文書原稿を読み取った場合、配置された文字列の傾きに基づいて原稿の傾きを演算することもできる。具体的には、画像データを小さな角度ごとに回転させながら白列(全体が白になっている行)をカウントする処理を繰り返し、最も前記白列が多くなる角度を求めることで、原稿の傾き角度を検知することができる。
図17のS603で決定される出力サイズは、読み取った画像データから抽出した領域を出力する場合の媒体サイズとして使用することに代えて、又はそれに加えて、原稿のサイズそのものを決定するための情報として用いることができる。この場合、特別なセンサを必要とすることなく、原稿がどの定型サイズであるかを自動的に検出することができる。
上記の傾き検出部70、画像抽出決定部80及び抽出回転処理部90の処理は、カラー画像に限らず、モノクロ画像に対しても同様に適用することができる。
上記の傾き検出部70、画像抽出決定部80及び抽出回転処理部90の処理は、イメージスキャナ装置101に限らず、他の画像読取装置、例えばコピー装置、ファクシミリ装置、複合機、光学式文字読取装置(OCR)等に適用することができる。