JP2021022865A - 動きベクトル検出装置及びその制御方法、符号化装置、撮像装置、及び、プログラム - Google Patents
動きベクトル検出装置及びその制御方法、符号化装置、撮像装置、及び、プログラム Download PDFInfo
- Publication number
- JP2021022865A JP2021022865A JP2019138959A JP2019138959A JP2021022865A JP 2021022865 A JP2021022865 A JP 2021022865A JP 2019138959 A JP2019138959 A JP 2019138959A JP 2019138959 A JP2019138959 A JP 2019138959A JP 2021022865 A JP2021022865 A JP 2021022865A
- Authority
- JP
- Japan
- Prior art keywords
- motion vector
- target
- image
- horizontal direction
- storage unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
【課題】設定された目標符号量との関連で、内部メモリの容量を増加させることなく画質劣化を抑制するために探索範囲を拡大する技術を提供する。【解決手段】動きベクトル検出装置において、符号化処理の対象画像を構成する複数のブロックのうち、動きベクトルを検出する対象ブロックのデータを格納する第1の格納部と、符号化処理において用いられる参照画像のうち、対象ブロックの動きベクトルを探索する探索範囲を含むデータを格納する第2の格納部と、第1の格納部に対する対象ブロックのデータの格納及び第2の格納部に対する探索範囲を含むデータの格納を制御する制御手段と、探索範囲において、対象ブロックの動きベクトルを検出する検出手段とを備える。対象画像に設定された目標符号量と閾値との比較結果に応じて、対象画像を水平方向に分割するかどうかを決定する。【選択図】図7
Description
動きベクトル検出装置及びその制御方法、符号化装置、撮像装置、及び、プログラムに関する。
従来、動画像の符号化データ量を効率的に削減するための手法として、動き補償が知られている(非特許文献1)。動き補償には、符号化するフレーム(対象画像)と、予測に用いる参照フレーム(参照画像)との動きの情報が必要であり、動きの情報は通常、動きベクトルと呼ばれる。動きベクトルは一般に、対象画像を分割したブロックをテンプレート画像として用い、参照画像の一部である探索範囲の中でテンプレート画像と相関が最も高い領域を探索するテンプレートマッチングによって、ブロックごとに検出される。探索範囲は例えばテンプレート画像として用いるブロックに対応する参照画像の位置の周辺領域として設定される。
探索範囲が広い方が大きな動きに対応する動きベクトルを検出可能であるが、検出に関する処理負荷が増大する。探索範囲を狭くすると、処理負荷は軽減されるが、探索すべき領域(移動先)が探索範囲に含まれなくなる可能性が高くなる。
また、動きベクトル検出をハードウェア処理で行う場合、外部メモリに記憶されている参照画像のデータから探索範囲のデータを内部メモリに読み込んで、動きベクトルを検出する対象ブロック(テンプレート画像)との相関演算を実行する。その際、探索範囲は対象ブロックごとに設定されるが、例えば隣接するブロックに対して設定される探索範囲などは、重複部分を有する。対象ブロックが変わるごとに探索範囲のデータを内部メモリに読み込むと、他の探索範囲との重複部分について繰り返し読み込むことになるため、外部メモリへのアクセスや電力の利用効率が低下する。
ここで、例えば水平探索範囲m画素、垂直探索範囲n画素として、内部メモリに参照画像の水平画素ラインのnライン分を読み込むようにすれば、読み込んだ領域に包含される、水平方向の位置が異なる複数の探索範囲の読み込みを1度で終わらせることができる。しかし、この構成を採用する場合、参照画像の水平画素数(1水平画素ラインに含まれる画素数)が増加すると、nライン分を読み込むために必要な内部メモリの容量を増加させる必要があるが、メモリ容量が不足する場合も考えられる。予め内部メモリの容量を多くしておくことも可能ではあるが、回路規模、消費電力、コストがいずれも増加する。
一方、内部メモリの容量を増加させない場合、参照画像の水平画素数が増加すると、読み込み可能なライン数が減少する。そのため、探索範囲の垂直方向の大きさが減少し、垂直方向における動きベクトルの探索精度が低下する可能性がある。
以上のように、探索範囲の大きさは、動きベクトル検出に係る処理負荷や精度、またハードウェアの実装コストに影響を与える重要な要素であり、適切に設定することが求められる。特許文献1では、撮影シーンによって探索範囲の設定を変更することが提案されている。また、特許文献2では、対象画像の水平画素数に応じて水平のタイル分割数を増やすことで、水平画素数が増加した場合においても内部メモリの容量を増加させずに読み込み可能なライン数を維持し、検出精度の低下を抑制することが提案されている。
H.265/HEVC教科書、大久保 榮[[監修]、鈴木輝彦、高村誠之、中条健[共編]、2013年10月21日発行
動きベクトル検出における探索範囲の大きさはまた、対象画像を符号化する際に設定される目標符号量との関連で画質劣化を抑制するのに影響を与える要素でもある。そこで、設定された目標符号量との関連で、内部メモリの容量を増加させることなく画質劣化を抑制するために探索範囲を拡大する技術が求められている。
上記課題を解決するための発明は、動きベクトル検出装置であって、
符号化処理の対象画像を構成する複数のブロックのうち、動きベクトルを検出する対象ブロックのデータを格納する第1の格納部と、
前記符号化処理において用いられる参照画像のうち、前記対象ブロックの動きベクトルを探索する探索範囲を含むデータを格納する第2の格納部と、
前記第1の格納部に対する前記対象ブロックのデータの格納、及び、前記第2の格納部に対する前記探索範囲を含むデータの格納を制御する制御手段と、
前記探索範囲において、前記対象ブロックの動きベクトルを検出する検出手段と
を備え、
前記制御手段は、
前記符号化処理のために前記対象画像に設定された目標符号量と、閾値との比較結果に応じて、前記対象画像を水平方向に分割するかどうかを決定し、
前記対象画像を水平方向に分割する場合、前記第1の格納部に対する前記対象ブロックのデータの格納を、前記水平方向に分割された対象画像ごとに行い、
前記対象画像の水平方向における分割数に応じて、前記探索範囲を含むデータとして前記第2の格納部に格納される前記参照画像の水平方向及び垂直方向の画素数を切り替える。
符号化処理の対象画像を構成する複数のブロックのうち、動きベクトルを検出する対象ブロックのデータを格納する第1の格納部と、
前記符号化処理において用いられる参照画像のうち、前記対象ブロックの動きベクトルを探索する探索範囲を含むデータを格納する第2の格納部と、
前記第1の格納部に対する前記対象ブロックのデータの格納、及び、前記第2の格納部に対する前記探索範囲を含むデータの格納を制御する制御手段と、
前記探索範囲において、前記対象ブロックの動きベクトルを検出する検出手段と
を備え、
前記制御手段は、
前記符号化処理のために前記対象画像に設定された目標符号量と、閾値との比較結果に応じて、前記対象画像を水平方向に分割するかどうかを決定し、
前記対象画像を水平方向に分割する場合、前記第1の格納部に対する前記対象ブロックのデータの格納を、前記水平方向に分割された対象画像ごとに行い、
前記対象画像の水平方向における分割数に応じて、前記探索範囲を含むデータとして前記第2の格納部に格納される前記参照画像の水平方向及び垂直方向の画素数を切り替える。
本発明によれば、設定された目標符号量との関連で、内部メモリの容量を増加させることなく画質劣化を抑制するために探索範囲を拡大する技術を提供できる。
以下、添付図面を参照して実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
なお、以下の実施形態においては、本発明に係る動きベクトル検出装置を適用可能な電子機器の一例としての撮像装置、特にはデジタルカメラに関して説明する。しかしながら、本実施形態において動画像を撮像したり記録したりするための構成は必須では無い。従って、撮像装置以外にも、例えば、動画像の符号化を行う符号化装置として構成することもできるし、或いは、記憶装置や通信ネットワークを通じて動画像を取得可能な任意の電子機器として構成することもできる。このような電子機器にはデジタルカメラをはじめ、パーソナルコンピュータ、タブレットコンピュータ、携帯電話機、スマートフォン、PDA、ゲーム機、ドライブレコーダ、ロボットなどが含まれるが、これらに限定されない。
[実施形態1]
以下、添付の図面を参照して第1の実施形態について説明する。
以下、添付の図面を参照して第1の実施形態について説明する。
<装置の構成>
図1は実施形態1に係る動きベクトル検出装置を適用したデジタルカメラの機能構成例を示すブロック図である。なお、本実施形態では動きベクトルを画像データの符号化に利用するため、図1では符号化に関する機能構成を重点的に示している。しかしながら、表示部、操作部、電源部など、一般的なデジタルカメラが備える構成に関しては、図示の有無にかかわらず本実施形態のデジタルカメラも備えている。
図1は実施形態1に係る動きベクトル検出装置を適用したデジタルカメラの機能構成例を示すブロック図である。なお、本実施形態では動きベクトルを画像データの符号化に利用するため、図1では符号化に関する機能構成を重点的に示している。しかしながら、表示部、操作部、電源部など、一般的なデジタルカメラが備える構成に関しては、図示の有無にかかわらず本実施形態のデジタルカメラも備えている。
レンズ101は被写体の光学像を撮像部102の撮像面に形成する撮像光学系である。撮像部102は撮像面に形成された光学像を、複数の画素を備える撮像素子によって光電変換し、画像を表す電気信号(画像信号)に変換する。また、撮像部102は画像信号をA/D変換し、画像データとして現像処理部103に供給する。本実施形態において撮像部102は動画像を撮影する。
現像処理部103では、ノイズ除去、色補間(デモザイク)、欠陥画素補正、ホワイトバランス調整、手振れ補正や周辺光量補正、ガンマ補正、色調補正、拡大縮小、YCbCr形式への色変換など、予め定められた画像処理を画像データに適用する。なお、現像処理部103は、被写体検出やレンズ101のオートフォーカス制御や、自動露出制御に用いる評価値の生成など、一般的なデジタルカメラにおいて撮像画像に対して実行する各種の処理を実行することができるが、詳細については省略する。現像処理部103は、画像処理後の記録用画像データを対象フレームバッファ104を介して符号化回路123に供給する。
対象フレームバッファ104は、現像処理部103が出力した符号化回路123で符号化する画像(対象画像)のデータを一時的に格納する。なお、対象フレームバッファ104と、後述する参照画像格納のための参照フレームバッファ105は、符号化回路123の外部メモリであるDRAMの領域を用いるものとする。また、対象フレームバッファ104は、後述する適応オフセット処理部122によるローカルデコード画像データ生成のために用いる原画像を供給するため、複数枚の対象画像を格納する領域を持つ。
参照フレームバッファ105は、後述する適応オフセット処理部122が出力したローカルデコード画像を一時的に格納する。尚、参照フレームバッファ105は、直前までに出力された複数枚のローカルデコード画像を格納するための領域を持つ。
符号化回路123は、記録用の画像データを予め定められた方式で符号化し、データ量を削減した符号化画像データを生成する。本実施形態において符号化回路123は、動き補償予測符号化方式、例えばHEVCに準拠した符号化を実行するものとする。符号化回路123は、例えばASICやFPGAなどのハードウェア回路である。符号化回路123は、符号化画像データを格納する画像ファイルを生成し、半導体メモリカードなどの記録メディア116に記録する。
制御部100は、例えば1つ以上のCPUとメモリとを有する。メモリのうち不揮発性のものにはプログラム、各種の設定値、GUIデータなどが格納されている。CPUはプログラムをメモリのワークエリアに読み込んで実施し、各部の動作を制御することにより、デジタルカメラの各種機能を実現する。制御部100は、対象画像を符号化する際の目標ビットレートを、後述する符号量制御部115に出力する。制御部100は、対象フレームバッファ104に格納されている対象画像データを、水平および垂直方向に分割したブロック単位で、かつ所定の順序で第1の格納部である対象ブロックバッファ106に格納する。なお、対象ブロックバッファ106は、符号化回路123の内部メモリであるSRAMで構成されているものとする。
制御部100は、参照フレームバッファ105に格納されている参照画像データの一部を、第2の格納部である参照ラインバッファ107に供給する。後で詳細に説明するように、制御部100は、動きベクトル検出に用いられる探索範囲のデータを、同じデータを参照フレームバッファ105から繰り返し読み出さないように、参照フレームバッファ105に供給する画像データの範囲を決定する。また、制御部100は、符号量制御部115が出力する目標符号量に応じて参照ラインバッファ107の管理方法を変更する。ここで、管理方法とは、参照ラインバッファの論理的な構成(水平および垂直方向の画素数)である。
参照ラインバッファ107は、内部メモリであるSRAMで構成されているものとする。空間予測部108は、対象ブロックバッファ106に格納されている対象ブロックの画像データに対して、空間補償部120から出力された同じ画面内の処理済みの画素についてのローカルデコード画像データを用いて画面内予測を行う。空間予測部108は、対象ブロックの画像データと画面内予測による予測画像の差分画像(予測誤差)を算出し、画面内予測コストと共に予測方法選択部110に出力する。画面内予測コストは、例えば差分画像のSATDを用いる。また、空間予測部108は、ローカルデコード画像作成用に、画面内予測による予測画像を空間補償部120に出力する。
動き予測部109は、対象ブロックバッファ106に格納されている対象ブロックの画像データと類似した領域を探索範囲で探索する。具体的には動き予測部109は、対象ブロックの画像データをテンプレートとして、テンプレートを探索範囲内で1画素ごとにラスタスキャンさせ、各位置でテンプレートと参照画像との類似度(相関)を算出し、探索範囲内で類似度が最も高くなる位置を検出する。そして、動き予測部109は、対象画像におけるテンプレートの位置(例えばテンプレートの中心の座標)を起点とし、探索範囲内で検出された位置の、参照画像における座標を終点とするベクトルを、テンプレートの動きベクトルとして検出する。動き予測部109は、検出した位置におけるテンプレートと参照画像との差分画像を算出し、画面間予測コストと共に予測方法選択部110に出力する。画面間予測コストは、例えば差分画像のSATDを用いる。また、動き予測部109は、ローカルデコード画像作成用に、探索範囲内で最も類似度が高いブロックを予測画像として動き補償部119に出力する。
予測方法選択部110は、空間予測部108から出力された画面内予測コスト、及び動き予測部109から出力された画面間予測コストを比較する。画面内予測コストが小さい場合は、空間予測部108から出力された差分画像を直交変換部111に出力する。画面間予測コストが小さい場合は、動き予測部109から出力された差分画像を直交変換部111に出力する。
直交変換部111は、差分画像に対して直交変換(例えば離散コサイン変換)を適用して変換係数を生成し、変換係数を量子化部112に出力する。量子化部112は、量子化制御部113が出力するブロックごとの量子化ステップサイズ(または量子化パラメータ)に従い、変換係数を量子化する。量子化部112は、量子化した変換係数を、符号化ストリーム作成のために可変長符号化部114に出力するとともに、ローカルデコード画像作成のために逆量子化部117にも出力する。
量子化制御部113は、可変長符号化部114から送られてくる直前に処理したブロックの発生符号量と符号量制御部115によって設定された目標符号量からブロックごとの量子化ステップサイズを決定し、量子化部112に出力する。符号量制御部115は、可変長符号化部114から出力された画像毎の発生符号量と制御部100から出力された目標ビットレートに基づいて、対象画像における目標符号量を算出し、量子化制御部113に出力する。また、符号量制御部115は、対象画像における目標符号量を制御部100にも出力する。
可変長符号化部114では、量子化された変換係数に対してジグザグスキャン、オルタネートスキャン等を行い、変換係数を可変長符号化する。可変長符号化部114はさらに、動きベクトル、量子化ステップサイズ、ブロック分割情報、適応オフセット処理用パラメータなどの符号化情報についても可変長符号化する。そして、可変長符号化部114は、可変長符号化した変換係数と符号化情報とから符号化ストリームを生成し、記録メディア116に記録する。また可変長符号化部114は、ブロックごとの発生符号量を算出して量子化制御部113に出力し、更にフレーム毎の発生符号量を算出して符号量制御部115に出力する。
逆量子化部117は、量子化部112が出力する変換係数を逆量子化し、ローカルデコード用の変換係数を生成する。逆量子化部117は、生成した変換係数を逆直交変換部118に出力する。逆直交変換部118では、変換係数に直交変換部が適用した直交変換の逆変換(逆離散コサイン変換)を適用して差分画像を生成する。逆直交変換部118は、生成した差分画像を動き補償部119、あるいは空間補償部120に出力する。
動き補償部119では、動き予測部109からの予測画像と、逆直交変換部118からの差分画像とを加算することにより、ローカルデコード用の画像データを生成する。動き補償部119は、生成した画像データをデブロッキングフィルタ部121に出力する。空間補償部120では、空間予測部108からの予測画像と、逆直交変換部118からの差分画像とを加算することにより、ローカルデコード用の画像データを生成する。空間補償部120は、生成したローカルデコード画像データを空間予測部108、及びデブロッキングフィルタ部121に出力する。
デブロッキングフィルタ部121は、動き補償部119あるいは空間補償部120から出力されたローカルデコード用の画像データに対してデブロッキングフィルタを適用して適応オフセット処理部122に出力する。デブロッキングフィルタは、対象ブロックの境界における不連続な歪みを平滑化するためのフィルタである。適応オフセット処理部122は、フィルタ処理後の画像データの各画素に対して、対象フレームバッファ104から読み出した原画像の同位置の画素と比較して画素値やエッジの状態の評価と分類を行い、分類に応じたオフセットを加算する。なお、オフセット加算を行わないようにもできる。デブロッキングフィルタ部と適応オフセット処理部とを併せてループ内フィルタと呼ぶこともある。
適応オフセット処理は、エッジ付近に発生する擬似輪郭(リンギング歪み)を抑制するための処理である。適応オフセット処理部122の出力は、ローカルデコード画像データとして参照フレームバッファ105に格納される。また、適応オフセット処理部122は、適応オフセット処理を行ったか否か、どの分類を用いたか、バンド位置、エッジ方向、オフセット値などを適応オフセット処理用のパラメータとして符号化ストリームに含めるために可変長符号化部114に出力する。
このような動作により、符号化ストリームおよびローカルデコード画像が作成される。HEVCにおいては動きベクトル検出処理を含む符号化処理を、CTU(Coding Tree Unit)と呼ぶ画素ブロック単位で、かつラスタスキャン順に実行する。また、対象画像を縦や横方向にCTU単位で分割したタイルという概念が導入されており、各タイルは他のタイルと独立した符号化や復号が可能である。タイルが設定されている場合、符号化処理は各タイル内で閉じたラスタスキャン順でタイル内のCTU毎に実行される。従って、タイルが設定される場合と設定されていない場合とでは、CTUの符号化順序が異なる。
<参照画像のデータの読み出しについて>
次に、参照ラインバッファ107への参照画像の格納方法について説明する。対象画像の解像度を1920×1088とし、動きベクトル探索範囲を、対象ブロック(CTU)の外方に水平方向±512画素、垂直方向に±128ライン(画素)とした場合を例に説明する。つまり、対象ブロックが水平方向x画素、垂直方向y画素の大きさとすると、最大の探索範囲は、水平方向に1024+x画素、垂直方向に256+y画素となる。
次に、参照ラインバッファ107への参照画像の格納方法について説明する。対象画像の解像度を1920×1088とし、動きベクトル探索範囲を、対象ブロック(CTU)の外方に水平方向±512画素、垂直方向に±128ライン(画素)とした場合を例に説明する。つまり、対象ブロックが水平方向x画素、垂直方向y画素の大きさとすると、最大の探索範囲は、水平方向に1024+x画素、垂直方向に256+y画素となる。
本実施形態において、参照ラインバッファ107は、水平画素数が参照画像の水平画素数(ここでは1920画素)に等しく、垂直ライン数が垂直探索範囲(±128画素)と垂直CTUサイズ(32画素)の合計(288画素)に等しいラインバッファとして用いられる。
図2(a)は、対象ブロック(以下、CTUと呼ぶ)と、動きベクトルの探索範囲の例を示す。ここで、CTUサイズは32×32画素、画像の左上角を原点とし、ラスタスキャン方向を正とするxy座標系において、CTU単位の座標(X,Y)を有するCTUをCTU(X,Y)と表現する。従って、X=0〜59、Y=0〜33の範囲の値を取り得る。
CTU(0,0)201は、対象画像で最初に処理されるCTUであり、またCTU(0,0)201については上および左方向の探索は行わない。そのため、参照画像のうち、動きベクトルの探索範囲202は(0,0)と(543,159)とを対角頂点とする、水平544(=32+512)画素、垂直160(=32+128)画素の矩形領域となる。制御部100は、CTU(0,0)201の符号化が開始する前に、参照画像のうちで探索範囲202に相当する部分画像を参照フレームバッファ105から読み出して参照ラインバッファ107に格納する。
図2(b)に、CTU(0,0)201の次に符号化されるCTU(1,0)203を示す。CTU(1,0)203に対する動きベクトル探索範囲は、(0,0)と(575,159)とを対角頂点とする、水平576(=32+32+512)画素、垂直160(=32+128)画素の矩形領域となる。ここで、探索範囲のうち、CTU(0,0)の探索範囲202は既に参照ラインバッファ107に格納されている。そのため、制御部100はCTU(1,0)203の符号化が開始する前に、新たに必要となる(544,0)と(575,159)とを対角頂点とする矩形領域204だけを参照フレームバッファ105から読み出して参照ラインバッファ107に格納する。
図2(c)は、CTU(43,0)205を示している。CTU(43,0)205に対する動きベクトル探索範囲206の右端は、参照画像の右端に等しい。探索範囲206は(864,0)と(1919,159)とを対角頂点とする水平1056画素、垂直160画素の矩形領域である。なお、過去に動きベクトル探索領域として用いた(0,0)と(863,159)を対角頂点とする参照画像の領域207は、CTU(43,0)205に対する動きベクトルの探索には用いられない。しかし、次のCTUライン(CTU(X,1))に対する動きベクトルの探索範囲を含んでいるため、参照ラインバッファ107に保持されている。
図2(d)に示す、CTU(0,1)208の動きベクトル探索範囲は、(0,0)と(543,191)とを対角頂点とする矩形領域であるが、そのうち、CTU(0,0)の探索範囲202は既に参照ラインバッファ107に格納されている。そのため、制御部100はCTU(0,1)208の符号化が開始する前に、新たに必要となる(0,160)と(543,191)とを対角頂点とする矩形領域209だけを参照フレームバッファ105から読み出して参照ラインバッファ107に格納する。
図2(e)は、大きさが最大(水平1056画素、垂直288画素)で、かつ、上端と右端が参照画像の上端と右端に達した探索範囲211を示している。探索範囲211は、CTU(43,5)210に対して設定される、(864,0)と(1919,287)とを対角頂点とする矩形領域である。このとき、参照ラインバッファ107には、参照画像のうち、(0,0)と(1919,287)とを対角頂点とする矩形領域が格納されている。
図2(f)に示す、CTU(0,6)212の動きベクトル探索範囲は、(0,32)と(543,319)とを対角頂点とする矩形領域である。そのうち、(0,32)と(543,287)とを対角頂点とする範囲213は、CTU(0,5)の探索範囲として使用されており、既に参照ラインバッファ107に格納されている。一方で、(0,288)と(543,319)とを対角頂点とする矩形領域215は、CTU(0,5)の探索範囲としては使用されておらず、新たに参照ラインバッファ107に格納しなければならない。また、CTU(0,5)の探索範囲として使用された(0,0)と(543,31)とを対角頂点とする範囲を含む範囲214は、CTU(0,6)以降の探索範囲として使用しないため、参照ラインバッファ107から削除しても良い。
そこで、制御部100は、範囲214を保持していた参照ラインバッファ107の領域の一部に、参照範囲として新たに必要となる矩形領域215を格納する。すなわち、制御部100はCTU(0,6)212の符号化が開始する前に、新たに必要となる(0,288)と(543,319)とを対角頂点とする矩形領域215だけを参照フレームバッファ105から読み出して参照ラインバッファ107に格納する。
<符号量制御について>
ここで、符号量制御部115による対象画像への目標符号量の設定について説明する。尚、下記の例において、後述するピクチャタイプごとの符号量比率などの数値やその他詳細な動作の説明については、説明の簡略化のため省略する。
ここで、符号量制御部115による対象画像への目標符号量の設定について説明する。尚、下記の例において、後述するピクチャタイプごとの符号量比率などの数値やその他詳細な動作の説明については、説明の簡略化のため省略する。
まずは、予め与えられた目標ビットレートに基づいて、GOPごとの目標符号量を算出する。
例えば、目標ビットレートを210Mbpsとして、フレームレートが毎秒30フレーム、GOP周期が15フレームとすると、GOPの目標符号量は、GOPの目標符号量=目標ビットレート×GOP周期÷フレームレート=210Mbit×15÷30=105Mbitとなる。
例えば、目標ビットレートを210Mbpsとして、フレームレートが毎秒30フレーム、GOP周期が15フレームとすると、GOPの目標符号量は、GOPの目標符号量=目標ビットレート×GOP周期÷フレームレート=210Mbit×15÷30=105Mbitとなる。
続いて、I,P,Bの各ピクチャタイプに対して所定の比率をもって目標符号量を算出する。各ピクチャタイプに対して所定の比率は、ここではI:P:B=3:2:1、とする。また、GOP周期15フレームの内訳として、IBBPBBPBBPBBPBB(I:1枚、P:4枚、B:10枚)とする。以上の条件において、GOPを構成する各ピクチャの目標符号量は次のように求まる。
Iピクチャの目標符号量=105Mbit×3÷(3×1+2×4+1×10)
=105Mbit×3÷21
=15Mbit
Pピクチャの目標符号量=105Mbit×2÷21
=10Mbit
Bピクチャの目標符号量=105Mbit×1÷21
=5Mbit
=105Mbit×3÷21
=15Mbit
Pピクチャの目標符号量=105Mbit×2÷21
=10Mbit
Bピクチャの目標符号量=105Mbit×1÷21
=5Mbit
続いて、GOP1つの符号化処理が完了した段階で、GOPの目標符号量と、実際に発生したGOPの発生符号量の差異を、目標符号量に対する乖離度として算出する。ここでは、1GOPの符号化処理で147Mbitが発生したものとする。
目標符号量に対する乖離度=GOPの目標符号量−GOPの発生符号量
=105Mbit−147Mbit
=−42Mbit
=105Mbit−147Mbit
=−42Mbit
目標ビットレートを達成するためには、次のGOPの符号化処理における目標符号量に対する乖離度を加味して新たにGOPの目標符号量を設定する必要がある。例えば、直近で符号化したGOPの発生符号量が多く、目標符号量に対する乖離度が負の値となる場合は、次に符号化するGOPの目標符号量を少なくする。逆に発生符号量が少なく、目標符号量に対する乖離度が正の値となる場合は、次に符号化するGOPの目標符号量を多くする。
そこで、最初に求めたGOPの目標符号量105Mbitに対して、更に目標符号量に対する乖離度を加算し、
GOPの目標符号量=105Mbit+目標符号量に対する乖離度
=105Mbit−42Mbit
=63Mbit
とGOPの目標符号量を更新する。GOPの目標符号量を更新した後は、先程と同様に目標符号量を求める。
GOPの目標符号量=105Mbit+目標符号量に対する乖離度
=105Mbit−42Mbit
=63Mbit
とGOPの目標符号量を更新する。GOPの目標符号量を更新した後は、先程と同様に目標符号量を求める。
Iピクチャの目標符号量=63Mbit×3÷21=9Mbit
Pピクチャの目標符号量=63Mbit×2÷21=6Mbit
Bピクチャの目標符号量=63Mbit×1÷21=3Mbit
上記は目標符号量に対する乖離度が負の値の場合について述べたものだが、逆に発生符号量が小さく済んで目標符号量に対する乖離度が正の値となった場合は、GOPの目標符号量を多くすることができる。
Pピクチャの目標符号量=63Mbit×2÷21=6Mbit
Bピクチャの目標符号量=63Mbit×1÷21=3Mbit
上記は目標符号量に対する乖離度が負の値の場合について述べたものだが、逆に発生符号量が小さく済んで目標符号量に対する乖離度が正の値となった場合は、GOPの目標符号量を多くすることができる。
以上のように、符号量制御部115によって対象画像毎の目標符号量が増減し、場合によっては目標符号量が小さくなりすぎた場合、動きベクトル検出の探索範囲が不足することにより画面内予測が選択されてしまった場合の画質劣化が顕著になってしまう。また、対象画像の目標符号量が小さい場合、量子化ステップサイズを大きくしないと目標符号量を達成できない場合も想定される。このとき量子化ステップサイズは大きく設定されるため、画質劣化が大きくなってしまう。
そこで、目標符号量が小さくなった場合の画質劣化を抑制するために、探索範囲を拡大することで動き検出の精度を上げて、画面間予測が選択されるようにしなければならない。
<目標符号量で分割を判断>
探索範囲を広く持てるように参照ラインバッファ107の容量を定めると、回路規模が増大し、コスト、消費電力、実装面積の増加要因となる。特に、垂直方向の探索範囲は参照ラインバッファ107を構成するラインバッファの本数に直接影響するため、垂直探索範囲の拡大による回路規模増大は非常に大きい。そのため、本実施形態においては、制御部100が目標符号量と所定の符号量閾値との比較結果に応じて、対象画像を水平方向に分割するか否か、或いは、分割数を決定する。例えば、目標符号量が符号量閾値より小さい場合に対象画像を水平方向に分割し、分割領域(タイル)ごとに、各ブロックに対する動きベクトル検出を行うように動きベクトルの検出順序を変更する。
探索範囲を広く持てるように参照ラインバッファ107の容量を定めると、回路規模が増大し、コスト、消費電力、実装面積の増加要因となる。特に、垂直方向の探索範囲は参照ラインバッファ107を構成するラインバッファの本数に直接影響するため、垂直探索範囲の拡大による回路規模増大は非常に大きい。そのため、本実施形態においては、制御部100が目標符号量と所定の符号量閾値との比較結果に応じて、対象画像を水平方向に分割するか否か、或いは、分割数を決定する。例えば、目標符号量が符号量閾値より小さい場合に対象画像を水平方向に分割し、分割領域(タイル)ごとに、各ブロックに対する動きベクトル検出を行うように動きベクトルの検出順序を変更する。
後述するように、対象画像をタイルに分割することで参照ラインバッファ107が格納できる参照画像領域の垂直サイズを拡張することが出来るため、動き検出の精度が向上し、画面間予測が選択されることで目標符号量が小さい場合の画質劣化の抑制が期待できる。尚、目標符号量が所定の符号量閾値未満で設定される場合にタイルに分割するとしたが、目標符号量が所定の符号量閾値以下で設定される場合にタイルに分割するとしても良い。
対象画像を水平方向に分割し、動きベクトルの検出順序を変更する手段としては、HEVCが例に挙げられる。HEVCは、対象画像を水平方向に分割する複数のタイルを設定することで、タイルごとに動きベクトルの検出を行うように変更することができる。
符号量閾値は、予め実験的に求めておいた画面内予測が選択されても画質が保証できる符号量を、ハードウェアのROM、あるいはファームウェアによる設定値として持つことが出来る。また、目標符号量、及び画面内予測、画面間予測の選択結果を、符号化回路123が動作する間、常に監視しておき、画面間予測が選択される場合の目標符号量の平均値や最小値などを符号量閾値に上書きするなどが考えられる。
<タイル分割の場合の参照ラインバッファの管理について>
続いて、タイルに分割した場合の参照ラインバッファの管理について、図3を用いて説明する。図3は、4096×2160の対象画像を水平方向に2分割して、それぞれの大きさが2048×2160の2つのタイルを設定する場合において、各タイルで水平探索範囲±512画素、垂直探索範囲±214画素で動きベクトル検出する例を示したものである。図2と図3とでは対象画像の画素数が異なっているが、説明のために異なっているだけであって、タイル分割するか否かに応じて対象画像の画素数が異なるわけではない。
続いて、タイルに分割した場合の参照ラインバッファの管理について、図3を用いて説明する。図3は、4096×2160の対象画像を水平方向に2分割して、それぞれの大きさが2048×2160の2つのタイルを設定する場合において、各タイルで水平探索範囲±512画素、垂直探索範囲±214画素で動きベクトル検出する例を示したものである。図2と図3とでは対象画像の画素数が異なっているが、説明のために異なっているだけであって、タイル分割するか否かに応じて対象画像の画素数が異なるわけではない。
図3(a)は、対象画像を水平方向に2分割して、タイル301とタイル302を設定する例を示したものである。なお、本明細書における画像の分割方向は、分割線に直交する方向であるため、図3(a)のように分割線(タイルの境界線)が垂直方向の直線である場合、対象画像は水平方向に分割されていると記載する。タイル301が(0,0)と(2047,2159)とを対角頂点とする水平方向2048画素の矩形領域である。また、タイル302が(2048,0)と(4095,2159)とを対角頂点とする水平方向2048画素の矩形領域である。
HEVCにおいてタイルが設定された場合、符号化(動きベクトルの検出)は、タイル内の対象ブロック(CTU)について、図3(b)に示すようにタイルごとのラスタスキャン順で実行される。つまり、水平方向の対象ブロックの一部だけを処理して次のブロック行に移行するように、動きベクトルを検出するブロックの順序が変化する。
タイル301の符号化とタイル302の符号化は並列に実行されてもよいが、本実施形態では、タイル毎に符号化処理を実行するものとする。したがってまずタイル301のCTUについて符号化を行った後、タイル302のCTUについて符号化を行う。
図3(c)は、図3(a)に示すタイル301,302を設定した際の、符号化対象のCTUと動きベクトルの探索範囲を示す。ここでは、タイル301内のCTUのうち、ラスタスキャン順で先頭のCTU(0,0)303と、その動きベクトルの探索範囲304とを示している。探索範囲304は(0,0)と(543,245)とを対角頂点とする、水平544(=32+512)画素、垂直246(=32+214)画素の矩形領域であり、タイルを設定しない場合に対して垂直方向の画素数を増やしている。垂直246(=32+214)画素の由来については後述するが、図2で説明したタイル分割しない場合の垂直方向の探索範囲128画素に対して、より広い範囲を探索できる。
図3(d)は、タイル301内のCTUのうち、ラスタスキャン順で最初にタイル301の右端に位置するCTU(63,0)305と、CTU(63,0)305の動きベクトルの探索範囲306とを示している。探索範囲306は、(1504,0)と(2559,245)を対角頂点とする、水平1056(=512+32+512)画素、垂直246(=32+214)画素の矩形領域である。CTU(63,0)305はタイル301の右端に位置する。そのため、参照画像のうち、探索範囲306よりx座標値の大きな範囲((2560,0)と(4095,2159)とを対角頂点とする領域307)は、タイル301内のCTUに対する動きベクトル検出には用いられない。
タイル301の処理において、(2560,0)と(4095,2159)とを対角頂点とする領域307は使われないため、参照ラインバッファ107に格納しない。タイル301内の全CTUの符号化が終了すると、タイル302内のCTUについて同様に符号化を行う。図3(e)は、タイル302内のCTUのうち、ラスタスキャン順で先頭のCTU(64,0)308と、その動きベクトルの探索範囲309とを示している。探索範囲309は(1536,0)と(2591,245)とを対角頂点とする、水平1056(=512+32+512)画素、垂直246(=32+214)画素の矩形領域である。
CTU(64,0)308はタイル302の左端に位置する。そのため、参照画像のうち、探索範囲309よりx座標値の小さな範囲((0,0)と(1535,2159)とを対角頂点とする領域310)は、タイル302内のCTUに対する動きベクトル検出には用いられない。タイル302の処理において、(0,0)と(1535,2159)とを対角頂点とする領域310は使われないため、参照ラインバッファ107に格納しない。
以上のように、水平方向にタイル分割して各タイルで独立して動きベクトル検出を行う際に、それぞれのタイルにおける動きベクトル検出で用いないため、参照ラインバッファ107に格納しない領域が発生する。タイル分割をしない場合の動きベクトル検出処理で参照ラインバッファ107に格納する水平画素数は、参照画像の水平画素数(1ラインの画素数)に一致するのに対し、各タイルの動きベクトル検出処理で参照ラインバッファ107に格納する水平画素数は参照画像の1ラインの画素数よりも少なくなる。そこで、水平方向にタイル分割する際に、参照ラインバッファ107に格納する水平画素数が少なくなった分だけ垂直のライン数を増やすように参照ラインバッファ107の管理方法を変えることが出来る。
タイル分割する場合の参照ラインバッファ107の水平画素数と垂直ライン数の設定について説明する。タイルに分割しない場合は、制御部100は、対象画像の水平画素数に等しい水平画素数を有するラインバッファが、(垂直(上下)探索範囲+垂直CTUサイズ)に等しいライン数存在するものとして、参照ラインバッファ107の読み書きを制御する。例えば図4(a)で示すように、領域401を格納できるように、水平画素数4096、垂直ライン数288(=垂直探索範囲128ライン×2+垂直CTUサイズ32ライン)として、制御部100は参照ラインバッファ107を管理する。
それに対し、タイルに分割する場合は、制御部100は、格納する水平画素数の減少に対して、垂直ライン数を増加させるように、参照ラインバッファ107の管理を変更する。例えば図4(b)で示すように、タイルに分割した場合、参照ラインバッファ107に格納する画像データの水平画素数は、タイル水平サイズ2048+水平探索範囲512=2560画素となる。参照ラインバッファ107を実装する上で、元々確保していた1ライン当たりの水平画素数4096画素のメモリ領域の内の、4096−2560=1536画素が、タイル分割をする場合は使われない。
そこで、参照ラインバッファ107の使われないメモリ領域を用いて、図4(c)のように、参照ラインバッファ107が格納する垂直ライン数を拡大すると、元々格納できる領域404に対して、領域405の分だけ追加して格納することができる。拡大できる垂直ライン数は次のように求めることが出来る。ここでは、参照ラインバッファ107の容量をT、入力画像が取り得る最大の水平画素数をh、探索範囲の垂直ライン数をv、とする。タイル分割しない場合の、参照ラインバッファ107の容量をTは、T=h×vと表現できる。
それに対して、タイルの水平画素数th(前述の例では2048画素)、探索範囲の水平一方向(右方向または左方向)の画素数をsh(前述の例では512画素)とすると、タイル分割した場合の探索範囲の垂直ライン数v'は、
T=(th+sh)×v' → v'=T÷(th+sh) → v'=(h×v)÷(th+sh)と表現できる。
T=(th+sh)×v' → v'=T÷(th+sh) → v'=(h×v)÷(th+sh)と表現できる。
前述の例に当てはめると、h=4096画素、v=288ライン、th=2048画素、sh=512画素となるため、タイル分割した場合の探索範囲の垂直ライン数v'は、
v'=(4096×288)÷(2048+512)≒ 460
となる。
v'=(4096×288)÷(2048+512)≒ 460
となる。
この場合、参照ラインバッファ107に格納できる垂直ライン数は、460−288=172ラインだけ拡張することが出来る。元の垂直探索範囲128ラインに対して86(=172÷2)ラインの拡張により、動き検出の精度向上し、画面間予測が選択されやすくなるため、目標符号量が小さい場合の画質劣化の抑制が期待できる。設定するタイルの数については、本実施形態では左右の2タイルとしているが、これに限定されない。例えば符号量閾値を複数個設けておき、それぞれについてタイルの個数を設定することができる。対象画像の水平方向のタイル分割数が増える場合、垂直探索範囲のライン数が増える一方で、水平探索範囲の画素数が減少することとなる。
以上では、対象画像を垂直方向に分割したタイルを設定する場合を説明したが、実施形態はこれに限定されるものではなく、垂直方向と水平方向との両方に対象画像を分割したタイルを設定することもできる。また、左右タイルそれぞれの大きさは、対象画像の水平画素数を等分した値を設定しても良いし、HEVCなどの標準技術で規定された制約に基づいて設定しても良い。このように、タイル301,302の設定により、垂直方向の探索範囲を拡張することで、動き検出の精度向上し、画面間予測が選択されやすくなるため、目標符号量が小さい場合の画質劣化の抑制が期待できる。
<フローチャート>
図5は、本実施形態における動きベクトル検出動作に関するフローチャートである。S501で制御部100は、符号量制御部115から取得した対象画像の目標符号量と符号量閾値を比較し、目標符号量が符号量閾値以上と判定されればS502へ、判定されなければS504に処理を進める。
図5は、本実施形態における動きベクトル検出動作に関するフローチャートである。S501で制御部100は、符号量制御部115から取得した対象画像の目標符号量と符号量閾値を比較し、目標符号量が符号量閾値以上と判定されればS502へ、判定されなければS504に処理を進める。
S502で制御部100および符号化回路123は、符号化対象のフレーム画像(対象画像)を分割した複数のブロック(対象ブロック:CTU)について、通常の順序で動きベクトルを検出する。
通常の順序は、対象画像全体を1つの領域としたラスタスキャン順である。ここで、制御部100および符号化回路123は、図2で説明したように、参照ラインバッファ107を、対象画像の水平画素数に等しい水平方向の画素数を有するラインバッファによって構成されるものとして管理して動きベクトルを検出する。それにより、参照画像から同じ領域を繰り返し読み出すことなく効率的に動きベクトルを検出する。
通常の順序は、対象画像全体を1つの領域としたラスタスキャン順である。ここで、制御部100および符号化回路123は、図2で説明したように、参照ラインバッファ107を、対象画像の水平画素数に等しい水平方向の画素数を有するラインバッファによって構成されるものとして管理して動きベクトルを検出する。それにより、参照画像から同じ領域を繰り返し読み出すことなく効率的に動きベクトルを検出する。
S503で制御部100が参照画像の対象ブロックの全てについて動きベクトルが検出されたと判定するまで、制御部100および符号化回路123はS502の処理を繰り返し実行する。
S503で制御部100が参照画像の全ブロックについて動きベクトルが検出されたと判定すると、対象画像に対する動きベクトル検出処理は終了する。以降、次のフレーム画像を対象画像として同様の処理を繰り返す。
S503で制御部100が参照画像の全ブロックについて動きベクトルが検出されたと判定すると、対象画像に対する動きベクトル検出処理は終了する。以降、次のフレーム画像を対象画像として同様の処理を繰り返す。
一方、S504で制御部100は、水平方向に分割したタイル毎に独立に処理ができるように、対象ブロックの処理順序および参照ラインバッファ107の管理方法を変更する。変更後の処理順序は、図3(b)で説明した順序とする。制御部100は、対象ブロックの処理順序の変更に応じて、対象フレームバッファ104から対象ブロックバッファ106に格納するブロックの読み出し順序、及び参照フレームバッファ105から参照ラインバッファ107に格納する参照画像の範囲を変更する。また、制御部100は、参照ラインバッファ107を、図3、図4で説明したように、S502の処理の場合よりも、少ない水平画素数、かつ多いライン数で構成されるものとして管理するように変更する。それにより、垂直方向に動きベクトル探索できる範囲を増やすことで、検出精度を高めることが出来る。
S505で制御部100および符号化回路123は、符号化対象のフレーム画像(対象画像)を分割した複数のブロック(対象ブロック)について、S504で変更した処理順序で動きベクトルを検出する。変更後の順序は、対象画像を水平方向に分割した領域ごとのラスタスキャン順である。
S506で制御部100が参照画像の対象ブロックの全てについて動きベクトルが検出されたと判定するまで、制御部100および符号化回路123はS505の処理を繰り返し実行する。S506で制御部100が参照画像の全ブロックについて動きベクトルが検出されたと判定すると、対象画像に対する動きベクトル検出処理は終了する。以降、次のフレーム画像を対象画像として同様の処理を繰り返す。
以上説明したように、本実施形態によれば、対象画像のブロックごとに動きベクトルを検出する際に、対象画像の目標符号量が小さく設定される場合には対象画像を水平方向に分割した領域ごとに各ブロックの動きベクトルを検出するようにした。この時、参照ラインバッファの管理方法を変更することで、動き検出の探索範囲の垂直ライン数を拡張し、検出精度を向上させることが出来る。検出精度向上の結果、パターンマッチングで対象ブロックと類似する箇所の検出がしやすくなり、画面間予測の選択頻度の向上と画質劣化の抑制が可能となる。
なお、ここでは動きベクトルの検出を対象画像の部分領域ごとに独立して実行するように変更する例として、HEVCにおけるタイルを用いる構成について説明したが、別の領域分割の手法を用いた構成に適用も良い。また、本実施形態で説明した動きベクトルの検出方法は、符号化に用いられる動きベクトルの検出に限らず、任意の用途の動きベクトルの検出に用いることができる。
[実施形態2]
続いて、第2の実施形態について説明を行う。実施形態2では、実施形態1に対して、パンやチルト動作などの画像全体の動きをグローバルベクトルとして検知し、目標符号量と併せてグローバルベクトルの値も参照した上で、対象画像を分割するか否かを制御する。
続いて、第2の実施形態について説明を行う。実施形態2では、実施形態1に対して、パンやチルト動作などの画像全体の動きをグローバルベクトルとして検知し、目標符号量と併せてグローバルベクトルの値も参照した上で、対象画像を分割するか否かを制御する。
<タイル分割による課題>
対象画像の分割によって垂直方向の探索範囲を拡張できるため、動き検出の精度向上が可能となることは実施形態1で説明した通りだが、一方でデメリットも存在する。動き検出において、参照フレームバッファ105から参照ラインバッファ107に画像データを供給する際に、図3、図4で説明したように、水平探索範囲の分だけ隣接するタイルから取ってくる必要がある。例えば、水平画素数4096に対して、タイル水平サイズ2048画素で2分割、水平探索範囲が512画素とする。タイルに分割しない場合は、水平画素数4096だけ参照フレームバッファ105から参照ラインバッファ107に供給すればよい。
対象画像の分割によって垂直方向の探索範囲を拡張できるため、動き検出の精度向上が可能となることは実施形態1で説明した通りだが、一方でデメリットも存在する。動き検出において、参照フレームバッファ105から参照ラインバッファ107に画像データを供給する際に、図3、図4で説明したように、水平探索範囲の分だけ隣接するタイルから取ってくる必要がある。例えば、水平画素数4096に対して、タイル水平サイズ2048画素で2分割、水平探索範囲が512画素とする。タイルに分割しない場合は、水平画素数4096だけ参照フレームバッファ105から参照ラインバッファ107に供給すればよい。
一方で、タイル分割する場合は、1タイルあたり2048画素+512画素の供給が必要となり、それが2タイルで発生するので、4096画素+512画素×2だけ参照フレームバッファ105から参照ラインバッファ107への供給が発生する。つまり、タイル分割することで、参照フレームバッファ105から参照ラインバッファ107への供給が、(4096+512×2)÷4096=1.25、と25%だけ多くなってしまう。
参照フレームバッファ105は、外部メモリであるDRAMの領域を用いているが、外部メモリは本発明の動きベクトル検出装置に関わらず、デジタルカメラを構成する他の装置からもアクセスされる。上記の参照フレームバッファ105から参照ラインバッファ107への供給が多くなることは、すなわち外部メモリが許容するアクセス量をより多く占有することであり、場合によっては、他の装置のメモリアクセスを阻害することになる。
例えば画像センサーからキャプチャした光学データをメモリに書き込む時間が延びることで連写できる枚数が少なくなる、EVFやパネルに表示する画像生成の元となる画像データの読み出しが遅れることで表示遅延する、などが考えられる。つまり、外部メモリへのアクセス量が多くなることは、デジタルカメラ全体の性能低下の要因となってしまう可能性がある。
そこで、タイル分割によるメモリアクセス増加を抑制するために、実施形態1では目標符号量を1つの条件として分割の有無を判定する。それに対し、本実施形態では更にグローバルベクトルを参照する。グローバルベクトルが小さい場合は、探索範囲を拡張しなくても動きが検出できる可能性が高いため、タイル分割による探索範囲拡張の必要がほとんどない。それに対し、グローバルベクトルが大きい場合は、探索範囲を拡張しないと動きが検出できない可能性が高いため、タイル分割による探索範囲拡張の必要がある。
以上のように、本実施形態では更にグローバルベクトルを参照して、動き検出の精度が求められる条件をより細かく判定することで、メモリアクセス増加を抑制する。
<装置の構成>
図6は本発明の実施形態2に係る動きベクトル検出装置を適用したデジタルカメラの機能構成例を示すブロック図である。尚、実施形態2の構成について、実施形態1と同様のものについては、同じ符号を付した上で説明を省略する。制御部600は、実施形態1の制御部100の機能に加えて、目標符号量と共に後述のグローバルベクトル検出部603から出力されるグローバルベクトルの値も参照した上で参照ラインバッファ107の管理方法を変更する機能も有する。
図6は本発明の実施形態2に係る動きベクトル検出装置を適用したデジタルカメラの機能構成例を示すブロック図である。尚、実施形態2の構成について、実施形態1と同様のものについては、同じ符号を付した上で説明を省略する。制御部600は、実施形態1の制御部100の機能に加えて、目標符号量と共に後述のグローバルベクトル検出部603から出力されるグローバルベクトルの値も参照した上で参照ラインバッファ107の管理方法を変更する機能も有する。
現像処理部601は、実施形態1の現像処理部103の機能に加えて、画像処理後の画像データをグローバルベクトル検出部603に出力する機能も有する。参照フレームバッファ602は、実施形態1の参照フレームバッファ105の機能に加えて、グローバルベクトル検出部603に参照フレームを出力する機能も有する。
グローバルベクトル検出部603は、現像処理部601から出力された画像データ(カレント画像)、及び参照フレームバッファ602から出力された画像データ(参照画像)に基づいてグローバルベクトルを検出する。ここで、グローバルベクトル検出部603によるグローバルベクトルの検出方法については、例えばカレント画像と参照画像をそれぞれ縮小した後に求める。
この場合は、まずカレント画像と参照画像を水平と垂直で2分の1に縮小した後、カレント画像を水平、垂直共に4分割と大きめに分割しておき、各分割領域で参照画像全体に対してパターンマッチングを行い、大まかな動きベクトルを検出する。
この場合は、まずカレント画像と参照画像を水平と垂直で2分の1に縮小した後、カレント画像を水平、垂直共に4分割と大きめに分割しておき、各分割領域で参照画像全体に対してパターンマッチングを行い、大まかな動きベクトルを検出する。
その後、全分割領域で求めた動きベクトルがほぼ同じとなっているか否かを判定し、ほぼ同じ場合は平均した動きベクトルをグローバルベクトルとして用い、そうでない場合はグローバルベクトルを0とする、など考えられる。尚、本実施形態のグローバルベクトル検出は上記に限定されるものではない。
<フローチャート>
図7は、本実施形態における動きベクトル検出動作に関するフローチャートである。S701で制御部600は、符号量制御部115から取得した対象画像の目標符号量と符号量閾値を比較し、目標符号量が符号量閾値以上と判定されればS703に、判定されなければS702に処理を進める。
図7は、本実施形態における動きベクトル検出動作に関するフローチャートである。S701で制御部600は、符号量制御部115から取得した対象画像の目標符号量と符号量閾値を比較し、目標符号量が符号量閾値以上と判定されればS703に、判定されなければS702に処理を進める。
S702で制御部600は、グローバルベクトル検出部603から出力されたグローバルベクトルとベクトル閾値を比較し、グローバルベクトルがベクトル閾値以上と判定されればS705に、判定されなければS703に処理を進める。ここで、ベクトル閾値は、例えば垂直1方向(上、あるいは下)の探索範囲を用いることが出来る。また、グローバルベクトルの水平方向の値を無視し、垂直方向のベクトル値のみを用いても良い。例えば、垂直探索範囲128ラインをベクトル閾値として用いる場合、グローバルベクトルが垂直方向に100ラインと求まった場合は、グローバルベクトルがベクトル閾値以上と判定しない。一方で、グローバルベクトルが垂直方向に150ラインと求まった場合は、グローバルベクトルがベクトル閾値以上と判定する。また、グローバルベクトルを常に監視しておき、画面内予測が選択される場合のグローバルベクトルの平均値や最小値などをベクトル閾値に上書きするなどが考えられる。これ以降S703からS707までの処理は、図5のS502からS506までの処理とそれぞれ同様であるので本実施形態での説明は省略する。
以上説明したように、本実施形態によれば、対象画像のブロックごとに動きベクトルを検出する際に、対象画像の目標符号量が小さく設定され、かつグローバルベクトルが大きい場合に対象画像を水平方向に分割した領域ごとに動きベクトルを検出するようにした。この時、参照ラインバッファの管理方法を変更することで、動き検出の探索範囲の垂直ライン数を拡張し、検出精度を向上させることが出来る。また、グローバルベクトルを用いて動きが小さい場合にはタイル分割をしないように制御することで、メモリアクセスの増大を抑制することができる。
[実施形態3]
続いて、第3の実施形態について説明を行う。実施形態3では、実施形態1に対して、外部メモリに対するアクセス量を観測し、目標符号量と併せてメモリアクセス量も参照した上で、対象画像を分割するか否かを制御する。前述したように、タイル分割することで、外部メモリ(参照フレームバッファ)から参照画像データを読み出す際のメモリアクセス量が増大してしまい、他の装置からのメモリアクセスを阻害してしまう。つまり、タイル分割によるメモリアクセス量の増大が、デジタルカメラ全体の性能低下の要因となってしまう可能性がある。逆に他の装置からのメモリアクセスが多い場合、本発明の動きベクトル検出装置のメモリアクセスが阻害されてしまう。
続いて、第3の実施形態について説明を行う。実施形態3では、実施形態1に対して、外部メモリに対するアクセス量を観測し、目標符号量と併せてメモリアクセス量も参照した上で、対象画像を分割するか否かを制御する。前述したように、タイル分割することで、外部メモリ(参照フレームバッファ)から参照画像データを読み出す際のメモリアクセス量が増大してしまい、他の装置からのメモリアクセスを阻害してしまう。つまり、タイル分割によるメモリアクセス量の増大が、デジタルカメラ全体の性能低下の要因となってしまう可能性がある。逆に他の装置からのメモリアクセスが多い場合、本発明の動きベクトル検出装置のメモリアクセスが阻害されてしまう。
そこで、外部メモリに対するアクセス量を監視し、アクセスが少ない場合にタイル分割することで、他の装置がメモリアクセスする際の阻害、あるいは他の装置からメモリアクセスを阻害されることを防ぐ。
<装置の構成>
図8は本発明の第3実施形態に係る動きベクトル検出装置を適用したデジタルカメラの機能構成例を示すブロック図である。尚、第3実施形態の構成について、実施形態1と同様のものについては、同じ符号を付した上で説明を省略する。
図8は本発明の第3実施形態に係る動きベクトル検出装置を適用したデジタルカメラの機能構成例を示すブロック図である。尚、第3実施形態の構成について、実施形態1と同様のものについては、同じ符号を付した上で説明を省略する。
制御部800は、実施形態1の制御部100の機能に加えて、後述するメモリアクセス監視部801から出力されるメモリアクセス量も参照した上で参照ラインバッファ107の管理方法を変更する機能も有する。メモリアクセス監視部801は、図8に図示しない外部メモリに対するメモリアクセス量を監視し、メモリアクセス量を制御部800に出力する。メモリアクセス量は、例えば所定期間内、例えば1ms、における外部メモリに対するメモリリード、メモリライトで発生するメモリアクセス量を累積しても良い。また、データ転送量の累積値が、所定時間で許容されるメモリアクセス量に対してどの程度占有しているかの比率を算出して、その比率を出力しても良い。例えば、1msの間のメモリアクセスの許容量を200Mbitとし、1msの間のメモリアクセス量を180Mbitとすると比率として、180Mbit÷200Mbit=0.9となる。
<フローチャート>
図9は、本実施形態における動きベクトル検出動作に関するフローチャートである。S901で制御部800は、符号量制御部115から取得した対象画像の目標符号量と符号量閾値を比較し、目標符号量が符号量閾値以上と判定されればS903に、判定されなければS902に処理を進める。
図9は、本実施形態における動きベクトル検出動作に関するフローチャートである。S901で制御部800は、符号量制御部115から取得した対象画像の目標符号量と符号量閾値を比較し、目標符号量が符号量閾値以上と判定されればS903に、判定されなければS902に処理を進める。
S902で制御部800は、メモリアクセス監視部801から出力されたメモリアクセス量とメモリアクセス閾値を比較し、メモリアクセス量がメモリアクセス閾値以上と判定されればS903に、判定されなければS905に処理を進める。ここで、メモリアクセス閾値は、所定時間で外部メモリが許容するメモリアクセス量と、本発明の動きベクトル検出装置がタイル分割する際に必要とするメモリアクセス量の差を設定しても良い。
例えば、1msの間のメモリアクセスの許容量を200Mbitとし、本発明の動きベクトル検出装置がタイル分割した際に1msで40Mbitのアクセスを必要とした場合、メモリアクセス閾値は、200Mbit−40Mbit=160Mbitと設定できる。また、メモリアクセス閾値は、所定期間のメモリアクセスの許容量に対する比率としても良い。例えば、1msの間のメモリアクセスの許容量を200Mbitとし、本発明の動きベクトル検出装置がタイル分割した際に1msで40Mbitのアクセスを必要とした場合、
(200Mbit−40Mbit)÷200Mbit
=160Mbit÷200Mbit
=0.8
となる。
(200Mbit−40Mbit)÷200Mbit
=160Mbit÷200Mbit
=0.8
となる。
これ以降S903からS907までの処理は、図5のS502からS506までの処理とそれぞれ同様であるので本実施形態での説明は省略する。
以上説明したように、本実施形態によれば、対象画像のブロックごとに動きベクトルを検出する際に、対象画像の目標符号量が小さく設定され、かつ外部メモリへのアクセスが少ない場合に対象画像を水平方向に分割した領域ごとに動きベクトルを検出するようにした。この時、参照ラインバッファの管理方法を変更することで、動き検出の探索範囲の垂直ライン数を拡張し、検出精度を向上させることが出来る。
また、メモリアクセス量を用いてタイル分割をするように制御することで、カメラシステム全体の性能低下の可能性があるタイミングでの、参照フレーム読み出しによるアクセス量増大を抑制することができる。
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
100:制御部、101・・・レンズ、102・・・撮像部、103・・・現像処理部、104・・・対象フレームバッファ、105・・・参照フレームバッファ、123:符号化回路、116:記録メディア
Claims (15)
- 符号化処理の対象画像を構成する複数のブロックのうち、動きベクトルを検出する対象ブロックのデータを格納する第1の格納部と、
前記符号化処理において用いられる参照画像のうち、前記対象ブロックの動きベクトルを探索する探索範囲を含むデータを格納する第2の格納部と、
前記第1の格納部に対する前記対象ブロックのデータの格納、及び、前記第2の格納部に対する前記探索範囲を含むデータの格納を制御する制御手段と、
前記探索範囲において、前記対象ブロックの動きベクトルを検出する検出手段と
を備え、
前記制御手段は、
前記符号化処理のために前記対象画像に設定された目標符号量と、閾値との比較結果に応じて、前記対象画像を水平方向に分割するかどうかを決定し、
前記対象画像を水平方向に分割する場合、前記第1の格納部に対する前記対象ブロックのデータの格納を、前記水平方向に分割された対象画像ごとに行い、
前記対象画像の水平方向における分割数に応じて、前記探索範囲を含むデータとして前記第2の格納部に格納される前記参照画像の水平方向及び垂直方向の画素数を切り替える
ことを特徴とする動きベクトル検出装置。 - 前記制御手段は、前記目標符号量が閾値よりも小さい場合に、前記対象画像を水平方向に分割し、前記目標符号量が前記閾値以上の場合の前記対象画像を水平方向に分割しないことを決定することを特徴とする請求項1に記載の動きベクトル検出装置。
- 前記制御手段が、前記対象画像を水平方向に分割しないと決定した場合、前記探索範囲を含むデータとして前記第2の格納部に格納される前記参照画像の水平方向の画素数は、前記参照画像が有する水平方向の画素数に一致し、
前記制御手段が、前記対象画像を水平方向に分割すると決定した場合、前記探索範囲を含むデータとして前記第2の格納部に格納される前記参照画像の水平方向の画素数は、前記分割数が増えるのに応じて小さくなることを特徴とする請求項2に記載の動きベクトル検出装置。 - 前記制御手段が、前記対象画像を水平方向に分割すると決定した場合、前記探索範囲を含むデータとして前記第2の格納部に格納される前記参照画像の垂直方向の画素数は、前記分割数が増えるのに応じて大きくなることを特徴とする請求項3に記載の動きベクトル検出装置。
- 前記制御手段は、前記対象画像と前記参照画像との間の全体の動き量を示すグローバルベクトルの大きさに更に基づき、前記対象画像を水平方向に分割するかどうかを決定することを特徴とする請求項1から4のいずれか1項に記載の動きベクトル検出装置。
- 前記グローバルベクトルの大きさは、該グローバルベクトルの垂直方向の大きさであることを特徴とする請求項5に記載の動きベクトル検出装置。
- 前記制御手段は、ベクトル閾値との比較により前記グローバルベクトルの大きさを判定し、前記ベクトル閾値よりも前記グローバルベクトルが大きい場合に、前記対象画像を水平方向に分割すると決定することを特徴とする請求項5または6に記載の動きベクトル検出装置。
- 前記参照画像を格納する第3の格納部を更に備え、
前記制御手段は、前記第3の格納部に対するアクセス量に更に基づき、前記対象画像を水平方向に分割するかどうかを決定することを特徴とする請求項1から7のいずれか1項に記載の動きベクトル検出装置。 - 前記制御手段は、アクセス閾値との比較により前記アクセス量の大きさを判定し、前記アクセス閾値よりも前記アクセス量が小さい場合に、前記対象画像を水平方向に分割すると決定することを特徴とする請求項8に記載の動きベクトル検出装置。
- 前記アクセス量は、前記第3の格納部についての所定期間内のデータ転送量の累積値に基づき、
前記アクセス閾値は、前記参照画像のうちの前記探索範囲を含むデータを前記第2の格納部に格納するために行う前記第3の格納部に対する前記所定期間内のアクセス量に基づく、
ことを特徴とする請求項9に記載の動きベクトル検出装置。 - 前記第2の格納部はラインバッファであることを特徴とする請求項1から10のいずれか1項に記載の動きベクトル検出装置。
- 請求項1から11のいずれか1項に記載の動きベクトル検出装置と、
前記動きベクトル検出装置において検出された動きベクトルに基づいて符号化処理を行う符号化手段と
を備えることを特徴とする符号化装置。 - 撮像部と、
請求項12に記載の符号化装置と
を備えることを特徴とする撮像装置。 - 符号化処理の対象画像を構成する複数のブロックのうち、動きベクトルを検出する対象ブロックのデータを格納する第1の格納部と、
前記符号化処理において用いられる参照画像のうち、前記対象ブロックの動きベクトルを探索する探索範囲を含むデータを格納する第2の格納部と、
前記第1の格納部に対する前記対象ブロックのデータの格納、及び、前記第2の格納部に対する前記探索範囲を含むデータの格納を制御する制御手段と、
前記探索範囲において、前記対象ブロックの動きベクトルを検出する検出手段と
を備える動きベクトル検出装置の制御方法であって、
前記制御手段が、
前記符号化処理のために前記対象画像に設定された目標符号量と、閾値との比較結果に応じて、前記対象画像の水平方向に分割するかどうかを決定する工程と、
前記対象画像を水平方向に分割する場合、前記第1の格納部に対する前記対象ブロックのデータの格納を、前記水平方向に分割された対象画像ごとに行う工程と、
前記対象画像の水平方向における分割数に応じて、前記探索範囲を含むデータとして前記第2の格納部に格納される前記参照画像の水平方向及び垂直方向の画素数を切り替える工程と
を実行することを特徴とする動きベクトル検出装置の制御方法。 - コンピュータを請求項1から13のいずれか1項に記載の装置の各手段として機能させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019138959A JP2021022865A (ja) | 2019-07-29 | 2019-07-29 | 動きベクトル検出装置及びその制御方法、符号化装置、撮像装置、及び、プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019138959A JP2021022865A (ja) | 2019-07-29 | 2019-07-29 | 動きベクトル検出装置及びその制御方法、符号化装置、撮像装置、及び、プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021022865A true JP2021022865A (ja) | 2021-02-18 |
Family
ID=74573796
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019138959A Pending JP2021022865A (ja) | 2019-07-29 | 2019-07-29 | 動きベクトル検出装置及びその制御方法、符号化装置、撮像装置、及び、プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2021022865A (ja) |
-
2019
- 2019-07-29 JP JP2019138959A patent/JP2021022865A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20180063547A1 (en) | Motion vector detection apparatus and method for controlling the same | |
JP4280353B2 (ja) | 符号化装置、画像処理装置、符号化方法、及び記録媒体 | |
JP4764807B2 (ja) | 動きベクトル検出装置および動きベクトル検出方法 | |
KR100843418B1 (ko) | 화상 부호화 장치 및 화상 부호화 방법 | |
CN112118455B (zh) | 一种编解码方法、装置及其设备 | |
JP2015115903A (ja) | 撮像装置、撮像装置の制御方法、コンピュータプログラム | |
JP7324065B2 (ja) | 動きベクトル検出装置、撮像装置、動きベクトル検出方法、及びプログラム | |
JP2021022865A (ja) | 動きベクトル検出装置及びその制御方法、符号化装置、撮像装置、及び、プログラム | |
US10051270B2 (en) | Video encoding method using at least two encoding methods, device and computer program | |
JP6610115B2 (ja) | 動画像符号化装置、動画像符号化方法、及び動画像符号化プログラム | |
JP2018191136A (ja) | 符号化装置、符号化方法およびプログラム | |
JP2008199521A (ja) | 画像処理装置およびその方法 | |
JP6942504B2 (ja) | 符号化装置、撮像装置、符号化方法、及びプログラム | |
JP2021118425A (ja) | 動画像符号化装置、撮像装置、動画像符号化装置の制御方法およびプログラム | |
JP2011114493A (ja) | 動きベクトル検出方法および動きベクトル検出装置 | |
JP2019047346A (ja) | 符号化装置、符号化方法、及び、プログラム | |
JP2021044706A (ja) | 画像符号化装置及びその制御方法及びプログラム | |
JP2019009605A (ja) | 画像処理装置、画像処理方法およびプログラム | |
JP2014014042A (ja) | 画像処理装置およびその制御方法、撮像装置 | |
JP2018019194A (ja) | 動画生成方法、動画生成装置 | |
JP2015002541A (ja) | 画像復号化装置及び画像復号化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20210103 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210113 |