JPWO2014155543A1 - 符号化装置、方法、プログラム、コンピュータシステム、記録媒体 - Google Patents

符号化装置、方法、プログラム、コンピュータシステム、記録媒体 Download PDF

Info

Publication number
JPWO2014155543A1
JPWO2014155543A1 JP2015507753A JP2015507753A JPWO2014155543A1 JP WO2014155543 A1 JPWO2014155543 A1 JP WO2014155543A1 JP 2015507753 A JP2015507753 A JP 2015507753A JP 2015507753 A JP2015507753 A JP 2015507753A JP WO2014155543 A1 JPWO2014155543 A1 JP WO2014155543A1
Authority
JP
Japan
Prior art keywords
block
motion vector
depth
frame
target frame
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.)
Granted
Application number
JP2015507753A
Other languages
English (en)
Other versions
JP6090430B2 (ja
Inventor
芳 印
芳 印
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2014155543A1 publication Critical patent/JPWO2014155543A1/ja
Application granted granted Critical
Publication of JP6090430B2 publication Critical patent/JP6090430B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/521Processing of motion vectors for estimating the reliability of the determined motion vectors or motion vector field, e.g. for smoothing the motion vector field or for correcting motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/567Motion estimation based on rate distortion criteria

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

画質の劣化を抑制しつつ、動きベクトル検出処理にかかる演算量を削減する。符号化装置(100)は、4種類のDepth候補のうち、参照フレーム(rF)から分割される複数のDepth候補の中から、CUの動きベクトルが検出された際のDepthを特定する。続けて、符号化装置(100)は、対象フレーム(tF)から分割されるCUの動きベクトルを検出する際に、特定したCUのサイズに基づいて、複数のDepth候補のうちの対象フレーム(tF)を分割するいずれかのDepth候補を選択する。

Description

本発明は、符号化装置、コンピュータシステム、符号化方法、符号化プログラム、および記録媒体に関する。
従来、動画像のうちの符号化対象となる対象フレームを分割した対象ブロックに類似するブロックを参照先となる参照フレームから探索し、対象ブロックから類似するブロックまでの空間的な位置の差を対象ブロックの動きベクトルとして検出する技術がある。また、符号化後の動画像の画質の劣化を抑制するために、対象ブロックのブロックサイズを可変にして動きベクトルを検出する技術がある。
関連する先行技術としては、たとえば、縮小符号化対象画像と縮小参照画像とを生成し、縮小符号化対象画像を複数個の領域に分割した縮小分割領域画像の領域動きベクトルの大きさと信頼度とに基づいて、符号化対象ブロックのサイズの候補を絞り込むものがある。また、動き補償予測方式の入力信号にフィルタ処理をした信号と動画像信号との差分情報から生成した評価値を基に選択した複数のブロックサイズについて差分情報から新たな評価値を算出し、新たな評価値を基に最適なブロックサイズを選択する技術がある。(たとえば、下記特許文献1、2を参照。)
特開2006−180196号公報 特開2007−060164号公報
しかしながら、従来技術によれば、対象ブロックのブロックサイズを可変にして、ブロックサイズの候補となるブロックサイズ候補ごとに動きベクトルの候補を求めると、動きベクトル検出にかかる演算量が増大する。
1つの側面では、本発明は、画質の劣化を抑制しつつ、動きベクトル検出にかかる演算量を削減することができる符号化装置、コンピュータシステム、符号化方法、符号化プログラム、および記録媒体を提供することを目的とする。
本発明の一側面によれば、一連のフレームにおける符号化対象の対象フレームの参照先となる参照フレームについて、参照フレームから分割されるブロックの複数のブロックサイズ候補の中から、ブロックの動きベクトルが検出された際のブロックサイズを特定し、対象フレームから分割されるブロックの動きベクトルを検出する際に、特定したブロックサイズに基づいて、複数のブロックサイズ候補のうちの対象フレームを分割するいずれかのブロックサイズ候補を選択する符号化装置、コンピュータシステム、符号化方法、符号化プログラム、および記録媒体が提案される。
本発明の一態様によれば、画質の劣化を抑制しつつ、動きベクトル検出にかかる演算量を削減することを図ることができるという効果を奏する。
図1は、本実施の形態にかかる符号化装置の動作例を示す説明図である。 図2は、コンピュータシステムのハードウェアの一例を示すブロック図である。 図3は、符号化装置のハードウェア構成例を示すブロック図である。 図4は、CTBとCUの関係の一例を示す説明図である。 図5は、CUの種類の一例を示す説明図である。 図6は、PUの種類の一例を示す説明図である。 図7は、符号化装置の機能例を示すブロック図である。 図8は、参照フレームのDepthの一例を示す説明図である。 図9は、対象フレームの動きベクトル検出を行うDepth候補の第1の例を示す説明図である。 図10は、対象フレームの動きベクトル検出を行うDepth候補の第2の例を示す説明図である。 図11は、対象フレームの動きベクトル検出を行うDepth候補の第3の例を示す説明図である。 図12は、対象フレームにおける動きベクトル検出処理手順の第1の例を示すフローチャートである。 図13は、対象フレームにおける動きベクトル検出処理手順の第2の例を示すフローチャートである。 図14は、第1動きベクトル検出処理手順の一例を示すフローチャートである。 図15は、第2動きベクトル検出処理手順の一例を示すフローチャートである。
以下に図面を参照して、開示の符号化装置、コンピュータシステム、符号化方法、符号化プログラム、および記録媒体の実施の形態を詳細に説明する。
図1は、本実施の形態にかかる符号化装置の動作例を示す説明図である。符号化装置100は、動きベクトルを検出するコンピュータである。符号化装置100は、HEVC(High Efficiency Video Coding)が定める規格に従って、フレームが分割されたブロックごとに動画像を符号化する。
HEVCより前の規格である、H.264やMPEG(Moving Picture Experts Group)−2は、動画像を構築する各フレームを、16×16[画素]のブロックで分割し、分割したブロックごとに、符号化処理を行う。これに対し、HEVCは、分割するブロックのブロックサイズの自由度を高めた手法を提供する。
具体的に、HEVCにおいて、フレームは、Nを整数として、N×N[画素]の正方形のブロックに分割される。N×N[画素]の正方形のブロックは、LCU(Largest Coding Unit)と呼称される。HEVCでは、Nを、64とする。さらに、HEVCにおいて、LCUは、CTB(Coding Tree Block)に分割される。CTBは、CU(Coding Unit)というブロックに分割される。CTBとCUの関係は、図4にて後述する。CUの複数のブロックサイズ候補としては、64×64[画素]と、32×32[画素]と、16×16[画素]と、8×8[画素]という4種類がある。
64×64[画素]のCUは、Depth0と定義される。32×32[画素]のCUは、Depth1と定義される。16×16[画素]のCUは、Depth2と定義される。8×8[画素]のCUは、Depth3と定義される。
以下、CUのサイズを、「Depth」と称する。また、CUのブロックサイズ候補を、以下、単に「Depth候補」と称する。図5にて、Depthについて説明する。また、HEVCにおいて、CUは、さらに、フレーム間予測を行う単位として、PU(Prediction Unit)に分割される。PUの種類については、図6にて後述する。
圧縮符号化方式における動きベクトル検出処理は、符号化対象の対象フレームにおいて、あるブロックの参照フレームに対する物体の位置座標が評価され、最も類似するブロックの位置座標が検出される。動きベクトルは、あるブロックの位置座標から最も類似するブロックの位置座標までを表す。
ここで、HEVCが定める規格に従って符号化する装置は、複数のDepth候補の各々のDepth候補ごとにCUの動きベクトル候補を決定する処理を行う。そして、符号化する装置は、Depth候補ごとのCUの動きベクトル候補から、最も類似する動きベクトル候補を動きベクトルとして検出する。なお、具体的には、CUが分割されたPUごとに動きベクトルが決定されることになるが、図1では、説明の簡略化のため、「CUの動きベクトルを検出」と記述する。
具体的に、符号化を行う装置は、各々のDepth候補に従って分割したブロックの画素値と、参照フレーム上の探索範囲内の、動きベクトル候補が示す参照ブロックの画素値との差分を表す評価値を算出する。そして、符号化を行う装置は、評価値が最も小さい動きベクトル候補を、各々のDepth候補ごとのブロックの動きベクトル候補とする。続けて、符号化を行う装置は、各々のDepth候補ごとのブロックの動きベクトル候補から、評価値が最も小さい動きベクトル候補を、動きベクトルとして検出する。評価値の具体例については、図14にて後述する。
これにより、HEVCが定める規格に従って符号化する装置は、CTB内のエッジ部分の近傍部分は詳細な単位となるCUのサイズで符号化するとともに、変化が平坦な部分は大きな単位となるCUのサイズで符号化する、ということが可能になる。しかしながら、HEVCが定める規格に従って符号化すると、CUのサイズごとに動きベクトル候補を求めるため、動きベクトル検出処理にかかる演算量が増大することになる。
そこで、本実施の形態にかかる符号化装置100は、対象フレームのブロックの動きベクトル検出を行う際に、参照フレームのブロックの動きベクトル検出時に採用したブロックサイズに近似するブロックサイズを用いる。これにより、符号化装置100は、符号化後の動画像の画質の劣化を抑制しつつ、動きベクトル検出処理にかかる演算量を削減することができる。
図1では、一連のフレームにおける符号化対象の対象フレームtFと、対象フレームtFの参照先となる参照フレームrFと、を表示する。一連のフレームは、空等の変化の少ないものを写した動画像であるとする。参照フレームrFは、既に符号化済のフレームである。図1に示す対象フレームtFは、図1に示す参照フレームrFに映った雲が左方向に移動した状態を写したものである。このように、参照フレームrFと対象フレームtFとは、似たような画像になる可能性が高い。
符号化装置100は、参照フレームrFの、あるCTBについて、4種類のDepth候補のうち、Depth1である32×32[画素]で分割されたブロックの動きベクトル候補が最も類似したとする。
そして、符号化装置100は、参照フレームrFから分割される複数のDepth候補の中から、CUの動きベクトルが検出された際のDepthを特定する。図1の例では、符号化装置100は、CUのサイズとしてDepthを特定する。
続けて、符号化装置100は、対象フレームtFから分割されるCUの動きベクトルを検出する際に、特定したCUのサイズに基づいて、複数のDepth候補のうちの対象フレームtFを分割するいずれかのDepth候補を選択する。いずれかのDepth候補は、1つでもよいし、複数でもよい。
図1の例では、符号化装置100は、複数のDepth候補のうちの、Depth1に近似する、Depth0〜Depth2をいずれかのDepth候補として選択する。Depth候補を選択後、符号化装置100は、選択したいずれかのDepth候補ごとに、選択したCUのサイズで分割したCUごとに動きベクトル候補を決定する。
このように、符号化装置100は、選択したいずれかのDepth候補の動きベクトル候補に絞って動きベクトル候補を求めることにより、画質の劣化を抑制して、動きベクトル検出にかかる演算量を削減することができる。ここで、複数のDepth候補の動きベクトル候補を決定して、動きベクトルを検出する処理を、第1動きベクトル検出処理とする。また、複数のDepth候補のうちの選択したいずれかのDepth候補の動きベクトル候補を決定して、動きベクトルを検出する処理を、第2動きベクトル検出処理とする。以下、図2〜図15を用いて、符号化装置100について説明する。
(コンピュータシステム200のハードウェア構成例)
次に、符号化装置100が適用されるコンピュータシステム200のハードウェアの一例について説明する。コンピュータシステム200は、たとえば、動画像を記録・再生する機能を有するシステムであり、具体的には、たとえば、パーソナル・コンピュータ、テレビジョン、レコーダ、スマートフォン、ビデオカメラ、デジタルカメラなどである。
図2は、コンピュータシステムのハードウェアの一例を示すブロック図である。図2において、コンピュータシステム200は、CPU(Central Processing Unit)201と、ROM(Read‐Only Memory)202と、RAM(Random Access Memory)203と、を含む。また、コンピュータシステム200は、撮像素子204と、撮像素子I/F(InterFace)205と、操作パネル206と、記録メディア207と、外部I/F208と、符号化装置100とを含む。
また、コンピュータシステム200は、ディスプレイ209と、ディスプレイ出力I/F210とを含む。また、CPU201〜RAM203と、撮像素子I/F205と、外部I/F208と、ディスプレイ出力I/F210と、符号化装置100とは、バス211で相互に接続される。
CPU201は、コンピュータシステム200の全体の制御を司る演算処理装置である。ROM202は、コンピュータシステム200のブートプログラムなどのプログラムを記憶する不揮発性メモリである。RAM203は、CPU201のワークエリアとして使用される揮発性メモリである。
撮像素子204は、対象物から発した光を電気信号に変換する装置である。たとえば、撮像素子204は、CCD(Charge Coupled Device)イメージセンサ、やCMOS(Complementary Metal Oxide Semiconductor)イメージセンサなどである。
撮像素子I/F205は、記録時に撮像素子204を制御することにより、撮像素子204からの信号を画像フォーマットに変換してRAM203に格納する装置である。操作パネル206は、コンピュータシステム200が有する液晶タッチパネルや操作ボタンである。記録メディア207は、フラッシュROM等といった記憶装置である。また、記録メディア207は、本実施の形態にかかる符号化プログラムを記録してもよい。外部I/F208は、操作パネル206、および記録メディア207を制御する。また、外部I/F208は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワークを介して、コンピュータシステム200以外の他の装置に接続されてもよい。
ディスプレイ209は、撮像素子204が記録した画像フォーマットを表示する。ディスプレイ出力I/F210は、ディスプレイ209の制御を行う。
図3は、符号化装置のハードウェア構成例を示すブロック図である。符号化装置100は、予測誤差信号生成部301と、整数変換部302と、量子化部303と、エントロピー符号化部304と、逆量子化部305と、逆整数変換部306と、参照フレーム生成部307と、ループフィルタ処理部308を有する。さらに符号化装置100は、フレームメモリ309と、フレーム内予測部310と、動き検出部311と、動き補償部312と、予測画像選択部313とを有する。
入力動画像は、動画像を形成する各フレームの分割に四分木ブロック分割が採用されたものとする。予測誤差信号生成部301は、入力動画像のうちの対象フレームtFと予測画像信号とが入力され、対象フレームtFと予測フレームとなる参照フレームrFの差分を演算することにより、予測誤差信号を生成する。
整数変換部302は、予測誤差信号生成部301からの予測誤差信号を整数変換した信号を出力する。量子化部303は、整数変換部302からの出力信号を量子化する。量子化部303の処理により、予測誤差信号の符号量が低減される。
エントロピー符号化部304は、量子化部303からの量子化データと、フレーム内予測部310からの出力データと、動き検出部311から出力される動きベクトルの情報とをエントロピー符号化し、対象フレームtFに対する符号化画像データを出力する。入力動画像の各フレームに対して符号化画像データを出力したデータが、出力動画像となる。ここで、エントロピー符号化とは、シンボルの出現頻度に応じて可変長の符号を割り当てる符号化方式を指す。
逆量子化部305は、量子化部303からの量子化データを逆量子化する。逆整数変換部306は、逆量子化部305からの出力データに逆整数変換処理を施す。逆整数変換部306の処理により、符号化前の予測誤差信号と同程度の信号を得ることができる。
参照フレーム生成部307は、動き補償部312により動き補償されたPUの画素値と、逆量子化部305および逆整数変換部306によって復号された予測誤差信号とを加算する。参照フレーム生成部307の処理により、動き補償された参照フレームrFのPUの画素値が生成される。
ループフィルタ処理部308は、PUの画素値に対してデブロッキングフィルタ、サンプル・アダプティプ・オフセット(SAO:Sample Adaptive Offset)と適応型ループフィルタ(ALF:Adaptive Loop Filter)処理を行って、ブロックノイズの発生を抑制した後、フレームメモリ309に蓄積する。
フレーム内予測部310は、同じフレームにおける周辺画素から、予測画像のマクロブロックを生成する。動き検出部311は、入力動画像の画素値と、フレームメモリ309から読み込んだ参照フレームrFのデータを基に動きベクトルを算出し、出力する。動き検出部311の詳細は、図7にて後述する。
動き補償部312は、動き検出部311から出力された動きベクトルに基づいて、フレームメモリ309から読み込んだ参照フレームrFのデータに対して動き補償することにより、動き補償された予測画像のPUを生成する。
予測画像選択部313は、フレーム内予測部310または動き補償部312のどちらか一方から出力される予測画像のマクロブロックを選択し、予測誤差信号生成部301および参照フレーム生成部307に出力する。次に、HEVCにて定義されたCTBと、CUと、PUとについて、図4〜図6を用いて説明する。
図4は、CTBとCUの関係の一例を示す説明図である。LCUは、変換や量子化などを行うサブブロックであるCTBに分割される。CTBは、16×16[画素]と、32×32[画素]と、64×64[画素]の3種類がある。CTBが16×16[画素]である場合、CUが取り得るDepthは、Depth2とDepth3となる。また、CTBが32×32[画素]である場合、CUが取り得るDepthは、Depth1〜Depth3となる。
CTBは、画像データの特徴に合わせて、四分木(Quad Tree)ブロック分割により再帰的に分割される。具体的に、CTBは、4つの領域に分割され、分割した領域がさらに4つの領域に細分される、という処理が繰り返される。この分割による領域が、CUと呼ばれる。CUが符号化処理の基本単位となる。四分木ブロック分割を採用した動画像は、画像中の変化が激しいエッジ部や、エッジ部分の近傍部分は詳細な単位のブロックで符号化され、変化が平坦な部分は大きな単位のブロックで符号化される、ということが可能となる。たとえば、四分木ブロック分割による符号化を行う装置は、符号化対象の動画像のある画像内の、物体の輪郭などが表示された箇所を細かな単位でより詳細に符号化し、空等の変化が少ない箇所を大まかな単位で符号化する、ということが可能である。CUの種類について、図5を用いて説明する。
図5は、CUの種類の一例を示す説明図である。CUの種類は、図5に示すように、Depth0である64×64[画素]と、Depth1である32×32[画素]と、Depth2である16×16[画素]と、Depth3である8×8[画素]という4種類がある。CUは、PUという単位でフレーム間予測を行う。PUの種類について、図6を用いて説明する。
図6は、PUの種類の一例を示す説明図である。PUは、CUのDepthごとに3つの種類がある。CUは、一つ以上のPUを含む。PUは、CUと同一サイズと、横方向に2分割と、縦方向に2分割と、という3種類から選択することができる。
たとえば、CUがDepth0の場合、PUは、64×64[画素]と、64×32[画素]と、32×64[画素]という3種類がある。図6に示すように、PUは、8×8[画素]から64×64[画素]までの12種類がある。また、PUのサイズを、「PUサイズ」と呼称する。
(符号化装置100の機能)
次に、符号化装置100の機能について説明する。図7は、符号化装置の機能例を示すブロック図である。符号化装置100は、判断部701と、特定部702と、選択部703と、算出部704と、検出部705と、を含む。
なお、判断部701〜検出部705は、記憶装置に記憶されたプログラムをCPU201が実行することにより、判断部701〜検出部705の機能を実現してもよい。記憶装置とは、具体的には、たとえば、図2に示したROM202、RAM203、記録メディア207などである。
また、符号化装置100は、Depth候補テーブル711にアクセス可能である。Depth候補テーブル711は、符号化装置100内の記憶領域、またはROM202、RAM203、記録メディア207、といった記憶装置に格納される。Depth候補テーブル711の記憶内容の一例は、図9〜図11に示す。
判断部701は、対象フレームtFが一連のフレームにおける所定の順番のフレームであるか否かを判断する。また、判断部701は、対象フレームtFの画素値と、参照フレームrFの画素値との差分を表す値が所定の閾値未満か否かを判断してもよい。ここで、所定の順番や所定の閾値は、符号化装置100の開発者または符号化装置100の利用者によって指定される数値である。
たとえば、所定の順番は、2番目〜9番目、11番目〜19番目、…、となる。また、判断部701は、対象フレームtFが一連のフレームにおける所定の順番のフレームでないか否かを判断してもよい。このとき、所定の順番は、1番目、10番目、20番目、…となる。また、たとえば、判断部701は、対象フレームtFの画素値の平均と、参照フレームrFの画素値の平均との差分が、所定の閾値未満か否かを判断する。より詳細については、図13にて後述する。なお、判断結果は、符号化装置100内の記憶領域に記憶される。
特定部702は、参照フレームrFについて、参照フレームrFから分割されるブロックの複数のDepth候補の中から、CU内の各PUの動きベクトルが検出された際のDepthを特定する。
また、特定部702は、判断部701によって対象フレームtFが所定の順番のフレームであると判断された場合、参照フレームrFから分割されるDepthを特定してもよい。たとえば、特定部702は、判断部701が所定の順番として、2番目〜9番目、11番目〜19番目、…、のフレームであるとは判断した場合、参照フレームrFから分割されるDepthを特定してもよい。なお、判断部701が、特定部702を実行しない場合を判断してもよい。
また、特定部702は、判断部701によって値が所定の閾値未満であると判断された場合、ブロックサイズを特定してもよい。なお、特定されたDepthは、符号化装置100内の記憶領域に記憶される。
選択部703は、対象フレームtFから分割されるCU内の各PUの動きベクトルを検出する際に、特定部702によって特定されたDepthに基づいて、複数のDepth候補のうちの対象フレームtFを分割するいずれかのDepth候補を選択する。具体的な選択手順は、図9〜図11にて後述する。
また、特定部702によって参照フレームrFが分割されたブロックの動きベクトルが検出された際にDepthが複数特定される場合がある。このとき、選択部703は、複数のDepthの各々のDepthのうちの相対的に小さいDepthに基づいて、複数のDepth候補のうちの対象フレームtFを分割するいずれかのDepth候補を選択してもよい。また、Depthが複数特定された場合、選択部703は、複数のDepthの各々のDepthに従って分割されたCUの個数に基づいて、複数のDepth候補のうちの対象フレームtFを分割するいずれかのDepth候補を選択してもよい。なお、Depthが複数特定された場合については、図8にて後述する。また、選択されたDepth候補は、符号化装置100内の記憶領域に記憶される。
算出部704は、選択部703によって選択されたいずれかのDepth候補に対応して、対象フレームtFからいずれかのDepth候補に従って分割される各CUの画素値と参照フレームrF上の探索範囲内のブロックの画素値との差分を表す評価値を算出する。具体的な評価値の算出例は、後述する(2)式にて説明する。
検出部705は、算出部704によって算出されたいずれかのブロックサイズ候補に従って分割した各ブロックの評価値に基づいて、対象フレームtFが分割されたブロックの動きベクトルを検出する。具体的な検出の例は、図14と図15にて後述する。なお、算出された動きベクトルは、符号化装置100内の記憶領域に記憶される。
図8は、参照フレームのDepthの一例を示す説明図である。符号化装置100は、参照フレームrFのCTBに含まれるCUに基づいて、参照フレームrFのDepth結果を特定する。このとき、参照フレームrFのDepth結果が複数特定された場合について、図8の(a)と図8の(b)について説明する。
図8の(a)では、符号化装置100が、参照フレームrFのCTBに含まれるCUのうちの、最もサイズが小さいCUに基づいて、対象フレームtFを分割するいずれかのDepth候補を選択する例について説明する。図8の(b)では、参照フレームrFのCTBに含まれるCUのうちの、最も個数が多いCUに基づいて、対象フレームtFを分割するいずれかのブロックサイズ候補を選択する例について説明する。
図8の(a)が示すCTBは、Depth1である32×32[画素]の3個のCUと、Depth2である16×16[画素]の4個のCUと、を含む。符号化装置100は、Depthが最も小さいDepth2に基づいて、対象フレームtFを分割するいずれかのDepth候補を選択する。
図8の(b)が示すCTBは、Depth1である32×32[画素]の2個のCUと、Depth2である16×16[画素]の7個のCUと、Depth3である8×8[画素]の4個のCUと、を含む。符号化装置100は、最も個数が多いDepth2に基づいて、対象フレームtFを分割するいずれかのDepth候補を選択する。
次に、図9〜図11を用いて、具体的なDepth候補の選択例を3つ説明する。図9〜図11に示すDepth候補テーブル711は、DepthごとのDepth候補を記憶するテーブルである。図9〜図11に示すDepth候補テーブル711は、表示の簡略化のため、各レコードの“Depth”を省略してある。Depth候補テーブル711の説明は、図9にて行う。
図9は、対象フレームの動きベクトル検出を行うDepth候補の第1の例を示す説明図である。図9に示すDepth候補テーブル711は、レコード901−1〜レコード901−4を有する。
Depth候補テーブル711は、参照フレームDepthと、対象フレームDepth候補という2つのフィールドを有する。参照フレームDepthフィールドには、検索キーとなる参照フレームrFのDepth結果が格納される。対象フレームDepth候補フィールドは、図8にて説明した、特定した参照フレームDepthに対応する、対象フレームtFのDepth候補の値が格納される。
たとえば、レコード901−2は、参照フレームDepthがDepth1であった場合に、対象フレームDepth候補がDepth0〜Depth2であることを示す。
レコード901−2とレコード901−3は、対象フレームDepth候補フィールドに、近似するDepthとして、参照フレームDepthと同一サイズのDepthと、1つ小さいDepthと1つ大きいDepthとを記憶する。
レコード901−1は、参照フレームDepthが、Depthが最も大きいDepth0であるため、対象フレームDepth候補フィールドに、Depth0〜Depth2を記憶する。また、レコード901−1は、参照フレームDepthフィールドにDepth0を記憶し、対象フレームDepth候補フィールドに、Depth0と、Depth1とを記憶してもよい。
図10は、対象フレームの動きベクトル検出を行うDepth候補の第2の例を示す説明図である。図10に示すDepth候補テーブル711は、レコード1001−1〜レコード1001−4を有する。たとえば、レコード1001−2は、参照フレームDepthがDepth1であった場合に、対象フレームDepth候補がDepth0〜Depth2であることを示す。
レコード1001−3とレコード1001−4は、対象フレームDepth候補フィールドに、近似するDepthとして、参照フレームDepthと同一サイズのDepthと、1つ大きいDepthと2つ大きいDepthとを記憶する。
レコード1001−2は、参照フレームDepthよりDepthが2つ大きいDepthがないため、対象フレームDepth候補フィールドに、Depth0〜Depth2を記憶する。また、レコード1001−2は、対象フレームDepth候補フィールドに、Depth0と、Depth1とを記憶してもよい。
このように、図10に示すDepth候補テーブル711は、Depthが大きくなるようにDepth候補を選択するため、符号化対象となる動画像が空等の変化の少ないものを撮影したものであれば、画質の劣化をより抑えることができる。
図11は、対象フレームの動きベクトル検出を行うDepth候補の第3の例を示す説明図である。図11に示すDepth候補テーブル711は、レコード1101−1〜レコード1101−4を有する。たとえば、レコード1101−2は、参照フレームDepthがDepth1であった場合に、対象フレームDepth候補がDepth1〜Depth3であることを示す。
レコード1101−1とレコード1101−2は、対象フレームDepth候補フィールドに、近似するDepthとして、参照フレームDepthと同一サイズのDepthと、1つ小さいDepthと2つ小さいDepthとを記憶する。
レコード1101−3は、参照フレームDepthより2つ小さいDepthがないため、対象フレームDepth候補フィールドに、Depth1〜Depth3を記憶する。また、レコード1101−3は、対象フレームDepth候補フィールドに、Depth2と、Depth3とを記憶してもよい。
このように、図11に示すDepth候補テーブル711は、Depthが小さくなるようにDepth候補を選択するため、符号化対象となる動画像がエッジが多い、変化の多いものを撮影したものであれば、画質の劣化をより抑えることができる。
図9〜図11で示したDepth候補テーブル711は、CTBが64×64[画素]であるときの記憶内容を示す。たとえば、CTBが32×32[画素]である場合、Depth候補テーブル711の対象フレームDepth候補フィールドには、2つのDepth、または1つのDepthが格納される。
ここで、図9〜図11で示したDepth候補テーブル711の違いについて説明する。まず、図9〜図11で示したDepth候補テーブル711を採用した際の画質の劣化の抑制度合いについて説明する。画質の劣化をより抑制できる場合とは、第2動きベクトル検出処理により決定されたDepthと第1動きベクトル検出処理により決定されたDepthとが一致する確率が高いときである。符号化装置100が図9と図10とが示したDepth候補テーブル711を採用した場合、符号化装置100が図11で示すDepth候補テーブル711を採用した場合よりも、一致する確率が高くなる、という実験結果が得られた。
また、図9〜図11で示したDepth候補テーブル711のうち、符号化装置100がどのDepth候補テーブル711を使用するかは、符号化装置100の開発者が指定してもよいし、符号化装置100の利用者が指定してもよい。
符号化装置100の利用者が指定する場合、たとば、符号化装置100は、ディスプレイ209に設定画面を表示して、Depth候補テーブル711のうち、使用するDepth候補テーブル711を選択するダイアログを表示する。そして、符号化装置100は、符号化装置100の利用者が符号化対象となる動画像の内容に応じて指定したDepth候補テーブル711の識別情報を受け付ける。たとえば、符号化対象となる動画像が、空等を撮影した動画像であれば、符号化装置100の利用者は、図10で示したDepth候補テーブル711を指定し、エッジが多い動画像であれば、図11で示したDepth候補テーブル711を指定する。次に、図12〜図15を用いて、符号化装置100が実行するフローチャートについて説明する。
まず、図12と図13とを用いて、対象フレームtFにおける動きベクトル検出処理のフローチャートを説明する。符号化装置100は、図12で示すフローチャートか図13で示すフローチャートかのいずれかを採用して、動きベクトルを検出する。
図12は、対象フレームにおける動きベクトル検出処理手順の第1の例を示すフローチャートである。対象フレームにおける動きベクトル検出処理は、対象フレームtFに含まれる各PUの動きベクトルを検出する処理である。
符号化装置100は、対象フレームtF内の、先頭のLCUを選択する(ステップS1201)。次に、符号化装置100は、対象フレームtFが先頭のフレームまたはリフレッシュされるフレームか否かを判断する(ステップS1202)。ここで、リフレッシュされるフレームとは、所定の順番以外のフレームである。
対象フレームtFが先頭のフレームまたはリフレッシュされるフレームである場合(ステップS1202:Yes)、符号化装置100は、選択したLCU内の先頭のCTBを選択する(ステップS1203)。次に、符号化装置100は、第1動きベクトル検出処理を実行する(ステップS1204)。第1動きベクトル検出処理の詳細は、図14にて後述する。続けて、符号化装置100は、LCU内の全てのCTBを選択したか否かを判断する(ステップS1205)。まだ選択していないCTBがある場合(ステップS1205:No)、符号化装置100は、次のCTBを選択する(ステップS1206)。そして、符号化装置100は、ステップS1204の処理に移行する。
対象フレームtFが先頭のフレームでなく、かつ、リフレッシュされるフレームでない場合(ステップS1202:No)、符号化装置100は、選択したLCU内の先頭のCTBを選択する(ステップS1207)。次に、符号化装置100は、第2動きベクトル検出処理を実行する(ステップS1208)。第2動きベクトル検出処理の詳細は、図15にて後述する。続けて、符号化装置100は、LCU内の全てのCTBを選択したか否かを判断する(ステップS1209)。まだ選択していないCTBがある場合(ステップS1209:No)、符号化装置100は、次のCTBを選択する(ステップS1210)。そして、符号化装置100は、ステップS1208の処理に移行する。
全てのCTBを選択した場合(ステップS1205:Yes、ステップS1209:Yes)、符号化装置100は、対象フレームtF内の全てのLCUを選択したか否かを判断する(ステップS1211)。まだ選択していないLCUがある場合(ステップS1211:No)、符号化装置100は、次のLCUを選択する(ステップS1212)。そして、符号化装置100は、ステップS1202の処理に移行する。
全てのLCUを選択した場合(ステップS1211:Yes)、符号化装置100は、対象フレームtFにおける動きベクトル検出処理を終了する。対象フレームにおける動きベクトル検出処理を実行することにより、符号化装置100は、対象フレームtFに含まれる各PUの動きベクトルを検出することができる。
図13は、対象フレームにおける動きベクトル検出処理手順の第2の例を示すフローチャートである。対象フレームにおける動きベクトル検出処理は、対象フレームtFに含まれる各PUの動きベクトルを検出する処理である。また、ステップ図13に示すステップS1301、ステップS1303〜ステップS1312は、ステップS1201、ステップS1203〜ステップS1212と同一の処理であるため、説明を省略する。
ステップS1301、またはステップS1312の処理終了後、符号化装置100は、ABS(対象フレームtFのLCUの平坦度−参照フレームrFのLCUの平坦度)が所定の閾値より大きいか否かを判断する(ステップS1302)。ここで、ABS()は、引数の絶対値を返す関数である。また、平坦度は、下記(1)式により求められる。
平坦度=(ΣABS(LCU内の画素値−LCU内の画素平均値))/LCU内の総画素数 …(1)
LCU内の画素値は、たとえば、輝度信号Yとなる。また、LCU内の画素値は、色差信号Cb、Crでもよい。LCU内の総画素数は、4096となる。また、(1)式の代わりに、平坦度は、LCU内の画素値の平均でもよいし、LCU内の画素値の分散でもよいし、LCU内の画素値の標準偏差でもよい。
ABS(対象フレームtFのLCUの平坦度−参照フレームrFのLCUの平坦度)が所定の閾値より大きい場合(ステップS1302:Yes)、符号化装置100は、ステップS1303の処理を実行する。一方、ABS(対象フレームtFのLCUの平坦度−参照フレームrFのLCUの平坦度)が所定の閾値以下の場合(ステップS1302:No)、符号化装置100は、ステップS1307の処理に移行する。
対象フレームにおける動きベクトル検出処理を実行することにより、符号化装置100は、対象フレームtFに含まれる各PUの動きベクトルを検出することができる。さらに、符号化装置100は、平坦度の差分を比較することにより、対象フレームtFが参照フレームrFから大きく変化した場合に第1動きベクトル検出処理を行うことになる。したがって、参照フレームrFと対象フレームtFが類似しない場合に、全てのDepthに対する動きベクトル検出処理を行うことになるため、符号化装置100は、図13に示すフローチャートより画質の劣化を抑制することができる。
図14と図15とでは、PUの評価値とCUの評価値とを算出する。PUの評価値とCUの評価値とは、ME(Motion Estimation)コストを評価値として用いる。MEコストとは、動きベクトルの符号量や参照画像を指定するための符号量を見積もったものである。MEコストであるCostの算出式は、下記(2)式となる。
Cost(Mode∈Ω)=SAD+λ*R …(2)
ただし、Ωは、当該PUを符号化するための候補モードの全体集合である。SAD(Sum of Absolute Difference)は、動きベクトル検出対象ブロックと参照フレームrF中のブロックの各々対応する位置にある画素の値の差分絶対値を合計した差分絶対値和を示す。λは、量子化パラメータの関数として与えられるLagrange未定乗数である。また、Rは、当該モードModeで符号化した場合の総符号量である。また、評価値には(2)式に限らず、SAD、SSE(Summation of Square Error)を使用してもよい。
図14は、第1動きベクトル検出処理手順の一例を示すフローチャートである。第1動きベクトル検出処理は、全てのDepth候補の評価値を算出して、動きベクトルを決定する処理である。また、図14では、CTBが64×64[画素]であるとする。
符号化装置100は、Depth0の各PUの動きベクトル候補検出を行い、各PUの評価値を算出する(ステップS1401)。具体的に、符号化装置100は、64×64[画素]のPUの評価値と、64×32[画素]の上のPUの評価値および下のPUの評価値の和と、32×64[画素]の左のPUの評価値および右のPUの評価値の和と、を算出する。評価値は、(2)式を用いて算出された値である。また、64×32[画素]の上のPUの評価値および下のPUの評価値の和を、「64×32[画素]のPUの評価値」とする。同様に、32×64[画素]の左のPUの評価値および右のPUの評価値の和を、「32×64[画素]のPUの評価値」とする。
次に、符号化装置100は、Depth0の各PUの評価値に基づいて、Depth0のPUサイズを決定する(ステップS1402)。具体的に、符号化装置100は、64×64[画素]のPUの評価値と、64×32[画素]のPUの評価値と、32×64[画素]のPUの評価値とのうち、最小の評価値となるPUを、Depth0のPUサイズに決定する。また、最小となった評価値を、Depth0の評価値とする。
続けて、符号化装置100は、Depth1の各PUの動きベクトル候補検出を行い、各PUの評価値を算出する(ステップS1403)。具体的に、符号化装置100は、32×32[画素]のPUの評価値と、32×16[画素]の上のPUの評価値および下のPUの評価値の和と、16×32[画素]の左のPUの評価値および右のPUの評価値の和と、を算出する。また、CTBが64×64[画素]であれば、Depth1は、4個のCUを含むことができるため、符号化装置100は、ステップS1403の処理を4回繰り返す。また、32×16[画素]の上のPUの評価値および下のPUの評価値の和を、「32×16[画素]のPUの評価値」とする。同様に、16×32[画素]の左のPUの評価値および右のPUの評価値の和を、「16×32[画素]のPUの評価値」とする。
次に、符号化装置100は、Depth1の各PUの評価値に基づいて、Depth1のPUサイズを決定する(ステップS1404)。具体的に、符号化装置100は、32×32[画素]のPUの評価値と、32×16[画素]のPUの評価値と、16×32[画素]のPUの評価値とのうち、最小の評価値となるPUを、Depth1のPUサイズに決定する。また、符号化装置100は、最小となった評価値を、Depth1の評価値とする。また、CTBが64×64[画素]であれば、Depth1は、4個のCUを含むことができるため、符号化装置100は、ステップS1404の処理を4回繰り返す。
続けて、符号化装置100は、Depth2の各PUの動きベクトル候補検出を行い、各PUの評価値を算出する(ステップS1405)。具体的に、符号化装置100は、16×16[画素]のPUの評価値と、16×8[画素]の上のPUの評価値および下のPUの評価値の和と、8×16[画素]の左のPUの評価値および右のPUの評価値の和と、を算出する。また、CTBが64×64[画素]であれば、Depth2は、16個のCUを含むことができるため、符号化装置100は、ステップS1405の処理を16回繰り返す。また、16×8[画素]の上のPUの評価値および下のPUの評価値の和を、「16×8[画素]のPUの評価値」とする。同様に、8×16[画素]の左のPUの評価値および右のPUの評価値の和を、「8×16[画素]のPUの評価値」とする。
次に、符号化装置100は、Depth2の各PUの評価値に基づいて、Depth2のPUサイズを決定する(ステップS1406)。具体的に、符号化装置100は、16×16[画素]のPUの評価値と、16×8[画素]のPUの評価値と、8×16[画素]のPUの評価値とのうち、最小の評価値となるPUを、Depth2のPUサイズに決定する。また、符号化装置100は、最小となった評価値を、Depth2の評価値とする。また、CTBが64×64[画素]であれば、Depth2は、16個のCUを含むことができるため、符号化装置100は、ステップS1406の処理を16回繰り返す。
続けて、符号化装置100は、Depth3の各PUの動きベクトル候補検出を行い、各PUの評価値を算出する(ステップS1407)。具体的に、符号化装置100は、8×8[画素]のPUの評価値と、8×4[画素]の上のPUの評価値および下のPUの評価値の和と、4×8[画素]の左のPUの評価値および右のPUの評価値の和と、を算出する。また、CTBが64×64[画素]であれば、Depth3は、64個のCUを含むことができるため、符号化装置100は、ステップS1407の処理を64回繰り返す。また、8×4[画素]の上のPUの評価値および下のPUの評価値の和を、「8×4[画素]のPUの評価値」とする。同様に、4×8[画素]の左のPUの評価値および右のPUの評価値の和を、「4×8[画素]のPUの評価値」とする。
次に、符号化装置100は、Depth3の各PUの評価値に基づいて、Depth3のPUサイズを決定する(ステップS1408)。具体的に、符号化装置100は、8×8[画素]のPUの評価値と、8×4[画素]のPUの評価値と、4×8[画素]のPUの評価値とのうち、最小の評価値となるPUを、Depth3のPUサイズに決定する。また、符号化装置100は、最小となった評価値を、Depth3の評価値とする。また、CTBが64×64[画素]であれば、Depth3は、64個のCUを含むことができるため、符号化装置100は、ステップS1408の処理を64回繰り返す。
続けて、符号化装置100は、Depth0〜Depth3の決定したPUサイズの評価値に基づいて、動きベクトルを検出する(ステップS1409)。具体的に、符号化装置100は、ステップS1402、ステップS1404、ステップS1406、ステップS1408の処理にて得たDepth0〜Depth3の評価値のうち、評価値が最小となるDepthを選択する。そして、符号化装置100は、最小となったDepthの決定したPUサイズの動きベクトル候補を、動きベクトルとして検出する。
具体的に、符号化装置100は、選択したCTB内において、Depth3の左上に位置する4つのCUの評価値の和と、Depth3の4つのCUを結合した領域と同領域となるDepth2の1つのCUの評価値とを比較する。Depth2の1つのCUの評価値が小さい場合、符号化装置100は、Depth2の左上に位置する4つのCUの評価値の和と、Depth1の4つのCUを結合した領域と同領域となるDepth1の1つのCUの評価値との大小を比較する。たとえば、Depth2の左上に位置する4つのCUの評価値の和が小さい場合、符号化装置100は、選択したCTB内の左上の領域を、Depth2の4つのCUで分割する。そして、符号化装置100は、残りの領域についても同様に処理する。このようにして、符号化装置100は、選択したCTBを、複数のDepthのCUで分割する。
ステップS1409の処理終了後、符号化装置100は、第1動きベクトル検出処理を終了する。第1動きベクトル検出処理を実行することにより、符号化装置100は、評価値が最小となる動きベクトルを検出することができる。
なお、図14に示したフローチャートは、CTBが64×64[画素]である場合について示した。たとえば、CTBが32×32[画素]である場合、符号化装置100は、ステップS1403〜ステップS1409の処理を実行する。
図15は、第2動きベクトル検出処理手順の一例を示すフローチャートである。第2動きベクトル検出処理は、参照フレームDepthに近似するDepth候補の評価値を算出して、動きベクトルを決定する処理である。
符号化装置100は、参照フレームrFの同位置のCTBのDepthを特定する(ステップS1501)。具体的な参照フレームrFの同位置のCTBのDepth特定手順は、図8にて記述した。次に、符号化装置100は、Depth候補テーブル711を参照して、参照フレームrfの同位置のCTBのDepthに対応するいずれかのDepth候補を選択する(ステップS1502)。続けて、符号化装置100は、選択したいずれかのDepth候補のうちの先頭のDepth候補を選択する(ステップS1503)。
次に、符号化装置100は、選択したDepth候補の各PUの動きベクトル候補検出を行い、各PUの評価値を算出する(ステップS1504)。続けて、符号化装置100は、選択したDepth候補の各PUの評価値に基づいて、選択したDepthのPUサイズを決定する(ステップS1505)。ステップS1504の処理の内容と、ステップS1505の処理の内容は、選択したDepthによって変わることになる。
具体的に、符号化装置100は、選択したDepthがDepth0であれば、ステップS1504の処理として、ステップS1401の処理と同一の処理を行い、ステップS1505の処理として、ステップS1402の処理と同一の処理を行う。また、符号化装置100は、選択したDepthがDepth1であれば、ステップS1504の処理として、ステップS1403の処理と同一の処理を行い、ステップS1505の処理として、ステップS1404の処理と同一の処理を行う。
同様に、符号化装置100は、選択したDepthがDepth2であれば、ステップS1504の処理として、ステップS1405の処理と同一の処理を行い、ステップS1505の処理として、ステップS1406の処理と同一の処理を行う。また、符号化装置100は、選択したDepthがDepth3であれば、ステップS1504の処理として、ステップS1407の処理と同一の処理を行い、ステップS1505の処理として、ステップS1408の処理と同一の処理を行う。
次に、符号化装置100は、いずれかのDepth候補の全てのDepth候補を選択したか否かを判断する(ステップS1506)。いずれかのDepth候補のうちまだ選択していないDepth候補がある場合(ステップS1506:No)、符号化装置100は、いずれかのDepth候補のうちの次のDepth候補を選択する(ステップS1507)。ステップS1507の処理終了後、符号化装置100は、ステップS1504の処理に移行する。
いずれかのDepth候補全てを選択した場合(ステップS1506:Yes)、符号化装置100は、いずれかのDepth候補全ての決定したPUサイズの評価値に基づいて、動きベクトルを検出する(ステップS1508)。ステップS1508の処理終了後、符号化装置100は、第2動きベクトル検出処理を終了する。第2動きベクトル検出処理を実行することにより、符号化装置100は、参照フレームrFのDepthに近似する、いずれかのDepth候補の中から評価値が最小となる動きベクトルを検出することができる。
以上説明したように、符号化装置100によれば、対象フレームのブロックの動きベクトル検出を行う際に、参照フレームのブロックの動きベクトル検出時に採用したブロックサイズと同等のブロックサイズを用いる。これにより、符号化装置100は、符号化後の動画像の画質の劣化を抑制しつつ、動きベクトル検出処理にかかる演算量を削減することができる。
具体的に、符号化装置100は、4つのDepthに対して動きベクトル検出処理を行う処理に対して、3つのDepthに対して動きベクトル検出処理を行うため、動きベクトル検出処理にかかる演算量を、25%削減することができる。
また、符号化装置100によれば、全てのDepth候補のうちの選択したDepth候補に対して評価値を算出して、動きベクトルを検出してもよい。これにより、符号化装置100は、選択したDepth候補に対して評価値を算出するため、画質の劣化を抑制しつつ動きベクトルの検出にかかる演算量を削減することができる。
また、符号化装置100は、参照フレームrFのDepthとして特定する個数として、1つのDepthを特定してもよいし、2つ以上のDepthを特定してもよい。たとえば、符号化装置100は、参照フレームrFのDepthが、Depth0〜Depth2である場合、参照フレームrFのDepthとしてDepth1を特定してもよいし、Depth0とDepth1とを特定してもよい。参照フレームrFのDepthが2つ特定される可能性がある場合、Depth候補テーブル711が、参照フレームrFのDepthが2つのレコードと、を記憶しておけばよい。
また、符号化装置100によれば、参照フレームrFの動きベクトルが検出された際に複数のDepthが特定された場合、複数のDepthの各々のDepthに基づいて、参照フレームrFのDepthを特定してもよい。たとえば、符号化装置100は、複数のDepthのうちの最も小さいDepthを、参照フレームrFのDepthとして特定してもよい。参照フレームrFにて小さく分割されたDepthがあると、対象フレームtFでも小さく分割される可能性が高い。そこで、符号化装置100は、最も小さいDepthを参照フレームrFのDepthとして特定しておくことにより、画質の劣化を抑制することができる。
また、符号化装置100によれば、参照フレームrFの動きベクトルが検出された際に複数のDepthが特定された場合、複数のDepthの各々のDepthに従って分割されたCUの個数に基づいて、いずれかのDepth候補を選択してもよい。たとえば、符号化装置100は、複数のDepthのうちのCUサイズの個数が最も多いDepthを、参照フレームrFのDepthとして特定してもよい。これにより、符号化装置100は、参照フレームrFが分割されたDepthに最も近似するDepthに絞り込んで動きベクトル検出を行うことになるため、画質の劣化を抑制することができる。また、符号化装置100は、CUサイズが小さい程、CUサイズの個数が多くなるため、CUサイズの大きさという重み付けを行ったCUサイズの個数に基づいて、参照フレームrFのDepthを特定してもよい。
また、符号化装置100によれば、対象フレームtFが一連のフレームにおける所定の順番のフレームであれば第2動きベクトル検出処理を行い、対象フレームtFがる所定の順番のフレーム以外であれば第1動きベクトル検出処理を行ってもよい。たとえば、一連のフレームのいずれかのフレームにてシーンチェンジ等をした結果、参照フレームrFと対象フレームtFとが類似しない状態があるとする。このとき、符号化装置100は、対象フレームtFが所定の順番のフレーム以外の時に第1動きベクトル検出処理を行うため、画像の内容に適したブロックサイズで符号化を行うことができ、画質の劣化を抑制することができる。
また、符号化装置100によれば、対象フレームtFの平坦度と参照フレームrFの平坦度との差分が所定の閾値以下であれば第2動きベクトル検出処理を行い、所定の閾値より大きければ第1動きベクトル検出処理を行ってもよい。たとえば、参照フレームrFから対象フレームにかけてシーンチェンジがあったとする。このとき、対象フレームtFの平坦度と参照フレームrFの平坦度とが大きく変化することになるため、符号化装置100は、第1動きベクトル検出処理を行うことになる。このように、符号化装置100は、参照フレームrFと対象フレームtFとが類似しなくなったときに、第1動きベクトル検出処理を行うため、画質の劣化を抑制することができる。
また、本実施の形態では、フレーム間予測単位となるPUの計算対象を減らして、動きベクトル検出処理にかかる演算量を削減したが、直交変換の単位となるTU(Transform Unit)の選択可能なブロックサイズを削減してもよい。TUは、4×4[画素]と、8×8[画素]と、16×16[画素]と、32×32[画素]との4種類がある。直交変換とは、画像圧縮を行う前処理の段階において、画像圧縮をしやすくするために、変換前の画像の画素値を低周波成分と高周波成分に分解する仕組みのことである。
なお、本実施の形態で説明した符号化方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本符号化プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本符号化プログラムは、インターネット等のネットワークを介して配布してもよい。
また、本実施の形態で説明した符号化装置100は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けIC(以下、単に「ASIC」と称す。)やFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。具体的には、たとえば、上述した符号化装置100の判断部701〜検出部705と、Depth候補テーブル711とをHDL記述によって機能定義し、HDL記述を論理合成してASICやPLDに与えることにより、符号化装置100を製造することができる。
tF 対象フレーム
rF 参照フレーム
100 符号化装置
200 コンピュータシステム
701 判断部
702 特定部
703 選択部
704 算出部
705 検出部
本発明は、符号化装置、符号化方法、および符号化プログラムに関する。
従来、動画像のうちの符号化対象となる対象フレームを分割した対象ブロックに類似するブロックを参照先となる参照フレームから探索し、対象ブロックから類似するブロックまでの空間的な位置の差を対象ブロックの動きベクトルとして検出する技術がある。また、符号化後の動画像の画質の劣化を抑制するために、対象ブロックのブロックサイズを可変にして動きベクトルを検出する技術がある。
関連する先行技術としては、たとえば、縮小符号化対象画像と縮小参照画像とを生成し、縮小符号化対象画像を複数個の領域に分割した縮小分割領域画像の領域動きベクトルの大きさと信頼度とに基づいて、符号化対象ブロックのサイズの候補を絞り込むものがある。また、動き補償予測方式の入力信号にフィルタ処理をした信号と動画像信号との差分情報から生成した評価値を基に選択した複数のブロックサイズについて差分情報から新たな評価値を算出し、新たな評価値を基に最適なブロックサイズを選択する技術がある。(たとえば、下記特許文献1、2を参照。)
特開2006−180196号公報 特開2007−060164号公報
しかしながら、従来技術によれば、対象ブロックのブロックサイズを可変にして、ブロックサイズの候補となるブロックサイズ候補ごとに動きベクトルの候補を求めると、動きベクトル検出にかかる演算量が増大する。
1つの側面では、本発明は、画質の劣化を抑制しつつ、動きベクトル検出にかかる演算量を削減することができる符号化装置、符号化方法、および符号化プログラムを提供することを目的とする。
本発明の一側面によれば、一連のフレームにおける符号化対象の対象フレームの参照先となる参照フレームについて、参照フレームから分割されるブロックの複数のブロックサイズ候補の中から、ブロックの動きベクトルが検出された際のブロックサイズを特定し、対象フレームから分割されるブロックの動きベクトルを検出する際に、特定したブロックサイズに基づいて、複数のブロックサイズ候補のうちの対象フレームを分割するいずれかのブロックサイズ候補を選択する符号化装置、符号化方法、および符号化プログラムが提案される。
本発明の一態様によれば、画質の劣化を抑制しつつ、動きベクトル検出にかかる演算量を削減することを図ることができるという効果を奏する。
図1は、本実施の形態にかかる符号化装置の動作例を示す説明図である。 図2は、コンピュータシステムのハードウェアの一例を示すブロック図である。 図3は、符号化装置のハードウェア構成例を示すブロック図である。 図4は、CTBとCUの関係の一例を示す説明図である。 図5は、CUの種類の一例を示す説明図である。 図6は、PUの種類の一例を示す説明図である。 図7は、符号化装置の機能例を示すブロック図である。 図8は、参照フレームのDepthの一例を示す説明図である。 図9は、対象フレームの動きベクトル検出を行うDepth候補の第1の例を示す説明図である。 図10は、対象フレームの動きベクトル検出を行うDepth候補の第2の例を示す説明図である。 図11は、対象フレームの動きベクトル検出を行うDepth候補の第3の例を示す説明図である。 図12は、対象フレームにおける動きベクトル検出処理手順の第1の例を示すフローチャートである。 図13は、対象フレームにおける動きベクトル検出処理手順の第2の例を示すフローチャートである。 図14は、第1動きベクトル検出処理手順の一例を示すフローチャートである。 図15は、第2動きベクトル検出処理手順の一例を示すフローチャートである。
以下に図面を参照して、開示の符号化装置、符号化方法、符号化プログラムの実施の形態を詳細に説明する。
図1は、本実施の形態にかかる符号化装置の動作例を示す説明図である。符号化装置100は、動きベクトルを検出するコンピュータである。符号化装置100は、HEVC(High Efficiency Video Coding)が定める規格に従って、フレームが分割されたブロックごとに動画像を符号化する。
HEVCより前の規格である、H.264やMPEG(Moving Picture Experts Group)−2は、動画像を構築する各フレームを、16×16[画素]のブロックで分割し、分割したブロックごとに、符号化処理を行う。これに対し、HEVCは、分割するブロックのブロックサイズの自由度を高めた手法を提供する。
具体的に、HEVCにおいて、フレームは、Nを整数として、N×N[画素]の正方形のブロックに分割される。N×N[画素]の正方形のブロックは、LCU(Largest Coding Unit)と呼称される。HEVCでは、Nを、64とする。さらに、HEVCにおいて、LCUは、CTB(Coding Tree Block)に分割される。CTBは、CU(Coding Unit)というブロックに分割される。CTBとCUの関係は、図4にて後述する。CUの複数のブロックサイズ候補としては、64×64[画素]と、32×32[画素]と、16×16[画素]と、8×8[画素]という4種類がある。
64×64[画素]のCUは、Depth0と定義される。32×32[画素]のCUは、Depth1と定義される。16×16[画素]のCUは、Depth2と定義される。8×8[画素]のCUは、Depth3と定義される。
以下、CUのサイズを、「Depth」と称する。また、CUのブロックサイズ候補を、以下、単に「Depth候補」と称する。図5にて、Depthについて説明する。また、HEVCにおいて、CUは、さらに、フレーム間予測を行う単位として、PU(Prediction Unit)に分割される。PUの種類については、図6にて後述する。
圧縮符号化方式における動きベクトル検出処理は、符号化対象の対象フレームにおいて、あるブロックの参照フレームに対する物体の位置座標が評価され、最も類似するブロックの位置座標が検出される。動きベクトルは、あるブロックの位置座標から最も類似するブロックの位置座標までを表す。
ここで、HEVCが定める規格に従って符号化する装置は、複数のDepth候補の各々のDepth候補ごとにCUの動きベクトル候補を決定する処理を行う。そして、符号化する装置は、Depth候補ごとのCUの動きベクトル候補から、最も類似する動きベクトル候補を動きベクトルとして検出する。なお、具体的には、CUが分割されたPUごとに動きベクトルが決定されることになるが、図1では、説明の簡略化のため、「CUの動きベクトルを検出」と記述する。
具体的に、符号化を行う装置は、各々のDepth候補に従って分割したブロックの画素値と、参照フレーム上の探索範囲内の、動きベクトル候補が示す参照ブロックの画素値との差分を表す評価値を算出する。そして、符号化を行う装置は、評価値が最も小さい動きベクトル候補を、各々のDepth候補ごとのブロックの動きベクトル候補とする。続けて、符号化を行う装置は、各々のDepth候補ごとのブロックの動きベクトル候補から、評価値が最も小さい動きベクトル候補を、動きベクトルとして検出する。評価値の具体例については、図14にて後述する。
これにより、HEVCが定める規格に従って符号化する装置は、CTB内のエッジ部分の近傍部分は詳細な単位となるCUのサイズで符号化するとともに、変化が平坦な部分は大きな単位となるCUのサイズで符号化する、ということが可能になる。しかしながら、HEVCが定める規格に従って符号化すると、CUのサイズごとに動きベクトル候補を求めるため、動きベクトル検出処理にかかる演算量が増大することになる。
そこで、本実施の形態にかかる符号化装置100は、対象フレームのブロックの動きベクトル検出を行う際に、参照フレームのブロックの動きベクトル検出時に採用したブロックサイズに近似するブロックサイズを用いる。これにより、符号化装置100は、符号化後の動画像の画質の劣化を抑制しつつ、動きベクトル検出処理にかかる演算量を削減することができる。
図1では、一連のフレームにおける符号化対象の対象フレームtFと、対象フレームtFの参照先となる参照フレームrFと、を表示する。一連のフレームは、空等の変化の少ないものを写した動画像であるとする。参照フレームrFは、既に符号化済のフレームである。図1に示す対象フレームtFは、図1に示す参照フレームrFに映った雲が左方向に移動した状態を写したものである。このように、参照フレームrFと対象フレームtFとは、似たような画像になる可能性が高い。
符号化装置100は、参照フレームrFの、あるCTBについて、4種類のDepth候補のうち、Depth1である32×32[画素]で分割されたブロックの動きベクトル候補が最も類似したとする。
そして、符号化装置100は、参照フレームrFから分割される複数のDepth候補の中から、CUの動きベクトルが検出された際のDepthを特定する。図1の例では、符号化装置100は、CUのサイズとしてDepthを特定する。
続けて、符号化装置100は、対象フレームtFから分割されるCUの動きベクトルを検出する際に、特定したCUのサイズに基づいて、複数のDepth候補のうちの対象フレームtFを分割するいずれかのDepth候補を選択する。いずれかのDepth候補は、1つでもよいし、複数でもよい。
図1の例では、符号化装置100は、複数のDepth候補のうちの、Depth1に近似する、Depth0〜Depth2をいずれかのDepth候補として選択する。Depth候補を選択後、符号化装置100は、選択したいずれかのDepth候補ごとに、選択したCUのサイズで分割したCUごとに動きベクトル候補を決定する。
このように、符号化装置100は、選択したいずれかのDepth候補の動きベクトル候補に絞って動きベクトル候補を求めることにより、画質の劣化を抑制して、動きベクトル検出にかかる演算量を削減することができる。ここで、複数のDepth候補の動きベクトル候補を決定して、動きベクトルを検出する処理を、第1動きベクトル検出処理とする。また、複数のDepth候補のうちの選択したいずれかのDepth候補の動きベクトル候補を決定して、動きベクトルを検出する処理を、第2動きベクトル検出処理とする。以下、図2〜図15を用いて、符号化装置100について説明する。
(コンピュータシステム200のハードウェア構成例)
次に、符号化装置100が適用されるコンピュータシステム200のハードウェアの一例について説明する。コンピュータシステム200は、たとえば、動画像を記録・再生する機能を有するシステムであり、具体的には、たとえば、パーソナル・コンピュータ、テレビジョン、レコーダ、スマートフォン、ビデオカメラ、デジタルカメラなどである。
図2は、コンピュータシステムのハードウェアの一例を示すブロック図である。図2において、コンピュータシステム200は、CPU(Central Processing Unit)201と、ROM(Read‐Only Memory)202と、RAM(Random Access Memory)203と、を含む。また、コンピュータシステム200は、撮像素子204と、撮像素子I/F(InterFace)205と、操作パネル206と、記録メディア207と、外部I/F208と、符号化装置100とを含む。
また、コンピュータシステム200は、ディスプレイ209と、ディスプレイ出力I/F210とを含む。また、CPU201〜RAM203と、撮像素子I/F205と、外部I/F208と、ディスプレイ出力I/F210と、符号化装置100とは、バス211で相互に接続される。
CPU201は、コンピュータシステム200の全体の制御を司る演算処理装置である。ROM202は、コンピュータシステム200のブートプログラムなどのプログラムを記憶する不揮発性メモリである。RAM203は、CPU201のワークエリアとして使用される揮発性メモリである。
撮像素子204は、対象物から発した光を電気信号に変換する装置である。たとえば、撮像素子204は、CCD(Charge Coupled Device)イメージセンサ、やCMOS(Complementary Metal Oxide Semiconductor)イメージセンサなどである。
撮像素子I/F205は、記録時に撮像素子204を制御することにより、撮像素子204からの信号を画像フォーマットに変換してRAM203に格納する装置である。操作パネル206は、コンピュータシステム200が有する液晶タッチパネルや操作ボタンである。記録メディア207は、フラッシュROM等といった記憶装置である。また、記録メディア207は、本実施の形態にかかる符号化プログラムを記録してもよい。外部I/F208は、操作パネル206、および記録メディア207を制御する。また、外部I/F208は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワークを介して、コンピュータシステム200以外の他の装置に接続されてもよい。
ディスプレイ209は、撮像素子204が記録した画像フォーマットを表示する。ディスプレイ出力I/F210は、ディスプレイ209の制御を行う。
図3は、符号化装置のハードウェア構成例を示すブロック図である。符号化装置100は、予測誤差信号生成部301と、整数変換部302と、量子化部303と、エントロピー符号化部304と、逆量子化部305と、逆整数変換部306と、参照フレーム生成部307と、ループフィルタ処理部308を有する。さらに符号化装置100は、フレームメモリ309と、フレーム内予測部310と、動き検出部311と、動き補償部312と、予測画像選択部313とを有する。
入力動画像は、動画像を形成する各フレームの分割に四分木ブロック分割が採用されたものとする。予測誤差信号生成部301は、入力動画像のうちの対象フレームtFと予測画像信号とが入力され、対象フレームtFと予測フレームとなる参照フレームrFの差分を演算することにより、予測誤差信号を生成する。
整数変換部302は、予測誤差信号生成部301からの予測誤差信号を整数変換した信号を出力する。量子化部303は、整数変換部302からの出力信号を量子化する。量子化部303の処理により、予測誤差信号の符号量が低減される。
エントロピー符号化部304は、量子化部303からの量子化データと、フレーム内予測部310からの出力データと、動き検出部311から出力される動きベクトルの情報とをエントロピー符号化し、対象フレームtFに対する符号化画像データを出力する。入力動画像の各フレームに対して符号化画像データを出力したデータが、出力動画像となる。ここで、エントロピー符号化とは、シンボルの出現頻度に応じて可変長の符号を割り当てる符号化方式を指す。
逆量子化部305は、量子化部303からの量子化データを逆量子化する。逆整数変換部306は、逆量子化部305からの出力データに逆整数変換処理を施す。逆整数変換部306の処理により、符号化前の予測誤差信号と同程度の信号を得ることができる。
参照フレーム生成部307は、動き補償部312により動き補償されたPUの画素値と、逆量子化部305および逆整数変換部306によって復号された予測誤差信号とを加算する。参照フレーム生成部307の処理により、動き補償された参照フレームrFのPUの画素値が生成される。
ループフィルタ処理部308は、PUの画素値に対してデブロッキングフィルタ、サンプル・アダプティプ・オフセット(SAO:Sample Adaptive Offset)と適応型ループフィルタ(ALF:Adaptive Loop Filter)処理を行って、ブロックノイズの発生を抑制した後、フレームメモリ309に蓄積する。
フレーム内予測部310は、同じフレームにおける周辺画素から、予測画像のマクロブロックを生成する。動き検出部311は、入力動画像の画素値と、フレームメモリ309から読み込んだ参照フレームrFのデータを基に動きベクトルを算出し、出力する。動き検出部311の詳細は、図7にて後述する。
動き補償部312は、動き検出部311から出力された動きベクトルに基づいて、フレームメモリ309から読み込んだ参照フレームrFのデータに対して動き補償することにより、動き補償された予測画像のPUを生成する。
予測画像選択部313は、フレーム内予測部310または動き補償部312のどちらか一方から出力される予測画像のマクロブロックを選択し、予測誤差信号生成部301および参照フレーム生成部307に出力する。次に、HEVCにて定義されたCTBと、CUと、PUとについて、図4〜図6を用いて説明する。
図4は、CTBとCUの関係の一例を示す説明図である。LCUは、変換や量子化などを行うサブブロックであるCTBに分割される。CTBは、16×16[画素]と、32×32[画素]と、64×64[画素]の3種類がある。CTBが16×16[画素]である場合、CUが取り得るDepthは、Depth2とDepth3となる。また、CTBが32×32[画素]である場合、CUが取り得るDepthは、Depth1〜Depth3となる。
CTBは、画像データの特徴に合わせて、四分木(Quad Tree)ブロック分割により再帰的に分割される。具体的に、CTBは、4つの領域に分割され、分割した領域がさらに4つの領域に細分される、という処理が繰り返される。この分割による領域が、CUと呼ばれる。CUが符号化処理の基本単位となる。四分木ブロック分割を採用した動画像は、画像中の変化が激しいエッジ部や、エッジ部分の近傍部分は詳細な単位のブロックで符号化され、変化が平坦な部分は大きな単位のブロックで符号化される、ということが可能となる。たとえば、四分木ブロック分割による符号化を行う装置は、符号化対象の動画像のある画像内の、物体の輪郭などが表示された箇所を細かな単位でより詳細に符号化し、空等の変化が少ない箇所を大まかな単位で符号化する、ということが可能である。CUの種類について、図5を用いて説明する。
図5は、CUの種類の一例を示す説明図である。CUの種類は、図5に示すように、Depth0である64×64[画素]と、Depth1である32×32[画素]と、Depth2である16×16[画素]と、Depth3である8×8[画素]という4種類がある。CUは、PUという単位でフレーム間予測を行う。PUの種類について、図6を用いて説明する。
図6は、PUの種類の一例を示す説明図である。PUは、CUのDepthごとに3つの種類がある。CUは、一つ以上のPUを含む。PUは、CUと同一サイズと、横方向に2分割と、縦方向に2分割と、という3種類から選択することができる。
たとえば、CUがDepth0の場合、PUは、64×64[画素]と、64×32[画素]と、32×64[画素]という3種類がある。図6に示すように、PUは、8×8[画素]から64×64[画素]までの12種類がある。また、PUのサイズを、「PUサイズ」と呼称する。
(符号化装置100の機能)
次に、符号化装置100の機能について説明する。図7は、符号化装置の機能例を示すブロック図である。符号化装置100は、判断部701と、特定部702と、選択部703と、算出部704と、検出部705と、を含む。
なお、判断部701〜検出部705は、記憶装置に記憶されたプログラムをCPU201が実行することにより、判断部701〜検出部705の機能を実現してもよい。記憶装置とは、具体的には、たとえば、図2に示したROM202、RAM203、記録メディア207などである。
また、符号化装置100は、Depth候補テーブル711にアクセス可能である。Depth候補テーブル711は、符号化装置100内の記憶領域、またはROM202、RAM203、記録メディア207、といった記憶装置に格納される。Depth候補テーブル711の記憶内容の一例は、図9〜図11に示す。
判断部701は、対象フレームtFが一連のフレームにおける所定の順番のフレームであるか否かを判断する。また、判断部701は、対象フレームtFの画素値と、参照フレームrFの画素値との差分を表す値が所定の閾値未満か否かを判断してもよい。ここで、所定の順番や所定の閾値は、符号化装置100の開発者または符号化装置100の利用者によって指定される数値である。
たとえば、所定の順番は、2番目〜9番目、11番目〜19番目、…、となる。また、判断部701は、対象フレームtFが一連のフレームにおける所定の順番のフレームでないか否かを判断してもよい。このとき、所定の順番は、1番目、10番目、20番目、…となる。また、たとえば、判断部701は、対象フレームtFの画素値の平均と、参照フレームrFの画素値の平均との差分が、所定の閾値未満か否かを判断する。より詳細については、図13にて後述する。なお、判断結果は、符号化装置100内の記憶領域に記憶される。
特定部702は、参照フレームrFについて、参照フレームrFから分割されるブロックの複数のDepth候補の中から、CU内の各PUの動きベクトルが検出された際のDepthを特定する。
また、特定部702は、判断部701によって対象フレームtFが所定の順番のフレームであると判断された場合、参照フレームrFから分割されるDepthを特定してもよい。たとえば、特定部702は、判断部701が所定の順番として、2番目〜9番目、11番目〜19番目、…、のフレームであるとは判断した場合、参照フレームrFから分割されるDepthを特定してもよい。なお、判断部701が、特定部702を実行しない場合を判断してもよい。
また、特定部702は、判断部701によって値が所定の閾値未満であると判断された場合、ブロックサイズを特定してもよい。なお、特定されたDepthは、符号化装置100内の記憶領域に記憶される。
選択部703は、対象フレームtFから分割されるCU内の各PUの動きベクトルを検出する際に、特定部702によって特定されたDepthに基づいて、複数のDepth候補のうちの対象フレームtFを分割するいずれかのDepth候補を選択する。具体的な選択手順は、図9〜図11にて後述する。
また、特定部702によって参照フレームrFが分割されたブロックの動きベクトルが検出された際にDepthが複数特定される場合がある。このとき、選択部703は、複数のDepthの各々のDepthのうちの相対的に小さいDepthに基づいて、複数のDepth候補のうちの対象フレームtFを分割するいずれかのDepth候補を選択してもよい。また、Depthが複数特定された場合、選択部703は、複数のDepthの各々のDepthに従って分割されたCUの個数に基づいて、複数のDepth候補のうちの対象フレームtFを分割するいずれかのDepth候補を選択してもよい。なお、Depthが複数特定された場合については、図8にて後述する。また、選択されたDepth候補は、符号化装置100内の記憶領域に記憶される。
算出部704は、選択部703によって選択されたいずれかのDepth候補に対応して、対象フレームtFからいずれかのDepth候補に従って分割される各CUの画素値と参照フレームrF上の探索範囲内のブロックの画素値との差分を表す評価値を算出する。具体的な評価値の算出例は、後述する(2)式にて説明する。
検出部705は、算出部704によって算出されたいずれかのブロックサイズ候補に従って分割した各ブロックの評価値に基づいて、対象フレームtFが分割されたブロックの動きベクトルを検出する。具体的な検出の例は、図14と図15にて後述する。なお、算出された動きベクトルは、符号化装置100内の記憶領域に記憶される。
図8は、参照フレームのDepthの一例を示す説明図である。符号化装置100は、参照フレームrFのCTBに含まれるCUに基づいて、参照フレームrFのDepth結果を特定する。このとき、参照フレームrFのDepth結果が複数特定された場合について、図8の(a)と図8の(b)について説明する。
図8の(a)では、符号化装置100が、参照フレームrFのCTBに含まれるCUのうちの、最もサイズが小さいCUに基づいて、対象フレームtFを分割するいずれかのDepth候補を選択する例について説明する。図8の(b)では、参照フレームrFのCTBに含まれるCUのうちの、最も個数が多いCUに基づいて、対象フレームtFを分割するいずれかのブロックサイズ候補を選択する例について説明する。
図8の(a)が示すCTBは、Depth1である32×32[画素]の3個のCUと、Depth2である16×16[画素]の4個のCUと、を含む。符号化装置100は、Depthが最も小さいDepth2に基づいて、対象フレームtFを分割するいずれかのDepth候補を選択する。
図8の(b)が示すCTBは、Depth1である32×32[画素]の2個のCUと、Depth2である16×16[画素]の7個のCUと、Depth3である8×8[画素]の4個のCUと、を含む。符号化装置100は、最も個数が多いDepth2に基づいて、対象フレームtFを分割するいずれかのDepth候補を選択する。
次に、図9〜図11を用いて、具体的なDepth候補の選択例を3つ説明する。図9〜図11に示すDepth候補テーブル711は、DepthごとのDepth候補を記憶するテーブルである。図9〜図11に示すDepth候補テーブル711は、表示の簡略化のため、各レコードの"Depth"を省略してある。Depth候補テーブル711の説明は、図9にて行う。
図9は、対象フレームの動きベクトル検出を行うDepth候補の第1の例を示す説明図である。図9に示すDepth候補テーブル711は、レコード901−1〜レコード901−4を有する。
Depth候補テーブル711は、参照フレームDepthと、対象フレームDepth候補という2つのフィールドを有する。参照フレームDepthフィールドには、検索キーとなる参照フレームrFのDepth結果が格納される。対象フレームDepth候補フィールドは、図8にて説明した、特定した参照フレームDepthに対応する、対象フレームtFのDepth候補の値が格納される。
たとえば、レコード901−2は、参照フレームDepthがDepth1であった場合に、対象フレームDepth候補がDepth0〜Depth2であることを示す。
レコード901−2とレコード901−3は、対象フレームDepth候補フィールドに、近似するDepthとして、参照フレームDepthと同一サイズのDepthと、1つ小さいDepthと1つ大きいDepthとを記憶する。
レコード901−1は、参照フレームDepthが、Depthが最も大きいDepth0であるため、対象フレームDepth候補フィールドに、Depth0〜Depth2を記憶する。また、レコード901−1は、参照フレームDepthフィールドにDepth0を記憶し、対象フレームDepth候補フィールドに、Depth0と、Depth1とを記憶してもよい。
図10は、対象フレームの動きベクトル検出を行うDepth候補の第2の例を示す説明図である。図10に示すDepth候補テーブル711は、レコード1001−1〜レコード1001−4を有する。たとえば、レコード1001−2は、参照フレームDepthがDepth1であった場合に、対象フレームDepth候補がDepth0〜Depth2であることを示す。
レコード1001−3とレコード1001−4は、対象フレームDepth候補フィールドに、近似するDepthとして、参照フレームDepthと同一サイズのDepthと、1つ大きいDepthと2つ大きいDepthとを記憶する。
レコード1001−2は、参照フレームDepthよりDepthが2つ大きいDepthがないため、対象フレームDepth候補フィールドに、Depth0〜Depth2を記憶する。また、レコード1001−2は、対象フレームDepth候補フィールドに、Depth0と、Depth1とを記憶してもよい。
このように、図10に示すDepth候補テーブル711は、Depthが大きくなるようにDepth候補を選択するため、符号化対象となる動画像が空等の変化の少ないものを撮影したものであれば、画質の劣化をより抑えることができる。
図11は、対象フレームの動きベクトル検出を行うDepth候補の第3の例を示す説明図である。図11に示すDepth候補テーブル711は、レコード1101−1〜レコード1101−4を有する。たとえば、レコード1101−2は、参照フレームDepthがDepth1であった場合に、対象フレームDepth候補がDepth1〜Depth3であることを示す。
レコード1101−1とレコード1101−2は、対象フレームDepth候補フィールドに、近似するDepthとして、参照フレームDepthと同一サイズのDepthと、1つ小さいDepthと2つ小さいDepthとを記憶する。
レコード1101−3は、参照フレームDepthより2つ小さいDepthがないため、対象フレームDepth候補フィールドに、Depth1〜Depth3を記憶する。また、レコード1101−3は、対象フレームDepth候補フィールドに、Depth2と、Depth3とを記憶してもよい。
このように、図11に示すDepth候補テーブル711は、Depthが小さくなるようにDepth候補を選択するため、符号化対象となる動画像がエッジが多い、変化の多いものを撮影したものであれば、画質の劣化をより抑えることができる。
図9〜図11で示したDepth候補テーブル711は、CTBが64×64[画素]であるときの記憶内容を示す。たとえば、CTBが32×32[画素]である場合、Depth候補テーブル711の対象フレームDepth候補フィールドには、2つのDepth、または1つのDepthが格納される。
ここで、図9〜図11で示したDepth候補テーブル711の違いについて説明する。まず、図9〜図11で示したDepth候補テーブル711を採用した際の画質の劣化の抑制度合いについて説明する。画質の劣化をより抑制できる場合とは、第2動きベクトル検出処理により決定されたDepthと第1動きベクトル検出処理により決定されたDepthとが一致する確率が高いときである。符号化装置100が図9と図10とが示したDepth候補テーブル711を採用した場合、符号化装置100が図11で示すDepth候補テーブル711を採用した場合よりも、一致する確率が高くなる、という実験結果が得られた。
また、図9〜図11で示したDepth候補テーブル711のうち、符号化装置100がどのDepth候補テーブル711を使用するかは、符号化装置100の開発者が指定してもよいし、符号化装置100の利用者が指定してもよい。
符号化装置100の利用者が指定する場合、たとば、符号化装置100は、ディスプレイ209に設定画面を表示して、Depth候補テーブル711のうち、使用するDepth候補テーブル711を選択するダイアログを表示する。そして、符号化装置100は、符号化装置100の利用者が符号化対象となる動画像の内容に応じて指定したDepth候補テーブル711の識別情報を受け付ける。たとえば、符号化対象となる動画像が、空等を撮影した動画像であれば、符号化装置100の利用者は、図10で示したDepth候補テーブル711を指定し、エッジが多い動画像であれば、図11で示したDepth候補テーブル711を指定する。次に、図12〜図15を用いて、符号化装置100が実行するフローチャートについて説明する。
まず、図12と図13とを用いて、対象フレームtFにおける動きベクトル検出処理のフローチャートを説明する。符号化装置100は、図12で示すフローチャートか図13で示すフローチャートかのいずれかを採用して、動きベクトルを検出する。
図12は、対象フレームにおける動きベクトル検出処理手順の第1の例を示すフローチャートである。対象フレームにおける動きベクトル検出処理は、対象フレームtFに含まれる各PUの動きベクトルを検出する処理である。
符号化装置100は、対象フレームtF内の、先頭のLCUを選択する(ステップS1201)。次に、符号化装置100は、対象フレームtFが先頭のフレームまたはリフレッシュされるフレームか否かを判断する(ステップS1202)。ここで、リフレッシュされるフレームとは、所定の順番以外のフレームである。
対象フレームtFが先頭のフレームまたはリフレッシュされるフレームである場合(ステップS1202:Yes)、符号化装置100は、選択したLCU内の先頭のCTBを選択する(ステップS1203)。次に、符号化装置100は、第1動きベクトル検出処理を実行する(ステップS1204)。第1動きベクトル検出処理の詳細は、図14にて後述する。続けて、符号化装置100は、LCU内の全てのCTBを選択したか否かを判断する(ステップS1205)。まだ選択していないCTBがある場合(ステップS1205:No)、符号化装置100は、次のCTBを選択する(ステップS1206)。そして、符号化装置100は、ステップS1204の処理に移行する。
対象フレームtFが先頭のフレームでなく、かつ、リフレッシュされるフレームでない場合(ステップS1202:No)、符号化装置100は、選択したLCU内の先頭のCTBを選択する(ステップS1207)。次に、符号化装置100は、第2動きベクトル検出処理を実行する(ステップS1208)。第2動きベクトル検出処理の詳細は、図15にて後述する。続けて、符号化装置100は、LCU内の全てのCTBを選択したか否かを判断する(ステップS1209)。まだ選択していないCTBがある場合(ステップS1209:No)、符号化装置100は、次のCTBを選択する(ステップS1210)。そして、符号化装置100は、ステップS1208の処理に移行する。
全てのCTBを選択した場合(ステップS1205:Yes、ステップS1209:Yes)、符号化装置100は、対象フレームtF内の全てのLCUを選択したか否かを判断する(ステップS1211)。まだ選択していないLCUがある場合(ステップS1211:No)、符号化装置100は、次のLCUを選択する(ステップS1212)。そして、符号化装置100は、ステップS1202の処理に移行する。
全てのLCUを選択した場合(ステップS1211:Yes)、符号化装置100は、対象フレームtFにおける動きベクトル検出処理を終了する。対象フレームにおける動きベクトル検出処理を実行することにより、符号化装置100は、対象フレームtFに含まれる各PUの動きベクトルを検出することができる。
図13は、対象フレームにおける動きベクトル検出処理手順の第2の例を示すフローチャートである。対象フレームにおける動きベクトル検出処理は、対象フレームtFに含まれる各PUの動きベクトルを検出する処理である。また、ステップ図13に示すステップS1301、ステップS1303〜ステップS1312は、ステップS1201、ステップS1203〜ステップS1212と同一の処理であるため、説明を省略する。
ステップS1301、またはステップS1312の処理終了後、符号化装置100は、ABS(対象フレームtFのLCUの平坦度−参照フレームrFのLCUの平坦度)が所定の閾値より大きいか否かを判断する(ステップS1302)。ここで、ABS()は、引数の絶対値を返す関数である。また、平坦度は、下記(1)式により求められる。
平坦度=(ΣABS(LCU内の画素値−LCU内の画素平均値))/LCU内の総画素数 …(1)
LCU内の画素値は、たとえば、輝度信号Yとなる。また、LCU内の画素値は、色差信号Cb、Crでもよい。LCU内の総画素数は、4096となる。また、(1)式の代わりに、平坦度は、LCU内の画素値の平均でもよいし、LCU内の画素値の分散でもよいし、LCU内の画素値の標準偏差でもよい。
ABS(対象フレームtFのLCUの平坦度−参照フレームrFのLCUの平坦度)が所定の閾値より大きい場合(ステップS1302:Yes)、符号化装置100は、ステップS1303の処理を実行する。一方、ABS(対象フレームtFのLCUの平坦度−参照フレームrFのLCUの平坦度)が所定の閾値以下の場合(ステップS1302:No)、符号化装置100は、ステップS1307の処理に移行する。
対象フレームにおける動きベクトル検出処理を実行することにより、符号化装置100は、対象フレームtFに含まれる各PUの動きベクトルを検出することができる。さらに、符号化装置100は、平坦度の差分を比較することにより、対象フレームtFが参照フレームrFから大きく変化した場合に第1動きベクトル検出処理を行うことになる。したがって、参照フレームrFと対象フレームtFが類似しない場合に、全てのDepthに対する動きベクトル検出処理を行うことになるため、符号化装置100は、図13に示すフローチャートより画質の劣化を抑制することができる。
図14と図15とでは、PUの評価値とCUの評価値とを算出する。PUの評価値とCUの評価値とは、ME(Motion Estimation)コストを評価値として用いる。MEコストとは、動きベクトルの符号量や参照画像を指定するための符号量を見積もったものである。MEコストであるCostの算出式は、下記(2)式となる。
Cost(Mode∈Ω)=SAD+λ*R …(2)
ただし、Ωは、当該PUを符号化するための候補モードの全体集合である。SAD(Sum of Absolute Difference)は、動きベクトル検出対象ブロックと参照フレームrF中のブロックの各々対応する位置にある画素の値の差分絶対値を合計した差分絶対値和を示す。λは、量子化パラメータの関数として与えられるLagrange未定乗数である。また、Rは、当該モードModeで符号化した場合の総符号量である。また、評価値には(2)式に限らず、SAD、SSE(Summation of Square Error)を使用してもよい。
図14は、第1動きベクトル検出処理手順の一例を示すフローチャートである。第1動きベクトル検出処理は、全てのDepth候補の評価値を算出して、動きベクトルを決定する処理である。また、図14では、CTBが64×64[画素]であるとする。
符号化装置100は、Depth0の各PUの動きベクトル候補検出を行い、各PUの評価値を算出する(ステップS1401)。具体的に、符号化装置100は、64×64[画素]のPUの評価値と、64×32[画素]の上のPUの評価値および下のPUの評価値の和と、32×64[画素]の左のPUの評価値および右のPUの評価値の和と、を算出する。評価値は、(2)式を用いて算出された値である。また、64×32[画素]の上のPUの評価値および下のPUの評価値の和を、「64×32[画素]のPUの評価値」とする。同様に、32×64[画素]の左のPUの評価値および右のPUの評価値の和を、「32×64[画素]のPUの評価値」とする。
次に、符号化装置100は、Depth0の各PUの評価値に基づいて、Depth0のPUサイズを決定する(ステップS1402)。具体的に、符号化装置100は、64×64[画素]のPUの評価値と、64×32[画素]のPUの評価値と、32×64[画素]のPUの評価値とのうち、最小の評価値となるPUを、Depth0のPUサイズに決定する。また、最小となった評価値を、Depth0の評価値とする。
続けて、符号化装置100は、Depth1の各PUの動きベクトル候補検出を行い、各PUの評価値を算出する(ステップS1403)。具体的に、符号化装置100は、32×32[画素]のPUの評価値と、32×16[画素]の上のPUの評価値および下のPUの評価値の和と、16×32[画素]の左のPUの評価値および右のPUの評価値の和と、を算出する。また、CTBが64×64[画素]であれば、Depth1は、4個のCUを含むことができるため、符号化装置100は、ステップS1403の処理を4回繰り返す。また、32×16[画素]の上のPUの評価値および下のPUの評価値の和を、「32×16[画素]のPUの評価値」とする。同様に、16×32[画素]の左のPUの評価値および右のPUの評価値の和を、「16×32[画素]のPUの評価値」とする。
次に、符号化装置100は、Depth1の各PUの評価値に基づいて、Depth1のPUサイズを決定する(ステップS1404)。具体的に、符号化装置100は、32×32[画素]のPUの評価値と、32×16[画素]のPUの評価値と、16×32[画素]のPUの評価値とのうち、最小の評価値となるPUを、Depth1のPUサイズに決定する。また、符号化装置100は、最小となった評価値を、Depth1の評価値とする。また、CTBが64×64[画素]であれば、Depth1は、4個のCUを含むことができるため、符号化装置100は、ステップS1404の処理を4回繰り返す。
続けて、符号化装置100は、Depth2の各PUの動きベクトル候補検出を行い、各PUの評価値を算出する(ステップS1405)。具体的に、符号化装置100は、16×16[画素]のPUの評価値と、16×8[画素]の上のPUの評価値および下のPUの評価値の和と、8×16[画素]の左のPUの評価値および右のPUの評価値の和と、を算出する。また、CTBが64×64[画素]であれば、Depth2は、16個のCUを含むことができるため、符号化装置100は、ステップS1405の処理を16回繰り返す。また、16×8[画素]の上のPUの評価値および下のPUの評価値の和を、「16×8[画素]のPUの評価値」とする。同様に、8×16[画素]の左のPUの評価値および右のPUの評価値の和を、「8×16[画素]のPUの評価値」とする。
次に、符号化装置100は、Depth2の各PUの評価値に基づいて、Depth2のPUサイズを決定する(ステップS1406)。具体的に、符号化装置100は、16×16[画素]のPUの評価値と、16×8[画素]のPUの評価値と、8×16[画素]のPUの評価値とのうち、最小の評価値となるPUを、Depth2のPUサイズに決定する。また、符号化装置100は、最小となった評価値を、Depth2の評価値とする。また、CTBが64×64[画素]であれば、Depth2は、16個のCUを含むことができるため、符号化装置100は、ステップS1406の処理を16回繰り返す。
続けて、符号化装置100は、Depth3の各PUの動きベクトル候補検出を行い、各PUの評価値を算出する(ステップS1407)。具体的に、符号化装置100は、8×8[画素]のPUの評価値と、8×4[画素]の上のPUの評価値および下のPUの評価値の和と、4×8[画素]の左のPUの評価値および右のPUの評価値の和と、を算出する。また、CTBが64×64[画素]であれば、Depth3は、64個のCUを含むことができるため、符号化装置100は、ステップS1407の処理を64回繰り返す。また、8×4[画素]の上のPUの評価値および下のPUの評価値の和を、「8×4[画素]のPUの評価値」とする。同様に、4×8[画素]の左のPUの評価値および右のPUの評価値の和を、「4×8[画素]のPUの評価値」とする。
次に、符号化装置100は、Depth3の各PUの評価値に基づいて、Depth3のPUサイズを決定する(ステップS1408)。具体的に、符号化装置100は、8×8[画素]のPUの評価値と、8×4[画素]のPUの評価値と、4×8[画素]のPUの評価値とのうち、最小の評価値となるPUを、Depth3のPUサイズに決定する。また、符号化装置100は、最小となった評価値を、Depth3の評価値とする。また、CTBが64×64[画素]であれば、Depth3は、64個のCUを含むことができるため、符号化装置100は、ステップS1408の処理を64回繰り返す。
続けて、符号化装置100は、Depth0〜Depth3の決定したPUサイズの評価値に基づいて、動きベクトルを検出する(ステップS1409)。具体的に、符号化装置100は、ステップS1402、ステップS1404、ステップS1406、ステップS1408の処理にて得たDepth0〜Depth3の評価値のうち、評価値が最小となるDepthを選択する。そして、符号化装置100は、最小となったDepthの決定したPUサイズの動きベクトル候補を、動きベクトルとして検出する。
具体的に、符号化装置100は、選択したCTB内において、Depth3の左上に位置する4つのCUの評価値の和と、Depth3の4つのCUを結合した領域と同領域となるDepth2の1つのCUの評価値とを比較する。Depth2の1つのCUの評価値が小さい場合、符号化装置100は、Depth2の左上に位置する4つのCUの評価値の和と、Depth1の4つのCUを結合した領域と同領域となるDepth1の1つのCUの評価値との大小を比較する。たとえば、Depth2の左上に位置する4つのCUの評価値の和が小さい場合、符号化装置100は、選択したCTB内の左上の領域を、Depth2の4つのCUで分割する。そして、符号化装置100は、残りの領域についても同様に処理する。このようにして、符号化装置100は、選択したCTBを、複数のDepthのCUで分割する。
ステップS1409の処理終了後、符号化装置100は、第1動きベクトル検出処理を終了する。第1動きベクトル検出処理を実行することにより、符号化装置100は、評価値が最小となる動きベクトルを検出することができる。
なお、図14に示したフローチャートは、CTBが64×64[画素]である場合について示した。たとえば、CTBが32×32[画素]である場合、符号化装置100は、ステップS1403〜ステップS1409の処理を実行する。
図15は、第2動きベクトル検出処理手順の一例を示すフローチャートである。第2動きベクトル検出処理は、参照フレームDepthに近似するDepth候補の評価値を算出して、動きベクトルを決定する処理である。
符号化装置100は、参照フレームrFの同位置のCTBのDepthを特定する(ステップS1501)。具体的な参照フレームrFの同位置のCTBのDepth特定手順は、図8にて記述した。次に、符号化装置100は、Depth候補テーブル711を参照して、参照フレームrfの同位置のCTBのDepthに対応するいずれかのDepth候補を選択する(ステップS1502)。続けて、符号化装置100は、選択したいずれかのDepth候補のうちの先頭のDepth候補を選択する(ステップS1503)。
次に、符号化装置100は、選択したDepth候補の各PUの動きベクトル候補検出を行い、各PUの評価値を算出する(ステップS1504)。続けて、符号化装置100は、選択したDepth候補の各PUの評価値に基づいて、選択したDepthのPUサイズを決定する(ステップS1505)。ステップS1504の処理の内容と、ステップS1505の処理の内容は、選択したDepthによって変わることになる。
具体的に、符号化装置100は、選択したDepthがDepth0であれば、ステップS1504の処理として、ステップS1401の処理と同一の処理を行い、ステップS1505の処理として、ステップS1402の処理と同一の処理を行う。また、符号化装置100は、選択したDepthがDepth1であれば、ステップS1504の処理として、ステップS1403の処理と同一の処理を行い、ステップS1505の処理として、ステップS1404の処理と同一の処理を行う。
同様に、符号化装置100は、選択したDepthがDepth2であれば、ステップS1504の処理として、ステップS1405の処理と同一の処理を行い、ステップS1505の処理として、ステップS1406の処理と同一の処理を行う。また、符号化装置100は、選択したDepthがDepth3であれば、ステップS1504の処理として、ステップS1407の処理と同一の処理を行い、ステップS1505の処理として、ステップS1408の処理と同一の処理を行う。
次に、符号化装置100は、いずれかのDepth候補の全てのDepth候補を選択したか否かを判断する(ステップS1506)。いずれかのDepth候補のうちまだ選択していないDepth候補がある場合(ステップS1506:No)、符号化装置100は、いずれかのDepth候補のうちの次のDepth候補を選択する(ステップS1507)。ステップS1507の処理終了後、符号化装置100は、ステップS1504の処理に移行する。
いずれかのDepth候補全てを選択した場合(ステップS1506:Yes)、符号化装置100は、いずれかのDepth候補全ての決定したPUサイズの評価値に基づいて、動きベクトルを検出する(ステップS1508)。ステップS1508の処理終了後、符号化装置100は、第2動きベクトル検出処理を終了する。第2動きベクトル検出処理を実行することにより、符号化装置100は、参照フレームrFのDepthに近似する、いずれかのDepth候補の中から評価値が最小となる動きベクトルを検出することができる。
以上説明したように、符号化装置100によれば、対象フレームのブロックの動きベクトル検出を行う際に、参照フレームのブロックの動きベクトル検出時に採用したブロックサイズと同等のブロックサイズを用いる。これにより、符号化装置100は、符号化後の動画像の画質の劣化を抑制しつつ、動きベクトル検出処理にかかる演算量を削減することができる。
具体的に、符号化装置100は、4つのDepthに対して動きベクトル検出処理を行う処理に対して、3つのDepthに対して動きベクトル検出処理を行うため、動きベクトル検出処理にかかる演算量を、25%削減することができる。
また、符号化装置100によれば、全てのDepth候補のうちの選択したDepth候補に対して評価値を算出して、動きベクトルを検出してもよい。これにより、符号化装置100は、選択したDepth候補に対して評価値を算出するため、画質の劣化を抑制しつつ動きベクトルの検出にかかる演算量を削減することができる。
また、符号化装置100は、参照フレームrFのDepthとして特定する個数として、1つのDepthを特定してもよいし、2つ以上のDepthを特定してもよい。たとえば、符号化装置100は、参照フレームrFのDepthが、Depth0〜Depth2である場合、参照フレームrFのDepthとしてDepth1を特定してもよいし、Depth0とDepth1とを特定してもよい。参照フレームrFのDepthが2つ特定される可能性がある場合、Depth候補テーブル711が、参照フレームrFのDepthが2つのレコードと、を記憶しておけばよい。
また、符号化装置100によれば、参照フレームrFの動きベクトルが検出された際に複数のDepthが特定された場合、複数のDepthの各々のDepthに基づいて、参照フレームrFのDepthを特定してもよい。たとえば、符号化装置100は、複数のDepthのうちの最も小さいDepthを、参照フレームrFのDepthとして特定してもよい。参照フレームrFにて小さく分割されたDepthがあると、対象フレームtFでも小さく分割される可能性が高い。そこで、符号化装置100は、最も小さいDepthを参照フレームrFのDepthとして特定しておくことにより、画質の劣化を抑制することができる。
また、符号化装置100によれば、参照フレームrFの動きベクトルが検出された際に複数のDepthが特定された場合、複数のDepthの各々のDepthに従って分割されたCUの個数に基づいて、いずれかのDepth候補を選択してもよい。たとえば、符号化装置100は、複数のDepthのうちのCUサイズの個数が最も多いDepthを、参照フレームrFのDepthとして特定してもよい。これにより、符号化装置100は、参照フレームrFが分割されたDepthに最も近似するDepthに絞り込んで動きベクトル検出を行うことになるため、画質の劣化を抑制することができる。また、符号化装置100は、CUサイズが小さい程、CUサイズの個数が多くなるため、CUサイズの大きさという重み付けを行ったCUサイズの個数に基づいて、参照フレームrFのDepthを特定してもよい。
また、符号化装置100によれば、対象フレームtFが一連のフレームにおける所定の順番のフレームであれば第2動きベクトル検出処理を行い、対象フレームtFがる所定の順番のフレーム以外であれば第1動きベクトル検出処理を行ってもよい。たとえば、一連のフレームのいずれかのフレームにてシーンチェンジ等をした結果、参照フレームrFと対象フレームtFとが類似しない状態があるとする。このとき、符号化装置100は、対象フレームtFが所定の順番のフレーム以外の時に第1動きベクトル検出処理を行うため、画像の内容に適したブロックサイズで符号化を行うことができ、画質の劣化を抑制することができる。
また、符号化装置100によれば、対象フレームtFの平坦度と参照フレームrFの平坦度との差分が所定の閾値以下であれば第2動きベクトル検出処理を行い、所定の閾値より大きければ第1動きベクトル検出処理を行ってもよい。たとえば、参照フレームrFから対象フレームにかけてシーンチェンジがあったとする。このとき、対象フレームtFの平坦度と参照フレームrFの平坦度とが大きく変化することになるため、符号化装置100は、第1動きベクトル検出処理を行うことになる。このように、符号化装置100は、参照フレームrFと対象フレームtFとが類似しなくなったときに、第1動きベクトル検出処理を行うため、画質の劣化を抑制することができる。
また、本実施の形態では、フレーム間予測単位となるPUの計算対象を減らして、動きベクトル検出処理にかかる演算量を削減したが、直交変換の単位となるTU(Transform Unit)の選択可能なブロックサイズを削減してもよい。TUは、4×4[画素]と、8×8[画素]と、16×16[画素]と、32×32[画素]との4種類がある。直交変換とは、画像圧縮を行う前処理の段階において、画像圧縮をしやすくするために、変換前の画像の画素値を低周波成分と高周波成分に分解する仕組みのことである。
なお、本実施の形態で説明した符号化方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本符号化プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本符号化プログラムは、インターネット等のネットワークを介して配布してもよい。
また、本実施の形態で説明した符号化装置100は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けIC(以下、単に「ASIC」と称す。)やFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。具体的には、たとえば、上述した符号化装置100の判断部701〜検出部705と、Depth候補テーブル711とをHDL記述によって機能定義し、HDL記述を論理合成してASICやPLDに与えることにより、符号化装置100を製造することができる。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)一連のフレームにおける符号化対象の対象フレームの参照先となる参照フレームについて、前記参照フレームから分割されるブロックの複数のブロックサイズ候補の中から、前記ブロックの動きベクトルが検出された際のブロックサイズを特定する特定部と、
前記対象フレームから分割されるブロックの動きベクトルを検出する際に、前記特定部によって特定された前記ブロックサイズに基づいて、前記複数のブロックサイズ候補のうちの前記対象フレームを分割するいずれかのブロックサイズ候補を選択する選択部と、
を有することを特徴とする符号化装置。
(付記2)前記選択部によって選択された前記いずれかのブロックサイズ候補に対応して、前記対象フレームから前記いずれかのブロックサイズ候補に従って分割される各ブロックの画素値と前記参照フレーム上の探索範囲内の参照ブロックの画素値との差分を表す評価値を算出する算出部と、
前記算出部によって算出された前記いずれかのブロックサイズ候補に従って分割した各ブロックの評価値に基づいて、前記対象フレームが分割されたブロックの動きベクトルを検出する検出部と、
を有することを特徴とする付記1に記載の符号化装置。
(付記3)前記選択部は、
前記特定部によって前記参照フレームが分割されたブロックの動きベクトルが検出された際に前記ブロックのブロックサイズが複数特定された場合、複数のブロックサイズの各々のブロックサイズのうちの相対的に小さいブロックサイズに基づいて、前記複数のブロックサイズ候補のうちの前記対象フレームを分割するいずれかのブロックサイズ候補を選択することを特徴とする付記1または2に記載の符号化装置。
(付記4)前記選択部は、
前記特定部によって前記参照フレームが分割されたブロックの動きベクトルが検出された際に前記ブロックのブロックサイズが複数特定された場合、複数のブロックサイズの各々のブロックサイズに従って分割されたブロックの個数に基づいて、前記複数のブロックサイズ候補のうちの前記対象フレームを分割するいずれかのブロックサイズ候補を選択することを特徴とする付記1〜3のいずれか一つに記載の符号化装置。
(付記5)前記対象フレームが前記一連のフレームにおける所定の順番のフレームであるか否かを判断する判断部を有し、
前記特定部は、
前記判断部によって前記対象フレームが前記所定の順番のフレームであると判断された場合、前記ブロックサイズを特定することを特徴とする付記1〜4のいずれか一つに記載の符号化装置。
(付記6)前記対象フレームの画素値と、前記参照フレームの画素値との差分を表す値が所定の閾値未満か否かを判断する判断部を有し、
前記特定部は、
前記判断部によって前記値が前記所定の閾値未満であると判断された場合、前記ブロックサイズを特定することを特徴とする付記1〜5のいずれか一つに記載の符号化装置。
(付記7)一連のフレームにおける符号化対象の対象フレームの参照先となる参照フレームについて、前記参照フレームから分割されるブロックの複数のブロックサイズ候補の中から、前記ブロックの動きベクトルが検出された際のブロックサイズを特定する特定部と、
前記対象フレームから分割されるブロックの動きベクトルを検出する際に、前記特定部によって特定された前記ブロックサイズに基づいて、前記複数のブロックサイズ候補のうちの前記対象フレームを分割するいずれかのブロックサイズ候補を選択する選択部と、
を有するコンピュータを含むことを特徴とするコンピュータシステム。
(付記8)コンピュータが、
一連のフレームにおける符号化対象の対象フレームの参照先となる参照フレームについて、前記参照フレームから分割されるブロックの複数のブロックサイズ候補の中から、前記ブロックの動きベクトルが検出された際のブロックサイズを特定し、
前記対象フレームから分割されるブロックの動きベクトルを検出する際に、特定した前記ブロックサイズに基づいて、前記複数のブロックサイズ候補のうちの前記対象フレームを分割するいずれかのブロックサイズ候補を選択する、
処理を実行することを特徴とする符号化方法。
(付記9)コンピュータに、
一連のフレームにおける符号化対象の対象フレームの参照先となる参照フレームについて、前記参照フレームから分割されるブロックの複数のブロックサイズ候補の中から、前記ブロックの動きベクトルが検出された際のブロックサイズを特定し、
前記対象フレームから分割されるブロックの動きベクトルを検出する際に、特定した前記ブロックサイズに基づいて、前記複数のブロックサイズ候補のうちの前記対象フレームを分割するいずれかのブロックサイズ候補を選択する、
処理を実行させることを特徴とする符号化プログラム。
(付記10)一連のフレームにおける符号化対象の対象フレームの参照先となる参照フレームについて、前記参照フレームから分割されるブロックの複数のブロックサイズ候補の中から、前記ブロックの動きベクトルが検出された際のブロックサイズを特定し、
前記対象フレームから分割されるブロックの動きベクトルを検出する際に、特定した前記ブロックサイズに基づいて、前記複数のブロックサイズ候補のうちの前記対象フレームを分割するいずれかのブロックサイズ候補を選択する、
処理をコンピュータに実行させる符号化プログラムを記録したことを特徴とする記録媒体。
tF 対象フレーム
rF 参照フレーム
100 符号化装置
200 コンピュータシステム
701 判断部
702 特定部
703 選択部
704 算出部
705 検出部

Claims (10)

  1. 一連のフレームにおける符号化対象の対象フレームの参照先となる参照フレームについて、前記参照フレームから分割されるブロックの複数のブロックサイズ候補の中から、前記ブロックの動きベクトルが検出された際のブロックサイズを特定する特定部と、
    前記対象フレームから分割されるブロックの動きベクトルを検出する際に、前記特定部によって特定された前記ブロックサイズに基づいて、前記複数のブロックサイズ候補のうちの前記対象フレームを分割するいずれかのブロックサイズ候補を選択する選択部と、
    を有することを特徴とする符号化装置。
  2. 前記選択部によって選択された前記いずれかのブロックサイズ候補に対応して、前記対象フレームから前記いずれかのブロックサイズ候補に従って分割される各ブロックの画素値と前記参照フレーム上の探索範囲内の参照ブロックの画素値との差分を表す評価値を算出する算出部と、
    前記算出部によって算出された前記いずれかのブロックサイズ候補に従って分割した各ブロックの評価値に基づいて、前記対象フレームが分割されたブロックの動きベクトルを検出する検出部と、
    を有することを特徴とする請求項1に記載の符号化装置。
  3. 前記選択部は、
    前記特定部によって前記参照フレームが分割されたブロックの動きベクトルが検出された際に前記ブロックのブロックサイズが複数特定された場合、複数のブロックサイズの各々のブロックサイズのうちの相対的に小さいブロックサイズに基づいて、前記複数のブロックサイズ候補のうちの前記対象フレームを分割するいずれかのブロックサイズ候補を選択することを特徴とする請求項1または2に記載の符号化装置。
  4. 前記選択部は、
    前記特定部によって前記参照フレームが分割されたブロックの動きベクトルが検出された際に前記ブロックのブロックサイズが複数特定された場合、複数のブロックサイズの各々のブロックサイズに従って分割されたブロックの個数に基づいて、前記複数のブロックサイズ候補のうちの前記対象フレームを分割するいずれかのブロックサイズ候補を選択することを特徴とする請求項1〜3のいずれか一つに記載の符号化装置。
  5. 前記対象フレームが前記一連のフレームにおける所定の順番のフレームであるか否かを判断する判断部を有し、
    前記特定部は、
    前記判断部によって前記対象フレームが前記所定の順番のフレームであると判断された場合、前記ブロックサイズを特定することを特徴とする請求項1〜4のいずれか一つに記載の符号化装置。
  6. 前記対象フレームの画素値と、前記参照フレームの画素値との差分を表す値が所定の閾値未満か否かを判断する判断部を有し、
    前記特定部は、
    前記判断部によって前記値が前記所定の閾値未満であると判断された場合、前記ブロックサイズを特定することを特徴とする請求項1〜5のいずれか一つに記載の符号化装置。
  7. 一連のフレームにおける符号化対象の対象フレームの参照先となる参照フレームについて、前記参照フレームから分割されるブロックの複数のブロックサイズ候補の中から、前記ブロックの動きベクトルが検出された際のブロックサイズを特定する特定部と、
    前記対象フレームから分割されるブロックの動きベクトルを検出する際に、前記特定部によって特定された前記ブロックサイズに基づいて、前記複数のブロックサイズ候補のうちの前記対象フレームを分割するいずれかのブロックサイズ候補を選択する選択部と、
    を有するコンピュータを含むことを特徴とするコンピュータシステム。
  8. コンピュータが、
    一連のフレームにおける符号化対象の対象フレームの参照先となる参照フレームについて、前記参照フレームから分割されるブロックの複数のブロックサイズ候補の中から、前記ブロックの動きベクトルが検出された際のブロックサイズを特定し、
    前記対象フレームから分割されるブロックの動きベクトルを検出する際に、特定した前記ブロックサイズに基づいて、前記複数のブロックサイズ候補のうちの前記対象フレームを分割するいずれかのブロックサイズ候補を選択する、
    処理を実行することを特徴とする符号化方法。
  9. コンピュータに、
    一連のフレームにおける符号化対象の対象フレームの参照先となる参照フレームについて、前記参照フレームから分割されるブロックの複数のブロックサイズ候補の中から、前記ブロックの動きベクトルが検出された際のブロックサイズを特定し、
    前記対象フレームから分割されるブロックの動きベクトルを検出する際に、特定した前記ブロックサイズに基づいて、前記複数のブロックサイズ候補のうちの前記対象フレームを分割するいずれかのブロックサイズ候補を選択する、
    処理を実行させることを特徴とする符号化プログラム。
  10. 一連のフレームにおける符号化対象の対象フレームの参照先となる参照フレームについて、前記参照フレームから分割されるブロックの複数のブロックサイズ候補の中から、前記ブロックの動きベクトルが検出された際のブロックサイズを特定し、
    前記対象フレームから分割されるブロックの動きベクトルを検出する際に、特定した前記ブロックサイズに基づいて、前記複数のブロックサイズ候補のうちの前記対象フレームを分割するいずれかのブロックサイズ候補を選択する、
    処理をコンピュータに実行させる符号化プログラムを記録したことを特徴とする記録媒体。
JP2015507753A 2013-03-26 2013-03-26 符号化装置、方法、プログラム、コンピュータシステム、記録媒体 Expired - Fee Related JP6090430B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/058864 WO2014155543A1 (ja) 2013-03-26 2013-03-26 符号化装置、方法、プログラム、コンピュータシステム、記録媒体

Publications (2)

Publication Number Publication Date
JPWO2014155543A1 true JPWO2014155543A1 (ja) 2017-02-16
JP6090430B2 JP6090430B2 (ja) 2017-03-08

Family

ID=51622623

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015507753A Expired - Fee Related JP6090430B2 (ja) 2013-03-26 2013-03-26 符号化装置、方法、プログラム、コンピュータシステム、記録媒体

Country Status (3)

Country Link
US (1) US20160057429A1 (ja)
JP (1) JP6090430B2 (ja)
WO (1) WO2014155543A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6394876B2 (ja) * 2014-09-17 2018-09-26 株式会社ソシオネクスト 符号化回路、符号化方法
CN105430415B (zh) * 2015-12-02 2018-02-27 宁波大学 一种3d‑hevc深度视频帧内快速编码方法
CN112702603A (zh) * 2019-10-22 2021-04-23 腾讯科技(深圳)有限公司 视频编码方法、装置、计算机设备和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012101781A1 (ja) * 2011-01-26 2012-08-02 株式会社日立製作所 画像復号化装置
JP2013046282A (ja) * 2011-08-25 2013-03-04 Sony Corp 画像処理装置および画像処理方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100999091B1 (ko) * 2003-11-17 2010-12-07 삼성전자주식회사 임의 크기의 가변 블록을 이용한 영상 압축 방법 및 장치
WO2007042073A1 (en) * 2005-10-12 2007-04-19 Active Optics Pty Limited Image processing method and system
JP2007194935A (ja) * 2006-01-19 2007-08-02 Victor Co Of Japan Ltd 動画像符号化装置および動画像符号化プログラム
JP4752631B2 (ja) * 2006-06-08 2011-08-17 株式会社日立製作所 画像符号化装置、及び画像符号化方法
JP4789719B2 (ja) * 2006-07-06 2011-10-12 キヤノン株式会社 動きベクトル検出装置、動きベクトル検出方法、コンピュータプログラム及び記憶媒体
CN102301714B (zh) * 2009-01-28 2014-01-22 法国电信公司 用于对实施运动补偿的图像序列进行编码和解码的方法、以及对应的编码和解码装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012101781A1 (ja) * 2011-01-26 2012-08-02 株式会社日立製作所 画像復号化装置
JP2013046282A (ja) * 2011-08-25 2013-03-04 Sony Corp 画像処理装置および画像処理方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
LIQUAN SHEN ET AL.: "An Effective CU Size Decision Method for HEVC Encoders", IEEE TRANSACTIONS ON MULTIMEDIA, vol. 15, no. 2, JPN6016024672, February 2013 (2013-02-01), pages 465 - 470, XP011487705, ISSN: 0003347660, DOI: 10.1109/TMM.2012.2231060 *
ZHE SHENG AND SATOSHI GOTO: "An HEVC CU Pruning Method based on Depth", 電子情報通信学会2013年総合大会講演論文集 情報・システム2, JPN6016024674, 5 March 2013 (2013-03-05), pages 53, ISSN: 0003347661 *

Also Published As

Publication number Publication date
US20160057429A1 (en) 2016-02-25
WO2014155543A1 (ja) 2014-10-02
JP6090430B2 (ja) 2017-03-08

Similar Documents

Publication Publication Date Title
JP6490203B2 (ja) 画像予測方法および関連装置
EP3389276B1 (en) Hash-based encoder decisions for video coding
JP6334006B2 (ja) ビデオ符号化用の高コンテンツ適応型品質回復フィルタ処理のためのシステムおよび方法
CN106331703B (zh) 视频编码和解码方法、视频编码和解码装置
WO2010001916A1 (ja) 画像処理装置および方法
US20150117540A1 (en) Coding apparatus, decoding apparatus, coding data, coding method, decoding method, and program
JP2010104022A (ja) 画像符号化装置および画像符号化方法
KR20240033137A (ko) 모션 벡터 리파인먼트를 위한 제한된 메모리 액세스 윈도우
US20240015300A1 (en) Image encoding/decoding method and device
US10034016B2 (en) Coding apparatus, computer system, coding method, and computer product
JP6090430B2 (ja) 符号化装置、方法、プログラム、コンピュータシステム、記録媒体
CN116569552A (zh) 用于帧间预测补偿的方法及系统
CN115280770B (zh) 用于对视频进行编码或解码的方法和装置
US11528485B2 (en) Encoding apparatus and program
Ma et al. A fast background model based surveillance video coding in HEVC
CN111108747B (zh) 获得信号的时间样本的目标表示
US9549205B2 (en) Method and device for encoding video
TW202005388A (zh) 交織預測的應用
US9948932B2 (en) Image processing apparatus and control method of image processing apparatus
JP2015115901A (ja) 符号化装置、符号化装置の制御方法、及び、コンピュータプログラム
JP5571262B2 (ja) 画像符号化方法及び画像復号化方法
JP6248648B2 (ja) 情報処理装置、符号化単位の選択方法、及びプログラム
JP2016178375A (ja) 画像処理装置、画像処理方法および画像処理プログラム
JP2023030585A (ja) 画像符号化装置及び方法及びプログラム
JP2009232163A (ja) 補間フレーム作成装置、補間フレーム作成方法及び補間フレーム作成プログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161128

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170110

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170123

R150 Certificate of patent or registration of utility model

Ref document number: 6090430

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees