JP2004355216A - 画像縮小方法および画像縮小処理プログラム - Google Patents
画像縮小方法および画像縮小処理プログラム Download PDFInfo
- Publication number
- JP2004355216A JP2004355216A JP2003150714A JP2003150714A JP2004355216A JP 2004355216 A JP2004355216 A JP 2004355216A JP 2003150714 A JP2003150714 A JP 2003150714A JP 2003150714 A JP2003150714 A JP 2003150714A JP 2004355216 A JP2004355216 A JP 2004355216A
- Authority
- JP
- Japan
- Prior art keywords
- image
- pixels
- target pixel
- value
- destination
- 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
- 238000000034 method Methods 0.000 title claims abstract description 95
- 230000000295 complement effect Effects 0.000 claims description 11
- 230000008034 disappearance Effects 0.000 abstract description 2
- 238000004364 calculation method Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000001771 impaired effect Effects 0.000 description 1
- 238000011946 reduction process Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Landscapes
- Image Processing (AREA)
- Editing Of Facsimile Originals (AREA)
Abstract
【課題】演算機能が加算、減算、シフト演算などに限られたコンピュータ環境においても高速に実行でき、細線消失の発生を防止できてソフトウェア処理に適した画像縮小方法を提供する。
【解決手段】S13で、ソース画像のX方向の画素数Nsと2Nとを比較しNsが2N以下になった場合にS14に移り、22Nをデスティネーション画像の水平方向の画素数Ndで割った値を算出してαとする。S17において、残差Eがデスティネーション画像の水平方向の画素数Nd未満の場合に、S19でデスティネーション画像の画素をPd=Ps(Xs)+(α×E×(Ps(Xs+1)−Ps(Xs)))/22Nとして求める。22Nでの除算はシフト演算で代用できるので高速に演算できる。
【選択図】 図1
【解決手段】S13で、ソース画像のX方向の画素数Nsと2Nとを比較しNsが2N以下になった場合にS14に移り、22Nをデスティネーション画像の水平方向の画素数Ndで割った値を算出してαとする。S17において、残差Eがデスティネーション画像の水平方向の画素数Nd未満の場合に、S19でデスティネーション画像の画素をPd=Ps(Xs)+(α×E×(Ps(Xs+1)−Ps(Xs)))/22Nとして求める。22Nでの除算はシフト演算で代用できるので高速に演算できる。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は画像縮小方法に関し、特に、細線消去を防止する画像縮小方法および画像縮小処理プログラムに関する。
【0002】
【従来の技術】
従来、画像の縮小方法には、縮小後の画素に最も近い縮小前の画像の画素を選択してコピーすることにより縮小画像を作成する最近傍法(ニアレストネイバ)と呼ばれる縮小方法がある。しかし、最近傍法では、縮小前の画像(ソース画像)のパタンと適用される縮小率とによっては、縮小後の画像(デスティネーション画像)で画素情報が完全に欠落してしまうことがある(例えば、特許文献1参照。)。
【0003】
図6は、最近傍法による画像縮小のフローチャートである。まず、X方向に連続した画像を縮小する手順を、図6のフローチャートに従って説明する。ここで、縮小の対象となる画像(ソース画像と呼ぶ)の水平方向の画素数をNs、縮小後の画像(デスティネーション画像と呼ぶ)の水平方向の画素数をNdとする。また、ソース画像の画素ステップで定義されたX座標での座標値をXs、デスティネーション画像の画素ステップで定義されたX座標での座標値をXdとし、またそれらの位置にある画素をPs(Xs)、Pd(Xd)で表す。また、ソース画像の画素がデスティネーション画像の画素として選択されるか否かを判定するために残差Eを用いる。
【0004】
図6のフローチャートでは、先ずステップS41において、ソース画像のX座標値Xs、デスティネーション画像のX座標値Xdおよび残差Eをそれぞれ0に初期化する。次に、ステップS42において、残差Eにソースの水平方向の画素数Nsを加えてこれを新たな残差Eとする[E+Ns→E]。
【0005】
次に、ステップS43において、残差Eがデスティネーション画像の水平方向の画素数Nd以上であるかを判定し、残差EがNd以上である場合にはステップS44にて残差Eからデスティネーション画像の水平方向の画素数Ndを減じてこれを新たな残差Eとし[E−Nd→E]、Xsの値をインクリメント[Xs+1→Xs]してからステップS43に戻る。ステップS43において、残差EがNd未満の場合には、ステップS45に進み、Xdの値をインクリメント[Xd+1→Xd]した後に、ソース画像中の画素Ps(Xs)をデスティネーション画像中の画素Ps(Xd)にコピーする[Ps(Xs)→Ps(Xd)]。
【0006】
ステップS41〜S45の操作により、ステップS43の条件を満たさない場合のソース画像の画素のみがデスティネーション画像にコピーされる。ステップS46において、デスティネーション画像のX座標値Xdの値をデスティネーション画像の水平方向の画素数Ndと比較し、XdがNdよりも小さい場合ステップS42にもどる。また、XdとNdが等しい場合は操作を終了する。以上の操作により、ステップS42〜S46までのループが繰り返される。
【0007】
このように、最近傍法によって縮小を行う時には、Ns、及びNdの値によって決定されるサンプリング位置に従って、画像の縮小が行われる。このフローチャートでは、水平方向の縮小のみを示したが、垂直方向にも同様のアルゴリズムを用いて縮小する。最近傍法による画像縮小方法では、加算、減算の繰り返しで処理を実現することができるため、乗算器や除算器を持たないコンピュータにおいても縮小処理が高速に実行できる。
【0008】
しかしながら、図7(a)のような画像に対して図6のフローに従って最近傍法で縮小処理を実施する場合には、Xsが3,7,11,15の値をとるときにステップS43の条件が満たされてしまうのでPs(3),Ps(7),Ps(11),Ps(15)はデスティネーション画像の画素としてコピーされない。このため、図7(b)に示すように、上段の1水平ラインのソース画像は下段の1水平ラインのデスティネーション画像に縮小される。その結果、図7(c)に示すように、画素の欠落により細線が消失するなどソース画像が持つ表現が損なわれ、デスティネーション画像の画質が劣化する。
【0009】
最近傍法による画質の劣化を改善するために、デスティネーション画像の画素情報をその画素に隣接する2つのソース画像の画素情報と画素との距離を用いて加重平均して決定する線形補完法がある(例えば、特許文献2参照。)。
【0010】
この方法は、図6のフローチャートのステップS45における[Ps(Xs)→Pd(Xd)]の演算を[{(1−e)×Ps(Xs)+e×Ps(Xs+1)}→Pd(Xd)]の演算に変更したものに相当する。ここで、e,(1−e)はソース画像の隣接した画素間の距離を1とした場合のデスティネーション画像の画素からの距離であり、図7(b)において処理対象のデスティネーション画像の画素をXd=2の位置の画素すなわちPd(2)とすると、Pd(2)よりも前方(図では左側)にあってPd(2)と最も近いXs=2の位置のソース画像の画素すなわちPs(2)とのX方向の距離がeであり、Pd(2)よりも後方(図では右側)にあってPd(2)と最も近いXs=3の位置のソース画像の画素すなわちPs(3)とのX方向の距離が(1−e)である。線形補完法を用いることにより、最近傍法で生じる水平方向あるいは垂直方向への直線の欠落が防止され、ソース画像により忠実な縮小画像が得られる。
【0011】
【特許文献1】
特開2001−119569号公報(段落0004−0006、図3)
【特許文献2】
特開平7−170393号公報(段落0028−0029、図3)
【0012】
【発明が解決しようとする課題】
しかしながら、線形補完法では、ソース画像の画素数Nsおよびデスティネーション画像の画素数Ndをもとにデスティネーション画像のそれぞれの画素に対応させて、前方にある最近傍のソース画像の画素までの距離eを計算する必要がある。ステップS45の段階では残差E=e×Ndの関係にあるので、線形補完法に変更した場合のステップ45の操作[{(1−e)×Ps(Xs)+e×Ps(Xs+1)}→Pd(Xd)]は、残差Eとデスティネーション画像の画素数Ndを用いて表すと[{(1−E)×Ps(Xs)+E×Ps(Xs+1)}/Nd→Pd(Xd)]となるのでデスティネーション画像の画素PS(Xd)を計算する毎にNdによる除算が必要であり、さらに除算の際に商の整数部分である整商のみをとり小数点以下を切り捨てる場合には誤差が大きくなるので、小数点以下の桁までの精度の除算を行う必要があった。このため、演算機能が加算、減算などに限られたコンピュータ環境で、線形補完法を用いた画像縮小をソフトウェア処理により、誤差を抑制し且つ高速に行うことは困難であった。
【0013】
本発明の目的は、上記した線形補完法に準じた方法で、演算機能が加算、減算、シフト演算などに限られたコンピュータ環境においても高速に実行でき、ソフトウェア処理に適した画像縮小方法を提供することにある。
【0014】
【課題を解決するための手段】
本発明の画像縮小方法は、ソース画像を縮小してデスティネーション画像を生成する画像縮小方法において、2Nが前記ソース画像の第1方向の画素数以上になる整数のうち最も小さい整数Nを決定する第1のステップと、前記Nを用いて得られた22Nを前記デスティネーション画像の第1方向の画素数で除して第1の数を算出する第2のステップと、第2の数に前記ソース画像の第1方向の画素数を加えて新たな第2の数とする第3のステップと、前記第2の数が前記デスティネーション画像の第1方向の画素数以上であるか否かを判断する第4のステップと、前記第4のステップで前記第2の数が前記デスティネーション画像の第1方向の画素数以上であるときに前記第2の数から前記デスティネーション画像の第1方向の画素数を減じて新たに第2の数とし前記ソース画像における対象画素を指す第1方向の座標値を1だけ増大させたのちに前記第4のステップに戻る第5のステップと、前記第4のステップで前記第2の数が前記デスティネーション画像の第1方向の画素数未満であるときに前記デスティネーション画像における対象画素を指す第1方向の座標値を1だけ増大させたのちに、前記デスティネーション画像における対象画素の画素情報値を、前記ソース画像における対象画素よりも1だけ増大した第1方向の座標値の位置にある画素の画素情報値から前記ソース画像における対象画素の画素情報値を減じた値に前記第1の数および前記第2の数を乗じて得られた値を2Nビット分下位桁方向にシフトして得られた補完値を前記ソース画像における対象画素の画素情報値に加えることにより得る第6のステップと、前記デスティネーション画像における対象画素の第1方向の座標値が前記デスティネーション画像の第1方向の画素数と同一であるかを判断し同一でないときに前記第3のステップに戻り、同一であるときに第1方向の1ライン分の処理を終了する第7のステップと、を備えることを特徴とする。第1〜第7のステップを第1方向に適用してデスティネーション画像として第1方向のみが縮小された第1方向縮小画像を得た後に、上記の第1〜第7のステップにおける第1方向をこれと直交する第2方向に置き換えて第1方向縮小画像をソース画像として第2方向の処理を同様に行うことにより縦横共に縮小されたデスティネーション画像が得られる。
【0015】
本発明の別の画像縮小方法は、ソース画像を縮小してデスティネーション画像を生成する画像縮小方法において、2Nが前記ソース画像の第1方向の画素数以上になる整数のうち最も小さい整数Nを決定する第1のステップと、前記Nと予め定めた正の整数Mとを用いて定めた2(N+M)を前記デスティネーション画像の第1方向の画素数で除して第1の数を算出する第2のステップと、第2の数に前記ソース画像の第1方向の画素数を加えて新たな第2の数とする第3のステップと、前記第2の数が前記デスティネーション画像の第1方向の画素数以上であるか否かを判断する第4のステップと、前記第4のステップで前記第2の数が前記デスティネーション画像の第1方向の画素数以上であるときに前記第2の数から前記デスティネーション画像の第1方向の画素数を減じて新たに第2の数としソース画像における対象画素を指す第1方向の座標値を1だけ増大させたのちに前記第4のステップに戻る第5のステップと、前記第4のステップで前記第2の数が前記デスティネーション画像の第1方向の画素数未満であるときに前記デスティネーション画像における対象画素を指す第1方向の座標値を1だけ増大させたのちに、前記デスティネーション画像における対象画素の画素情報値を、ソース画像における対象画素よりも1だけ増大した第1方向の座標値の位置にある画素の画素情報値から前記ソース画像における対象画素の画素情報値を減じた値に前記第1の数および前記第2の数を乗じて得られた値を(N+M)ビット分下位桁方向にシフトして得られた補完値を前記ソース画像における対象画素の画素情報値に加えることにより得る第6のステップと、前記デスティネーション画像における対象画素の第1方向の座標値が前記デスティネーション画像の第1方向の画素数と同一であるかを判断し同一でないときに前記第3のステップに戻り、同一であるときに第1方向の1ライン分の処理を終了する第7のステップと、を備えることを特徴とする。第1〜第7のステップを第1方向に適用してデスティネーション画像として第1方向のみが縮小された第1方向縮小画像を得た後に、上記の第1〜第7のステップにおける第1方向をこれと直交する第2方向に置き換えて第1方向縮小画像をソース画像として第2方向の処理を同様に行うことにより縦横共に縮小されたデスティネーション画像が得られる。
【0016】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態について説明する。図1は、本発明の画像縮小方法の一実施の形態のフローチャートである。図1のフローチャートはX方向の1ライン分の縮小フローを示し、ステップS11,S16,S17,S18,S20では、それぞれ図6のS41,S42,S43,S44,S46に対応し、同様の操作が行われる。ステップS12〜S14と、ステップS19とでは本実施の形態に特徴的な操作が行われる。
【0017】
図1のフローチャートにおいて、図6の従来例の説明と同様に、縮小の対象となるソース画像のX方向の画素数をNs、縮小後のデスティネーション画像画像のX方向の画素数をNdとする。また、ソース画像の画素ステップで定義されたX座標での座標値をXs、デスティネーション画像の画素ステップで定義されたX座標での座標値をXdとし、それらの位置にある画素をPs(Xs)、Pd(Xd)で表す。また、第1の数であるαを用意しこれをNdの逆数と22Nとの積と定義する。第2の数である残差Eは図6の従来例における残差Eと同様である。
【0018】
先ずステップS11において、ソース画像のX座標値Xs、デスティネーション画像のX座標値Xdおよび残差Eをそれぞれ0に初期化する。次に、ステップS12で整数Nを0に初期化する。
【0019】
次に、ステップS13で、ソース画像のX方向の画素数Nsと2Nとを比較し、Nsが2Nよりも大きい場合にはステップS15でNの値をインクリメントし、ステップS13に戻り再度Nsと2Nとを比較する。これを繰り返し、ステップS13でNsが2N以下になった場合にステップS14に移る。ステップS14では22Nをデスティネーション画像の水平方向の画素数Ndで割った値を算出してαに格納し[22N/Nd→α]、ステップS16に進む。
【0020】
次に、ステップS16において、残差Eにソースの水平方向の画素数Nsを加えてこれを新たな残差Eとする[E+Ns→E]。
【0021】
次に、ステップS17において、残差Eがデスティネーション画像の水平方向の画素数Nd以上であるかを判定し、残差EがNd以上である場合にはステップS18にて残差Eからデスティネーション画像の水平方向の画素数Ndを減じてこれを新たな残差Eとし[E−Nd→E]、Xsの値をインクリメント[Xs+1→Xs]してからステップS17に戻る。ステップS17において、残差EがNd未満の場合には、ステップS19に進み、Xdの値をインクリメント[Xd+1→Xd]した後に、デスティネーション画像の画素Pd(Xd)の彩度、明度、輝度等の画素情報値を、
Pd(Xd)=α×{Ps(Xs)×(Nd−E)+Ps(Xs+1)×E}/22N
の計算式で計算し、デスティネーション画像の画素Pd(Xd)の画素情報値を決定する[Ps(Xs)+(α*E*(Ps(Xs+1)−Ps(Xs)))>>2N→Ps(Xd)]。
【0022】
なお、ステップS19において、“*”は(×と同様に)乗算を示し、“>>”は右方向(下位桁方向)シフトを示す。ステップ19において(α×E×(Ps(Xs+1)−Ps(Xs)))/22Nが補完値を表す。
【0023】
次に、ステップS20において、デスティネーション画像のX座標値Xdの値をデスティネーション画像の水平方向の画素数Ndと比較し、XdがNdよりも小さい場合ステップS16にもどる。また、XdとNdが等しい場合は操作を終了する。以上の操作により、ステップS16〜S20までのループが繰り返される。
【0024】
図1のフローチャートでは、水平方向(X方向)の縮小フローのみを示したが、垂直方向(Y方向)の縮小においても図1のフロー中でXをYに置き換えるだけで同様のアルゴリズムを適用できる。
【0025】
ステップS19では、隣接する画素Ps(Xs)、Ps(Xs+1)の間の画素を、残差Eを用いて重みを考慮した計算を行っている。通常、一般的な重みを考慮した計算式は、
Pd(Xd)={Ps(Xs)×(Nd−E)+Ps(Xs+1)×E}/Ndであるが、本実施の形態ではステップS14にて[22N/Nd→α]とし、
Pd(Xd)=α×{Ps(Xs)×(Nd−E)+Ps(Xs+1)×E }/22N
と近似したことにより,ソフトウェアで実現する場合,除算(1/Nd)の代わりにシフト演算(>>2N)を用いることができるため、演算機能が加算、減算、シフト演算などに限られたコンピュータ環境においても高速に処理することが可能である。
【0026】
図2(a)は、ソース画像であり、図2(b)は、図1のフローによる縮小処理を詳細に説明する図である。ソース画像のX方向の画素数Ns=16、縮小後のデスティネーション画像のX方向の画素数Nd=12である場合(すなわち3/4に縮小の場合)について説明する。なお、以下の説明では、コンピュータ内では2進法で表現され計算されるが、理解を容易にするために10進表現を用いる。
【0027】
ステップS13とステップS14のループを繰り返し、N=4のときにステップS14に進み、α=22N/Nd=28/12が設定される。
【0028】
次にステップS17およびステップS18を繰り返して残差EがNd未満となったときにステップS19を実行する。図2(b)に示すように、デスティネーション側のX座標値Xd=i(iは1≦i≦Ndの整数)の画素Pd(i)は、すでに説明したように一般的な線形補完法ではPd(i)={(1−e)×Ps(i)+e×Ps(i+1)}として計算されるが、本実施の形態ではステップS19に従って計算される。
【0029】
例えばXd=2の場合には、ステップS17では残差E=8(すなわちe=E/Nd=8/12)のときに残差EがNd未満となるので、一般的な線形補完法では、
Pd(2)={4×Ps(2)+8×Ps(3)}/12
となり、図2(b)の上段のようにソース画像の画素Ps(2)の明度が10で画素Ps(3)の明度が0であるとすると、デスティネーション画像の画素Pd(2)の明度は、
Pd(2)=(40+0)/12=3.3333…となる。
【0030】
しかしながら、この一般的な線形補完法では、除算において整商のみをとり小数点以下の切り捨てを行った場合には、Pd(2)=3となり、誤差が大きい。
【0031】
これに対し、本実施の形態では、ステップS14の除算においてα=28/12=21.3333…の小数点以下を切り捨ててα=21としても、ステップ19における計算は
Pd(2)=PS(2)+α×E×(Ps(3)−Ps(2))/22N
にα=21,E=8,Ps(3)=0,Ps(2)=10,N=4として、
Pd(2)=10+21×8×(−10)/28=3.4375
となり、本実施の形態では、一般的な線形補完法で除算時に整商のみをとり小数点以下を切り捨てたときよりも誤差を小さくすることができる。ステップS14の除算はただ1回だけ計算すればよく、さらに整商のみを計算すればよいため除算が減算の繰り返しでできるので、処理速度の低下要因にはならない。また、コンピュータ内では数値は2進数で扱われるため、ステップ19では除算がシフト演算により代用できるので、高速な縮小処理が可能となる。したがって、本実施の形態の画像縮小方法は、演算機能が加算、減算、シフト演算などに限られたコンピュータ環境においても誤差の発生を抑制でき且つ高速に実行できるため、ソフトウェア処理に適している。本実施の形態では、ステップ14でα=22N/Ndと定義したことにより、αの誤差がもっとも大きくなる状況、すなわちNsとNdとの差がきわめて小さい(縮小率が1に近く、Ns、Ndがともにほぼ2Nである)状況においてもαが2N以上であることを保証し、ステップ14で整商のみをとり小数点以下切り捨てることによる誤差の発生を抑圧している。
【0032】
図3は、本発明の画像縮小方法を実行する画像処理システムのブロック図である。画像処理システムは、外部からソース画像を入力する機器である画像入力装置1と、記憶装置2と、画像縮小処理装置3と、ディスプレイ装置等の画像出力装置4とを含んで構成される。
【0033】
記憶装置2は、その内部に、ソース画像の各画素の彩度、明度、輝度の情報を記憶するソース画像情報格納部21および縮小後のデスティネーション画像の各画素のY,Cb,Cr情報を格納記憶するデスティネーション画像情報格納部22を含んでいる。
【0034】
画像縮小処理装置3は、その内部に、記憶装置2との間で1ライン分の画像情報の受け取り引渡しを行う画像データ調整部31と、本発明の画像縮小方法に従って画像縮小処理を実行する画像データ計算部32とを備えている。
【0035】
次に、図1、図3を参照して1画面分の画像縮小処理の動作について説明する。画像入力装置1から与えられた画像情報は、ソース画像情報格納部21に供給され、記憶される。画像データ調整部31は、ソース画像情報格納部21からX方向1ライン分の画像情報を受け取り、画像データ計算部32に渡す。画像データ計算部32は、図1のフローに従って画像情報を各画素のY、Cb、Crの成分について計算(縮小処理)し、縮小後の画像の画素情報を作成する。画像データ調整部31は縮小後の画像情報をデスティネーション画像情報格納部22に渡す。デスティネーション画像情報格納部22はこの画像情報を受け取り格納する。この一連の処理を、Y方向のライン数だけ実行することにより、X方向に縮小された画像(X方向縮小画像)がデスティネーション画像情報格納部22に格納される。
【0036】
次に、画像データ調整部31がX方向縮小画像のY方向の1ライン分の画像情報を受け取り、画像データ計算部32に渡す。X方向の1ラインの処理と同様に画像情報のデータをそれぞれY、Cb、Crの成分についてを計算(縮小処理)し、Y方向に縮小後の画像の画素情報を作成する。画像データ調整部31は縮小後の画像情報をデスティネーション画像情報格納部22渡す。デスティネーション画像情報格納部22はY方向の1ライン分の縮小後の画像データを格納する。この一連の処理をX方向のライン数だけ実行することによってY方向が画像縮小され、最終的にデスティネーション画像情報格納部22にはX方向、Y方向共に縮小処理された画像の情報が格納される。これを、出力装置4を介して出力する。
【0037】
図3の画像縮小処理装置3は、専用の装置として構成してもよいが、コンピュータと縮小処理プログラムにより構成することが可能であり、この場合には、コンピュータが、予めコンピュータ内のプログラムメモリまたは記憶領域2の一部の領域に格納された縮小処理プログラムに従って図1の手順(およびY方向に対する図1と同様な手順)を実行する。
【0038】
図4(a),(b)は縮小前後の画像を示す図であり、図4(a)は図2(a)と同様に縮小前のソース画像を示し、図4(b)は図3の画像処理システムを用いてX方向、およびY方向に図1と同様の手順を用いて縮小した後のデスティネーション画像を示す。最近傍法で問題となる細線消失の発生がなく線形補完法で得られる画像と遜色のないデスティネーション画像が得られる。
【0039】
次に、本発明の他の実施の形態について説明する。図5は、本発明の第2の実施の形態のフローチャートであり、X方向の1ライン分の縮小フローを示している。本実施の形態が図1の第1の実施の形態と異なる点は、図1におけるステップS14およびステップS19に換えてステップS14aおよびステップS19aとした点であり、その他は第1の実施の形態と同様である。ステップS14aでは、[2(M+N)/Nd→α]の操作を行い、ステップS19では、[Xd+1→Xd]の後に[Ps(Xs)+(α*E*(Ps(Xs+1)−Ps(Xs)))>>(M+N)→Pd(Xd)]の操作をする。ここで、Mは1以上の正の整数であり、“*”は(×と同様に)乗算を示し、“>>”は右方向(下位桁方向)シフトを示す。
【0040】
本実施の形態において、Mが小さいときには、縮小率が小さい(すなわち(デスティネーション画像のサイズ/ソース画像のサイズ)が小さい)場合にはNが大きくなるので誤差発生の問題はないが、縮小率が大きい(すなわち(デスティネーション画像のサイズ/ソース画像のサイズ)が1により近い)場合にはステップS14aで2(M+N)/Ndで整商をとり小数点以下を切り捨てると誤差が大きくなり問題となる。
【0041】
逆にMが大きいときには、縮小率が大きい場合においてもNが小さくても誤差を小さく抑圧できるが、縮小率が小さい場合にはNも大きいのでαのビットデータが必要以上に大きくなるため、データ量が非常に大きくなるなど無駄が生じる。
【0042】
このため、Mの値は縮小率に基づいて適切に定められることが望ましく、図1の第1の実施の形態(本実施の形態においてM=Nとした場合に相当)のようにしてもよいが、本実施の形態においてはMを4≦M≦14を満たす正整数の固定値にすることにより、ステップS14aにおいて商の小数点以下を切り捨てた場合に生じるαの誤差が最大でも10%〜0.01%に抑圧でき、且つαのビットデータも14ビット以下となり、誤差とデータ量を両立できる。
【0043】
本実施の形態においても、第1の実施の形態と同様に、ステップS14aの除算は整商のみを計算すればよく除算が減算の繰り返しでできることに加えて1回のみの除算であり、ステップ19aの除算はシフト演算により代用できるので、高速な縮小処理が可能であり、演算機能が加算、減算、シフト演算などに限られたコンピュータ環境においても誤差の発生を抑制でき且つ高速に実行できるため、ソフトウェア処理に適している。
【0044】
図5のフローチャートでは、水平方向(X方向)の縮小フローのみを示したが、垂直方向(Y方向)の縮小においても図5のフロー中でXをYに置き換えるだけで同様のアルゴリズムを適用できる。また、本実施の形態の図5のフローは、第1の実施の形態の図1のフローと同様に、図3の画像縮小処理装置3を含む画像処理システムを用いてX方向の縮小としてY方向のライン数だけ実行され、次に、Y方向の縮小としてX方向のライン数だけ実行される。この場合に、画像縮小処理装置3は専用の装置であってもよく、コンピュータと縮小処理プログラムにより構成してもよいことは、第1の実施の形態を実行する場合と同様である。
【0045】
【発明の効果】
以上に説明したように、本発明の画像縮小方法および画像縮小処理プログラムは、演算機能が加算、減算、シフト演算などに限られたコンピュータ環境においても高速に実行でき、且つ線形補完法に準じた方法であるためこれと同様に細線消去を回避できるので、画像縮小のソフトウェア処理に適している。
【図面の簡単な説明】
【図1】本発明の画像縮小方法の第1の実施の形態を示すフローチャートである。
【図2】(a)はソース画像であり,(b)は、図1のフローによる縮小処理を詳細に説明する図である。
【図3】本発明の画像縮小方法を実行する画像処理システムのブロック図である。
【図4】(a)は縮小前のソース画像を示し、(b)縮小後のデスティネーション画像を示す。
【図5】本発明の第2の実施の形態のフローチャートである。
【図6】従来例による画像縮小のフローチャートである。
【図7】(a)はソース画像であり、(b)は図6の従来例の方法で縮小したデスティネーション画像の一例である。
【符号の説明】
1 画像入力装置
2 記憶装置
3 画像縮小処理装置
4 画像出力装置
【発明の属する技術分野】
本発明は画像縮小方法に関し、特に、細線消去を防止する画像縮小方法および画像縮小処理プログラムに関する。
【0002】
【従来の技術】
従来、画像の縮小方法には、縮小後の画素に最も近い縮小前の画像の画素を選択してコピーすることにより縮小画像を作成する最近傍法(ニアレストネイバ)と呼ばれる縮小方法がある。しかし、最近傍法では、縮小前の画像(ソース画像)のパタンと適用される縮小率とによっては、縮小後の画像(デスティネーション画像)で画素情報が完全に欠落してしまうことがある(例えば、特許文献1参照。)。
【0003】
図6は、最近傍法による画像縮小のフローチャートである。まず、X方向に連続した画像を縮小する手順を、図6のフローチャートに従って説明する。ここで、縮小の対象となる画像(ソース画像と呼ぶ)の水平方向の画素数をNs、縮小後の画像(デスティネーション画像と呼ぶ)の水平方向の画素数をNdとする。また、ソース画像の画素ステップで定義されたX座標での座標値をXs、デスティネーション画像の画素ステップで定義されたX座標での座標値をXdとし、またそれらの位置にある画素をPs(Xs)、Pd(Xd)で表す。また、ソース画像の画素がデスティネーション画像の画素として選択されるか否かを判定するために残差Eを用いる。
【0004】
図6のフローチャートでは、先ずステップS41において、ソース画像のX座標値Xs、デスティネーション画像のX座標値Xdおよび残差Eをそれぞれ0に初期化する。次に、ステップS42において、残差Eにソースの水平方向の画素数Nsを加えてこれを新たな残差Eとする[E+Ns→E]。
【0005】
次に、ステップS43において、残差Eがデスティネーション画像の水平方向の画素数Nd以上であるかを判定し、残差EがNd以上である場合にはステップS44にて残差Eからデスティネーション画像の水平方向の画素数Ndを減じてこれを新たな残差Eとし[E−Nd→E]、Xsの値をインクリメント[Xs+1→Xs]してからステップS43に戻る。ステップS43において、残差EがNd未満の場合には、ステップS45に進み、Xdの値をインクリメント[Xd+1→Xd]した後に、ソース画像中の画素Ps(Xs)をデスティネーション画像中の画素Ps(Xd)にコピーする[Ps(Xs)→Ps(Xd)]。
【0006】
ステップS41〜S45の操作により、ステップS43の条件を満たさない場合のソース画像の画素のみがデスティネーション画像にコピーされる。ステップS46において、デスティネーション画像のX座標値Xdの値をデスティネーション画像の水平方向の画素数Ndと比較し、XdがNdよりも小さい場合ステップS42にもどる。また、XdとNdが等しい場合は操作を終了する。以上の操作により、ステップS42〜S46までのループが繰り返される。
【0007】
このように、最近傍法によって縮小を行う時には、Ns、及びNdの値によって決定されるサンプリング位置に従って、画像の縮小が行われる。このフローチャートでは、水平方向の縮小のみを示したが、垂直方向にも同様のアルゴリズムを用いて縮小する。最近傍法による画像縮小方法では、加算、減算の繰り返しで処理を実現することができるため、乗算器や除算器を持たないコンピュータにおいても縮小処理が高速に実行できる。
【0008】
しかしながら、図7(a)のような画像に対して図6のフローに従って最近傍法で縮小処理を実施する場合には、Xsが3,7,11,15の値をとるときにステップS43の条件が満たされてしまうのでPs(3),Ps(7),Ps(11),Ps(15)はデスティネーション画像の画素としてコピーされない。このため、図7(b)に示すように、上段の1水平ラインのソース画像は下段の1水平ラインのデスティネーション画像に縮小される。その結果、図7(c)に示すように、画素の欠落により細線が消失するなどソース画像が持つ表現が損なわれ、デスティネーション画像の画質が劣化する。
【0009】
最近傍法による画質の劣化を改善するために、デスティネーション画像の画素情報をその画素に隣接する2つのソース画像の画素情報と画素との距離を用いて加重平均して決定する線形補完法がある(例えば、特許文献2参照。)。
【0010】
この方法は、図6のフローチャートのステップS45における[Ps(Xs)→Pd(Xd)]の演算を[{(1−e)×Ps(Xs)+e×Ps(Xs+1)}→Pd(Xd)]の演算に変更したものに相当する。ここで、e,(1−e)はソース画像の隣接した画素間の距離を1とした場合のデスティネーション画像の画素からの距離であり、図7(b)において処理対象のデスティネーション画像の画素をXd=2の位置の画素すなわちPd(2)とすると、Pd(2)よりも前方(図では左側)にあってPd(2)と最も近いXs=2の位置のソース画像の画素すなわちPs(2)とのX方向の距離がeであり、Pd(2)よりも後方(図では右側)にあってPd(2)と最も近いXs=3の位置のソース画像の画素すなわちPs(3)とのX方向の距離が(1−e)である。線形補完法を用いることにより、最近傍法で生じる水平方向あるいは垂直方向への直線の欠落が防止され、ソース画像により忠実な縮小画像が得られる。
【0011】
【特許文献1】
特開2001−119569号公報(段落0004−0006、図3)
【特許文献2】
特開平7−170393号公報(段落0028−0029、図3)
【0012】
【発明が解決しようとする課題】
しかしながら、線形補完法では、ソース画像の画素数Nsおよびデスティネーション画像の画素数Ndをもとにデスティネーション画像のそれぞれの画素に対応させて、前方にある最近傍のソース画像の画素までの距離eを計算する必要がある。ステップS45の段階では残差E=e×Ndの関係にあるので、線形補完法に変更した場合のステップ45の操作[{(1−e)×Ps(Xs)+e×Ps(Xs+1)}→Pd(Xd)]は、残差Eとデスティネーション画像の画素数Ndを用いて表すと[{(1−E)×Ps(Xs)+E×Ps(Xs+1)}/Nd→Pd(Xd)]となるのでデスティネーション画像の画素PS(Xd)を計算する毎にNdによる除算が必要であり、さらに除算の際に商の整数部分である整商のみをとり小数点以下を切り捨てる場合には誤差が大きくなるので、小数点以下の桁までの精度の除算を行う必要があった。このため、演算機能が加算、減算などに限られたコンピュータ環境で、線形補完法を用いた画像縮小をソフトウェア処理により、誤差を抑制し且つ高速に行うことは困難であった。
【0013】
本発明の目的は、上記した線形補完法に準じた方法で、演算機能が加算、減算、シフト演算などに限られたコンピュータ環境においても高速に実行でき、ソフトウェア処理に適した画像縮小方法を提供することにある。
【0014】
【課題を解決するための手段】
本発明の画像縮小方法は、ソース画像を縮小してデスティネーション画像を生成する画像縮小方法において、2Nが前記ソース画像の第1方向の画素数以上になる整数のうち最も小さい整数Nを決定する第1のステップと、前記Nを用いて得られた22Nを前記デスティネーション画像の第1方向の画素数で除して第1の数を算出する第2のステップと、第2の数に前記ソース画像の第1方向の画素数を加えて新たな第2の数とする第3のステップと、前記第2の数が前記デスティネーション画像の第1方向の画素数以上であるか否かを判断する第4のステップと、前記第4のステップで前記第2の数が前記デスティネーション画像の第1方向の画素数以上であるときに前記第2の数から前記デスティネーション画像の第1方向の画素数を減じて新たに第2の数とし前記ソース画像における対象画素を指す第1方向の座標値を1だけ増大させたのちに前記第4のステップに戻る第5のステップと、前記第4のステップで前記第2の数が前記デスティネーション画像の第1方向の画素数未満であるときに前記デスティネーション画像における対象画素を指す第1方向の座標値を1だけ増大させたのちに、前記デスティネーション画像における対象画素の画素情報値を、前記ソース画像における対象画素よりも1だけ増大した第1方向の座標値の位置にある画素の画素情報値から前記ソース画像における対象画素の画素情報値を減じた値に前記第1の数および前記第2の数を乗じて得られた値を2Nビット分下位桁方向にシフトして得られた補完値を前記ソース画像における対象画素の画素情報値に加えることにより得る第6のステップと、前記デスティネーション画像における対象画素の第1方向の座標値が前記デスティネーション画像の第1方向の画素数と同一であるかを判断し同一でないときに前記第3のステップに戻り、同一であるときに第1方向の1ライン分の処理を終了する第7のステップと、を備えることを特徴とする。第1〜第7のステップを第1方向に適用してデスティネーション画像として第1方向のみが縮小された第1方向縮小画像を得た後に、上記の第1〜第7のステップにおける第1方向をこれと直交する第2方向に置き換えて第1方向縮小画像をソース画像として第2方向の処理を同様に行うことにより縦横共に縮小されたデスティネーション画像が得られる。
【0015】
本発明の別の画像縮小方法は、ソース画像を縮小してデスティネーション画像を生成する画像縮小方法において、2Nが前記ソース画像の第1方向の画素数以上になる整数のうち最も小さい整数Nを決定する第1のステップと、前記Nと予め定めた正の整数Mとを用いて定めた2(N+M)を前記デスティネーション画像の第1方向の画素数で除して第1の数を算出する第2のステップと、第2の数に前記ソース画像の第1方向の画素数を加えて新たな第2の数とする第3のステップと、前記第2の数が前記デスティネーション画像の第1方向の画素数以上であるか否かを判断する第4のステップと、前記第4のステップで前記第2の数が前記デスティネーション画像の第1方向の画素数以上であるときに前記第2の数から前記デスティネーション画像の第1方向の画素数を減じて新たに第2の数としソース画像における対象画素を指す第1方向の座標値を1だけ増大させたのちに前記第4のステップに戻る第5のステップと、前記第4のステップで前記第2の数が前記デスティネーション画像の第1方向の画素数未満であるときに前記デスティネーション画像における対象画素を指す第1方向の座標値を1だけ増大させたのちに、前記デスティネーション画像における対象画素の画素情報値を、ソース画像における対象画素よりも1だけ増大した第1方向の座標値の位置にある画素の画素情報値から前記ソース画像における対象画素の画素情報値を減じた値に前記第1の数および前記第2の数を乗じて得られた値を(N+M)ビット分下位桁方向にシフトして得られた補完値を前記ソース画像における対象画素の画素情報値に加えることにより得る第6のステップと、前記デスティネーション画像における対象画素の第1方向の座標値が前記デスティネーション画像の第1方向の画素数と同一であるかを判断し同一でないときに前記第3のステップに戻り、同一であるときに第1方向の1ライン分の処理を終了する第7のステップと、を備えることを特徴とする。第1〜第7のステップを第1方向に適用してデスティネーション画像として第1方向のみが縮小された第1方向縮小画像を得た後に、上記の第1〜第7のステップにおける第1方向をこれと直交する第2方向に置き換えて第1方向縮小画像をソース画像として第2方向の処理を同様に行うことにより縦横共に縮小されたデスティネーション画像が得られる。
【0016】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態について説明する。図1は、本発明の画像縮小方法の一実施の形態のフローチャートである。図1のフローチャートはX方向の1ライン分の縮小フローを示し、ステップS11,S16,S17,S18,S20では、それぞれ図6のS41,S42,S43,S44,S46に対応し、同様の操作が行われる。ステップS12〜S14と、ステップS19とでは本実施の形態に特徴的な操作が行われる。
【0017】
図1のフローチャートにおいて、図6の従来例の説明と同様に、縮小の対象となるソース画像のX方向の画素数をNs、縮小後のデスティネーション画像画像のX方向の画素数をNdとする。また、ソース画像の画素ステップで定義されたX座標での座標値をXs、デスティネーション画像の画素ステップで定義されたX座標での座標値をXdとし、それらの位置にある画素をPs(Xs)、Pd(Xd)で表す。また、第1の数であるαを用意しこれをNdの逆数と22Nとの積と定義する。第2の数である残差Eは図6の従来例における残差Eと同様である。
【0018】
先ずステップS11において、ソース画像のX座標値Xs、デスティネーション画像のX座標値Xdおよび残差Eをそれぞれ0に初期化する。次に、ステップS12で整数Nを0に初期化する。
【0019】
次に、ステップS13で、ソース画像のX方向の画素数Nsと2Nとを比較し、Nsが2Nよりも大きい場合にはステップS15でNの値をインクリメントし、ステップS13に戻り再度Nsと2Nとを比較する。これを繰り返し、ステップS13でNsが2N以下になった場合にステップS14に移る。ステップS14では22Nをデスティネーション画像の水平方向の画素数Ndで割った値を算出してαに格納し[22N/Nd→α]、ステップS16に進む。
【0020】
次に、ステップS16において、残差Eにソースの水平方向の画素数Nsを加えてこれを新たな残差Eとする[E+Ns→E]。
【0021】
次に、ステップS17において、残差Eがデスティネーション画像の水平方向の画素数Nd以上であるかを判定し、残差EがNd以上である場合にはステップS18にて残差Eからデスティネーション画像の水平方向の画素数Ndを減じてこれを新たな残差Eとし[E−Nd→E]、Xsの値をインクリメント[Xs+1→Xs]してからステップS17に戻る。ステップS17において、残差EがNd未満の場合には、ステップS19に進み、Xdの値をインクリメント[Xd+1→Xd]した後に、デスティネーション画像の画素Pd(Xd)の彩度、明度、輝度等の画素情報値を、
Pd(Xd)=α×{Ps(Xs)×(Nd−E)+Ps(Xs+1)×E}/22N
の計算式で計算し、デスティネーション画像の画素Pd(Xd)の画素情報値を決定する[Ps(Xs)+(α*E*(Ps(Xs+1)−Ps(Xs)))>>2N→Ps(Xd)]。
【0022】
なお、ステップS19において、“*”は(×と同様に)乗算を示し、“>>”は右方向(下位桁方向)シフトを示す。ステップ19において(α×E×(Ps(Xs+1)−Ps(Xs)))/22Nが補完値を表す。
【0023】
次に、ステップS20において、デスティネーション画像のX座標値Xdの値をデスティネーション画像の水平方向の画素数Ndと比較し、XdがNdよりも小さい場合ステップS16にもどる。また、XdとNdが等しい場合は操作を終了する。以上の操作により、ステップS16〜S20までのループが繰り返される。
【0024】
図1のフローチャートでは、水平方向(X方向)の縮小フローのみを示したが、垂直方向(Y方向)の縮小においても図1のフロー中でXをYに置き換えるだけで同様のアルゴリズムを適用できる。
【0025】
ステップS19では、隣接する画素Ps(Xs)、Ps(Xs+1)の間の画素を、残差Eを用いて重みを考慮した計算を行っている。通常、一般的な重みを考慮した計算式は、
Pd(Xd)={Ps(Xs)×(Nd−E)+Ps(Xs+1)×E}/Ndであるが、本実施の形態ではステップS14にて[22N/Nd→α]とし、
Pd(Xd)=α×{Ps(Xs)×(Nd−E)+Ps(Xs+1)×E }/22N
と近似したことにより,ソフトウェアで実現する場合,除算(1/Nd)の代わりにシフト演算(>>2N)を用いることができるため、演算機能が加算、減算、シフト演算などに限られたコンピュータ環境においても高速に処理することが可能である。
【0026】
図2(a)は、ソース画像であり、図2(b)は、図1のフローによる縮小処理を詳細に説明する図である。ソース画像のX方向の画素数Ns=16、縮小後のデスティネーション画像のX方向の画素数Nd=12である場合(すなわち3/4に縮小の場合)について説明する。なお、以下の説明では、コンピュータ内では2進法で表現され計算されるが、理解を容易にするために10進表現を用いる。
【0027】
ステップS13とステップS14のループを繰り返し、N=4のときにステップS14に進み、α=22N/Nd=28/12が設定される。
【0028】
次にステップS17およびステップS18を繰り返して残差EがNd未満となったときにステップS19を実行する。図2(b)に示すように、デスティネーション側のX座標値Xd=i(iは1≦i≦Ndの整数)の画素Pd(i)は、すでに説明したように一般的な線形補完法ではPd(i)={(1−e)×Ps(i)+e×Ps(i+1)}として計算されるが、本実施の形態ではステップS19に従って計算される。
【0029】
例えばXd=2の場合には、ステップS17では残差E=8(すなわちe=E/Nd=8/12)のときに残差EがNd未満となるので、一般的な線形補完法では、
Pd(2)={4×Ps(2)+8×Ps(3)}/12
となり、図2(b)の上段のようにソース画像の画素Ps(2)の明度が10で画素Ps(3)の明度が0であるとすると、デスティネーション画像の画素Pd(2)の明度は、
Pd(2)=(40+0)/12=3.3333…となる。
【0030】
しかしながら、この一般的な線形補完法では、除算において整商のみをとり小数点以下の切り捨てを行った場合には、Pd(2)=3となり、誤差が大きい。
【0031】
これに対し、本実施の形態では、ステップS14の除算においてα=28/12=21.3333…の小数点以下を切り捨ててα=21としても、ステップ19における計算は
Pd(2)=PS(2)+α×E×(Ps(3)−Ps(2))/22N
にα=21,E=8,Ps(3)=0,Ps(2)=10,N=4として、
Pd(2)=10+21×8×(−10)/28=3.4375
となり、本実施の形態では、一般的な線形補完法で除算時に整商のみをとり小数点以下を切り捨てたときよりも誤差を小さくすることができる。ステップS14の除算はただ1回だけ計算すればよく、さらに整商のみを計算すればよいため除算が減算の繰り返しでできるので、処理速度の低下要因にはならない。また、コンピュータ内では数値は2進数で扱われるため、ステップ19では除算がシフト演算により代用できるので、高速な縮小処理が可能となる。したがって、本実施の形態の画像縮小方法は、演算機能が加算、減算、シフト演算などに限られたコンピュータ環境においても誤差の発生を抑制でき且つ高速に実行できるため、ソフトウェア処理に適している。本実施の形態では、ステップ14でα=22N/Ndと定義したことにより、αの誤差がもっとも大きくなる状況、すなわちNsとNdとの差がきわめて小さい(縮小率が1に近く、Ns、Ndがともにほぼ2Nである)状況においてもαが2N以上であることを保証し、ステップ14で整商のみをとり小数点以下切り捨てることによる誤差の発生を抑圧している。
【0032】
図3は、本発明の画像縮小方法を実行する画像処理システムのブロック図である。画像処理システムは、外部からソース画像を入力する機器である画像入力装置1と、記憶装置2と、画像縮小処理装置3と、ディスプレイ装置等の画像出力装置4とを含んで構成される。
【0033】
記憶装置2は、その内部に、ソース画像の各画素の彩度、明度、輝度の情報を記憶するソース画像情報格納部21および縮小後のデスティネーション画像の各画素のY,Cb,Cr情報を格納記憶するデスティネーション画像情報格納部22を含んでいる。
【0034】
画像縮小処理装置3は、その内部に、記憶装置2との間で1ライン分の画像情報の受け取り引渡しを行う画像データ調整部31と、本発明の画像縮小方法に従って画像縮小処理を実行する画像データ計算部32とを備えている。
【0035】
次に、図1、図3を参照して1画面分の画像縮小処理の動作について説明する。画像入力装置1から与えられた画像情報は、ソース画像情報格納部21に供給され、記憶される。画像データ調整部31は、ソース画像情報格納部21からX方向1ライン分の画像情報を受け取り、画像データ計算部32に渡す。画像データ計算部32は、図1のフローに従って画像情報を各画素のY、Cb、Crの成分について計算(縮小処理)し、縮小後の画像の画素情報を作成する。画像データ調整部31は縮小後の画像情報をデスティネーション画像情報格納部22に渡す。デスティネーション画像情報格納部22はこの画像情報を受け取り格納する。この一連の処理を、Y方向のライン数だけ実行することにより、X方向に縮小された画像(X方向縮小画像)がデスティネーション画像情報格納部22に格納される。
【0036】
次に、画像データ調整部31がX方向縮小画像のY方向の1ライン分の画像情報を受け取り、画像データ計算部32に渡す。X方向の1ラインの処理と同様に画像情報のデータをそれぞれY、Cb、Crの成分についてを計算(縮小処理)し、Y方向に縮小後の画像の画素情報を作成する。画像データ調整部31は縮小後の画像情報をデスティネーション画像情報格納部22渡す。デスティネーション画像情報格納部22はY方向の1ライン分の縮小後の画像データを格納する。この一連の処理をX方向のライン数だけ実行することによってY方向が画像縮小され、最終的にデスティネーション画像情報格納部22にはX方向、Y方向共に縮小処理された画像の情報が格納される。これを、出力装置4を介して出力する。
【0037】
図3の画像縮小処理装置3は、専用の装置として構成してもよいが、コンピュータと縮小処理プログラムにより構成することが可能であり、この場合には、コンピュータが、予めコンピュータ内のプログラムメモリまたは記憶領域2の一部の領域に格納された縮小処理プログラムに従って図1の手順(およびY方向に対する図1と同様な手順)を実行する。
【0038】
図4(a),(b)は縮小前後の画像を示す図であり、図4(a)は図2(a)と同様に縮小前のソース画像を示し、図4(b)は図3の画像処理システムを用いてX方向、およびY方向に図1と同様の手順を用いて縮小した後のデスティネーション画像を示す。最近傍法で問題となる細線消失の発生がなく線形補完法で得られる画像と遜色のないデスティネーション画像が得られる。
【0039】
次に、本発明の他の実施の形態について説明する。図5は、本発明の第2の実施の形態のフローチャートであり、X方向の1ライン分の縮小フローを示している。本実施の形態が図1の第1の実施の形態と異なる点は、図1におけるステップS14およびステップS19に換えてステップS14aおよびステップS19aとした点であり、その他は第1の実施の形態と同様である。ステップS14aでは、[2(M+N)/Nd→α]の操作を行い、ステップS19では、[Xd+1→Xd]の後に[Ps(Xs)+(α*E*(Ps(Xs+1)−Ps(Xs)))>>(M+N)→Pd(Xd)]の操作をする。ここで、Mは1以上の正の整数であり、“*”は(×と同様に)乗算を示し、“>>”は右方向(下位桁方向)シフトを示す。
【0040】
本実施の形態において、Mが小さいときには、縮小率が小さい(すなわち(デスティネーション画像のサイズ/ソース画像のサイズ)が小さい)場合にはNが大きくなるので誤差発生の問題はないが、縮小率が大きい(すなわち(デスティネーション画像のサイズ/ソース画像のサイズ)が1により近い)場合にはステップS14aで2(M+N)/Ndで整商をとり小数点以下を切り捨てると誤差が大きくなり問題となる。
【0041】
逆にMが大きいときには、縮小率が大きい場合においてもNが小さくても誤差を小さく抑圧できるが、縮小率が小さい場合にはNも大きいのでαのビットデータが必要以上に大きくなるため、データ量が非常に大きくなるなど無駄が生じる。
【0042】
このため、Mの値は縮小率に基づいて適切に定められることが望ましく、図1の第1の実施の形態(本実施の形態においてM=Nとした場合に相当)のようにしてもよいが、本実施の形態においてはMを4≦M≦14を満たす正整数の固定値にすることにより、ステップS14aにおいて商の小数点以下を切り捨てた場合に生じるαの誤差が最大でも10%〜0.01%に抑圧でき、且つαのビットデータも14ビット以下となり、誤差とデータ量を両立できる。
【0043】
本実施の形態においても、第1の実施の形態と同様に、ステップS14aの除算は整商のみを計算すればよく除算が減算の繰り返しでできることに加えて1回のみの除算であり、ステップ19aの除算はシフト演算により代用できるので、高速な縮小処理が可能であり、演算機能が加算、減算、シフト演算などに限られたコンピュータ環境においても誤差の発生を抑制でき且つ高速に実行できるため、ソフトウェア処理に適している。
【0044】
図5のフローチャートでは、水平方向(X方向)の縮小フローのみを示したが、垂直方向(Y方向)の縮小においても図5のフロー中でXをYに置き換えるだけで同様のアルゴリズムを適用できる。また、本実施の形態の図5のフローは、第1の実施の形態の図1のフローと同様に、図3の画像縮小処理装置3を含む画像処理システムを用いてX方向の縮小としてY方向のライン数だけ実行され、次に、Y方向の縮小としてX方向のライン数だけ実行される。この場合に、画像縮小処理装置3は専用の装置であってもよく、コンピュータと縮小処理プログラムにより構成してもよいことは、第1の実施の形態を実行する場合と同様である。
【0045】
【発明の効果】
以上に説明したように、本発明の画像縮小方法および画像縮小処理プログラムは、演算機能が加算、減算、シフト演算などに限られたコンピュータ環境においても高速に実行でき、且つ線形補完法に準じた方法であるためこれと同様に細線消去を回避できるので、画像縮小のソフトウェア処理に適している。
【図面の簡単な説明】
【図1】本発明の画像縮小方法の第1の実施の形態を示すフローチャートである。
【図2】(a)はソース画像であり,(b)は、図1のフローによる縮小処理を詳細に説明する図である。
【図3】本発明の画像縮小方法を実行する画像処理システムのブロック図である。
【図4】(a)は縮小前のソース画像を示し、(b)縮小後のデスティネーション画像を示す。
【図5】本発明の第2の実施の形態のフローチャートである。
【図6】従来例による画像縮小のフローチャートである。
【図7】(a)はソース画像であり、(b)は図6の従来例の方法で縮小したデスティネーション画像の一例である。
【符号の説明】
1 画像入力装置
2 記憶装置
3 画像縮小処理装置
4 画像出力装置
Claims (13)
- ソース画像を縮小してデスティネーション画像を生成する画像縮小方法において、
2Nが前記ソース画像の第1方向の画素数以上になる整数のうち最も小さい整数Nを決定する第1のステップと、
前記Nを用いて得られた22Nを前記デスティネーション画像の第1方向の画素数で除して第1の数を算出する第2のステップと、
第2の数に前記ソース画像の第1方向の画素数を加えて新たな第2の数とする第3のステップと、
前記第2の数が前記デスティネーション画像の第1方向の画素数以上であるか否かを判断する第4のステップと、
前記第4のステップで前記第2の数が前記デスティネーション画像の第1方向の画素数以上であるときに前記第2の数から前記デスティネーション画像の第1方向の画素数を減じて新たに第2の数とし前記ソース画像における対象画素を指す第1方向の座標値を1だけ増大させたのちに前記第4のステップに戻る第5のステップと、
前記第4のステップで前記第2の数が前記デスティネーション画像の第1方向の画素数未満であるときに前記デスティネーション画像における対象画素を指す第1方向の座標値を1だけ増大させたのちに、前記デスティネーション画像における対象画素の画素情報値を、前記ソース画像における対象画素よりも1だけ増大した第1方向の座標値の位置にある画素の画素情報値から前記ソース画像における対象画素の画素情報値を減じた値に前記第1の数および前記第2の数を乗じて得られた値を2Nビット分下位桁方向にシフトして得られた補完値を前記ソース画像における対象画素の画素情報値に加えることにより得る第6のステップと、
前記デスティネーション画像における対象画素の第1方向の座標値が前記デスティネーション画像の第1方向の画素数と同一であるかを判断し同一でないときに前記第3のステップに戻り、同一であるときに第1方向の1ライン分の処理を終了する第7のステップと、
を備えることを特徴とする画像縮小方法。 - 前記第1の数は小数点以下が切り捨てられた整数であることを特徴とする請求項1に記載の画像縮小方法。
- ソース画像を縮小してデスティネーション画像を生成する画像縮小方法において、
2Naが前記ソース画像の第1方向の画素数以上になる整数のうち最も小さい整数Naを決定する第1方向の第1のステップと、前記Naを用いて得られた22Naを前記デスティネーション画像の第1方向の画素数で除して第1の数を算出する第1方向の第2のステップと、第2の数に前記ソース画像の第1方向の画素数を加えて新たな第2の数とする第1方向の第3のステップと、前記第2の数が前記デスティネーション画像の第1方向の画素数以上であるか否かを判断する第1方向の第4のステップと、前記第1方向の第4のステップで前記第2の数が前記デスティネーション画像の第1方向の画素数以上であるときに前記第2の数から前記デスティネーション画像の第1方向の画素数を減じて新たに第2の数とし前記ソース画像における対象画素を指す第1方向の座標値を1だけ増大させたのちに前記第1方向の第4のステップに戻る第1方向の第5のステップと、前記第1方向の第4のステップで前記第2の数が前記デスティネーション画像の第1方向の画素数未満であるときに第1方向縮小画像における対象画素を指す第1方向の座標値を1だけ増大させたのちに、前記第1方向縮小画像における対象画素の画素情報値を、前記ソース画像における対象画素よりも1だけ増大した第1方向の座標値の位置にある画素の画素情報値から前記ソース画像における対象画素の画素情報値を減じた値に前記第1の数および前記第2の数を乗じて得られた値を2Naビット分下位桁方向にシフトして得られた補完値を前記ソース画像における対象画素の画素情報値に加えることにより得る第1方向の第6のステップと、前記第1方向縮小画像における対象画素の第1方向の座標値が前記デスティネーション画像の第1方向の画素数と同一であるかを判断し同一でないときに前記第1方向の第3のステップに戻り、同一であるときに第1方向の1ライン分の処理を終了する第1方向の第7のステップと、を有する第1の処理手順と、
前記第1方向とは直交する第2方向に対して、2Nbが前記ソース画像の第2方向の画素数以上になる整数のうち最も小さい整数Nbを決定する第2方向の第1のステップと、前記Nbを用いて得られた22Nbを前記デスティネーション画像の第2方向の画素数で除して第3の数を算出する第2方向の第2のステップと、第4の数に前記ソース画像の第2方向の画素数を加えて新たな第4の数とする第2方向の第3のステップと、前記第4の数が前記デスティネーション画像の第2方向の画素数以上であるか否かを判断する第2方向の第4のステップと、前記第2方向の第4のステップで前記第4の数が前記デスティネーション画像の第2方向の画素数以上であるときに前記第4の数から前記デスティネーション画像の第2方向の画素数を減じて新たに第4の数とし前記第1方向縮小画像における対象画素を指す第2方向の座標値を1だけ増大させたのちに前記第2方向の第4のステップに戻る第2方向の第5のステップと、前記第2方向の第4のステップで前記第4の数が前記デスティネーション画像の第2方向の画素数未満であるときに前記デスティネーション画像における対象画素を指す第2方向の座標値を1だけ増大させたのちに、前記デスティネーション画像における対象画素の画素情報値を、前記第1方向縮小画像における対象画素よりも1だけ増大した第2方向の座標値の位置にある画素の画素情報値から前記第1方向縮小画像における対象画素の画素情報値を減じた値に前記第3の数および前記第4の数を乗じて得られた値を2Nbビット分下位桁方向にシフトして得られた補完値を前記第1方向縮小画像における対象画素の画素情報値に加えることにより得る第2方向の第6のステップと、デスティネーション画像における対象画素の第2方向の座標値が前記デスティネーション画像の第2方向の画素数と同一であるかを判断し同一でないときに前記第2方向の第3のステップに戻り、同一であるときに第2方向の1ライン分の処理を終了する第2方向の第7のステップと、を有する第2の処理手順と、
を備えることを特徴とする画像縮小方法。 - ソース画像を縮小してデスティネーション画像を生成する画像縮小方法において、
2Naが前記ソース画像の第1方向の画素数以上になる整数のうち最も小さい整数Naを決定する第1方向の第1のステップと、前記Naを用いて得られた22Naを前記デスティネーション画像の第1方向の画素数で除して第1の数を算出する第1方向の第2のステップと、第2の数に前記ソース画像の第1方向の画素数を加えて新たな第2の数とする第1方向の第3のステップと、前記第2の数が前記デスティネーション画像の第1方向の画素数以上であるか否かを判断する第1方向の第4のステップと、前記第1方向の第4のステップで前記第2の数が前記デスティネーション画像の第1方向の画素数以上であるときに前記第2の数から前記デスティネーション画像の第1方向の画素数を減じて新たに第2の数とし前記ソース画像における対象画素を指す第1方向の座標値を1だけ増大させたのちに前記第1方向の第4のステップに戻る第1方向の第5のステップと、前記第1方向の第4のステップで前記第2の数が前記デスティネーション画像の第1方向の画素数未満であるときに第1方向縮小画像における対象画素を指す第1方向の座標値を1だけ増大させたのちに、前記第1方向縮小画像における対象画素の画素情報値を、前記ソース画像における対象画素よりも1だけ増大した第1方向の座標値の位置にある画素の画素情報値から前記ソース画像における対象画素の画素情報値を減じた値に前記第1の数および前記第2の数を乗じて得られた値を2Naビット分下位桁方向にシフトして得られた補完値を前記ソース画像における対象画素の画素情報値に加えることにより得る第1方向の第6のステップと、前記第1方向縮小画像における対象画素の第1方向の座標値が前記デスティネーション画像の第1方向の画素数と同一であるかを判断し同一でないときに前記第1方向の第3のステップに戻り、同一であるときに第1方向の1ライン分の処理を終了する第1方向の第7のステップと、を前記ソース画像の前記第1方向とは直交する第2方向に並んだラインのそれぞれに対して実行して前記第1方向縮小画像を生成する第1の処理手順と、
前記第2方向に対して、2Nbが前記ソース画像の第2方向の画素数以上になる整数のうち最も小さい整数Nbを決定する第2方向の第1のステップと、前記Nbを用いて得られた22Nbを前記デスティネーション画像の第2方向の画素数で除して第3の数を算出する第2方向の第2のステップと、第4の数に前記ソース画像の第2方向の画素数を加えて新たな第4の数とする第2方向の第3のステップと、前記第4の数が前記デスティネーション画像の第2方向の画素数以上であるか否かを判断する第2方向の第4のステップと、前記第2方向の第4のステップで前記第4の数が前記デスティネーション画像の第2方向の画素数以上であるときに前記第4の数から前記デスティネーション画像の第2方向の画素数を減じて新たに第4の数とし前記第1方向縮小画像における対象画素を指す第2方向の座標値を1だけ増大させたのちに前記第2方向の第4のステップに戻る第2方向の第5のステップと、前記第2方向の第4のステップで前記第4の数が前記デスティネーション画像の第2方向の画素数未満であるときに前記デスティネーション画像における対象画素を指す第2方向の座標値を1だけ増大させたのちに、前記デスティネーション画像における対象画素の画素情報値を、前記第1方向縮小画像における対象画素よりも1だけ増大した第2方向の座標値の位置にある画素の画素情報値から前記第1方向縮小画像における対象画素の画素情報値を減じた値に前記第3の数および前記第4の数を乗じて得られた値を2Nbビット分下位桁方向にシフトして得られた補完値を前記第1方向縮小画像における対象画素の画素情報値に加えることにより得る第2方向の第6のステップと、デスティネーション画像における対象画素の第2方向の座標値が前記デスティネーション画像の第2方向の画素数と同一であるかを判断し同一でないときに前記第2方向の第3のステップに戻り、同一であるときに第2方向の1ライン分の処理を終了する第2方向の第7のステップと、を前記第1方向縮小画像の前記第1方向に並んだラインのそれぞれに対して実行する第2の処理手順と、
を備えることを特徴とする画像縮小方法。 - 前記第1の数は小数点以下が切り捨てられた整数であり、
前記第3の数は小数点以下が切り捨てられた整数であることを特徴とする請求項3または4に記載の画像縮小方法。 - ソース画像を縮小してデスティネーション画像を生成する画像縮小方法において、
2Nが前記ソース画像の第1方向の画素数以上になる整数のうち最も小さい整数Nを決定する第1のステップと、
前記Nと予め定めた正の整数Mとを用いて定めた2(N+M)を前記デスティネーション画像の第1方向の画素数で除して第1の数を算出する第2のステップと、
第2の数に前記ソース画像の第1方向の画素数を加えて新たな第2の数とする第3のステップと、
前記第2の数が前記デスティネーション画像の第1方向の画素数以上であるか否かを判断する第4のステップと、
前記第4のステップで前記第2の数が前記デスティネーション画像の第1方向の画素数以上であるときに前記第2の数から前記デスティネーション画像の第1方向の画素数を減じて新たに第2の数としソース画像における対象画素を指す第1方向の座標値を1だけ増大させたのちに前記第4のステップに戻る第5のステップと、
前記第4のステップで前記第2の数が前記デスティネーション画像の第1方向の画素数未満であるときに前記デスティネーション画像における対象画素を指す第1方向の座標値を1だけ増大させたのちに、前記デスティネーション画像における対象画素の画素情報値を、ソース画像における対象画素よりも1だけ増大した第1方向の座標値の位置にある画素の画素情報値から前記ソース画像における対象画素の画素情報値を減じた値に前記第1の数および前記第2の数を乗じて得られた値を(N+M)ビット分下位桁方向にシフトして得られた補完値を前記ソース画像における対象画素の画素情報値に加えることにより得る第6のステップと、
前記デスティネーション画像における対象画素の第1方向の座標値が前記デスティネーション画像の第1方向の画素数と同一であるかを判断し同一でないときに前記第3のステップに戻り、同一であるときに第1方向の1ライン分の処理を終了する第7のステップと、
を備えることを特徴とする画像縮小方法。 - 前記第1の数は小数点以下が切り捨てられた整数であることを特徴とする請求項6に記載の画像縮小方法。
- ソース画像を縮小してデスティネーション画像を生成する画像縮小方法において、
2Naが前記ソース画像の第1方向の画素数以上になる整数のうち最も小さい整数Naを決定する第1方向の第1のステップと、前記Naと予め定めた正の整数Mとを用いて定めた2(Na+M)を前記デスティネーション画像の第1方向の画素数で除して第1の数を算出する第1方向の第2のステップと、第2の数に前記ソース画像の第1方向の画素数を加えて新たな第2の数とする第1方向の第3のステップと、前記第2の数が前記デスティネーション画像の第1方向の画素数以上であるか否かを判断する第1方向の第4のステップと、前記第1方向の第4のステップで前記第2の数が前記デスティネーション画像の第1方向の画素数以上であるときに前記第2の数から前記デスティネーション画像の第1方向の画素数を減じて新たに第2の数とし前記ソース画像における対象画素を指す第1方向の座標値を1だけ増大させたのちに前記第1方向の第4のステップに戻る第1方向の第5のステップと、前記第1方向の第4のステップで前記第2の数が前記デスティネーション画像の第1方向の画素数未満であるときに第1方向縮小画像における対象画素を指す第1方向の座標値を1だけ増大させたのちに、前記第1方向縮小画像における対象画素の画素情報値を、前記ソース画像における対象画素よりも1だけ増大した第1方向の座標値の位置にある画素の画素情報値から前記ソース画像における対象画素の画素情報値を減じた値に前記第1の数および前記第2の数を乗じて得られた値を(Na+M)ビット分下位桁方向にシフトして得られた補完値を前記ソース画像における対象画素の画素情報値に加えることにより得る第1方向の第6のステップと、前記第1方向縮小画像における対象画素の第1方向の座標値が前記デスティネーション画像の第1方向の画素数と同一であるかを判断し同一でないときに前記第1方向の第3のステップに戻り、同一であるときに第1方向の1ライン分の処理を終了する第1方向の第7のステップと、を前記ソース画像の前記第1方向とは直交する第2方向に並んだラインのそれぞれに対して実行して前記第1方向縮小画像を生成する第1の処理手順と、
前記第1方向とは直交する第2方向に対して、2Nbが前記ソース画像の第2方向の画素数以上になる整数のうち最も小さい整数Nbを決定する第2方向の第1のステップと、前記Nbと予め定めた正の整数Mを用いて定めた2(Nb+M )を前記デスティネーション画像の第2方向の画素数で除して第3の数を算出する第2方向の第2のステップと、第4の数に前記ソース画像の第2方向の画素数を加えて新たな第4の数とする第2方向の第3のステップと、前記第4の数が前記デスティネーション画像の第2方向の画素数以上であるか否かを判断する第2方向の第4のステップと、前記第2方向の第4のステップで前記第4の数が前記デスティネーション画像の第2方向の画素数以上であるときに前記第4の数から前記デスティネーション画像の第2方向の画素数を減じて新たに第4の数とし前記第1方向縮小画像における対象画素を指す第2方向の座標値を1だけ増大させたのちに前記第2方向の第4のステップに戻る第2方向の第5のステップと、前記第2方向の第4のステップで前記第4の数が前記デスティネーション画像の第2方向の画素数未満であるときに前記デスティネーション画像における対象画素を指す第2方向の座標値を1だけ増大させたのちに、前記デスティネーション画像における対象画素の画素情報値を、前記第1方向縮小画像における対象画素よりも1だけ増大した第2方向の座標値の位置にある画素の画素情報値から前記第1方向縮小画像における対象画素の画素情報値を減じた値に前記第3の数および前記第4の数を乗じて得られた値を(Nb+M)ビット分下位桁方向にシフトして得られた補完値を前記第1方向縮小画像における対象画素の画素情報値に加えることにより得る第2方向の第6のステップと、デスティネーション画像における対象画素の第2方向の座標値が前記デスティネーション画像の第2方向の画素数と同一であるかを判断し同一でないときに前記第2方向の第3のステップに戻り、同一であるときに第2方向の1ライン分の処理を終了する第2方向の第7のステップと、を有する第2の処理手順と、
を備えることを特徴とする画像縮小方法。 - ソース画像を縮小してデスティネーション画像を生成する画像縮小方法において、
2Naが前記ソース画像の第1方向の画素数以上になる整数のうち最も小さい整数Naを決定する第1方向の第1のステップと、前記Naと予め定めた正の整数Mとを用いて定めた2(Na+M)を前記デスティネーション画像の第1方向の画素数で除して第1の数を算出する第1方向の第2のステップと、第2の数に前記ソース画像の第1方向の画素数を加えて新たな第2の数とする第1方向の第3のステップと、前記第2の数が前記デスティネーション画像の第1方向の画素数以上であるか否かを判断する第1方向の第4のステップと、前記第1方向の第4のステップで前記第2の数が前記デスティネーション画像の第1方向の画素数以上であるときに前記第2の数から前記デスティネーション画像の第1方向の画素数を減じて新たに第2の数とし前記ソース画像における対象画素を指す第1方向の座標値を1だけ増大させたのちに前記第1方向の第4のステップに戻る第1方向の第5のステップと、前記第1方向の第4のステップで前記第2の数が前記デスティネーション画像の第1方向の画素数未満であるときに第1方向縮小画像における対象画素を指す第1方向の座標値を1だけ増大させたのちに、前記第1方向縮小画像における対象画素の画素情報値を、前記ソース画像における対象画素よりも1だけ増大した第1方向の座標値の位置にある画素の画素情報値から前記ソース画像における対象画素の画素情報値を減じた値に前記第1の数および前記第2の数を乗じて得られた値を(Na+M)ビット分下位桁方向にシフトして得られた補完値を前記ソース画像における対象画素の画素情報値に加えることにより得る第1方向の第6のステップと、前記第1方向縮小画像における対象画素の第1方向の座標値が前記デスティネーション画像の第1方向の画素数と同一であるかを判断し同一でないときに前記第1方向の第3のステップに戻り、同一であるときに第1方向の1ライン分の処理を終了する第1方向の第7のステップと、を有する第1の処理手順と、
前記第1方向とは直交する第2方向に対して、2Nbが前記ソース画像の第2方向の画素数以上になる整数のうち最も小さい整数Nbを決定する第2方向の第1のステップと、前記Nbと予め定めた正の整数Mを用いて定めた2(Nb+M)を前記デスティネーション画像の第2方向の画素数で除して第3の数を算出する第2方向の第2のステップと、第4の数に前記ソース画像の第2方向の画素数を加えて新たな第4の数とする第2方向の第3のステップと、前記第4の数が前記デスティネーション画像の第2方向の画素数以上であるか否かを判断する第2方向の第4のステップと、前記第2方向の第4のステップで前記第4の数が前記デスティネーション画像の第2方向の画素数以上であるときに前記第4の数から前記デスティネーション画像の第2方向の画素数を減じて新たに第4の数とし前記第1方向縮小画像における対象画素を指す第2方向の座標値を1だけ増大させたのちに前記第2方向の第4のステップに戻る第2方向の第5のステップと、前記第2方向の第4のステップで前記第4の数が前記デスティネーション画像の第2方向の画素数未満であるときに前記デスティネーション画像における対象画素を指す第2方向の座標値を1だけ増大させたのちに、前記デスティネーション画像における対象画素の画素情報値を、前記第1方向縮小画像における対象画素よりも1だけ増大した第2方向の座標値の位置にある画素の画素情報値から前記第1方向縮小画像における対象画素の画素情報値を減じた値に前記第3の数および前記第4の数を乗じて得られた値を(Nb+M)ビット分下位桁方向にシフトして得られた補完値を前記第1方向縮小画像における対象画素の画素情報値に加えることにより得る第2方向の第6のステップと、デスティネーション画像における対象画素の第2方向の座標値が前記デスティネーション画像の第2方向の画素数と同一であるかを判断し同一でないときに前記第2方向の第3のステップに戻り、同一であるときに第2方向の1ライン分の処理を終了する第2方向の第7のステップと、を有する第2の処理手順と、を前記第1方向縮小画像の前記第1方向に並んだラインのそれぞれに対して実行する第2の処理手順と、
を備えることを特徴とする画像縮小方法。 - 前記第1の数は小数点以下が切り捨てられた整数であり、
前記第3の数は小数点以下が切り捨てられた整数であることを特徴とする請求項8または9に記載の画像縮小方法。 - 前記Mは4以上で14以下の整数であることを特徴とする請求項6乃至10の何れかに記載の画像縮小方法。
- ソース画像から縮小されたデスティネーション画像をコンピュータに生成させる画像縮小処理プログラムにおいて、
2Naが前記ソース画像の第1方向の画素数以上になる整数のうち最も小さい整数Naを決定する第1方向の第1のステップと、前記Naを用いて得られた22Naを前記デスティネーション画像の第1方向の画素数で除して整商を第1の数とする第1方向の第2のステップと、第2の数に前記ソース画像の第1方向の画素数を加えて新たな第2の数とする第1方向の第3のステップと、前記第2の数が前記デスティネーション画像の第1方向の画素数以上であるか否かを判断する第1方向の第4のステップと、前記第1方向の第4のステップで前記第2の数が前記デスティネーション画像の第1方向の画素数以上であるときに前記第2の数から前記デスティネーション画像の第1方向の画素数を減じて新たに第2の数とし前記ソース画像における対象画素を指す第1方向の座標値を1だけ増大させたのちに前記第1方向の第4のステップに戻る第1方向の第5のステップと、前記第1方向の第4のステップで前記第2の数が前記デスティネーション画像の第1方向の画素数未満であるときに第1方向縮小画像における対象画素を指す第1方向の座標値を1だけ増大させたのちに、前記第1方向縮小画像における対象画素の画素情報値を、前記ソース画像における対象画素よりも1だけ増大した第1方向の座標値の位置にある画素の画素情報値から前記ソース画像における対象画素の画素情報値を減じた値に前記第1の数および前記第2の数を乗じて得られた値を2Naビット分下位桁方向にシフトして得られた補完値を前記ソース画像における対象画素の画素情報値に加えることにより得る第1方向の第6のステップと、前記第1方向縮小画像における対象画素の第1方向の座標値が前記デスティネーション画像の第1方向の画素数と同一であるかを判断し同一でないときに前記第1方向の第3のステップに戻り、同一であるときに第1方向の1ライン分の処理を終了する第1方向の第7のステップと、を前記ソース画像の前記第1方向とは直交する第2方向に並んだラインのそれぞれに対して実行して前記第1方向縮小画像を生成する第1の処理手順と、
前記第2方向に対して、2Nbが前記ソース画像の第2方向の画素数以上になる整数のうち最も小さい整数Nbを決定する第2方向の第1のステップと、前記Nbを用いて得られた22Nbを前記デスティネーション画像の第2方向の画素数で除して整商を第3の数とする第2方向の第2のステップと、第4の数に前記ソース画像の第2方向の画素数を加えて新たな第4の数とする第2方向の第3のステップと、前記第4の数が前記デスティネーション画像の第2方向の画素数以上であるか否かを判断する第2方向の第4のステップと、前記第2方向の第4のステップで前記第4の数が前記デスティネーション画像の第2方向の画素数以上であるときに前記第4の数から前記デスティネーション画像の第2方向の画素数を減じて新たに第4の数とし前記第1方向縮小画像における対象画素を指す第2方向の座標値を1だけ増大させたのちに前記第2方向の第4のステップに戻る第2方向の第5のステップと、前記第2方向の第4のステップで前記第4の数が前記デスティネーション画像の第2方向の画素数未満であるときに前記デスティネーション画像における対象画素を指す第2方向の座標値を1だけ増大させたのちに、前記デスティネーション画像における対象画素の画素情報値を、前記第1方向縮小画像における対象画素よりも1だけ増大した第2方向の座標値の位置にある画素の画素情報値から前記第1方向縮小画像における対象画素の画素情報値を減じた値に前記第3の数および前記第4の数を乗じて得られた値を2Nbビット分下位桁方向にシフトして得られた補完値を前記第1方向縮小画像における対象画素の画素情報値に加えることにより得る第2方向の第6のステップと、デスティネーション画像における対象画素の第2方向の座標値が前記デスティネーション画像の第2方向の画素数と同一であるかを判断し同一でないときに前記第2方向の第3のステップに戻り、同一であるときに第2方向の1ライン分の処理を終了する第2方向の第7のステップと、を前記第1方向縮小画像の前記第1方向に並んだラインのそれぞれに対して実行する第2の処理手順と、
を有することを特徴とする画像縮小処理プログラム。 - ソース画像から縮小されたデスティネーション画像をコンピュータに生成させる画像縮小処理プログラムにおいて、
2Naが前記ソース画像の第1方向の画素数以上になる整数のうち最も小さい整数Naを決定する第1方向の第1のステップと、前記Naと予め定めた正の整数Mとを用いて定めた2(Na+M)を前記デスティネーション画像の第1方向の画素数で除して整商を第1の数とする第1方向の第2のステップと、第2の数に前記ソース画像の第1方向の画素数を加えて新たな第2の数とする第1方向の第3のステップと、前記第2の数が前記デスティネーション画像の第1方向の画素数以上であるか否かを判断する第1方向の第4のステップと、前記第1方向の第4のステップで前記第2の数が前記デスティネーション画像の第1方向の画素数以上であるときに前記第2の数から前記デスティネーション画像の第1方向の画素数を減じて新たに第2の数とし前記ソース画像における対象画素を指す第1方向の座標値を1だけ増大させたのちに前記第1方向の第4のステップに戻る第1方向の第5のステップと、前記第1方向の第4のステップで前記第2の数が前記デスティネーション画像の第1方向の画素数未満であるときに第1方向縮小画像における対象画素を指す第1方向の座標値を1だけ増大させたのちに、前記第1方向縮小画像における対象画素の画素情報値を、前記ソース画像における対象画素よりも1だけ増大した第1方向の座標値の位置にある画素の画素情報値から前記ソース画像における対象画素の画素情報値を減じた値に前記第1の数および前記第2の数を乗じて得られた値を(Na+M)ビット分下位桁方向にシフトして得られた補完値を前記ソース画像における対象画素の画素情報値に加えることにより得る第1方向の第6のステップと、前記第1方向縮小画像における対象画素の第1方向の座標値が前記デスティネーション画像の第1方向の画素数と同一であるかを判断し同一でないときに前記第1方向の第3のステップに戻り、同一であるときに第1方向の1ライン分の処理を終了する第1方向の第7のステップと、を有する第1の処理手順と、
前記第1方向とは直交する第2方向に対して、2Nbが前記ソース画像の第2方向の画素数以上になる整数のうち最も小さい整数Nbを決定する第2方向の第1のステップと、前記Nbと予め定めた正の整数Mを用いて定めた2(Nb+M)を前記デスティネーション画像の第2方向の画素数で除して整商を第3の数とする第2方向の第2のステップと、第4の数に前記ソース画像の第2方向の画素数を加えて新たな第4の数とする第2方向の第3のステップと、前記第4の数が前記デスティネーション画像の第2方向の画素数以上であるか否かを判断する第2方向の第4のステップと、前記第2方向の第4のステップで前記第4の数が前記デスティネーション画像の第2方向の画素数以上であるときに前記第4の数から前記デスティネーション画像の第2方向の画素数を減じて新たに第4の数とし前記第1方向縮小画像における対象画素を指す第2方向の座標値を1だけ増大させたのちに前記第2方向の第4のステップに戻る第2方向の第5のステップと、前記第2方向の第4のステップで前記第4の数が前記デスティネーション画像の第2方向の画素数未満であるときに前記デスティネーション画像における対象画素を指す第2方向の座標値を1だけ増大させたのちに、前記デスティネーション画像における対象画素の画素情報値を、前記第1方向縮小画像における対象画素よりも1だけ増大した第2方向の座標値の位置にある画素の画素情報値から前記第1方向縮小画像における対象画素の画素情報値を減じた値に前記第3の数および前記第4の数を乗じて得られた値を(Nb+M)ビット分下位桁方向にシフトして得られた補完値を前記第1方向縮小画像における対象画素の画素情報値に加えることにより得る第2方向の第6のステップと、デスティネーション画像における対象画素の第2方向の座標値が前記デスティネーション画像の第2方向の画素数と同一であるかを判断し同一でないときに前記第2方向の第3のステップに戻り、同一であるときに第2方向の1ライン分の処理を終了する第2方向の第7のステップと、を有する第2の処理手順と、を前記第1方向縮小画像の前記第1方向に並んだラインのそれぞれに対して実行する第2の処理手順と、
を有することを特徴とする画像縮小処理プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003150714A JP2004355216A (ja) | 2003-05-28 | 2003-05-28 | 画像縮小方法および画像縮小処理プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003150714A JP2004355216A (ja) | 2003-05-28 | 2003-05-28 | 画像縮小方法および画像縮小処理プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004355216A true JP2004355216A (ja) | 2004-12-16 |
Family
ID=34046444
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003150714A Pending JP2004355216A (ja) | 2003-05-28 | 2003-05-28 | 画像縮小方法および画像縮小処理プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004355216A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016025535A (ja) * | 2014-07-22 | 2016-02-08 | 株式会社リコー | 画像処理装置、画像処理方法、およびプログラム |
-
2003
- 2003-05-28 JP JP2003150714A patent/JP2004355216A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016025535A (ja) * | 2014-07-22 | 2016-02-08 | 株式会社リコー | 画像処理装置、画像処理方法、およびプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10154230B2 (en) | Generating an output frame for inclusion in a video sequence | |
EP1918878B1 (en) | Hierarchical tile-based rasterization algorithm | |
JP3865165B2 (ja) | 画像データの拡大/縮小方法 | |
DE102020120371A1 (de) | Integrierte schaltungen mit modularen multiplikationsschaltkreisen | |
JP2010113624A (ja) | ベジェ曲線描画装置、ベジェ曲線描画方法およびプログラム | |
JP2008054271A (ja) | 画像処理装置、及び、プログラム | |
JP2001028051A (ja) | 画像処理装置、画像処理方法、及び画像処理プログラム記録媒体 | |
JP2004355216A (ja) | 画像縮小方法および画像縮小処理プログラム | |
US7015930B2 (en) | Method and apparatus for interpolating pixel parameters based on a plurality of vertex values | |
JP2008009719A (ja) | 直線描画方法、直線描画プログラム及び直線描画装置 | |
JP5790948B2 (ja) | 画像変形処理装置および画像変形処理方法 | |
JPH03144782A (ja) | 三次元図形処理装置 | |
JP2008067233A (ja) | 電子透かし埋め込み方法、プログラムおよびコンピュータ読み取り可能な記録媒体 | |
JP5387289B2 (ja) | 画像処理装置、画像処理方法およびそのプログラム | |
JP2018120536A (ja) | データ補間装置及びその方法、画像処理装置 | |
JP3962029B2 (ja) | 画像データの縮小装置及び方法 | |
JP4069300B2 (ja) | 画像データの拡大装置 | |
JP5939893B2 (ja) | 画像処理装置および画像処理方法 | |
JP5387288B2 (ja) | 画像処理装置、画像処理方法およびそのプログラム | |
EP2048869A2 (en) | Method for colour interpolation | |
JP4387611B2 (ja) | 描画装置及び描画方法 | |
JPS59229669A (ja) | 画像デ−タ処理装置 | |
JP2012089947A (ja) | 画像縮小装置 | |
JP2000338959A (ja) | 画像処理装置 | |
JP2021189458A (ja) | 装置、方法、及びプログラム |