(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-27
(45)【発行日】2024-03-06
(54)【発明の名称】画像符号化装置、画像復号化装置、撮像装置、画像符号化方法、画像復号化方法、及びプログラム
(51)【国際特許分類】
H04N 19/34 20140101AFI20240228BHJP
H04N 19/124 20140101ALI20240228BHJP
H04N 19/146 20140101ALI20240228BHJP
H04N 19/196 20140101ALI20240228BHJP
【FI】
H04N19/34
H04N19/124
H04N19/146
H04N19/196
(21)【出願番号】P 2019037774
(22)【出願日】2019-03-01
【審査請求日】2022-03-01
【前置審査】
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】金子 唯史
【審査官】間宮 嘉誉
(56)【参考文献】
【文献】特開2001-339313(JP,A)
【文献】特開昭63-281569(JP,A)
【文献】特開2000-244744(JP,A)
【文献】特開2011-151572(JP,A)
【文献】米国特許第6744929(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 7/12
H04N 19/00-19/98
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
第1の量子化パラメータに従って画像データを量子化することにより第1の量子化データを生成し、前記第1の量子化データを可変長符号化することにより第1の符号データを生成する第1の符号化手段と、
前記第1の符号データと前記第1の量子化パラメータに従う量子化により失われたビットデータの第1の部分とを含む第1のレイヤーと、前記失われたビットデータの前記第1の部分とは異なる第2の部分を含む第2のレイヤーと、を含む階層符号化データを生成する生成手段と、
相異なる複数の量子化パラメータに従って前記画像データを量子化することにより複数の量子化データを生成し、前記複数の量子化データの各々を可変長符号化することにより複数の符号データを生成する第2の符号化手段と、
前記複数の符号データの各々の、符号長と量子化により失われたビットデータのビット数とに基づいて、前記第1の量子化パラメータを決定する決定手段と、
を備え、
前記生成手段は、前記第1の量子化パラメータを前記第1のレイヤーに格納する
ことを特徴とする画像符号化装置。
【請求項2】
前記決定手段は、前記複数の量子化パラメータのうちの、前記複数の符号データの各々に対応する前記符号長と前記量子化により失われたビットデータのビット数との和のうちの最小値に対応する量子化パラメータを、前記第1の量子化パラメータとして決定する
ことを特徴とする請求項1に記載の画像符号化装置。
【請求項3】
前記第1のレイヤーは、前記第1の符号データを格納するための所定のサイズのデータ領域を持ち、
前記複数の符号データの各々に対応する前記符号長のいずれもが前記所定のサイズを超える場合、
前記決定手段は、前記画像データを前記所定のサイズ以下に量子化する量子化パラメータを、前記第1の量子化パラメータとして決定し、
前記生成手段は、前記第1の符号データの代わりに前記第1の量子化データを前記第1のレイヤーの前記データ領域に格納する
ことを特徴とする請求項1又は2に記載の画像符号化装置。
【請求項4】
前記第1の符号化手段により前記第1の量子化データを可変長符号化することは、前記画像データの各画素について、当該画素の量子化値の予測値を他の画素の量子化値に基づいて取得し、当該予測値に対する当該量子化値の差分値を可変長符号化することを含む
ことを特徴とする請求項1乃至3のいずれか1項に記載の画像符号化装置。
【請求項5】
請求項1乃至4のいずれか1項に記載の画像符号化装置と、
画像復号化装置と、
前記画像データを生成する撮像手段と、
記録手段と、
を備え
る撮像装置であって、
前記画像符号化装置の前記生成手段は、
前記第1のレイヤー及び前記第2のレイヤーを含む前記階層符号化データを前記記録手段に記録
し、
前記画像符号化装置は、
前記記録手段から、前記第2のレイヤーを読み出すか否かを判定する判定手段と、
前記第2のレイヤーを読み出すと判定された場合、前記記録手段から前記第1のレイヤー及び前記第2のレイヤーを読み出し、前記第2のレイヤーを読み出さないと判定された場合、前記記録手段から前記第1のレイヤーを読み出す読み出し手段と、
前記第1のレイヤーに含まれる前記第1の符号データを可変長復号化することにより前記第1の量子化データを生成し、前記第1の量子化データを逆量子化することにより復号化画像データを生成する復号化手段と、
を備え、
前記第2のレイヤーを読み出すと判定された場合、前記復号化手段は、前記第1のレイヤーに含まれる前記失われたビットデータの前記第1の部分と前記第2のレイヤーに含まれる前記失われたビットデータの前記第2の部分とを前記復号化画像データに付加し、
前記第2のレイヤーを読み出さないと判定された場合、前記復号化手段は、前記第1のレイヤーに含まれる前記失われたビットデータの前記第1の部分を前記復号化画像データに付加する
ことを特徴とする撮像装置。
【請求項6】
画像符号化装置が実行する画像符号化方法であって、
第1の量子化パラメータに従って画像データを量子化することにより第1の量子化データを生成し、前記第1の量子化データを可変長符号化することにより第1の符号データを生成する第1の符号化工程と、
前記第1の符号データと前記第1の量子化パラメータに従う量子化により失われたビットデータの第1の部分とを含む第1のレイヤーと、前記失われたビットデータの前記第1の部分とは異なる第2の部分を含む第2のレイヤーと、を含む階層符号化データを生成する生成工程と、
相異なる複数の量子化パラメータに従って前記画像データを量子化することにより複数の量子化データを生成し、前記複数の量子化データの各々を可変長符号化することにより複数の符号データを生成する第2の符号化工程と、
前記複数の符号データの各々の、符号長と量子化により失われたビットデータのビット数とに基づいて、前記第1の量子化パラメータを決定する決定工程と、
を備え、
前記生成工程は、前記第1の量子化パラメータを前記第1のレイヤーに格納する
ことを特徴とする画像符号化方法。
【請求項7】
コンピュータを、請求項1乃至4のいずれか1項に記載の画像符号化装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像符号化装置、画像復号化装置、撮像装置、画像符号化方法、画像復号化方法、及びプログラムに関する。
【背景技術】
【0002】
近年、デジタルビデオカメラなどの撮像装置は高解像度化、高フレームレート化に伴って、システムで扱う画像データ量が著しく増加しており、画像メモリやバスインタフェース回路の高速化が要求されている。これに対し、画像メモリやバスインタフェースの前後で画像の圧縮符号化を行って、画像データ量を削減することで回路の高速化の要求度合いを緩和することができる。
【0003】
この場合、圧縮符号化のための符号化方式は、回路規模及び符号化遅延の小さいことが望まれる。そのため、従来のJPEGやMPEG2に代表されるDCTベースの符号化方式は不向きである。そこで、DPCM(Differential Pulse Code Modulation:差分パルス符号変調)ベースの予測符号化方式での圧縮符号化が提案されている(特許文献1)。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
システムのメモリ帯域が短期間で大きく変動するようなシステムにおいては、そのメモリ帯域に応じてメモリへのアクセス量を調整できることが望まれる。例えば、メモリ帯域が少ない場合にメモリに保持された符号化データの一部だけを読み出して画像の復号を可能とすることが望まれるが、特許文献1の技術ではこのような調整が不可能であった。
【0006】
また、複数の解像度の画像を生成して階層的な符号化を行うことにより、一部の符号化データだけから画像の復号を可能とする技術があるが、解像度変換や局部復号などを行う構成が必要となり、回路の大規模化を招いていた。
【0007】
本発明はこのような状況に鑑みてなされたものであり、画像データから従来とは異なるフォーマットで階層化された符号化データを生成する技術を提供することを目的とする。
【課題を解決するための手段】
【0008】
上記課題を解決するために、本発明は、第1の量子化パラメータに従って画像データを量子化することにより第1の量子化データを生成し、前記第1の量子化データを可変長符号化することにより第1の符号データを生成する第1の符号化手段と、前記第1の符号データと前記第1の量子化パラメータに従う量子化により失われたビットデータの第1の部分とを含む第1のレイヤーと、前記失われたビットデータの前記第1の部分とは異なる第2の部分を含む第2のレイヤーと、を含む階層符号化データを生成する生成手段と、相異なる複数の量子化パラメータに従って前記画像データを量子化することにより複数の量子化データを生成し、前記複数の量子化データの各々を可変長符号化することにより複数の符号データを生成する第2の符号化手段と、前記複数の符号データの各々の、符号長と量子化により失われたビットデータのビット数とに基づいて、前記第1の量子化パラメータを決定する決定手段と、を備え、前記生成手段は、前記第1の量子化パラメータを前記第1のレイヤーに格納することを特徴とする画像符号化装置を提供する。
【発明の効果】
【0009】
本発明によれば、画像データから従来とは異なるフォーマットで階層化された符号化データを生成することが可能となる。
【0010】
なお、本発明のその他の特徴及び利点は、添付図面及び以下の発明を実施するための形態における記載によって更に明らかになるものである。
【図面の簡単な説明】
【0011】
【
図1】画像符号化部20の詳細な構成を示すブロック図。
【
図2】画像復号化部40の詳細な構成を示すブロック図。
【
図3】符号化部111の詳細な構成を示すブロック図。
【
図4】画像符号化装置及び画像復号化装置の機能を持つ画像処理装置100の構成を示すブロック図。
【
図5】符号化モード及び適用QPの決定処理のフローチャート。
【
図6】
図5のS504の処理の詳細を示すフローチャート。
【
図7】DPCMモードにおける符号化フォーマットのデータ構造を示す図。
【
図8】PCMモードにおける符号化フォーマットのデータ構造を示す図。
【
図9】符号化対象となる画像データの形式を示す図。
【
図10】bl_size[qp]とbl_dist[qp]との関係の具体例を示す図。
【
図11】量子化データと損失ビットについて説明する図。
【
図12】(a)~(b)DPCMモードにおいて損失ビットを格納する順序の詳細について説明する図、(c)~(d)PCMモードにおいて損失ビットを格納する順序の詳細について説明する図。
【発明を実施するための形態】
【0012】
以下、添付図面を参照して実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【0013】
[第1の実施形態]
(画像処理装置100の構成)
図4は、画像符号化装置及び画像復号化装置の機能を持つ画像処理装置100の構成を示すブロック図である。画像処理装置100は、取得部10、画像符号化部20、メモリ30、画像復号化部40を有する。
【0014】
画像処理装置100の各ブロックの機能は、撮像素子やメモリ30の記憶素子のような物理的デバイスを除き、ソフトウェア及びハードウェアのいずれによって実装されていてもよい。例えば、各ブロックの機能は、専用のデバイス、ロジック回路、及びメモリなどのハードウェアにより実装されてもよい。或いは、各ブロックの機能は、メモリ、メモリに記憶されている処理プログラム、及び処理プログラムを実行するCPU等のコンピュータにより実装されてもよい。画像処理装置100は、例えばデジタルカメラとして実施することができるが、それ以外の装置として実施することもできる。例えば、画像処理装置100は、パーソナルコンピュータ、携帯電話、スマートフォン、PDA、タブレット端末、デジタルビデオカメラなどの任意の情報処理端末又は撮像装置として実施することができる。
【0015】
取得部10は、画像データを取得する機能を有する。取得部10は、例えば、撮像素子を備える撮像部であってもよいし、外部から伝送路を介して画像データを受信する通信部であってもよい。或いは、取得部10は、記録媒体などから画像データを読み出すインタフェースであってもよい。また、取得される画像データは、静止画データであってもよいし、動画データであってもよい。取得部10が取得する画像データが動画データの場合、複数のフレームが連続的に取得されてもよい。取得部10は、取得した画像データを、画像符号化部20に供給する。
【0016】
画像符号化部20は、取得部10から供給される画像データを、後述する符号化方式に従って符号化し、情報量が圧縮された階層符号化データを出力する。出力された階層符号化データは、メモリ30に記憶される。メモリ30は、画像符号化部20から出力された階層符号化データを記憶するために必要な記憶容量を有する。画像復号化部40は、メモリ30に保持された階層符号化データを読み出し、後述する復号化方式により画像データに復号し、画像データを後段の処理部(不図示)に出力する。
【0017】
なお、
図4では、取得部10、画像符号化部20、メモリ30、及び画像復号化部40の各々を独立して図示しているが、これらのブロックの一部又は全部が1チップに統合されていてもよい。
【0018】
(画像符号化部20の詳細)
図1は、画像符号化部20の詳細な構成を示すブロック図である。画像符号化部20は、仮符号化系110及び本符号化系120を含む。仮符号化系110は、符号化部111A~111D及びQP決定部115を含み、本符号化系120が本符号化を行う際に使用する符号化モード及び量子化パラメータのセットを決定するように動作する。本符号化系120は、遅延部121、符号化部111E、及び多重化部123を含み、仮符号化系110で決定された符号化モード及び量子化パラメータに従って量子化処理を含む本符号化を実行するように動作する。以下の説明においては、符号化部111A~111Eを総称して符号化部111と呼ぶ場合がある。
【0019】
画像符号化部20は、専用のデバイス、ロジック回路、及びメモリなどを含む一体的なハードウェアとして構成されてもよいし、複数のデバイス等で分散して構成されてもよい。或いは、画像符号化部20は、メモリ、メモリに記憶されている処理プログラム、及び処理プログラムを実行するCPU等のコンピュータにより実装されてもよい。
【0020】
画像符号化部20には、符号化対象となる画像データが入力端子101を介して取得部10から入力される。以下の説明においては、画像データの形式として、
図9(a)に示すRGB形式を例として用いるものとする。また、画像データは、ラスタースキャン順に入力され、各カラー要素であるR(赤)、G(緑)、B(青)の各画素データは、時分割に多重されており順次入力されるものとする。また、各画素のビット深度は10ビットであるものとする。しかしながら、本実施形態において、画像データの形式は
図9(a)に示すRGB形式に限定されない。例えば、画像データの形式は、
図9(b)に示すYCbCr4:2:2の形式であってもよいし、
図9(c)に示すベイヤー配列の形式であってもよい。
【0021】
(符号化ブロックの説明)
本実施形態において画像符号化部20が実行する画像符号化処理では、符号化対象の画像データは、所定サイズ(画素数)を有するブロック(符号化ブロック)に分割され、符号化ブロック単位に符号化が行われるものとする。以下の説明においては、
図9(a)に示すように、符号化ブロックは水平16画素×垂直1画素×3色=48画素により構成されるものとする。
図9(a)に示すように、符号化ブロックは、R、G、Bの各カラー要素について16画素ずつから構成され、ラスタースキャン順にR0、G0、B0、R1、G1、B1・・・の順に画素番号0から47が割り当てられている。符号化ブロックの各画素は、画素番号が小さいものから順に処理されるものとする。
【0022】
なお、符号化ブロックの構成は、
図9(a)に示す構成に限定されない。例えば、前述したYCbCr4:2:2の形式の画像データの場合、
図9(b)に示すように、符号化ブロックは、Yが16画素、Cbが8画素、Crが8画素の32画素から構成されてもよい。或いは、前述したベイヤー配列の形式の画像データの場合、
図9(c)に示すように、符号化ブロックは、Grが8画素、Gbが8画素、Rが8画素、Bが8画素の32画素から構成されてもよい。
【0023】
本実施形態では、符号化ブロック毎に複数階層の符号化データが生成されるよう符号化が行われる。基本となる階層の符号化データを基本レイヤーと呼び、拡張された階層の符号化データを拡張レイヤーと呼ぶ。基本レイヤーの符号量、拡張レイヤーの符号量、及び拡張レイヤーの数は、システム要件の圧縮率等に応じて任意に設定することができる。
【0024】
以下では、拡張レイヤーの数が1つである場合を例に説明を行う。また、基本レイヤーの圧縮率が6/10、基本レイヤーと拡張レイヤーを合計した圧縮率が7/10である場合を例に説明を行う。符号化前の画像データの情報量は符号化ブロックあたり48画素×10ビット=480ビットであるので、基本レイヤーの符号量は288ビットとなり、拡張レイヤーのビット数は48ビットとなる。
【0025】
各符号化ブロックについて、符号化モード及び量子化パラメータ(QP)が選択され、基本レイヤーの符号量を目標符号量とする符号化が行われる。符号化モードには、量子化された画像データを符号データとして用いるPCMモードと、画像データを量子化した後に予測値との差分値を符号化するDPCMモードとがある。
【0026】
(符号化部111の詳細)
図3は、符号化部111の詳細な構成を示すブロック図である。
図3に示すように、符号化部111は、量子化部301、予測部302、減算器303、可変長符号化部304、PCM符号長算出部305、セレクタ307、及びセレクタ308を含む。
【0027】
符号化部111には、画像データ(符号化ブロック単位)、QP、符号化モードフラグが入力される。仮符号化系110の場合、QP及び符号化モードフラグは、符号化部111A~111Dのそれぞれに対して固定値として予め割り当てられていてもよい。
図1では一例として、符号化部111Aから111Dまで順にQPとして0、1、2、3がそれぞれ割り当てられている場合を示している。仮符号化系110の場合、符号化部111A~111Dの各々が予めQPの値を保持していてもよい。また、仮符号化系110の場合、符号化モードフラグはDPCMモードを示す固定値として入力される。本符号化系120の場合、仮符号化系110で決定されたQPと符号化モードフラグとがQP決定部115から符号化部111Eへと入力される。以下、符号化部111の具体的構成及びその動作について詳述する。
【0028】
まず、符号化部111に入力された画像データは、量子化部301に入力される。量子化部301は、与えられたQPに従って入力画像データを量子化し、量子化データと、量子化によって損失したデータとを出力する。本実施形態では、量子化データをPCMデータとも呼ぶ。また、損失したデータを損失ビットとも呼ぶ。量子化データは、予測部302、減算器303、セレクタ307にそれぞれ出力される。また、損失ビットは、符号化部111の外部に出力される。
【0029】
本実施形態では、QPの値を、0を最小値とする整数値とし、0から3までの範囲で変更できるものとして説明を行う。しかしながら、より大きなQPの値を設定して更に大きな量子化ステップを使用してもよい。
【0030】
本実施形態において、量子化部301は、QPが小さいほど量子化ステップを小さく(細かく)し、QPが大きいほど量子化ステップを大きく(粗く)する。具体的には、PCMデータは式1で表される演算により生成され、損失ビットは、式2で表される演算により生成される。
【0031】
Quant = Data >> QP ・・・(1)
Loss = Data - (Quant << QP)・・・(2)
ここで、QuantはPCMデータ、Lossは損失ビット、Dataは入力画像データ、QPは量子化パラメータである。また、>>は右シフト算を示し、<<は左シフト算を示している。
【0032】
ここで、
図11(a)~(d)を参照して、量子化データと損失ビットについて説明する。
図11(a)~(d)は、画像データの符号化ブロックの全ビットを示す図であって、水平方向に48個の画素データの並びを表しており、垂直方向に10ビットのビット深度を表している。
【0033】
図11(a)は、QP=0に対応する量子化データを表しており、入力データは量子化されずにそのまま出力されることを示している。この場合、損失ビットは存在しない。
【0034】
図11(b)は、QP=1に対応する量子化データ及び損失ビットを表しており、上位9ビットが量子化データとして出力され、下位1ビットが損失ビットとして出力されることを示している。
【0035】
図11(c)は、QP=2に対応する量子化データ及び損失ビットを表しており、上位8ビットが量子化データとして出力され、下位2ビットが損失ビットとして出力されることを示している。
【0036】
図11(d)は、QP=3に対応する量子化データ及び損失ビットを表しており、上位7ビットが量子化データとして出力され、下位3ビットが損失ビットとして出力されることを示している。
【0037】
本実施形態において、QP=0からQP=nまでQPの値を1ずつ増加させることを、量子化ステップを1段上げる、1段大きくする、1段粗くする等という。反対に、QP=nからQP=0までQPの値を1ずつ減少させることを、量子化ステップを1段下げる、1段小さくする、1段細かくする等というものとする。
【0038】
PCM符号長算出部305は、量子化部301から出力されたPCMデータの符号長を、画像データのビット数(本実施形態では10ビット)とQPとから、下記の式3を用いて決定する。
【0039】
PCM符号長 = 画像データビット数 - QP ・・・(3)
本実施形態では、QPの値が1増える毎に、PCMデータの符号長が1ビットずつ減少する。よって、QP=0を初期値として、QPが1増える毎に、PCMデータの符号長は10ビットから1ビットずつ短くなる。ここで、仮符号化系110では、QPの値は符号化部111A~111Dのそれぞれについて固定的に割り当てられているので、PCM符号長も固定値となる。よって、PCM符号長算出部305は、式3の演算によりPCM符号長を算出するのではなく、割り当てられたQPの値に基づくPCM符号長の固定値を保持して出力する構成であってもよい。PCM符号長算出部305は、決定したPCM符号長をセレクタ308に出力する。
【0040】
次に、予測部302の動作を説明する。予測部302は、周辺のPCMデータを用いて現在のPCMデータの予測データ(現在の画素の量子化値の予測値)を生成する。簡易な方法としては、同じカラー要素の前画素をそのまま予測データとする方法がある。例えば、本実施形態では、
図9(a)に示すようにRGBの各カラー要素の画像データが順に入力され、画像データG0の符号化後、次にG1を符号化するまでに、画像データB0、R1を先に符号化する。よって、予測部302は、PCMデータを3画素分遅延させて予測データとする。また、同じカラー要素の複数の前画素を用いて、線形予測などの演算を行ってもよい。符号化ブロックが2次元構造であれば、同じカラー要素の周辺画素による平面予測などの演算を行ってもよい。なお、各カラー要素の符号化ブロックの最初の画素(R0、G0、B0)については、前画素が存在しないため、予測データとしては所定の値(たとえば0)を出力する。生成された予測データは減算器303に出力される。
【0041】
減算器303は、量子化部301からのPCMデータと、予測部302からの予測データとの差分を予測差分データとして、可変長符号化部304へ出力する。予測差分データは正負の値を持つデータであり、画像データの変動の小さい平坦な部分では0付近の値となり、変動の大きいエッジ部分などでは大きな値になる。予測差分データは、一般に0を中心としたラプラス分布の特性を持つ。
【0042】
可変長符号化部304は、入力された予測差分データに対して所定の可変長符号化方式による符号化を行って、1画素毎に符号データと符号長とを出力する。符号データはセレクタ307へ出力され、符号長はセレクタ308に出力される。可変長符号化方式としては、例えばハフマン符号、ゴロム符号などを使用することができる。可変長符号化部304が実行する可変長符号化方式では、入力値が0の場合に最も短い符号長の符号データが割り当てられており、入力値の絶対値が大きくなるほど、符号データの符号長は長くなる。なお、本実施形態において、可変長符号化部304から出力される符号データをDPCMデータと呼び、符号長をDPCM符号長と呼ぶ。
【0043】
セレクタ307にはPCMデータとDPCMデータが入力され、符号化モードフラグに従って符号データが選択されて、符号化部111の外部へと出力される。具体的には、符号化モードフラグの値が0の場合はDPCMデータが選択され、符号化モードフラグの値が1の場合はPCMデータが選択される。セレクタ308にはPCM符号長とDPCM符号長が入力され、符号化モードフラグに従って符号長が選択されて、符号化部111の外部へと出力される。符号化モードフラグの値が0の場合はDPCM符号長が選択され、符号化モードフラグの値が1の場合はPCM符号長が選択される。
【0044】
符号化モードについて説明する。上記説明した通り、符号化部111における符号化モードは、符号化モードフラグに応じて、DPCMモードとPCMモードを切り替えて動作する。DPCMモードは、量子化部301で量子化された量子化データと予測部302で生成された予測データを用いて減算器303により予測差分データを生成し、可変長符号化部304により可変長符号化を行うモードである。DPCMモードの場合、画像データやQPによって可変長の符号データが生成される。一方、PCMモードは、入力された画像データをそのまま量子化部301により量子化して量子化データとして出力するモードである。PCMモードの場合、QPによって定まる固定長の符号データが生成される。
【0045】
なお、PCMモードにおいては、後述する符号データの多重化において、符号データがPCMモードで生成されたものであることを示す1ビットのフラグを多重化する必要がある。そのため、符号化ブロックの画素のうち所定の1画素はQPを1段上げて量子化し、他の画素より1ビット少ない符号データ及び符号長を出力するように動作する。所定の1画素は、例えば符号化ブロックの左端に位置する画素とする。
【0046】
(仮符号化系110における仮符号化処理)
ここで再び
図1をして、仮符号化系110における仮符号化処理について説明する。仮符号化系110に入力された画像データは、符号化部111A~111Dによって仮符号化され、符号長がQP決定部115に出力される。仮符号化の符号化モードはDPCMモードであり、QPは符号化部111A~111Dの順に0~3(相異なる複数の量子化パラメータ)である。出力される符号長は、各QPに対応する量子化ステップで量子化処理を行った量子化結果をDPCMで符号化した符号データの符号長を表す。符号化部111A~111Dは、
図3に示した構成を有し、出力信号として、符号データ、符号長、損失ビットが存在する。しかしながら、この仮符号化系110では、符号長のみが使用され、損失ビット、符号データは使用しなくてもよい。従って、符号化部111A~111Dは、損失ビット及び符号データを出力する構成を持っていなくてもよい。
【0047】
なお、本実施形態では仮符号化に用いるQPの範囲を0~3としたため、仮符号化系110は符号化部111を4つ備えているが、本実施形態はこの構成に限定されない。仮符号化に用いるQPの範囲に応じて、仮符号化系110が備える符号化部111の数を変更することができる。
【0048】
QP決定部115は、符号化ブロックの基本レイヤーの符号量を目標符号量として、前段の符号化部111A~111Dから入力されたQP毎の符号長の情報に基づき、符号化ブロック毎に符号化モード及びQP(適用QP)を決定する。
【0049】
以下、
図5を参照して、QP決定部115における符号化モード及び適用QPの決定処理の詳細を説明する。最初に、S501で、QP決定部115は、符号化部111A~111Dから、各符号化部に割り当てられたQP毎に算出された符号長の情報を、画素単位で取得する。
【0050】
S502で、QP決定部115は、取得した画素単位の符号長の合計を用いて、QP毎に符号化ブロック全体の符号長(ブロック符号長)を算出する。ブロック符号長の算出に際しては、符号化データに多重するヘッダ情報の符号長を加味する必要がある。ヘッダ情報とは、復号時に必要な符号化ブロック毎の情報である。ヘッダ情報の符号長は、本実施形態ではQP(0~3)の表現のための2ビットと、後述する符号化モードフラグのための1ビットの、合計3ビットとなる。従って、S502では、ヘッダ情報の符号長hd_size(=3ビット)と画素単位の符号長の合計とを加算することにより、ブロック符号長bl_size[qp]の算出が行われる。なお、QPの表現のためのビット数は、符号化に用いるQPの範囲に応じて変更することができる。
【0051】
S503で、QP決定部115は、目標符号量target_sizeとQP毎のブロック符号長bl_size[qp]とを用いて、空きビット数remain_num[qp]と、損失ビット数loss_num[qp]とをQP毎に算出する。また、QP決定部115は、空きビット数remain_num[qp]と、損失ビット数loss_num[qp]とを用いて、劣化度bl_size[qp]をQP毎に算出する。
【0052】
空きビット数remain_num[qp]は、下記の式4により算出される。
【0053】
remain_num[qp]=target_size-bl_size[qp]
・・・(4)
空きビット数は、式4に示されるように、目標符号量からブロック符号長を減算した値である。空きビット数が正の値の場合、対応するQPでのブロック符号長が目標符号量より小さいことを示している。空きビット数が負の値の場合、対応するQPでのブロック符号長が目標符号量より大きいことを示している。
【0054】
損失ビット数loss_num[qp]は、下記の式5により算出される。
【0055】
loss_num[qp]=qp * pix_num ・・・(5)
ここで、pix_numは符号化ブロックの画素数(本実施形態では48)である。
【0056】
損失ビット数は量子化により損失するビット数を示しており、QPと符号化ブロックの画素数とにより一意に定まる値である。例えば、QP=2の場合、96となる。
【0057】
劣化度bl_size[qp]は、下記の式6により算出される。
【0058】
bl_dist[qp]=loss_num[qp]-remain_num[qp]
・・・(6)
劣化度は、損失ビット数から空きビット数を減算した値であり、符号化劣化の度合いを示している。詳細は後述するが、本実施形態では、ブロック符号長が目標符号量より小さい場合、量子化により損失したデータ(損失ビット)を空きビット領域にできるだけ格納するように符号化が行われる。復号時には、空きビット領域に格納された損失ビットを復元することによって量子化による劣化が軽減される。そのため、最終的な劣化の度合いは、損失ビット数から空きビット数を減算した値ということができる。
【0059】
S504で、QP決定部115は、S502で算出したbl_size[qp]と、S503で算出したbl_dist[qp]とを用いて、符号化モード及び適用QPを決定する。
【0060】
ここで
図6を参照して、S504の処理の詳細について説明する。最初に、S601で、QP決定部115は、いくつかの変数を初期化する。具体的には、QP決定部115は、qp(QPの値)を0に初期化し、min_dist(最小劣化度の値)をMAX_DISTに初期化する。また、QP決定部115は、enc_mode(符号化モード)をPCMモードに初期化し、sel_qp(適用QP)をMAX_QP+1の値に初期化する。ここで、MAX_DISTは、符号化ブロックの劣化度として取りうる最大の値であり、符号化前の画像データの情報量から目標符号量を減じた値となる。本実施形態では、MAX_DIST=480-288=192である。また、MAX_QPは、符号化に用いるQPの最大値である。本実施形態ではMAX_QPは3であるため、sel_qpは4に初期化される。enc_mode及びsel_qpの初期値は、以下に説明する適用QPを選定する条件がいずれのQPでも満たされない場合に適用される符号化モード及びQPとして初期化される。
【0061】
S602で、QP決定部115は、現在のQP(変数qp)における符号化ブロックの符号長bl_size[qp]が目標符号量target_size以下であって、かつ、符号化ブロックの劣化度bl_dist[qp]がmin_distより小さいという条件が成立しているか否かを判定する。条件が成立している場合、処理はS603に進み、そうでない場合、処理はS604に進む。
【0062】
S603で、QP決定部115は、選定すべきQPの候補として、qpをsel_qpに代入する。また、QP決定部115は、劣化度bl_dist[qp]をmin_distに代入する。また、この時点で符号化モードとしてDPCMモードを使用することが決定するので、QP決定部115は、enc_modeをDPCMモードに設定する。
【0063】
S604で、QP決定部115は、現在のQP(変数qp)の値が最大値MAX_QPよりも小さいか否かを判定する。qp<MAX_QPの場合、処理はS605に進み、そうでない場合、本フローチャートの処理は終了する。
【0064】
S605で、QP決定部115は、qpに1を加算する。その後、再びS602から、次のQP値について同様の処理が行われる。
【0065】
なお、S602において一度も「YES」と判定されずに、S604において「NO」と判定された場合、DPCMモードでは目標符号量より小さいブロック符号長を持つQPが存在せず、ブロック符号長を目標符号量に収めることができないことを意味する。この場合、enc_mode及びsel_qpがそれぞれS601で初期化したPCMモード及び4(MAX_QP+1)のまま、
図6の処理が終了する。言い換えると、ブロック符号長bl_size[qp]のいずれかが目標符号量以下であった場合、DPCMモードが選択され、符号化ブロックの劣化度bl_dist[qp]が最小となるQPが適用QPとして選択される。また、ブロック符号長bl_size[qp]のいずれもが目標符号量を超えた場合はPCMモードが選択され、QP値の最大値(MAX_QP)に1加算したQP値(4)が適用QPとして使用される。
【0066】
図10は、bl_size[qp]とbl_dist[qp]との関係の具体例を示す図である。
図10(a)の例では、QP=2の場合に、ブロック符号長bl_size[2]である215ビットが目標符号量288ビット以下であり、劣化度bl_dist[2]である23が最小である。そのため、QP=2が適用QPとして選択され、符号化モードとしてDPCMモードが選択される。
図10(b)の例では、いずれのQPについてもブロック符号長が目標符号量を超えている。そのため、適用QPとして4が選択され、符号化モードとしてPCMモードが選択される。
【0067】
なお、式(6)を参照して説明した通り、劣化度bl_dist[qp]は、損失ビット数loss_num[qp]から空きビット数remain_num[qp]を引いた値である。ここで、式(6)の空きビット数remain_num[qp]に式(4)の右辺を代入すると、下記の式(7)が得られる。
【0068】
bl_dist[qp]
=loss_num[qp]-(target_size-bl_size[qp])
=loss_num[qp]+bl_size[qp]-target_size
・・・(7)
式(7)において、target_sizeはQPの値に関わらず一定であり、ブロック符号長bl_size[qp]のうちのヘッダ情報に対応する符号長もQPの値に関わらず一定である。そのため、QP間の劣化度の大小関係は、実質的には、符号化部111が出力した符号長の合計(画像データ(符号化ブロック単位)全体の符号データの符号長)及び損失ビット数loss_num[qp]によって定まる。従って、QP決定部115は、劣化度を算出しなくても、符号長及び損失ビット数に基づいて適用QP及び符号化モードを決定することができる。
図10(a)の例では、QP=2の場合に符号長及び損失ビット数の和が最小値となるため、QP=2が適用QPとして決定される。また、
図10(b)の例では、各QPに対応する符号長のいずれもが画素データ部704(画像データ(符号化ブロック単位)全体の符号データを格納するための所定サイズのデータ領域)のサイズを超えている。従って、QP=4(画像データ(符号化ブロック単位)を画素データ部704のサイズ以下に量子化する量子化パラメータ)が、適用QPとして決定される。
【0069】
(本符号化系120における符号化処理)
ここで再び
図1を参照して、本符号化系120における符号化処理について説明する。本符号化系120には、仮符号化系110に入力された画像データと同一の画像データが入力される。しかしながら、本符号化系120の符号化処理は、仮符号化系110のQP決定部115が符号化モード及び適用QPを決定して出力するまで開始することができない。そこで、入力画像データは最初に遅延部121に入力され、仮符号化系110が符号化モード及び適用QPを決定するために必要な処理サイクル分だけ遅延される。遅延した画像データは、遅延部121から符号化部111Eへ入力される。これにより、符号化部111Eは、仮符号化系110により符号化モード及び適用QPが決定された符号化ブロックについて、決定された符号化モード及び適用QPを用いて符号化を行うことができる。
【0070】
符号化部111Eには、遅延した画像データに加えて、QP決定部115が出力した適用QP及び符号化モードフラグが入力される(
図3参照)。符号化部111Eは、入力された適用QP及び符号化モードフラグに従って、遅延した画像データに対する本符号化を行う。これにより、QP決定部115が決定したブロック符号長と同じ符号長の符号データが生成される。符号化部111Eは、生成した符号データを、符号長及び損失ビットと共に多重化部123に出力する。多重化部123には、符号化部111Eからの符号データ、符号長、及び損失ビットと、QP決定部115からの適用QP及び符号化モードフラグとが入力され、符号化ブロック毎に所定のフォーマットで多重化が行われる。
【0071】
図7を参照して、DPCMモードの場合の符号化フォーマットについて説明する。
図7は、DPCMモードにおける符号化フォーマットのデータ構造を示す図である。
図7において、符号化ブロック全体の階層符号化データは、基本レイヤー701(288ビット)と拡張レイヤー702(48ビット)とを含む。
【0072】
基本レイヤー701は、ヘッダ部703(3ビット)と画素データ部704(285ビット)とを含む。ヘッダ部703は、符号化モードを示す符号化モードフラグ705(1ビット)とQPを示すQP値部706(2ビット)とを含む。画素データ部704は、DPCMデータ部707、損失ビット部708、及びスタッフィング部709を含む。拡張レイヤー702は、損失ビット部711及びスタッフィング部712を含む。なお、スタッフィング部709、712は存在しない場合もある。
【0073】
DPCMモードにおける階層符号化データの生成方法について説明する。QP決定部115からの符号化モードフラグ及びQPは、符号化モードフラグ705(1ビット)と、ヘッダ部703のQP値部706(2ビット)とにそれぞれ格納される。本実施形態において、DPCMモードを表す符号化モードフラグの値は0であるものとする。符号化部111EからのDPCMデータ(48画素分)は、画素毎の符号長を用いてビット単位で順にパッキングされてDPCMデータ部707に格納される。
【0074】
符号化部111Eからの損失ビット(QP決定部115により決定された量子化パラメータに従う量子化により失われたビットデータ)は、基本レイヤー701の損失ビット部708と拡張レイヤー702の損失ビット部711に格納される。基本レイヤー701の損失ビット部708は、DPCMデータ部707の直後に続く領域である。損失ビットは、基本レイヤー701の損失ビット部708から順に格納され、続けて拡張レイヤー702の損失ビット部711に格納される。損失ビットを格納する順序の詳細は後述する。
【0075】
なお、DPCMデータ部707のDPCMデータ量が画素データ部704と同じサイズである場合は、基本レイヤー701には損失ビットを格納する領域が残らない。そのため、損失ビットは、拡張レイヤー702の損失ビット部711から順に格納される。また、損失ビットのビット数が、損失ビット部708、711のサイズに満たない場合、残った領域はスタッフィング部709、712で埋められる。
【0076】
図12(a)~(b)を参照して、DPCMモードにおいて損失ビットを格納する順序の詳細について説明する。
図12(a)~(b)は、符号化ブロックの画像データの全ビットを示す図であって、水平方向に48個の画素データの並びを表しており、垂直方向に10ビットのビット深度を表している。5画素目から44画素目の図示は省略されている。
【0077】
図12(a)は、QP=2の場合の量子化データ及び損失ビットを示しており、各画素の上位8ビットが量子化データ、下位2ビットが損失ビットである。損失ビットに記されたビット番号(0~95)は、損失ビット部708、711に格納される順番を示している。損失ビットの格納は、この順番で1ビット単位で、空き領域が存在しなくなるまで続けられる。即ち、左端画素の損失ビットの最上位ビットである画素番号0のbit1(ビット番号:0)が最初に格納される。続いて、画素番号1のbit1(ビット番号:1)、画素番号2のbit1(ビット番号:2)というように、左から右の画素の順にbit1の損失ビットが格納されていく。全てのbit1の格納が完了すると、下位ビットに移行し、左から右の画素の順にbit0の損失ビットが格納される。
【0078】
なお、ここでは損失ビットの格納順は左から右の画素の順であるものとしたが、
図12(b)に示すように、符号化ブロックの両端から交互に中央に向かっていくような順番にしてもよい。このようにすることで、符号化ブロックの両端ほど符号化による劣化が低減され、符号化ブロックの境界部分における目立ち易い劣化を低減することができる。
【0079】
次に、
図8を参照して、PCMモードの場合の符号化フォーマットについて説明する。
図8は、PCMモードにおける符号化フォーマットのデータ構造を示す図である。
図8において、符号化ブロック全体の階層符号化データは、基本レイヤー801(288ビット)と拡張レイヤー802(48ビット)とを含む。
【0080】
基本レイヤー801は、符号化モードを示す符号化モードフラグ803(1ビット)とPCMデータ部804(287ビット)とを含む。拡張レイヤー802は、損失ビット部805を含む。
【0081】
PCMモードにおける階層符号化データの生成方法について説明する。QP決定部115からの符号化モードフラグは、符号化モードフラグ803(1ビット)に格納される。本実施形態において、PCMモードを表す符号化モードフラグの値は1であるものとする。符号化部111EからのPCMデータ(48画素分)は、画素毎の符号長を用いてビット単位で順にパッキングされてPCMデータ部804に格納される。本実施形態において、PCMモード時のQPは4であるが、前述したように符号化ブロックの画素のうち1画素はQPを1段上げてQP=5で量子化されている。そのため、48画素中の47画素は画素あたり6ビットに量子化され、1画素は5ビットに量子化されている。従って、合計47×6+5=287ビットのPCMデータがPCMデータ部804に格納される。符号化部111Eからの損失ビットは、拡張レイヤー802に格納される。
【0082】
図12(c)~(d)を参照して、PCMモードにおいて損失ビットを格納する順序の詳細について説明する。
【0083】
図12(c)は、
図12(a)と同様に符号化ブロックの画像データの全ビットを示す図であって、PCMモード時の量子化データ及び損失ビットを示している。各画素の上位6ビットが量子化データ、下位4ビットが損失ビットである。但し、左端画素については上位5ビットが量子化データ、下位5ビットが損失ビットである。損失ビットに記されたビット番号(0~47)は、損失ビット部805に格納される順番を示している。損失ビットの格納は、この順番で1ビット単位で、空き領域が存在しなくなるまで続けられる。
【0084】
なお、ここでは損失ビットの格納順は左から右の画素の順であるものとしたが、
図12(d)に示すように、符号化ブロックの両端から交互に中央に向かっていくような順番にしてもよい。このようにすることで、符号化ブロックの両端ほど符号化による劣化が低減され、符号化ブロックの境界部分における目立ち易い劣化を低減することができる。
【0085】
このようにして、符号化ブロックごとの符号化モードに応じて多重化された基本レイヤー及び拡張レイヤーを含む階層符号化データは、ストリームデータとして出力端子102に出力され、メモリ30に入力される。
【0086】
(画像復号化部40の詳細)
次に、
図2を参照して、画像符号化部20で生成された階層符号化データを復号する画像復号化部40の詳細について説明する。
図2は、画像復号化部40の詳細な構成を示すブロック図である。画像復号化部40は、メモリ30に保持された階層符号化データを復号することができる。
【0087】
図2に示す画像復号化部40は、読み出し/分離部203、可変長復号化部204、加算器205、セレクタ206、逆量子化部207、予測部208、及び判定部209を含む。画像復号化部40は、専用のデバイス、ロジック回路、及びメモリなどを含む一体的なハードウェアとして構成されてもよいし、複数のデバイス等で分散して構成されてもよい。或いは、画像復号化部40は、メモリ、メモリに記憶されている処理プログラム、及び処理プログラムを実行するCPU等のコンピュータにより実装されてもよい。
【0088】
画像符号化部20で生成されてメモリ30に一時的に格納されたストリームデータ(階層符号化データ)は、入力端子201を介して読み出し/分離部203に入力される。前述のように、ストリームデータは基本レイヤーと拡張レイヤーとを含む。
【0089】
読み出し/分離部203は、入力されたストリームデータから、QP、符号化モードフラグ、符号データ、及び損失ビットを分離し、処理サイクル毎に順次出力する。損失ビット及びQPは逆量子化部207に出力され、符号化モードフラグはセレクタ206に出力される。
【0090】
本実施形態では、メモリ30のメモリ帯域の状況や復号後の画像データに要求される画像品質などに応じて、基本レイヤーだけを復号対象とするか、基本レイヤーと拡張レイヤーの両方を復号対象とするかを、符号化ブロック単位で選択することができる。この目的のために、判定部209は、メモリ30のメモリ帯域の状況や復号後の画像データに要求される画像品質など判定基準に基づいて、メモリ30から拡張レイヤーを読み出すか否かを判定する。拡張レイヤーを読み出すと判定された場合、読み出し/分離部203は、基本レイヤー及び拡張レイヤーの両方を読み出し、拡張レイヤーを読み出さないと判定された場合、読み出し/分離部203は、拡張レイヤーのみを読み出す。従って、画像復号化部40は、メモリ帯域に応じてメモリ30へのアクセス量を調整することが可能である。
【0091】
符号データは、可変長復号化部204及びセレクタ206に出力される。可変長復号化部204は、入力された符号データの可変長復号化を行い、復号化されたDPCMデータを加算器205に出力する。加算器205は、後述の予測部208からの予測データと復号されたDPCMデータとを加算して復号値を得て、セレクタ206及び予測部208に出力する。
【0092】
予測部208は、加算器205からの復号値を用いて現在の画像データの予測データを生成する。予測データの生成方法は、前述した符号化部111の予測部302における予測データの生成方法と同様である。
【0093】
セレクタ206は、符号化モードフラグに応じて、PCMモード時は読み出し/分離部203からの符号データを選択し、DPCMモード時は加算器205からのDPCMデータを選択し、量子化データとして逆量子化部207へ出力する。
【0094】
逆量子化部207は、読み出し/分離部203から入力されたQPを用いて、セレクタ206からの量子化データを逆量子化することにより、復号化画像データを生成する。そして、逆量子化部207は、読み出し/分離部203から入力された損失ビットを、逆量子化により得られた各々の画素データの元のビット位置に付加(復元)する。判定部209により拡張レイヤーを読み出すと判定された場合は、付加される損失ビットは、損失ビット部708に格納された損失ビット(損失ビットの第1の部分)及び損失ビット部711に格納された損失ビット(損失ビットの第2の部分)の両方である。判定部209により拡張レイヤーを読み出さないと判定された場合は、付加される損失ビットは、損失ビット部708に格納された損失ビット(損失ビットの第1の部分)である。
【0095】
このようにして、逆量子化部207は、損失ビットが付加された復号化画像データを生成し、出力端子202に出力する。逆量子化部207から出力された復号化画像データは、出力端子202を介して外部へと出力される。
【0096】
以上説明したように、本実施形態によれば、画像符号化部20は、符号化対象の画像データから、基本レイヤー及び拡張レイヤーを含む階層符号化データを生成する。基本レイヤーは、符号データ及び損失ビットの一部を含み、拡張レイヤーは、損失ビットの他の部分を含む。画像復号化部40は、拡張レイヤーを読み出すか否かを判定し、拡張レイヤーを読み出す場合は基本レイヤー及び拡張レイヤーから復号化画像データを生成し、拡張レイヤーを読み出さない場合は基本レイヤーから復号化画像データを生成する。従って、本実施形態によれば、画像データから従来とは異なるフォーマットで階層化された符号化データが生成され、復号時にメモリ帯域に応じてメモリ30へのアクセス量を調整することが可能である。
【0097】
なお、画像符号化部20は、仮符号化系110による仮符号化を行わずに本符号化系120による本符号化を行ってもよい。この場合、本符号化系120の符号化部111Eは、例えば予め決められた量子化パラメータに従って量子化を行ってもよい。予め決められた量子化パラメータに従う量子化が行われる場合、画像復号化部40も同じ量子化パラメータに従って逆量子化を行うことができるので、基本レイヤー701においてQP値部706は省略可能である。
【0098】
また、本実施形態において、画像データのビット数は10ビットに限定されるものではなく、8ビット、12ビットなど異なるビット数であってもよい。また、ブロックサイズは水平16画素×垂直1画素に限定されるものではなく、任意のサイズでよい。例えば、ブロックサイズは、水平4画素×垂直4画素のように2次元構造であってもよい。
【0099】
[その他の実施形態]
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【0100】
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【0101】
10…取得部、20…画像符号化部、30…メモリ、40…画像復号化部、100…画像処理装置、110…仮符号化系、111…符号化部、115…QP決定部、120…本符号化系、121…遅延部、123…多重化部