(57)【要約】 【課題】装置の姿勢が変わる場合でも、実画像の水平方向の動きに対する動き検出精度を落とさず、画質劣化を防ぐことを可能とする。【解決手段】符号化装置であって、符号化対象画像をブロックごとに、動き予測を行って圧縮符号化する符号化手段と、前記動き予測において使用する参照画像の垂直方向の画素数を、前記符号化装置の姿勢に応じて変更する制御手段とを備え、前記制御手段は、前記符号化装置が縦位置の姿勢の場合に、前記符号化装置が横位置の姿勢の場合よりも、前記参照画像の垂直方向の画素数を増加させる。【選択図】  図１
2019047346.tif 000002
【特許請求の範囲】
【請求項１】
符号化装置であって、
符号化対象画像をブロックごとに、動き予測を行って圧縮符号化する符号化手段と、
前記動き予測において使用する参照画像の垂直方向の画素数を、前記符号化装置の姿勢に応じて変更する制御手段と、
を備え、
前記制御手段は、前記符号化装置が縦位置の姿勢の場合に、前記符号化装置が横位置の姿勢の場合よりも、前記参照画像の垂直方向の画素数を増加させることを特徴とする符号化装置。
【請求項２】
前記符号化装置の姿勢を検出する検出手段を更に備えることを特徴とする請求項１に記載の符号化装置。
【請求項３】
ユーザからの操作を受付ける操作手段を更に備え、
前記操作手段が受付けた前記ユーザからの操作に応じて、前記制御手段は、前記符号化装置が縦位置の姿勢であるとして、前記参照画像の前記垂直方向の画素数を増加させることを特徴とする請求項１に記載の符号化装置。
【請求項４】
前記符号化対象画像のブロックを保持し、該ブロックを前記符号化手段に提供する第１の保持手段と、
前記符号化手段により符号化済みの画像を保持し、前記第１の保持手段が前記符号化手段に提供するブロックの前記符号化対象画像における位置に応じた前記参照画像を前記符号化手段に提供する第２の保持手段と
を更に備え、
前記制御手段は、前記第１の保持手段と、前記第２の保持手段との動作を制御することにより、前記参照画像の前記垂直方向の画素数を変更することを特徴とする請求項１から３のいずれか１項に記載の符号化装置。
【請求項５】
前記制御手段は、
前記符号化装置が前記横位置の姿勢の場合に、
前記第１の保持手段が、前記符号化対象画像を構成する各ブロックを保持し、該ブロックを前記符号化手段へ提供するように、前記第１の保持手段の動作を制御し、
前記第２の保持手段が、水平方向の最大の画素数を前記符号化対象画像の水平方向の画素数に応じた画素数とし、垂直方向の最大の画素数を所定の第１の画素数として、前記符号化済みの画像を保持し、前記符号化手段へ提供される前記ブロックの前記符号化対象画像における位置に応じた、垂直方向の画素数が前記第１の画素数となる参照画像を前記符号化手段に提供するように、前記第２の保持手段を制御し、
前記符号化装置が前記縦位置の姿勢の場合に、
前記第１の保持手段が、前記符号化対象画像を複数のタイルに分割した場合の、該タイルを構成する各ブロックを保持し、該ブロックを前記符号化手段へ提供するように、前記第１の保持手段の動作を制御し、
前記第２の保持手段が、水平方向の最大の画素数を前記ブロックの水平方向の画素数に基づく画素数とし、垂直方向の最大の画素数を前記第１の画素数よりも大きい第２の画素数として、前記符号化済みの画像を保持し、前記符号化手段へ提供される前記ブロックの前記タイルにおける位置に応じた、垂直方向の画素数が前記第２の画素数となる参照画像を前記符号化手段に提供するように、前記第２の保持手段を制御する、
ことを特徴とする請求項４に記載の符号化装置。
【請求項６】
前記参照画像の水平方向の画素数は、前記参照画像の増加された垂直方向の画素数と一致することを特徴とする請求項１から５のいずれか１項に記載の符号化装置。
【請求項７】
前記符号化対象画像は、所定の画像をタイル分割して得られた画像であることを特徴とする請求項１から６のいずれか１項に記載の符号化装置。
【請求項８】
被写体を撮像して画像を生成する撮像手段を更に備え、
前記符号化対象画像は、前記撮像手段が生成した画像であることを特徴とする請求項１から７のいずれか１項に記載の符号化装置。
【請求項９】
符号化装置が実行する符号化方法であって、
符号化対象画像をブロック毎に、動き予測を行って圧縮符号化する符号化工程と、
前記動き予測において使用する参照画像の垂直方向の画素数を、前記符号化装置の姿勢に応じて変更する制御工程と
を含み、
前記制御工程では、前記符号化装置が縦位置の姿勢の場合に、前記符号化装置が横位置の姿勢の場合よりも、前記参照画像の垂直方向の画素数を増加させることを特徴とする符号化方法。
【請求項１０】
コンピュータを請求項１から８のいずれか一項に記載の符号化装置が備える符号化手段及び制御手段として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化装置、符号化方法及びプログラムに関する。
【背景技術】
【０００２】
動画像の国際標準符号化規格である、Ｈ.２６４やHEVC（High Efficiency Video Coding）などの符号化方式では、動きベクトル検出という技術が用いられている。動きベクトル検出では、符号化対象画像と、符号化済みの参照画像との間で符号化対象ブロックごとの動きを動きベクトルとして検出する。そして、検出した動きベクトルの情報を加味して動画像圧縮を行うことにより、符号化効率を高めることができる（非特許文献１参照）。
【０００３】
動きベクトル検出では、ある決められた探索範囲で符号化対象ブロックごとに検出を行う。探索範囲は広い方が動きベクトル検出の精度は向上するが、回路規模や処理量が増大してしまう。その一方で、本来の動きよりも狭い範囲の探索範囲を設定した場合、動きを適切に追跡できずに動きベクトル検出の精度が低下し、画質劣化を招くことになる。このように、探索範囲の設定は動きベクトル検出にとって重要な要素の１つであり、撮影シーンによって探索範囲の設定を変更する技術も提案されている（特許文献１参照）。
【０００４】
この動きベクトル検出をハードウェア処理で実現しようとする場合、外部メモリに置かれている参照画像のうち探索範囲部分を読み出して内部メモリに保持しておき、動きベクトル検出を行うことになる。この参照画像を格納する内部メモリの構成として、水平方向に画像の水平解像度分を保持しておくラインバッファが用いられることが多い。これは、外部メモリから参照画像を読み出す際に、ラインバッファを用いずに符号化ブロックごとに必要な参照画像を読み出すと、同一の画素を何度も重複して読み出す必要があり、外部メモリからの画像データ読み出しのバス帯域を増大させてしまうためである。
【０００５】
この場合、内部メモリの構成は、水平方向サイズは画像の水平解像度サイズ、垂直方向サイズは垂直方向の探索を行うのに必要なサイズとなる。そのため動画像の高解像度化に伴い、ラインバッファの水平方向サイズを大きくする必要がある。また、動きベクトル検出の垂直探索範囲を大きくするためには、ラインバッファに使用する内部メモリの容量を増やす必要がある。内部メモリの容量については、自然画像においては一般には水平方向の動きが多く、また、上述のように内部メモリの容量を抑えるために、動きベクトルの探索範囲を垂直方向に比べて水平方向が大きくなる（横長）ように設計されることが多い。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Ｈ.２６５/HEVC教科書、大久保  榮[監修]、鈴木輝彦、高村誠之、中条健[共編]、２０１３年１０月２１日発行
【特許文献】
【０００７】
【特許文献１】特開２００８-２３６０１５号
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、デジタルカメラのような符号化装置において装置の向きが変更される場合、設定されている動きベクトルの探索範囲が実画像に対応しなくなる場合がある。例えば装置を９０度程度回転して撮影する、いわゆる"縦撮り"をした場合、上記の従来技術のままでは動きベクトルの探索範囲が実画像上で縦長になり、水平方向の探索範囲が狭く、実画像の水平方向の動きが検出されにくくなってしまう。このような状況では画質劣化を起こしてしまうおそれがある。
【０００９】
そこで、本発明は、装置の姿勢が変わる場合でも、実画像の水平方向の動きに対する動き検出精度を落とさず、画質劣化を防ぐことを可能とするための技術を提供する。
【課題を解決するための手段】
【００１０】
上記課題を解決するための本発明は、符号化装置であって、
符号化対象画像をブロックごとに、動き予測を行って圧縮符号化する符号化手段と、
前記動き予測において使用する参照画像の垂直方向の画素数を、前記符号化装置の姿勢に応じて変更する制御手段と、
を備え、
前記制御手段は、前記符号化装置が縦位置の姿勢の場合に、前記符号化装置が横位置の姿勢の場合よりも、前記参照画像の垂直方向の画素数を増加させることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、装置の姿勢が変わる場合でも、実画像の水平方向の動きに対する動き検出精度を落とさず、画質劣化を防ぐことができる。
【図面の簡単な説明】
【００１２】
【図１】発明の実施形態に対応する符号化装置１０の構成例を示す図、及び、画像処理部１２の構成例を示す図。
【図２】発明の実施形態に対応する符号化装置１０の外観の一例を示す図、及び、符号化装置１０の姿勢を説明するための図。
【図３】発明の実施形態に対応するＣＴＵの探索範囲の一例を説明するための図。
【図４】発明の実施形態に対応するＣＴＵの探索範囲の他の一例を説明するための図。
【図５】発明の実施形態に対応する、タイル分割をした場合の符号化順を説明するための図。
【図６】発明の実施形態に対応する、タイル分割後のＣＴＵの探索範囲の一例を説明するための図。
【図７】発明の実施形態に対応する、タイル分割後のＣＴＵの探索範囲の他の一例を説明するための図。
【図８】発明の実施形態に対応する処理の一例に対応するフローチャート。
【発明を実施するための形態】
【００１３】
以下、図面を参照しながら発明の実施形態について説明する。図１（Ａ）は発明の実施形態に対応する符号化装置の概略的構成を説明するブロック図である。ここでは、HEVC符号化方式を実現する符号化装置を例に示してある。
【００１４】
図１（Ａ）において、撮像部１１は、光学系、撮像素子、Ａ／Ｄ変換器、現像処理回路等を含んで構成され、撮像素子で生成されたアナログ画像信号をデジタルの画像信号に変換し、画像処理部１２に出力する。具体的に、被写体からの反射光を光学系で撮像素子に結像する。撮像素子は光学系により得られた結像光を電気信号に変換し、得られたアナログ画像信号は、Ａ／Ｄ変換器によりデジタル画像信号に変換してデジタル画像データとして現像処理回路に出力される。現像処理回路では、得られた画像に対して、ディベイヤ処理、ホワイトバランス処理、階調変換処理、エッジ強調補正処理、キズ補正、ノイズ除去、拡大縮小処理、YCbCr形式への色変換などの画像処理を実行する。当該画像処理後の、圧縮符号化を行うことが可能な形式の画像は、画像処理部１２に出力され、後述の符号化フレームバッファ１４Ａに入力される。本実施形態では、この画像を符号化対象画像という。
【００１５】
画像処理部１２は、符号化対象画像に対して本実施形態に対応する符号化処理を行う。画像処理部１２は、撮像部１１から出力された画像信号のみでなく、記録媒体１５から読み出した画像信号に対しても同様の画像処理を行うことができる。画像処理部１２は例えば、ＡＳＩＣ（Application Specific Integrated Circuit）等によりハードウェア的に構成されてもよい。或いは、メモリに記憶されている処理プログラムをＣＰＵ等のコンピュータが実行することにより、ソフトウェア的に構成されてもよい。以下では、例示的に、ＡＳＩＣによりハードウェア的に構成される場合について説明する。
【００１６】
制御部１３は、本実施形態に対応する符号化装置１０を構成する各ブロックにおける動作を制御し、装置全体の動作を統括する。また、センサ１６で検出された符号化装置１０の姿勢情報に基づいて、画像処理部１２における処理の切り替えも行う。メモリ１４は、制御部１３が実行するプログラムを格納すると共に、画像処理部１２や制御部１３が所定の処理を実行する際にデータを保持するためのワークメモリとしても機能する。メモリ１４は、DRAM（Dynamic Random Access Memory）として実現され、符号化フレームバッファ１４Ａと参照フレームバッファ１４Ｂを含む。これらは、後述する符号化処理において使用される。メモリ１４は、更にハードディスクを追加的、或いは、代替的に用いて構成されていてもよい。記録媒体１５は、符号化装置１０に着脱可能に構成されたものであっても、装置内に内蔵されたものであってもよい。
【００１７】
センサ１６は、符号化装置１０の姿勢を検出するためのセンサであって、例えば加速度センサとして実現されてもよい。例えば、制御部１３は、センサ１６が検出した信号に基づいて符号化装置１０の姿勢を判定することができる。操作部１７は、符号装置１０のユーザからの指示や操作を受付けるためのユーザインタフェースであって、キー、ボタン、タッチパネル、キーボード、マウスなどを含むことができる。当該キーには、撮影指示を行うためのシャッターボタンや、符号化装置１０の動作を設定するための設定用ボタンが含まれる。表示部１８は、例えば液晶ディスプレイや有機ＥＬディスプレイとして構成され、撮像部１１で得られた画像をスルー表示して電子ファインダーとして機能したり、記録媒体１５に記録されている画像を表示したりすることができる。バス１９は、上述の各ブロック１１から１７が相互に情報をやり取りする際に用いられる。
【００１８】
図１（Ａ）に示す符号化装置１０は、例えばデジタルカメラ、デジタルビデオカメラとして実現することができる。また、それ以外に、例えばパーソナルコンピュータ、携帯電話、スマートフォン、ＰＤＡ、タブレット端末、携帯型メディアプレーヤなどの任意の画像処理装置、情報処理装置或いは撮像装置として実現することもできる。なお、図１は、デジタルカメラ等として機能する場合を考慮して、画像を取得するための構成として撮像部１１を含む例を示した。しかし、発明の実施形態として、例えば記録媒体１５に記録されているＲＡＷデータを処理対象の画像として取得し、これを圧縮・記録することが可能な（動）画像符号化装置、（動）画像記録装置、（動）画像圧縮装置等として、撮像部１１を有しない構成で実現してもよい。
【００１９】
次に、図１（Ａ）の符号化装置１０における、画像処理部１２の詳細な構成に基づき、本実施形態における画像符号化処理の流れを説明する。
【００２０】
まず、画像処理部１２は、メモリ１４を符号化フレームバッファ１４Ａ及び参照フレームバッファ１４Ｂとして利用する。符号化画像ブロックバッファ１０１は、符号化フレームバッファ１４Ａに格納されている符号化対象画像をブロック単位で取得し、格納しておく。この符号化画像ブロックバッファ１０１は、画像処理部１２における内部メモリであるSRAM（Static Random Access Memory）で構成されているものとする。参照画像ラインバッファ１０２は、動きベクトル検出に必要な参照画像を参照フレームバッファ１４Ｂから取得し、格納しておく。この参照画像ラインバッファ１０２も、画像処理部１２の内部メモリであるSRAMで構成されているものとする。
【００２１】
動き予測部１０３では、符号化画像ブロックバッファ１０１から読み出された符号化対象画像のブロックと、該ブロックの符号化対象画像における位置に応じて参照画像ラインバッファ１０２から読み出された参照画像との間でブロックマッチングを行い、動きベクトル検出を行う。また、符号化対象画像と、検出された動きベクトル位置の予測画像との間で画素の差分をとり、その差分画像を直交変換部１０４に出力する。またローカルデコード画像作成用に、動きベクトル検出位置の予測画像を動き補償部１１０に出力する。
【００２２】
直交変換部１０４では、入力された差分画像に対して離散コサイン変換を行い、変換係数を生成し、量子化部１０５に出力する。量子化部１０５では、直交変換部１０４から入力された変換係数に対して、量子化制御部１０６が出力する量子化ステップサイズに従い、量子化を行う。量子化された変換係数は符号化ストリーム作成のため可変長符号化部１０７、ならびにローカルデコード画像作成のため逆量子化部１０８に出力される。
【００２３】
可変長符号化部１０７は、量子化後の変換係数に対してジグザグスキャン、オルタネートスキャン等を行って可変長符号化により符号化データを生成する。また、動きベクトルや量子化ステップサイズ、ブロック分割情報、適応オフセット処理用パラメータなどの符号化方式情報を可変長符号化したものを符号化データに付加し、符号化ストリームを生成する。生成された符号化ストリームは記録媒体１５に記録される。また、可変長符号化部１０７は、符号化の際にブロック毎の発生符号量を算出し、量子化制御部１０６に出力する。量子化制御部１０６では、可変長符号化部１０７からの発生符号量を用いて、目標とする符号量になるように量子化ステップサイズを決定し、量子化部１０５に出力する。
【００２４】
逆量子化部１０８では、量子化部１０５からの量子化後の変換係数に対して逆量子化を行い、ローカルデコード用の変換係数を生成する。この変換係数は逆直交変換部１０９に出力される。逆直交変換部１０９は、入力された変換係数に対して逆離散コサイン変換を行い差分画像を生成する。生成された差分画像は動き補償部１１０に出力される。動き補償部１１０は、動き予測部１０３から送られてきた動きベクトル位置の予測画像と、逆直交変換部１０９から送られてきた差分画像を加算することにより、ローカルデコード用の画像を生成する。生成された画像はデブロッキングフィルタ部１１１に出力される。
【００２５】
デブロッキングフィルタ部１１１は、送られてきた画像に対してデブロッキングフィルタをかける。デブロッキングフィルタ後の画像は、適応オフセット処理部１１２に出力される。適応オフセット処理部１１２では、バンドオフセット処理、エッジオフセット処理、もしくは何も処理をしない、のいずれかの選択を行い、適応オフセット処理を行うバンド位置、エッジ方向、オフセット値などを決定する。
【００２６】
デブロッキングフィルタ後の画像に対して適応オフセット処理を行ったものをローカルデコード画像として参照フレームバッファ１４Ｂに格納する。また、適応オフセット処理としてどの処理を選択したか、バンド位置、エッジ方向、オフセット値などの適応オフセット処理用のパラメータを符号化ストリームとして生成するため、可変長符号化部１０７に出力する。このような動作により、符号化ストリーム、ローカルデコード画像が作成される。
【００２７】
HEVCには、タイル分割という概念が導入されている。これは画像を複数のタイルと呼ばれる単位に分割するもので、ＣＴＵ(Coding Tree Unit)の符号化を行う順番が変わる。タイル分割を行う場合は、タイル分割制御部１１３から符号化画像ブロックバッファ１０１と参照画像ラインバッファ１０２にタイル分割の指示がなされ、符号化画像、参照画像を取得する順番が変わる。符号化画像については、符号化画像ブロックバッファ１０１が符号化フレームバッファ１４Ａから取得する符号化対象画像のブロックが、分割されたタイルに従った順番となる。また、参照画像についても、参照画像ラインバッファ１０２が参照フレームバッファ１４Ｂから取得する参照画像は、分割されたタイルに応じたサイズとなる。タイル分割時の処理については後述する。タイル分割制御部１１３には、制御部１３から符号化装置１０の姿勢に関する情報（本実施形態では、「縦撮り情報」という。）が供給される。タイル分割制御部１１３は、当該縦撮り情報の値に応じて、符号化画像ブロックバッファ１０１及び参照画像ラインバッファ１０２の動作を切り替える制御を実行する。
【００２８】
次に、図２（Ａ）は、符号化装置１０としてのデジタルカメラの外観構成の一例を示す図である。なお、図においては、説明のために不要な構成部分は省略している。図２（Ａ）は、デジタルカメラの裏面の構成を示しており、操作部１７としてシャッターボタン１７Ａと設定ボタン群１７Ｂ、及び、表示部１８を備えている。表示部１８は、符号化対象画像の解像度に対応するアスペクト比を有し、本実施形態では水平１９２０×垂直１０８０に対応する。
【００２９】
図２（Ｂ）は、本実施形態における符号化装置１０における姿勢について説明するための図である。図２（Ｂ）では、図２（Ａ）に示したデジタルカメラを例として示しているが、ここでの説明は他の装置についても同様に適用される。図２（Ｂ）において実線で示すデジタルカメラは、表示部１８の長辺が、地表面に向かう鉛直方向２１１に対して直交する方向２１２と平行、即ち、地表面と平行に保持されているとする。このときのデジタルカメラは表示部１８が横長の姿勢であり、この姿勢のことを「横位置」と呼ぶ。次に、図２（Ｂ）では、デジタルカメラを９０度回転させた状態を図２（Ｂ）において点線で示している。このとき、デジタルカメラの表示部１８の短辺が地表面と平行となる。このときのデジタルカメラは表示部１８が縦長の姿勢であり、この姿勢のことを「縦位置」と呼ぶ。
【００３０】
これ以降では、符号化装置１０が横位置の状態を標準状態の姿勢とし、縦位置を標準の状態から約９０度回転した状態とする。また、横位置における撮影のことを「横撮り」といい、縦位置における撮影のことを「縦撮り」という。
【００３１】
図１（Ａ）に示したセンサ１６は、例えば、デジタルカメラが横位置にある状態からの傾きを検知して、制御部１３に通知することができる。なお、実際にデジタルカメラが使用される状況では、地表面と完全に平行になるように保持されることは希である。その場合であっても、センサ１６が検知した傾きに基づいて、制御部１３はデジタルカメラの現在の姿勢を判定することができる。
【００３２】
次に、参照画像ラインバッファ１０２への参照画像の格納方法について説明する。本実施形態では、符号化対象画像の解像度を１９２０×１０８０画素とし、長辺１９２０画素の側を水平、短辺１０８０画素の側を垂直と呼び、対応するそれぞれの方向を水平方向、垂直方向と呼ぶ。水平方向、垂直方向の概念は、符号化対象画像内のブロック及び参照画像についても同様とする。
【００３３】
以下、動きベクトル検出の水平方向の探索範囲を±１２８画素、垂直方向の探索範囲を±１２８ラインの場合を例に説明する。本実施形態では、方向を区別するために水平方向を画素数、垂直方向をライン数を単位として説明するが、垂直方向の単位を画素数に基づくものとしてもよい。また、ここに示す当該探索範囲のサイズは、説明の簡単のために採用した一例であって、水平方向の画素数を垂直方向のライン数よりも大きくしてもよい。例えば、水平５４４画素×垂直２８８ラインとして、水平方向の探索範囲を垂直方向よりも大きくしてもよい。ここで、参照画像ラインバッファ１０２のサイズは、符号化対象画像又はタイルの水平方向の画素数と、参照画像の垂直方向のライン数によって決定され、参照画像の水平方向のサイズは、参照画像ラインバッファ１０２のサイズに直接の影響を与えない。よって、参照画像の水平方向のサイズは、任意の大きさとすることができる。
【００３４】
図３（Ａ）に符号化を行うＣＴＵと動きベクトル検出の探索範囲を示す。ＣＴＵサイズは３２×３２画素とする。水平ＣＴＵ位置がｘ（ｘ＝０〜５９）、垂直ＣＴＵ位置がｙ（ｙ＝０〜３３）の場合のＣＴＵをＣＴＵ（ｘ、ｙ）と表現する。このとき、探索範囲を最大で水平２８８画素×垂直２８８ライン（１２８×２＋３２＝２８８）とする。
【００３５】
ＣＴＵ３０１は、符号化対象画像３００において先頭の符号化対象となるＣＴＵであり、ＣＴＵ（０、０）となる。この場合の動きベクトル検出の探索範囲となる参照画像３０２は、符号化対象画像３００におけるＣＴＵ（０，０）の位置に応じて水平方向が０〜１５９の１６０画素、垂直方向が０〜１５９の１６０ラインとなる。このＣＴＵ３０１の符号化前に、この参照画像３０２を参照フレームバッファ１４Ｂから取得し、参照画像ラインバッファ１０２に格納しておく。
【００３６】
次のＣＴＵの符号化時の動きベクトル検出の探索範囲を図３（Ｂ）に示す。ＣＴＵ３１１はＣＴＵ（１、０）となる。この場合の動きベクトル検出の探索範囲となる参照画像３１２は、水平方向が０〜１９１の１９２画素、垂直方向が０〜１５９の１６０ラインとなる。ＣＴＵ３１１の符号化前に、水平方向０〜１５９までの参照画像は既に参照画像ラインバッファ１０２に格納されている。そのため、斜線で示す、新たに必要となる水平方向１６０〜１９１の参照画像３１３のみを参照フレームバッファ１４Ｂから取得し、参照画像ラインバッファ１０２に格納しておく。
【００３７】
次に、画面の右端までが探索範囲となるＣＴＵ（５５、０）の符号化時について説明する。このときの動きベクトル検出の探索範囲を図３（Ｃ）に示す。ＣＴＵ３２１はＣＴＵ（５５、０）であり、このときの動きベクトル検出の探索範囲となる参照画像３２２は、水平方向が１６３２〜１９１９の２８８画素、垂直方向が０〜１５９の１６０ラインとなる。参照画像３２３は水平方向０〜１６３１、垂直方向０〜１５９の部分であり、この部分はＣＴＵ３２１の探索範囲外だが、次のＣＴＵラインの動きベクトル検出時に必要となるため、参照画像ラインバッファ１０２に保持したままとなっている。
【００３８】
次のＣＴＵラインである、ＣＴＵ（０、１）の符号化時について説明する。このときの動きベクトル検出の探索範囲を図４（Ａ）に示す。ＣＴＵ４０１はＣＴＵ（０、１）であり、このときの動きベクトル検出の探索範囲となる参照画像４０２は、水平方向が０〜１５９の１６０画素、垂直方向が０〜１９１の１９２ラインとなる。ＣＴＵ４０１の符号化開始時点で、垂直方向０〜１５９の部分の参照画像は、それまでの符号化時に使用されているため、参照画像ラインバッファ１０２に既に格納されている。そのため、斜線で示す新たに必要となる水平方向０〜１５９、垂直方向１６０〜１９１の参照画像４０３のみを参照フレームバッファ１４Ｂから取得し、参照画像ラインバッファ１０２に格納する。
【００３９】
次に、垂直方向が画像の上端までが探索範囲となるＣＴＵ（５５、５）の符号化時について説明する。このときの動きベクトル検出の探索範囲を図４（Ｂ）に示す。ＣＴＵ４１１はＣＴＵ（５５、５）であり、このときの動きベクトル検出の探索範囲となる参照画像４１２は、水平方向が１６３２〜１９１９の２８８画素、垂直方向が０〜２８７の２８８ラインとなる。このとき、参照画像ラインバッファ１０２には、水平方向が符号化対象画像３００の水平解像度と同じ０〜１９１９、垂直方向が探索範囲分である０〜２８７ラインに相当する参照画像が格納されている。
【００４０】
次のＣＴＵラインであるＣＴＵ（０、６）の符号化時について説明する。このときの動きベクトル検出の探索範囲を図４（Ｃ）に示す。ＣＴＵ４２１はＣＴＵ（０、６）であり、このときの動きベクトル検出の探索範囲となる参照画像４２２は水平方向が０〜１５９の１６０画素、垂直方向が３２〜３１９の２８８ラインとなる。この時点で、水平方向０〜１９１９、垂直方向０〜３１の縦線で示す参照画像４２３は、これ以降のＣＴＵで探索範囲となることはない。そのため、この参照画像を格納していた部分のSRAMは空き領域となるので、この部分に新たに必要となる参照画像を格納していく。そこで、新たに必要となる水平方向０〜１５９、垂直方向２８８〜３１９の斜線で示す参照画像４２４を、参照画像４２３を格納していた部分と置き換えて参照画像ラインバッファ１０２に格納する。
【００４１】
このように、参照画像ラインバッファ１０２は水平方向サイズが水平解像度、垂直方向サイズが（垂直探索範囲＋垂直ＣＴＵサイズ）となるように使用される。この場合、水平方向サイズは符号化対象画像３００の水平解像度である１９２０画素となる。垂直方向サイズは垂直探索範囲±１２８ラインで２５６ライン分、垂直ＣＴＵサイズが３２なので、合計２８８ライン分となる。
【００４２】
次に、タイル分割を行う場合の制御について説明する。図５にタイル分割を行った場合の分割例と、そのときの符号化を行うＣＴＵの処理順を示す。ここでは、符号化対象画像３００を垂直方向の境界によりタイル５０１とタイル５０２とに水平方向に２分割している。タイル５０１が水平方向０〜９５９画素位置の水平方向サイズ９６０画素、タイル５０２が水平方向９６０〜１９１９画素位置の水平方向サイズ９６０画素となっている。この場合の符号化順は、まずタイル５０１内でＣＴＵごとにラスタ順に符号化を行う。タイル５０１の符号化が行われた後に、タイル５０２内でＣＴＵごとにラスタ順で符号化が行われる。ここで、画像を水平方向にタイル分割する場合の分割数を、２としているが、３以上のタイルに分割してもよい。分割数に応じて、参照画像ラインバッファ１０２に保持する水平方向の画素数が減少し、その分だけ垂直方向の探索範囲を拡張することが可能となる。
【００４３】
タイル分割を行った場合、参照画像ラインバッファ１０２の構成を変更する。変更前は水平方向サイズが符号化対象画像３００の水平解像度、垂直方向サイズが（垂直探索範囲＋垂直ＣＴＵサイズ）という構成となっていた。これに対して、参照画像ラインバッファ１０２の水平方向サイズを（水平タイルサイズ＋片方向水平探索範囲）に変更する。このとき、参照画像ラインバッファ１０２の全体容量は、タイル分割を行う前と同一容量を維持するようにする。よって、垂直方向サイズは、参照画像ラインバッファ１０２の容量がタイル分割前の容量とほぼ同じになるように、水平方向サイズが減少した分だけ増加させる。このとき、垂直方向サイズは（垂直探索範囲＋垂直ＣＴＵサイズ）であり、水平方向サイズが小さくなる分、垂直探索範囲を大きくすることができる。
【００４４】
本実施形態では、参照画像ラインバッファ１０２の容量は、前述の通り、水平方向サイズは１９２０画素、垂直方向サイズは２８８ラインで、全体で５５２９６０画素である。図５のようにタイル分割をした場合、参照画像ラインバッファ１０２の水平方向サイズは（水平タイルサイズ＋片方向水平探索範囲）で１０８８画素である。そこで、垂直方向サイズは、５５２９６０／１０８８の演算に基づき５０８ラインにすることができる。垂直方向サイズは（垂直探索範囲＋垂直ＣＴＵサイズ）であるので、垂直探索範囲は±２３８ラインとなり、タイル分割をしない場合の垂直探索範囲である±１２８ラインに対して、約２倍の垂直探索範囲をとることができる。
【００４５】
次に、タイル分割を行った場合の、参照画像ラインバッファ１０２への参照画像の格納方法について説明する。図６（Ａ）に符号化を行うＣＴＵと動きベクトル検出の探索範囲を示す。ＣＴＵ６０１はタイル５０１の先頭の符号化ＣＴＵであり、ＣＴＵ（０、０）となる。この場合の動きベクトル検出の探索範囲となる参照画像６０２は、タイル５０１におけるＣＴＵ（０，０）の位置に応じて水平方向が０〜１５９の１６０画素、垂直方向が０〜２６９の２７０ラインとなる。このＣＴＵ６０１の符号化前に、この参照画像６０２を参照フレームバッファ１４Ｂから取得し、参照画像ラインバッファ１０２に格納しておく。
【００４６】
次に、タイル５０１の右端のＣＴＵの符号化時について説明する。このときの動きベクトル検出の探索範囲を図６（Ｂ）に示す。ＣＴＵ６１１はＣＴＵ（２９、０）であり、タイル５０１の右端のＣＴＵとなる。このときの動きベクトル検出の探索範囲となる参照画像６１２は、水平方向が８００〜１０８７の２８８画素、垂直方向が０〜２６９の２７０ラインとなる。ＣＴＵ６１１はタイル５０１の右端のＣＴＵなので、タイル５０１の符号化時には、参照画像１００２よりも右に存在する参照画像は動きベクトル検出に使用されることはない。したがって、このとき参照画像ラインバッファ１０２は水平方向サイズが０〜１０８７の１０８８画素のラインバッファとして構成される。これは水平タイルサイズである９６０画素と、片方向水平探索範囲である１２８画素を足したサイズとなっている。
【００４７】
タイル５０１の符号化が全て完了すると、次にタイル５０２の符号化を行う。このときの動きベクトル検出の探索範囲を図７（Ａ）に示す。ＣＴＵ７０１はＣＴＵ（３０、０）であり、タイル５０２の左端のＣＴＵとなる。このときの動きベクトル検出の探索範囲となる参照画像７０２は、水平方向が８３２〜１１１９の２８８画素、垂直方向が０〜２６９の２７０ラインとなる。
【００４８】
ＣＴＵ７０１はタイル５０２の左端のＣＴＵなので、タイル５０２の符号化時には、参照画像７０２よりも左に存在する参照画像は動きベクトル検出に使用されることはない。したがって、タイル５０２の符号化時に使用される参照画像の水平方向サイズは８３２〜１９１９の１０８８画素であり、参照画像ラインバッファ１０２は水平方向サイズ１０８８画素のラインバッファとして構成される。これは水平タイルサイズである９６０画素と、片方向水平探索範囲である１２８画素を足したサイズとなっており、タイル５０１のときと同じである。
【００４９】
次に、参照画像の垂直方向サイズが５０８ラインとなる場合について説明する。このときの動きベクトル検出の探索範囲を図７（Ｂ）に示す。ＣＴＵ７１１はＣＴＵ（３０、８）である。このときの動きベクトル検出の探索範囲となる参照画像７１２は、水平方向が８００〜１０８７の２８８画素、垂直方向が１８〜５２５の５０８ラインとなる。
【００５０】
参照画像ラインバッファ１０２の容量としては、水平方向１０８８画素、垂直方向５０８ライン分の５５２７０４画素である。タイル分割をしない場合の５５２９６０画素とほとんど変わらないにもかかわらず、垂直方向の探索範囲は±２３８ラインと、タイル分割をしない場合の±１２８よりも大きくなる。仮にタイル分割をしない場合の探索範囲を水平５４４画素×垂直２８８ラインとして、水平方向の探索範囲を広く確保していた場合であっても、タイル分割により５４４画素とほぼ同等の探索範囲を確保することが可能となる。これにより、符号化装置１０の姿勢が横位置から縦位置に変わった場合であっても同等の動き検出精度を維持することが可能となる。
【００５１】
以上のように、タイル分割に応じて参照画像ラインバッファ１０２の動作を制御し、水平方向サイズを符号化対象画像の水平解像度よりも小さくすることで、参照画像ラインバッファ１０２の容量を増加させることなく垂直方向の探索範囲を拡張することができる。
【００５２】
次に、垂直方向の探索範囲の変更に関する本実施形態の符号化装置１０の動作を説明する。本実施形態の符号化装置１０は、センサ１６からの出力に基づき、制御部１３が、符号化装置１０の姿勢を判定することができる。制御部１３は、符号化装置１０を横向きの姿勢から９０度程度回転した縦向きの姿勢で撮影が行われていることを検出すると、"縦撮り"と判定する。制御部１３は、縦撮りが行われているか否かの情報を、撮像時の姿勢に関する情報（縦撮り情報）として画像処理部１２に提供する。この縦撮り情報はタイル分割制御部１１３へ入力される。縦撮り情報は、縦撮りか、横撮りかを示すフラグ情報であって、例えば、縦撮り情報の値が１の場合に縦撮り撮影が行われていることを示し、値が０の場合に横撮り撮影が行われていることを示す。制御部１３は、符号化装置１０の姿勢が変化した場合にのみ縦撮り情報を新たに通知してもよい。或いは、画像処理部１２に対して一定の時間間隔において縦撮り情報を供給してもよい。
【００５３】
以下、タイル分割制御部１１３における処理を図８を参照して説明する。タイル分割制御部１１３は処理を開始すると、Ｓ８０１で制御部１３から提供された縦撮り情報が"縦撮り"を示すか否かを判定する。タイル分割制御部１１３が縦撮り情報が"縦撮り"を示す信号と判定した場合、処理はＳ８０２に進む。タイル分割制御部１１３は、Ｓ８０２において、符号化対象画像のタイル分割を行うように、符号化画像ブロックバッファ１０１と参照画像ラインバッファ１０２とを制御する。具体的に、符号化フレームバッファ１４Ａから符号化画像ブロックバッファ１０１への符号化対象画像の読出し、及び、符号化画像ブロックバッファ１０１からのブロックの読出しを分割したタイルを単位として行うように制御する。また、参照フレームバッファ１４Ｂから参照画像ラインバッファ１０２への参照画像の読出し、及び、参照画像ラインバッファ１０２からの参照画像の読出しを、選択された符号化対象ブロックのタイル内での位置に応じて制御する。参照画像の読出し範囲は図６及び図７を参照して説明したとおりである。
【００５４】
一方、タイル分割制御部１１３が縦撮り情報が"縦撮り"を示す信号ではないと判定した場合、処理はＳ８０３に進む。タイル分割制御部１１３は、Ｓ８０３において、符号化対象画像のタイル分割を行わないように、符号化画像ブロックバッファ１０１と参照画像ラインバッファ１０２とを制御する。具体的に、符号化フレームバッファ１４Ａから符号化画像ブロックバッファ１０１への符号化対象画像の読出し、及び、符号化画像ブロックバッファ１０１からのブロックの読出しを分割していない符号化対象画像を単位として行うように制御する。また、参照フレームバッファ１４Ｂから参照画像ラインバッファ１０２への参照画像の読出し、及び、参照画像ラインバッファ１０２からの参照画像の読出しを、選択された符号化対象ブロックの符号化対象画像内での位置に応じて制御する。参照画像の読出し範囲は図３及び図４を参照して説明したとおりである。
【００５５】
このように、縦撮りの場合、垂直方向を境界とするタイルにより符号化対象画像を分割することで、上述したように参照画像ラインバッファ１０２の容量を増やさずに、垂直方向の探索範囲を大きくすることができる。特に縦撮りをしている場合には、実画像が９０度程度回転し、水平、垂直の見た目の比率が逆転した状態となる。このとき、動き予測の探索範囲が水平方向が垂直方向よりも広く設定されていた場合、符号化対象画像の垂直方向は実画像の水平方向になっているので、実画像の水平方向に対する動き探索範囲が、標準の撮影状態の場合と比べて狭くなってしまう。しかし、本願発明によれば、このような縦撮りの場合にはタイル分割を行うことで、実画像における水平方向の探索範囲を拡大することができるので、画像の水平方向の動きに対する動き検出精度を落とさず、画質劣化を効率的に防止することができる。
【００５６】
また、上述の実施形態では、横撮りの場合にはタイル分割を行わず、縦撮りの場合にタイル分割を行なう場合について説明した。しかし、横取りと縦撮りとで、参照フレームバッファ１４Ｂに保持すべき水平方向の画素数を変更するという観点で発明の実施形態を捉えれば、横撮りの場合にもタイル分割しておき、縦撮りの場合には該タイルを更に小さなタイルに分割する場合も、当然に発明の実施形態に包含される。この場合、装置が有する撮像素子の画素数が多い場合に参照画像ラインバッファ１０２の容量をより小さくすることができると同時に、縦撮りにも対応することが可能になる。
【００５７】
また、横撮りと縦撮りとで水平方向の探索範囲を同一にすることもできる。例えば、タイル分割により確保できる垂直方向の探索範囲は、タイルの水平方向の画素数と探索範囲のサイズに応じて予め計算により求めることができる。そこで、探索範囲の調整を行って、水平方向の探索範囲と、垂直方向の探索範囲とを（実質的に）一致させる。この場合、横撮りと縦撮りとで実画像の水平方向における探索範囲が一致するので、装置の姿勢が変化しても同等の動き検出精度を維持することが可能となる。
【００５８】
なお、本実施形態では、センサ１６として加速度センサ等を利用して符号化装置１０の姿勢を検出し、縦撮り情報を生成する場合を説明したが、縦撮り情報の生成方法はこれに限定されるものではない。例えば、ユーザが、操作部１７の所定の設定ボタン群１７Ｂのいずれかを操作して、符号化装置１０の設定画面で設定する方法を採用してもよい。この場合、例えば、当該設定が有効な間は符号化装置の姿勢が縦位置であるとみなして、制御部１３から画像処理部１２に対して、縦撮りが行われている旨の縦撮り情報を提供してもよい。或いは、ユーザが縦撮りをしている間において操作部１７の所定の設定ボタン群１７Ｂのいずれかを操作している場合に、制御部１３から画像処理部１２に対して、縦撮りが行われている旨の縦撮り情報を提供してもよい。この場合、縦撮りを行っている間であっても、ユーザが操作部１７の所定の設定ボタン群１７Ｂのいずれかを操作していない、或いは、操作を解除した場合には縦撮りが行われている旨の縦撮り情報は提供されない。
【００５９】
また、本実施形態ではHEVC符号化方式を例に説明を行ったが、タイル分割を用いるものであれば、どのような符号化方式にも適用することができる。
【００６０】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００６１】
１１：撮像部、１２：画像処理部、１３：制御部、１４：メモリ、１５：記録媒体、１６：センサ、１７：操作部、１８：表示部、１９：バス
【図１】
2019047346.tif 000003
【図２】
2019047346.tif 000004
【図３】
2019047346.tif 000005
【図４】
2019047346.tif 000006
【図５】
2019047346.tif 000007
【図６】
2019047346.tif 000008
【図７】
2019047346.tif 000009
【図８】
2019047346.tif 000010