JP2008294831A - 画像歪み補正装置 - Google Patents
画像歪み補正装置 Download PDFInfo
- Publication number
- JP2008294831A JP2008294831A JP2007139359A JP2007139359A JP2008294831A JP 2008294831 A JP2008294831 A JP 2008294831A JP 2007139359 A JP2007139359 A JP 2007139359A JP 2007139359 A JP2007139359 A JP 2007139359A JP 2008294831 A JP2008294831 A JP 2008294831A
- Authority
- JP
- Japan
- Prior art keywords
- image
- tile
- vector
- character
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012937 correction Methods 0.000 title claims abstract description 37
- 239000013598 vector Substances 0.000 claims abstract description 151
- 238000006243 chemical reaction Methods 0.000 claims abstract description 52
- 238000001514 detection method Methods 0.000 claims abstract description 6
- 239000011521 glass Substances 0.000 claims description 10
- 238000003672 processing method Methods 0.000 abstract description 2
- 238000000034 method Methods 0.000 description 78
- 238000012545 processing Methods 0.000 description 74
- 230000008569 process Effects 0.000 description 66
- 238000011161 development Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000003702 image correction Methods 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Landscapes
- Image Processing (AREA)
- Editing Of Facsimile Originals (AREA)
- Facsimile Image Signal Circuits (AREA)
Abstract
【課題】 従来の歪み補正処理方式においては、スキャン画像の歪みを補正すると十分な補正が出来ないばかりか、むしろ画質が劣化してしまうという問題があった。
【解決手段】 スキャン画像の歪みを補正する画像歪み補正装置において、スキャン画像を所定の大きさのブロック毎に文字画像であるか写真画像であるかの判定をする画像判定手段と、画像反転手段において文字画像であると判定されたブロックに対しフォント情報を取得するフォント情報取得部と、フォント情報とスキャン画像を比較し、ブロック毎にスキュー角度を検出するスキュー角度検出手段と、スキュー角度検出手段により検出されたスキュー角度に応じてブロック毎に歪み補正を行う歪み補正実行手段と、フォント情報をベクタ画像に変換するベクタ画像変換部と、所定の大きさのブロックのベクタ画像をラスター画像データに展開する手段とを備えることである。
【選択図】 図1
【解決手段】 スキャン画像の歪みを補正する画像歪み補正装置において、スキャン画像を所定の大きさのブロック毎に文字画像であるか写真画像であるかの判定をする画像判定手段と、画像反転手段において文字画像であると判定されたブロックに対しフォント情報を取得するフォント情報取得部と、フォント情報とスキャン画像を比較し、ブロック毎にスキュー角度を検出するスキュー角度検出手段と、スキュー角度検出手段により検出されたスキュー角度に応じてブロック毎に歪み補正を行う歪み補正実行手段と、フォント情報をベクタ画像に変換するベクタ画像変換部と、所定の大きさのブロックのベクタ画像をラスター画像データに展開する手段とを備えることである。
【選択図】 図1
Description
本発明は画像歪み補正装置に関する。
フラットベッドスキャナを用いて読み取る原稿の多くはシート状の原稿であり、コンタクトガラス上に開閉自在の圧板を設け、コンタクトガラス上に原稿を載置した後に圧板を閉じて原稿をスキャンするようにしている。しかし、原稿としてはシート状のものに限られず、ブック原稿(本、冊子など)も原稿として扱われることがあり、そのような場合にもコンタクトガラス上にブック原稿を載置し、原稿をスキャンすることになる。
ところが、原稿としてブック原稿を用いた場合には、ブック原稿のページ綴じ部がコンタクトガラスから浮き上がってしまう。このようにブック原稿のページ綴じ部がコンタクトガラスから浮き上がってしまった場合には、ページ綴じ部が焦点面から離れてしまうため、浮き上がった部分のスキャン画像には、画像歪み、影、文字ボケなどの画像劣化が発生する。劣化した画像のページ綴じ部は読みにくく、OCRにより文字認識処理を行うときの認識率が著しく低下する。特に、厚手製本ではその割合が高く、また、ブック原稿のページ綴じ部を焦点面から離れないように加圧作業した場合には、ブック原稿自体を破損してしまうこともある。
このような問題を解決すべく、画像の濃度情報から物体の3次元形状を推定する方法を用いて、画像の歪みを補正する方法が提案されている。このような画像の濃度情報から物体の3次元形状を推定する方法としては、非特許文献1に記載されているShape from Shadingと呼ばれる方法が代表的な例である。
しかしながら、前述したShape from Shadingと呼ばれる方法によれば、計算量が多く、歪み補正処理の計算時間が長いので、実用化は困難である。
また、特開平5-161002号公報に記載されている方法によれば、三角測量方式により書籍の形状を測定するための特別な形状計測装置が必要になるため、適当ではない。
そこで、近年においては、少ない計算量で有効に歪みを補正すべく、読み取りスキャン画像のページ外形の形状を用いて書籍表面の3次元形状を推定する画像補正装置が提案されている(例えば、特開平11-41455号公報等を参照)。
図16に従来のMFPシステムの例を表す図を示す。
特開平5−161002号公報
特開平11−41455号公報
T. Wada, H. Uchida and T. Matsuyama, "Shape from Shading with Interreflections under a Proximal Light Source: Distortion-Free Copying of an Unfolded Book", International Journal Computer Vision 24(2), 125-135(1997)
ところで、コンタクトガラス上にブック原稿をセットする場合、ブック原稿の画像を下向きにしてセットする必要があり、操作者からは原稿の裏面しか見ることが出来ないようになっている。そのため、スキャン画像には、図17に示すように、ブック原稿のページ綴じ部が主走査方向に対して斜めに傾く、いわゆるスキューが生じたスキャン画像aや、図18に示すように、ブック原稿のページ綴じ部の浮き上がり方(コンタクトガラスからの距離)がページの上下で異なるために「ハの字」のような形状になるスキャン画像bが発生する場合がある。
しかしながら、従来の歪み補正処理方式においては、これらの状況を考慮していないので、このようなスキャン画像の歪みを補正すると十分な補正が出来ないばかりか、むしろ画質が劣化してしまうという問題があった。
上記課題を解決するために、本発明の第1の態様は、画像読み取りの主走査方向に対してページ綴じ部を平行にしてコンタクトガラスの上または下に接触したブック原稿を画像読み取り手段により読み取ったスキャン画像の歪みを補正する画像歪み補正装置において、
前記画像読み取り手段で読み取ったスキャン画像を所定の大きさのブロック毎に文字画像であるか写真画像であるかの判定をする画像判定手段と、
前記画像反転手段において文字画像であると判定されたブロックに対しフォント情報を取得するフォント情報取得部と、
前記フォント情報取得部にて取得したフォント情報と前記スキャン画像を比較し、前記ブロック毎にスキュー角度を検出するスキュー角度検出手段と、
前記スキュー角度検出手段により検出された前記スキュー角度に応じて前記ブロック毎に歪み補正を行う歪み補正実行手段と、
前記フォント情報取得部にて取得されたフォント情報をベクタ画像に変換するベクタ画像変換部と、
前記所定の大きさのブロックのベクタ画像をラスター画像データに展開する手段と
を設けたものである。
前記画像読み取り手段で読み取ったスキャン画像を所定の大きさのブロック毎に文字画像であるか写真画像であるかの判定をする画像判定手段と、
前記画像反転手段において文字画像であると判定されたブロックに対しフォント情報を取得するフォント情報取得部と、
前記フォント情報取得部にて取得したフォント情報と前記スキャン画像を比較し、前記ブロック毎にスキュー角度を検出するスキュー角度検出手段と、
前記スキュー角度検出手段により検出された前記スキュー角度に応じて前記ブロック毎に歪み補正を行う歪み補正実行手段と、
前記フォント情報取得部にて取得されたフォント情報をベクタ画像に変換するベクタ画像変換部と、
前記所定の大きさのブロックのベクタ画像をラスター画像データに展開する手段と
を設けたものである。
以上、説明したように本発明によれば、画像読み取りの主走査方向に対してページ綴じ部を平行にしてコンタクトガラスの上または下に接触したブック原稿を画像読み取り手段により読み取ったスキャン画像の歪みを補正する画像歪み補正装置において、前記画像読み取り手段で読み取ったスキャン画像を所定の大きさのブロック毎に文字画像であるか写真画像であるかの判定をする画像判定手段と、前記画像反転手段において文字画像であると判定されたブロックに対しフォント情報を取得するフォント情報取得部と、前記フォント情報取得部にて取得したフォント情報と前記スキャン画像を比較し、前記ブロック毎にスキュー角度を検出するスキュー角度検出手段と、前記スキュー角度検出手段により検出された前記スキュー角度に応じて前記ブロック毎に歪み補正を行う歪み補正実行手段と、前記フォント情報取得部にて取得されたフォント情報をベクタ画像に変換するベクタ画像変換部と、前記所定の大きさのブロックのベクタ画像をラスター画像データに展開する手段とを備えることにより、スキャン画像を所定の大きさごとに切り分けたブロック毎にスキュー角度を求め、前記ブロック毎に最適な歪み補正処理をすることが可能となり、より精度の高い歪み補正処理を行うことが出来る。
<実施形態1>
図1は本発明の実施形態1の画像歪み補正装置の構成を示すブロック図である。
図1は本発明の実施形態1の画像歪み補正装置の構成を示すブロック図である。
[MFP装置概要]
以下に図を用いて、本発明の装置及びその動作について詳細に説明する。
以下に図を用いて、本発明の装置及びその動作について詳細に説明する。
図1は、本発明に係るMFPコントローラの第1実施形態を示すブロック図である。
MFPコントローラ1はシステムバスブリッジ(SBB)2によりCPU3、メモリコントローラ(MC)4、汎用バス6、タイル⇔ページベクタ変換部13、ラスタ→タイルベクタ変換部14、タイルベクタ展開部(RIP)18、が接続されている。RIP18は複数の小展開部(μRIPa〜d)で構成される。
MC4の先にはシステムメモリ(Memory)5が接続されており、画像データを一時記憶するための媒体として使われる。
汎用バス6には画像データを蓄積するためのHDD8を制御するハードディスクコントローラ(HDDCont)7及び操作部(LCD)10を制御する操作部コントローラ(LCDC)9及び、MFPが接続されているネットワーク12を介して、外部機器間との画像データの転送を行うインターフェースになるLANI/F11が接続されている。
ラスタ→タイルベクタ変換部14の先には画像処理部15が接続され、さらに画像処理部15にはスキャナ16及びプリンタ17が接続されている。
また、SBB2にはRIP18が接続され、その先にはRIP18から出力されるデータを記憶するローカルメモリ(LocalMemory)19が接続されている。
コントローラ1でハンドリングされる画像データは、外部機器との入出力はページベクタ(PDL、PDF、SVGなど)、スキャナやプリンタとの入出力はラスターデータでインターフェースされる。コントローラ1では、従来のMFPと異なり、スキャン画像はタイルベクタ⇔ラスタラスタ→タイルベクタ変換部14でタイルベクタに変換される。また、DLデータはRIP18に接続されたローカルメモリ18に記憶される。従って、システムメモリ103上には、ページベクタとタイルベクタデータの2種類の画像のみが記憶される。つまり、画像サイズの大きいラスターデータ及びDLデータをシステムメモリ5に記憶する必要がなくなるため、システムメモリ上で確保しなければならない画像データ領域を削減することができる。
また、RIP18から出力されるDLデータはタイル単位に分割されたDLデータで記憶されるため、従来のページ単位のDLデータに比べ、非常に少ないメモリ容量で記憶できる。従って、ローカルメモリ19はオンチップ上に実装することが可能になり、メモリレイテンシを小さくできる。その結果、タイルデータ展開速度を高速化することが可能となる。かつ、タイリングされたデータのみを画像データとしてHDD8上に記憶すれば良いので、HDDへのアクセス速度のボトルネックが緩和され、データ処理の高速化が図れる。同時に、タイル化することによりRIPのコストダウンも可能となる。
より、高い処理能力が要求される場合は、RIP内に備えるμRIPを並列に複数実装することで処理能力を可変できる。すなわち、コントローラの処理能力がシンプルに調整できることから、スケーラビリティの確保が容易なシステムを構築できる。
以下に、本発明に係るMFPを動作させた時の各画像処理フローについて説明する。
[コピー]
図2にコピー動作させた時のMFP内のデータフローを示す。図2中に描かれた矢印はデータの流れを表す。実線で描かれた矢印はラスタ画像、破線で描かれた矢印はタイル化されたベクタ画像、1点鎖線で描かれた矢印はページ全体を記述したベクタ画像が流れることを意味する。ページベクタ及びタイルベクタ画像については、後述のタイル⇔ページベクタ変換部で詳細に説明する。
図2にコピー動作させた時のMFP内のデータフローを示す。図2中に描かれた矢印はデータの流れを表す。実線で描かれた矢印はラスタ画像、破線で描かれた矢印はタイル化されたベクタ画像、1点鎖線で描かれた矢印はページ全体を記述したベクタ画像が流れることを意味する。ページベクタ及びタイルベクタ画像については、後述のタイル⇔ページベクタ変換部で詳細に説明する。
(S21):
操作部(LCD)10より、ユーザーがコピー開始を指示すると、スキャナ14は原稿画像の読み取り動作を開始する。
操作部(LCD)10より、ユーザーがコピー開始を指示すると、スキャナ14は原稿画像の読み取り動作を開始する。
スキャナ14より画像処理部13へ入力された画像(R、G、B)は画像処理ブロックのクロック同期に周波数変換された後、以下の処理をされる。
CCDセンサのラインピッチや色収差などスキャナ特性の補正。
色空間補正やシャープネスといった入力画像データの画質補正。
入力画像データの枠消しやブック枠消しといった、画像加工。
(S22):
前記画像処理が終了し、画像処理部13から出力された画像データはラスタ→タイルベクタ変換部12に入力され、タイルベクタ変換処理を行う。すなわち、画像データを所定の大きさのブロックに分割し、各ブロック内のラスター画像に対して、ベクトル化処理を行いブロック単位のベクタ画像を生成する。
前記画像処理が終了し、画像処理部13から出力された画像データはラスタ→タイルベクタ変換部12に入力され、タイルベクタ変換処理を行う。すなわち、画像データを所定の大きさのブロックに分割し、各ブロック内のラスター画像に対して、ベクトル化処理を行いブロック単位のベクタ画像を生成する。
生成されたベクタ画像はSBB2によりバスの調停を受け、システムメモリ5へのバス権を取得し、MC4を介して、前記タイルベクタをシステムメモリ5に記憶させる。(なお、SBB2経由でデータパスが接続される場合は、基本的にバスの調停を受け、バス権を取得する手続きを踏むが以降のフロー説明では省略する。)
(S23):
システムメモリ5に記憶されたタイルベクタ画像は、HDDCont7とMC4を介してSBB2経由でHDD8に記憶される。HDD8に画像データを記憶することにより、複数部の原稿をコピーする時にソーティングをして、ページ順を変えて出力したり、MFP内に保存文書として記憶したりすることができる。
(S23):
システムメモリ5に記憶されたタイルベクタ画像は、HDDCont7とMC4を介してSBB2経由でHDD8に記憶される。HDD8に画像データを記憶することにより、複数部の原稿をコピーする時にソーティングをして、ページ順を変えて出力したり、MFP内に保存文書として記憶したりすることができる。
(S24):
HDD8に記憶されたタイルベクタ画像はプリンタ15内の不図示のCPUから送られてくるプリンタレディのタイミングに合わせて、HDDCont7により読み出され、SBB2、MC4を経由してシステムメモリ5に一時的に記憶される。
HDD8に記憶されたタイルベクタ画像はプリンタ15内の不図示のCPUから送られてくるプリンタレディのタイミングに合わせて、HDDCont7により読み出され、SBB2、MC4を経由してシステムメモリ5に一時的に記憶される。
仮に、読み取った画像データをHDD8からダイレクトにプリンタへ読み出した場合、HDD8のアクセススピードが律則になったり、汎用バス6のバスの混雑度合によりプリンタに同期して出力することが保証できなくなる。そのため、プリンタに同期してデータ転送を行う前に、システムメモリ5にページデータをスプールしておくことで、リアルタイムなスループットを保証する。
(S25):
システムメモリ5に記憶されたタイルベクタ画像は、プリンタ15からコントローラ1に送られる起動信号に従って、MC4によって読み出され、SBB2を介してRIP18に転送される。
システムメモリ5に記憶されたタイルベクタ画像は、プリンタ15からコントローラ1に送られる起動信号に従って、MC4によって読み出され、SBB2を介してRIP18に転送される。
RIP18ではまず、タイルベクタを解析し、タイル単位の描画オブジェクト(タイルDLデータ)の生成(インタプリット)を行う。生成されたタイルDLデータはローカルメモリ18に一旦記憶される。
RIP18はローカルメモリからタイルDLデータを読み出して、タイル単位のラスタ画像へと展開し、出力する。
本実施例では前述のように、RIP18内にμRIPa〜μRIPdの4つを備えている。コントローラ1はμRIPa〜μRIPdを並列に動作させることにより、タイルベクタの展開を高速に行わせる。システムのパフォーマンスはベクタ展開時間が支配的であり、このμRIPを増やすことでパフォーマンスアップが見込めるため、本発明のような構成を用いると容易にスケーラブルなシステムを構築することが可能となる。
(S26):
RIP18によってタイル単位にラスタライズされた画像データは、画像処理部に転送され、以下の処理が実行される。
RIP18によってタイル単位にラスタライズされた画像データは、画像処理部に転送され、以下の処理が実行される。
タイル単位のラスタ画像からページ単位のラスタ画像への変換処理。
プリンタの特性に合わせた出力画像の色や濃度の補正処理。
画像データを量子化して出力画像の階調変換を行う中間調処理。
プリンタI/Fクロックに同期して画像を出力するための周波数変換処理。
画像処理部15で前記画像処理を実行されたラスター画像データはプリンタ15に転送され、記録媒体上に印字され出力される。
[プリント]
図3にプリント動作させた時のMFP内のデータフローを示す。
図3にプリント動作させた時のMFP内のデータフローを示す。
(S31):
ネットワーク12に接続された外部機器より、汎用バス6に接続されたLAN I/F11がページベクタ形式の画像データを受信する。そしてSBB2の先に接続されたMC4を介してシステムメモリ5に転送する。
ネットワーク12に接続された外部機器より、汎用バス6に接続されたLAN I/F11がページベクタ形式の画像データを受信する。そしてSBB2の先に接続されたMC4を介してシステムメモリ5に転送する。
(S32):
システムメモリ5に記憶されたページベクタ画像はタイル⇔ページベクタ変換部13より読み出され、タイルベクタ変換処理を行う。すなわち、ページベクタ内に存在するオブジェクトを所定の大きさのブロック(タイル)内に収まるオブジェクトに分割し、タイル単位のベクタ画像を生成する。
システムメモリ5に記憶されたページベクタ画像はタイル⇔ページベクタ変換部13より読み出され、タイルベクタ変換処理を行う。すなわち、ページベクタ内に存在するオブジェクトを所定の大きさのブロック(タイル)内に収まるオブジェクトに分割し、タイル単位のベクタ画像を生成する。
(S33):
生成されたベクタ画像はSBB2を介して再びシステムメモリ5に記憶される。
生成されたベクタ画像はSBB2を介して再びシステムメモリ5に記憶される。
(S33):
システムメモリ5に記憶されたタイルベクタ画像は、HDDCont7とMC4を介してSBB2経由でHDD8に記憶される。HDD8に画像データを記憶することにより、複数部の原稿をコピーする時にソーティングをして、ページ順を変えて出力したり、MFP内に保存文書として記憶したりすることができる。
システムメモリ5に記憶されたタイルベクタ画像は、HDDCont7とMC4を介してSBB2経由でHDD8に記憶される。HDD8に画像データを記憶することにより、複数部の原稿をコピーする時にソーティングをして、ページ順を変えて出力したり、MFP内に保存文書として記憶したりすることができる。
(S34):
HDD8に記憶されたタイルベクタ画像はプリンタ15内の不図示のCPUから送られてくるプリンタレディのタイミングに合わせて、HDDCont7により読み出され、SBB2、MC4を経由してシステムメモリ5に一時的に記憶される。
HDD8に記憶されたタイルベクタ画像はプリンタ15内の不図示のCPUから送られてくるプリンタレディのタイミングに合わせて、HDDCont7により読み出され、SBB2、MC4を経由してシステムメモリ5に一時的に記憶される。
読み取った画像データをHDD8からダイレクトにプリンタへ読み出した場合、HDD8のアクセススピードが律則になったり、汎用バス6のバスの混雑度合によりプリンタに同期して出力することが保証できなくなる。そのため、プリンタに同期してデータ転送を行う前に、システムメモリ5に1ページ分のタイルベクタデータをスプールすることにより、リアルタイムなスループットを保証する。
(S35):
システムメモリ5に記憶されたタイルベクタ画像は、プリンタ15からコントローラ1に送られる起動信号に従って、MC4によって読み出され、SBB2を介してRIP18に転送される。
システムメモリ5に記憶されたタイルベクタ画像は、プリンタ15からコントローラ1に送られる起動信号に従って、MC4によって読み出され、SBB2を介してRIP18に転送される。
(S36):
RIP18ではまず、タイルベクタを解析し、タイル単位の描画オブジェクト(タイルDLデータ)の生成(インタプリット)を行う。生成されたタイルDLデータはローカルメモリ18に一旦記憶される。
RIP18ではまず、タイルベクタを解析し、タイル単位の描画オブジェクト(タイルDLデータ)の生成(インタプリット)を行う。生成されたタイルDLデータはローカルメモリ18に一旦記憶される。
RIP18はローカルメモリからタイルDLデータを読み出して、タイル単位のラスタ画像へと展開し、出力する。本実施例では、RIP18内に小展開部μRIPa〜μRIPdの4つを備えている。
前記μRIPa〜μRIPdを並列に動作させることにより、タイルベクタの展開を高速に行わせる。システムのパフォーマンスはベクタ展開時間が支配的であり、このμRIPを増やすことでパフォーマンスアップが見込めるため、本発明のような構成を用いると容易にスケーラブルなシステムを構築することが可能となる。
(S37):
RIP18によってタイル単位にラスタライズされた画像データは、画像処理部に転送され、以下の処理が実行される。
RIP18によってタイル単位にラスタライズされた画像データは、画像処理部に転送され、以下の処理が実行される。
タイル単位のラスタ画像からページ単位のラスタ画像への変換処理。
プリンタの特性に合わせた出力画像の色や濃度の補正処理。
画像データを量子化して出力画像の階調変換を行う中間調処理。
プリンタI/Fクロックに同期して画像を出力するための周波数変換処理。
画像処理部15で前記画像処理を実行されたラスター画像データはプリンタ15に転送され、記録媒体上に印字され出力される。
[送信]
図4にネットワーク送信させた時のMFP内のデータフローを示す。画像データをHDD8に格納するまでのフローについては、スキャン画像の場合は[コピー]とネットワーク上の外部機器からの入力された画像の場合は[プリント]と同じなので割愛する。
図4にネットワーク送信させた時のMFP内のデータフローを示す。画像データをHDD8に格納するまでのフローについては、スキャン画像の場合は[コピー]とネットワーク上の外部機器からの入力された画像の場合は[プリント]と同じなので割愛する。
(S41):
HDD8に記憶されたタイルベクタ画像はSBB2を介して、汎用バス6に接続されたHDDCont7より読み出され、システムメモリ5に一時的に記憶される。
HDD8に記憶されたタイルベクタ画像はSBB2を介して、汎用バス6に接続されたHDDCont7より読み出され、システムメモリ5に一時的に記憶される。
(S42):
システムメモリ5に記憶されたタイルベクタ画像はタイル⇔ページベクタ変換部11より読み出され、タイルベクタ変換処理を行う。すなわち、ブロック単位に分割されたオブジェクトを結合し、ページ全体でオブジェクトを記述したページベクタ画像を生成する。
システムメモリ5に記憶されたタイルベクタ画像はタイル⇔ページベクタ変換部11より読み出され、タイルベクタ変換処理を行う。すなわち、ブロック単位に分割されたオブジェクトを結合し、ページ全体でオブジェクトを記述したページベクタ画像を生成する。
(S43):
生成されたページベクタ画像はSBB2を介して再びシステムメモリ5に記憶される。
生成されたページベクタ画像はSBB2を介して再びシステムメモリ5に記憶される。
(S44):
システムメモリ5中に記憶されたページベクタ画像は、汎用バス6に接続されたLAN I/F11から読み出され、ネットワーク12に接続された外部機器へと転送される。
システムメモリ5中に記憶されたページベクタ画像は、汎用バス6に接続されたLAN I/F11から読み出され、ネットワーク12に接続された外部機器へと転送される。
本発明のように、外部機器に送信する際にタイルベクタ画像をページベクタ画像に戻し、オブジェクト数を減らすことで、送信データ量が削減できる。また、PDFやSVG等の汎用フォーマットへ容易に変換することができる。
[ラスタ−タイルベクタ変換部]
コントローラ1中のラスタ→タイルベクタ変換部14の詳細について説明する。図5はラスタータイル変換部14の内部処理フローを表す。
コントローラ1中のラスタ→タイルベクタ変換部14の詳細について説明する。図5はラスタータイル変換部14の内部処理フローを表す。
ラスタ→タイルベクタ変換部14は以下の各ステップにより実行される。
(S51)BS(ブロックセレクション):
画像処理部15より入力されたラスタイメージデータを、文字あるいは線画を含む文字・線画領域と、ハーフトーンの写真領域、不定形の画像領域その他に分ける。さらに文字・線画領域について、主に文字を含む文字領域と、主に表、図形等を含む線画領域とを分離し、線画領域は表領域と図形領域に分離する。なお、本実施形態では連結画素を検知し、該連結画素の外接矩形領域の形状・サイズ・画素密度等を用いて、属性毎の領域に分離する。
画像処理部15より入力されたラスタイメージデータを、文字あるいは線画を含む文字・線画領域と、ハーフトーンの写真領域、不定形の画像領域その他に分ける。さらに文字・線画領域について、主に文字を含む文字領域と、主に表、図形等を含む線画領域とを分離し、線画領域は表領域と図形領域に分離する。なお、本実施形態では連結画素を検知し、該連結画素の外接矩形領域の形状・サイズ・画素密度等を用いて、属性毎の領域に分離する。
文字領域については、文字段落ごとの纏まった塊をブロックとして矩形ブロック(文字領域矩形ブロック)にセグメント化される。線画領域では、表、図形等の個々のオブジェクト(表領域矩形ブロック、線画領域矩形ブロック)ごとに矩形ブロックにセグメント化される。
ハーフトーンで表現される写真領域は、画像領域矩形ブロック、背景領域矩形ブロック等のオブジェクトごとに、矩形ブロックにセグメント化される。
分離された各領域は、さらに所定の大きさの領域(タイル)単位に分割され、タイル単位で次のベクトル化ステップでベクトル化処理される。
(S52)ベクトル化ステップ:
ベクトル化処理により各属性領域のイメージデータをベクトルデータに変換する。
ベクトル化処理により各属性領域のイメージデータをベクトルデータに変換する。
ベクトル化処理では、文字領域以外の図画あるいは線、表領域のベクトル化処理と、文字領域のベクトル化種類との2種類のベクトル化処理を実行し、その処理内容は大きく異なる。また、写真領域に対しては、そのままイメージデータとして、ベクトル化は実行しない。
そこで、まず、文字ブロック以外の図画あるいは線、表領域のベクトル化処理について、図6を用いて説明する。
図6は本発明の実施形態1の文字ブロック以外の図画あるいは線、表領域のベクトル化処理の詳細を示すフローチャートである。
文字ブロック以外の図画あるいは線、表領域のベクトル化処理では、まず、ステップS1001で、処理対象の領域に対応するイメージデータに基づいて、その領域を輪郭情報を線分のつながりとして表現する形式(以下、アウトラインベクトル)へ変換するアウトラインベクトル変換処理を実行する。
次に、ステップS1002で、得られるアウトラインデータから図形認識処理を実行する。
『図形認識処理』
図形認識処理では、ステップS1001で得られるアウトラインデータに対し、アウトラインから丸、楕円、四角、三角等の図形形状を認識して抽出する、もしくはアウトラインが構成している罫線、曲線等の図形形状を認識して抽出する。
図形認識処理では、ステップS1001で得られるアウトラインデータに対し、アウトラインから丸、楕円、四角、三角等の図形形状を認識して抽出する、もしくはアウトラインが構成している罫線、曲線等の図形形状を認識して抽出する。
次に、文字領域のベクトル化処理の詳細について、図7を用いて説明する。
図7は本発明の文字領域のベクトル化処理の詳細を示すフローチャートである。
まず、ステップS1011で、文字ブロックの文字認識処理を実行する。ステップS1012で、文字ブロックのフォント認識処理を実行する。ステップS1013で、文字ブロックをアウトライン化する文字ベクトル変換処理を実行する。ステップS1014で、文字ブロックに対してフォント化処理を実行する。
ここで、ステップS1011の文字認識処理の詳細について説明する。
『文字認識処理』
文字認識処理では、文字ブロックから文字単位で切り出された文字画像に対し、パターンマッチの一手法を用いて文字認識を行い、対応する文字コードを取得する。特に、この文字認識処理は、文字画像から得られる特徴を数十次元の数値列に変換した観測特徴ベクトルと、あらかじめ字種毎に求められている辞書特徴ベクトルとを比較し、最も距離の近い字種を認識結果とする。
文字認識処理では、文字ブロックから文字単位で切り出された文字画像に対し、パターンマッチの一手法を用いて文字認識を行い、対応する文字コードを取得する。特に、この文字認識処理は、文字画像から得られる特徴を数十次元の数値列に変換した観測特徴ベクトルと、あらかじめ字種毎に求められている辞書特徴ベクトルとを比較し、最も距離の近い字種を認識結果とする。
特徴ベクトルの抽出には種々の公知手法があり、例えば、文字をメッシュ状に分割し、各メッシュブロック内の文字線を方向別に線素としてカウントしたメッシュ数次元ベクトルを特徴とする方法がある。
そして、文字ブロックに対して文字認識処理を行う場合は、まず、該当文字ブロックに対し横書き/縦書きの判定を行い、各々対応する方向に文字列を切り出し、その後、文字列から文字を切り出して文字画像を取得する。
横書き/縦書きの判定は、該当文字ブロック内で画素値に対する水平/垂直の射影を取り、水平射影の分散が大きい場合は横書き、垂直射影の分散が大きい場合は縦書きと判定する。文字列及び文字への分解は、横書きの文字ブロックである場合には、その水平方向の射影を利用して行を切り出し、さらに切り出された行に対する垂直方向の射影から、文字を切り出すことで行う。一方、縦書きの文字ブロックに対しては、水平と垂直を逆にすれば良い。
尚、この文字認識処理によって、文字認識率(パターンマッチのマッチング率)を得ることが出来る。
次に、ステップS1012のフォント認識処理の詳細について説明する。
『フォント認識処理』
フォント認識処理は、文字認識処理の際に用いる、字種数分の辞書特徴ベクトルを、文字形状種、即ち、フォント種に対して複数用意し、マッチングの際に文字コードとともにフォント種を出力することで、文字のフォントを認識する。
フォント認識処理は、文字認識処理の際に用いる、字種数分の辞書特徴ベクトルを、文字形状種、即ち、フォント種に対して複数用意し、マッチングの際に文字コードとともにフォント種を出力することで、文字のフォントを認識する。
次に、ステップS1013の文字ベクトル変換処理の詳細について、図8を用いて説明する。
『文字ベクトル変換処理』
図8は本発明の文字ベクトル変換処理の詳細を示すフローチャートである。
図8は本発明の文字ベクトル変換処理の詳細を示すフローチャートである。
尚、図8の処理単位は、文字認識処理により文字領域から分割された一文字分の文字画像とし、図8の処理では、文字領域内の全ての文字画像に対して実行する。
まず、ステップS1020で、文字認識処理によって得られた文字認識率が所定の認識率を上回っているかどうかを判定する。文字認識率が所定の認識率を上回っていると判定された場合(ステップS1020でYES)、ステップS1021に進み、各文字画像に対応して予め用意されているフォントのアウトラインデータを用いて、文字部分のフォント情報を取得して、ベクトルデータに変換する。
一方、文字認識率が所定の認識率を下回っていると判定された場合(ステップS1020でNO)、ステップS1022に進み、歪み量(スキュー角度)を求める。具体的には文字部分の画像を何段階かの角度で回転させて、回転させた画像に対し文字認識処理を行い、最も文字認識率が高かった回転角度を歪み量(スキュー角度)とする。
その後、ステップS1023にて文字部分のフォント情報を取得してステップS1024にすすむ。
ステップS1024においては、文字領域内の全ての文字に対して文字ベクトル変換が完了したかどうかの判定を行う。全ての文字に対して文字ベクトル変換が完了したと判定された場合はステップS1025に、完了していないと判定された場合はステップS1020にすすむ。
ステップS1025においては、文字領域の歪み量演算を行う。具体的にはステップS1022において求められた各文字の歪み量を合計し、ステップS1022に進んだ文字数で歪み量の合計を割ることにより、文字領域の歪み量(スキュー角度)を求める。なお、S1022に進む文字がなかった場合には、文字領域の歪み量は0とする。
次に、ステップS1021およびステップS1023のフォント化処理の詳細について説明する。
『フォント化処理』
フォント化処理では、文字ベクトル変換処理により得られたアウトラインベクトルデータ、もしくはイメージデータを用いて、各文字画像をフォントデータへ置換する。文字画像をフォントデータへ置換することで、文字ブロックは各文字が構成する文章として表現でき、編集可能となる。
フォント化処理では、文字ベクトル変換処理により得られたアウトラインベクトルデータ、もしくはイメージデータを用いて、各文字画像をフォントデータへ置換する。文字画像をフォントデータへ置換することで、文字ブロックは各文字が構成する文章として表現でき、編集可能となる。
具体的には、ステップS1021およびS1023で得られたアウトラインベクトルデータはそのまま文字コード、フォント情報、文字サイズを用いてあらかじめ与えられているフォントへ置換することが可能である。
(S53)タイルベクタ生成:
S52でa〜fのフォーマットコード情報、図形情報、関数情報といったコマンド定義形の情報にベクトル変換されたデータに対し、コントローラ1内でページベクタかタイルベクタかを判別するベクタタイプや当該タイルのページ内の座標位置など判別するためのヘッダ情報を付加する。このようにして、タイル単位にパッキングされたタイルベクタデータをSBB2へ出力する。
S52でa〜fのフォーマットコード情報、図形情報、関数情報といったコマンド定義形の情報にベクトル変換されたデータに対し、コントローラ1内でページベクタかタイルベクタかを判別するベクタタイプや当該タイルのページ内の座標位置など判別するためのヘッダ情報を付加する。このようにして、タイル単位にパッキングされたタイルベクタデータをSBB2へ出力する。
(S55)歪み補正処理:
S53で生成された1ページ分のタイルデータに対し、歪み補正処理を行う。この歪み補正処理はタイルごとに実行される。
S53で生成された1ページ分のタイルデータに対し、歪み補正処理を行う。この歪み補正処理はタイルごとに実行される。
図9はステップS55の歪み補正処理の詳細を示すフローチャートである。図9を用いて歪み補正処理を説明する。
まずステップS1030にて領域(タイル)が写真領域であるかどうかの判定が行われる。写真領域であると判定されればステップS1031へ進み、写真領域以外であると判定されればステップ1033へ進む。
次にステップS1031において、写真領域の歪み量(スキュー角度)の演算を行う。具体的には該写真領域に最も近い文字領域の歪み量を、該写真領域の歪み量とする。該写真領域に最も近い文字領域が複数存在した場合は、それら文字領域の歪み量の平均値を、該写真領域の歪み量とする。
続いてステップS1032において、歪み補正処理を行う。具体的にはステップS1031において求められたスキュー角度分、写真領域の画像を回転する。
ステップS1033においては、全てのタイルに対して歪み補正処理が終了したかどうかの判定を行う。全てのタイルに対して歪み補正処理は終了していないと判定された場合はステップS1030へ、全てのタイルに対して歪み補正処理が終了したと判断された場合は、S55の歪み補正処理は終了する。
[タイル⇔ページベクタ変換部]
コントローラ1中のタイル⇔ページベクタ変換部13の詳細について説明する。
コントローラ1中のタイル⇔ページベクタ変換部13の詳細について説明する。
図12は、ネットワーク上の外部機器のアプリケーションで作成されたドキュメントである。便宜上、ドキュメントの短手方向を‘X’方向、長手方向を‘Y’方向と定義する。
図13は図12のドキュメントのプリンタ出力を指示するページベクタ(PDLコマンド)の記述例である。
図13において、901はドキュメント全体の設定に関わるドキュメント設定命令、902は文字の描画命令、903は図形の描画命令を示している。
901から903の描画命令の詳細について説明する。
C1〜C5は、ドキュメント全体に関係するコマンドである。従って、これらのコマンドC1〜C5はドキュメント1部について1ケ所しか付いていない。これらドキュメント全体に関係するコマンドには、例えば、キャラクタセットコマンド(フォント指定コマンド)、スケーラブルフォントコマンド(スケーラブルフォントを使用するか否かを指定するコマンド)、ハードリセットコマンド(以前のプリンタ使用環境をリセットするコマンド)、などがある。C1はドキュメント設定開始コマンドである。C2はドキュメントの出力用紙サイズを表すコマンドで、この場合にはA4の設定になっている。次のC3はドキュメントの方向を示している。ポートレートとランドスケープがあるが、この場合にはポートレート(PORT)を示している。C4はドキュメントのタイプを表すコマンドで、ページベクタで構成されるドキュメントなのかタイルベクタで構成されるドキュメントなのかを表す。この場合にはページ(PAGE)となっている。C5はドキュメント設定終了コマンドである。
C6〜C21は、ドキュメント801を出力するたのコマンドである。C6はページの開始を示すためのものである。C7は文字のフォントの種類を選択するためのコマンドでこの場合には“1”という番号の付けられたフォントセットを選択している。C8はフォントの大きさを設定するもので“10ポイント”の大きさを選んでいる。C9は文字の色を設定するコマンドで、順にR(赤),G(緑),B(青)各色成分の輝度を示してある。この輝度は、0から255の256段階で量子化されているものとする。C10は文字を描画する開始位置の座標を示している。座標位置はページの左上を原点に指定する。この場合は、{10,5}の位置から文字の描画を開始するように設定されている。C11は実際に描画する文字列(XXXX…) を示している。
C12は図形描画の際の面の塗りつぶしの色を示している。色の指定は文字の色と同様である。C13は図形描画の線の色を指定するものである。C14は図形を描画する位置の座標を示している。C15は円弧を描画する際の半径を指定する命令で、この場合、“10”座標単位を表している。C16は閉円弧の描画をするものである。コマンド内の2個のパラメータは円弧を描画する際の描画開始角度と終了角度を示している。垂直情報を0度として、この場合には0度から90度の円弧を描画することを示している。C17〜C21は、C12〜C16までのコマンドと同様に面,線の色の指定,位置の指定などを行なっている。C22はコマンドの終了を指定している。
図12のドキュメントを図14で表されるようなブロック単位のタイルベクタで記述した例が図11である。図14中の2つの矢印はドキュメントの短手方向‘X’、長手方向‘Y’を表す。また図中のX方向に配列された数列はX方向のタイルID、Y方向に配列された数列はY方向のタイルIDを表す。A,B,C,DはそれぞれタイルID(0,0)、(0,1)、(2、4)、(1,5)の位置にあるタイルベクタを表す。
図15において、1101はドキュメント全体の設定に関わるドキュメント設定命令、1102は描画命令全体をあらわす、1103〜1106はタイルA,B,C,Dの描画命令を示している。1107、1108はそれぞれタイルDの文字描画命令、図形描画命令を表す。
以下に1101〜1108の描画命令の詳細について説明する。
C1〜C5は、ドキュメント全体に関係するコマンドである。従って、これらのコマンドC1〜C5はドキュメント1部について1ケ所しか付いていない。これらドキュメント全体に関係するコマンドには、例えば、キャラクタセットコマンド(フォント指定コマンド)、スケーラブルフォントコマンド(スケーラブルフォントを使用するか否かを指定するコマンド)、ハードリセットコマンド(以前のプリンタ使用環境をリセットするコマンド)、などがある。C1はドキュメント設定開始コマンドである。C2はドキュメントの出力用紙サイズを表すコマンドで、この場合にはA4の設定になっている。次のC3はドキュメントの方向を示している。ポートレートとランドスケープがあるが、この場合にはポートレート(PORT)を示している。C4はドキュメントのタイプを表すコマンドで、ページベクタで構成されるドキュメントなのかタイルベクタで構成されるドキュメントなのかを表す。この場合にはタイル(TILE)となっている。C5はドキュメント設定終了コマンドである。
C6〜C500は、ドキュメント1001を出力するたのコマンドである。C6はページの開始を示すためのものである。C7は図10のタイルAの描画コマンドの開始を示すものである。2個のパラメータはページ内におけるタイルのIDを示すものである。C8はタイルAの描画コマンドの終わりを表す。タイルAのようにオブジェクトが何も存在しない場合は、タイルの開始と終了だけが記述される。
C9は図14のタイルBの描画コマンドの開始を示すものである。C10は文字のフォントの種類を選択するためのコマンドでこの場合には“1”という番号の付けられたフォントセットを選択している。C11はフォントの大きさを設定するもので“10ポイント”の大きさを選んでいる。C12は文字の色を設定するコマンドで、順にR(赤),G(緑),B(青)各色成分の輝度を示してある。この輝度は、0から255の256段階で量子化されているものとする。C13は文字を描画する開始位置の座標を示している。C14は実際に描画する文字列(XXXX) を示している。座標位置はタイルの左上を原点に指定する。この場合は、{0,5}の位置から文字の描画を開始するように設定されている。C15はタイルBの描画コマンドの終わりを示すものである。
C100は図10のタイルCの描画コマンドの開始を示すものである。C101は図形描画の際の面の塗りつぶしの色を示している。色の指定は文字の色と同様である。C102は図形描画の線の色を指定するものである。C103は図形を描画する位置の座標を示している。C104は円弧を描画する際の半径を指定する命令で、この場合、“10”座標単位を表している。C105は閉円弧の描画をするものである。コマンド内の2個のパラメータは円弧を描画する際の描画開始角度と終了角度を示している。垂直情報を0度として、この場合には0度から90度の円弧を描画することを示している。C106はタイルCの描画コマンドの終わりを示すものである。
C120〜C131は、C9〜C15までのコマンドと同様文字描画のフォントの種類、色、大きさなどの指定及びC100〜C106同様に図形描画の面,線の色の指定,位置の指定などを行なっている。C500はページの終了すなわちコマンドの終了を指定している。
タイル⇔ページベクタ変換部13は、前述のようなページベクタとタイルベクタの変換を行う。図10はタイル⇔ページベクタ変換の内部処理フローを表す。
タイル⇔ページベクタ変換は以下のステップで実行される。
(S601):
まず、システムメモリ5中に記憶されたベクタ画像から、ヘッダ部分に相当するコマンド列を読み込み、ドキュメント全体に関するコマンド部分を解析する。前述の図13または図15のC1〜C5に相当する部分である。
まず、システムメモリ5中に記憶されたベクタ画像から、ヘッダ部分に相当するコマンド列を読み込み、ドキュメント全体に関するコマンド部分を解析する。前述の図13または図15のC1〜C5に相当する部分である。
(S602):
解析した結果、ドキュメントのタイプがページベクタ(PAGE)である場合はS603以降のステップに進み、ページベクタ→タイルベクタ変換が実行される。ドキュメントのタイプが(TILE)である場合は、S610以降のステップに進み、タイルベクタ→ページベクタ変換が実行される。
解析した結果、ドキュメントのタイプがページベクタ(PAGE)である場合はS603以降のステップに進み、ページベクタ→タイルベクタ変換が実行される。ドキュメントのタイプが(TILE)である場合は、S610以降のステップに進み、タイルベクタ→ページベクタ変換が実行される。
(S603):
オブジェクトを記述するコマンド列を読み込む。
オブジェクトを記述するコマンド列を読み込む。
(S604):
S603で読み込まれたコマンド列を解析し、記述されているオブジェクトの大きさが分割したいタイルサイズを超えているかどうかの判断を行う。オブジェクトの分割を行わない場合は、S605をスキップしS606に進み、オブジェクトの分割を行う場合はS605に進む。
S603で読み込まれたコマンド列を解析し、記述されているオブジェクトの大きさが分割したいタイルサイズを超えているかどうかの判断を行う。オブジェクトの分割を行わない場合は、S605をスキップしS606に進み、オブジェクトの分割を行う場合はS605に進む。
(S605):
このステップでは、入力されたオブジェクトの分割処理を行う。
このステップでは、入力されたオブジェクトの分割処理を行う。
例えば、図13では、902で“XXXX”を含む全ての文字列の描画コマンドを記述しているが、図14のようにタイル化した場合にはタイルBには“XXXX”しか収まらない。従って、タイルベクタでは文字列を途中で分割し、分割された後続の文字列は別の文字列として、次のタイルに記述を行う。次のタイルに記述が収まらなかったら、同様にまたタイルに含まれる文字列に分割し、分割された全ての文字列がタイルサイズに収まるまで繰り返す。文字列をどこで切るかは、フォントの種類、サイズからタイル内に収まる文字数を算出し、その数だけの文字を抽出する。902では、文字数が4つということになり、図13のC10の文字列はタイルベクタBとしては図15のC13のような記述に変換される。
また、903では図形の描画を記述しているが、903のC17〜C21で記述されている図形は、図12の4分の3円は、図14では一つのタイルに収まらないので、タイルDを含む複数のタイルに分割される。図形の分割は、図形の描画位置や図形の形、大きさからタイルの境界領域と接する部分を算出しその境界とタイル内に収まっている図形の部分領域で構成される閉領域を新たな図形として記述し直す。図13の903で記述される4分の3円は、図15では、その左下の部分領域が1108のC126からC130のような4分の1円の記述に変換される。また、残りの領域も同様な形の4分の1円の記述に変換される。
(S606):
入力されたオブジェクトのコマンド記述に対し、タイルベクタ内での描画位置へ変更するために、座標位置の変換を行う。ページベクタでは、ページの左上からの位置を記述していたのに対し、タイルベクタではタイルの左上からの位置に記述し直す。描画位置をタイル内の座標で記述することにより、座標計算に要するデータ長を削減することが可能になる。
入力されたオブジェクトのコマンド記述に対し、タイルベクタ内での描画位置へ変更するために、座標位置の変換を行う。ページベクタでは、ページの左上からの位置を記述していたのに対し、タイルベクタではタイルの左上からの位置に記述し直す。描画位置をタイル内の座標で記述することにより、座標計算に要するデータ長を削減することが可能になる。
(S607):
1つのオブジェクトに対するコマンドの記述変換が終了したら、ページ内の全てのオブジェクトのコマンドの記述変換が終了したかどうかを判断し、終了していない場合には、S603に戻り次のコマンドに対して、S603〜S607の処理を繰り返す。1つのオブジェクトに対するコマンドの処理が終了した場合には、S608へ進む。
1つのオブジェクトに対するコマンドの記述変換が終了したら、ページ内の全てのオブジェクトのコマンドの記述変換が終了したかどうかを判断し、終了していない場合には、S603に戻り次のコマンドに対して、S603〜S607の処理を繰り返す。1つのオブジェクトに対するコマンドの処理が終了した場合には、S608へ進む。
(S608):
全ての描画コマンドの記述変換が終了したら、図14のように分割された各タイル領域に対し、ページの左上から順にタイルベクタとしてシステムメモリ5への書き出しを行う。タイルベクタとしては、前述のS605、S606で記述されたコマンドに対し、タイルの始まりと終わりを示すコマンドを追加するようなフォーマットで記述される。
全ての描画コマンドの記述変換が終了したら、図14のように分割された各タイル領域に対し、ページの左上から順にタイルベクタとしてシステムメモリ5への書き出しを行う。タイルベクタとしては、前述のS605、S606で記述されたコマンドに対し、タイルの始まりと終わりを示すコマンドを追加するようなフォーマットで記述される。
まず、ページの一番最初のコマンドを書き出す時点では、システムメモリ5内にオブジェクトがない状態のタイルベクタを生成しておく。オブジェクトがないタイルベクタ、例えば図15のタイルAは、1103のように始まりと終わりのコマンドのみのC7〜C8のように記述される。次に、S603〜S607で処理されたコマンドが存在する座標のタイルに対し、オブジェクトの記述を追加する。タイルBの場合は、図15の1104のC9〜C15のような記述となる。タイルDのように同じタイルに複数のオブジェクトが存在する場合には、1106のように1107のオブジェクト記述と1108のオブジェクト記述を列記する。
(S609):
1つのオブジェクトのタイルベクタへの書き出しが終わるとそのページのオブジェクトの記述が全て終了したかどうかを判断する。終了していない、と判断された場合にはS603に戻る。ページ内の全ての処理が終了した場合には、ページ→ベクタタイル変換を終了する。
1つのオブジェクトのタイルベクタへの書き出しが終わるとそのページのオブジェクトの記述が全て終了したかどうかを判断する。終了していない、と判断された場合にはS603に戻る。ページ内の全ての処理が終了した場合には、ページ→ベクタタイル変換を終了する。
S602でドキュメントタイプがタイル(TILE)であると判断された場合の処理について述べる。
(S610):
オブジェクトを記述するコマンド列を読み込む。
オブジェクトを記述するコマンド列を読み込む。
(S611):
S610で読み込まれたコマンド列を解析し、記述されているオブジェクトがそれより以前に読み込まれたタイルと結合可能かどうかを判断する。オブジェクトの結合を行わない場合は、S612をスキップしS613に進み、オブジェクトの分割を行う場合はS612に進む。
S610で読み込まれたコマンド列を解析し、記述されているオブジェクトがそれより以前に読み込まれたタイルと結合可能かどうかを判断する。オブジェクトの結合を行わない場合は、S612をスキップしS613に進み、オブジェクトの分割を行う場合はS612に進む。
(S612):
オブジェクトが結合できるかどうかは読み込んだコマンドの座標位置や、図形の種別等を基に判断する。文字列の場合はフォントサイズやフォントの種類をもとに判断する。基本的にはS605の流れを逆にしたような形で結合を行う。
オブジェクトが結合できるかどうかは読み込んだコマンドの座標位置や、図形の種別等を基に判断する。文字列の場合はフォントサイズやフォントの種類をもとに判断する。基本的にはS605の流れを逆にしたような形で結合を行う。
(S613):
入力されたオブジェクトのコマンド記述に対し、タイルベクタ内での描画位置へ変更するために、座標位置の変換を行う。タイルベクタではタイルの左上からの位置を記述していたのに対し、ページベクタでは、ページの左上からの位置に記述し直す。
入力されたオブジェクトのコマンド記述に対し、タイルベクタ内での描画位置へ変更するために、座標位置の変換を行う。タイルベクタではタイルの左上からの位置を記述していたのに対し、ページベクタでは、ページの左上からの位置に記述し直す。
(S614):
1つのオブジェクトに対するコマンドの記述変換が終了したら、タイル内の全てのオブジェクトのコマンドの記述変換が終了したかどうかを判断し、終了していない場合には、S610に戻り、次のコマンドに対してS610〜S613の処理を繰り返す。1つのオブジェクトに対するコマンドの処理が終了した場合には、S615へ進む。
1つのオブジェクトに対するコマンドの記述変換が終了したら、タイル内の全てのオブジェクトのコマンドの記述変換が終了したかどうかを判断し、終了していない場合には、S610に戻り、次のコマンドに対してS610〜S613の処理を繰り返す。1つのオブジェクトに対するコマンドの処理が終了した場合には、S615へ進む。
(S615):
描画コマンドの記述変換が終了したら、ページベクタとしてシステムメモリ5への書き出しを行う。タイルベクタとしては、前述のS605、S606で記述されたコマンドに対し、タイルの始まりと終わりを示すコマンドを削除したようなフォーマットで記述される。
描画コマンドの記述変換が終了したら、ページベクタとしてシステムメモリ5への書き出しを行う。タイルベクタとしては、前述のS605、S606で記述されたコマンドに対し、タイルの始まりと終わりを示すコマンドを削除したようなフォーマットで記述される。
まず、ページ内の一番最初のタイルに記述されたコマンドを書き出す時点では、システムメモリ5内にオブジェクトがない状態のページベクタを生成しておく。図9でいうと、C1〜C6、C22だけで記述されるページである。次に、S610〜S613で処理されたオブジェクトの記述を追加する。図13でいうと、902のC7〜C11の記述の部分がそれにあたる。この場合のオブジェクトは文字列{XXXX・・・YY・・}を表しているがこれは、S612で図15の1104や1107等で記述される各タイルの文字列を順次結合したオブジェクトの記述に変更されている。
(S616):
1つコマンドのページベクタへの書き出しが終わるとそのタイルのオブジェクトの記述が全て終了したかどうかを判断する。終了していない、と判断された場合にはS610に戻る。タイル内の全ての処理が終了した場合には、S617に進む。
1つコマンドのページベクタへの書き出しが終わるとそのタイルのオブジェクトの記述が全て終了したかどうかを判断する。終了していない、と判断された場合にはS610に戻る。タイル内の全ての処理が終了した場合には、S617に進む。
(S609):
1つのタイルベクタの書き出しが終わるとそのページのタイルの記述が全て終了したかどうかを判断する。終了していない、と判断された場合にはS610に戻る。ページ内の全てのタイルの処理が終了した場合には、タイル→ページベクタ変換を終了する。
1つのタイルベクタの書き出しが終わるとそのページのタイルの記述が全て終了したかどうかを判断する。終了していない、と判断された場合にはS610に戻る。ページ内の全てのタイルの処理が終了した場合には、タイル→ページベクタ変換を終了する。
[タイルベクタ展開部(RIP)]
コントローラ1中のRIP18の詳細について説明する。
コントローラ1中のRIP18の詳細について説明する。
まず、コピーやプリント、送信といった画像データの処理を開始する前に、ローカルメモリ19の初期化と、作成する描画オブジェクトの解像度の設定を行っておく。本実施例では、生成解像度は600dpiとし、ポイントサイズやmm等の単位系で指定された印刷コマンドは、この値を用いてドット数に変換されることになる。
タイルベクタの展開は以下のステップで行われる。
(S71):
システムメモリ5よりSBB2を経由してRIP18に一定サイズ分入力されたタイルベクタはローカルメモリ19のタイルベクタ領域に一時的に格納される。
システムメモリ5よりSBB2を経由してRIP18に一定サイズ分入力されたタイルベクタはローカルメモリ19のタイルベクタ領域に一時的に格納される。
(S72):
タイルベクタがローカルメモリ19に取り込まれたら、μRIPa〜dはタイル展開処理が終了しているかどうかを判断する。μRIPがベクタデータの展開中であれば、展開可能になるまで、S72の状態で待機する。
タイルベクタがローカルメモリ19に取り込まれたら、μRIPa〜dはタイル展開処理が終了しているかどうかを判断する。μRIPがベクタデータの展開中であれば、展開可能になるまで、S72の状態で待機する。
(S73):
μRIPa〜dのいずれかがベクタデータの展開可能になれば、予め定められた文法に従ってローカルメモリ19に格納されたタイルベクタのコマンド解析を行う。
μRIPa〜dのいずれかがベクタデータの展開可能になれば、予め定められた文法に従ってローカルメモリ19に格納されたタイルベクタのコマンド解析を行う。
(S74):
解釈されたコマンドが、描画命令か排紙命令かを判断し、描画命令と判断された場合にはS75に、排紙命令と判断された場合にはS76に分岐する。
解釈されたコマンドが、描画命令か排紙命令かを判断し、描画命令と判断された場合にはS75に、排紙命令と判断された場合にはS76に分岐する。
(S75):
S74にて、前記データが描画命令であると判断された場合には、描画オブジェクト(DL)生成を行う。タイルベクタ内のコマンドが文字描画命令であれば、前記コマンドで指定されるフォントの書体や、文字サイズ、文字コードを元にフォントオブジェクトを生成し、文字以外の描画命令であれば、前記コマンドで指定された図形(ラインや円、多角形等)の描画オブジェクトを生成し、ローカルメモリ19のDL領域に格納する。
S74にて、前記データが描画命令であると判断された場合には、描画オブジェクト(DL)生成を行う。タイルベクタ内のコマンドが文字描画命令であれば、前記コマンドで指定されるフォントの書体や、文字サイズ、文字コードを元にフォントオブジェクトを生成し、文字以外の描画命令であれば、前記コマンドで指定された図形(ラインや円、多角形等)の描画オブジェクトを生成し、ローカルメモリ19のDL領域に格納する。
また、前記描画コマンドで指定されない印刷データであると判断された場合には、前記印刷データに応じて印字位置移動や印字環境設定等の処理がなされ、一単位分のコマンド解釈を終了する。
タイルベクタ内のコマンド全ての解釈が終了するまで前記処理を繰り返す。
(S76):
コマンドが排紙命令と判断された場合には、μRIPはローカルメモリ19上のタイルラスタメモリ領域に空き領域があるかどうかを判断する。空き領域がない場合は、他のRIPの処理が終了し、空き領域が出来るまで待機する。
コマンドが排紙命令と判断された場合には、μRIPはローカルメモリ19上のタイルラスタメモリ領域に空き領域があるかどうかを判断する。空き領域がない場合は、他のRIPの処理が終了し、空き領域が出来るまで待機する。
(S77):
タイルラスタメモリに空き領域がある場合は、S75で生成された描画オブジェクトを読み出し、タイルラスタ領域に描画(ラスタライズ)する。この時、生成解像度が600dpiであれば、タイルラスタ領域には600dpiの画像としてラスタライズされる。そして描画が終了したタイルラスタ画像は、SBB2を介して、画像出力部15に出力される。
タイルラスタメモリに空き領域がある場合は、S75で生成された描画オブジェクトを読み出し、タイルラスタ領域に描画(ラスタライズ)する。この時、生成解像度が600dpiであれば、タイルラスタ領域には600dpiの画像としてラスタライズされる。そして描画が終了したタイルラスタ画像は、SBB2を介して、画像出力部15に出力される。
(S78):
S75またはS77で一つのタイルベクタに対する、コマンド解析または描画処理が終了したら、読み込まれたタイルベクタメモリに対し全てが終了したかどうかを判断し、まだ処理が残っているようでであれば、S72に戻り、次のタイルベクタの処理を続ける。終了している場合はS79に進む。
S75またはS77で一つのタイルベクタに対する、コマンド解析または描画処理が終了したら、読み込まれたタイルベクタメモリに対し全てが終了したかどうかを判断し、まだ処理が残っているようでであれば、S72に戻り、次のタイルベクタの処理を続ける。終了している場合はS79に進む。
(S79):
1ページ分のタイルベクタに対し、全ての処理が終了したかどうかを判断し、まだ未処理のデータが残っている場合は、S71に戻りシステムメモリからタイルベクタを読み出して、処理を続ける。
1ページ分のタイルベクタに対し、全ての処理が終了したかどうかを判断し、まだ未処理のデータが残っている場合は、S71に戻りシステムメモリからタイルベクタを読み出して、処理を続ける。
1ページの処理が全て終了した場合はタイルベクタ展開を終了する。
Claims (1)
- 画像読み取りの主走査方向に対してページ綴じ部を平行にしてコンタクトガラスの上または下に接触したブック原稿を画像読み取り手段により読み取ったスキャン画像の歪みを補正する画像歪み補正装置において、
前記画像読み取り手段で読み取ったスキャン画像を所定の大きさのブロック毎に文字画像であるか写真画像であるかの判定をする画像判定手段と、
前記画像反転手段において文字画像であると判定されたブロックに対しフォント情報を取得するフォント情報取得部と、
前記フォント情報取得部にて取得したフォント情報と前記スキャン画像を比較し、前記ブロック毎にスキュー角度を検出するスキュー角度検出手段と、
前記スキュー角度検出手段により検出された前記スキュー角度に応じて前記ブロック毎に歪み補正を行う歪み補正実行手段と、
前記フォント情報取得部にて取得されたフォント情報をベクタ画像に変換するベクタ画像変換部と、
前記所定の大きさのブロックのベクタ画像をラスター画像データに展開する手段と
を備えることを特徴とする画像歪み補正装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007139359A JP2008294831A (ja) | 2007-05-25 | 2007-05-25 | 画像歪み補正装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007139359A JP2008294831A (ja) | 2007-05-25 | 2007-05-25 | 画像歪み補正装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008294831A true JP2008294831A (ja) | 2008-12-04 |
Family
ID=40169099
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007139359A Pending JP2008294831A (ja) | 2007-05-25 | 2007-05-25 | 画像歪み補正装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008294831A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009269355A (ja) * | 2008-05-09 | 2009-11-19 | Canon Inc | 画像処理装置及びその制御方法 |
KR20110067421A (ko) * | 2009-12-14 | 2011-06-22 | 삼성전자주식회사 | 화상처리장치 및 방법 |
-
2007
- 2007-05-25 JP JP2007139359A patent/JP2008294831A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009269355A (ja) * | 2008-05-09 | 2009-11-19 | Canon Inc | 画像処理装置及びその制御方法 |
KR20110067421A (ko) * | 2009-12-14 | 2011-06-22 | 삼성전자주식회사 | 화상처리장치 및 방법 |
KR101621848B1 (ko) * | 2009-12-14 | 2016-06-01 | 삼성전자주식회사 | 화상처리장치 및 방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4757120B2 (ja) | 画像処理装置及びその制御方法 | |
JP4227569B2 (ja) | 画像処理システム、画像処理装置の制御方法、プログラム及び記録媒体 | |
JP5180670B2 (ja) | 画像処理装置及び画像処理方法 | |
US7680358B2 (en) | Image processing apparatus and control method thereof, and program | |
JP4574235B2 (ja) | 画像処理装置、及びその制御方法、プログラム | |
US8384964B2 (en) | Image processing apparatus and image processing method | |
JP2007174270A (ja) | 画像処理装置、画像処理方法、記憶媒体、プログラム | |
US7551753B2 (en) | Image processing apparatus and method therefor | |
JP4150842B2 (ja) | 画像認識装置、画像認識方法および画像認識プログラムを記録したコンピュータ読取可能な記録媒体 | |
US8199967B2 (en) | Image processing apparatus, image processing method, and storage medium | |
JP4766657B2 (ja) | 画像処理装置及びその制御方法、プログラム | |
JP5178490B2 (ja) | 画像処理装置、画像処理方法、コンピュータプログラム | |
JP2011024116A (ja) | 画像処理装置、画像処理方法、プログラム | |
JP2009171563A (ja) | 画像処理装置及び画像処理方法並びに画像処理方法を実行するプログラム及び記憶媒体 | |
US8270722B2 (en) | Image processing with preferential vectorization of character and graphic regions | |
JP2008294831A (ja) | 画像歪み補正装置 | |
JP4710672B2 (ja) | 文字色判別装置、文字色判別方法、およびコンピュータプログラム | |
JP7185451B2 (ja) | 画像処理装置と画像処理方法、及びプログラム | |
JP5100354B2 (ja) | 画像処理装置、画像処理方法、及びコンピュータプログラム | |
JP4646703B2 (ja) | 画像処理装置及びその制御方法、プログラム | |
JP2006345314A (ja) | 画像処理装置および画像処理方法 | |
JP4697933B2 (ja) | 画像処理装置および画像入出力装置およびそれらの方法 | |
JP2008153764A (ja) | 画像処理システム | |
JP2009033541A (ja) | 画像処理システム | |
JP2010218106A (ja) | 画像処理装置、画像処理方法及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20100201 |