(57)【要約】【課題】ＲＡＷデータをハーフデコードして縮小ＲＧＢ画像を作成する際に、より高画質な縮小ＲＧＢ画像を作成可能とする。【解決手段】色配列の周期性が異なる複数色の画素列からなる原画像から、原画像よりも画素数の少ない画素列からなる縮小画像を生成する画像処理装置であって、縮小画像の各１つの画素について、各１つの画素に対応する位置及びその周辺に位置する原画像の複数色の画素の画素情報を合成して、複数色の色情報を有する各１つの画素の画素情報を演算する演算部であって、縮小画像の各１つの画素において複数色の色情報の重心が略一致するように、原画像の複数色の画素の画素情報を合成する演算部を具備する。【選択図】      図７
2007006038.tif 000002
【特許請求の範囲】
【請求項１】
色配列の周期性が異なる複数色の画素列からなる原画像から、該原画像よりも画素数の少ない画素列からなる縮小画像を生成する画像処理装置であって、
前記縮小画像の各１つの画素について、該各１つの画素に対応する位置及びその周辺に位置する前記原画像の複数色の画素の画素情報を合成して、前記複数色の色情報を有する前記各１つの画素の画素情報を演算する演算手段であって、前記縮小画像の前記各１つの画素において前記複数色の色情報の重心が略一致するように、前記原画像の複数色の画素の画素情報を合成する演算手段を具備することを特徴とする画像処理装置。
【請求項２】
前記縮小画像の画素数が、前記原画像の画素数の１／（４n）（ｎは１以上の整数）であることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記色配列がベイヤー配列であることを特徴とする請求項１に記載の画像処理装置。
【請求項４】
前記縮小画像にフィルター処理を行なうフィルター手段を更に具備することを特徴とする請求項１に記載の画像処理装置。
【請求項５】
色配列の周期性が異なる複数色の画素列からなる原画像から、該原画像よりも画素数の少ない画素列からなる縮小画像を生成する画像処理方法であって、
前記縮小画像の各１つの画素について、該各１つの画素に対応する位置及びその周辺に位置する前記原画像の複数色の画素の画素情報を合成して、前記複数色の色情報を有する前記各１つの画素の画素情報を演算する演算工程であって、前記縮小画像の前記各１つの画素において前記複数色の色情報の重心が略一致するように、前記原画像の複数色の画素の画素情報を合成する演算工程を具備することを特徴とする画像処理方法。
【請求項６】
前記縮小画像の画素数が、前記原画像の画素数の１／（４n）（ｎは１以上の整数）であることを特徴とする請求項５に記載の画像処理方法。
【請求項７】
前記色配列がベイヤー配列であることを特徴とする請求項５に記載の画像処理方法。
【請求項８】
前記縮小画像にフィルター処理を行なうフィルター工程を更に具備することを特徴とする請求項５に記載の画像処理方法。
【請求項９】
請求項５乃至８のいずれか１項に記載の画像処理方法をコンピュータに実行させることを特徴とするプログラム。
【請求項１０】
請求項９に記載のプログラムをコンピュータ読み取り可能に記憶したことを特徴とする記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばデジタルカメラにより撮影して得られたデジタル画像データを処理する画像処理技術に関するものである。
【背景技術】
【０００２】
デジタルスチルカメラなどの撮像装置では、被写体光学像をＣＭＯＳ撮像素子、ＣＣＤ等により光電変換し、得られた撮影画像信号をデジタルデータに変換してＲＡＷデータとして保存する場合がある。この場合、このＲＡＷデータを画像処理装置に移し、画像処理装置においてＲＡＷデータに対して色補間、ガンマ補正処理、ホワイトバランス調整処理などを施し、ディスプレイなどに表示する画像を作成する。
【０００３】
ここで、ＣＣＤ等の撮像素子は、Ｒ（赤），Ｇ（緑），Ｂ（青）の各色の光を受光する画素が規則的に並べられたものであり、そのため、ＲＡＷデータに保存されるデジタルデータも同様の並びとなる。この並び方の規則として、例えばＲ，Ｇ，Ｂの各色が図２のように並んだＢａｙｅｒ配列（ベイヤー配列）が知られている。
【０００４】
ここで、本願の背景技術の説明及び後述する実施形態の説明に共通して用いられるＢａｙｅｒ配列の各画素の命名規則について、図３を参照して説明する。
【０００５】
図３のような２次元配列において、行、列はそれぞれ左上を原点として、右方向に１，２，…，２ｍ列目、下方向に１，２，…，２ｎ行目と数えるものとする。
【０００６】
Ｂａｙｅｒ配列を２行ずつ，２列ずつで分割した場合の、各２×２の画素の固まりをブロックと呼ぶ。また、ブロックを一単位とした配列をブロック配列と呼ぶ。すなわち、２ｍ×２ｎの画素を持つＢａｙｅｒ配列は、ｍ×ｎのブロック配列となる。Ｂａｙｅｒ配列の行、列をそれぞれ画素行、画素列と呼び、ブロック配列の行、列をそれぞれブロック行、ブロック列と呼ぶものとする。ｉ列目のブロック列には２ｉ−１，２ｉ列目の画素列が、ｊ行目のブロック行には２ｊ−１，２ｊ行目の画素行が含まれる。
【０００７】
ｉ列目、ｊ行目のブロックに含まれる４画素は、Ｒ(i,j)，Ｇ(i,j)a(ブロック内左上)，Ｇ(i,j)b(ブロック内右下)，Ｂ(i,j)のように表すものとする。
【０００８】
以下の説明では、Ｂａｙｅｒ配列の各画素を指定する際には、上記の命名規則に従うものとする。
【０００９】
Ｂａｙｅｒ配列のＲＡＷデータからＲＧＢ画像を作成する場合、一般には、２ｍ×２ｎの解像度のＲＡＷデータから、２ｍ×２ｎの解像度のＲＧＢ画像を作成する。その際、各画素は１つの色情報しか持たないため、各画素の他の色情報は周りの画素の色情報から補間する。
【００１０】
例えば、図３のＲ(2,2)の画素におけるＧ，Ｂの値を、Ｇ＝（Ｇ(2,1)b＋Ｇ(2,2)a＋Ｇ(3,2)a＋Ｇ(2,2)b）／４、Ｂ＝（Ｂ(2,1)＋Ｂ(3,1)＋Ｂ(2,2)＋Ｂ(3,2)）／４のように、周囲４画素の平均値とする方法がある。この場合、Ｂ(2,2)の画素におけるＲ，Ｇの値も同様に、Ｒ＝（Ｒ(1,2)＋Ｒ(2,2)＋Ｒ(1,3)＋Ｒ(2,3)）／４、Ｇ＝（Ｇ(2,2)a＋Ｇ(1,2)b＋Ｇ(2,2)b＋Ｇ(2,3)a）／４と算出できる。Ｇ(2,2)aの画素におけるＲ，Ｂの値は、Ｒ＝（Ｒ(1,2)＋Ｒ(2,2)）／２、Ｂ＝（Ｂ(2,1)＋Ｂ(2,2)）／２のように周囲の２画素の平均により算出できる。
【００１１】
しかし、デジタルスチルカメラで撮影される画像の解像度は非常に高く、ＲＡＷデータの画素補間処理には非常に多くの時間を要する。そこで、ＲＡＷデータを扱う装置では、処理の高速化のために様々な工夫がなされている。
【００１２】
例えば、特開平１１−２１５５１６号公報（特許文献１）では、ＲＡＷデータの画素補間の際、ある画素の色を上記のように周囲４画素から補間するのではなく、必ず周囲２画素から平均を求めて補間するようにしている。これにより、参照する画素の数が従来よりも少なくなり、データの読み出しの高速化を実現している。
【００１３】
また、縮小ＲＧＢ画像の作成を高速化するために、ＲＡＷデータの画素補間時に元の４分の１の画素数のＲＧＢ画像を直接得る方法がある。この方法を、以下、ハーフデコードと呼ぶ。
【００１４】
従来は、２ｍ×２ｎの解像度のＲＡＷデータから縮小画像を作成する場合、一度２ｍ×２ｎの解像度のＲＧＢ画像を作成し、そこから縮小画像を作成していた。ハーフデコードでは、図４のように、ＲＡＷデータの１ブロックの範囲をＲＧＢ画像の１画素とすることで、２ｍ×２ｎの解像度のＲＡＷデータからｍ×ｎの解像度のＲＧＢ画像を直接作成し、縮小ＲＧＢ画像の作成を高速化する。
【００１５】
ハーフデコード時の画素補間方法の例を、図５を用いて説明する。
【００１６】
図５（ａ）はＲＡＷデータのｉ列目、ｊ行目のブロックとその周囲８ブロックに含まれる画素配列を表している。図５（ｃ）は図５（ａ）を補間して得られる縮小ＲＧＢ画像を表している。図５（ｂ）では、縮小ＲＧＢ画像のｉ列目、ｊ行目の画素のＲ，Ｇ，Ｂ値を算出する際に参照するＲＡＷデータの画素をハッチングで表している。
【００１７】
縮小ＲＧＢ画像のｉ列目、ｊ行目の画素のＲ値、Ｇ値、Ｂ値をそれぞれＲ’(i,j)，Ｇ’(i,j)，Ｂ’(i,j)とすると、各値は図５（ｂ）でハッチングで示されている画素を参照し、
Ｒ’(i,j)＝Ｒ(i,j)
Ｇ’(i,j)＝（Ｇ(i,j)a＋Ｇ(i,j)b）／２
Ｂ’(i,j)＝Ｂ(i,j)                          …（１）
と算出される。
【特許文献１】特開平１１−２１５５１６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１８】
しかしながら、上記の従来の方法でハーフデコードを行うと、算出されるＲ値、Ｇ値、Ｂ値の重心位置はそれぞれ図６Ａの黒点の位置となる。これではＲ，Ｇ，Ｂの各色で重心位置が異なるため、正しい色を算出しているとは言えず、画像によっては縮小画像の画質が落ちるという問題があった。
【００１９】
したがって、本発明は上述した課題を鑑みてなされたものであり、その目的は、ＲＡＷデータをハーフデコードして縮小ＲＧＢ画像を作成する際に、より高画質な縮小ＲＧＢ画像を作成可能とすることである。
【課題を解決するための手段】
【００２０】
上述した課題を解決し、目的を達成するために、本発明に係わる画像処理装置は、色配列の周期性が異なる複数色の画素列からなる原画像から、該原画像よりも画素数の少ない画素列からなる縮小画像を生成する画像処理装置であって、前記縮小画像の各１つの画素について、該各１つの画素に対応する位置及びその周辺に位置する前記原画像の複数色の画素の画素情報を合成して、前記複数色の色情報を有する前記各１つの画素の画素情報を演算する演算手段であって、前記縮小画像の前記各１つの画素において前記複数色の色情報の重心が略一致するように、前記原画像の複数色の画素の画素情報を合成する演算手段を具備することを特徴とする。
【００２１】
また、本発明に係わる画像処理方法は、色配列の周期性が異なる複数色の画素列からなる原画像から、該原画像よりも画素数の少ない画素列からなる縮小画像を生成する画像処理方法であって、前記縮小画像の各１つの画素について、該各１つの画素に対応する位置及びその周辺に位置する前記原画像の複数色の画素の画素情報を合成して、前記複数色の色情報を有する前記各１つの画素の画素情報を演算する演算工程であって、前記縮小画像の前記各１つの画素において前記複数色の色情報の重心が略一致するように、前記原画像の複数色の画素の画素情報を合成する演算工程を具備することを特徴とする。
【００２２】
また、本発明に係わるプログラムは、上記の画像処理方法をコンピュータに実行させることを特徴とする。
【００２３】
また、本発明に係わる記憶媒体は、上記のプログラムをコンピュータ読み取り可能に記憶したことを特徴とする。
【発明の効果】
【００２４】
本発明によれば、ＲＡＷデータをハーフデコードして縮小ＲＧＢ画像を作成する際に、より高画質な縮小ＲＧＢ画像を作成することが可能となる。
【発明を実施するための最良の形態】
【００２５】
以下、本発明の好適な実施形態について、図面を参照して詳細に説明する。
【００２６】
（第１の実施形態）
図１は、本発明の画像処理装置の第１の実施形態の概略構成を示すブロック図である。
【００２７】
図１において、１０１はＣＰＵであり、ＣＰＵ１０１は画像処理装置１０００の全体動作をコントロールし、一次記憶部１０２に格納されているプログラムの実行などを行う。
【００２８】
１０２は、主にメモリからなる一次記憶部であり、二次記憶部１０３に記憶されたプログラムなどを読み込んで格納する。１０３は、例えばハードディスクなどからなる二次記憶部である。一般に一次記憶部１０２の容量は二次記憶部１０３の容量より小さく、一次記憶部１０２に格納しきれないプログラムやデータなどは二次記憶部１０３に格納される。また、長時間記憶しなくてはならないデータなども二次記憶部１０３に格納される。本実施形態では、本実施形態の処理手順を実現するためのプログラムは二次記憶部１０３に格納されており、プログラム実行時に一次記憶部１０２に読み込まれ、ＣＰＵ１０１が実行処理を行う。
【００２９】
１０４は、マウスやキーボードなどの入力デバイスである。入力デバイス１０４は、プログラムなどに割り込み信号を送ったりするために用いられる。
【００３０】
１０５は、モニタやプリンタなどの出力デバイスである。
【００３１】
１０６は読込デバイスであり、読込デバイス１０６は、公知のＣＣＤなどの撮像素子を用いた撮像装置で撮像された画像を、直接又は間接的に一次記憶部１０２や二次記憶部１０３へ読み込む。
【００３２】
本実施形態では、撮像装置で撮像された画像のＲＡＷデータが画像処理装置１０００に読み込まれるものとする。そして、本実施形態は、ＲＡＷデータから縮小ＲＧＢ画像を作成する場合に、元の４分の１の画素数のＲＧＢ画像を直接得るハーフデコードを行なう処理に関するものである。
【００３３】
以下、本実施形態におけるハーフデコードの方法について、図６及び図７を用いて説明する。
【００３４】
図７（ａ）はＲＡＷデータのｉ列目、ｊ行目のブロックとその周囲８ブロックに含まれる画素配列を表している。図７（ｃ）は図７（ａ）の画素配列を補間して得られる縮小ＲＧＢ画像を表している。図７（ｂ）では、縮小ＲＧＢ画像のｉ列目、ｊ行目の画素のＲ値、Ｇ値、Ｂ値を算出する際に参照する、ＲＡＷデータの画素をハッチングで表している。
【００３５】
本実施形態では、縮小ＲＧＢ画像のｉ列目、ｊ行目の画素のＲ値、Ｇ値、Ｂ値をそれぞれＲ’(i,j)，Ｇ’(i,j)，Ｂ’(i,j)とすると、各値は図７（ｂ）においてハッチングで示されている画素を参照し、バイリニア法を用いて、
Ｒ’(i,j)＝（３Ｒ(i-1,j)＋９Ｒ(i,j)＋Ｒ(i-1,j+１)＋３Ｒ(i,j+1)）／１６
Ｇ’(i,j)＝（Ｇ(i,j)a＋Ｇ(i,j)b）／２
Ｂ’(i,j)＝（３Ｂ(i,j-1)＋Ｂ(i+1,j-1)＋９Ｂ(i,j)＋３Ｂ(i+1,j)）／１６
…（２）
と算出できる。
【００３６】
これにより、Ｒ’(i,j)，Ｇ’(i,j)，Ｂ’(i,j)の重心位置を、図６Ｂに黒丸で示すように、一致させることができる。
【００３７】
ただし、ｉ＝０，ｊ＝０の場合など、ＲＡＷデータの図７（ｂ）においてハッチングで示されている画素全てが参照できない場合がある。その場合は、参照できる画素のみから、Ｒ’(i,j)，Ｇ’(i,j)，Ｂ’(i,j)を求める。
【００３８】
例えば、縮小ＲＧＢ画像の０列目、０行目の画素のＲ，Ｇ，Ｂ値Ｒ’(0,0)，Ｇ’(0,0)，Ｂ’(0,0)を求める際、図７（ｂ）においてハッチングで示されている画素全てを用いることはできず、Ｒ’(0,0)はＲ(0,0)，Ｒ(0,1)から、Ｂ’(0,0)はＢ(0,0)，Ｂ(1,0)から求めることになる。すなわち、
Ｒ’(0,0)＝（３Ｒ(0,0)＋Ｒ(0,1)）／４
Ｇ’(0,0)＝（Ｇ(0,0)a＋Ｇ(0,0)b）／２
Ｂ’(0,0)＝（３Ｂ(0,0)＋Ｂ(1,0)）／４                …（３）
と算出する。
【００３９】
同様に、ｍ×ｎの縮小ＲＧＢ画像を作成する場合、０＜ｉ＜ｍ、ｊ＝０の画素のＲ，Ｇ，Ｂ値Ｒ’(i,0)，Ｇ’(i,0)，Ｂ’(i,0)については、Ｂ’(i,0)はＢ(i,0)，Ｂ(i+1,0)から求めることになる。すなわち、
Ｒ’(i,0)＝（３Ｒ(i-1,0)＋９Ｒ(i,0)＋Ｒ(i-1,1)＋３Ｒ(i,1)）／１６
Ｇ’(i,0)＝（Ｇ(i,0)a＋Ｇ(i,0)b）／２
Ｂ’(i,0)＝（３Ｂ(i,0)＋Ｂ(i+1,0)）／４              …（４）
と算出する。
【００４０】
ｉ＝ｍ、ｊ＝０における画素のＲ，Ｇ，Ｂ値Ｒ’(m,0)，Ｇ’(m,0)，Ｂ’(m,0)については、Ｂ’(m,0)はＢ(m,0)をそのまま用いることになる。すなわち、
Ｒ’(m,0)＝（３Ｒ(m-１,0)＋９Ｒ(m,0)＋Ｒ(m-1,1)＋３Ｒ(m,1)）／１６
Ｇ’(m,0)＝（Ｇ(m,0)a＋Ｇ(m,0)b）／２
Ｂ’(m,0)＝Ｂ(m,0)                                  …（５）
と算出する。
【００４１】
ｉ＝０, ０＜ｊ＜ｎにおける画素のＲ，Ｇ，Ｂ値Ｒ’(0,j)，Ｇ’(0,j)，Ｂ’(0,j)については、Ｒ’(0,j)はＲ(0,j)，Ｒ(0,j+1)から求めることになる。すなわち、
Ｒ’(0,j)＝（３Ｒ(0,j)＋Ｒ(0,j+1)）／４
Ｇ’(0,j)＝（Ｇ(0,j)a＋Ｇ(0,j)b）／２
Ｂ’(0,j)＝（３Ｂ(0,j-1)＋Ｂ(1,j-1)＋９Ｂ(0,j)＋３Ｂ(1,j)）／１６  …（６）
と算出する。
【００４２】
ｉ＝ｍ，０＜ｊ＜ｎにおける画素のＲ，Ｇ，Ｂ値Ｒ’(m,j)，Ｇ’(m,j)，Ｂ’(m,j)については、Ｂ’(m,j)はＢ(m,j-1)，Ｂ(m,j)から求めることになる。すなわち、
Ｒ’(m,j)＝（３Ｒ(m-1,j)＋９Ｒ(m,j)＋Ｒ(m-1,j+1)＋３Ｒ(m,j+1)）／１６
Ｇ’(m,j)＝（Ｇ(m,j)a＋Ｇ(m,j)b）／２
Ｂ’(m,j)＝（３Ｂ(m,j)＋Ｂ(m,j-1)）／４            …（７）
と算出する。
【００４３】
ｉ＝０，ｊ＝ｎにおける画素のＲ，Ｇ，Ｂ値Ｒ’(0,n)，Ｇ’(0,n)，Ｂ’(0,n)については、Ｒ’(０,n)はＲ(0,n)をそのまま用いることになる。すなわち、
Ｒ’(0,n)＝Ｒ(0,n)
Ｇ’(0,n)＝（Ｇ(0,n)a＋Ｇ(0,n)b）／２
Ｂ’(0,n)＝（３Ｂ(0,n-1)＋Ｂ(1,n-1)＋９Ｂ(0,n)＋３Ｂ(1,n)）／１６  …（８）
と算出する。
【００４４】
０＜ｉ＜ｍ，ｊ＝ｎにおける画素のＲ，Ｇ，Ｂ値Ｒ’(i,n)，Ｇ’(i,n)，Ｂ’(i,n)については、Ｒ’(i,n)はＲ(i-1,n)，Ｒ(i,n)から求めることになる。すなわち、
Ｒ’(i,n)＝（Ｒ(i-1,n)＋３Ｒ(i,n)）／４
Ｇ’(i,n)＝（Ｇ(i,n)a＋Ｇ(i,n)b）／２
Ｂ’(i,n)＝（３Ｂ(i,n-1)＋Ｂ(i+1,n-1)＋９Ｂ(i,n)＋３Ｂ(i+1,n)）／１６
…（９）
と算出する。
【００４５】
ｉ＝ｍ，ｊ＝ｎにおける画素のＲ，Ｇ，Ｂ値Ｒ’(m,n)，Ｇ’(m,n)，Ｂ’(m,n)については、Ｒ’(m,n)はＲ(m,n)，Ｒ(m-1,n)から、Ｂ’(m,n)はＢ(m,n)，Ｂ(m,n-1)から求めることになる。すなわち、
Ｒ’(m,n)＝（３Ｒ(m,n)＋Ｒ(m-1,n)）／４
Ｇ’(m,n)＝（Ｇ(m,n)a＋Ｇ(m,n)b）／２
Ｂ’(m,n)＝（３Ｂ(m,n)＋Ｂ(m,n-1)）／４            …（１０）
と算出する。
【００４６】
なお、Ｒ’(i,j)，Ｇ’(i,j)，Ｂ’(i,j)を算出するために、必ずしも図７（ｂ）においてハッチングで示されている画素を使わなくても良い。
【００４７】
続いて、図８を用いて本実施形態の補間動作について説明する。
【００４８】
図８は、２ｍ×２ｎのＲＡＷデータを補間し、ｍ×ｎの縮小ＲＧＢ画像を作成する手順を示すフローチャートである。
【００４９】
ステップＳ８０１において、ｍ×ｎの縮小ＲＧＢ画像を保存するための領域を、一次記憶部１０２に確保する。この領域を、領域２とする。
【００５０】
ステップＳ８０２において、２ｍ×２ｎのＲＡＷデータと同じ大きさの領域を、一次記憶部１０２に確保する。この領域を、領域１とする。
【００５１】
ステップＳ８０３において、ステップＳ８０２で確保した領域１に、補間対象となる２ｍ×２ｎのＲＡＷデータをコピーする。なお、ＲＡＷデータは、二次記憶部１０３に保存されているものを読み込むか、読込デバイス１０６から直接読み込む。
【００５２】
ステップＳ８０４において、変数ｊに１を代入する。
【００５３】
ステップＳ８０５において、変数ｉに１を代入する。
【００５４】
ステップＳ８０６において、領域１におけるｉ列目、ｊ行目の画素のＲ，Ｇ，Ｂ値をＲ1(i,j)，Ｇ1(i,j)，Ｂ1(i,j)、領域２におけるｉ列目、ｊ行目の画素のＲ，Ｇ，Ｂ値をＲ2(i,j)，Ｇ2(i,j)，Ｂ2(i,j)とし、Ｒ2(i,j)，Ｇ2(i,j)，Ｂ2(i,j)を、前述した計算式(２)〜(１０)を用いて求める。なお、Ｒ1(i,j)，Ｇ1(i,j)，Ｂ1(i,j)は、式（１）〜（１０）のＲ(i,j)，Ｇ(i,j)，Ｂ(i,j)に対応し、Ｒ2(i,j)，Ｇ2(i,j)，Ｂ2(i,j)は、Ｒ’(i,j)，Ｇ’(i,j)，Ｂ’(i,j)に対応する。
【００５５】
ステップＳ８０７において、変数ｉに１を加算する。
【００５６】
ステップＳ８０８において、変数ｉとｍを比較する。ｉ≦ｍである場合、ステップＳ８０６へ進む。ｉ＞mである場合、ステップＳ８０９へ進む。
【００５７】
ステップＳ８０９において、変数ｊに１を加算する。
【００５８】
ステップＳ８１０において、変数ｊとｎを比較する。j≦ｎである場合、ステップＳ８０５へ進む。ｊ＞ｎである場合、処理を終了する。
【００５９】
以上の処理により、ＲＡＷデータをハーフデコードして、各画素のＲ値，Ｇ値，Ｂ値の重心位置が一致した縮小ＲＧＢ画像を作成することが可能となる。
【００６０】
（第２の実施形態）
第１の実施形態では、図８のステップＳ８０２、ステップＳ８０３において、補間対象となる２ｍ×２ｎのＲＡＷデータと同じ大きさの領域を一次記憶部１０２に確保した。しかし、一度に全範囲をコピーするための領域を確保しなくても良い。例えば、３ブロック行（２ｍ×６画素）分の領域のみを一次記憶部１０２に確保しておき、必要に応じて必要な分を二次記憶部１０３から読み込んできても良い。その場合における、２ｍ×２ｎのＲＡＷデータを補間してｍ×ｎの縮小ＲＧＢ画像を作成する手順について、図９のフローチャートを用いて説明する。
【００６１】
ステップＳ９０１において、ｍ×ｎの縮小ＲＧＢ画像を保存するための領域を、一次記憶部１０２に確保する。この領域を、領域２とする。
【００６２】
ステップＳ９０２において、変数ｊに１を代入する。
【００６３】
ステップＳ９０３において、３ブロック行（２ｍ×６画素）分の領域を、一次記憶部１０２に確保する。この領域を、領域１とする。
【００６４】
ステップＳ９０４において、ステップＳ９０３で確保した領域１に、補間対象となる２ｍ×２ｎのＲＡＷデータの、０，１，２ブロック行をコピーする。なお、ＲＡＷデータは、二次記憶部１０３に保存されているものを読み込むか、読込デバイス１０６から直接読み込む。
【００６５】
ステップＳ９０５において、ｊの値が２より大きく、ｎ−１より小さいかどうかを判定する。２＜ｊ＜ｎ−１の場合は、ステップＳ９０６へ進む。j≦２、又はｎ−１≦jの場合は、ステップＳ９０７へ進む。
【００６６】
ステップＳ９０６において、画素領域１に保存されている、ｊ−１ブロック行目のＲＡＷデータを破棄する。その後、ｊ＋２ブロック行目のＲＡＷデータを一次記憶部１０２にコピーする。
【００６７】
ステップＳ９０７〜ステップＳ９１１は、図８のステップＳ８０５〜ステップＳ８０９と同一の処理を行う。
【００６８】
ステップＳ９１２において、変数ｊとｎを比較する。ｊ≦ｎである場合、ステップＳ９０５へ進む。ｊ＞ｎである場合、処理を終了する。
【００６９】
ＲＡＷデータのデータ量は一般に非常に大きく、その全範囲分の領域を一度に確保すると、一次記憶部１０２内の多くの領域が占有され、他の処理に影響を及ぼすことがある。本実施形態による方法を用いることで、第１の実施形態の場合に比べて、必要とされる一次記憶部１０２の領域を節約することができる。
【００７０】
（第３の実施形態）
上記の第１及び第２の実施形態では、縮小ＲＧＢ画像のｉ列目、ｊ行目の画素のＲ，Ｇ，Ｂ値は図７（ｂ）においてハッチングで示されている画素を参照して、バイリニア法を用いて求めたが、他の方法を用いて求めても良い。
【００７１】
例えばバイキュービック法を用いる場合、縮小ＲＧＢ画像のｉ列目、ｊ行目の画素のＲ，Ｇ，Ｂ値をそれぞれＲ’(i,j)，Ｇ’(i,j)，Ｂ’(i,j)とすると、各値は図１０においてハッチングで示されている画素を参照し、
Ｒ’(i,j)＝（２７Ｒ(i-2,j-1)−１７１Ｒ(i-1,j-1)−５１３Ｒ(i,j-1)＋
８１Ｒ(i+1,j-1)−１７１Ｒ(i-2,j)＋１０８３Ｒ(i-1,j)＋３２４９Ｒ(i,j)−
５１３Ｒ(i+1,j)−５７Ｒ(i-2,j+1)＋３６１Ｒ(i-1,j+1)＋１０８３Ｒ(i,j+1)−
１７１Ｒ(i+1,j+1)＋９Ｒ(i-2,j+2)−５７Ｒ(i-1,j+2)−１７１Ｒ(i,j+2)＋
２７Ｒ(i+1,j+2)）／４０９６
Ｇ’(i,j)＝（３Ｇ(i-2,j-1)b−１９Ｇ(i-1,j-1)b−５７Ｇ(i,j-1)b＋
９Ｇ(i+1,j-1)b−４５Ｇ(i-1,j)a＋２８５Ｇ(i,j)a＋９５Ｇ(i+1,j)a−
１５Ｇ(i+2,j)a−１５Ｇ(i-2,j)b＋９５Ｇ(i-1,j)b＋２８５Ｇ(i,j)b−
４５Ｇ(i+1,j)b＋９Ｇ(i-1,j+1)a−５７Ｇ(i,j+1)a−１９Ｇ(i+1,j+1)a＋
３Ｇ(i+1,j+1)a）／５１２
Ｂ’(i,j)＝（２７Ｂ(i-1,j-2)−１７１Ｂ(i,j-2)−５７Ｂ(i+1,j-2)＋
９Ｂ(i+2,j-2)−１７１Ｂ(i-1,j-1)＋１０８３Ｂ(i,j-1)＋３６１Ｂ(i+1,j-1)−
５７Ｂ(i+2,j-1)−５１３Ｂ(i-1,j)＋３２４９Ｂ(i,j)＋１０８３Ｂ(i+1,j)−
１７１Ｂ(i+2,j)＋８１Ｂ(i-1,j+1)−５１３Ｂ(i,j+1)−１７１Ｂ(i+1,j+1)＋
２７Ｂ(i+2,j+1)）／４０９６
…（２）’
と算出できる。
【００７２】
なお、Ｒ’(i,j)，Ｇ’(i,j)，Ｂ’(i,j)の値は、０〜２５５の間に収まるようにクリッピングする。
【００７３】
（第４の実施形態）
上記の第１乃至第３の実施形態では、２ｍ×２ｎのＲＡＷデータを補間してｍ×ｎの縮小ＲＧＢ画像を作成するまでの処理に関してのみ言及している。しかし、その後、作成した縮小ＲＧＢ画像にフィルター処理を施して画質の向上を図っても良い。
【００７４】
フィルター処理は、例えば、偽色を低減するために用いるメディアンフィルターがある。偽色とは、ＲＡＷデータを補間してＲＧＢ画像を生成する際に、実際に無い色がノイズとして出るものを言う。２ｍ×２ｎのＲＡＷデータから作成したｍ×ｎの縮小ＲＧＢ画像（図１１Ｂ）に対して３×３のメディアンフィルターをかけることで、２ｍ×２ｎのＲＡＷデータから作成した２ｍ×２ｎ のＲＧＢ画像（図１１Ａ）に対して６×６のメディアンフィルターをかけた後にｍ×ｎの縮小ＲＧＢ画像を作成するのと同程度の効果を得ることができる。
【００７５】
なお、上記の第１乃至第４の実施形態では、縮小画像をＲＡＷデータの１／４の画素数で構成する場合について説明したが、本発明は１／４の画素数に限定されるものではなく、縮小画像がＲＡＷデータの１／（４n）（ｎは１以上の整数）の画素数で構成される場合にも適用可能である。
【００７６】
以上説明したように、上記の第１乃至第４の実施形態によれば、２ｍ×２ｎのＲＡＷデータをハーフデコードしてｍ×ｎの縮小ＲＧＢ画像を作成する場合において、縮小ＲＧＢ画像の各画素のＲ，Ｇ，Ｂ値の重心位置を同一にすることが可能となる。これにより、従来のハーフデコード方法と比べて、より正確な色の縮小ＲＧＢ画像を得ることができる。
【００７７】
更に、作成された縮小ＲＧＢ画像に対してフィルター処理を施すことで、フル解像度の画像にフィルター処理を施してから縮小画像を生成する場合と比べて、処理を格段に高速化することができる。
【００７８】
（他の実施形態）
また、各実施形態の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００７９】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００８０】
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明した手順に対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【００８１】
【図１】本発明の画像処理装置の第１の実施形態の概略構成を示すブロック図である。
【図２】Ｂａｙｅｒ配列の各画素の並びを表す図である。
【図３】Ｂａｙｅｒ配列の各画素の命名規則を表す図である。
【図４】ハーフデコードのイメージを表す図である。
【図５】従来のハーフデコードの方法を表す図である。
【図６Ａ】従来のハーフデコードの結果算出されるＲ，Ｇ，Ｂ値の重心位置を表す図である。
【図６Ｂ】第１の実施形態におけるハーフデコードの結果算出されるＲ，Ｇ，Ｂ値の重心位置を表す図である。
【図７】第１の実施形態におけるハーフデコードの方法を表す図である。
【図８】第１の実施形態におけるハーフデコード処理の流れを示すフローチャートである。
【図９】第２の実施形態におけるハーフデコード処理の流れを示すフローチャートである。
【図１０】第３の実施形態における画素補間で参照する画素を表す図である。
【図１１Ａ】フィルターの効果の範囲を表す図である。
【図１１Ｂ】第４の実施形態におけるフィルターの効果の範囲を表す図である。
【符号の説明】
【００８２】
１０１  ＣＰＵ
１０２  一次記憶部
１０３  二次記憶部
１０４  入力デバイス
１０５  出力デバイス
１０６  読込デバイス
【図１】
2007006038.tif 000003
【図２】
2007006038.tif 000004
【図３】
2007006038.tif 000005
【図４】
2007006038.tif 000006
【図５】
2007006038.tif 000007
【図６Ａ】
2007006038.tif 000008
【図６Ｂ】
2007006038.tif 000009
【図７】
2007006038.tif 000010
【図８】
2007006038.tif 000011
【図９】
2007006038.tif 000012
【図１０】
2007006038.tif 000013
【図１１Ａ】
2007006038.tif 000014
【図１１Ｂ】
2007006038.tif 000015