以下、添付図面に基づいて、本発明を実施するための一つの形態である印刷装置について説明する。
図1は、本実施形態の印刷装置10の構成図である。印刷装置10は、図示せぬホストコンピュータから印刷要求を受信したり図示せぬ外部機器から画像データを受信したりして印刷を行う装置である。
なお、図示せぬ外部機器としては、カメラ装置,及び、スキャナがある。このうち、カメラ装置は、静止画の画像データを取得することができるUSBポート付き装置であり、具体的には、デジタルスチルカメラ,デジタルビデオカメラ,カメラ付き携帯電話機などである。また、スキャナは、原稿台上に載置された原稿から画像を読み取って画像データに変換する装置である。印刷装置10は、図示せぬスキャナに接続されたときには、複写機又は複合機における印刷を行うユニットとして機能する。
この印刷装置10は、主要な構成として、外部I/F装置11,操作表示盤12,給紙機構13,印刷機構14,DRAM15,ROM16,CPU17,EEPROM18,及び、ASIC19を、内蔵している。
外部I/F装置11は、図示せぬホストコンピュータからの印刷要求の受信,又は、図示せぬ外部機器からの画像データの受信を行うためのいわゆる通信インターフェースポートである。具体的には、外部I/F装置11は、IEEE1284規格に従った通信を行うためのパラレルポート,セントロニクス仕様のパラレルポート,イーサネット(米ゼロックス社,米インテル社,米コンパックコンピュータ社商標)仕様のLANボード,IEEE1394規格に従った通信を行うためのシリアルポート,USB規格に従った通信を行うためのUSBポートなどである。
操作表示盤12は、利用者からの各種の指示を受け付けたり各種の画面を表示したりするための機器であり、押しボタンやタッチスクリーンを備えている。
給紙機構13は、印刷機構14に一種類以上の用紙を供給する機構であり、用紙カセットが着脱自在に装着されるスロットを幾つか備えている。印刷機構14は、給紙機構13から供給された用紙に対して実際に印刷を行なう機構である。
DRAM[Dynamic Random Access Memory]15は、図示せぬホストコンピュータからの印刷要求,又は、図示せぬ外部機器からの画像データの一時的な保管領域として、及び、その画像データについて各種の処理が行われる際の作業領域として使用される揮発性メモリである。
ROM[Read Only Memory]16は、印刷装置10を制御するためのプログラムや、印刷要求中の印刷データに基づいて画像データを生成する際に使用されるフォントデータを記憶した不揮発性メモリである。
CPU[Central Processing Unit]17は、ROM16内のプログラムに従って各部を統合的に制御する制御回路である。具体的には、このCPU17は、この印刷装置10の上面に設けられている操作表示盤12のボタンやタッチスクリーンに対する操作を通じて利用者から実行すべき処理についての指示を取得する処理,図示せぬホストコンピュータからの印刷要求又は図示せぬ外部機器からの画像データに基づいて印刷機構14へ引き渡すべき画像データを生成する処理,その画像データに基づく画像の印刷が行われるよう印刷機構14を制御する印刷制御処理を、行うものとなっている。
EEPROM[Electrically Erasable and Programmable Read Only Memory]18は、印刷に係る各種の設定を電源切断後にも保持しておくためのいわゆるフラッシュメモリである。
ASIC[Application Specific Integrated Circuit]19は、各ハードウエア11〜18間のデータや指示の遣り取りを制御する半導体集積回路であり、各ハードウエア11〜18に接続されている。このASIC19は、各ハードウエア11〜18との間のインターフェースとして、ビデオコントローラ191,IOコントローラ192,及び、メモリコントローラ193を、備えている。
ビデオコントローラ191は、印刷機構14へ供給すべき画像データをその印刷機構14内の図示せぬ走査ユニットが処理可能な形態の電気信号に変換するための回路モジュールである。
IOコントローラ192は、外部I/F装置11,操作表示盤12,及び、給紙機構13を制御するための回路モジュールである。なお、このIOコントローラ192は、図示せぬホストコンピュータから送信されてきた印刷要求や、図示せぬ外部機器から送信されてきた画像データを、外部I/F装置11からDRAM15へ直接転送する処理を行う回路モジュールにもなっている。
メモリコントローラ193は、DRAM15に対するプログラムやデータの読み書きを制御する機能,ROM16からのプログラムやデータの読み出しを制御する機能,及び、印刷機構14内の図示せぬコントローラを制御する機能を有する回路モジュールである。
以上のようなハードウエアにて構成されている本実施形態の印刷装置10では、DRAM15の記憶容量が十分でないため、その記憶容量で対処できるように、処理内容が適宜構築されている。具体的には、ページ記述言語にて作成された印刷データを含む印刷要求が図示せぬホストコンピュータから送られてきたときには、1頁分の画像データを生成してからビデオコントローラ191へ出力するのではなく、その画像データの一部を生成してからビデオコントローラ191へ出力するという処理を、その画像データの各部について順に行うようになっている。
同様に、画像データを含む印刷要求が図示せぬホストコンピュータが送られてきたときには、その画像データの一部の受信してビデオコントローラ191へ出力するという処理を、その画像データの各部について順に行うようになっている。また、図示せぬ外部機器から画像データが送られてきた場合においても、同様である。
なお、このように、印刷要求から画像データを生成する処理,及び、図示せぬホストコンピュータや図示せぬ外部機器から送られてきた画像データをDRAM15に取り込む処理は、前述した画像データ取得手段に相当している。また、これら処理を実行するCPU17,外部I/F装置11,IOコントローラ121は、前述した画像データ取得部に相当している。
ところで、図示せぬホストコンピュータからの印刷要求中の画像データに基づく画像や、図示せぬ外部機器からの画像データに基づく画像において、その解像度が低すぎて、ビデオコントローラ191へ出力するのに適さない場合がある。この場合、CPU17は、ROM16から所定のプログラムを読み込んで、この画像データに基づく画像の解像度を高める処理を行うようになっている。図2は、この処理の流れを示す図である。
処理開始後、CPU17は、解像度を高める対象となる画像(以下、原画像と表記する)の大きさ(ここでは、横の画素数をIh、縦の画素数をIvと定義する)を示す情報を、その原画像の画像データのヘッダから取得する(S101)。
続いて、CPU17は、ビデオコントローラ191へ出力するのに最適なものとして設定されている画像の大きさ(ここでは、横の画素数をOh、縦の画素数をOvと定義する)を示す情報を、EEPROM18などから取得する(S102)。
その後、CPU17は、取得した大きさの情報に基づいて、縦方向と横方向の拡大倍率を算出するとともに、算出した拡大倍率に基づいて、逆変換倍率を算出する(S103)。
ここで、逆変換倍率について説明する。なお、ここでの説明においては、原画像の各画素の座標を(x,y)と表現し、拡大後の出力画像の各画素の座標を(X,Y)と表現する。また、出力画像のX,Y座標値は、何れも、最小単位を1とする整数をとるものとする(隣接する画素同士の間の距離が1であるという意味である)。
原画像の拡大を行う場合、通常、出力画像の各画素のX座標値とY座標値にそれぞれ拡大倍率(Oh/Ih,Ov/Iv)の逆数を乗じることによって原画像における対応するx座標値とy座標値とが算出され、それらx座標値とy座標値がともに整数であった場合には、原画像におけるその座標(x,y)の画素値が出力画像の座標(X,Y)の画素値として決定され、それらx座標値とy座標値の何れか又は両方が小数であった場合には、その座標(x,y)を補間点として、その座標(x,y)の画素値が後述のように推定され、その推定された画素値が出力画像の座標(X,Y)の画素値として決定されるようになっている。
但し、出力画像のX,Y座標値の最小単位が1であると、x,y座標値が、小数点より上の値が小さい小数となってしまう場合がある。すると、これらx,y座標値に基づいて双一次補間法による重みを算出する際に、処理に負荷が掛かることとなる。このため、本実施形態では、前述した拡大倍率の逆数に256という数値を乗じてなる数を、逆変換倍率として規定している。
この256という数値は、実質的には、原画像において隣接する画素同士の間の長さを1ではなく256として表現するものとして機能する。このように原画像における一区間の長さが256と表現されると、拡大倍率が16以下である場合において、出力画像の座標(X,Y)に対応する原画像の座標(x,y)の座標値における小数点より上の値を大きくすることができ、小数点以下の値を切り捨てて演算することができるようになる。但し、原画像におけるx,y座標値が、256という値を累積したものとして表現してしまうと、x,y座標値が極端に大きくなってしまう。このため、以下の処理では、x,y座標値が256に達するたびに、それら値を0にリセットして、256という値を、隣接画素同士の一区間の長さのみを表すものとして限定的に使用している(二区間以上の長さを表すのに用いない)。
なお、ステップS101〜S103は、前述した倍率取得手段に相当し、これらステップS101〜S103を実行するCPU17は、前述した倍率取得部に相当している。
以上に説明した逆変換倍率((Ih/Oh)×256,(Iv/Ov)×256)を算出した後(S103)、CPU17は、原画像の画像データが所定の大きさ毎に分割されたうちの一つ(以下、分割原画像データと表記する)を記憶しておくための記憶領域をDRAM15内に確保し(S104),その分割原画像データをその記憶領域に取り込む(S105)。
続いて、CPU17は、DRAM15内の上記記憶領域に取り込まれた分割原画像データに基づいて後述のように作成される画像データ(以下、分割出力画像データと表記する)を記憶するための記憶領域を確保する(S106)。
その後、CPU17は、DRAM15に取り込んだ分割原画像データについて、後述の画素補間処理を実行する(S107)。
そして、この画素補間処理の実行が終了すると、CPU17は、完成した分割出力画像データをビデオコントローラ191へ出力する処理を実行し(S108)、次の分割原画像データの有無を判別する(S109)。CPU17は、次の分割原画像データがあれば(S109;NO)、再度、その分割原画像データの記憶領域の確保(S104)、その分割原画像データの取り込み(S105),及び、分割出力画像データの記憶領域の確保(S106)を行って、その分割原画像データについての後述の画素補間処理を実行する(S107)。そして、このような処理を繰り返すことによって、処理すべき分割原画像データがなくなると(S109;YES)、CPU17は、図2に係る処理を終了する。
なお、ステップS108は、前述した画像データ出力手段に相当しており、このステップS108を実行するCPU17は、前述した画像データ出力部に相当している。
次に、画素補間処理について説明する。図3乃至図8は、画素補間処理の流れを示す図である。
まず、CPU17は、図3に示されるように、変数Xにゼロを代入するとともに、変数Yにゼロを代入する(S201)。
続いて、CPU17は、分割出力画像における座標値Yに対応する分割原画像でのy座標値を算出する(S202)。具体的には、CPU17は、座標値Xに横方向の逆変換倍率((Ih/Oh)×256)を乗じ、その結果からさらに128を引いて得られる値を、y座標値とする。
なお、この128という値は、256に0.5を乗じて得た値であり、すなわち、互いに隣接する原画素同士の一区間の半分(半画素)を示している。つまり、逆変換後の座標値から128を引くことによって、出力画像の座標(X,Y)について参照する原画素の座標を、半画素分だけ負側(左側)にずらしていることになる。
ここで、半画素分だけ負側にずらす理由について説明する。なお、ここでは、理解し易くするため、原画像の座標値に256を乗じない状態で説明する。例えば、図9(a)に示されるように原画像が3×3個の画素からなるとして、この原画像を縦三倍横三倍に拡大するときに、図9(b)に示されるように、出力画像の座標(0,0)に対応する原画像での座標が(0,0)にあると規定したとする(図9(b)の座標(0,0)に黒丸が配置されているのが、この規定を意味する)。この場合において、原画像の座標(0,1)の画素Aと座標(2,1)の画素Bとに注目する。図9(b)において白丸にて示される補間点は、双一次補間法においては、原画像上における原画素(黒丸)との距離に反比例した重みをその原画素の画素値に乗じて得た値を、自己の画素値の一部として取得する。従って、逆に言えば、例えば画素Bは、自己の右上,右下,左上,左下の領域にある補間点(図9(b)において一点鎖線で囲まれた補間点)に、自己の画素値を分配することとなる。一方、画素Aは、自己の右上,右下の領域にある補間点(図9(b)において破線で囲まれた補間点)にしか、自己の画素値を分配しない。すなわち、画素Aは、自己の画素値の半分しか、補間点の画素値の積み上げに利用しないこととなる。このため、本実施形態では、図9(c)に示されるように、出力画像の座標(X,Y)に対応する原画素の座標を半画素分だけ負側(左側及び上側)ずらすことによって、画素Aに対しても、画素値を分配すべき補間点のある左上,左下領域を、与えるようにしている。この結果、出力画像の座標(0,0)に対応する原画像での座標は、(−0.5,−0.5)となり、また、出力画像上の補間点は、原画像におけるx,y座標値がともに整数である座標上に、必ずしも、対応する座標を持たないこととなる。
続いて、CPU17は、分割出力画像における座標値Yに対応するx座標値を算出する(S203)。具体的には、CPU17は、座標値Xに縦方向の逆変換倍率((Iv/Ov)×256)を乗じ、その結果からさらに128を引いて得られる値を、x座標値とする。
なお、これらステップS202,S203は、前述した補間点定義手段に相当しており、これらステップS202,S203を実行するCPU17は、前述した補間点定義部に相当している。
続いて、CPU17は、原画像における座標(X,Y)に対応する座標(x,y)の画素値を双一次補間法によって算出する際に参照すべき原画素の座標を特定するためのサブルーチンを行う(S204)。図10は、このサブルーチンの流れを示す図である。
このサブルーチンの開始後、CPU17は、原画像上における整数(負を含む)の座標値を持つ座標のうち、座標(x,y)を囲む4つの座標を特定した後、それら4つの座標のうち、座標(x,y)の左上及び左下にある座標のx座標値を、処理対象範囲左端位置を示す変数xlに代入し、座標(x,y)の右上及び右下にある座標のx座標値を、処理対象範囲右端位置を示す変数xrに代入し、座標(x,y)の左上及び右上にある座標のy座標値を、処理対象範囲上端位置を示す変数ytに代入し、座標(x,y)の左下及び右下にある座標のy座標値を、処理対象範囲下端位置を示す変数ybに代入する(S301)。
続いて、CPU17は、処理対象範囲左端位置を示す変数xlが0よりも小さいか否かを、判別する(S302)。そして、変数xlが0よりも小さかった場合(S302;YES)、CPU17は、処理対象範囲左端位置を示す変数xlの代入値と処理対象範囲右端位置を示す変数xrの代入値とを1だけ増やす(S303)。一方、変数xlが0よりも小さくなかった場合(S302;NO)、CPU17は、処理対象範囲右端位置を示す変数xrが分割原画像のx方向の最大値xmaxよりも大きいか否かを、判別する(S304)。そして、CPU17は、処理対象範囲右端位置を示す変数xrが最大値xmaxよりも大きかった場合(S304;YES)、処理対象範囲左端位置を示す変数xlの代入値と処理対象範囲右端位置を示す変数xrの代入値とを1だけ減らし(S305)、処理対象範囲右端位置を示す変数xrが最大値xmaxよりも大きくなかった場合(S304;NO)、処理対象範囲左端位置を示す変数xlの代入値と処理対象範囲右端位置を示す変数xrの代入値とをそのままにする。
続いて、CPU17は、処理対象範囲上端位置を示す変数ytが0よりも小さいか否かを、判別する(S306)。そして、変数ytが0よりも小さかった場合(S306;YES)、CPU17は、処理対象範囲上端位置を示す変数ytの代入値と処理対象範囲下端位置を示す変数ybの代入値とを1だけ増やす(S307)。一方、変数ytが0よりも小さくなかった場合(S306;NO)、CPU17は、処理対象範囲下端位置を示す変数ybが分割原画像のy方向の最大値ymaxよりも大きいか否かを、判別する(S308)。そして、CPU17は、処理対象範囲下端位置を示す変数ybが最大値xmaxよりも大きかった場合(S308;YES)、処理対象範囲上端位置を示す変数ytの代入値と処理対象範囲下端位置を示す変数ybの代入値とを1だけ減らし(S309)、処理対象範囲下端位置を示す変数ybが最大値ymaxよりも大きくなかった場合(S308;NO)、処理対象範囲上端位置を示す変数ytの代入値と処理対象範囲下端位置を示す変数ybの代入値とをそのままにする。
CPU17は、以上のようにして、変数xl,xr,yt,ybの代入値を特定して、図10に係る処理を終了する。なお、この図10に示される参照原画素特定サブルーチンは、前述した逆距離生成手段に相当しており、このサブルーチンを実行するCPU17は、前述した逆距離生成部に相当している。
図10に係る処理の終了後、CPU17は、図3に示されるように、ROM16に記録されている三つのテーブルのうちの何れを以降の処理に使用するかを決定するテーブル決定処理を行う(S205〜S209)。
なお、ROM16に記録されている三つのテーブルは、何れも、x座標値からxl座標値を差し引いて得られる距離値(これは、x座標値からxr座標値を差し引いて得られる距離値を256から引いた値(逆距離値)に等しい),及び、y座標値からyt座標値を差し引いて得られる距離値(これは、y座標値からyb座標値を差し引いて得られる距離値を256から引いた値(逆距離値)に等しい)を、別の値に置換する際に使用されるテーブルである。これら三つのテーブルは、後述するように、座標(x,y)の原画像内での位置の違いに応じて、使い分けられることとなる。
具体的に説明すると、CPU17は、まず、x座標値とy座標値の何れか一方が0より小さい値であるか否かを、判別する(S205)。
そして、x座標値とy座標値の何れか一方が0より小さかった場合(S205;YES)、CPU17は、ROM16に記録されている後述の三つのテーブルのうち、原画像の左縁又は上縁にある補間点に対して用いるための左上縁用テーブルを後述の距離値決定処理に使用することを、決定する(S207)。なお、原画像の左縁とは、原画像のx方向の最小値0を下回る領域を言い、図9(c)の例で言えば、座標(0,0)〜座標(0,8)と座標(1,0)〜(1,8)とがある領域である。また、原画像の上縁とは、原画像のy方向の最小値0を下回る領域を言い、図9(c)の例で言えば、座標(0,0)〜座標(8,0)と座標(0,1)〜(8,1)とがある領域である。
一方、x座標値とy座標値の何れもが0より小さくなかった場合(S205;NO)、CPU17は、x座標値がxmaxよりも大きいか、y座標値がymaxよりも大きい状態にあるか否かを、判別する(S206)。
そして、x座標値がxmaxよりも大きいか、y座標値がymaxよりも大きい状態にあった場合(S206;YES)、CPU17は、ROM16に記録されている後述の三つのテーブルのうち、原画像の右縁又は下縁にある補間点に対して用いるための右下縁用テーブルを後述の距離値決定処理に使用することを、決定する(S208)。なお、原画像の右縁とは、原画像のx方向の最大値xmaxを上回る領域を言い、図9(c)の例で言えば、座標(8,2)〜座標(8,8)がある領域である。また、原画像の下縁とは、原画像のy方向の最大値ymaxを上回る領域を言い、図9(c)の例で言えば、座標(2,8)〜座標(8,8)がある領域である。
一方、x座標値がxmaxよりも大きくなく、且つ、y座標値がymaxよりも大きくない状態にあった場合(S206;NO)、CPU17は、ROM16に記録されている後述の三つのテーブルのうち、原画像の内部にある補間点に対して用いるための内部用テーブルを後述の距離置換処理に使用することを、決定する(S209)。なお、原画像の内部とは、原画像のx方向の最小値0から最大値xmaxまでの範囲であって、なおかつ、原画像のy方向の最小値0から最大値ymaxまでの範囲にある領域を言う。図9(c)の例で言えば、座標(2,2)〜(7,7)がある領域を言う。
以上のようにして、後述の距離値決定処理に使用するテーブルを決定した後、CPU17は、図4に示されるように、座標(xl,yt),(xr,yt),(xl,yb),(xr,yb)におけるRGBの各色成分の画素値を、分割原画素データの記憶領域から読み取る(S210)。
続いて、CPU17は、x方向エッジフラグ情報とy方向エッジフラグ情報とを、オフを示す状態でDRAM15内に記録する(S211)。なお、エッジフラグ情報とは、これ以降の判定処理(S212〜S235)における判定結果を記憶するためのフラグ情報となっている。その判定処理とは、詳しくは後述するが、簡単に説明すると、座標(x,y)の周囲にある4個の原画素からなる微少画像において画素値の濃度差が、図11に示されるようなパターンの何れかにあるか否かを判定するための処理を言う。
このようにオフの状態のエッジフラグ情報をDRAM15に記録した後(S211)、CPU17は、左上座標(xl,yt)にある原画素のR画素値及びG画素値の和と、右上座標(xr,yt)にある原画素のR画素値及びG画素値の和とについて、差分の絶対値を算出する(S212)。
その後、CPU17は、その絶対値が所定の閾値を超えているか否かを、判別する(S213)。そして、CPU17は、その絶対値が所定の閾値を超えていた場合(S213;YES)、x方向エッジフラグ情報をオフ状態からオン状態に切り替え(S214)、その絶対値が所定の閾値を超えていなかった場合(S213;NO)、x方向エッジフラグ情報をオフ状態のままにする。
続いて、CPU17は、左上座標(xl,yt)にある原画素のR画素値及びG画素値の和と、左下座標(xl,yb)にある原画素のR画素値及びG画素値の和とについて、差分の絶対値を算出する(S215)。
その後、CPU17は、その絶対値が所定の閾値を超えているか否かを、判別する(S216)。そして、CPU17は、その絶対値が所定の閾値を超えていた場合(S216;YES)、y方向エッジフラグ情報をオフ状態からオン状態に切り替え(S217)、その絶対値が所定の閾値を超えていなかった場合(S216;NO)、y方向エッジフラグ情報をオフ状態のままにする。
続いて、CPU17は、図5に示されるように、左下座標(xl,yb)にある原画素のR画素値及びG画素値の和と、右下座標(xr,yb)にある原画素のR画素値及びG画素値の和とについて、差分の絶対値を算出する(S218)。
その後、CPU17は、その絶対値が所定の閾値を超えているか否かを、判別する(S219)。そして、CPU17は、その絶対値が所定の閾値を超えていた場合(S219;YES)、x方向エッジフラグ情報の状態をオン状態に切り替え(S220)、その絶対値が所定の閾値を超えていなかった場合(S219;NO)、x方向エッジフラグ情報の状態を変更しない。
続いて、CPU17は、右上座標(xr,yt)にある原画素のR画素値及びG画素値の和と、右下座標(xr,yb)にある原画素のR画素値及びG画素値の和とについて、差分の絶対値を算出する(S221)。
その後、CPU17は、その絶対値が所定の閾値を超えているか否かを、判別する(S222)。そして、CPU17は、その絶対値が所定の閾値を超えていた場合(S222;YES)、y方向エッジフラグ情報の状態をオン状態に切り替え(S223)、その絶対値が所定の閾値を超えていなかった場合(S222;NO)、y方向エッジフラグ情報の状態を変更しない。
続いて、CPU17は、左上座標(xl,yt)にある原画素のG画素値及びB画素値の和と、右上座標(xr,yt)にある原画素のG画素値及びB画素値の和とについて、差分の絶対値を算出する(S224)。
その後、CPU17は、その絶対値が所定の閾値を超えているか否かを、判別する(S225)。そして、CPU17は、その絶対値が所定の閾値を超えていた場合(S225;YES)、x方向エッジフラグ情報の状態をオン状態に切り替え(S226)、その絶対値が所定の閾値を超えていなかった場合(S225;NO)、x方向エッジフラグ情報の状態を変更しない。
続いて、CPU17は、図6に示されるように、左上座標(xl,yt)にある原画素のG画素値及びB画素値の和と、左下座標(xl,yb)にある原画素のG画素値及びB画素値の和とについて、差分の絶対値を算出する(S227)。
その後、CPU17は、その絶対値が所定の閾値を超えているか否かを、判別する(S228)。そして、CPU17は、その絶対値が所定の閾値を超えていた場合(S228;YES)、y方向エッジフラグ情報の状態をオン状態に切り替え(S229)、その絶対値が所定の閾値を超えていなかった場合(S228;NO)、y方向エッジフラグ情報の状態を変更しない。
続いて、CPU17は、左下座標(xl,yb)にある原画素のG画素値及びB画素値の和と、右下座標(xr,yb)にある原画素のG画素値及びB画素値の和とについて、差分の絶対値を算出する(S230)。
その後、CPU17は、その絶対値が所定の閾値を超えているか否かを、判別する(S231)。そして、CPU17は、その絶対値が所定の閾値を超えていた場合(S231;YES)、x方向エッジフラグ情報の状態をオン状態に切り替え(S232)、その絶対値が所定の閾値を超えていなかった場合(S231;NO)、x方向エッジフラグ情報の状態を変更しない。
続いて、CPU17は、右上座標(xr,yt)にある原画素のG画素値及びB画素値の和と、右下座標(xr,yb)にある原画素のG画素値及びB画素値の和とについて、差分の絶対値を算出する(S233)。
その後、CPU17は、その絶対値が所定の閾値を超えているか否かを、判別する(S234)。そして、CPU17は、その絶対値が所定の閾値を超えていた場合(S234;YES)、y方向エッジフラグ情報の状態をオン状態に切り替え(S235)、その絶対値が所定の閾値を超えていなかった場合(S234;NO)、y方向エッジフラグ情報の状態を変更しない。
以上に示した判定処理(S212〜S235)を終えた後、CPU17は、図7に示されるように、座標(x,y)からその周囲にある4個の原画素までの距離の値を決定する距離決定処理を行う(S236〜S243)。
具体的に説明すると、CPU17は、まず、x方向エッジフラグ情報がオン状態にあるかオフ状態にあるかを、判別する(S236)。
そして、x方向エッジフラグ情報がオフ状態にあった場合(S236;YES)、CPU17は、x座標値からxl座標値を差し引き、その結果を256で割って得られる値を、距離値として変数pに代入する(S237)。
一方、x方向エッジフラグ情報がオン状態にあった場合(S236;NO)、CPU17は、ROM16に記録されている三つのテーブルのうち、この時点で使用することを決定しているテーブル(S205〜S209参照)を参照して、x座標値からxl座標値を差し引いて得られる値に対応する値を読み取り(S238)、読み取った値を256で割って得られる値を、距離値として変数pに代入する(S239)。
続いて、CPU17は、y方向エッジフラグ情報がオン状態にあるかオフ状態にあるかを、判別する(S240)。
そして、y方向エッジフラグ情報がオフ状態にあった場合(S240;YES)、CPU17は、y座標値からyt座標値を差し引き、その結果を256で割って得られる値を、距離値として変数qに代入する(S241)。
一方、y方向エッジフラグ情報がオン状態にあった場合(S240;NO)、CPU17は、ROM16に記録されている三つのテーブルのうち、この時点で使用することを決定しているテーブル(S205〜S209参照)を参照して、y座標値からyt座標値を差し引いて得られる値に対応する値を読み取り(S242)、読み取った値を256で割って得られる値を、距離値として変数qに代入する(S243)。
なお、ステップS237,S241は、前述した逆距離値生成手段に相当しており、ステップS212〜S235,S238,S239,S242,S243は、前述した逆距離値補正手段に相当している。また、ステップS237,S241を実行するCPU17は、前述した逆距離値生成部に相当しており、ステップS212〜S235,S238,S239,S242,S243を実行するCPU17は、前述した逆距離値補正部に相当している。
以上のようにして、変数p,qの代入値を決定した後、CPU17は、これら変数p,qを用いて、座標(x,y)の画素値をRGBの各成分について算出する(S244)。なお、算出式は、一般的な双一次補間法に用いられる算出式『補間点の画素値=(1−p)(1−9)×(左上原画素の画素値)+p(1−q)×(右上原画素の画素値)+(1−p)q×(左下原画素の画素値)+pq×(右下原画素の画素値)』と同じである。
なお、pの値は、右上原画素と右下原画素のx方向の逆距離値であり、(1−p)の値は、左上原画素と左下原画素のx方向の逆距離値である。また、qの値は、左下原画素と右下原画素のy方向の逆距離値であり、(1−q)の値は、左上原画素と右上原画素のy方向の逆距離値である。
そして、CPU17は、算出したRGBの画素値を、分割出力画像データの記憶領域としてDRAM15に確保した領域における当該座標(x,y)の位置に、保存する(S245)。
なお、ステップS244,S245は、前述した画素値生成手段に相当しており、ステップS244,S245を実行するCPU17は、前述した画素値生成部に相当している。
その後、CPU17は、図8に示されるように、変数Xが分割出力画像のX方向の最大値Xmaxに達しているか否かを、判別する(S246)。このとき、変数Xが最大値Xmaxに達していなかった場合(S246;NO)、CPU17は、変数Xの代入値を1だけ増やして(S247)、再度、ステップS203〜S245の処理を実行する。
そして、ステップS203〜S247の処理を繰り返し行うことによって、変数Xが最大値Xmaxに達したときには(S246;YES)、CPU17は、変数Xに0を代入して(S248)、変数Yが分割出力画像のY方向の最大値Ymaxに達しているか否かを、判別する(S249)。このとき、変数Yが最大値Ymaxに達していなかった場合(S249;NO)、CPU17は、変数Yの代入値を1だけ増やして(S250)、再度、ステップS202〜S248の処理を実行する。
そして、ステップS202〜S250の処理を繰り返し行うことによって、変数Yが最大値Ymaxに達したときには(S249;YES)、CPU17は、図3乃至図8に係る処理を終了する。
本実施形態の印刷装置10は、以上に説明したような処理が行われるように構成されているため、以下に説明するような作用及び効果を有する。
前述したように、本実施形態の印刷装置10において、分割原画像データがDRAM15に取り込まれると、その分割原画像の各画素の画素値に基づいて、分割出力画像の各画素の画素値が順次生成される(S201〜S250)。
このとき、その分割原画像が、風景画のように濃淡の変化が緩やかな部分を含む場合、その部分には、濃淡が鋭く変化する境界部分がないため、印刷装置10は、その部分における何れの補間点についても、その補間点の画素値を作成するために参照される4個の原画素の濃度差がないと判断する(S213;NO,S216;NO,S219;NO,S222;NO,S225;NO,S228;NO,S231;NO,且つ、S234;NO)。このため、この場合には、x方向エッジフラグ情報もy方向エッジフラグ情報も何れもオフ状態のままとなるため、一つの補間点の画素値を作成するために4個の原画素の画素値に乗ぜられる重みには、一般的な双一次補間法と同様に、距離に反比例する逆距離値が、用いられることとなる(S237,S241)。
一方、その分割原画像が、市松模様や漫画などのベタ画のような部分を含む場合、その部分には、濃淡が鋭く変化する境界部分があるため、印刷装置10は、その部分における何れかの補間点について、その補間点の画素値を作成するために参照される4個の原画素の濃度差があると判断する(S213;YES,S216;YES,S219;YES,S222;YES,S225;YES,S228;YES,S231;YES,又は、S234;YES)。このため、このように判断された補間点については、x方向エッジフラグ情報かy方向エッジフラグ情報の何れか、若しくは、双方がオン状態となるため、その補間点の画素値を作成するために4個の原画素の画素値に乗ぜられる重みには、一般的な双一次補間法と同様の距離に反比例する逆距離値が用いられるのではなく、補正された逆距離値が用いられるようになる(S238,S239,S242,S243)。
図12及び図13は、逆距離値の補正に用いられるテーブルの値を座標上にプロットしてなるグラフを示している。これらグラフにおいて、横軸は、補正前の逆距離値、縦軸は、補正後の逆距離値を示している。
このうち、図12の破線のグラフは、原画像の内部にある補間点について補正を行うときの補正前の逆距離値と補正後の逆距離値との関係を示している。この図12の破線にて示される内部用テーブルによると、原画素と補間点との距離の値が約80を下回っているときには、その逆距離値がそれより小さい逆距離値となるように補正され、逆距離値が約175を上回っているときには、その逆距離値がそれより大きい逆距離値となるように補正される。なお、図12の実線のグラフは、比較のため、テーブルを使用した補正を行わないときの逆距離値の関係(仮に補正の手続を踏んだとした場合の補正前の逆距離値と補正後の逆距離値との関係)を示している。
原画像の内部にある補間点について、原画素の画素値に対する重みを算出するための逆距離値が、このように補正されると、拡大後の画像における濃淡が変化する境界部分(エッジ)がさほど暈けないようになる。例えば、図14(a)に示されるような市松模様が、原画像の内部に存在したとして、この原画像を本実施形態の印刷装置10が拡大すると、拡大後の画像は、図14(b)に示されるような画像となる。この図14(b)の画像と、一般的な双一次補間法により拡大した結果を示す図16(b)の拡大画像とを比較して明らかなように、図14(b)の拡大画像では、白格子と黒格子との境界がやや強調されている。
また、図15は、図14(b)に示される拡大画像のC線上での画素値分布を示したグラフである。この図15に示される画素値分布と、図16の一般的な双一次補間法による拡大画像のD線上での画素値分布として図17に示されるものとを比較して明らかなように、本実施形態の印刷装置10によると、白格子と黒格子との境界及びその近傍にある画素の画素値が正弦曲線状に分布している。このグラフからも、白格子と黒格子との境界に現れる暈けの程度が低減されていることが明らかとなっている。
また、図13の実線のグラフは、原画像の左縁又は上縁にある補間点について補正を行うときの補正前の逆距離値と補正後の逆距離値との関係を示している。この図13の実線のグラフにて示される左上縁用テーブルによると、原画素と補間点との逆距離値が約50を下回っているときには、その逆距離値がそれより大きい逆距離値となるように補正され、逆距離値が約175を上回っているときにも、その逆距離値がそれより大きい逆距離値となるように補正される。
さらに、図13の破線のグラフは、原画像の右縁又は下縁にある補間点について補正を行うときの補正前の逆距離値と補正後の逆距離値との関係を示している。この図13の破線にて示される右下縁用テーブルによると、原画素と補間点との逆距離値が約80を下回っているときには、その逆距離値がそれより小さい逆距離値となるように補正され、逆距離値が約210を上回っているときにも、その逆距離値がそれより小さい逆距離値となるように補正される。
原画像の左右縁及び上下縁にある補間点について、原画素の画素値に対する重みを算出するための逆距離値が、これらのように補正されると、濃淡の変化が鋭い絵柄を含む画像におけるその濃淡の境界部分において画像が分割されて、その分割された画像をそれぞれ別個に拡大してから互いに結合するという場合であっても、最終的な拡大画像において、画像の繋ぎ目がさほど目立たなくなるようになる。例えば、図18(a)に示されるように、横縞模様と縦縞模様とからなる原画像がE−E線(縦線)に沿って分割されて、分割された画像がそれぞれ一般的な双一次補間法にて別個に拡大されて、その後互いに結合されると、図18(b)及びその拡大図である図19(a)に示されるように、結合後の拡大画像内の縦縞模様におけるE−E線上にある白縞と黒縞との境界が、他の境界における濃淡の変化と異なる濃淡の変化を持ってしまい、繋ぎ目が目立ってしまう。しかし、同じ原画像について、本実施形態の印刷装置10が、同様の処理(分割,別個に拡大,結合)を行って得た拡大画像においては、図19(b)に示されるように、E−E線の左側にある白縞の灰色部分の領域が広がり、また、E−E線の右側にある黒縞の黒の濃さがやや薄くなっている。
また、図20は、図18(b)に示される拡大画像のF線上での画素値分布を示したグラフである。この図20には、実線のグラフと破線のグラフとが示されているが、実線のグラフは、一般的な双一次補間法を用いて得た拡大画像(すなわち図19(a)の拡大画像)の画素値分布を示し、破線のグラフは、本実施形態の印刷装置10にて得た拡大画像(すなわち図19(b)の拡大画像)の画素値分布を示している。この図20に示されるように、本実施形態の印刷装置10によると、白縞が原画像の右縁にあるときには、その白縞の明るさが低減され、黒縞が原画像の左縁にあるときには、その黒縞の暗さが低減される。逆に、図示していないが、黒縞が原画像の右縁にあるときには、その黒縞の暗さが低減され、白縞が原画像の右縁にあるときには、その白縞の明るさが低減される。つまり、左上縁用テーブルと右下縁用テーブルを用いると、分割線を挟む両側の画像におけるその分割線近傍の部分の濃淡の変化が緩やかとなり、分割線による繋ぎ目が余り目立たなくなる。
なお、左上縁用テーブルと右下縁用テーブルとを用いた補正は、繋ぎ目における濃淡の変化を緩めるように作用するものであるが、これに対し、前述した内部用テーブルを用いた補正は、濃淡の変化を目立たせるように作用するものである。従って、左上縁用テーブルと右下縁用テーブルとを用いた補正は、内部用テーブルを用いた補正とは、逆に作用するものとなっている。