JP2017085320A - 画像処理装置及びその制御方法、並びに、コンピュータプログラム及び記憶媒体 - Google Patents

画像処理装置及びその制御方法、並びに、コンピュータプログラム及び記憶媒体 Download PDF

Info

Publication number
JP2017085320A
JP2017085320A JP2015211104A JP2015211104A JP2017085320A JP 2017085320 A JP2017085320 A JP 2017085320A JP 2015211104 A JP2015211104 A JP 2015211104A JP 2015211104 A JP2015211104 A JP 2015211104A JP 2017085320 A JP2017085320 A JP 2017085320A
Authority
JP
Japan
Prior art keywords
filter
plane
dwt
tap
data
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
Application number
JP2015211104A
Other languages
English (en)
Inventor
遼太 鈴木
Ryota Suzuki
遼太 鈴木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2015211104A priority Critical patent/JP2017085320A/ja
Publication of JP2017085320A publication Critical patent/JP2017085320A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

【課題】 タップ数の異なるフィルを少なくとも2つ用意し、符号化対象の画像のサイズ、並びに、離散ウェーブレット変換の再帰実行回数に応じて、いずれのフィルタを用いるかを適応的に決定する。
【解決手段】
離散ウェーブレット変換部は、第1のタップ数の第1のフィルタ、又は、前記第1のタップ数より少ないタップ数の第2のフィルタを有し、且つ、離散ウェーブレット変換を行う対象のデータを一時的に記憶するためのメモリを有する。そして、符号化対象の画像データのサイズ、ウェーブレット変換の再帰実行回数、並びに、前記メモリの容量に基づき、離散ウェーブレット変換の再帰実行回数における各回にて、第1のフィルタ、第2のフィルタのいずれを用いるか、或いは、フィルタを用いた処理をスキップするかを決定する。
【選択図】 図1

Description

本発明は、離散ウェーブレット変換を用いて画像を符号化する技術に関するものである。
現在、高効率なデータ圧縮を実現するために様々な符号化手法が提案されている。その中の代表的な符号化方式として、JPEG(Joint Photographic Coding Experts Group)が挙げられる。このJPEG方式では、周波数変換にDCT(離散コサイン変換:Discrete Cosine Transform)が用いられる。DCTは、8×8画素の固定ブロック単位の変換である。このため、低ビットレート(高い圧縮率)では、ブロック歪みが発生しやすい。
一方、このJPEGの後継として規格化されたJPEG2000と呼ばれる符号化方式では、周波数変換にDWT(離散ウェーブレット変換:Discrete Wavelet Transform、以降DWTと呼ぶ)が用いられている。DWTは、ハイパスフィルタとローパスフィルタを組み合わせたフィルタバンクと呼ばれるフィルタを用い、画像データを複数の周波数帯域成分(サブバンド)に分割する。そして、JPEG2000では、DWTによって得られた各周波数帯域成分を符号化する。DCTが8×8画素の固定ブロックサイズの周波数変換であるのに対し、DWTはそれより十分に大きい画面単位の周波数変換である。それ故、JPEG2000の符号化データを復号した画像には、符号化時の量子化に伴うブロック歪みは発生しない。また、JPEG2000では、DWTを再帰的に実行することで、複数の分解レベルの周波数帯域成分を生成できる。このため、JPEG2000の符号化データからは、オリジナルの解像度の画像だけでなく、その解像度以下の画像を復号することも可能となる。つまり、JPEG2000は、適応的な解像度スケーラビリティを実現している。
特開2008−228115号公報
JPEG2000には、5タップのローパスフィルタと、3タップのハイパスフィルタで構成される整数型5/3タップフィルタが規定されている。今、この5/3タップフィルタを用いて、画像の垂直方向DWTを行う場合について考察する。この場合、DWTを行う場合には、最低でも4ライン分のラインバッファ(バッファメモリ)が必要になる。つまり、ラスタースキャン順に入力した4ライン分の画像データは一旦ラインバッファに格納される。そして、5ライン目の或る画素データを入力したとき、その画素データと、ラインバッファに既に格納されている垂直方向に並ぶ4つの画素データの計5個の画素データに対してフィルタリング処理が実行される。昨今では、4Kコンテンツの需要拡大等、画像サイズは増える傾向にあるため、上記ラインメモリのサイズも必然的に大きくなってしまう。
特許文献1では、通常のDWTと、高周波成分を0とみなした一部のフィルタ演算を省いたDWTを、画像の性質に応じて選択的に用いるDWTの構成が記載されている。しかし、この特許文献1では、入力画像の水平サイズと、自身のメモリリソースに応じた適応的なフィルタ演算の切り替えができない。そのため、サイズが大きい画像データが入力される場合に、相対的にラインメモリサイズが増加する構成となっている。
本発明は、上記の問題に鑑みなされたものである。そして、本発明は、タップ数の異なるフィルタを少なくとも2つ用意し、符号化対象の画像に応じて、いずれのフィルタを用いるかを決定することで、限られたメモリ容量での離散ウェーブレット変換のフィルタ処理を実行可能とする技術を提供する。
この課題を解決するため、例えば本発明の画像処理装置は以下の構成を備える。すなわち、
画像データを離散ウェーブレット変換し、符号化する画像処理装置であって、
離散ウェーブレット変換用の、第1のタップ数の第1のフィルタ、及び、前記第1のタップ数より少ないタップ数の第2のフィルタと、
離散ウェーブレット変換を行う対象のデータを、一時的に記憶するためのメモリと、
符号化対象の画像データのサイズ、ウェーブレット変換の再帰実行回数、並びに、前記メモリの容量に基づき、前記再帰実行回数における各回にて、前記第1のフィルタ、前記第2のフィルタのいずれを用いるか、或いは、フィルタを用いた処理をスキップするかを決定する決定手段と
該決定手段による決定に従ったフィルタ処理を行い、複数のサブバンドの変換係数データを生成するウェーブレット変換手段とを有する。
本発明によれば、タップ数の異なるフィルを少なくとも2つ用意し、符号化対象の画像のサイズ、並びに、離散ウェーブレット変換の再帰実行回数に応じて、いずれのフィルタを用いるかを適応的に決定する。この結果、限られたメモリ容量での離散ウェーブレット変換のフィルタ処理が可能になる。
実施形態に係る画像処理装置のブロック構成図。 垂直5タップフィルタを用いた処理を説明するための図。 フィルタバンクの構成を説明するための図。 画像とサブバンドとの関係を示す図。 整数型5/3タップフィルタの構成を説明するための図。 Haar型2/2タップフィルタの構成を説明するための図。 実施形態における離散ウェーブレット変換部のブロック構成図。 第1の実施形態における制御部に処理内容を示すフローチャート。 第1の実施形態の変形例における情報処理装置のブロック構成図。 第1の実施形態の変形例における処理内容を示すフローチャート。 第2の実施形態における離散ウェーブレット変換で用いるフィルタ種類の決定方法を示すフローチャート。
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
[第1の実施形態]
本第1の実施形態の画像処理装置は、画像データ供給源としての撮像部を有する撮像装置(デジタルカメラ等)に実装する例を説明する。ただし、符号化対象の画像データは記憶媒体から供給されても良く、その供給源の種類は問わない。あくまで、理解を容易にするためのものであると理解されたい。
図1は、第1の実施形態における撮像装置における符号化に係る主要部のブロック構成図である。本装置は、撮像部101、プレーン形成部102、DWT部(離散ウェーブレット変換部)103、量子化部104、エントロピー符号化部105、出力部106を有する。DWT部103は、内部にバッファメモリ107を有する。また、本装置は、更に装置全体の制御を司る制御部110、並びにユーザインターフェースとして機能する操作部111を有する。
撮像部101は、光を電気信号に変換するセンサが2次元に配列された構造を有する。そして、各センサの前面には赤(R)、緑(G)、青(B)のいずれかのカラーフィルターが配置されている。そして、撮像部101は、各センサで得られた各色成の電気信号をデジタルデータとしてプレーン形成部202に供給する。撮像部101に配置されるカラーフィルターの並びはベイヤ配列である。ベイヤ配列における局所的な2×2画素のフィルタは、赤色のRフィルタが1つ、青色のBフィルタが1つ、そして2つの緑色のG0フィルタ、G1フィルタで構成されるものである。ベイヤ配列とは、この2×2画素が1セットとし、そのセットが周期的に並んだものと理解されたい。通常、撮像装置は、ベイヤ配列の画像データを現像処理(デモザイク処理とも呼ばれる)することで、1画素がR、G,B等の3成分で表現される画像データを生成する。これに対し、本第1の実施形態における符号化対象の画像データは、現像処理を行う前段階のベイヤ配列の画像データであって、未加工のデータである。それ故、以降、このベイヤ配列の画像データをRAW画像データと言う。
プレーン形成部102は、RAW画像データを、R成分の画素のみで構成されるRプレーン、G0成分の画素のみで構成されるG0プレーン、G1成分の画素のみで構成されるG1プレーン、青成分の画素のみで構成されるBプレーンを形成(分離)する。そして、プレーン形成部102は、形成したRプレーン、G0プレーン、G1プレーン、Bプレーンを、例えばこの順番に離散ウェーブレット変換部203に供給する。なお、プレーン単位に供給すれば良いので、特にプレーンの供給順番はこれに限らない。また、プレーン形成部102は、DWT部103に供給する或るプレーンの画素の順番はラスタースキャン順とする。
DWT部(離散ウェーブレット変換部)103は、離散ウェーブレット変換用の2つフィルタと、その変換の対象となるデータ(画素データもしくは前回の変換で得られた変換係数データ)を一時的に記憶するバッファメモリ107を有する。そして。DWT部103は、そのバッファメモリ107を用いて、プレーン形成部202から1つの色成分のプレーンを入力しては、そのプレーンに対して2次元のDWTを行う。そしてDWT部103は得られた変換係数データを量子化部104に供給する。
ここで、入力する1プレーンに対して5/3タップフィルタを用いた垂直方向DWTを図2を参照して説明する。垂直方向に対して5タップのフィルタを用いるわけであるから、図2に示すように、少なくとも4ライン分のラインメモリをバッファメモリ107に確保する。ここで、1つのラインメモリに格納される画素数は、入力するプレーンの水平方向の画素数Wである。よって、RAW画像データの1画素がNビットで表されるとしたとき、ラインバッファは4×W×Nビットの容量が必要になる。そして、プレーン形成部102から5ライン目の画素データ(図示の*印)を入力したとき、垂直方向に隣接する5画素が揃ったことになるので、DWT部103は5/3タップフィルタを用いたフィルタ処理を実行する。なお、5画素に対するフィルタ処理を行った直後、最古の画素データ(図示の場合は、1ライン目の#印の画素データ)は用済みであるので、その位置に現入力の5ライン目の画素データ(*印)を格納する。以降、DWT部103は、プレーン形成部102からラスタースキャン順に画素データを入力する度に、5/3タップフィルタを行う位置を1画素分だけ図示の右方向にずらしてフィルタ処理を行う。このようにして、4ライン分のラインメモリを用いながらも、1プレーン分の垂直方向DWTを行うことになる。
第1の実施形態においては、DWT部104が用いるFIRフィルタは複数種類ある。説明を単純化するため、第1の実施形態におけるDWT部103が使用するフィルタの種類は2つであり、1つは5/3タップフィルタ、もう1つがHaar型の2/2タップフィルタであるものとする。5/3タップフィルタは、JPEG2000に規定されている整数型5/3タップフィルタであり、タップ数が「5」のローパスフィルタと、タップ数が「3」のハイパスフィルタで構成される。一方、Haar型2/2タップフィルタは、タップ数が共に「2」のローパスフィルタとハイパスフィルタで構成される。DWT部103が上記2つフィルタのうちのいずれを用いてDWTを行うかは、制御部110が決定する。なお、上記以外として、JPEG2000にて規定されている9/7タップフィルタも選択候補に入れても良いが、単純化のため上記の2種類とする。
ここで、このDWTの基本的なフィルタバンク構成を図3に示す。図示において表記『H0(z)』、『H1(z)』は、共に、FIR型フィルタで構成されたフィルタを示している。『H0(z)』がローパスフィルタ、『H1(z)』がハイパスフィルタである。また、『↓2』はダウンサンプラを示している。ローパスフィルタH1(z)からの出力係数を入力するダウンサンプラは、出力係数列の偶数番目のサンプルだけを保持し、奇数番目のサンプルを破棄するという間引き処理を実行する。また、ハイパスフィルタH0(z)からの出力係数を入力するダウンサンプラは、出力係数列の奇数番目のサンプルだけを保持し、偶数番目のサンプルを破棄するという間引き処理を実行する。このように、ローパスフィルタH0(z)、ハイパスフィルタH1(z)から出力された係数データは、それぞれのダウンサンプラにて引き処理されることになり、その個数は半分となる。
しかし、このようにフィルタH0(z)、H1(z)が、偶数番目と奇数番目とに関係無く全ての入力データに関してフィルタ処理を行うのは効率的では無い。第1の実施形態では、ローパスフィルタH0(z)は偶数番目の係数列についてのみフィルタ処理を実行し、ハイパスフィルタH1(z)は奇数番目のデータ列についてのみフィルタ処理を実行するものとする。その結果、各フィルタH0(z)、H1(z)は、フィルタ処理と間引き処理とを同時並行に実行することになる。図3で示す、「L」は低周波成分を意味し、「H」は高周波成分を意味する。例えば、HH成分は、垂直方向と水平方向についてハイパスフィルタ処理を施して得られた変換係数の集合である。プレーン形成部102が形成した1つのプレーン全体に対して上記フィルタ処理を行うことで、HH成分データの集合、LH成分データの集合、HL成分データの集合、LL成分データの集合が得られる。これらの集合は一般にサブバンドと呼ばれる。各ダウンサンプラは垂直、又は、水平方向に間引き処理するので、1つのサブバンドのサイズは、プレーン形成部102が形成した1プレーンの水平、垂直とも1/2(データの個数で言えば1/4)のサイズになる。そして、ここまでの処理がDWT分解レベル1の処理となる。また、DWT分解レベル1の処理で得られたサブバンドLLに対して2回目のDWTを行うことができる。この2回目のDWTの処理を、DWT分解レベル2の処理という。このDWT分解レベル2の処理によって、分解レベル1の処理と同様に、更なるサブバンドが得られる。それ故、分解レベル1と分解レベル2とのサブバンドを区別するため、分解レベル1のサブバンドを1HH,1LH,1HL,1LLと表記し、分解レベル2のサブバンドを2HH,2LH,2HL,2LLと表記する。
1つのプレーン(R,G0,G1,Bプレーンのいずれか)、DWTを1回実行して生成したサブバンド、DWTを2回実行した場合のサブバンドの関係は、図4(a)乃至図c)のようになる。分解レベル1の各サブバンドのサイズは、オリジナルのプレーンの水平、垂直の1/2のサイズとなる。図示から、分解レベル2のサブバンド分解は、分解レベル1のサブバンド1LLに対して行われること、分解レベル2の各サブバンドのサイズは、分解レベル1の1つのサブバンドの水平、垂直とも1/2となっていることが理解できよう。因に、分解レベル2の1つのサブバンドは、オリジナルのプレーンの水平、垂直とも1/4のサイズでもある。
次に、実施形態におけるDWT部103が用いる2種のFIR型フィルタ(整数型5/3タップフィルタとHaar型2/2タップフィルタ)の説明をする。図5(a),(b)は、整数型5/3タップフィルタの構成を示す模式図である。タップ数が5であるので、演算対象の5つの連続するデータ(以下データ列)はX(2n−2)、X(2n−1)、X(2n)、X(2n+1)、X(2n+1)(n:整数)と表記される。なお、ここで言うX()は、レベル1のサブバンド分解の処理時では、プレーン形成部102から供給される画素データであり、レベル2のサブバンド分解の処理時では、レベル1のサブバンド分解で得られたサブバンド1LLの係数データである。図5(a)に示すローパスフィルタH0(z)は、5タップに対応したフィルタ係数h0(−2)、h0(−1)、h0(0)、h0(1)、h0(2)を有する。そして、ローパスフィルタは、入力したデータ列とフィルタ係数h0(−2)〜h0(2)とを畳み込み演算する。このため、ローパスフィルタは、5つの乗算器と4つの加算器を有する。このローパスフィルタH0(z)は、次式(1)に従って、偶数番目のデータX(2n)に関して畳み込み演算を実行し、低周波の係数データY(2n)を出力する。なお、JPEG2000では、フィルタ係数h0(−2)とh0(2)は−1/8、h0(−1)とh0(1)は2/8、h0(0)は6/8と規定されている。
Figure 2017085320
また、図5(b)のハイパスフィルタH1(z)は、3タップに対応したフィルタ係数h1(−1)、h1(0)、h1(1)を有する。そして、ハイパスフィルタH1(z)は、入力データ列X(2n),X(2n+1)、X(2n+2)と、フィルタ係数h1(−1)、h1(0)、h1(1)とを畳み込み演算する。このため、ハイパスフィルタH1(z)は、3つの乗算器と2つの加算器を有する。このハイパスフィルタH1(z)は、次式(2)に従って、奇数番目の入力データX(2n+1)に関して畳み込み演算を実行し、高周波の係数データY(2n+1)を出力する。なお、JPEG2000では、フィルタ係数h1(−1)とh1(1)は−1/2、h1(0)は1と規定されている。
Figure 2017085320
次に、実施形態におけるDWT部103が用いるもう1つのフィルタ、Haar型2/2タップフィルタを説明する。図6(a)、(b)にその模式図を示す。図6(a)に示すローパスフィルタH0(z)は、2タップに対応したフィルタ係数h0(0)、h0(1)を有する。そして、ローパスフィルタH0(z)は、入力データ列X(2n),X(2n+1)と、フィルタ係数h0(0)、h0(1)とを畳み込み演算する。このため、ローパスフィルタH0(z)は、2つの乗算器と、1つの加算器を有する。このローパスフィルタH0(z)は、次式(3)に従って、偶数番目の入力データX(2n)に関して選択的に畳み込み演算を実行し、係数データY(2n)を出力する。なお、フィルタ係数は、h0(0)とh0(1)は1/2となっている。
Figure 2017085320
また、Haar型2/2タップフィルタのハイパスフィルタH1(z)は、図6(b)に示すように、2タップに対応したフィルタ係数h1(0)、h1(1)を有する。そして、ハイパスフィルタH1(z)は、入力データ列X(2n),X(2n+1)と、フィルタ係数h1(0)、h1(1)とを畳み込み演算する。このため、ハイパスフィルタH1(z)は、2つの乗算器と、1つの加算器を有する。このハイパスフィルタH1(z)は、次式(4)に従って、偶数番目の入力データX(2n+1)に関して選択的に畳み込み演算を実行し、係数データY(2n+1)を出力する。なお、フィルタ係数は、h1(0)は1/2、h1(1)は−1/2となっている。
Figure 2017085320
以上、実施形態のDWT部103が用いる、タップ数の異なる2種類のFIRフィルタを説明した。このいずれのフィルタを用いるかの決定は、制御部110が行うものとし、その詳細は後述する。
図1の説明に戻る。量子化部104は、DWT部103から供給された各サブバンドの変換係数データを、各サブバンド毎に定めた量子化ステップで量子化し、量子化後の変換係数データをエントロピー符号化部105に共有する。エントロピー符号化部205は、量子化後の変換係数データを算術符号化に従ってエントロピー符号化し、生成した符号化データを出力部106に供給する。出力部106は、エントロピー符号化部105から供給された各サブバンド毎の符号化データを、予め設定した順番に結合する。また、出力部106は、復号に必要な情報を収めたヘッダを生成する。そして、出力部106は、生成したヘッダを出力し、それに後続するように、結合した符号化データを出力する。出力先は特に問わないが、典型的にはメモリカードである。メモリカードに出力した場合には、ファイルとして保存されることになる。なお、ヘッダに格納される情報には、RAW画像データの符号化であることを示す情報、各プレーンの順番と、1つのプレーンの水平、素直方向の画素数、各画素が深さを示すビット数、更には、DWT部103が用いたフィルタを特定する情報が含まれる。また、ヘッダに後続するペイロードには、プレーン毎の符号化データが格納されることになる。
図7は、第1の実施形態におけるDWT部103のブロック構成図を示している。DWT部103は、バッファメモリ107、スイッチ部402、垂直5/3タップフィルタ403、Haar型の垂直2/2タップフィルタ404、水平5/3タップフィルタ405を有する。つまり、DWT部103は、垂直ウェーブレット変換を行い、その後で水平ウェーブレット変換を行うように構成される。DWT分解レベル2の分解処理対象は、DWT分解レベル1のサブバンド1LLである。それ故、水平5/3タップフィルタ405からバッファメモリ107にサブバンド1LLの変換係数データを転送するライン406が設けられる。
DWT部103、特に、スイッチ部402は、制御部110からの制御信号に従った処理を行う。この制御信号には、いずれの垂直方向DWTフィルタを用いるのかを示す信号が含まれる。なお、説明が前後するが、制御部110は、CPU、ROM、並びにRAMで構成される。そして、ROMには、図8に示すフローチャートに係るプログラムが格納されている。また、ユーザは、操作部111を操作して、撮像する画像の水平、垂直方向の解像度を規定する撮影モード、更には、DWTの実行回数を設定しているものとする。これら設定された情報は、制御部110内のRAMに格納されているものとする。そして、操作部111のレリーズボタンを操作した場合、制御部110は、DWT部103においていずれの垂直方向DWTフィルタを用いるかを決定し、制御信号をDWT部103に供給する。
以下、図8のフローチャートに従い、制御部110の処理手順を説明するともに、実施形態におけるDWT部103の処理内容を説明する。なお、以下では、DWTの再帰実行回数が2回として設定された場合の処理を、具体的な数値例を用いた効果の検証も行う。
撮影が開始されると、制御部110は、ステップS501にて、内部のRAMから、現在設定されている情報を読み出す。これにより、制御部110は、解像度、DWTの再帰実行回数を取得する。
実施形態における撮影モードにて選択可能な撮像解像度は、QHD(960×540画素)、FHD(1920×1080画素)、4K(3840×2160画素)、8K(7680×4320画素)の4種とする。また、RAW画像データにおける1画素は10ビットであるものとする。
また、プレーン形成部102が生成する各色成分のプレーンのサイズ(画素数)は、上記の各モードの解像度の水平、垂直とも1/2となる。つまり、ユーザが選択したモードが例えばQHDであった場合、プレーン形成部102がDWT部103に供給する1プレーンのサイズは480×270画素となる。
制御部110は、ステップS502にて、1つプレーンの符号化処理のすべてのDWTに整数型5/3タップフィルタを適用した場合に要するラインメモリサイズを算出する。整数型5/3タップフィルタは、5ライン目が入力されると同時にフィルタ実行が可能な5タップフィルタであるため、最低でも4ライン分のメモリ領域が必要となる。それぞれの入力画像サイズで必要なラインメモリサイズは下記の通りである。なお、ラインメモリサイズは、プレーン形成部202が出力した、1プレーン分単位で算出する。
<QHD>
DWT1回目ラインメモリサイズ:480×4×10=19200(ビット)
DWT2回目ラインメモリサイズ:240×4×10=9600(ビット)
ラインメモリサイズ計:28800(ビット)
<FHD>
DWT1回目ラインメモリサイズ:960×4×10=38400(ビット)
DWT2回目ラインメモリサイズ:480×4×10=19200(ビット)
ラインメモリサイズ計:57600(ビット)
<4K>
DWT1回目ラインメモリサイズ:1920×4×10=76800(ビット)
DWT2回目ラインメモリサイズ:960×4×10=38400(ビット)
ラインメモリサイズ計:115200(ビット)
<8K>
DWT1回目ラインメモリサイズ:3840×4×10=153600(ビット)
DWT2回目ラインメモリサイズ:1920×4×10=76800(ビット)
ラインメモリサイズ計:230400(ビット)
制御部110は、ステップS503にて、現在のモードで符号化する際に必要なラインメモリのサイズが、DWT部103のバッファメモリ107におけるラインメモリに割り当て可能なメモリリソースのサイズよりも大きいかどうかを判定する。ステップS502で算出したラインメモリサイズがメモリリソースのサイズより大きい場合は、処理はステップS505に進め、そうでなければ、ステップS504に処理を進める。
ここで、第1の実施形態では、バッファメモリ107におけるラインメモリとして活用可能なメモリリソースは、40000ビットであものとする。従って、選択したモードの解像度がQHDサイズの場合は、ラインメモリサイズがメモリリソース以下となるため、制御部110は、処理をステップS504に進める。また、選択したモードがFHD、4K、8Kのいずれかの場合、5/3タップフィルタを用いた場合に必要なラインメモリサイズがメモリリソースを超えるため、ステップS505に処理を進める。
ステップS504にて、制御部110は、全DWTに適用するフィルタ種類を、整数型5/3タップ型フィルタとして決定する。そして制御部110は、DWT部103に対して、1回目、2回目の垂直方向DWTに5/3タップ垂直フィルタ403を用いることを示す制御信号を出力する。
ここで、制御部110がステップS504の処理を行った場合の、DWT部103の具体的な処理を以下に説明する。
DWT部103は、バッファメモリ107内に、4800ビットの容量を有するラインメモリを4つ確保する。この4つのラインメモリは、1回目のDWTにおける5/3タップ垂直フィルタに適用するためである。以降、1回目のDWTの垂直フィルタに適用する、これら4つのラインメモリを第1ラインメモリ群と呼ぶ。また、DWT部103は、バッファメモリ107内に、1ラインが2400ビットの容量を有するラインメモリを4つ確保する。この4つのラインメモリは、2回目のDWTにおける5/3タップ垂直フィルタに適用するためである。以降、2回目のDWTの垂直フィルタに適用する、これら4つのラインメモリを第2ラインメモリ群と呼ぶ。
プレーン形成部102からラスタースキャン順に供給された画素データは、バッファメモリ107に確保された第1ラインメモリ群に格納される。そして、プレーン形成部102から5ライン目以降の画素データ(以下、現入力画素データという)が供給されたとする。この場合、スイッチ部402は、第1ラインメモリ群に格納された垂直方向に並ぶ4画素の画素データと、現入力画素データの計5画素分の画素データを、5/3タップ垂直フィルタ403に供給する。また、この際スイッチ部402は、第1ラインメモリ群内の、5/3タップ垂直フィルタ403に供給した5画素の中で最も古い画素データを格納していた位置に、現入力画素データで上書き保存する。5/3タップ垂直フィルタ403は、供給された5画素に対して5/3タップ垂直フィルタを適用し、高周波成分データと低周波成分データを生成する。そして、5/3タップ垂直フィルタ403は、生成した高周波成分データと低周波成分データを5/3タップ水平フィルタ405に供給する。
5/3タップ水平フィルタ405は、内部に、適当な個数(実施形態ではDWTを2回行うので16個)のレジスタを有する。そして、5/3タップ水平フィルタ405は、現入力の高周波成分データと、それ以前に入力し、4個のレジスタに格納された高周波成分データの計5個に対して、5/3タップ水平フィルタ処理を適用し、サブバンド1HH,1LHの変換係数データを生成する。また、5/3タップ水平フィルタ405は、現入力の低周波成分データと、それ以前に入力し、4個のレジスタに格納された低周波成分データの計5個に対して、5/3タップ水平フィルタ処理を適用し、サブバンド1HL,1LLの変換係数データを生成する。そして、5/3タップ水平フィルタ405は、サブバンド1HH,1LH,1HLの変換係数データを量子化部104に供給する。また、5/3タップ水平フィルタ405は、サブバンド1LLの変換係数データをライン406を介し、バッファメモリ107に供給する。
5/3タップ水平フィルタ405から供給されたサブバンド1LLの変換係数データは、バッファメモリ107に確保された第2ラインメモリ群にラスタースキャン順に格納されていく。ここで、サブバンド1LLの5ライン目以降の変換係数データ(以下、現入力変換係数データという)が供給されたとする。この場合、スイッチ部402は、第2ラインメモリ群に格納された垂直方向に並ぶ4個の変換係数データと、現入力変換係数データの計5個の変換係数データを、5/3タップ垂直フィルタ403に供給する。また、この際、スイッチ部402は、第2ラインメモリ群内の、5/3タップ垂直フィルタ403に供給した5個の変換係数データの中で最も古い変換係数データを格納していた位置に、現入力変換係数データを上書き保存する。5/3タップ垂直フィルタ403は、供給された5個の変換係数データに対して5/3タップ垂直フィルタを適用し、高周波成分データと低周波成分データを生成する。そして、5/3タップ垂直フィルタ403は、生成した高周波成分データと低周波成分データを5/3タップ水平フィルタ405に供給する。
5/3タップ水平フィルタ405は、現入力の高周波成分データと、それ以前に入力し、4個のレジスタに格納された高周波成分データの計5個に対して、5/3タップ水平フィルタ処理を適用し、サブバンド2HH,2LHの変換係数データを生成する。また、5/3タップ水平フィルタ405は、現入力の低周波成分データと、それ以前に入力し、4個のレジスタに格納された低周波成分データの計5個に対して、5/3タップ水平フィルタ処理を適用し、サブバンド2HL,2LLの変換係数データを生成する。そして、5/3タップ水平フィルタ405は、サブバンド2HH,2LH,2HL、2LLの変換係数データを量子化部104に供給する。
1プレーンに対する分解レベル1、2のDWTを行っている最中、バッファメモリ107の第1ラインメモリ群への画素データの格納と、第2ラインメモリ群へのサブバンド1LLの変換係数データの格納は並列に行われる。つまり、プレーン形成部102から1個の画素データが供給されるたびに、5/3タップ垂直フィルタ403、及び、5/3タップ垂直フィルタ405それぞれは、分解レベル1のDWTのフィルタ処理、分解レベル2のDWTのフィルタ処理を行うことになる。よって、5/3タップ水平フィルタ405は、生成した変換係数データを量子化部104に供給するとき、その変換係数データが分解レベル1、2のいずれであるのかを示す情報も併せて供給する。量子化部104が、各サブバンドの変換係数を解像度レベルごとに分類し、それぞれを量子化するためである。
以上が、制御部110がステップS504の処理を行った場合の、DWT部103の具体的な処理の説明である。
図8の説明に戻る。制御部110は、ステップS505にて、DWTの再帰実行回数のうち、所定回までのDWTにHaar型2/2タップフィルタを適用し、その所定回以降では整数型5/3タップフィルタを用いた場合に要するラインメモリサイズを算出する。具体的には、制御部110は、分解レベル1(1回目のDWT)におけるDWTではHaar型2/2タップフィルタ、分解レベル2(2回目のDWT)以降のDWTでは整数型5/3タップフィルタを適用する場合の、ラインメモリサイズを算出する。Haar型2/2タップフィルタでは、2ライン目が入力されると同時にフィルタ実行が可能な2タップフィルタであるため、ラインメモリとして必要なサイズは1ライン分を格納する容量で良い。ここで、分解レベル1におけるDWTに対してのみ、Haar型2/2タップフィルタを適用し、分解レベル2におけるDWTでは整数型5/3タップフィルタを適用する場合の、入力画像サイズに対する必要なラインメモリサイズは下記の通りである。
<FHD>
DWT1回目ラインメモリサイズ:960×1×10=9600(ビット)
DWT2回目ラインメモリサイズ:480×4×10=19200(ビット)
ラインメモリサイズ計:28800(ビット)
<4K>
DWT1回目ラインメモリサイズ:1920×1×10=19200(ビット)
DWT2回目ラインメモリサイズ:960×4×10=38400(ビット)
ラインメモリサイズ計:57600(ビット)
<8K>
DWT1回目ラインメモリサイズ:3840×1×10=38400(ビット)
DWT2回目ラインメモリサイズ:1920×4×10=76800(ビット)
ラインメモリサイズ計:115200(ビット)
ステップS506にて、制御部110は、ステップS505で算出したラインメモリサイズが、バッファメモリ107におけるラインメモリに割り当て可能なメモリリソースのサイズよりも大きいかどうかを判定する。算出したラインメモリサイズの方がメモリリソースより大きい場合は、制御部110は、ステップS508に処理を進める。また、算出したラインメモリサイズがメモリリソース以下であれば、ステップS507に処理を進める。実施形態の場合、入力画像がFHDサイズの場合は、算出したラインメモリサイズがメモリリソース(40000ビット)以下であるのでステップS507に処理を進める。一方、選択した撮影モードによる解像度が、4K、8Kの場合は、算出したラインメモリサイズがメモリリソースを超えるため、制御部110は処理をステップS508に処理を進める。
ステップS507にて、制御部110は、所定分解レベル(実施形態では分解レベル1)のDWTに適用するフィルタ種類をHaar型2/2タップフィルタに決定し、所定分解レベル以降では整数型5/3タップフィルタを利用するとして決定する。そして、制御部110は、DWT部103に対し、1回目の垂直方向DWTでHaar型2/2フィルタ、2回目の垂直方向DWTで5/3タップフィルタを用いることを示す制御信号を供給する。この制御信号を受信したDWT部103の具体的な処理を以下に説明する。
DWT部103は、バッファメモリ107内に、9600ビットの容量を有するラインメモリを1つ、4800ビットのラインメモリを4つ確保する。先のステップS504での説明に合わせるため、9600ビットの1ラインメモリを便宜的に第1ラインメモリ群と呼ぶ。また、4800ビットの容量を有するラインメモリの4つを第2ラインメモリ群と呼ぶ。
プレーン形成部102からラスタースキャン順に供給された画素データは、バッファメモリ107に確保された第1ラインメモリ群に格納される。そして、プレーン形成部102から2ライン目以降の画素データ(以下、現入力画素データという)が供給されたとする。この場合、スイッチ部402は、第1ラインメモリ群に格納された垂直方向に隣接する1個の画素データと、現入力画素データの計2画素分の画素データを、2/2タップ垂直フィルタ404に供給する。また、この際スイッチ部402は、第1ラインメモリ群内の、2/2タップ垂直フィルタ404に供給した2画素の中で最も古い画素データを格納していた位置に、現入力画素データで上書き保存する。2/2タップ垂直フィルタ404は、供給された2画素に対してHaar型の2/2タップ垂直フィルタを適用し、高周波成分データと低周波成分データを生成する。そして、2/2タップ垂直フィルタ404は、生成した高周波成分データと低周波成分データを5/3タップ水平フィルタ405に供給する。
5/3タップ水平フィルタ405の処理は、ステップS504の場合と同じである。そして、1回目のDWTにて得られたサブバンド1LLの変換係数データが、バッファメモリ107に供給される点もステップS504の場合と同じである。サブバンド1LLの5ライン目以降の変換係数データが、5/3タップ水平フィルタ405からバッファメモリ107に供給されたとする。この場合、スイッチ部402は、現入力変換係数データと、第2ラインメモリ群に格納された垂直方向に並ぶ4個の変換係数データとの計5個の変換係数データを、5/3タップ垂直フィルタ403に供給する。また、この際、スイッチ部402は、第2ラインメモリ群内の、5/3タップ垂直フィルタ403に供給した5個の変換係数データの中で最も古い変換係数データを格納していた位置に、現入力変換係数データを上書き保存する。これ以降はステップS504の場合と同じである。ただし、この例の場合、5/3タップ垂直フィルタ403と、2/2タップ垂直フィルタ404が並列に処理することも可能になる。
図8の説明に戻る。制御部110は、ステップS508にて、全て回の垂直DWT(垂直ウェーブレット変換)にHaar型2/2タップフィルタを適用した場合に要するラインメモリサイズを算出する。全て回の垂直DWTで、Haar型2/2タップフィルタを適用した場合に、それぞれの入力画像サイズで必要なラインメモリサイズは下記の通りである。
<4K>
DWT1回目ラインメモリサイズ:1920×1×10=19200(ビット)
DWT2回目ラインメモリサイズ:960×1×10=9600(ビット)
ラインメモリサイズ計:28800(ビット)
<8K>
DWT1回目ラインメモリサイズ:3840×1×10=38400(ビット)
DWT2回目ラインメモリサイズ:1920×1×10=19200(ビット)
ラインメモリサイズ計:57600(ビット)
ステップS509では、制御部110は、ステップS508で算出したラインメモリサイズが、バッファメモリ107におけるラインメモリに割り当て可能なメモリリソースのサイズよりも大きいかどうかを判定する。算出したラインメモリサイズの方がメモリリソースより大きい場合は、ステップS511に処理を進め、そうでなければ、ステップS510に処理を進める。撮影モードの解像度が4Kの場合は、ラインメモリサイズがメモリリソース以下であるため、ステップS510に処理を進める。また、撮影モードの解像度が8Kの場合は、ラインメモリサイズがメモリリソースを超えるため、ステップS511に処理を進める。
制御部110は、ステップS510にて、全て回の垂直DWTに適用するフィルタ種類を、Haar型2/2タップ型フィルタに決定する。そして、制御部110は、対応する制御信号をDWT部103に供給する。この制御信号を受信したDWT部103の具体的な処理を以下に説明する。
DWT部103は、バッファメモリ107内に、9600ビットの容量を有するラインメモリを1つ、4800ビットのラインメモリを1つ確保する。先のステップS504での説明に合わせるため、9600ビットの1ラインメモリを便宜的に第1ラインメモリ群と呼ぶ。また、4800ビットの容量を有する1ラインメモリを第2ラインメモリ群と呼ぶ。
プレーン形成部102からラスタースキャン順に供給された画素データは、バッファメモリ107に確保された第1ラインメモリ群に格納される。そして、プレーン形成部102から2ライン目以降の画素データ(以下、現入力画素データという)が供給されたとする。この場合、スイッチ部402は、第1ラインメモリ群に格納された垂直方向に隣接する1個の画素データと、現入力画素データの計2画素分の画素データを、2/2タップ垂直フィルタ404に供給する。また、この際スイッチ部402は、第1ラインメモリ群内の、2/2タップ垂直フィルタ404に供給した2画素の中で最も古い画素データを格納していた位置に、現入力画素データで上書き保存する。2/2タップ垂直フィルタ404は、供給された2画素に対してHaar型の2/2タップ垂直フィルタを適用し、高周波成分データと低周波成分データを生成する。そして、2/2タップ垂直フィルタ404は、生成した高周波成分データと低周波成分データを5/3タップ水平フィルタ405に供給する。
5/3タップ水平フィルタ405の処理は、ステップS504の場合と同じである。そして、1回目のDWTにて得られたサブバンド1LLの変換係数データが、バッファメモリ107に供給される点もステップS504の場合と同じである。サブバンド1LLの2ライン目以降の変換係数データが、5/3タップ水平フィルタ405からバッファメモリ107に供給されたとする。この場合、スイッチ部402は、現入力変換係数データと、第2ラインメモリ群に格納された垂直方向に隣接する1個の変換係数データとの計2個の変換係数データを、2/2タップ垂直フィルタ404に供給する。また、この際、スイッチ部402は、第2ラインメモリ群内の、4/4タップ垂直フィルタ404に供給した2個の変換係数データの中で最も古い変換係数データを格納していた位置に、現入力変換係数データを上書き保存する。これ以降はステップS504の場合と同じである。ただし、1回目、2回目とも、2/2タップ垂直フィルタ404を利用することになる。
図8の説明に戻る。制御部110は、ステップS511にて、所定分解レベルの垂直DWTを実行しない方式を選択する。具体的には、制御部110は、入力画像が8Kサイズの場合は、分解レベル1の垂直DWTは実施せず、分解レベル2のDWTはHaar型2/2タップフィルタを適用して、2回のDWTを実行するものとして決定する。そして、制御部110は、DWT部103に対応する制御信号を供給する。分解レベル1での垂直DWTを実行せず、分解レベル2での垂直DWTにHaar型2/2タップフィルタを適用した場合の、撮影モードが8Kの場合において、必要なラインメモリサイズは下記の通りである。
<8K>
DWT1回目ラインメモリサイズ:0(ビット)
DWT2回目ラインメモリサイズ:3840×1×10=38400(ビット)
ラインメモリサイズ計:38400(ビット)
制御部110がステップS511の処理を実行した場合の、DWT部103の具体的な処理内容は次の通りでさる。
DWT部103は、バッファメモリ107に、38400ビットの容量を有するラインメモリを1つ確保する。このラインメモリは、先のステップS504での説明した第2ラインメモリ群に相当するものである。また、この場合、DWT部103は、第1ラインメモリ群に相当するラインメモリをバッファメモリ107に確保しない。
スイッチ部402は、プレーン形成部102から画素データを受信した場合、垂直DWTをスキップするため、入力した画素データをライン407を介して、ダイレクトに5/3タップフィルタ405に供給する。5/3タップフィルタ405は、フィルタリングして生成された水平方向の高周波の変換係数データを量子化部104に供給する。また、5/3タップフィルタ405は、低周波の変換係数データを、バッファも襟107に確保した第2ラインメモリ群に格納する。ここで、5/3タップ水平フィルタ405から2ライン目以降の変換係数データが第2ラインメモリ群に供給されたとする。この場合、スイッチ部402は、現入力変換係数データと、第2ラインメモリ群に格納された垂直方向に隣接する1個の変換係数データとの計2個の変換係数データを、2/2タップ垂直フィルタ404に供給する。また、この際、スイッチ部402は、第2ラインメモリ群内の、2/2タップ垂直フィルタ404に供給した2個の変換係数データの中で最も古い変換係数データを格納していた位置に、現入力変換係数データを上書き保存する。これ以降はステップS504の場合と同じである。
以上、第1の実施形態における制御部110の処理と、DWT部103の処理を説明した。上記実施形態によれば、限られたメモリリソースの範囲内で、異なるタップ数のフィルタの中から適応的に利用する1つを選択してウェーブレット変換を行い、符号化を行うことが可能になる。つまり、入力画像のサイズに依存することなくメモリサイズの増大を防ぐことが可能になる。なお、第1の実施形態では、フィルタの種類として整数型5/3タップフィルタ、Haar型2/2タップフィルタの2種類の例を説明したが、フィルタの種類はこれ以上でも構わない。また、DWTの再帰実行回数を2回としたが、この回数も2回に限らず1回、或いは3回以上であっても良い。DWTの再帰実行回数が多くなっても、より多く回数で、タップ数の多いフィルタを利用することに優先順位を置いて決定する。また、実施形態では符号化対象のRAW画像データは、1枚の静止画像として説明したが、時間軸に連続した動画像であっても構わない。
[第1の実施形態の変形例]
上記第1の実施形態は撮像装置に適用する例であった。以下では、パーソナルコンピュータなどの汎用の情報処理装置で実行するアプリケーションプログラムで実現する例を、第1の実施形態の変形例として説明する。
図9は、本変形例における情報処理装置のブロック構成図である。本装置の電源がONになると、CPU901はROM902に格納されたブートプログラムを実行し、HDD(ハードディスクドライブ)904からOS(オペレーティングシステム)905をRAM903にロードし、OSを実行する。この結果、CPU901は、キーボード909、マウス910を介してユーザからの指示の受け付けと、表示制御部911を制御した表示装置912へのメニュー等の表示が可能となる。つまり、本装置がユーザが利用する情報処理装置として機能する。そして、ユーザがマウス910等からアプリケーションプログラム906の起動を指示すると、CPU901はそのアプリケーションプログラム906をRAM902にロードし、実行する。この結果、本装置が画像符号化装置として機能する。そして、HDD1704に格納されたRAW画像データファイル907に含まれる未符号化RAWデータを符号化し、符号化ファイル908として生成する。
図10は、アプリケーションプログラム906の一部のウェーブレット変換に用いるフィルタの決定処理を示している。以下、同図に従って、CPU901によるフィルタ決定処理を説明する。なお、ここでも利用可能なフィルタは整数型5/3タップフィルタ、Haar型2/2タップフィルタの2種類であるものとする
まず、CPU901は、ステップS301にて、RAW画像データファイル907をファイルヘッダを解析し、RAW画像データの水平方向画素数W、1画素のビット数Dを取得する。CPU901は、ステップS303にて、ユーザによるキーボード909やマウス910の操作から、DWTの再帰実行回数(解像度レベル数)Mを取得する。次に、CPU901は、RAM903にラインメモリとして確保可能な最大サイズRを、例えばOSに要求し取得する。ここで言う最大サイズRは、第1の実施形態で言及した「メモリリソース」に相当する。それ故、以降、Rをメモリリソースと呼ぶ。なお、RAM903は、ここで説明する画像符号化アプリケーション以外にも、様々なアプリケーションが実行し得るので、メモリリソースRは状況に応じたものとなる点に注意されたい。
次にCPU901は、ステップS304にて、DWTの再帰実行回数Mにおける垂直DWTで5/3タップフィルタを用いた場合に必要なメモリサイズAを算出する。
RAW画像データ内の画素は既に説明したようにベイヤ配列となっている。また、水平方向の画素数WのRAW画像データから形成される、1つのプレーン(R,G0、G1、Bプレーンのいずれか)の水平方向の画素数は、その半分のW/2となる。5/3タップ垂直フィルタを適用する場合には、4ライン分のラインメモリを必要となるのは既に説明した通りである。よって、1プレーンに対する1回目の垂直DWTで必要なメモリサイズは次式で与えられる。
(W/2)×4×D(ビット)
また、一般に、第x回目のウェーブレット変換を行って得られたサブバンドの水平方向の変換係数データの個数は、直前の第x−1回目のウェーブレット変換で得られたサブバンドのそれの1/2となる。よって、1回目からM回目までの全ての回で、垂直DWTで5/3タップ垂直フィルタを用いる場合に必要なラインデータのメモリサイズAは次式で得られる。
Figure 2017085320
CPU901は、ステップS305にて、算出したメモリサイズAと、メモリリソースRとを比較し、条件『R≧A』を満たすか否かを判定する。この条件が満たされる場合、CPU901は、ステップS306にて、M回の全の垂直DWTで5/3タップ垂直フィルタを使用するとして決定し、本処理を終える。
CPU901は、ステップS305にて、条件『R≧A』を満たさないと判定した場合、処理はステップS307に進む。
1乃至K回目までの垂直DWTでHaar型2/2タップフィルタ、K+1乃至M回目で整数型5/3タップフィルタを用いると仮定した場合に必要になるラインメモリのサイズAは次式で与えられる。
Figure 2017085320
CPU901は、上式を満たし、且つ、1以上M以下の範囲内の最小Kを求める。そして、CPU901はこの条件を満たすKが存在するかを、ステップS307にて判定する。Kを求めることができた場合、CPU901は処理をステップS308に進める。このステップS308では、CPU901は、1乃至K回目の垂直DWTではHaar型2/2タップフィルタを用い、K+1乃至M回目の垂直DWTでは整数型5/3タップフィルタを用いるとして決定する。
一方、ステップS307の条件を満たすKが存在しなかった場合、CPU901は処理をステップS309に進める。1乃至K回目までの垂直DWTはスキップし、K+1乃至M回目でHaar型2/2タップフィルタを用いると仮定した場合のラインメモリのサイズAは、次式で与えられる。
Figure 2017085320
CPU901は、上式を満たし、且つ、1以上M−1以下の範囲内の最小Kを求める。そして、CPU901はこの条件を満たすKが存在するかを、ステップS309にて判定する。なお、Kの取り得る最大値を「M−1」としたのは、最低でも垂直DWTを1回は行うこととするためである。Kを求めることができた場合、CPU901は処理をステップS310に進める。このステップS310にて、CPU901は、1乃至K−1回目の垂直DWTはスキップし、K乃至M回目の垂直DWTではHaar型2/2タップフィルタを用いるとして決定する。
また、ステップS309の条件を満たすKが存在しない場合、CPU901はステップS311にてエラー終了する。例えば、メモリ不足で正常な符号化処理を行えない旨のメッセージを表示し、アプリケーションプログラム906をアボートとする。
以上の結果、RAW画像データファイル907の符号化する際の、限られたメモリリソースを有効活用しながら、各垂直DWTで利用するフィルタを決定することが可能になる。なお、エラー以外では、RAM903には、ラインメモリが確保されることが約束されている。よってCPU901は、RAM903にラインメモリを確保する処理を行い、決定したフィルタを用いてフィルタ処理、量子化、エントロピー符号化を行い、符号化ファイル908を生成する。また、CPU901は、符号化ファイル908のファイルヘッダに、復号に必要な情報(RAW画像データのサイズ、1画素当たりのビット数、DWTの再帰実行回数、各DWTで用いたフィルタの種類を示す情報)を格納する。
以上説明したように、本変形例のごとく、アプリケーションプログラム906によって第1の実施形態と同等の処理を行うことが可能である。
[第2の実施形態]
上記第1の実施形態(及びその変形例)では、フィルタの走査方向や分解レベル毎にタップ数の異なるフィルタを適応的に選択した。この結果、DWT部103内のバッファメモリ107のうち、ラインメモリとして利用可能なメモリリソースを上回ることなくDWTが実現できた。
本第2の実施形態では、入力プレーンの色成分に応じたDWT処理を行う例を説明する。なお、装置構成は図1と同じであり、撮像装置に適用する例である。ただし、本第2の実施形態におけるプレーン形成部102は、4つの色プレーンを、同DWT部103に供給する。そして、DWT部103は、各色プレーンに対するDWTを並列に実行するものとする。また、本第2の実施形態におけるDWT部103が用いる垂直並びに水平方向のフィルタは、第1の実施形態と同様、整数型5/3タップフィルタと、Haar型2/2タップフィルタの2種類であるものとする。また、第1の実施形態と同様、ユーザが設定した撮影モード(解像度や1画素当たりのビット数)は、制御部110内のRAMに格納されているものとする。
以下、本第2の実施形態における制御部110における利用するフィルタの決定する処理を図11のフローチャートに従って説明する。
ステップS601において、制御部110は、RAMから、ユーザは設定した撮影モードに基づき、プレーン形成部202から出力される各色プレーンの水平方向サイズ、1画素当たりのビット数を判定する。そして、ステップS602にて、4つの色プレーンの、全レベルのDWTに整数型5/3タップフィルタを適用した場合に要するラインメモリサイズを算出する。整数型5/3タップフィルタを垂直DWTに適用する場合、最低でも4ライン分のラインバッファが必要である。
ステップS603にて、制御部110は、ステップS602で算出したラインメモリサイズが、バッファメモリ107からラインメモリに割り当て可能なメモリリソースよりも大きいかどうかを判定する。算出したラインメモリサイズがメモリリソースより大きい場合は、制御部110は処理をステップS605に処理を進める。また、算出したラインメモリサイズがメモリリソース以下である場合、制御部110は処理をステップS604に処理を進める。
ステップS604では、全ての色プレーンの全レベルの垂直DWTに、整数型5/3タップ型フィルタを用いるものとして決定する。
ステップS605に処理が進んだ場合、制御部110は、2プレーンの所定分解レベルまでのDWTにHaar型2/2タップフィルタを適用すると仮定した場合のラインメモリサイズを算出する。そして、制御部110は、ステップS606にて、ステップS605で算出したラインメモリサイズがメモリリソースよりも大きいかどうかを判定する。算出したラインメモリサイズがメモリリソースより大きい場合は、制御部110は処理をステップS608に処理を進める。また、算出したラインメモリのサイズがメモリリソース以下の場合、制御部110は処理をステップS607に進める。
ステップS607にて、制御部110は、R,Bプレーンの所定分解レベルのDWTに適用するフィルタ種類を、Haar型2/2タップ型フィルタに決定する。そして、制御部110、R,Bプレーンの所定分解レベルより高いレベルでは、整数型5/3タップフィルタを用いるとして決定する。更に、制御部110は、他の2つのG0、G1プレーンについては、全レベルで、整数型5/3タップフィルタを用いるとして決定する。

ステップS608にて、制御部110は、2プレーンについては、所定分解レベルまでは垂直DWTを行わない場合に要するラインメモリサイズを算出する。そして、ステップS609にて、制御部110は、ステップS608で算出したラインメモリサイズがメモリリソースよりも大きいかどうかを判定する。算出したラインメモリサイズがメモリリソースより大きい場合、制御部110は処理をステップS611に処理を進める。また、算出したラインメモリサイズがメモリリソース以下の場合、制御部110は処理をステップS610に処理を進める。
ステップS610にて、制御部110は、R,Bプレーンについては所定分解レベルの垂直DWTを実行せず、且つ、所定分解レベル以降の垂直DWTではHaar型2/2タップフィルタを用いるものとして決定する。また、制御部110は、G0,G1プレーンについては全レベルで整数型5/3タップフィルタを用いるとして決定する。
ステップS611にて、制御部110は、R,Bプレーンについては所定分解レベルの垂直DWTを実行せず、更にG0,G1プレーンについては所定分解レベルのDWTにHaar型2/2タップフィルタを適用する場合のラインメモリサイズを算出する。
そして、ステップS612にて、制御部110は、ステップS611で算出したラインメモリサイズがメモリリソースよりも大きいかどうかを判定する。算出したラインメモリサイズがメモリリソースより大きい場合、制御部110は処理をステップS614に処理を進める。また、算出したラインメモリサイズがメモリリソース以下の場合、制御部110は処理をステップS613に進める。
ステップS613にて、制御部110は、R,Bプレーンについては、所定分解レベルまでは垂直DWTは行なわず、所定分解レベルより高いレベルでは整数型5/3タップフィルタを用いるものとして決定する。また、制御部110は、G0,G1プレーンに対し、所定分解レベルの垂直DWTではHaar型2/2タップ型フィルタとし、しょいぇい分解レベルより高いレベルでは整数型5/3タップフィルタを用いるものとして決定する。
また、ステップS614にて、制御部110は、全ての色プレーンの所定分解レベルまでは垂直DWTを実行せず、所定分解レベルよりも高いレベルでの垂直DWTでは整数型5/3タップフィルタを用いるとして決定する。
ここで、第1の実施形態と同様に、具体的な数値例を用いて、入力画像によるラインメモリの増大抑制の効果検証を実施する。第2の実施形態では、DWTの再帰実行回数を1回、解像度を指定する撮影モードとして、QHD(960×540)、FHD(1920×1080)の2種の画像サイズが選択可能として説明する。
まず、QHDサイズの画像データに対して、全ての色成分に全ての色成分に整数型5/3タップフィルタを適用した場合に必要なメモリサイズは下記の通りである。
Rプレーンのラインメモリサイズ :480×4×10=19200[ビット]
G0プレーンのラインメモリサイズ:480×4×10=19200[ビット]
G1プレーンのラインメモリサイズ:480×4×10=19200[ビット]
Bプレーンのラインメモリサイズ :480×4×10=19200[ビット]
ラインメモリサイズ計:76800[ビット]
また、FHDサイズの画像データのDWTにおいて、全ての色成分に整数型5/3タップフィルタを適用した場合のラインメモリサイズは次の通りである。
Rプレーンのラインメモリサイズ : 960×4×10=38400[ビット]
G0プレーンのラインメモリサイズ:960×4×10=38400[ビット]
G1プレーンのラインメモリサイズ:960×4×10=38400[ビット]
Bプレーンのラインメモリサイズ : 960×4×10=38400[ビット]
ラインメモリサイズ計:153600[ビット]
上記の計算結果から、メモリリソースが仮に80000ビットであった場合、ユーザがQHDサイズを指定した場合には、全プレーンに対して整数型5/3タップフィルタを適用できることになる。一方、ユーザがFHDサイズを指定した場合、全ての色成分に整数型5/3タップフィルタを適用したDWTを実行する場合、ラインメモリサイズがメモリリソースを上回ることが分かる。従って、FHDサイズが指定された場合には、以下に示す処理に移ることになる。
続いて、FHDサイズの画像データのDWTにおいて、色成分がR又はBのDWTにHaar型2/2タップフィルタを適用した場合に要するラインメモリサイズを算出する。Rプレーンのラインメモリサイズ :960×1×10=9600[ビット]
G0プレーンのラインメモリサイズ:960×4×10=38400[ビット]
G1プレーンのラインメモリサイズ:960×4×10=38400[ビット]
Bプレーンのラインメモリサイズ :960×1×10=9600[ビット]
ラインメモリサイズ計:96000[ビット]
上で示した計算結果から、FHDサイズの画像データに対して、G成分に整数型5/3タップフィルタを適用し、R又はB成分にHaar型2/2タップフィルタを適用したDWTを実行する場合、ラインメモリサイズがメモリリソースを上回ることが分かる。
続いて、FHDサイズの画像データのDWTにおいて、色成分がR又はBの垂直DWTを実行しない場合に要するラインメモリサイズを算出する。
Rプレーンのラインメモリサイズ :0[ビット]
G0プレーンのラインメモリサイズ:960×4×10=38400[ビット]
G1プレーンのラインメモリサイズ:960×4×10=38400[ビット]
Bプレーンのラインメモリサイズ :0[ビット]
ラインメモリサイズ計:76800[ビット]
上で示した計算結果から、FHDサイズの画像データに対して、R又はB成分の垂直DWTを実行しない場合、ラインメモリサイズはメモリリソース以下となることが分かる。従って、本第2の実施形態では、FHDサイズのDWTの実行方法は、G成分に整数型5/3タップフィルタを適用したDWTを実行し、R又はB成分の垂直DWTを実行しないと方式に決定する。
このように、第2の実施形態での撮像装置におけるDWTでは、DWT部103内のバッファメモリ107内のラインメモリに割り当て可能なメモリリーソースを上回らないように、色成分Gに対してはフィルタタップ数の多いフィルタを優先的に適用する。一方、色成分がRやB成分のDWTに対しては、フィルタタップ数の少ないフィルタを優先的に適用するように動作する。これは、人間の眼の、輝度色差に対する感度は、輝度成分の寄与度が高く、色差成分の寄与度が小さいという視感度特性を利用したもので、とりわけ、緑成分の輝度情報が最も敏感である。一般的なFIR型フィルタでは、フィルタタップ数が多いと急峻な周波数特性を持ち、周波数の分解性能が高いことは既知である。従って、緑成分に対してフィルタタップ数の多いフィルタを適用し、赤成分や青成分に対してフィルタタップ数の少ないフィルタを適用させることで、主観画質の大幅な劣化を抑制することが可能である。
なお、先に説明した第1の実施形態の変形例と同様、上記第2の実施形態と等価の処理をアプリケーションプログラムでもって実現することも可能である。この場合、各プレーンのDWTは、それぞれスレッドとして並列実行すれば良い。
(その他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
101…撮像部、102…プレーン形成部、103…DWT部、104…エントロピー符号化部、106…出力部、107…バッファメモリ、110…制御部、111…操作部

Claims (9)

  1. 画像データを離散ウェーブレット変換し、符号化する画像処理装置であって、
    離散ウェーブレット変換用の、第1のタップ数の第1のフィルタ、及び、前記第1のタップ数より少ないタップ数の第2のフィルタと、
    離散ウェーブレット変換を行う対象のデータを、一時的に記憶するためのメモリと、
    符号化対象の画像データのサイズ、ウェーブレット変換の再帰実行回数、並びに、前記メモリの容量に基づき、前記再帰実行回数における各回にて、前記第1のフィルタ、前記第2のフィルタのいずれを用いるか、或いは、フィルタを用いた処理をスキップするかを決定する決定手段と
    該決定手段による決定に従ったフィルタ処理を行い、複数のサブバンドの変換係数データを生成するウェーブレット変換手段と
    を有することを特徴とする画像処理装置。
  2. 前記画像データのサイズには、水平方向の画素数と、1画素当たりのビット数が含まれることを特徴とする請求項1に記載の画像処理装置。
  3. 更に、ベイヤ配列のRAW画像データを入力し、R成分の画素のみで構成されるRプレーン、B成分の画素のみで構成されるBプレーン、G0成分の画素のみで構成されるG0プレーン、G1成分の画素のみで構成されるG1プレーンを形成するプレーン形成手段を有し、
    各プレーンを符号化対象の画像データとすることを特徴とする請求項1又は2に記載の画像処理装置。
  4. 前記ウェーブレット変換手段は、
    垂直方向に並ぶデータをウェーブレット変換し、変換係数データを生成する垂直ウェーブレット変換手段と、
    当該垂直ウェーブレット変換手段で得られた変換係数データで構成される、水平方向に並ぶ変換係数データに対してウェーブレット変換することで、サブバンドの変換係数データを生成する水平ウェーブレット変換手段と、
    を含み、
    前記決定手段は、前記再帰実行回数における各回において、前記垂直ウェーブレット変換手段にて、前記第1のフィルタ、第2のフィルタのいずれを用いるか、或いは、フィルタを用いた処理をスキップするかを決定する
    ことを特徴とする請求項1乃至3のいずれか1項に記載の画像処理装置。
  5. 前記決定手段は、
    (1)前記再帰実行回数における全ての回にて、前記第1のフィルタを用いる、
    (2)前記再帰実行回数における所定回までは前記第2のフィルタを用い、前記所定回以降では前記第1のフィルタを用いる、
    (3)前記再帰実行回数における全ての回にて、前記第2のフィルタを用いる、
    (4)前記再帰実行回数における所定回まではフィルタ処理をスキップし、前記所定回以降では前記第2のフィルタを用いる
    の優先順位の1つを決定することを特徴とする請求項4に記載の画像処理装置。
  6. 前記ウェーブレット変換手段は、前記Rプレーン、Bプレーン、G0プレーン、G1プレーンを並列に変換し、
    前記決定手段は、前記メモリの容量に基づき、
    (1)前記全ての回で、前記第1のフィルタを用いる
    (2)前記Rプレーン及び前記Bプレーンについては所定回まで前記第2のフィルタを用い、前記Rプレーン及び前記Bプレーンの前記所定回以降、並びに、前記G0プレーン及びG1プレーンについては全ての回で前記第1のフィルタを用いる、
    (3)前記Rプレーン及び前記Bプレーンについては所定回までフィルタ処理をスキップし、前記Rプレーン及び前記Bプレーンの前記所定回以降、並びに、前記G0プレーン及びG1プレーンについては全ての回で前記第1のフィルタを用いる、
    (4)所定回まで、前記Rプレーン及び前記Bプレーンについてのフィルタ処理をスキップし、前記G0プレーン及び前記G1プレーンについては前記第2のフィルタを用い、前記所定回以降では各プレーンについて前記第1のフィルタを用いる、
    (5)所定回まで、全てのプレーンのフィルタ処理をスキップし、前記所定回以降では全プレーンについて前記第1のフィルタを用いる、
    の優先順位の1つを決定することを特徴とする請求項4に記載の画像処理装置。
  7. 離散ウェーブレット変換用の、第1のタップ数の第1のフィルタ、及び、前記第1のタップ数より少ないタップ数の第2のフィルタと、離散ウェーブレット変換を行う対象のデータを、一時的に記憶するためのメモリとを有し、画像を符号化する画像処理装置の制御方法であって、
    符号化対象の画像データのサイズ、ウェーブレット変換の再帰実行回数、並びに、前記メモリの容量に基づき、前記再帰実行回数における各回にて、前記第1のフィルタ、前記第2のフィルタのいずれを用いるか、或いは、フィルタを用いた処理をスキップするかを決定する決定工程と
    該決定工程による決定に従ったフィルタ処理を行い、複数のサブバンドの変換係数データを生成するウェーブレット変換工程と
    を有することを特徴とする画像処理装置の制御方法。
  8. コンピュータに読み込ませ実行させることで、前記コンピュータを、請求項1乃至6のいずれか1項に記載の画像処理装置として機能させるためのプログラム。
  9. 請求項8に記載のプログラムを格納した、コンピュータが読み込み可能な記憶媒体。
JP2015211104A 2015-10-27 2015-10-27 画像処理装置及びその制御方法、並びに、コンピュータプログラム及び記憶媒体 Pending JP2017085320A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015211104A JP2017085320A (ja) 2015-10-27 2015-10-27 画像処理装置及びその制御方法、並びに、コンピュータプログラム及び記憶媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015211104A JP2017085320A (ja) 2015-10-27 2015-10-27 画像処理装置及びその制御方法、並びに、コンピュータプログラム及び記憶媒体

Publications (1)

Publication Number Publication Date
JP2017085320A true JP2017085320A (ja) 2017-05-18

Family

ID=58711258

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015211104A Pending JP2017085320A (ja) 2015-10-27 2015-10-27 画像処理装置及びその制御方法、並びに、コンピュータプログラム及び記憶媒体

Country Status (1)

Country Link
JP (1) JP2017085320A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110827317A (zh) * 2019-11-04 2020-02-21 西安邮电大学 一种基于fpga的四目运动目标检测与识别设备及方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110827317A (zh) * 2019-11-04 2020-02-21 西安邮电大学 一种基于fpga的四目运动目标检测与识别设备及方法
CN110827317B (zh) * 2019-11-04 2023-05-12 西安邮电大学 一种基于fpga的四目运动目标检测与识别设备及方法

Similar Documents

Publication Publication Date Title
US7330596B2 (en) Image decoding technique for suppressing tile boundary distortion
JP6722995B2 (ja) 符号化方法及び符号化装置、撮像装置及びプログラム
JP6663201B2 (ja) 画像符号化装置及びその制御方法、並びに、コンピュータプログラム及び記憶媒体
JP2006115459A (ja) Svcの圧縮率を高めるシステムおよび方法
JP2021077942A (ja) 符号化装置および符号化方法、復号装置および復号方法
JP2011130112A (ja) 表示支援装置及び撮像装置
TWI539794B (zh) 影像編碼系統及其方法
US9576344B2 (en) Noise removal system, noise removal method, and program
JP2017216630A (ja) 画像符号化装置及びその制御方法
JP2020102704A (ja) 画像符号化装置及びその制御方法及びプログラム
US8787686B2 (en) Image processing device and image processing method
JP2017085320A (ja) 画像処理装置及びその制御方法、並びに、コンピュータプログラム及び記憶媒体
US20230133895A1 (en) Image encoding apparatus and method for controlling the same and non-transitory computer-readable storage medium
JP2006246351A (ja) 画像符号化装置および画像復号化装置
JP6849359B2 (ja) 符号化装置、符号化装置の制御方法、及びプログラム
JP2005094212A (ja) 画像処理装置及び方法、並びにコンピュータプログラム及びコンピュータ可読記憶媒体
JP6632752B2 (ja) 画像符号化装置及び方法及びプログラム及び記憶媒体
JP6465570B2 (ja) 撮像装置、撮像装置の制御方法
JP2007282006A (ja) 画像信号処理装置
JP2013187692A (ja) 画像処理装置及び画像処理方法
JP2016021600A (ja) 画像符号化装置、画像処理装置、画像送受信システム、画像符号化方法及び制御プログラム
KR101467849B1 (ko) 갱신-예측 구조 리프팅 기반 웨이블렛 변환 장치와 방법, 이를 위한 적응적 예측 장치와 방법, 및 이를 위한 기록 매체
JP6512927B2 (ja) 画像符号化装置及びその制御方法
JP6497981B2 (ja) 画像符号化装置及びその制御方法
JP2019110405A (ja) 画像符号化装置及びその制御方法及びプログラム