(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-02
(45)【発行日】2024-04-10
(54)【発明の名称】画像符号化装置及びその制御方法及びプログラム
(51)【国際特許分類】
H04N 19/127 20140101AFI20240403BHJP
H04N 19/102 20140101ALI20240403BHJP
H04N 19/115 20140101ALI20240403BHJP
H04N 19/63 20140101ALI20240403BHJP
H04N 19/136 20140101ALI20240403BHJP
H04N 19/156 20140101ALI20240403BHJP
【FI】
H04N19/127
H04N19/102
H04N19/115
H04N19/63
H04N19/136
H04N19/156
(21)【出願番号】P 2019195527
(22)【出願日】2019-10-28
【審査請求日】2022-10-17
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】村田 貴史
(72)【発明者】
【氏名】望月 成記
【審査官】間宮 嘉誉
(56)【参考文献】
【文献】特開2017-85545(JP,A)
【文献】特開2006-287485(JP,A)
【文献】特開2017-85319(JP,A)
【文献】特表2014-519246(JP,A)
【文献】特開2013-198161(JP,A)
【文献】特開2017-216630(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 7/12
H04N 19/00-19/98
(57)【特許請求の範囲】
【請求項1】
RAW画像データを符号化する画像符号化装置であって、
符号化データを一時的に記憶するためのバッファメモリと、
RAW画像データを輝度成分で構成される輝度プレーンと、輝度以外の複数の種類の色差成分のプレーンに変換するプレーン変換手段と、
前記プレーン変換手段で得られた各プレーンに対してウェーブレット変換するウェーブレット変換手段と、
前記ウェーブレット変換手段で生成された各サブバンドの係数を量子化、符号化し、得られた符号化データを前記バッファメモリに格納する符号化手段と、
前記バッファメモリに格納された符号化データを記録媒体に記録する記録手段と、
前記バッファメモリに確保するプレーン毎のバッファサイズの比率を、前記RAW画像データの圧縮率に応じて制御する制御手段と
を有
し、
前記制御手段は、前記バッファメモリにおける、各プレーンの使用率を算出する使用率算出手段を含み、
算出して得た着目フレームの前フレームにおける各プレーンのバッファ使用率に応じて、着目フレームの符号量制御する単位を変更することを特徴とする画像符号化装置。
【請求項2】
前記制御手段は、前記RAW画像データの圧縮率が高いほど、前記複数の種類の色差プレーンよりも前記輝度プレーンのバッファサイズの比率を高くすることを特徴とする請求項1に記載の画像符号化装置。
【請求項3】
前記制御手段は、前記RAW画像データの圧縮率が第1の圧縮率よりも圧縮率が高い第2の圧縮率の場合は、前記第1の圧縮率のときよりも前記複数の種類の色差プレーンに対する前記輝度プレーンのバッファサイズの比率を高くすることを特徴とする請求項1に記載の画像符号化装置。
【請求項4】
ユーザの操作に応じて前記RAW画像データの圧縮率を設定する設定手段を更に有することを特徴とする請求項1乃至3のいずれか1項に記載の画像符号化装置。
【請求項5】
前記制御手段は、
前フレームにおける全てのプレーンにおいてバッファの使用率が所定値未満の場合、前記着目フレームの目標符号量を定めてフレーム単位に符号量制御を行い、
前フレームにおける一つ以上のプレーンのバッファの使用率が所定値以上になった場合、プレーン単位の目標符号量を定めてプレーン単位に符号量制御を行う
ことを特徴とする請求項
1に記載の画像符号化装置。
【請求項6】
前記制御手段は、フレームレートに応じた圧縮率に従って、各プレーンに対応するバッファサイズの比率を制御することを特徴とする請求項1乃至
5のいずれか1項に記載の画像符号化装置。
【請求項7】
前記制御手段は、1つのプレーンから生成される各サブバンドのバッファサイズ
の比率を固定とすることを特徴とする請求項1乃至
6のいずれか1項に記載の画像符号化装置。
【請求項8】
符号化データを一時的に記憶するためのバッファメモリを有し、RAW画像データを符号化する画像符号化装置の制御方法であって、
RAW画像データを輝度成分で構成される輝度プレーンと、輝度以外の複数の種類の色差成分のプレーンに変換するプレーン変換工程と、
前記プレーン変換工程で得られた各プレーンに対してウェーブレット変換するウェーブレット変換工程と、
前記ウェーブレット変換工程で生成された各サブバンドの係数を量子化、符号化し、得られた符号化データを前記バッファメモリに格納する符号化工程と、
前記バッファメモリに格納された符号化データを記録媒体に記録する記録工程と、
前記バッファメモリに確保するプレーン毎のバッファサイズの比率を、前記RAW画像データの圧縮率に応じて制御する制御工程と
を有
し、
前記制御工程は、前記バッファメモリにおける、各プレーンの使用率を算出する使用率算出工程を含み、
算出して得た着目フレームの前フレームにおける各プレーンのバッファ使用率に応じて、着目フレームの符号量制御する単位を変更することを特徴とする画像符号化装置の制御方法。
【請求項9】
コンピュータが読み込み実行することで、前記コンピュータに、請求項
8に記載の方法の各工程を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像データの符号化技術に関するものである。
【背景技術】
【0002】
現在、デジタルビデオカメラ等、動画像を記録するデジタルの撮像装置が普及しており、近年では、RAW画像を記録する方式が、静止画のみならず動画にも適用されている。RAW(生)画像は記録に必要なデータ量が膨大になるものの、オリジナル画像に対する補正や劣化を最低限に抑えることができ、撮影後の画像編集の自由度が高い。そのため、RAW画像記録は、撮像装置を使用する者の中でも特に上級者によって好んで使われている。
【0003】
RAW画像の動画記録時は、所定の記録媒体に一定時間の動画像が記録できるよう、データ量を圧縮する圧縮符号化が必要となる。RAW画像は、R,G,B各色成分の画素がモザイク状に配置されたベイヤ配列の画像である。ベイヤ配列における隣接する画素は、異なる色成分となっているので、隣接画素間の相関が低い。故に、そのまま符号化しても高い圧縮効率を得ることは難しい。そこで、RAW画像から同じ色成分の画素のみを抜き出して複数のプレーンを生成する。そして、プレーンごとに符号化を行うことで、プレーン内の画素間の相関を高めて圧縮効率を向上させる、プレーン変換技術が圧縮符号化の手法の一つとして一般的に利用される。
【0004】
また、従来の代表的な圧縮符号化方式として、H.264(H.264/MPEG-4 Part10:Advanced Video Coding)が知られている。この圧縮符号化方式では、1フレーム内の所定画素数からなるブロック毎に、動画像が有する時間冗長性と空間冗長性を利用したデータ量の圧縮が行われる。
【0005】
上記H.264では、時間冗長性に対する動き検出及び動き補償、空間冗長性に対する周波数変換として離散コサイン変換(Discrete Cosine Transform:DCT)、更に量子化やエントロピー符号化といった技術を組み合わせることで圧縮符号化を実現している。ただし、ある程度以上へ圧縮率を上げると、DCT変換特有のブロック歪みが顕著になり、主観的に画像劣化が目立つようになる。
【0006】
そこで、水平及び垂直方向に低域と高域フィルタリングをそれぞれ適用し、サブバンドと呼ばれる周波数帯に分解する離散ウェーブレット変換(Discrete Wavelet Transform:DWT)を用いるサブバンド符号化技術がJPEG2000方式等で採用されている。このサブバンド符号化は、DCTを用いた符号化技術に比べ、ブロック歪みが生じにくく、高圧縮時の圧縮特性が良いといった特徴を有する。
【0007】
例えば、特許文献1に記載の技術は、RAW画像データから輝度成分で構成される輝度プレーンと、輝度以外の3プレーンに変換する。その後、各プレーンの信号を更にDWT変換を用いて周波数成分を分離し、
図1に示すような複数のサブバンドを生成した後、サブバンドごとに符号化をすることで、効率的にRAW画像データを圧縮している。
【0008】
図1は、ウェーブレット変換を2回実行した場合に生成されるサブバンドを示している。ウェーブレット変換を1回行うと、{LL,HL,LH,HH}の4つのサブバンドが生成される。ここで、Lが低域、Hが高域を表す。また、アルファベット2文字の1つ目は水平方向、2つ目は垂直方向の帯域に対応する。そして、サブバンドの先頭の数字は分解レベルを表す。例えば、1HLは、水平方向が高域成分、垂直方向が低域成分の分解レベル“1”のサブバンド(の変換係数)を表す。なお、ウェーブレット変換の回数に制限はない。また、2回目以降のウェーブレット変換は、直前のウェーブレット変換で得られたサブバンドLLに対して再帰的に行うことになる。それ故、設定した回数のウェーブレット変換を行った際のサブバンドLLは一つしか存在しない。
図1は、ウェーブレット変換を2回行った例であるので、7つのサブバンドが生成されることになる。
【0009】
上記の技術などを用いてRAW画像データを圧縮してデータサイズを小さくすることで、動画記録時にはより長い時間記録することが可能になる。
【先行技術文献】
【特許文献】
【0010】
【発明の概要】
【発明が解決しようとする課題】
【0011】
しかしながら、特許文献1に記載されるようにRAW画像データから輝度プレーンと輝度以外のプレーンとを生成してサブバンド符号化を利用した圧縮の場合、各プレーンへの符号化バッファの割り当てに留意する必要がある。
【0012】
ここで、動画記録時の符号化データのバッファメモリへの格納について、
図2(a)~’c)を参照して説明する。
図2(a)は、動画記録時に4フレーム分のベイヤ配列のRAW画像データを取得し、プレーン変換、ウェーブレット変換、エントロピー符号化して生成した符号化データをバッファメモリ上に確保されたプレーン毎の符号化バッファに格納する例を示している。
【0013】
図2(b)はRAW画像データから、R,G1,G2,Bプレーンを分離した場合を示し、
図2(c)はRAW画像データを、Y(輝度)と輝度以外の3色差であるU,V,GHへの変換処理を介在させて得た、Y、U,V,GHプレーンの場合を示している。また、
図2(b)(i)、
図2(c)(i)それぞれは低圧縮時のプレーン毎の符号化バッファを、
図2(b)(ii)、
図2(c)(ii)は中圧縮時のプレーン毎の符号化バッファを、
図2(b)(iii)、
図2(c)(iii)は高圧縮時のプレーン毎の符号化バッファを示している。ここでバッファに格納されているデータの模様は、同図(a)のプレーンの模様に応じたものであると理解されたい。
【0014】
図2(b)に示すR,G1,G2,Bプレーンの場合は、圧縮率に依らず、同じ比率の符号化バッファにすることで効率良く符号化バッファを使用することができる。一方で、
図2(c)に示す後述するY,U,V,GHプレーンの場合は、輝度のYプレーンが他の色差プレーンよりも画質に支配的であるので、圧縮率が高いほど輝度プレーンは輝度以外のプレーンと比べて符号量を多く割り当てて符号化が行われる。このため、圧縮率依らず各プレーンで同じ比率の符号化バッファを割り当てると、輝度プレーン以外のプレーンには冗長の符号化バッファを与えることになり、バッファメモリが増大することで回路規模が大きくなってしまう。
【0015】
本発明は上記の問題点に鑑み、圧縮率に応じた効率的な符号化バッファの使用を行い、回路規模を削減することを可能とする画像符号化装置の提供を目的とする。
【課題を解決するための手段】
【0016】
この課題を解決するため、例えば本発明の画像符号化装置は以下の構成を備える。すなわち、
RAW画像データを符号化する画像符号化装置であって、
符号化データを一時的に記憶するためのバッファメモリと、
RAW画像データを輝度成分で構成される輝度プレーンと、輝度以外の複数の種類の色差成分のプレーンに変換するプレーン変換手段と、
前記プレーン変換手段で得られた各プレーンに対してウェーブレット変換するウェーブレット変換手段と、
前記ウェーブレット変換手段で生成された各サブバンドの係数を量子化、符号化し、得られた符号化データを前記バッファメモリに格納する符号化手段と、
前記バッファメモリに格納された符号化データを記録媒体に記録する記録手段と、
前記バッファメモリに確保するプレーン毎のバッファサイズの比率を、前記RAW画像データの圧縮率に応じて制御する制御手段と
を有し、
前記制御手段は、前記バッファメモリにおける、各プレーンの使用率を算出する使用率算出手段を含み、
算出して得た着目フレームの前フレームにおける各プレーンのバッファ使用率に応じて、着目フレームの符号量制御する単位を変更する。
【発明の効果】
【0017】
本発明によれば、冗長な符号化バッファを減らし、回路規模の増大を抑えることができる。
【図面の簡単な説明】
【0018】
【
図1】ウェーブレット変換によるサブバンド生成の例を示す図。
【
図2】符号化バッファと符号化データの格納状態を示す図。
【
図3】第1の実施形態における画像符号化装置のブロック構成図。
【
図4】第1の実施形態における符号化バッファの格納状態を示す図。
【
図5】第1の実施形態における画像符号化装置の処理手順を示すフローチャート。
【
図6】第2の実施形態における画像符号化装置のブロック構成図。
【
図7】全プレーンにおける符号量が閾値を超過していない場合の格納状態を示す図。
【
図8】プレーンにおける符号量が閾値を超過した場合の格納状態を示す図。
【
図9】各プレーンにおける対応ブロックラインの関係を示す図。
【
図10】第2の実施形態における目標符号量算出部の処理手順を示すフローチャート。
【
図11】第2の実施形態における目標符号量算出部の処理手順を示すフローチャート。
【
図12】第2の実施形態における撮像装置の動作を示すフローチャート。
【
図13】第3の実施形態における撮像装置の動作を示すフローチャート。
【発明を実施するための形態】
【0019】
以下、添付図面を参照して実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【0020】
[第1の実施形態]
図3は、第1の実施形態の画像符号化装置を、撮像装置300に適用した場合の構成を示している。
【0021】
撮像装置300は、CPU301、撮像部302、プレーン変換部303、ウェーブレット変換部304、量子化部305、エントロピー符号化部306、メモリI/F 307、バッファメモリ308、記録処理部309、記録媒体310、及び、ユーザインタフェース350を有する。ユーザインタフェース350は、ユーザに撮像画像や各種メニューを表示するための表示デバイス、並びに、ユーザからの各種指示入力(圧縮率の設定も含まれる)を受け付けるスイッチやボタン、タッチパネル等の操作部で構成される。
【0022】
CPU301は、当該CPUが実行する制御プログラムを格納したり、ワークエリアとして使用するためのメモリを持ち、撮像装置300の全体の処理を制御する。
【0023】
撮像部302は、光情報を電気信号に変換するCCDイメージセンサ又は、CMOSイメージセンサなどの撮像素子を含む。撮像素子の並びはベイヤ配列となっているものとする。撮像部302は、イメージセンサで得た電気信号をデジタル信号に変換して得たベイヤ配列の画像データを、RAW画像データとして、プレーン変換部303に送る。
【0024】
なお、ベイヤ配列の画像における、隣接する2×2画素に着目したとき、その内訳は、1個のR(赤)成分の画素、1個のB(青)成分の画素、そして対角位置関係にある2個のG(緑)成分の画素で構成される。G成分の画素は2つあるので、便宜的に一方をG1画素,他方をG2画素と表現している。ベイヤ配列とは、この2×2画素のパターンが、繰り返し並んだ配列を言う。
【0025】
プレーン変換部303は、撮像部302から送られたRAW画像データから、それぞれが単一成分で構成される4つのプレーンを分離し、それらを予め設定された順番にウェーブレット変換部304に送る。例えば、4つのプレーンは、R成分の画素のみで構成されるRプレーン、G1成分の画素のみで構成されるG1プレーン、G2成分の画素のみで構成されるG2プレーン、および、B成分のみの画素で構成されるBプレーンである。また、プレーン変換部303は、例えば以下の式(1)~(4)を用いて、RAW画像データから、1つのY(輝度成分)プレーンと、3つの色差成分のプレーン(Uプレーン、Vプレーン、及びGHプレーン)を導出しても良い。
Y=(R+B+G1+G2)/4 …(1)
U=B-(G1+G2)/2 …(2)
V=R-(G1+G2)/2 …(3)
GH=G1-G2 …(4)
実施形態におけるプレーン変換部303が、RAW画像データをY,U,V,GHプレーンに変換するものとして説明を続ける。なお、プレーン変換部303は、複数の計算式を実装しておき、CPU301で使用する計算式を選択するようにしても良い。また、実施形態では、色差の種類として、U,V,GHを例にするが、これに限らず、他の色差を用いても良い。
【0026】
ウェーブレット変換部304は、プレーン変換部303により入力した各プレーン(それぞれを単一成分の画像データと見ることができる)をウェーブレット変換し、複数のサブバンドを生成する。ウェーブレット変換部304が行うウェーブレット変換の回数(分解数)は、CPU301によって設定されるものとする。また、ウェーブレット変換部304は、各サブバンドで1ライン分の変換係数が生成される度に、各サブバンドの1ライン分の変換係数を量子化部305へ出力する。
【0027】
量子化部305は、量子化パラメータQpを利用し、ウェーブレット変換部304より入力した各プレーンの変換係数に対して、1係数単位に量子化する。なお、量子化パラメータQpは、その値が大きいほど、量子化後の値が小さくなって符号量の削減が可能になるものの、画質劣化が顕著になるパラメータである。また、各プレーンの変換係数の量子化はプレーン毎に行っても、全プレーンについて並列して行っても良い。
【0028】
エントロピー符号化部306は、量子化部305で量子化された各サブバンドに対してハフマン符号や算術符号等を用いたエントロピー符号化を行い、各サブバンドの符号化データを生成する。また、エントロピー符号化部306は、CPU301によって指定されたアドレスに基づき、各サブバンドの符号化データをバッファメモリ308に一時的に記憶する。なお、プレーンまたはサブバンド毎の符号化バッファの大きさはCPU301によって設定される。
【0029】
メモリI/F307は、エントロピー符号化部306を含めた、各処理部からのバッファメモリ・アクセス要求を調停し、バッファメモリ308に対する読み出し、並びに、書き込みの制御を行う。
【0030】
バッファメモリ308は、エントロピー符号化部306から送られた各サブバンドの符号化データを含めた、各種データを格納するための揮発性メモリで構成される記憶領域である。
【0031】
記録処理部309は、CPU301からの記録命令に従い、バッファメモリ308へ格納された符号化データを記録媒体310へファイルとして記録する。記録媒体310は、不揮発性メモリで構成される記録メディアである。なお、記録媒体310は、典型的には、SDカードに代表される脱着可能な記録媒体とする。
【0032】
続いて、CPU301による、圧縮率に応じたバッファメモリ308上の符号化バッファの割り当てについて
図4を参照して説明する。
【0033】
図4(a)は、連続する4つのRAW画像のフレームを示している。同図(b)はRAW画像からY,U,V,GHプレーンを分離し、それぞれについて同じ比率でバッファサイズを割り当てた際の符号化データの蓄積状態を示している。同図(c)はRAW画像からY,U,V,GHプレーンを分離し、それぞれについて符号量に応じた比率でバッファサイズを割り当てた際の符号化データの蓄積状態を示している。なお、バッファに格納される符号化データと、4つのRAW画像との対応を分かり易くするため、それぞれを対応する模様で表現している。
【0034】
また、実施形態では、バッファに連続する4プレーン分の符号化データが格納された場合、もしくは、符号化データのバッファへの格納された割合が設定された閾値に到達したプレーンが1つでもあれば、全プレーンの符号化データのファイルへの記録処理を行うものとして説明する。
【0035】
本実施形態では、予め大量の画像データから圧縮率毎に統計的に各プレーンの符号量比率を求めておき、以下の符号量比率が取得できたと仮定する。なお、圧縮率に応じた各プレーンの符号量比率はこれに限るものではないが、ユーザはユーザインタフェース150を操作して、3段階の圧縮率(符号量比率)の中の1つを選択するものとする。なお、圧縮率が高いほど、符号量が少なくなることを意味することに注意されたい。
【0036】
<統計的に求めた圧縮率毎の各プレーンの符号量比率>
・低圧縮時の場合
Y:U:V:GH = 1:1:1:1 …(5)
・中圧縮時の場合
Y:U:V:GH = 1.2:1:1:1 …(6)
・高圧縮時の場合
Y:U:V:GH = 1.4:1:1:1 …(7)
図4(b)は、圧縮率に依らずプレーン間の符号化バッファのサイズ比率を同一として符号化を行い、そのときの符号量が統計データに基づくプレーン毎の符号量比率になったと仮定した場合を示している。このとき、
図4(b)で示すように圧縮率が高くなるほどY(輝度)プレーンの符号化バッファ使用率が、輝度以外の色差プレーンと比較して高くなり、輝度以外のプレーンでは符号化バッファを冗長に確保してしまっていることを示している。
【0037】
そこで、本実施形態では
図4(c)に示すように圧縮率に応じて、バッファメモリ308に確保する各プレーンの符号化バッファ、サイズの比率を変更する。ここでは、以下のように符号化バッファ比率を割り当てるとする。
【0038】
<圧縮率に応じた各プレーンの符号化バッファ比率の割り当て>
・低圧縮時の場合
Y:U:V:GH = 1:1:1:1 …(8)
・中圧縮時の場合
Y:U:V:GH = 1.2:1:1:1 …(9)
・高圧縮時の場合
Y:U:V:GH = 1.4:1:1:1 …(10)
上記のように各圧縮率で統計に基づいた符号化バッファ比率にすることによって、
図4(b)のときと比較して、
図4(c)の場合、輝度以外のプレーンで冗長となっていた符号化バッファのサイズを削減することが可能となる。
【0039】
ここまでは各プレーンの符号化バッファの割り当てを説明した。次に、プレーン分離後の4プレーン中の1プレーンに着目し、その着目プレーンから得た各サブバンドへの割り当て比率について説明する。
【0040】
本実施形態においてサブバンドごとの符号化バッファは、各サブバンドの面積比に基づいて割り当てるものとする。
【0041】
離散ウェーブレット変換によるサブバンド分割は、分解レベルが1レベル上がるごとに水平および垂直の係数の個数が半分になるため、面積としては4分の1となる。
【0042】
そのため、サブバンド{1HL,1LH,1HH}の各々のサイズに対し、サブバンド{2LL、2HL,2LH,2HH}の各々のサイズは4分の1の関係となる。以上より、各サブバンドへの符号化バッファの割り当ては、下記のように行われる。
【0043】
<各サブバンドの符号化バッファ比率>
2LL:2HL:2LH:2HH:1HL:1LH:1HH =1:1:1:1:4:4:4 …(11)
なお、各サブバンドのバッファメモリの割り当ては、圧縮率に依らず一定とする。また、ここでは4プレーン中の1プレーンについて説明したが、他のプレーンに関しても同様な割り当てを行う。
【0044】
続いて、本第1の実施形態である画像符号化装置の動作の詳細を
図5に示すフローチャートを基づき説明する。なお、ここでの動作として、符号化したRAW画像データのバッファメモリ308上のバッファメモリへの格納と、すでに符号化バッファに格納されている符号化されたRAW画像データの記録媒体310への記録が同時に実行されているものとする。
【0045】
まず、S501にて、CPU301は、ユーザインタフェース350により設定された、撮影に係る圧縮率のモードを判定する。続いて、S502にて、CPU301は、判定した圧縮率の設定に基づき、バッファメモリ308における、プレーン毎の符号化バッファの割り当てを決定する。
【0046】
次に、S503にて、CPU301は、プレーン毎に割り当てられた符号化バッファサイズを各サブバンドの面積比に基づいて、各サブバンドのバッファサイズを割り当て、これらを、エントロピー符号化部306の出力先として設定する。
【0047】
次に、S504にて、CPU301は、撮像部302の駆動を開始する。そして、CPU301は、プレーン変換部303、ウェーブレット変換部304、量子化部305、エントロピー符号化部306の駆動も開始し、複数のサブバンドごとの符号化データを生成し、バッファメモリ308に書き込みを行わせる。
【0048】
次に、S505にて、CPU301は、1フレームの符号化を完了させる。
【0049】
そして、S506にて、CPU301は、ユーザから記録の停止指示を受けたか否か、受けていれば最終フレームのバッファメモリ内の符号化データの記録媒体310への記録が完了しているか否かを判定し、最終フレームの記録が完了していれば本処理を終了する。また、記録が継続している場合、CPU301は、処理をS504に戻し、のフレームの符号化を行う。
【0050】
以上、本第1の実施形態によれば、圧縮率に起因するプレーン間における発生符号量の偏りに対応でき、効率良くバッファメモリを使用することで、回路規模を増加させることなく符号化が可能となる。
【0051】
なお、上記第1の実施形態の画像符号化装置において、圧縮率毎に各プレーンの符号化比率を変更したが、圧縮率に限らずフレームレートに応じて符号化バッファの比率を変更してもよい。つまり、フレームレートが高くなるほど、圧縮率を高くするという関係を用いて、符号化バッファ比率を決定する。また、上記では、ユーザが選択できる圧縮率の段数を“3”として説明したが、この数に特に制限はない。
【0052】
また、実際に発生する符号化データサイズに基づいて各サブバンドへの割り当てを実施していないため、バッファメモリのサイズとしてはマージンを持つことが望ましい。このときのマージンに関しても各プレーンで符号化バッファ比率に応じた領域を確保する。
【0053】
[第2の実施形態]
上記第1の実施形態では、圧縮率に応じてプレーン間の符号量比率が異なることを鑑みて、圧縮率に応じてプレーン間の符号化バッファ比率を変更した。本第2の実施形態では、上記第1の実施形態と比較して、圧縮率に応じて各プレーンの符号化バッファ比率を変更してもなおプレーン間で符号量に偏りが生じる場合に対処する、符号量制御に関して説明する。
【0054】
本第2の実施形態でも、画像符号化装置として、撮像装置に適用した例を説明する。
図6は、第2の実施形態における撮像装置600のブロック構成図である。
【0055】
撮像装置600は、CPU 601、撮像部602、プレーン変換部603、ウェーブレット変換部604、量子化部605、エントロピー符号化部606、バッファ使用率算出部607、メモリI/F 608、バッファメモリ609、記録処理部610、記録媒体611、符号量制御部612、発生符号量保持部613、差分算出部614、目標符号量算出部615、量子化制御部616、及び、ユーザインタフェース650を有する。
【0056】
ここで、本第2の実施形態の装置構成における第1の実施形態と異なる点を説明する。バッファ使用率算出部607は、1フレームの符号化完了後、バッファメモリ609における各プレーンの符号化バッファの使用率を算出する。その際、算出した各プレーンの符号化バッファ使用率が、予め設定した閾値(TH(Y)、TH(U)、TH(V)、TH(GH))に対して、
図7で示すように全てのプレーンで超過しない場合と、
図8(a)~(d)で示すように一つのプレーンでも符号量が超過してしまう場合がある。
図8(a)は輝度Yプレーンにおいて、
図8(b)は色差Uプレーンにおいて、
図8(c)は色差Vプレーンにおいて、そして、
図8(d)は色差GHプレーンにおいて符号量が閾値を超過した場合を示している。なお、閾値の設定方法として、例えば、本来のバッファ比率に対して20%の符号化バッファのマージンを取ったとすると、このときの符号化バッファ量はマージン分を含めて120%となる。そこで、各プレーンで設定する閾値はその内の9割よりも多くの符号量を使用した場合と定義し、120%×0.9=108%を閾値として定義するものとした。
【0057】
本実施形態では、バッファ使用率算出部607で算出した各プレーンの符号化バッファの使用率が閾値を超過するか否かで符号量制御部612の制御方法を変更するが、詳細な制御方法に関する説明は後述する。なお、各プレーンで設定する閾値は任意である。このときの各プレーンの符号化バッファの割り当ては以下に示すものであるとする。
【0058】
<各プレーンの符号化バッファ比率の割り当て>
Y:U:V:GH = 1.2:1:1:1 …(12)
【0059】
まず、はじめに全てのプレーンの符号量が閾値を超過しない場合の符号量制御部612の制御方法について説明する。
【0060】
<制御単位>
前述のように符号化単位をサブバンド毎のラインとしているが、量子化制御単位は、同一画素位置の各サブバンドの符号化結果の集合体とする。すなわち、
図9に示すように、分解レベル2のサブバンド{2LL,2LL,2HL,2HH}の1ライン、分解レベル1のサブバンド{1LH,1HL,1HH}の2ラインを、一回のQpによる制御単位とする。以降、この制御単位をブロックラインと呼ぶ。また、iをブロックライン番号とする。なお、1ブロックラインは、入力したRAW画像データの16ラインに相当する。
【0061】
発生符号量保持部613は、エントロピー符号化部606から通知される符号化データの発生符号量を保持する。目標符号量算出部615は、各フレームの先頭ブロックラインのQpを制御するタイミングと判断した場合にフレームの目標符号量を算出する。その際の目標符号量算出方法の詳細は後述する。差分算出部614は、ブロックライン毎の発生符号量とブロックライン毎の目標符号量の差分を算出し、差分の積算値である積算差分量を更に算出する。また、フレームの先頭ブロックラインのQpを制御するタイミングで、積算差分量は“0”に初期化されるものとする。
【0062】
量子化制御部616は、差分算出部614から通知される積算差分量に基づき、Qpを算出(更新)する(詳細は後述)。以上により符号量制御する。
【0063】
<量子化値算出>
量子化パラメータ算出方法の一つに、MPEG2 Test Model 5に示された公知技術がある。このTest Model 5によれば、着目ブロックラインがi番目とし、差分算出部614で算出した着目ブロックラインの直前までの積算差分量をΣE[i-1]、基準量子化パラメータQp_ref、制御感度“r”と定義したとき、着目ブロックラインの量子化パラメータQp[i]を以下のように算出することができる。
Qp[i] = Qp_ref+r× ΣE[i-1] …(13)
なお、Qp_refは、フレームの先頭では初期量子化パラメータQp_iniであり、それ以外の領域では、直前フレームの最終ブロックラインのQpである。これは、ΣE[i-1]はQpの連続性を確保するために行う処理であり、フレームの先頭で初期化する。また、制御感度“r”は、大きいほど急峻にQpを変動させる一方、符号量の制御性が向上するパラメータである。
【0064】
Test Model5を利用することで、目標符号量に対して発生符号量が大きければ量子化パラメータを大きく、小さければ量子化パラメータを小さく設定し、符号量を制御することが可能である。
【0065】
量子化制御部616は、式(13)を用いて決定した着目ブロックラインの量子化パラメータQp[i]を、各サブバンドで実際に量子化へ利用するサブバンドQp(=Qp[pl][sb])に更に変換し、量子化部605に通知する。なお、pl,sbはそれぞれ、該当プレーン、該当サブバンドを示す。量子化制御部616は、式(13)で決定した着目ブロックラインの量子化パラメータQp[i]を、式(14)に示すように、予め設定したプレーンやサブバンド毎に有するマトリクスmtxに適用することで、サブバンド毎のQpを算出する。
Qp[pl][sb] = Qp[i]×mtx[pl][sb] …(14)
一般的に、高域のサブバンドほどQpを大きく、低域のサブバンドほどQpを小さく設定し符号量制御を行うことで、人間の視覚特性上視認しづらい、画像データの高域成分ほど発生符号量を圧縮し、符号化効率を向上させる。そのため、マトリクスは、高域サブバンドほどQpが大きく、低域サブバンドほどQpが小さくなるように設定する。
【0066】
<目標符号量算出>
<処理フロー>
目標符号量算出部615は、フレームの先頭のQpを決定する場合に駆動され、1フレームの目標符号量を算出する。各フレームの目標符号量の算出方法として、設定されたビットレートから1フレーム当たりの目標符号量を算出したものと、前フレームにおける目標符号量から発生符号量を引いた差分値の和を各フレームの目標符号量とする。
【0067】
図10は、目標符号量算出部615の処理手順を示すフローチャートである。以下、同図を参照して、目標符号量算出部615によるブロックライン毎の目標符号量の算出方法について説明する。
【0068】
S1001にて、目標符号量算出部615は、符号量残量を算出する。符号量残量とは、着目フレームの目標符号量から符号化済みブロックラインの発生符号量の総和を減じた値である。
【0069】
S1002にて、目標符号量算出部615は、符号量残量が0以下であれば、符号量残量を0にクリップして以降の処理を実施する。この処理は、目標符号量が負になることを避けるために実施する。
【0070】
S1003にて、目標符号量算出部615は、ブロックライン毎の目標符号量を算出する。ブロックライン毎の目標符号量は、符号量残量/未符号化ブロックライン数により算出する。 以上によりブロックライン毎の目標符号量が決定する。
【0071】
次に、予め設定した閾値に対して符号量が超過するプレーンが一つでも存在する場合の符号量制御部612の制御方法について説明する。
【0072】
この場合の符号量制御部612の制御方法は、閾値を超過したプレーンに対する符号化バッファの符号量をこれ以上増加させないようにするため、フレーム単位の符号量制御ではなく、各プレーンで独立して符号量制御する。
【0073】
<制御単位>
制御単位に関しては、前述したブロックライン単位で行う。発生符号量保持部613は、プレーン毎にエントロピー符号化部606から通知される符号化データである発生符号量を保持する。目標符号量算出部615は、先頭ブロックラインのQpを制御するタイミングと判断した場合に各プレーンの目標符号量を算出する。その際の各プレーンにおける目標符号量算出方法の詳細は後述する。差分算出部614は、各プレーンのブロックライン毎の発生符号量と各プレーンのブロックライン毎の目標符号量との差分を算出し、差分の積算値である積算差分量を更に算出する。また、各プレーンの先頭ブロックラインのQpを制御するタイミングで、積算差分量は0に初期化する。量子化制御部616は、差分算出部614から通知される積算差分量に基づき、Qpを算出する(詳細後述)。以上により符号量制御する。
【0074】
<量子化値算出>
量子化制御部616は、各プレーンのブロックライン毎に差分算出部614で算出した積算差分量ΣE[i-1]と、各プレーンの基準量子化パラメータQYini、QUini、QVini、QGHiniと、各プレーンの制御感度rY、rU、rV、rGHを用いて、プレーン毎の着目ブロックラインの量子化パラメータQY [i]、QU[i]、QV[i]、QGH[i]を以下のように算出する。
QY[i] =QYini + rY×ΣE[i-1] …(15)
QU[i] =QUini + rU×ΣE[i-1] …(16)
QV[i] =QVini + rV×ΣE[i-1] …(17)
QGH[i] =QGHini + rGH×ΣE[i-1] …(18)
ただし、UプレーンとVプレーンの量子化パラメータは色のバランスを鑑み、QU[i]とQV[i]との大小比較を行い、大きい方の量子化パラメータを共通の量子化パラメータとして使用する。
【0075】
量子化制御部616は、式(15)から(18)に従って決定した各プレーンの着目ブロックラインの量子化パラメータQpを、各サブバンドで実際に量子化へ利用するサブバンドのパラメータQp{Qp[Y][sb]、Qp[U][sb]、Qp[V][sb]、Qp[GH][sb])に更に変換し、量子化部605に通知する。なお、ここで“sb”は該当サブバンドを示す。量子化制御部616は、式(15)~(18)で決定したブロックラインの量子化パラメータを、各プレーンで予め設定したサブバンド毎に有するマトリクスmtxを用いて、式(19)~(22)に適用して、サブバンドの量子化パラメータQpを算出する。
Qp[Y][sb] = QY[i] ×mtx[sb] …(19)
Qp[U][sb] = QU[i] ×mtx[sb] …(20)
Qp[V][sb] = QV[i] ×mtx[sb] …(21)
Qp[GH][sb] = QGH[i] ×mtx[sb] …(22)
【0076】
<目標符号量算出>
<処理フロー>
目標符号量算出部615は、フレームの先頭のQpを決定する場合に駆動され、各プレーンの目標符号量を算出する。ここで、プレーン毎の目標符号量の算出方法として、例えば、
図8(a)で示したYプレーンの符号量が予め設定していた閾値(TH(Y))を超過した場合に関する各プレーンの目標符号量算出について説明する。
【0077】
ここで、着目フレームのYプレーンの発生符号量をY(Sn)、Uプレーンの発生符号量をU(Sn)、Vプレーンの発生符号量をV(Sn)、GHプレーンの発生符号量をGH(Sn)とし、着目フレームの目標符号量をTnとする。このとき、以下の関係が成り立つ。
Tn=Y(Tn)+V(Tn)+U(Tn)+GH(Tn) …(23)
【0078】
また、上記着目フレームに対し前フレームにおけるYプレーンの発生符号量をY(Sn-1)、同Uプレーンの発生符号量をU(Sn-1)、同Vプレーンの発生符号量をV(Sn-1)、同GHプレーンの発生符号量をGH(Sn-1)とし、前フレームの目標符号量をTn-1とする。
【0079】
まず、着目フレームにおけるYプレーンの目標符号量Y(Tn)は、これ以上のYプレーンの符号化バッファを増加さないで、且つ、その中でも最大限の符号量が割り当てられるよう式(12)で示すプレーン毎の符号化バッファ比率を鑑みて以下のように設定する。
Y(Tn)=Tn×1.2/(1.2+1+1+1) …(24)
【0080】
同様にして、Yプレーン以外のプレーンに対する目標符号量の設定についても式(12)を用いて設定することが可能であるが、符号化バッファ比率で符号量を割り当てるよりもそれまでフレーム単位で符号量制御していたときの符号量を踏襲した方が画質的に安定をする。そのため、Yプレーン以外では、着目フレームに対し前フレームの符号量を鑑みた目標符号量の設定を行うこととする。
【0081】
ここで、上記着目フレームに対し前フレームのYプレーンの発生符号量Y(Sn-1)と、Yプレーンに符号化バッファ比率通りに割り当られた場合の符号量との差分をYプレーンの余剰符号量ΔYnと定義すると、ΔYnは以下のように定義できる。
ΔYn=Y(Sn-1)-Tn-1×1.2/(1.2+1+1+1) …(25)
【0082】
Yプレーンの余剰符号量ΔYnを着目フレームにおけるYプレーン以外のプレーンであるUプレーン、Vプレーン及びGHプレーンの目標符号量に割り当てるように目標符号量を設定する。余剰符号量分の符号量を割り当てる優先順位としては、Yプレーン>Uプレーン=Vプレーン>GHプレーンの順で割り当てる。例えば、通常であればY:U:V:GH=1:1:1:1で割り当てるところを、Y:U:V:GH=3:2:2:1のように余剰符号量分の割り当て比率を変更する。ただし、プレーン毎の割り当て比率はこれに限るものではない。ここでは、Yプレーン以外のプレーンが対象となるため、本実施形態ではYプレーンの余剰符号量ΔYnをU:V:GH=2:2:1の関係で符号量の割り当て比率を変更する。
【0083】
以上を踏まえ、着目フレームにおけるUプレーンの目標符号量U(Tn)は、U(Sn-1)、ΔYn、Tn、Tn-1に基づき以下の式(26)のようになる。このとき、着目フレーム目標符号量Tnと前フレームの目標符号量Tn-1は、符号量制御を行っているため必ずしも同じとは限らない。このため、着目フレームにスケーリングを行って以下のように算出する。
【0084】
【0085】
また、着目フレームにおけるVプレーンの目標符号量V(Tn)は、V(Sn-1)、ΔYn、Tn、Tn-1に基づき以下の式(27)のように算出される。このとき、Uプレーンと同様にスケーリングが行われる。
【0086】
【0087】
さらに、着目フレームにおけるGHプレーンの目標符号量GH(Tn)は、GH(Sn-1)、ΔYn、Tn、Tn-1に基づき、以下の式(28)のように算出される。このとき、UプレーンとVプレーンと同様にスケーリングが行われる。
【0088】
【0089】
なお、ここでは、Yプレーンの符号量が予め設定した閾値に対して超過する場合を説明したが、他のプレーンが超過する場合や複数のプレーンにおいて超過する場合も同様の考え方で目標符号量を決定する。
【0090】
図11は目標符号量算出部615の処理手順を示すフローチャートである。以下、同図を参照して、目標符号量算出部615のブロックライン毎の目標符号量の算出方法について説明する。
【0091】
S1101にて、目標符号量算出部615は、符号量残量を算出する。符号量残量とは、着目フレームのプレーン毎の目標符号量からプレーン毎の符号化済みブロックラインの発生符号量の総和を減じた値である。
【0092】
S1102にて、目標符号量算出部615は、符号量残量が0以下であれば、符号量残量を0にクリップして以降の処理を実施する。この処理は、目標符号量が負になることを避けるために実施する。
【0093】
S1103にて、目標符号量算出部615は、ブロックライン毎のプレーン毎の目標符号量を算出する。各プレーンのブロックライン毎の目標符号量は、各プレーンの符号量残量/未符号化ブロックライン数により算出する。以上によりブロックライン毎の目標符号量が決定する。
【0094】
続いて、本第2の実施形態である撮像装置における画像符号化に係る動作の詳細を
図12に示すフローチャートを基づき説明する。なお、ここでの動作として、符号化したRAW画像データのバッファメモリ609上への格納と、すでに符号化バッファに格納されている符号化データの記録媒体611への記録が同時に実行されているものとする。
【0095】
まず、S1201にて、CPU601は、ユーザインタフェース650により設定された、撮影に係る圧縮率のモードを判定する。続いて、S1202にて、CPU601は、判定した圧縮率の設定に基づき、プレーン毎の符号化バッファの割り当てを決定する。次に、S1203にて、CPU601は、プレーン毎に割り当てられた符号化バッファサイズを各サブバンドの面積比に基づいて割り当て、エントロピー符号化部606の出力先として設定する。
【0096】
次に、S1204にて、CPU601は、撮像部602の駆動を開始する。そしてCPU601は、プレーン変換部603、ウェーブレット変換部604、量子化部605、エントロピー符号化部606の駆動も開始することで、複数のサブバンド毎の符号化データを生成させ、バッファメモリ308に書き込みを行わせる。
【0097】
次に、S1205にて、CPU601は、1フレームの符号化を完了させる。そして、S1206にて、CPU601は、ユーザから記録の停止指示を受けたか否か、受けていれば最終フレームのバッファメモリ内の符号化データの記録媒体611への記録が完了しているか否かを判定する。最終フレームの記録が完了している場合、CPU601は本処理を終了する。また、記録が継続している場合、CPU601は処理をS1207に進める。
【0098】
S1207にて、CPU601は、バッファ使用率算出部607に各プレーンの符号化バッファ使用率を算出させる。次に、S1208には、CPU601は、各プレーンにおいて、符号量が閾値を超過して否かを判定する。符号化バッファ使用率が予め設定した閾値を超過している場合、CPU601は、処理をS1209に進める。このS1209にて、CPU601は、符号量が閾値を超過しているプレーンの符号化バッファをこれ以上増やさないように符号量制御するため、プレーン単位で目標符号量を定め、プレーン単位に符号量制御を行わせる。このとき、符号量が超過しているプレーンの目標符号量を減らし、それ以外のプレーンにその分の符号量を割り当てる。減じた分の符号量を割り当てる優先順位としては、Yプレーン>Uプレーン=Vプレーン>GHプレーンとする。
【0099】
また、S1208にて、CPU601が、全てのプレーンの符号量が閾値よりも少ないと判定した場合、処理をS1210に進める。このS1210にて、CPU601は、フレーム単位で目標符号量を定めて、フレーム単位に符号量制御する。
【0100】
上記のごとく、本第2の実施形態の処理を行うことで、プレーン間で符号量に偏りが生じ符号量が符号化バッファを超過しそうな場合に関しても符号化バッファを増やさずに回路規模を抑えて符号化することが可能となる。
【0101】
[第3の実施形態]
続いて、第3の実施形態を説明する。上記第2の実施形態では、各プレーンの符号化バッファ使用率が予め設定した閾値に対して、符号量が超過する場合に符号量制御を変更することについて説明した。本第3の実施形態では、式(12)で示すように予め設定したバッファ比率に対して、プレーン毎の符号化比率が所定値以上超過する場合について説明する。装置構成は第2の実施形態の
図6と同じとし、その説明は省略する。
本第3の実施形態である画像符号化に係る処理内容を
図13に示すフローチャートを基づき説明する。なお、ここでの動作として、符号化したRAW画像データのバッファメモリ609上への格納と、すでに符号化バッファに格納されている符号化したRAWデータの記録媒体611への記録が同時に実行されているものとする。
【0102】
まず、S1301にて、CPU601は、ユーザインタフェース650により設定された、撮影に係る圧縮率のモードを判定する。続いて、S1302にて、CPU601は、判定した圧縮率の設定に基づき、プレーン毎の符号化バッファの割り当てを決定する。次に、S1303にて、CPU601は、プレーン毎に割り当てられた符号化バッファサイズを各サブバンドの面積比に基づいて割り当て、エントロピー符号化部606の出力先として設定する。なお、サブバンド間のバッファサイズは、その面積比としているので固定比でもある。
【0103】
次に、S1304にて、CPU601は、撮像部602の駆動を開始する。そしてCPU601は、プレーン変換部603、ウェーブレット変換部604、量子化部605、エントロピー符号化部606の駆動も開始することで、複数のサブバンド毎の符号化データを生成させ、バッファメモリ308に書き込みを行わせる。
【0104】
次に、S1305にて、CPU601は、1フレームの符号化を完了させる。そして、S1306にて、CPU601は、ユーザから記録の停止指示を受けたか否か、受けていれば最終フレームのバッファメモリ内の符号化データの記録媒体611への記録が完了しているか否かを判定する。最終フレームの記録が完了している場合、CPU601は本処理を終了する。また、記録が継続している場合、CPU601は処理をS1307に進める。
【0105】
S1307にて、CPU601は、バッファ使用率算出部607で各プレーンの符号化バッファ使用率を算出させる。
【0106】
次にS1308にて、CPU601は、発生符号量保持部613から目標符号量算出部615に入力された各プレーンの発生符号量より各プレーンの符号量比率を算出する。また、目標符号量算出部615に予め記憶された着目フレームにおける各プレーンの目標符号量比率と上記発生符号量による各プレーンの符号量比率を比較し、1プレーンでも所定値以上超過しているか否かを判定する。なお、ここでの所定値は任意とする。また、所定値以上超過した場合に次のフレームから、フレーム単位の符号量制御からプレーン毎の符号量制御に変更するのではなく、n回連続して超過した場合に変更するものでも良い。なお、nは任意の設定とする。
【0107】
バッファ使用率におけるプレーン毎の符号化比率が所定値以上ある場合は、CPU601は処理をS1309に進める。このS1309にて、CPU601は、予め設定したバッファ比率に対して大きく符号量が発生しないように第2の実施形態のときと同様に、プレーン単位で目標符号量を定め、プレーン単位の符号量制御を行う。
【0108】
一方、全てのプレーンのバッファ使用率の比率が所定値未満であると判定した場合、CPU601は処理をS1310に進める。このS1310にて、CPU601は、第2の実施形態と同様に、フレーム単位で目標符号量を定めて、フレーム単位の符号量制御を行う。
【0109】
上記第3の実施形態の画像符号化手順により、符号化バッファ比率に対して発生符号量比率に偏りが生じる場合に関しても符号化バッファを増やさずに回路規模を抑えて符号化することが可能となる。
【0110】
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【0111】
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【0112】
300…撮像装置、301…CPU、302…撮像部、303…プレーン変換部、304…ウェーブレット変換部、305…量子化部、306…エントロピー符号化部、307…メモリI/F、308…バッファメモリ、309…記録処理部、310…記録媒体