(57)【要約】【課題】縮小画像および拡大画像の生成速度を向上させることのできる画像処理プログラムおよび画像処理装置を提供すること。【解決手段】入力画像上の参照点の間隔が、Ｘ軸方向とＹ軸方向とで等しくなるように参照点は設定される。このため、Ｘ座標０を基点としてＸ軸方向にａ番目に位置する参照点までの距離と、Ｙ座標０を基点としてＹ軸方向にａ番目に位置する参照点までの距離とは等しくすることができる。故に、Ｘ軸方向におけるａ番目の参照点に対応する第１要素と、Ｙ軸方向におけるａ番目の参照点に対応する第２要素とを等しくすることができる。その結果、第２要素に第１要素を用いて重みを算出することができ、第２要素の算出を不要とすることができる。【選択図】図２
2008061036.tif 000002
【特許請求の範囲】
【請求項１】
画像の一辺とその一辺に交差する他辺とが異なる画素数で構成された元画像の画像データを取得するデータ取得ステップと、元画像に対し倍率を変更した生成画像の各画素の画素値の生成に際し前記データ取得ステップにて取得した画像データの画素値の内、画素生成に関与する元画像の画素値に重み付けする重み付けステップと、その重み付けステップにて重み付けされた画素値に基づいて生成画像の各画素の画素値を生成する画像データ生成ステップとを備えた画像処理プログラムにおいて、
前記画像データ生成ステップは、生成画像の各画素に対応する元画像上の各参照点を、元画像の一辺に沿った方向においては、生成画像の倍率に基づいて設定される間隔とし、前記一辺に交差する他辺に沿った方向においては、前記一辺に沿った参照点間隔と同じ間隔とする位置に設定する参照点設定ステップと、その参照点設定ステップにて設定された参照点周辺の周辺画素の画素値を抽出する画素値抽出ステップとを有し、その画素値抽出ステップにて抽出された画素値の補間演算にて生成画像の画素値を生成するものであり、
前記重み付けステップは、前記参照点設定ステップにより設定される参照点と、その参照点に対し元画像の一辺に沿った方向に位置する周辺画素との距離に基づいて、周辺画素の画素値に対する重みの第１要素を算出する第１要素算出ステップと、その第１要素算出ステップにより算出された前記第１要素を、前記参照点の一辺方向における位置を示す位置情報に対応して記憶する第１要素記憶ステップと、
前記参照点とその参照点に対し元画像の他辺に沿った方向に位置する周辺画素との距離に基づいた重みの第２要素として、前記第１要素記憶ステップにて記憶された第１要素の内、前記参照点の他辺方向における位置を示す位置情報によって抽出されるものを用い、その抽出された第２要素と、前記第１要素記憶ステップにて記憶された第１要素の内の前記参照点の一辺方向における位置を示す位置情報によって抽出される第１要素とを用いて重みを算出する重み算出ステップとを備えていることを特徴とする画像処理プログラム。
【請求項２】
前記画像データ生成ステップは、生成画像の一辺方向に沿って列状に配置される画素列毎に各画素の画素値を生成するものであり、
前記第１要素算出ステップは、前記画素列の第１行目の画素値が前記画像データ生成ステップにて生成される際に第１要素を算出すると共に、その算出された第１要素を前記第１要素記憶ステップにて記憶するものであり、
前記重み算出ステップは、前記画像データ生成ステップにて第１行目以外の異なる画素列の画素値を生成する場合には、前記第１要素記憶ステップにて記憶された第１要素を用いて重みを算出するものであることを特徴とする請求項１記載の画像処理プログラム。
【請求項３】
前記画像データ生成ステップ及び前記重み付けステップは、元画像の長辺を前記一辺として処理を行うものであり、
前記参照点設定ステップは、元画像の長辺の長さを示す画素数と、生成画像の対応する長辺の長さを示す画素数とから前記倍率を算出する長辺基準倍率算出ステップを有し、その長辺基準倍率算出ステップにて算出される倍率に基づいた間隔で参照点を設定するものであることを特徴とする請求項１又は２に記載の画像処理プログラム。
【請求項４】
生成画像の長辺方向に配置する画素数は整数値とされており、
前記画像データ生成ステップは、元画像の短辺の長さを示す画素数に対し、前記長辺基準倍率算出ステップにて算出された倍率に基づいて、生成画像における短辺の長さを示す画素数を算出する短辺画素数算出ステップと、その短辺画素数算出ステップにて算出された値において小数点以下の値を切り捨てて画素数を整数化する整数化ステップとを備え、生成画像の短辺方向に配置する画素数をその整数化ステップにて得られた画素数として、生成画像の各画素の画素値を生成するものであることを特徴とする請求項３記載の画像処理プログラム。
【請求項５】
前記画像データ取得ステップは、元画像の画像データの各画素値をラスタ形式で取得するものであり、
前記参照点設定ステップは、前記元画像の短辺が画像に対するラスタ走査の主走査方向に沿った辺である場合には、少なくとも生成画像における短辺方向第１行目の画素を仮想的に長辺方向の生成画素数となるまで増やして、各画素に対応する参照点を設定するものであり、
前記第１要素算出ステップは、短辺方向に設定された参照点のそれぞれに対応する第１要素を算出するものであり、
前記画像データ生成ステップは、生成画像の短辺方向に沿って列状に配置される画素列毎に、順次、各画素の画素値を生成するものであることを特徴とする請求項１から４のいずれかに記載の画像処理プログラム。
【請求項６】
前記画像データ生成ステップは、縮小画像の画素値を生成するものであることを特徴とする請求項１から５のいずれかに記載の画像処理プログラム。
【請求項７】
画像の一辺とその一辺に交差する他辺とが異なる画素数で構成された元画像の画像データを取得するデータ取得手段と、元画像に対し倍率を変更した生成画像の各画素の画素値の生成に際し前記データ取得手段にて取得した画像データの画素値の内、画素生成に関与する元画像の画素値に重み付けする重み付け手段と、その重み付け手段にて重み付けされた画素値に基づいて生成画像の各画素の画素値を生成する画像データ生成手段とを備えた画像処理装置において、
前記画像データ生成手段は、生成画像の各画素に対応する元画像上の各参照点を、元画像の一辺に沿った方向においては、生成画像の倍率に基づいて設定される間隔とし、前記一辺に交差する他辺に沿った方向においては、前記一辺に沿った参照点間隔と同じ間隔とする位置に設定する参照点設定手段と、その参照点設定手段にて設定された参照点周辺の周辺画素の画素値を抽出する画素値抽出手段とを有し、その画素値抽出手段にて抽出された画素値の補間演算にて生成画像の画素値を生成するものであり、
前記重み付け手段は、前記参照点設定手段により設定される参照点と、その参照点に対し元画像の一辺に沿った方向に位置する周辺画素との距離に基づいて、周辺画素の画素値に対する重みの第１要素を算出する第１要素算出手段と、その第１要素算出手段により算出された前記第１要素を、前記参照点の一辺方向における位置を示す位置情報に対応して記憶する第１要素記憶手段と、
前記参照点とその参照点に対し元画像の他辺に沿った方向に位置する周辺画素との距離に基づいた重みの第２要素として、前記第１要素記憶手段に記憶された第１要素の内、前記参照点の他辺方向における位置を示す位置情報によって抽出されるものを用い、その抽出された第２要素と、前記第１要素記憶手段に記憶された第１要素の内の前記参照点の一辺方向における位置を示す位置情報によって抽出される第１要素とを用いて重みを算出する重み算出手段とを備えていることを特徴とする画像処理装置。
【請求項８】
前記画像データ生成手段は、生成画像の一辺方向に沿って列状に配置される画素列毎に各画素の画素値を生成するものであり、
前記第１要素算出手段は、前記画素列の第１行目の画素値が前記画像データ生成手段にて生成される際に第１要素を算出すると共に、その算出された第１要素を前記第１要素記憶手段に記憶するものであり、
前記重み算出手段は、前記画像データ生成手段にて第１行目以外の異なる画素列の画素値を生成する場合には、前記第１要素記憶手段に記憶された第１要素を用いて重みを算出するものであることを特徴とする請求項７記載の画像処理装置。
【請求項９】
前記画像データ生成手段及び前記重み付け手段は、元画像の長辺を前記一辺として処理を行うものであり、
前記参照点設定手段は、元画像の長辺の長さを示す画素数と、生成画像の対応する長辺の長さを示す画素数とから前記倍率を算出する長辺基準倍率算出手段を有し、その長辺基準倍率算出手段にて算出される倍率に基づいた間隔で参照点を設定するものであることを特徴とする請求項７又は８に記載の画像処理装置。
【請求項１０】
生成画像の長辺方向に配置する画素数は整数値とされており、
前記画像データ生成手段は、元画像の短辺の長さを示す画素数に対し、前記長辺基準倍率算出手段にて算出された倍率に基づいて、生成画像における短辺の長さを示す画素数を算出する短辺画素数算出手段と、その短辺画素数算出手段にて算出された値において小数点以下の値を切り捨てて画素数を整数化する整数化手段とを備え、生成画像の短辺方向に配置する画素数をその整数化手段にて得られた画素数として、生成画像の各画素の画素値を生成するものであることを特徴とする請求項９記載の画像処理装置。
【請求項１１】
前記画像データ取得手段は、元画像の画像データの各画素値をラスタ形式で取得するものであり、
前記参照点設定手段は、前記元画像の短辺が画像に対するラスタ走査の主走査方向に沿った辺である場合には、少なくとも生成画像における短辺方向第１行目の画素を仮想的に長辺方向の生成画素数となるまで増やして、各画素に対応する参照点を設定するものであり、
前記第１要素算出手段は、短辺方向に設定された参照点のそれぞれに対応する第１要素を算出するものであり、
前記画像データ生成手段は、生成画像の短辺方向に沿って列状に配置される画素列毎に、順次、各画素の画素値を生成するものであることを特徴とする請求項７から１０のいずれかに記載の画像処理装置。
【請求項１２】
前記画像データ生成手段は、縮小画像の画素値を生成するものであることを特徴とする請求項７から１１のいずれかに記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、元の画像が縮小された縮小画像または拡大された拡大画像を生成する画像処理プログラムおよび画像処理装置に関し、特に、縮小画像および拡大画像の生成速度を向上させることのできる画像処理プログラムおよび画像処理装置に関するものである。
【背景技術】
【０００２】
従来より、パーソナルコンピュータ（以下、単に「ＰＣ」と称す）等において、作成した画像の縮小を行う場合には、近傍画素の補間によって縮小を行う方法として、バイ・リニア法、バイ・キュービック法、平均画素法などが用いられている。また、画像の拡大を行う場合には、バイ・リニア法、バイ・キュービック法などが用いられる。（特許文献１参照）。
【０００３】
ここで、縮小画像を生成する一般的なバイ・リニア法について、図５を用いて説明する。図５は、従来のバイ・リニア法について説明する図である。図５においては、小さな四角形の集合体にて模式的に画像を表現しており、小さな四角形のそれぞれがピクセル格子に相当している。ピクセル格子の各頂点（格子点）は、画素が配置される位置である。
【０００４】
図５中、左方には、１３×９画素で構成された入力画像（元画像）が表示されている。入力画像においては、各格子点のそれぞれにおける画素を黒丸で表示している。９行１３列に配置された各画素のそれぞれには、左上端を原点とし、横軸をＸ軸、縦軸をＹ軸とするＸＹ座標が付与されている。具体的には、画像左上端の画素（ピクセル）の座標が（０，０）とされ、右下端の画素に最終座標（１２，８）が付与されている。また、図５に示した入力画像は、１３×９画素を備えているので、Ｘ軸方向におけるピクセル格子間の数（ピクセル格子間の数を表す画素数）は、１３画素から１画素を減算した１２となる。Ｙ軸方向におけるピクセル格子間の数も同様に、９画素から１画素を減算した８となる。このＸ軸，Ｙ軸方向の画素数またはピクセル格子間の数が、Ｘ軸方向およびＹ軸方向の長さに相当する値となる。
【０００５】
ここで、例えば、縮小率が０．６倍で指定されると、生成される縮小画像（出力画像）は、Ｘ軸方向に７．８画素、Ｙ軸方向に５．４画素の大きさとなる。ピクセル格子間の数で表せば、生成される縮小画像は、７．２×４．８の大きさとなる。しかし、デジタル画像においては、画素数は整数値である必要があるので、小数点以下の値を切り捨て又は切り上げて整数化を行う。この整数化により、ここでは、８×５画素で構成される縮小画像が生成されている。
【０００６】
図５においては、右上方に生成される縮小画像を示した。図５に示す縮小画像は、８×５画素で構成されているので、Ｘ軸方向におけるピクセル格子間の数は７となり、Ｙ軸方向におけるピクセル格子間の数は４となる。また、各画素には、入力画像と同様に画像左上端の画素の座標を（０，０）として、（０，０）〜（７，４）の座標がそれぞれ付与されている。
【０００７】
縮小画像の画素数が決定されると、その決定された画素数分（８×５画素）の画素値を生成する。縮小画像の各画素の画素値の生成に際しては、まず、縮小画像の各画素に対応する入力画像上の座標（参照点）を決定する。言い換えれば、縮小画像の各画素の座標（ｘ，ｙ）に対応する入力画像上の参照点の座標（Ｘ，Ｙ）を決定する。
【０００８】
参照点の座標の決定においては、以下に示す２つの方法が広く知られている。図５においては、第１の方法にて参照点を入力画像上に設定する方法を縮小画像の下方左側に示し、第２の方法にて参照点を入力画像上に設定する方法を縮小画像の下方右側に示す。この縮小画像下方の入力画像上において表示された実線の白丸が、設定された参照点を示している。
【０００９】
第１の方法は、縮小画像の原点の画素に対応する参照点の座標を（０，０）とすると共に、縮小率の逆数を参照点の間隔として、入力画像の原点からその間隔ずつ進行した位置を、参照点の座標とする方法である。これによれば、各参照点の座標は、縮小画像の各画素の座標に、縮小率の逆数を乗算することによって求められる。縮小画像を縮小率の逆数倍すると、入力画像の大きさとなるからである。尚、ここでの縮小率は、上記の指定された縮小率０．６ではなく、実際に縮小画像を生成する際に用いられた画素数の比である。
【００１０】
この第１の方法によれば、図５に示すように、縮小画像の第１行目に配列される画素に対応する参照点は、入力画像の第１行目に設定され、縮小画像の第１列目に配列される画素に対応する参照点は、入力画像の第１列目に設定される。
【００１１】
具体的には、図５においては、Ｘ軸方向において１３画素を８画素にする縮小が行われているので、Ｘ軸方向の縮小率は、８／１３であり、その逆数は１３／８、即ち、１．６２５である。従って、８画素を１３画素分に配分して配置するには、入力画像の画素間隔（ピクセル格子間）の１．６２５倍ずつに参照点を配置すれば良いこととなるので、Ｘ軸方向に座標を１．６２５ずつ進めた位置に参照点のＸ座標が規定される。つまり、縮小画像の画素ｐ（０，０）に対応する入力画像上の参照点の座標を（０，０）とすると、例えば、縮小画像の画素Ｐ（１，０）に対応する入力画像上の参照点の座標は、（１．６２５，０）、縮小画像の画素ｐ（２，０）〜（７，０）に対応する入力画像上の参照点の座標は、（１．６２５×ｎ，０）となる（尚、ｎは縮小画像における画素のｘ座標の値２〜７である）。
【００１２】
同様に、Ｙ軸方向において９画素を５画素にする縮小が行われているので、Ｙ軸方向の縮小率は、５／９であり、その逆数は９／５、即ち、１．８である。従って、Ｙ軸方向に座標を１．８ずつ進めた位置に参照点のＹ座標が規定される。このため、例えば、縮小画像の画素ｐ（０，１）〜（０，４）に対応する入力画像上の参照点の座標は、（０，１．８×ｎ）となる（尚、ｎは縮小画像における画素のｙ座標の値１〜４である）。これにより、縮小画像の各画素に対応する入力画像上の各参照点のそれぞれのＸＹ座標が規定される。
【００１３】
第２の方法は、縮小画像のＹ軸に沿った両辺上の画素に対応する参照点は、入力画像のＹ軸に沿った両辺上に設定するとしたものであり、縮小画像のＸ軸方向両端の画素を除いた残りの画素に対応する参照点を、入力画像においてそのＸ軸に沿って均等に割り付ける方法である。このため、画素数ではなく、ピクセル格子間の数によって算出した縮小率の逆数を用いて、参照点は、入力画像上に割り付けられる。尚、図５に示した例においては、縮小画像のＸ軸に沿った両辺上の画素に対応する参照点についても、入力画像のＸ軸に沿った両辺上に設定するとしている。従って、この第２の方法によれば、縮小画像の第１行目に配列される画素に対応する参照点は、入力画像の第１行目に設定され、縮小画像の第１列目に配列される画素に対応する参照点は、入力画像の第１列目に設定される。その上、縮小画像の最終行に配列される画素に対応する参照点は、入力画像の最終行に設定され、縮小画像の最終列に配列される画素に対応する参照点は、入力画像の最終列に設定される。
【００１４】
具体的には、図５に示すように、８×５画素の縮小画像においては、Ｘ軸方向の８画素の内、両端の２画素に対応する参照点は、入力画像上のＹ軸に沿った両辺上に配置され、残りの６画素に対応する参照点が、入力画像のＸ軸方向に均等に割り付けられる。ピクセル格子間の数によって算出される縮小率は、入力画像のピクセル格子間の数が１２、縮小画像のピクセル格子間の数が７であるので、１２／７となり、その逆数は７／１２、即ち、約１．７１４となる。従って、入力画像のピクセル格子間の１．７１４倍の間隔で参照点を設定することにより、６つの画素に対応する６つの参照点がＸ軸方向に略均等の間隔で配置されることとなる。これにより、縮小画像の画素ｐ（０，０）に対応する入力画像上の参照点の座標は（０，０）、縮小画像の画素ｐ（７，０）に対応する入力画像上の参照点の座標は（１２，０）となり、縮小画像の画素ｐ（１，０）〜（６，０）に対応する入力画像上の参照点の座標は、（１．７１４×ｎ，０）となる（尚、ｎは縮小画像における画素のｘ座標の値１〜６である）。
【００１５】
同様に、Ｙ軸方向においてピクセル格子間隔８を４にする縮小が行われているので、縮小率は、４／８であり、その逆数は８／４、即ち、２．０である。従って、Ｙ軸方向に座標を２．０ずつ進めた位置に参照点のＹ座標が規定される。このため、例えば、縮小画像の画素ｐ（０，１）〜（０，４）に対応する入力画像上の参照点の座標は、（０，２．０×ｎ）となる（尚、ｎは縮小画像における画素のｙ座標の値１〜４である）。これにより、縮小画像の各画素に対応する入力画像上の各参照点のそれぞれのＸＹ座標が規定される。
【００１６】
縮小画像の画素に対応する参照点を決定した後は、参照点周辺の周辺画素に対する重みを算出する。この重みは、参照点とその参照点周辺の周辺画素との距離に応じた値である。バイ・リニア法では、周辺画素の画素値を単純に平均して参照点の画素とするのではなく、参照点と周辺画素との位置関係を加味して、参照点に近い画素程、より大きく参照点の画素値に寄与する割合が大きくなるように、重み付けがなされるのである。
【００１７】
図５における拡大図Ａには、バイ・リニア法における重み付けの概念を示した。縮小画像の画素ｐ（ｘ，ｙ）に対応する入力画像上の参照点Ｐ（Ｘ，Ｙ）は、入力画像本来の画素の座標には無く、本来の画素によって形成される格子内に位置している。そして、参照点が属するピクセル格子を形成する画素であって、参照点に近接する４つの画素が周辺画素となる。このため、参照点のＸＹ座標の小数点以下の値を切り捨てることにより、周辺画素の内の最も座標の小さいもの（基準周辺画素）が求められ、該基準周辺画素の座標をＰ（ｉ，ｊ）とすれば、Ｐ（ｉ＋１，ｊ）、Ｐ（ｉ，ｊ＋１）、Ｐ（ｉ＋１，ｊ＋１）の４点が周辺画素として抽出される。尚、参照点Ｐ（Ｘ，Ｙ）が、入力画像の格子点に存在する場合には、周辺画素には、その格子点上の画素が含まれる。
【００１８】
参照点と各周辺画素との位置関係、言い換えれば、参照点がどれほど周辺画素に近いかは、各周辺画素の座標と参照点との座標で形成されるエリアａ１，ａ２，ａ３，ａ４の面積で表すことができる。参照点Ｐ（Ｘ，Ｙ）が、周辺画素であるＰ（ｉ，ｊ）に近づくほど、エリアａ１の面積は縮小し、逆にエリアａ４の面積は増大する。つまり、各エリアａ１，ａ２，ａ３，ａ４それぞれの面積割合を、周辺画素Ｐ（ｉ＋１，ｊ＋１）、Ｐ（ｉ，ｊ＋１）、Ｐ（ｉ＋１，ｊ）、Ｐ（ｉ，ｊ）それぞれの重みとすることができる。
【００１９】
この重みは、拡大図Ａからも解るように、２の要素で構成されており、第１要素と第２要素との乗算によって算出される。第１要素は、参照点から各周辺画素までのＸ軸方向の距離であるｔまたは１−ｔである。距離ｔは、参照点のＸ座標から、そのＸ座標を整数化（小数点以下の切り捨て）した値を減算して求められる。また、重みの第２要素は、参照点から各周辺画素までのＹ軸方向の距離であるｓまたは１−ｓである。距離ｓは、参照点のＹ座標から、そのＹ座標を整数化（小数点以下の切り捨て）した値を減算して求められる。例えば、拡大図Ａに示した参照点Ｐの座標（Ｘ，Ｙ）は、（６．５，５．４）であるので、６．５から６を減算した値０．５が距離ｔとして算出される。同様に、５．４から５を減算した値０．４が距離ｓとして求められる。
【００２０】
尚、図５においては、このように算出される重みの第１要素である距離ｔのそれぞれを、Ｘ軸方向に配列された参照点に対応つけて中央部に表示した入力画像の上辺側に示している。また、重みの第２要素である距離ｓのそれぞれをＹ軸方向に配列された参照点に対応つけて中央部に表示した入力画像の左辺側に示している。
【００２１】
ピクセル格子間隔は１であるので、算出された各距離を乗算して算出される各エリアａ１〜ａ４の面積は、そのまま、各エリアａ１〜ａ４の面積割合となる。故に、Ｐ（ｉ，ｊ）に対する重みは距離１−ｔ×距離１−ｓ、Ｐ（ｉ＋１，ｊ）に対する重みは距離ｔ×距離１−ｓ、Ｐ（ｉ，ｊ＋１）に対する重みは距離１−ｔ×距離ｓ、Ｐ（ｉ＋１，ｊ＋１）に対する重みは距離ｔ×距離ｓとなる。
【００２２】
そして、算出された各重みで周辺画素の画素値に重み付けした後、それらの平均値を算出することで、目的とする参照点の画素値、即ち、縮小画像の画素の画素値を得る。従って、縮小画像の各画素ｐ（ｘ，ｙ）の画素値を求める演算式は、（１）式のようになる。
【００２３】
【数１】
2008061036.tif 000003
尚、縮小画像の各画素ｐ（ｘ，ｙ）をｐ（０，０）〜ｐ（ｍ−１，ｎ−１）、対応する参照点の基準周辺画素をＰ（ｉ０，ｊ０）〜Ｐ（ｉｍ−１，ｊｎ−１）、各画素ｐ（０，０）〜ｐ（ｍ−１，ｎ−１）を求めるための重みの第１要素である距離ｔをｔ０〜ｔｍ−１，第２要素である距離ｓをｓ０〜ｓｎ−１とすれば、（１）式におけるｘは、０〜ｍ−１の整数値であり、ｙは０〜ｎ−１の整数値である。また、（１）式において周辺画素の座標にて示される項には、その周辺画素の画素値が代入される。
【特許文献１】特開２００１−４３３５７号公報
【発明の開示】
【発明が解決しようとする課題】
【００２４】
しかしながら、画像を構成する画素は膨大な数であるため、各画素を補間演算にて生成するには多大な時間が必要となるという問題点があった。また、かかる補間演算においては、上記のように、補間演算に関与する各画素に重みづけを行うため、その重みを算出する処理が更に処理時間を増大（処理速度を低下）させる一因となるという問題点があった。ここで、重みの第１要素である距離ｔ及び距離１−ｔは、縮小画像を形成する画素が該縮小画像において同じ列にあれば、行が変わっても同じ値となるため、縮小画像１行目の画素値の演算において算出した各距離ｔ及び距離１−ｔの少なくとも一方を記憶し、２行目以降の画素値の演算には、記憶された距離ｔや距離１−ｔ用いる手法が提案されている。これによれば、２行目以降においては距離ｔや距離１−ｔの算出を省略することができるので、画像処理全体にかかる時間を短縮することができる。しかし、距離ｔや距離１−ｔの算出を省略した場合であっても、画像データの演算には、未だ膨大な多大な処理時間が必要となるという問題点があった。
【００２５】
本発明は、上記問題点を解決するためになされたものであり、縮小画像および拡大画像の生成速度を向上させることのできる画像処理プログラムおよび画像処理装置を提供することを目的としている。
【課題を解決するための手段】
【００２６】
この目的を達成するために、請求項１記載の画像処理プログラムは、画像の一辺とその一辺に交差する他辺とが異なる画素数で構成された元画像の画像データを取得するデータ取得ステップと、元画像に対し倍率を変更した生成画像の各画素の画素値の生成に際し前記データ取得ステップにて取得した画像データの画素値の内、画素生成に関与する元画像の画素値に重み付けする重み付けステップと、その重み付けステップにて重み付けされた画素値に基づいて生成画像の各画素の画素値を生成する画像データ生成ステップとを備えたものであり、更に、前記画像データ生成ステップは、生成画像の各画素に対応する元画像上の各参照点を、元画像の一辺に沿った方向においては、生成画像の倍率に基づいて設定される間隔とし、前記一辺に交差する他辺に沿った方向においては、前記一辺に沿った参照点間隔と同じ間隔とする位置に設定する参照点設定ステップと、その参照点設定ステップにて設定された参照点周辺の周辺画素の画素値を抽出する画素値抽出ステップとを有し、その画素値抽出ステップにて抽出された画素値の補間演算にて生成画像の画素値を生成するものであり、前記重み付けステップは、前記参照点設定ステップにより設定される参照点と、その参照点に対し元画像の一辺に沿った方向に位置する周辺画素との距離に基づいて、周辺画素の画素値に対する重みの第１要素を算出する第１要素算出ステップと、その第１要素算出ステップにより算出された前記第１要素を、前記参照点の一辺方向における位置を示す位置情報に対応して記憶する第１要素記憶ステップと、前記参照点とその参照点に対し元画像の他辺に沿った方向に位置する周辺画素との距離に基づいた重みの第２要素として、前記第１要素記憶ステップにて記憶された第１要素の内、前記参照点の他辺方向における位置を示す位置情報によって抽出されるものを用い、その抽出された第２要素と、前記第１要素記憶ステップにて記憶された第１要素の内の前記参照点の一辺方向における位置を示す位置情報によって抽出される第１要素とを用いて重みを算出する重み算出ステップとを備えている。
【００２７】
請求項２記載の画像処理プログラムは、請求項１記載の画像処理プログラムにおいて、前記画像データ生成ステップは、生成画像の一辺方向に沿って列状に配置される画素列毎に各画素の画素値を生成するものであり、前記第１要素算出ステップは、前記画素列の第１行目の画素値が前記画像データ生成ステップにて生成される際に第１要素を算出すると共に、その算出された第１要素を前記第１要素記憶ステップにて記憶するものであり、前記重み算出ステップは、前記画像データ生成ステップにて第１行目以外の異なる画素列の画素値を生成する場合には、前記第１要素記憶ステップにて記憶された第１要素を用いて重みを算出するものである。
【００２８】
請求項３記載の画像処理プログラムは、請求項１又は２に記載の画像処理プログラムにおいて、前記画像データ生成ステップ及び前記重み付けステップは、元画像の長辺を前記一辺として処理を行うものであり、前記参照点設定ステップは、元画像の長辺の長さを示す画素数と、生成画像の対応する長辺の長さを示す画素数とから前記倍率を算出する長辺基準倍率算出ステップを有し、その長辺基準倍率算出ステップにて算出される倍率に基づいた間隔で参照点を設定するものである。
【００２９】
請求項４記載の画像処理プログラムは、請求項３記載の画像処理プログラムにおいて、生成画像の長辺方向に配置する画素数は整数値とされており、前記画像データ生成ステップは、元画像の短辺の長さを示す画素数に対し、前記長辺基準倍率算出ステップにて算出された倍率に基づいて、生成画像における短辺の長さを示す画素数を算出する短辺画素数算出ステップと、その短辺画素数算出ステップにて算出された値において小数点以下の値を切り捨てて画素数を整数化する整数化ステップとを備え、生成画像の短辺方向に配置する画素数をその整数化ステップにて得られた画素数として、生成画像の各画素の画素値を生成するものである。
【００３０】
請求項５記載の画像処理プログラムは、請求項１から４のいずれかに記載の画像処理プログラムにおいて、前記画像データ取得ステップは、元画像の画像データの各画素値をラスタ形式で取得するものであり、前記参照点設定ステップは、前記元画像の短辺が画像に対するラスタ走査の主走査方向に沿った辺である場合には、少なくとも生成画像における短辺方向第１行目の画素を仮想的に長辺方向の生成画素数となるまで増やして、各画素に対応する参照点を設定するものであり、前記第１要素算出ステップは、短辺方向に設定された参照点のそれぞれに対応する第１要素を算出するものであり、前記画像データ生成ステップは、生成画像の短辺方向に沿って列状に配置される画素列毎に、順次、各画素の画素値を生成するものである。
【００３１】
請求項６記載の画像処理プログラムは、請求項１から５のいずれかに記載の画像処理プログラムにおいて、前記画像データ生成ステップは、縮小画像の画素値を生成するものである。
【００３２】
請求項７記載の画像処理装置は、画像の一辺とその一辺に交差する他辺とが異なる画素数で構成された元画像の画像データを取得するデータ取得手段と、元画像に対し倍率を変更した生成画像の各画素の画素値の生成に際し前記データ取得手段にて取得した画像データの画素値の内、画素生成に関与する元画像の画素値に重み付けする重み付け手段と、その重み付け手段にて重み付けされた画素値に基づいて生成画像の各画素の画素値を生成する画像データ生成手段とを備えたものであり、更に、前記画像データ生成手段は、生成画像の各画素に対応する元画像上の各参照点を、元画像の一辺に沿った方向においては、生成画像の倍率に基づいて設定される間隔とし、前記一辺に交差する他辺に沿った方向においては、前記一辺に沿った参照点間隔と同じ間隔とする位置に設定する参照点設定手段と、その参照点設定手段にて設定された参照点周辺の周辺画素の画素値を抽出する画素値抽出手段とを有し、その画素値抽出手段にて抽出された画素値の補間演算にて生成画像の画素値を生成するものであり、前記重み付け手段は、前記参照点設定手段により設定される参照点と、その参照点に対し元画像の一辺に沿った方向に位置する周辺画素との距離に基づいて、周辺画素の画素値に対する重みの第１要素を算出する第１要素算出手段と、その第１要素算出手段により算出された前記第１要素を、前記参照点の一辺方向における位置を示す位置情報に対応して記憶する第１要素記憶手段と、前記参照点とその参照点に対し元画像の他辺に沿った方向に位置する周辺画素との距離に基づいた重みの第２要素として、前記第１要素記憶手段に記憶された第１要素の内、前記参照点の他辺方向における位置を示す位置情報によって抽出されるものを用い、その抽出された第２要素と、前記第１要素記憶手段に記憶された第１要素の内の前記参照点の一辺方向における位置を示す位置情報によって抽出される第１要素とを用いて重みを算出する重み算出手段とを備えている。
【００３３】
請求項８記載の画像処理装置は、請求項７記載の画像処理装置において、前記画像データ生成手段は、生成画像の一辺方向に沿って列状に配置される画素列毎に各画素の画素値を生成するものであり、前記第１要素算出手段は、前記画素列の第１行目の画素値が前記画像データ生成手段にて生成される際に第１要素を算出すると共に、その算出された第１要素を前記第１要素記憶手段に記憶するものであり、前記重み算出手段は、前記画像データ生成手段にて第１行目以外の異なる画素列の画素値を生成する場合には、前記第１要素記憶手段に記憶された第１要素を用いて重みを算出するものである。
【００３４】
請求項９記載の画像処理装置は、請求項７又は８に記載の画像処理装置において、前記画像データ生成手段及び前記重み付け手段は、元画像の長辺を前記一辺として処理を行うものであり、前記参照点設定手段は、元画像の長辺の長さを示す画素数と、生成画像の対応する長辺の長さを示す画素数とから前記倍率を算出する長辺基準倍率算出手段を有し、その長辺基準倍率算出手段にて算出される倍率に基づいた間隔で参照点を設定するものである。
【００３５】
請求項１０記載の画像処理装置は、請求項９記載の画像処理装置において、生成画像の長辺方向に配置する画素数は整数値とされており、前記画像データ生成手段は、元画像の短辺の長さを示す画素数に対し、前記長辺基準倍率算出手段にて算出された倍率に基づいて、生成画像における短辺の長さを示す画素数を算出する短辺画素数算出手段と、その短辺画素数算出手段にて算出された値において小数点以下の値を切り捨てて画素数を整数化する整数化手段とを備え、生成画像の短辺方向に配置する画素数をその整数化手段にて得られた画素数として、生成画像の各画素の画素値を生成するものである。
【００３６】
請求項１１記載の画像処理装置は、請求項７から１０のいずれかに記載の画像処理装置において、前記画像データ取得手段は、元画像の画像データの各画素値をラスタ形式で取得するものであり、前記参照点設定手段は、前記元画像の短辺が画像に対するラスタ走査の主走査方向に沿った辺である場合には、少なくとも生成画像における短辺方向第１行目の画素を仮想的に長辺方向の生成画素数となるまで増やして、各画素に対応する参照点を設定するものであり、前記第１要素算出手段は、短辺方向に設定された参照点のそれぞれに対応する第１要素を算出するものであり、前記画像データ生成手段は、生成画像の短辺方向に沿って列状に配置される画素列毎に、順次、各画素の画素値を生成するものである。
【００３７】
請求項１２記載の画像処理装置は、請求項７から１１のいずれかに記載の画像処理装置において、前記画像データ生成手段は、縮小画像の画素値を生成するものである。
【発明の効果】
【００３８】
請求項１記載の画像処理プログラムによれば、データ取得ステップにより画像データが取得される。画像データ生成ステップにおける参照点設定ステップにより、元画像に対し倍率を変更した生成画像の各画素に対応する元画像上の各参照点は、元画像の一辺に沿った方向においては、生成画像の倍率に基づいて設定される間隔とし、一辺に交差する他辺に沿った方向においては、前記一辺に沿った参照点間隔と同じ間隔とする位置に設定される。そして、データ取得ステップにて取得した画像データの画素値の内、設定された参照点周辺の周辺画素の画素値が画素値抽出ステップにて抽出され、画像データ生成ステップにより、その抽出された画素値の補間演算にて生成画像の画素値が生成される。
【００３９】
補間演算がなされる画素値に対しては、重み付けステップにより重み付けが行われる。この重み付けステップによる重み付けにおいては、第１要素算出ステップにより、参照点設定ステップにより設定される参照点と、その参照点に対し元画像の一辺に沿った方向に位置する周辺画素との距離に基づいて、重みの第１要素が算出され、算出された第１要素は、第１要素記憶ステップにより、参照点の一辺方向における位置を示す位置情報に対応して記憶される。また、参照点とその参照点に対し元画像の他辺に沿った方向に位置する周辺画素との距離に基づいた重みの第２要素には、第１要素記憶ステップにて記憶された第１要素の内、参照点の他辺方向における位置を示す位置情報によって抽出されるものが用いられる。そして、その抽出された第２要素と、第１要素記憶ステップにて記憶された第１要素の内の参照点の一辺方向における位置を示す位置情報によって抽出される第１要素とを用いて、重み算出ステップにより、重みが算出される。
【００４０】
よって、算出された第１要素を第２要素として用いることができ、第２要素の算出を省略することができるので、その第２要素の算出に要する時間分、処理時間を削減して、画像処理全体にかかる処理時間を短縮することができるという効果がある。
【００４１】
本プログラムでは、一辺方向と他辺方向とにおいて同じ間隔で参照点を設定するので、結果的に、生成画像および元画像を、一辺を基準の長さとする正方形に仮想化することができる。このため、元画像の一辺方向において端部からｎ番目に配列される参照点と、他辺方向において一辺側の端部からｎ番目に配列される参照点とは、端部から参照点までの距離が同じになる。ここで、第１要素は、元画像の一辺に沿った方向の距離に基づいており、第２要素は、元画像の他辺に沿った方向の距離に基づいているので、参照点の他辺方向における位置を示す位置情報によって抽出される第１要素を第２要素に用いても、的確な重みを算出することができるという効果がある。
【００４２】
尚、位置情報としては、例えば、画像の左上端を原点とした場合における原点から参照点までの距離、座標、原点からの参照点の数などが例示される。
【００４３】
また、元画像の一辺に沿った方向に並ぶ参照点のそれぞれは、元画像の他辺に沿った方向の距離が同じであるので、それらの参照点に対応する画素値の算出に際しては、同じ第２要素を用いて重みを算出することができる。同様に、元画像の他辺に沿った方向に並ぶ参照点のそれぞれは、元画像の一辺に沿った距離が同じであるので、同じ第１要素を用いて重みを算出することができる。このため、算出された第１要素を第１要素記憶ステップにて記憶することにより、一度算出した第１要素を用いて重みを算出できる。故に、重みの算出の度に、第１要素および第２要素を算出する必要が無く、その算出回数を抑制して、生成画像を生成するに要する処理時間を削減することができるという効果がある。
【００４４】
請求項２記載の画像処理プログラムによれば、請求項１記載の画像処理プログラムの奏する効果に加え、画像データ生成ステップにより、生成画像の一辺方向に沿って列状に配置される画素列毎に各画素の画素値が生成される。そして、生成画像の画素列の第１行目の画素値が画像データ生成ステップにて生成される際に、第１要素算出ステップにより第１要素が算出される。算出された第１要素は、第１要素記憶ステップにて記憶される。また、画像データ生成ステップにて第１行目以外の異なる画素列の画素値を生成する場合には、重み算出ステップによる重みの算出は、第１要素記憶ステップにて記憶された第１要素を用いて実行される。よって、画像データ生成ステップによる画素値生成の初期段階から、その画素値の生成に必要な重みの算出に、記憶された第１要素を用いることができ、第１要素の算出回数を、最低限必要な回数とすることができるという効果がある。つまり、本プログラムによれば、一行目の画素値を生成する際に、各画素に対する重みの第１要素を１度算出するだけでよいので、重みを算出する処理を効率的に実行することができるという効果がある。
【００４５】
請求項３記載の画像処理プログラムによれば、請求項１又は２に記載の画像処理プログラムの奏する効果に加え、長辺基準倍率算出ステップにより、元画像の長辺の長さを示す画素数と、生成画像の対応する長辺の長さを示す画素数とから倍率が算出され、その長辺基準倍率算出ステップにて算出された倍率に基づいた間隔で、参照点設定ステップにより参照点が設定される。そして、画像データ生成ステップ及び重み付けステップにより、元画像の長辺を一辺として処理が行われる。このため、画像データ生成ステップにより、元画像の長辺を一辺として生成画像の各画素値が生成される。また、重み付けステップにより、元画像の長辺を一辺として重みの算出が実行される。長辺方向に設定される参照点の数は、短辺方向に設定される参照点の数よりも多いので、重み付けステップにおける第１要素算出ステップにて算出される重みの第１要素は、長辺方向に設定される参照点に対応して算出する方が、短辺方向に設定される参照点に対応して算出するよりも、多く、第１要素を算出することができる。よって、第１要素算出ステップにて算出される重みの第１要素にて、第２要素を網羅することができるという効果がある。つまり、第１要素記憶ステップにて記憶された第１要素を、その位置情報に基づいて、第２要素として抽出する場合に、対応する第１要素がないといった事態を回避することができ、第２要素の全てを記憶されている第１要素で補うことができるという効果がある。
【００４６】
請求項４記載の画像処理プログラムによれば、請求項３記載の画像処理プログラムの奏する効果に加え、生成画像の長辺方向に配置する画素数は整数値とされており、元画像の短辺の長さを示す画素数に対し、長辺基準倍率算出ステップにて算出された倍率に基づいて、生成画像における短辺の長さを示す画素数が、短辺画素数算出ステップによって算出される。そして、整数化ステップにより、短辺画素数算出ステップにて算出された値において小数点以下の値が切り捨ててられ、画素数が整数化される。生成画像の短辺方向に配置する画素数は、その整数化ステップにて得られた画素数とされ、画像データ生成ステップにより、生成画像の各画素の画素値が生成される。よって、元画像の範囲内に参照点を設定することができ、参照点が元画像の範囲内に設定不能となることを回避できるという効果がある。
【００４７】
つまり、長辺基準倍率算出ステップにて算出された倍率と、端数を含む画素数の値との演算すると、元画像の短辺に存在する画素数となる。このため、短辺画素数算出ステップにて算出された値に対し、小数点以下の値を切り上げて生成画像の短辺の画素数とすると、上記倍率との演算結果にて求められる画素数は、当然、本来の元画像の短辺の画素数を超えてしまう。本プログラムでは、上記倍率に基づいた間隔で、参照点設定ステップにより参照点が設定されるため、上記の小数点以下の値を切り上げた値を生成画像の短辺の画素数とし、その画素数を、上記の倍率に基づいて得られる間隔で配置しようとすれば、参照点は、元画像の短辺には収まりきらない。
【００４８】
一方で、小数点以下の値を切り捨てて生成画像の短辺の画素数とすると、その画素数に上記の倍率で演算して求められる画素数は、元画像の短辺の画素数を超えることはない。従って、生成画像の画素に対応する参照点を、上記倍率に基づいた間隔で、短辺方向に設定しても、その参照点は、必ず、元画像の範囲内に設定されることとなり、参照点が元画像上において設定不能となることを回避できるという効果がある。
【００４９】
請求項５記載の画像処理プログラムによれば、請求項１から４のいずれかに記載の画像処理プログラムの奏する効果に加え、画像データ取得ステップにより、元画像の画像データの各画素値は、ラスタ形式で取得される。そして、元画像の短辺が画像に対するラスタ走査の主走査方向に沿った辺である場合には、参照点設定ステップにおいて、少なくとも生成画像における短辺方向第１行目の画素を仮想的に長辺方向の生成画素数となるまで増やして、各画素に対応する参照点が設定される。そして、第１要素算出ステップにて、短辺方向に設定された参照点のそれぞれに対応する第１要素が算出され、画像データ生成ステップにより、生成画像の短辺方向に沿って列状に配置される画素列毎に、順次、各画素の画素値が生成される。
【００５０】
一般に、多くの画像処理プログラムにおいては、左上端となる画素から右側方向へ向かって（画像に配列された画素の行方向に沿って）順次処理を実行し、その行の最終画素に到達すると、次の行の左端の画素から再び右側方向に向かって順次処理を行ういわゆるラスタ走査で、画素値を生成、処理することが多い。従って、本プログラムにおいて、元画像の画像データの各画素値を、ラスタ形式（ラスタ走査に応じた順）で取得することにより、このラスタ走査に従った処理形態で、各画素値をスムーズに生成することができるという効果がある。また、本プログラムを、従来の画像処理のプログラムに搭載する（組み込む）ことを容易とすることができ、既存プログラムとの互換性を保つことができるという効果がある。故に、本プログラムを、汎用性の高いプログラムとすることができる。
【００５１】
また、本プログラムにおいては、元画像の短辺が画像に対するラスタ走査の主走査方向（画像に配列された画素の行方向）に沿った辺である場合には、参照点設定ステップにおいて、少なくとも生成画像における短辺方向第１行目の画素を仮想的に長辺方向の生成画素数となるまで増やして、各画素に対応する参照点を設定するので、第１要素算出ステップおよび画像データ生成ステップにおいて、ラスタ走査の方向に従って画像処理を行いつつ、長辺を基準とする第１要素の算出や画素値生成を実行することができ、長辺を基準として第１要素、画素値を算出する上記した利点を享受することができるという効果がある。
【００５２】
請求項６記載の画像処理プログラムによれば、請求項１から５のいずれかに記載の画像処理プログラムの奏する効果に加え、画像データ生成ステップは、縮小画像の画素値を生成するものであるので、縮小画像を迅速に生成することができるという効果がある。
【００５３】
請求項７記載の画像処理装置によれば、データ取得手段により画像データが取得される。画像データ生成手段における参照点設定手段により、元画像に対し倍率を変更した生成画像の各画素に対応する元画像上の各参照点は、元画像の一辺に沿った方向においては、生成画像の倍率に基づいて設定される間隔とし、一辺に交差する他辺に沿った方向においては、前記一辺に沿った参照点間隔と同じ間隔とする位置に設定される。そして、データ取得手段にて取得した画像データの画素値の内、設定された参照点周辺の周辺画素の画素値が画素値抽出手段にて抽出され、画像データ生成手段により、その抽出された画素値の補間演算にて生成画像の画素値が生成される。
【００５４】
補間演算がなされる画素値に対しては、重み付け手段により重み付けが行われる。この重み付け手段による重み付けにおいては、第１要素算出手段により、参照点設定手段により設定される参照点と、その参照点に対し元画像の一辺に沿った方向に位置する周辺画素との距離に基づいて、重みの第１要素が算出され、算出された第１要素は、第１要素記憶手段において、参照点の一辺方向における位置を示す位置情報に対応して記憶される。また、参照点とその参照点に対し元画像の他辺に沿った方向に位置する周辺画素との距離に基づいた重みの第２要素には、第１要素記憶手段に記憶された第１要素の内、参照点の他辺方向における位置を示す位置情報によって抽出されるものが用いられる。そして、その抽出された第２要素と、第１要素記憶手段にて記憶された第１要素の内の参照点の一辺方向における位置を示す位置情報によって抽出される第１要素とを用いて、重み算出手段により、重みが算出される。
【００５５】
よって、算出された第１要素を第２要素として用いることができ、第２要素の算出を省略することができるので、その第２要素の算出に要する時間分、処理時間を削減して、画像処理全体にかかる処理時間を短縮することができるという効果がある。
【００５６】
本装置では、一辺方向と他辺方向とにおいて同じ間隔で参照点を設定するので、結果的に、生成画像および元画像を、一辺を基準の長さとする正方形に仮想化することができる。このため、元画像の一辺方向において端部からｎ番目に配列される参照点と、他辺方向において一辺側の端部からｎ番目に配列される参照点とは、端部から参照点までの距離が同じになる。ここで、第１要素は、元画像の一辺に沿った方向の距離に基づいており、第２要素は、元画像の他辺に沿った方向の距離に基づいているので、参照点の他辺方向における位置を示す位置情報によって抽出される第１要素を第２要素に用いても、的確な重みを算出することができるという効果がある。
【００５７】
尚、位置情報としては、例えば、画像の頂点を原点とした場合における原点から参照点までの距離、座標、原点からの参照点の数などが例示される。
【００５８】
また、元画像の一辺に沿った方向に並ぶ参照点のそれぞれは、元画像の他辺に沿った方向の距離が同じであるので、それらの参照点に対応する画素値の算出に際しては、同じ第２要素を用いて重みを算出することができる。同様に、元画像の他辺に沿った方向に並ぶ参照点のそれぞれは、元画像の一辺に沿った距離が同じであるので、同じ第１要素を用いて重みを算出することができる。このため、算出された第１要素を第１要素記憶手段に記憶することにより、一度算出した第１要素を用いて重みを算出できる。故に、重みの算出の度に、第１要素および第２要素を算出する必要が無く、その算出回数を抑制して、生成画像を生成するに要する処理時間を削減することができるという効果がある。
【００５９】
請求項８記載の画像処理装置によれば、請求項７記載の画像処理装置の奏する効果に加え、画像データ生成手段により、生成画像の一辺方向に沿って列状に配置される画素列毎に各画素の画素値が生成される。そして、生成画像の画素列の第１行目の画素値が画像データ生成手段にて生成される際に、第１要素算出手段により第１要素が算出される。算出された第１要素は、第１要素記憶手段に記憶される。また、画像データ生成手段にて第１行目以外の異なる画素列の画素値を生成する場合には、重み算出手段による重みの算出は、第１要素記憶手段に記憶された第１要素を用いて実行される。よって、画像データ生成手段による画素値生成の初期段階から、その画素値の生成に必要な重みの算出に、記憶された第１要素を用いることができ、第１要素の算出回数を、最低限必要な回数とすることができるという効果がある。つまり、本装置によれば、一行目の画素値を生成する際に、各画素に対する重みの第１要素を１度算出するだけでよいので、重みを算出する処理を効率的に実行することができるという効果がある。
【００６０】
請求項９記載の画像処理装置によれば、請求項７又は８に記載の画像処理装置の奏する効果に加え、長辺基準倍率算出手段により、元画像の長辺の長さを示す画素数と、生成画像の対応する長辺の長さを示す画素数とから倍率が算出され、その長辺基準倍率算出手段にて算出された倍率に基づいた間隔で、参照点設定手段により参照点が設定される。そして、画像データ生成手段及び重み付け手段により、元画像の長辺を一辺として処理が行われる。このため、画像データ生成手段により、元画像の長辺を一辺として生成画像の各画素値が生成される。また、重み付け手段により、元画像の長辺を一辺として重みの算出が実行される。長辺方向に設定される参照点の数は、短辺方向に設定される参照点の数よりも多いので、重み付け手段における第１要素算出手段にて算出される重みの第１要素は、長辺方向に設定される参照点に対応して算出する方が、短辺方向に設定される参照点に対応して算出するよりも、多く、第１要素を算出することができる。よって、第１要素算出手段にて算出される重みの第１要素にて、第２要素を網羅することができるという効果がある。つまり、第１要素記憶手段に記憶された第１要素を、その位置情報に基づいて、第２要素として抽出する場合に、対応する第１要素がないといった事態を回避することができ、第２要素の全てを、記憶されている第１要素で補うことができるという効果がある。
【００６１】
請求項１０記載の画像処理装置によれば、請求項９記載の画像処理装置の奏する効果に加え、生成画像の長辺方向に配置する画素数は整数値とされており、元画像の短辺の長さを示す画素数に対し、長辺基準倍率算出手段にて算出された倍率に基づいて、生成画像における短辺の長さを示す画素数が、短辺画素数算出手段によって算出される。そして、整数化手段により、短辺画素数算出手段にて算出された値において小数点以下の値が切り捨ててられ、画素数が整数化される。生成画像の短辺方向に配置する画素数は、その整数化手段にて得られた画素数とされ、画像データ生成手段により、生成画像の各画素の画素値が生成される。よって、元画像の範囲内に参照点を設定することができ、参照点が元画像の範囲内に設定不能となることを回避できるという効果がある。
【００６２】
つまり、長辺基準倍率算出手段にて算出された倍率と、端数を含む画素数の値との演算すると、元画像の短辺に存在する画素数となる。このため、短辺画素数算出手段にて算出された値に対し、小数点以下の値を切り上げて生成画像の短辺の画素数とすると、上記倍率との演算結果にて求められる画素数は、当然、本来の元画像の短辺の画素数を超えてしまう。本装置では、上記倍率に基づいた間隔で、参照点設定手段により参照点が設定されるため、上記の小数点以下の値を切り上げた値を生成画像の短辺の画素数とし、その画素数を、上記の倍率に基づいて得られる間隔で配置しようとすれば、参照点は、元画像の短辺には収まりきらない。
【００６３】
一方で、小数点以下の値を切り捨てて生成画像の短辺の画素数とすると、その画素数に上記の倍率で演算して求められる画素数は、元画像の短辺の画素数を超えることはない。従って、生成画像の画素に対応する参照点を、上記倍率に基づいた間隔で、短辺方向に設定しても、その参照点は、必ず、元画像の範囲内に設定されることとなり、参照点が元画像上において設定不能となることを回避できるという効果がある。
【００６４】
請求項１１記載の画像処理装置によれば、請求項７から１０のいずれかに記載の画像処理装置の奏する効果に加え、画像データ取得手段により、元画像の画像データの各画素値は、ラスタ形式で取得される。そして、元画像の短辺が画像に対するラスタ走査の主走査方向に沿った辺である場合には、参照点設定手段において、少なくとも生成画像における短辺方向第１行目の画素を仮想的に長辺方向の生成画素数となるまで増やして、各画素に対応する参照点が設定される。そして、第１要素算出手段にて、短辺方向に設定された参照点のそれぞれに対応する第１要素が算出され、画像データ生成手段により、生成画像の短辺方向に沿って列状に配置される画素列毎に、順次、各画素の画素値が生成される。
【００６５】
一般に、多くの画像処理装置においては、左上端となる画素から右側方向へ向かって（画像に配列された画素の行方向に沿って）順次処理を実行し、その行の最終画素に到達すると、次の行の左端の画素から再び右側方向に向かって順次処理を行ういわゆるラスタ走査で、画素値を生成、処理することが多い。従って、本装置において、元画像の画像データの各画素値を、ラスタ形式（ラスタ走査に応じた順）で取得することにより、このラスタ走査に従った処理形態で、各画素値をスムーズに生成することができるという効果がある。また、本装置を、従来の画像処理装置に組み込むや互換することを容易とすることができ、既存装置との互換性を保つことができるという効果がある。故に、本装置を、汎用性の高い装置とすることができる。
【００６６】
また、本装置においては、元画像の短辺が画像に対するラスタ走査の主走査方向（画像に配列された画素の行方向）に沿った辺である場合には、参照点設定手段において、少なくとも生成画像における短辺方向第１行目の画素を仮想的に長辺方向の生成画素数となるまで増やして、各画素に対応する参照点を設定するので、第１要素算出手段および画像データ生成手段において、ラスタ走査の方向に従って画像処理を行いつつ、長辺を基準とする第１要素の算出や画素値生成を実行することができ、長辺を基準として第１要素、画素値を算出する上記した利点を享受することができるという効果がある。
【００６７】
請求項１２記載の画像処理装置によれば、請求項７から１１のいずれかに記載の画像処理装置の奏する効果に加え、画像データ生成手段は、縮小画像の画素値を生成するものであるので、縮小画像を迅速に生成することができるという効果がある。
【発明を実施するための最良の形態】
【００６８】
以下、本発明の好ましい実施例について、添付図面を参照して説明する。尚、本実施形態の画像処理プログラムの構成は、図５を基に、既に背景技術で説明したバイ・リニア法を主体としつつ、その改良を行ったものであるので、同一の部分には同一の番号を付し、その説明は省略する。
【００６９】
図１は、本発明の一実施形態におけるプリンタ１の電気的な構成を示したブロック図である。このプリンタ１は、パーソナルコンピュータ（以下「ＰＣ」と称する）２や、デジタルカメラ２１や、外部メディア２０から入力された画像データを、指定された縮小率で縮小して出力することができるように構成されている。
【００７０】
プリンタ１は、ＣＰＵ１１と、ＲＯＭ１２と、ＲＡＭ１３と、印刷ヘッドなどから構成され、印刷媒体（例えば、紙媒体など）への印刷（出力）を行う印刷部１５と、出力画像サイズや縮小率などの入力値をユーザが入力可能なユーザ操作部（例えば、テンキーなど）を有する操作パネル１６とを備えている。
【００７１】
また、プリンタ１は、ケーブル５を介してＰＣ２と接続可能なインターフェイス（以下「Ｉ／Ｆ」と称する）１７と、ケーブル６を介してデジタルカメラ２１と接続可能なＩ／Ｆ１８と、イメージデータを記憶する外部メディア２０（例えば、ＳＤメモリカード、メモリスティックなど）を着脱自在に装着可能な外部メディアスロット１９とを備えている。
【００７２】
よって、プリンタ１は、ＰＣ２０に記憶されている画像データをケーブル５及びＩ／Ｆ１７を介して入力することが可能であると共に、デジタルカメラ２１によって撮影された画像データをケーブル６及びＩ／Ｆ１８を介して入力することが可能である。さらに、外部メディアスロット１９に装着された外部メディア２０から、その外部メディア２０に記憶されている画像データを入力することが可能である。
【００７３】
ＣＰＵ１１は、プリンタ１全体を制御する演算処理装置（演算装置）であり、ＲＯＭ１２には、このＣＰＵ１１により実行される各種の制御プログラムや、その実行の際に参照される固定値データが格納されている。なお、ＲＯＭ１２には、後述する図３のフローチャートに示すプログラムを備えた画像縮小プログラム１２ａが、制御プログラムの一部として記憶されている。画像縮小プログラム１２ａは、バイ・リニア法のアルゴリズムを基本とすると共に、その一部を改良して設計されている。
【００７４】
また、ＲＡＭ１３は、ＣＰＵ１１で実行される制御プログラムに必要な各種レジスタ群などが設定されたワーキングエリアや、処理中のデータを一時的に格納するテンポラリエリア等を有しランダムにアクセスできる書き換え可能なメモリである。
【００７５】
このＲＡＭ１３は、入力画像メモリ１３ａと、出力画像メモリ１３ｂと、入力画像サイズメモリ１３ｃと、出力画像サイズメモリ１３ｄと、縮小率メモリ１３ｅと、縮小重みメモリ１３ｆとを備えている。入力画像メモリ１３ａは、ＰＣ２、デジタルカメラ２１、及び外部メディア２０から、それぞれ、Ｉ／Ｆ１７、Ｉ／Ｆ１８、及び外部メディアスロット１９を介してプリンタ１へ入力された入力画像の画像データであって、生成される縮小画像の元画像となる画像データを記憶するものである。
【００７６】
入力画像の画像データ（以下、「入力画像データ」と称す）は、ラスタデータであって入力画像を形成する各画素の画素値（ＲＧＢ値）で構成されている。本実施形態において、入力画像は、その左上端を原点とすると共に、画像上において原点から右側に向かう方向をＸ軸、原点から下方へ向かう方向をＹ軸とし、画像を構成するＭ×Ｎの各画素のそれぞれを２次元配列で表現するべく、画像の左上隅に配置される画素の座標を（０，０）、画像の右下隅に配置される画素の座標を（Ｍ−１，Ｎ−１）として、各々の画素それぞれに座標が付与されている。また、入力画像は、矩形状の画像であり、該入力画像の一辺とその一辺に直交する他辺（隣り合う辺）とが、異なる画素数で構成されている。
【００７７】
一般に、画像に対する逐次処理は、原点の画素から開始され、順次、上から下に向かってＸ軸方向に走査して（Ｍ−１，Ｎ−１）まで実行するラスタ走査の方式に従って実行される。本実施形態では、入力画像データは、上記したようにラスタデータの形式とされており、各画素値がラスタ走査の順番に羅列された態様で、この入力画像メモリ１３ａに記憶されている。
【００７８】
尚、ラスタデータは、色のついた点(ドット)の羅列として表現したデータであり、本実施形態では、かかるラスタデータがラスタ走査の順に従って配置された状態をラスタ形式と称す。
【００７９】
出力画像メモリ１３ｂは、画像縮小プログラム１２ａに従い、入力画像メモリ１３ａに記憶されている入力画像データを縮小することによって生成された縮小画像（出力画像）の画像データ（以下「出力画像データ」と称す）を記憶するものである。本実施形態においては、出力画像についても入力画像と同様に、その左上端を原点とすると共に、画像上において原点から右側に向かう方向をＸ軸、原点から下方へ向かう方向をＹ軸とし、画像を構成するｍ×ｎの各画素のそれぞれを２次元配列で表現するべく、画像の左上隅に配置される画素の座標を（０，０）、画像の右下隅に配置される画素の座標を（ｍ−１，ｎ−１）として、各々の画素にそれぞれ座標が付与されている。
【００８０】
また、この出力画像メモリ１３ｂには、出力画像データが、入力画像データと同様のラスタ形式で、即ち、出力画像を形成する各画素の画素値（ＲＧＢ値）が、ラスタ走査の順に従って記憶されている。故に、出力画像メモリ１３ｂに記憶されている画像データ（画素値）を、先頭から順に取り出すことにより、原点の画素から、順次、上から下に向かってＸ軸方向に走査して、（Ｍ−１，Ｎ−１）に至る順に画素値が出力されて出力画像を形成することができる。
【００８１】
印刷に際しては、出力画像メモリ１３ｂに記憶される各画素値は、ＲＧＢ値からＣＭＹＫ値に変換されて、印刷部１５へ出力される。尚、入力画像データ及び出力画像データは、ＲＧＢ値で構成されているものに限られるものでなく、例えば、ＣＭＹＫ値で構成されたものであっても良い。
【００８２】
入力画像データから縮小画像データ（出力画像データ）を作成した後に、ユーザが、拡大画像の作成を所望することがある。ここで、縮小画像データに対して拡大処理を行うと、拡大画像の画質が低下してしまうので、縮小画像データに対して再編集（拡大等）を行う場合には、入力画像データを用いて要求に応じた画像データを生成する。このため、作成された出力画像データは、入力画像メモリ１３ａとは別に設けられた出力画像メモリ１３ｂに記憶されるようになっており、入力画像データは、そのままの状態で、入力画像メモリ１３ａに保持される。
【００８３】
入力画像サイズメモリ１３ｃは、入力画像の大きさ（画像サイズ）を示すサイズデータを記憶するメモリである。上記したように、入力画像メモリ１３ａに記憶される入力画像データは、一群の画素値の羅列で形成されているものである。従って、かかる画像データそのものから画像の大きさを判断することはできない。通常、外部から入力される入力画像データには、そのサイズを示すサイズデータが付加されており、かかるサイズデータは、この入力画像サイズメモリ１３ｃに書き込まれて記憶される。本実施形態では、このサイズデータは、画像のＸ軸方向の画素数Ｍと、画像のＹ軸方向の画素数Ｎである。ＣＰＵ１１は、この入力画像サイズメモリ１３ｃに記憶されるサイズデータにて、画像のＸ軸方向およびＹ軸方向に配列させる画素数を把握することができる。また、Ｘ軸方向の画素数と、Ｙ軸方向との画素数が既知となることにより、入力画像メモリ１３ａに記憶された各画素値を有する画素の画像上の位置（座標）を把握することができる。
【００８４】
出力画像サイズメモリ１３ｄは、出力画像の大きさ（画像サイズ）を示すサイズデータを記憶するメモリである。入力画像サイズメモリ１３ｃに記憶されるサイズデータと同様に、出力画像のＸ軸方向の画素数ｍと、画像のＹ軸方向の画素数ｎとがサイズデータとして記憶されている。出力画像メモリ１３ｂに記憶される出力画像データは、この出力画像サイズメモリ１３ｃに記憶される画素数に従って配置され、出力画像が形成される。
【００８５】
縮小率メモリ１３ｅは、生成する出力画像（縮小画像）の縮小率として入力された値を記憶するメモリである。縮小率は、ユーザによる操作パネル１６の操作によって入力され、この縮小率メモリ１３ｅに書き込まれる。本実施形態においては、縮小率は、１％毎に設定可能とされており、生成可能な出力画像の縮小レンジ（縮小範囲）は、０％〜１００％の範囲であって、０％および１００％を含まない範囲、即ち元の画像の１％以上９９％以下とされている。操作者の所定の入力操作により縮小率が入力（指定）されると、入力された値がこの縮小率メモリ１３ｅに記憶される。
【００８６】
尚、本実施形態において縮小率とは、生成される画像の大きさが元の画像に対して占める比率を示しており、例えば縮小率７５％であれば、生成される出力画像の大きさは、入力画像の７５％となる。同様に、縮小率５０％であれば、生成される出力画像の大きさは、入力画像の画像の５０％となり、縮小率２５％であれば、入力画像の２５％の大きさの画像となる。
【００８７】
ＣＰＵ１１は、出力画像の生成に際して、まず、その大きさを規定する必要がある。出力画像の大きさは、画像の長辺を基準に規定されるようになっており、ＣＰＵ１１により、この縮小率メモリ１３ｅに記憶される縮小率が、入力画像の長辺の画素数（サイズデータ）に乗算されて求められる。ここで、指定された縮小率によっては、出力画像の画素数に小数点以下の端数が生じてしまうので、四捨五入によって整数化が行われ、出力画像の長辺の大きさ（サイズデータ、画素数ｍ）が決定される。かかる場合には、出力画像は、厳密には、ユーザが入力した縮小率で形成される大きさとは異なる大きさに（若干大きく、または小さく）形成されることとなる。
【００８８】
一方、出力画像の短辺の大きさは、求められた画素数ｍと入力画像の対応する長辺の画素数Ｍとの比率ｍ／Ｍを、入力画像の対応する短辺の画素数Ｎに乗算されて求められる。本実施形態においては、かかる演算によって生じた小数点以下の端数を切り捨てて整数化を行うように構成されており、得られた整数値が、出力画像の短辺の大きさ（画素数ｎ）とされる。
【００８９】
また、ユーザによる操作パネル１６の操作によって入力される値が、出力画像のサイズ（出力画像の辺の画素数）である場合には、出力画像と入力画像との大きさとの比率から縮小率が算出されて、この縮小率メモリ１３ｅに記憶される。ここで、算出される縮小率は、出力画像および入力画像の長辺の画素数の比率で求められる。例えば、出力画像の長辺の画素数がｍ、対応する入力画像の長辺の画素数がＭであると、縮小率は、ｍ／Ｍとなる。かかる場合には、出力画像の長辺の大きさは整数値である。出力画像短辺の大きさ（画素数ｎ）は、上記した縮小率が指定された場合と同様に求められる。
【００９０】
縮小重みメモリ１３ｆは、（１）式に示した出力画像の画素値生成の補間演算に用いられる重みを算出するための重みの第１要素を記憶するメモリである。出力画像の各画素の画素値は、入力画像の対応する位置（参照点）の画素値として補間演算によって求められるので、この縮小重みメモリ１３ｆは、Ｘ軸方向の参照点の数、ｍ個分のメモリ（Ｐ０メモリ１３ｆ０〜Ｐｍ−１メモリ１３ｆｍ−１）で構成されている。出力画像の各画素ｐ（ｘ，ｙ）に対応する入力画像上の参照点Ｐ（Ｘ，Ｙ）を、出力画像の画素の座標（０，０）〜（ｍ−１，ｎ−１）のそれぞれに対応させて参照点Ｐ００〜Ｐｍ−１ｎ−１とすると（Ｐの添え字は、入力画像の対応する画素の座標を示す。また、理解を容易とするために、添え字に用いるｍ−１にｍ’、ｎ−１にｎ’を適宜代用して表示する）、Ｐ０メモリ１３ｆ０には、参照点Ｐ００の画素値を算出するべく求められた第１要素が、Ｐ１メモリ１３ｆ１には、参照点Ｐ１０の画素値を算出するための第１要素が、・・・、Ｐｍ−１メモリ１３ｆｍ−１には、参照点Ｐｍ’０の画素値を算出するための第１要素が、それぞれ記憶されている。
【００９１】
バイ・リニア法を基本とする画像縮小プログラム１２ａでは、従来のバイ・リニア法と同様に、補間演算に際して各周辺画素に付与される重みには、参照点とその参照点周辺の周辺画素との距離に応じた値を用いている（図５における拡大図Ａ参照）。また、上記したように、この重みは、参照点から各周辺画素までのＸ軸方向の距離であるｔまたは１−ｔ（第１要素）と、参照点から各周辺画素までのＹ軸方向の距離であるｓまたは１−ｓと（第２要素）との乗算、即ち、（距離ｔ又は距離１−ｔ）×（距離ｓ又は距離１−ｓ）で求められる値である（（１）式参照）。
【００９２】
本実施形態では、ＣＰＵ１１によって、出力画像の１行分の画素の各対応する参照点の座標から、それぞれ１度だけ第１要素が算出され、その算出された各第１要素が、対応するＰ０メモリ１３ｆ０〜Ｐｍ−１メモリ１３ｆｍ−１に記憶される。
【００９３】
ｍ×ｎの画素で形成される出力画像は、行方向にｍ個の画素が、列方向にｎ個の画素が配列されたものであり、同じ列に属する各画素のｘ座標は同じとなり、同じ行に属する各画素のｙ座標は同じとなる。従って、出力画像の１の列の各画素に対応する入力画像上の各参照点の座標は、Ｘ座標が同じとなる。このため、Ｘ座標の同じ一群の参照点については、参照点と周辺画素とのＸ軸方向の距離は等しくなるので、同じ第１要素（１の第１要素）を用いることができる。尚、本実施形態においては、入力画像のＸ軸上（Ｙ座標＝０）に配置される参照点をＹ軸方向における０番目の参照点とし、以降、Ｙ軸方向に沿って１番目、２番目、・・・ｎ−１番目とする。同様に、入力画像のＹ軸上（Ｘ座標＝０）に配置される参照点をＸ軸方向における０番目の参照点とし、以降、Ｘ軸方向に沿って１番目、２番目、・・・ｍ−１番目とする。
【００９４】
故に、画像縮小プログラム１２ａにおいて、Ｐ０メモリ１３ｆ０に記憶される第１要素は、参照点Ｐ００〜Ｐ０ｎ’（Ｘ座標０を基点としてＸ軸方向に０番目に位置する各参照点）の画素値を算出するために用いられ、Ｐ１メモリ１３ｆ１に記憶される第１要素は、参照点Ｐ１０〜Ｐ１ｎ’（Ｘ座標０を基点としてＸ軸方向に１番目に位置する各参照点）の画素値を算出するために用いられ、・・・、Ｐｍ−１メモリ１３ｆｍ−１に記憶される第１要素は、参照点Ｐｍ’０〜Ｐｍ−１ｎ−１（Ｘ座標０を基点としてＸ軸方向にｍ−１番目に位置する各参照点）の画素値を算出するために用いられる。言い換えれば、各参照点に対応する第１要素は、Ｘ軸方向の参照点の位置に対応する縮小重みメモリ１３ｆに記憶される。
【００９５】
更に、本実施形態においては、図２において後述するが、画像縮小プログラム１２ａは、重みの第２要素の算出は行わずに、縮小重みメモリ１３ｆに記憶される重みの第１要素を、重みの第２要素に用いて、各参照点の画素値を算出するように構成されている。
【００９６】
つまり、本実施形態では、入力画像上の参照点は、その間隔がＸ軸方向においてもＹ軸方向においても等しくなるように設定される。従って、Ｘ座標０の位置からＸ軸方向にａ番目に位置する参照点Ｐまでの距離と、Ｙ座標０からＹ軸方向にａ番目に位置する参照点Ｐまでの距離とを等しくすることができる。故に、Ｘ軸方向におけるａ番目の参照点に対応する第１要素は、Ｙ軸方向においてａ番目の参照点の画素値を算出する場合の重みの第２要素とすることができるのである。例えば、Ｐ１メモリ１３ｆ１に記憶される第１要素は、Ｘ座標０を基点としてＸ軸方向に１番目に位置する参照点Ｐ１０に対応する第１要素である。Ｙ座標０を基点としてＹ軸方向に１番目に位置する参照点は、参照点Ｐ０１〜Ｐｍ’１であるので、Ｐ１メモリ１３ｆ１に記憶される第１要素は、参照点Ｐ０１〜Ｐｍ’１の各画素値を算出する際の重みの第２要素とすることができる。
【００９７】
図２は、本実施形態の画像縮小プログラム１２ａにて実行される縮小画像（出力画像）生成の概要を模式的に示した図である。図２においては、小さな四角形の集合体にて模式的に画像を表現しており、小さな四角形のそれぞれがピクセル格子に相当している。ピクセル格子の各頂点（格子点）は、画素が配置される位置である。
【００９８】
図２中、左方には、１３×９画素で構成された入力画像が表示されている。入力画像においては、各格子点のそれぞれにおける画素を黒丸で表示している。９行１３列に配置された各画素のそれぞれには、（０，０）〜（１２，８）の各座標が付与されており、Ｘ軸方向におけるピクセル格子間の数は１２であり、Ｙ軸方向におけるピクセル格子間の数は８である。
【００９９】
出力画像の生成に際しては、まず、生成する出力画像の大きさが、指定された縮小率に基づいて決定される。図２においては、ユーザによって操作パネル１６から縮小率６０％が指定され、縮小率メモリ１３ｅに０．６が記憶された場合を例として示している。従って、入力画像のＸ軸方向の画素数１３に縮小率０．６を乗算して得られた７．８画素を、四捨五入にした８画素が出力画像Ｘ軸方向の画素数となる。そして、かかる長辺の画素数の比である８／１３を、入力画像のＹ軸方向の画素数９に乗算して得られる画素数５．５３を、小数点以下を切り捨てて整数化することにより、Ｙ軸方向の画素数５が求められる。従って、８×５画素の大きさを有する出力画像が形成されることとなる。
【０１００】
図２の上方には、この出力画像を表示している。太線の実線で囲まれた長方形の部分が、実際の出力画像に相当している。出力画像の各格子点における黒丸は、各画素を示しており、５行８列に配置された各画素のそれぞれには、（０，０）〜（７，４）の各座標が付与されている。また、出力画像におけるＸ軸方向におけるピクセル格子間の数は７であり、Ｙ軸方向におけるピクセル格子間の数は４である。尚、破線部分のピクセル格子は、後述する仮想化された領域を示している。
【０１０１】
出力画像の大きさが決定されると、次に、出力画像の各画素に対応する入力画像上の参照点が設定される。上記したように、出力画像の各画素の画素値は、入力画像の対応する位置（参照点）の画素値として求められるからである。尚、入力画像上における参照点の設定は、実際に描画を行って実行されるのではなく演算によって参照点の座標を求めることによって行われるが、説明を容易とするために、入力画像上に参照点を表示して説明する。
【０１０２】
ここで、本実施形態においては、次の２の条件を満たすように参照点を設定する。１つ目の条件は、参照点の間隔をＸ軸方向とＹ軸方向とで等しくすることである。２つ目の条件は、参照点の間隔を、入力画像の長辺に沿って配列される参照点の間隔で規定することである。これにより、参照点を頂点として結ぶ格子は、正方形となる。また、入力画像と出力画像との両者は、図２に示したように、あたかも正方形であるかのように取り扱われる。
【０１０３】
ここで、参照点の設定においては、背景技術において説明した２の方法が採用し得るので、出力画像の下方左側には、入力画像に対し第１の方法によって参照点を設定した状態を、出力画像下方右側には、入力画像に対し第２の方法によって参照点を設定した状態を示す。この出力画像下方の入力画像の表示において、太線で囲まれた長方形の部分が、実際の入力画像に相当している。太線で囲まれた長方形に連接された破線の表示部分は、仮想化された領域を示している。また、入力画像上に表示された実線の白丸は、設定された参照点を示しており、入力画像の上辺側には、用いられる（算出された）重みの第１要素ｔのそれぞれをＸ軸方向に配列された参照点に対応つけて示し、入力画像の左辺側には、用いられる重みの第２要素のそれぞれをＹ軸方向に配列された参照点に対応つけて示している。破線領域に表示された破線の丸は、仮想上の画素を示している。
【０１０４】
参照点設定の第１の方法は、出力画像の第１行目に配列される画素に対応する参照点を、入力画像の第１行目に設定すると共に、出力画像の第１列目に配列される画素に対応する参照点を、入力画像の第１列目に設定する方法である。ここで、本実施形態は、参照点の間隔を、入力画像の長辺に沿って配列される参照点の間隔で規定するものである。図２においては、Ｘ軸方向が長辺であるので、Ｘ軸に配列される画素数の比率８／１３の逆数によって、参照点の間隔が求められる。
【０１０５】
従って、出力画像の第１列目に配列される画素に対応する参照点を入力画像の第１列目に設定するとすれば、第２列目以降の各参照点のＸ軸方向の位置は、１３／８（１．６２５）ずつＸ軸方向に進行した位置となる。同様に、出力画像の第１行目に配列される画素に対応する参照点を入力画像の第１行目に設定するとすれば、Ｙ軸方向における第２行目以降の参照点の位置は、１３／８（１．６２５）ずつＹ軸方向に進行した位置となる。
【０１０６】
参照点設定の第２の方法は、出力画像のＹ軸に沿った両辺上の画素に対応する参照点は、入力画像のＹ軸に沿った両辺上に設定するとしたものであり、Ｘ軸方向両端の画素を除いた残りの画素に対応する参照点を、Ｘ軸に沿って均等に割り付ける方法である。図２においては、Ｘ軸方向が長辺であるので、Ｘ軸に配列されるピクセル格子間の数の比率７／１２の逆数によって、参照点の間隔が求められる。
【０１０７】
従って、出力画像の第１列目に配列される画素に対応する参照点を入力画像の第１列目に設定するとすれば、第２列目以降の各参照点のＸ軸方向の位置は、１２／７（１．７１４）ずつＸ軸方向に進行した位置となる。同様に、出力画像の第１行目に配列される画素に対応する参照点を入力画像の第１行目に設定するとすれば、Ｙ軸方向における第２行目以降の参照点の位置は、１２／７（１．７１４）ずつＹ軸方向に進行した位置となる。
【０１０８】
このように本実施形態の手法で参照点を設定した場合には、Ｘ軸方向においてもＹ軸方向においても８画素を１３画素分の長さに配置したことと同義となり、結果として、出力画像を８×８画素、入力画像を１３×１３画素の正方形に仮想化したこととなる。
【０１０９】
これによれば、入力画像上の各参照点について、Ｘ座標０を基点としてＸ軸方向にａ番目に位置する参照点までの距離と、Ｙ座標０を基点としてＹ軸方向にａ番目に位置する参照点までの距離とは等しくなる。言い換えれば、Ｘ座標０を基点としてＸ軸方向にａ番目に位置する参照点のＸ座標と、Ｙ座標０を基点としてＹ軸方向にａ番目に位置する参照点のＹ座標とは等しくなる。その結果、Ｙ座標０を基点としてＹ軸方向にａ番目に位置する参照点とその周辺画素とのＹ軸方向における距離は、Ｘ座標０を基点としてＸ軸方向にａ番目に位置する参照点とその周辺画素とのＸ軸方向における距離に等しくすることができるので、図２下方の２の入力画像の上辺側および左辺側に示すように、Ｘ軸方向におけるａ番目の参照点に対応する第１要素と、Ｙ軸方向におけるａ番目の参照点に対応する第２要素とを等しくすることができるのである。
【０１１０】
尚、本実施形態においては、第１の方法にて参照点の設定を行うように構成されている。
【０１１１】
次に、図３のフローチャートを参照して、上記のように構成されたプリンタ１で実行される縮小処理について説明する。図３は、本実施形態の画像縮小プログラム１２ａに基づいてＣＰＵ１１により実行される縮小処理のフローチャートである。
【０１１２】
この縮小処理は、ユーザにより、入力画像の縮小が指定（縮小率の入力）されることにより起動され、入力画像サイズメモリ１３ｃに記憶されるサイズデータ（画素数Ｍ，Ｎ）を読み出し（Ｓ１）、縮小率メモリ１３ｅに記憶される縮小率Ｒを読み出す（Ｓ２）。この縮小率Ｒは、ユーザにより、操作パネル１６から入力された値であり、入力されたタイミングで、本縮小処理に先立って、縮小率メモリ１３ｅに記憶される。また、ＰＣ２などからプリンタ１に入力された入力画像データは、その入力されたタイミングで、入力画像メモリ１３ａに書き込まれて記憶されている。尚、このインターフェース１７，１８または外部メディアスロット１９を介して入力された入力画像データをＣＰＵ１１が入力画像メモリ１３ａに書込む処理が、請求項に記載のデータ取得ステップに相当する。
【０１１３】
そして、出力画像のサイズデータ（画素数ｍ，ｎ）を算出する（Ｓ３）。この出力画像のサイズデータは、上記したように出力画像のＸ軸方向の画素数ｍと、Ｙ軸方向の画素数ｎとであり、Ｘ軸が長辺であれば、画素数ｍは、入力画像のＸ軸方向の画素数Ｍに縮小率Ｒを乗算した値を整数化（四捨五入）して求められる。また、画素数ｎは、画素数ｍとＭとの比（ｍ／Ｍ）を入力画像のＹ軸方向の画素数Ｎに乗算した値を整数化（小数点以下切り捨て）して求められる。一方、Ｙ軸が長辺であれば、画素数ｎは、入力画像のＹ軸方向の画素数Ｎに縮小率Ｒを乗算した値を整数化（四捨五入）して求められ、画素数ｍは、画素数ｎとＮとの比（ｎ／Ｎ）を入力画像のＸ軸方向の画素数Ｍに乗算した値を整数化（小数点以下切り捨て）して求められる。つまり、本実施形態では、長辺を基準に出力画像の大きさを決定する。また、短辺については、小数点以下の値を切り捨てて画素数を整数化する。このため、長辺の比率で規定される係数ｃで参照点を設定しても、短辺側においてもはみ出すことなく参照点を入力画像上に設定することができる。その後、求めた出力画像のサイズデータ（画素数ｍ，ｎ）を出力画像サイズメモリ１３ｃに記憶する（Ｓ４）。
【０１１４】
次いで、出力画像サイズメモリ１３ｃに記憶した画素数ｎが画素数ｍ以下であるかを確認し（Ｓ５）、その結果、画素数ｎが画素数ｍ以下であれば（Ｓ５：Ｙｅｓ）、出力画像（及び入力画像）は、Ｘ軸方向を長辺とする画像であるので、画素数ｍを基準として、出力画像の各画素に対応する入力画像の座標（参照点）を算出する係数Ｃを求める（Ｓ６）。この係数Ｃは、図２において説明した参照点の間隔であり、入力画像のＸ軸方向の画素数Ｍを出力画像の画素数ｍで除して算出される。つまり、係数Ｃは、縮小率ｍ／Ｍの逆数となっている。
【０１１５】
一方、画素数ｎが画素数ｍを超えていれば（Ｓ５：Ｎｏ）、出力画像（及び入力画像）は、Ｙ軸方向を長辺とする画像であるので、画素数ｎを基準として、出力画像の各画素に対応する入力画像の座標（参照点）を算出する係数Ｃが、入力画像のＹ軸方向の画素数Ｎを出力画像の画素数ｎで除して算出される（Ｓ７）。つまり、縮小率ｎ／Ｎの逆数が求められる。
【０１１６】
Ｓ６またはＳ７の処理の後は、ｘ＝０、ｙ＝０として（Ｓ８）、出力画像の各画素ｐ（ｘ，ｙ）に対応する入力画像上の参照点の座標Ｐ（Ｘ，Ｙ）を算出する（Ｓ９）。参照点のＸ座標は、入力画像の各画素のｘ座標に係数Ｃを乗算して求められ、参照点のＹ座標は、入力画像の各画素のｙ座標に係数Ｃを乗算して求められる。つまり、同じ係数Ｃが入力画像各画素のｘ座標とｙ座標とに乗算されるので、各参照点を入力画像上においてＸ軸方向にもＹ軸方向にも同じ間隔で配置する座標が、それぞれの参照点に付与される。
【０１１７】
続いて、ｙ＝０であるかを確認し（Ｓ１０）、ｙ＝０であれば（Ｓ１０：Ｙｅｓ）、縮小処理の起動直後のＳ９の処理が実行されたタイミングであり、出力画像の第１行目に配列される画素に対応する参照点（参照点Ｐ００〜Ｐ０ｍ’）の処理が実行される状態にあるので、重みの第１要素を算出する（Ｓ１１）。ここで、重みの第１要素は、距離ｔおよび距離１−ｔであるが、参照点Ｐ００〜Ｐ０ｍ’に対応する距離ｔを距離ｔ０〜距離ｔｍ−１とすると、各参照点に対応する距離ｔｘ（ｘ＝０〜ｍ−１）は、参照点ＰのＸ座標値を整数化（小数点以下切り捨て）した値をそのＸ座標値から減算して（ｔｘ＝Ｘ−ｉｎｔ（Ｘ））求められる。また、求められたｔｘを１から減算して、各参照点に対応する距離１−ｔｘが算出される。
【０１１８】
次いで、算出したｔｘおよび１−ｔｘを、ｘによって指定されるＰｘメモリに書き込む（Ｓ１２）。これにより、参照点Ｐ００に対応する第１要素である距離ｔ０および１−ｔ０は、縮小重みメモリ１３ｆのＰ０メモリ１３ｆ０に書き込まれる。同様に、参照点Ｐ１０〜Ｐｍ’０に対応する第１要素である距離ｔ１〜ｔｍ−１および１−ｔ１〜１−ｔｍ−１は、縮小重みメモリ１３ｆのＰ１メモリ１３ｆ１〜Ｐｍ−１メモリ１３ｍ−１の対応するメモリに書き込まれる。
【０１１９】
その後、ｘがｍ−１以下（ｘ≦ｍ−１）であるかを確認し（Ｓ１３）、ここで、ｘがｍ−１以下であれば（Ｓ１３：Ｙｅｓ）、対応する画素ｐ（ｘ，ｙ）の画素値を算出するために、参照点Ｐ（Ｘ，Ｙ）のＸ座標の小数点以下の値を切り捨てて整数化した値をｉ、Ｙ座標の小数点以下の値を切り捨てて整数化した値をｊとして、参照点Ｐ（Ｘ，Ｙ）の基準周辺画素Ｐ（ｉ，ｊ）を決定すると共に、Ｐ（ｉ＋１，ｊ＋１）、Ｐ（ｉ，ｊ＋１）、Ｐ（ｉ＋１，ｊ）を求め、参照点Ｐ（Ｘ，Ｙ）の４つの周辺画素を選定する（Ｓ１４）。参照点Ｐ（Ｘ，Ｙ）が、入力画像の格子点に存在する場合には、周辺画素には、参照点と同位置のその格子点上の画素が含まれる。
【０１２０】
そして、ｙの値に対応する縮小重みメモリ１３ｆに記憶されるｔｘをｓｙ、１−ｔｘを１−ｓｙとして読み出してから（Ｓ１５）、ｘの値に対応する縮小重みメモリ１３ｆに記憶されるｔｘと、１−ｔｘとを読み出す（Ｓ１６）。ｙの値に対応する縮小重みメモリ１３ｆとは、Ｐ０メモリ１３ｆ０〜Ｐｍメモリ１３ｆｍの内、ｙの値で指定されるメモリであり、例えば、ｙの値が０である場合には、Ｐ０メモリ１３ｆ０が指定され、ｙの値が１であればＰ１メモリ１３ｆ１が指定される。同様に、ｘの値に対応する縮小重みメモリ１３ｆとは、Ｐ０メモリ１３ｆ０〜Ｐｍメモリ１３ｆｍの内、ｘの値で指定されるメモリであり、例えば、ｘの値が０である場合には、Ｐ０メモリ１３ｆ０が指定され、ｘの値が１であればＰ１メモリ１３ｆ１が指定される。
【０１２１】
ここで、ｙの値は、出力画像のｙ座標の値であると共に、入力画像の参照点のＹ軸方向における位置を示す値番目に対応している。つまり、参照点のＹ軸方向における位置を示す情報にて、縮小重みメモリ１３ｆに記憶される重みの第１要素が第２要素として抽出されることとなる。
【０１２２】
そして、読み出したｔｘ、１−ｔｘを重みの第１要素、ｓｙ、１−ｓｙを重みの第２要素とすると共に、Ｓ１４の処理で選定した周辺画素の画素値を（１）式に示したバイ・リニア法で補間演算して、ｐ（ｘ，ｙ）の画素値を算出する（Ｓ１７）。その後、算出したｐ（ｘ，ｙ）の画素値を出力画像メモリ１３ｂに書込んでから（Ｓ１８）、ｘがｍ−１未満であるか（ｘ＜ｍ−１）を確認し（Ｓ１９）、ｘがｍ−１以上であれば（Ｓ１９：Ｎｏ）、その行において算出するべき全ての画素値の算出が完了したので、ｙ＝０であるかを確認し（Ｓ２０）、ここで、ｙ＝０であれば（Ｓ２０：Ｙｅｓ）、ｘがｎ−１未満であるか（ｘ＜ｎ−１）を確認する（Ｓ２１）。
【０１２３】
本実施形態においては、画像の長辺を基準に参照点の設定を行う事としているので、画像のＹ軸が長辺である場合には、Ｘ軸方向において本来の画素数であるｍ個分の第１要素の算出が完了しても、Ｘ軸の画素数を仮想的にｎ個として、画素数ｎに対応する重みの第１要素を算出する必要がある。Ｓ２０の処理においてｙ＝０である場合には、第１要素を算出するタイミングであるため、かかる第１要素の算出を終了しても良いか否かを判断するために、ｘがｎ−１未満であるかを確認するのである。つまり、Ｙ軸が長辺であれば、Ｙ軸方向の画素数ｎはＸ軸方向の画素数ｍよりも大きい（ｍ＜ｎ）ので、ｘの値がｍ−１であると、ｘ＜ｎ−１となるからである。従って、ｘがｎ−１以上であれば（Ｓ２１：Ｎｏ）、長辺はＸ軸（ｍ≧ｎ）であり、その行において算出するべき全ての画素値の算出は完了しているので、Ｙ軸方向において最終の画素に到達しているかを調べるために、ｙがｎ−１未満であるか（ｙ＜ｎ−１）を確認する（Ｓ２２）。その結果、ｙがｎ−１以上であれば（Ｓ２２：Ｎｏ）、出力画像の最終行ｎの最後の画素まで、画素値の算出が終了しているので、この縮小処理を終了する。
【０１２４】
一方、Ｓ１０の処理で確認した結果、ｙ＝０でなければ（Ｓ１０：Ｎｏ）、各参照点に対応する各第１要素の算出は終了しているので、その処理をＳ１４の処理に移行する。これにより、第１要素を算出するＳ１１，Ｓ１２の処理は、スキップされる。各参照点に対応する第１要素は、同じＸ座標を有する参照点毎に、１度算出すれば良い。故に、ｙ＝０、即ち、出力画像の先頭行の各画素の画素値を算出する期間において、各参照点に対応する各第１要素を１度算出した後は、ｙ＝０でないことを条件に、Ｓ１１〜Ｓ１３の処理を回避するように構成しているのである。
【０１２５】
また、Ｓ１３の処理で確認した結果、ｘがｍ−１を超えていれば（Ｓ１３：Ｎｏ）、出力画像においてｙ座標の値がｙである行のｍ個の画素の画素値は、全て算出されているので、その処理をＳ２０の処理に移行する。Ｓ１３の処理は、第１要素を算出する場合（ｙ＝０）のみ経由する処理である。従って、このＳ１３の処理において、ｘがｍ−１を超える値となるのは、第１要素を算出する場合（ｙ＝０）であり、また、出力画像（入寮画像）のＸ軸がＹ軸よりも短いことが条件となる。つまり、長辺に対応する画素数分の第１要素を生成するので、ｍ＜ｎであれば、第１要素は、ｎ個分生成しなくてはならない。第２要素は、Ｙ軸方向の画素数分、ｎ個必要となるからである。故に、Ｓ１３の処理でＮｏに分岐した場合は、更に、第１要素を算出するべく、その処理をＳ２０の処理に移行するのである。
【０１２６】
加えて、Ｓ１９の処理で確認した結果、ｘがｍ−１未満であれば（Ｓ１９：Ｙｅｓ）、ｘがＸ軸方向の最終画素を示すまで、その行における画素に対する画素値を算出するために、また、ｙ＝０である場合には第１要素の算出をる引き続き実行するためにも、その処理をＳ２３の処理に移行して、ｘに１加算してから（Ｓ２３）、その処理をＳ９の処理に移行する。これにより、ｘがｍ−１に達するまで、繰り返して、Ｓ９〜Ｓ１９の処理が実行されて、その行における全画素に対する画素値の算出が（ｙ＝０である場合には第１要素の算出についても）実行される。
【０１２７】
更に、Ｓ２０で確認した結果、ｙ＝０でなければ（Ｓ２０：Ｎｏ）、ｘがｎ−１未満である確認をする必要がない。ｙ＝０である場合には、ｍ＜ｎであれば、第１要素を算出するためにＳ１１及びＳ１２の処理を実行する必要があるが、ｙ＝０でなければ、第１要素は必要分算出済であるので、対応する画素値の算出を行うだけでよく、Ｓ１１及びＳ１２の処理を実行する必要がない。従って、ｙ＝０でなければ（Ｓ２０：Ｎｏ）、ｘがｎ−１未満であるかの確認をする必要がないので、Ｓ２１の処理をスキップして、その処理をＳ２２の処理に移行する。
【０１２８】
また、Ｓ２１の処理は、ｙ＝０である場合にのみ実行されるものである。故に、このＳ２１の処理で確認した結果、ｘがｎ−１未満であれば（Ｓ２１：Ｙｅｓ）、第１要素は、出力画像のＸ軸方向の画素数ｍに対応する分まで算出が終了しているが、長辺はＹ軸方向であってｍ＜ｎである。したがって、更に、ｎ−１に達するまで、対応する第１要素を算出する必要がある。故に、その処理をＳ２３の処理に移行して、ｘに１加算してから、その処理をＳ９の処理に移行する。尚、このように、出力画像のＹ軸方向の画素数ｎに対応する分の第１要素を算出する場合には、縮小重みメモリ１３ｆは、そのｎ個分のメモリＰ０メモリ１３ｆ０〜Ｐｎ―１メモリ１３ｆｎ−１で構成される。
【０１２９】
更に、Ｓ２２の処理で確認した結果、ｙがｎ−１未満であれば（Ｓ２２：Ｙｅｓ）、１の行においてＸ軸方向最後の画素まで画素値または対応する第１要素の算出が終了した状態であるが、処理された行は出力画像の最終行ｎではないので、その処理をＳ２４の処理に移行して、ｙの値に１加算すると共にｘ＝０として、出力画像における次行の先頭画素を指定してから（Ｓ２４）、その処理をＳ９の処理に移行する。これにより、出力画像の最終行の最終画素（ｐ（ｍ−１，ｎ−１））に到達するまで、繰り返して、Ｓ９〜Ｓ２４の処理が実行され、出力画像の各画素に対応する画素値が算出される。
【０１３０】
以上説明したように、プリンタ２に搭載された画像縮小プログラム１２ａによる縮小処理では、重みの第１要素を、重みの第２要素として用いることができるので、重みの第２要素の算出を省略することができ、その結果、出力画像を生成する処理速度を向上させることができる。
【０１３１】
次に、図４を参照して、第２実施形態について説明する。上記した第１実施形態は、出力画像の生成を画像縮小プログラム１２ａ、即ちソフトウェアによって行うように構成された。これに代えて、第２実施形態においては、出力画像（縮小画像）を生成する処理を、ハード回路によって実現するように構成されている。このため、第２実施形態おいては、プリンタ１には画像縮小プログラム１２ａは搭載されておらず、画像縮小プログラム１２ａに代えて、縮小画像を生成するハード回路が備えられている。尚、第１実施形態と同じ部分には同じ符号を付してその説明を省略する。
【０１３２】
図４は、プリンタ１の内部に搭載された、画像の縮小処理を実行する画像縮小回路２００の構成を示すブロック図である。図４に示すように、画像縮小回路２００は、データ入力部２０１、画像長辺算出部２０２、縮小重み計算部２０３、縦横同一重み記憶部２０４、データ縮小部２０５、データ出力部２０６を備えている。
【０１３３】
データ入力部２０１は、ＰＣ２から送出された入力画像データ及び入力画像のサイズデータと、プリンタ１の操作パネル１６から入力された出力画像のサイズデータとを、画像縮小回路内に入力するものであり、ＰＣ２から送出された入力画像データを記憶するための入力画像メモリ２０１ａと、入力画像および出力画像のサイズデータを記憶するデータサイズメモリ２０１ｂとを備えている。尚、第２実施形態においては、操作パネル１６からは縮小率ではなく、出力画像のサイズデータ（出力画像のＸ軸方向およびＹ軸方向それぞれの画素数ｍ，ｎ）が入力されるようになっている。
【０１３４】
ＰＣ２からプリンタ１へは、入力画像データはラスタデータの態様で、ラスタ走査の順に従って入力され、入力画像メモリ２０１ａには、メモリの先頭側から後方へ向かって順に、入力画像データを構成する各ラスタデータ（各画素値）が、ラスタ走査の順で配置されるように記憶される。
【０１３５】
このデータ入力部２０１への、入力画像データおよびサイズデータの入力が終了すると、データ入力部２０１から画像長辺算出部２０２に、データサイズメモリ２０１ｂに記憶されたサイズデータが出力される。また、入力画像メモリ２０１ａに記憶される画像データは、データ入力部２０１からデータ縮小部２０５へ出力される。
【０１３６】
画像長辺算出部２０２は、データ入力部２０１から入力されたサイズデータに基づいて、画像の長辺がＸ軸であるかＹ軸であるかを判断するものである。データ入力部２０１からの出力画像のサイズデータは、Ｘ軸方向の画素数ｍとＹ軸方向の画素数ｎとであるので、画像長辺算出部２０２においては、ｍとｎとを比較して、画像の長辺が判断される。そして、出力画像のサイズデータの内、長辺と判断された方の画素数は、縮小重み計算部２０３に出力される。また、対応する入力画像の長辺のサイズデータについても、縮小重み計算部２０３に出力される。
【０１３７】
縮小重み計算部２０３は、画像長辺算出部２０２から入力されたサイズデータに基づき、補間演算に用いる重みの第１要素を算出するものである。縮小重み計算部２０３は、画像長辺算出部２０２からの入力画像および出力画像の長辺の画素数から、その両者の比（Ｍ／ｍ又はＮ／ｎ）を算出する。第１実施形態で述べたように、算出された比は、出力画像の各画素に対応する参照点の間隔を規定するものであり、出力画像の画素の座標（ｘ，ｙ）に乗算することにより、参照点の座標が決定される。そして、その参照点のＸ座標を整数化（切り捨て）した値を、参照点のＸ座標から減算することにより、重みの第１要素が算出される。この第１要素の算出は、長辺の画素数分、実行される。つまり、出力画像の画素ｐ（０，０）からｐ（０，ｍ−１）またはｐ（０，ｎ−１）に至るまで実行される。算出された第１要素は、順次、縦横同一重み記憶部２０４に出力される。また、算出された入力画像長辺の画素数と出力画像長辺の画素数との比は、データ縮小部２０５に出力される。
【０１３８】
縦横同一重み記憶部２０４は、縮小重み計算部２０３からの重みの第１要素を記憶するメモリであり、入力された順番に対応つけて、入力された第１要素を記憶するものである。縮小重み計算部２０３は、出力画像の画素ｐ（０，０）からｐ（０，ｍ−１）またはｐ（０，ｎ−１）に向かって、順次、第１要素を算出するので、縮小重み計算部２０３から縦横同一重み記憶部２０４への第１要素の入力順は、入力画像上の参照点の順番（位置）に対応することとなる。故に、縦横同一重み記憶部２０４においては、第１要素は、入力画像上の参照点の順番に対応して記憶されることとなる。縮小重み計算部２０３に記憶された第１要素は、データ縮小部２０５の要求に応答して、データ縮小部２０５に出力される。
【０１３９】
データ縮小部２０５は、データ入力部２０１から入力される入力画像データと、縮小重み計算部２０３から入力される入力画像長辺の画素数と出力画像長辺の画素数との比と、縦横同一重み記憶部２０４に記憶される第１要素とから、出力画像の各画素（入力画像上の各参照点）の画素値を、バイ・リニア法の補間演算によって算出するものである。ここで、補間演算に用いられる周辺画素の抽出は、第１実施形態と同様に実行される。また、第１実施形態と同様に、参照点の画素値生成の補間演算に用いられる第１要素には、その参照点のＸ軸方向の順番に対応して縦横同一重み記憶部２０４に記憶されるものが用いられ、第２要素には、その参照点のＹ軸方向の順番と同じ順番で縦横同一重み記憶部２０４に記憶される第１要素が用いられる。これにより、入力画像に対し縮小処理が実行され、入力画像が縮小された出力画像データが生成される。生成された出力画像データは、データ出力部２０６を介して、画像縮小回路２００から出力される。
【０１４０】
このように、第２実施形態における画像縮小回路２００によれば、入力画像データの縮小をハード回路によって実現することができる。このため、ＣＰＵによって同様の縮小処理を実行するよりも高速に処理を実行することができる。
【０１４１】
以上上記各実施形態に基づき本発明を説明したが、本発明は上記各実施形態に何ら限定されるものでなく、本発明の趣旨を逸脱しない範囲内で種々の改良変形が可能であることは容易に推察できるものである。
【０１４２】
例えば、上記各実施形態では、画像縮小プログラム１２ａまたは画像縮小回路２００は、いずれもプリンタ１に搭載された。これに代えて、画像縮小プログラム１２ａまたは画像縮小回路２００をＰＣ２に搭載し、プリンタ１ではなく、ＰＣ２において縮小された画像データを生成するようにしてもよい。
【０１４３】
また、上記実施形態における画像縮小プログラム１２ａは、画像処理プログラムの１実施形態として、入力画像上の参照点の間隔をＸ軸方向とＹ軸方向とで等しくすると共に、重みの第１要素を重みの第２要素としても用いて縮小画像を生成するものとした。同様に、画像縮小回路２００は、出力画像として、縮小画像を形成するものとして構成された。しかし、本発明は、縮小画像の生成に限って適用されるものではなく、例えば、入力画像を拡大した拡大画像を生成する場合に適用しても良い。具体的には、拡大画像である出力画像の各画素に対応する入力画像上の参照点の間隔を、Ｘ軸方向及びＹ軸方向の両方で同じ間隔とするとともに、その間隔を拡大倍率の逆数にて規定する構成とする。これにより、Ｘ座標０からａ番目に位置する参照点とＹ座標０からａ番目に位置する参照点との距離を等しくして、各参照点にて形成される格子を正方形とすることができる。故に、縮小画像を形成した場合と同様に、第１要素を第２要素として用いることができる。
【０１４４】
加えて、上記各実施形態では、縮小画像を形成する補間演算のアルゴリズムには、バイ・リニア法を用いたが、これに代えて、補間演算にて画素値を生成する他のアルゴリズム、例えば、バイ・キュービック法のアルゴズムを用いても良い。
【図面の簡単な説明】
【０１４５】
【図１】本発明の１実施形態の画像処理プログラムを搭載したプリンタの電気的構成を示すブロック図である。
【図２】画像縮小プログラムにて実行される出力画像生成の概要を模式的に示した図である。
【図３】画像縮小プログラムに基づいてＣＰＵにより実行される縮小処理のフローチャートである。
【図４】第２実施形態におけるプリンタ内部に搭載された画像縮小回路の構成を示すブロック図である。
【図５】従来の縮小画像生成の概要を模式的に示した図である。
【符号の説明】
【０１４６】
１              プリンタ（画像処理装置）
１２ａ          画像処理プログラム
１３ｆ          縮小重みメモリ（第１要素記憶手段、重み付け手段）
１７            インターフェース（データ取得手段）
１８            インターフェース（データ取得手段）
１９            外部メディアスロット（データ取得手段）
２００          画像縮小回路（画像処理装置）
２０１          データ入力部（データ取得手段）
２０２          画像長辺算出部（短辺画素数算出手段、整数化手段、画像データ生成手段）
２０３          縮小重み計算部（重み付け手段、第１要素算出手段）
２０４          縦横同一重み記憶部（第１要素記憶手段、重み付け手段）
２０５          データ縮小部（重み付け手段、画像データ生成手段、参照点設定手段、画素値抽出手段、重み算出手段）
Ｓ３            短辺画素数算出ステップ、短辺画素数算出手段、整数化ステップ、整数化手段
Ｓ９            参照点設定ステップ、参照点設定手段
Ｓ３，Ｓ９，Ｓ１４，Ｓ１７        画像データ生成ステップ、画像データ生成手段
Ｓ１１，Ｓ１２，Ｓ１５〜Ｓ１７    重み付けステップ、重み付け手段
Ｓ１４          画素値抽出ステップ、画素値抽出手段
Ｓ１１          第１要素算出ステップ、第１要素算出手段
Ｓ１２          第１要素記憶ステップ
Ｓ１７          重み算出ステップ、重み算出手段
【図１】
2008061036.tif 000004
【図２】
2008061036.tif 000005
【図３】
2008061036.tif 000006
【図４】
2008061036.tif 000007
【図５】
2008061036.tif 000008