特許第6768756号(P6768756)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ NTTエレクトロニクス株式会社の特許一覧 ▶ 日本電信電話株式会社の特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6768756
(24)【登録日】2020年9月25日
(45)【発行日】2020年10月14日
(54)【発明の名称】映像処理装置及び映像処理方法
(51)【国際特許分類】
   H04N 19/86 20140101AFI20201005BHJP
   H04N 19/42 20140101ALI20201005BHJP
【FI】
   H04N19/86
   H04N19/42 200
【請求項の数】2
【全頁数】20
(21)【出願番号】特願2018-177604(P2018-177604)
(22)【出願日】2018年9月21日
(62)【分割の表示】特願2015-173723(P2015-173723)の分割
【原出願日】2015年9月3日
(65)【公開番号】特開2018-198468(P2018-198468A)
(43)【公開日】2018年12月13日
【審査請求日】2018年9月21日
【前置審査】
(73)【特許権者】
【識別番号】591230295
【氏名又は名称】NTTエレクトロニクス株式会社
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】100083806
【弁理士】
【氏名又は名称】三好 秀和
(72)【発明者】
【氏名】岡村 勇介
(72)【発明者】
【氏名】加納 充人
(72)【発明者】
【氏名】大西 隆之
(72)【発明者】
【氏名】中村 健
【審査官】 片岡 利延
(56)【参考文献】
【文献】 米国特許出願公開第2014/0037017(US,A1)
【文献】 特開2012−114637(JP,A)
【文献】 米国特許出願公開第2013/0308709(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00−19/98
(57)【特許請求の範囲】
【請求項1】
タイル境界により複数のタイルに分割されたピクチャを処理する映像処理装置であって、
前記タイル境界に隣接する画素群を格納するタイルメモリと、
前記ピクチャを所定の大きさで分割した画素ブロックであってフィルタ処理単位ブロックを複数含む画素ブロックをタイル毎にラスタスキャン順で取り込み垂直境界フィルタ処理の後に水平境界フィルタ処理をするフィルタ処理手段と、を有し、
第1の画素ブロックと第2の画素ブロックとが前記タイル境界を挟んでそれぞれ左と右に隣接して配置されるとき、
前記フィルタ処理手段は、前記第1の画素ブロックについて、右端のm行n列画素群(mは画素ブロックの一辺の画素数、nは垂直境界フィルタ処理単位の長辺の画素数の半分)を前記タイルメモリに格納し、前記第1の画素ブロックの残りの画素群について、フィルタ処理単位ブロックの左側垂直境界フィルタ処理と上側水平境界フィルタ処理を実施し、
前記フィルタ処理手段は、前記第2の画素ブロックについて、前記タイルメモリから前記m行n列画素群を取得し、前記第2の画素ブロックと共にフィルタ処理単位ブロックの左側垂直境界フィルタ処理と上側水平境界フィルタ処理を実施する
ことを特徴とする映像処理装置。
【請求項2】
タイル境界により複数のタイルに分割されたピクチャを処理する映像処理装置により実行される映像処理方法であって、
前記ピクチャを所定の大きさで分割した画素ブロックであってフィルタ処理単位ブロックを複数含む画素ブロックをタイル毎にラスタスキャン順で取り込み垂直境界フィルタ処理の後に水平境界フィルタ処理をするステップを有し、
第1の画素ブロックと第2の画素ブロックとが前記タイル境界を挟んでそれぞれ左と右に隣接して配置されるとき、
前記第1の画素ブロックについて、右端のm行n列画素群(mは画素ブロックの一辺の画素数、nは垂直境界フィルタ処理単位の長辺の画素数の半分)をタイルメモリに格納し、前記第1の画素ブロックの残りの画素群について、フィルタ処理単位ブロックの左側垂直境界フィルタ処理と上側水平境界フィルタ処理を実施し、
前記第2の画素ブロックについて、前記タイルメモリから前記m行n列画素群を取得し、前記第2の画素ブロックと共にフィルタ処理単位ブロックの左側垂直境界フィルタ処理と上側水平境界フィルタ処理を実施する
ことを特徴とする映像処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、映像の符号化あるいは復号を行う映像処理技術に関し、特にブロックノイズを低減するために用いられるデブロッキングフィルタを用いた映像処理技術に関する。
【背景技術】
【0002】
現在の映像符号化技術では、離散コサイン変換(Discrete Cosine Transform:DCT)と予測符号化の双方を用いたハイブリッド符号化方式が主流となっている。ハイブリッド符号化方式では、複数の画素のまとまりである「ブロック」を処理単位とし、ブロック単位でDCTなどの処理を行う。このようなブロック単位で処理を行う映像符号化方式では、隣り合うブロックの境界付近で画素値の連続性が失われ、ピクチャの全体あるいは一部が格子状に区切られたように見えてしまう「ブロックノイズ」あるいは「ブロック歪み」が発生することがあった。
【0003】
国際標準化団体であるITU−TとISO/IECが共同で策定した映像符号化標準規格「H.264およびMPEG−4 Part 10 Advanced Video Coding」(H.264/AVC)は、符号化処理において、ブロックノイズを抑制するための「デブロッキングフィルタ」(De−blocking Filter:DF)を採用している。同様に、最新の映像符号化標準規格である「H.265/HEVC」にもDFは採用されている。H.264/AVCではマクロブロック単位で該当する垂直境界(Vertical Edge:VE)、水平境界(Horizontal Edge:HE)の順にフィルタ処理を行っていたのに対し、H.265/HEVCではピクチャ単位で該当する全VEにフィルタ処理し、その後に該当する全HEにフィルタ処理を行うように改善されている(特許文献1、非特許文献1の146ページ)。
【0004】
H.265/HEVCでは、ピクチャをCTU(Coding Tree Unit)と呼ばれる正方形の画素ブロック単位に分割し、ラスタスキャン順に符号化処理(DCTや予測符号化、DFなど)を行っていく。輝度信号(Y)においては、CTUはピクチャごとに64×64画素、32×32画素、16×16画素のいずれかに設定される。H.265/HEVCにおけるDF処理では、CTUが8×8画素の画素ブロック(8×8ブロック)に分割され、各8×8ブロックの左側VEおよび上側HEが平滑化処理される。ここで、H.265/HEVCのDF処理は、上述のとおり、ピクチャ単位で該当する全VEにフィルタ処理し、その後に該当する全HEにフィルタ処理する。
【0005】
また、H.265/HEVCでは、1つのピクチャを複数のCTUからなる矩形領域(タイル)に分割し、これらタイルを処理単位として符号化処理を行う仕組みが、新たに加えられた(非特許文献1の74〜75ページ)。ピクチャ内ではタイルがラスタスキャン順に符号化処理され、タイル内でもCTUがラスタスキャン順に符号化処理される。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2014−207536号公報
【非特許文献】
【0007】
【非特許文献1】村上篤道、浅井光太郎、関口俊一共著、「高効率映像符号化技術 HEVC/H.265とその応用」、オーム社
【発明の概要】
【発明が解決しようとする課題】
【0008】
H.265/HEVCでは、タイル境界でDF処理を行うことを禁止しているわけではないが、その規格には、タイル境界に対してDF処理を行う具体的な方法は開示されていなかった。非特許文献1または特許文献1には、タイル境界に対してDF処理を行う具体的な方法は開示されていなかった。タイル分割されたピクチャとタイル分割されていないピクチャとではCTUを処理する順番が異なり、タイル境界においてはタイル分割されていないピクチャと同様にDF処理することができないという問題があった。
【0009】
本発明は、上記に鑑みてなされたものであり、タイルに分割されたピクチャを符号化あるいは復号する映像処理装置において、タイル境界においてもデブロッキングフィルタ処理を可能とすることを目的とする。
【課題を解決するための手段】
【0010】
第1の本発明に係る映像処理装置は、タイル境界により複数のタイルに分割されたピクチャを処理する映像処理装置であって、前記タイル境界に隣接する画素群を格納するタイルメモリと、前記ピクチャを所定の大きさで分割した画素ブロックであってフィルタ処理単位ブロックを複数含む画素ブロックをタイル毎にラスタスキャン順で取り込み垂直境界フィルタ処理の後に水平境界フィルタ処理をするフィルタ処理手段と、を有し、第1の画素ブロックと第2の画素ブロックとが前記タイル境界を挟んでそれぞれ左と右に隣接して配置されるとき、前記フィルタ処理手段は、前記第1の画素ブロックについて、右端のm行n列画素群(mは画素ブロックの一辺の画素数、nは垂直境界フィルタ処理単位の長辺の画素数の半分)を前記タイルメモリに格納し、前記第1の画素ブロックの残りの画素群について、フィルタ処理単位ブロックの左側垂直境界フィルタ処理と上側水平境界フィルタ処理を実施し、前記フィルタ処理手段は、前記第2の画素ブロックについて、前記タイルメモリから前記m行n列画素群を取得し、前記第2の画素ブロックと共にフィルタ処理単位ブロックの左側垂直境界フィルタ処理と上側水平境界フィルタ処理を実施することを特徴とする。
【0011】
第2の本発明に係る映像処理方法は、タイル境界により複数のタイルに分割されたピクチャを処理する映像処理装置により実行される映像処理方法であって、前記ピクチャを所定の大きさで分割した画素ブロックであってフィルタ処理単位ブロックを複数含む画素ブロックをタイル毎にラスタスキャン順で取り込み垂直境界フィルタ処理の後に水平境界フィルタ処理をするステップを有し、第1の画素ブロックと第2の画素ブロックとが前記タイル境界を挟んでそれぞれ左と右に隣接して配置されるとき、前記第1の画素ブロックについて、右端のm行n列画素群(mは画素ブロックの一辺の画素数、nは垂直境界フィルタ処理単位の長辺の画素数の半分)をタイルメモリに格納し、前記第1の画素ブロックの残りの画素群について、フィルタ処理単位ブロックの左側垂直境界フィルタ処理と上側水平境界フィルタ処理を実施し、前記第2の画素ブロックについて、前記タイルメモリから前記m行n列画素群を取得し、前記第2の画素ブロックと共にフィルタ処理単位ブロックの左側垂直境界フィルタ処理と上側水平境界フィルタ処理を実施することを特徴とする。
【発明の効果】
【0012】
本発明によれば、タイルに分割されたピクチャを符号化あるいは復号する映像処理装置において、タイル境界においてもデブロッキングフィルタ処理ができる。
【図面の簡単な説明】
【0013】
図1】本実施形態に係る映像処理装置の構成を示す機能ブロック図である。
図2】上記映像処理装置が処理するピクチャのイメージを示す図である。
図3】上記ピクチャの5番目のCTUに対して行うデブロッキングフィルタ処理を説明する図である。
図4】本実施形態に係る映像処理装置の垂直DF処理部の処理の流れを示すフローチャートである。
図5】本実施形態に係る映像処理装置の水平DF処理部の処理の流れを示すフローチャートである。
図6】垂直DF処理部と水平DF処理部におけるパイプライン処理を説明する図である。
図7A】垂直DF処理部が6番目のCTUをVEフィルタ処理する例を説明する図である。
図7B】垂直DF処理部が6番目のCTUをVEフィルタ処理する例を説明する図である。
図7C】垂直DF処理部が6番目のCTUをVEフィルタ処理する例を説明する図である。
図8A】水平DF処理部が5番目のCTUをHEフィルタ処理する例を説明する図である。
図8B】水平DF処理部が5番目のCTUをHEフィルタ処理する例を説明する図である。
図8C】水平DF処理部が5番目のCTUをHEフィルタ処理する例を説明する図である。
図9A】垂直DF処理部が11番目のCTUをVEフィルタ処理する例を説明する図である。
図9B】垂直DF処理部が11番目のCTUをVEフィルタ処理する例を説明する図である。
図9C】垂直DF処理部が11番目のCTUをVEフィルタ処理する例を説明する図である。
図10A】垂直DF処理部が18番目のCTUをVEフィルタ処理する例を説明する図である。
図10B】垂直DF処理部が18番目のCTUをVEフィルタ処理する例を説明する図である。
図10C】垂直DF処理部が18番目のCTUをVEフィルタ処理する例を説明する図である。
図11A】水平DF処理部が11番目のCTUをHEフィルタ処理する例を説明する図である。
図11B】水平DF処理部が11番目のCTUをHEフィルタ処理する例を説明する図である。
図11C】水平DF処理部が11番目のCTUをHEフィルタ処理する例を説明する図である。
図12A】水平DF処理部が18番目のCTUをHEフィルタ処理する例を説明する図である。
図12B】水平DF処理部が18番目のCTUをHEフィルタ処理する例を説明する図である。
図12C】水平DF処理部が18番目のCTUをHEフィルタ処理する例を説明する図である。
【発明を実施するための形態】
【0014】
以下、本発明の実施の形態について図面を用いて説明する。
【0015】
図1は、本実施形態に係る映像処理装置の構成を示す機能ブロック図である。同図に示す映像処理装置1は、前段処理部11、デブロッキングフィルタ(DF)処理部12および後段処理部13を備える。
【0016】
前段処理部11は、ピクチャのデータを取り込み、DF処理部12がデブロッキングフィルタ処理をするCTUの順に、CTU単位で画素データをDF処理部12へ出力する。前段処理部11は、DF処理部12の処理に必要な各種データ、例えば、入力されたピクチャのサイズや、CTUサイズ、タイル分割の有無、CTUの処理順などを保持する。
【0017】
DF処理部12は、前段処理部11からCTU単位の画素データを取り込み、CTUを構成する8×8ブロックの左側垂直境界(VE)と上側水平境界(HE)をVE,HEの順にデブロッキングフィルタ処理を行う。なお、DF処理部12の詳細については後述する。
【0018】
DF処理部12は、DF制御部121、垂直DF処理部122、水平DF処理部123、垂直ラインメモリ124、中間メモリ125、水平ラインメモリ126およびタイルメモリ127を備える。
【0019】
DF制御部121は、前段処理部11からデブロッキングフィルタ処理に必要な情報を取得し、垂直DF処理部122および水平DF処理部123に提供する。取得する情報としては、例えば、処理しようとしているピクチャのサイズ、処理しようとしているピクチャにおけるCTUサイズ、垂直DF処理部122あるいは水平DF処理部123がこれから処理するCTU(以下、「カレントCTU」と称する。)の位置情報(ピクチャ内の左から何番目、上から何番目のCTUか)、処理しようとしているピクチャのタイル情報(タイルの有無と、タイルに分割されている場合は垂直/水平タイル境界の位置)がある。
【0020】
垂直DF処理部122は、前段処理部11からCTU単位の画素データを取り込み、DF制御部121から取得した情報に基づき、当該CTUに含まれる8×8ブロックの左側VEに対して平滑化処理(以下、「VEフィルタ処理」と称する。)を行う。VEフィルタ処理がなされたCTUの画素データは中間メモリ125へ格納される。
【0021】
水平DF処理部123は、中間メモリ125に格納されたVEフィルタ処理済みの画素データをCTU単位で取り込み、DF制御部121から取得した情報に基づき、当該CTUに含まれる8×8ブロックの上側HEに対して平滑化処理(以下、「HEフィルタ処理」と称する。)を行う。HEフィルタ処理がなされたCTUの画素データは後段処理部13へ出力される。
【0022】
垂直ラインメモリ124は、垂直DF処理部122でVEフィルタ処理することができなかった画素データを格納するバッファである。中間メモリ125は、垂直DF処理部122でVEフィルタ処理がなされた画素データを格納するバッファである。水平ラインメモリ126は、水平DF処理部123でHEフィルタ処理することができなかった画素データを格納するバッファである。タイルメモリ127は、垂直DF処理部122でVEフィルタ処理することができなかった画素データであって、垂直タイル境界に隣接した画素データを格納するバッファである。垂直DF処理部122および水平DF処理部123は、これらのメモリを介して画素データをやり取りする。
【0023】
なお、DF制御部121、垂直DF処理部122および水平DF処理部123は、汎用プロセッサをソフトウェアで制御することにより実現される構成であってもよい。あるいは、ロジック回路で実現される構成であってもよい。垂直ラインメモリ124、中間メモリ125、水平ラインメモリ126およびタイルメモリ127は、例えばSRAMあるいはDRAMなどの揮発性メモリであってもよい。例えば、1つのSRAMあるいはDRAMのメモリ領域を分割し、分割したそれぞれのメモリ領域を、垂直ラインメモリ124、中間メモリ125、水平ラインメモリ126およびタイルメモリ127に割り当てる構成であってもよい。もちろん、これらメモリのうち幾つかは、個別のSRAMあるいはDRAMを用いる構成であってもよい。
【0024】
後段処理部13は、ピクチャの符号化あるいは復号を行う際、デブロッキングフィルタ処理に続く処理を行う。例えば、インループフィルタにDF処理部12が組み込まれるのであれば、後段処理部13は、例えば、適応オフセットフィルタであればよい。
【0025】
次に、映像処理装置1が処理するピクチャとCTUに対するデブロッキングフィルタ処理について説明する。
【0026】
図2は、映像処理装置1が処理するピクチャのイメージである。図2のピクチャは、太実線で示した垂直タイル境界および水平タイル境界で複数のタイルに分割されている。図2では、実線で囲まれた四角形の領域が16×16画素からなるCTUを示しており、各CTUには、DF処理部12が処理する順番を付与している。ピクチャが複数のタイルに分割される場合、タイルがラスタスキャン順に処理され、タイル内でもCTUがラスタスキャン順に処理される。つまり、図2のピクチャでは、左上のタイル、右上のタイル、左下のタイル、右下のタイルの順に処理され、タイル毎にCTUが左から右に1段ずつ処理される。なお、図2では、各CTUを点線で分割し、DF処理部12がデブロッキングフィルタ処理を行う最小のブロック単位である8×8ブロックを示している。DF処理部12は、図2の実線および点線に沿ってデブロッキングフィルタ処理をする。
【0027】
図3は、図2の5番目のCTU(以下、「CTU−5」と称する。)に対して行うデブロッキングフィルタ処理を説明する図である。まず、垂直DF処理部122は前段処理部11からCTU−5の画素データを取り込み、図3(a)に示すように、CTU−5内の4つの8×8ブロックそれぞれの左側VEを中心として左右4画素からなる8×1画素の領域(以下、「VEフィルタ処理単位」と称する。)を設定し、VEフィルタ処理単位ごとに所定の演算によりフィルタ強度を算出する。各VEフィルタ処理単位では、算出したフィルタ強度に基づき平滑化処理を行う。この平滑化処理を、各VEに沿って上側のVEフィルタ処理単位から下側のVEフィルタ処理単位に向けて実行する。VEフィルタ処理されたCTU−5の画素データは、中間メモリ125へ格納される。
【0028】
CTU−5がVEフィルタ処理されると、水平DF処理部123は中間メモリ125からCTU−5の画素データを取り込み、図3(b)に示すように、CTU−5内の4つの8×8ブロックそれぞれの上側HEを中心として上下4画素からなる1×8画素の領域(以下、「HEフィルタ処理単位」と称する。)を設定し、HEフィルタ処理単位ごとに所定の演算によりフィルタ強度を算出する。各HEフィルタ処理単位では、算出したフィルタ強度に基づき平滑化処理を行う。この平滑化処理を、各HEに沿って左側のHEフィルタ処理単位から右側のHEフィルタ処理単位に向けて実行する。HEフィルタ処理されたCTU−5の画素データは、後段処理部13へ出力される。
【0029】
次に、本実施形態に係る映像処理装置のDF処理部の動作について説明する。
【0030】
図4は、本実施形態に係る映像処理装置1の垂直DF処理部122の処理の流れを示すフローチャートである。
【0031】
処理が開始されると、垂直DF処理部122は、前段処理部11からカレントCTUの画素データを取り込む(ステップS101)。
【0032】
垂直DF処理部122は、DF制御部121から取得したカレントCTUの位置情報に基づき、カレントCTUがピクチャの左端のCTUであるか否かを判定する(ステップS102)。カレントCTUがピクチャの左端のCTUの場合(ステップS102のYES)、カレントCTUの左側には、カレントCTUと共にVEフィルタ処理する画素がないので、ステップS106に進む。
【0033】
カレントCTUがピクチャの左端のCTUでない場合(ステップS102のNO)、垂直DF処理部122は、DF制御部121から取得したタイル情報に基づき、カレントCTUが垂直タイル境界の右隣に位置するCTUであるか否かを判定する(ステップS103)。カレントCTUが垂直タイル境界の右隣に位置するCTUでない場合(ステップS103のNO)、垂直DF処理部122は、垂直ラインメモリ124からカレントCTUの左側に隣接する4画素列を取り込む(ステップS104)。垂直ラインメモリ124には、1つ前のCTU処理時間において処理された左隣のCTUの右端4画素列が格納されている。CTUが16×16画素の場合はCTUの右端の4×16画素が垂直ラインメモリ124に格納されている。
【0034】
カレントCTUが垂直タイル境界の右隣に位置するCTUの場合(ステップS103のYES)、垂直DF処理部122は、タイルメモリ127からカレントCTUの左側に隣接する4画素列を取り込む(ステップS105)。カレントCTUが垂直タイル境界の右隣に位置する場合、カレントCTUが属するタイルと左隣のCTUが属するタイルは異なり、左隣のCTUの右端4画素列は垂直ラインメモリ124ではなく、タイルメモリ127に格納されている。
【0035】
続いて、垂直DF処理部122は、DF制御部121から取得したカレントCTUの位置情報に基づき、カレントCTUがピクチャの右端のCTUであるか否かを判定する(ステップS106)。カレントCTUがピクチャの右端のCTUの場合(ステップS106のYES)、カレントCTUの右端4画素列はVEフィルタ処理をしないため、カレントCTUの右端4画素列を垂直ラインメモリ124やタイルメモリ127に格納せずに、ステップS110に進む。
【0036】
カレントCTUがピクチャの右端のCTUでない場合(ステップS106のNO)、垂直DF処理部122は、DF制御部121から取得したタイル情報に基づき、カレントCTUが垂直タイル境界の左隣に位置するCTUであるか否かを判定する(ステップS107)。カレントCTUが垂直タイル境界の左隣に位置するCTUでない場合(ステップS107のNO)、垂直DF処理部122は、垂直ラインメモリ124にカレントCTUの右端4画素列を格納する(ステップS108)。
【0037】
カレントCTUが垂直タイル境界の左隣に位置するCTUの場合(ステップS107のYES)、垂直DF処理部122は、タイルメモリ127にカレントCTUの右端4画素列を格納する(ステップS109)。カレントCTUが垂直タイル境界の左隣に位置する場合、カレントCTUの右端4画素列は次のCTU処理時間でVEフィルタ処理されないので、垂直ラインメモリ124ではなく、タイルメモリ127に格納する。タイルメモリ127に格納されたカレントCTUの右端4画素列は、垂直タイル境界を挟んで隣接する別のタイルのCTUを処理するときに合わせて処理される。
【0038】
上記の処理を終えた後、垂直DF処理部122は、図3(a)で示したように、カレントCTUの8×8ブロックの左側VEに対してVEフィルタ処理を行い(ステップS110)、VEフィルタ処理を終えた画素データを中間メモリ125へ格納し(ステップS111)、ステップS101に戻り、次のCTUを処理する。
【0039】
図5は、本実施形態に係る映像処理装置1の水平DF処理部123の処理の流れを示すフローチャートである。
【0040】
処理が開始されると、水平DF処理部123は、中間メモリ125からカレントCTUの画素データを取り込む(ステップS201)。
【0041】
水平DF処理部123は、DF制御部121から取得したカレントCTUの位置情報に基づき、カレントCTUがピクチャの上端のCTUであるか否かを判定する(ステップS202)。カレントCTUがピクチャの上端のCTUの場合(ステップS202のYES)、カレントCTUの上側には、カレントCTUと共にHEフィルタ処理する画素がないので、ステップS206に進む。
【0042】
カレントCTUがピクチャの上端のCTUでない場合(ステップS202のNO)、水平DF処理部123は、DF制御部121から取得したタイル情報に基づき、カレントCTUが垂直タイル境界の右隣に位置するCTUであるか否かを判定する(ステップS203)。カレントCTUが垂直タイル境界の右隣に位置するCTUでない場合(ステップS203のNO)、カレントCTUの左側には、カレントCTUと共にHEフィルタ処理する画素がないので、ステップS205に進む。
【0043】
カレントCTUが垂直タイル境界の右隣に位置するCTUの場合(ステップS203のYES)、水平DF処理部123は、中間メモリ125からカレントCTUの左側に隣接する4画素列を取り込む(ステップS204)。垂直タイル境界の左隣に位置するCTU(カレントCTUの左隣のCTU)の右端4画素列は、当該CTUがHEフィルタ処理されるときにタイルメモリ127に格納されていたのでHEフィルタ処理されていない。そこで、このタイミングでカレントCTUと共にHEフィルタ処理をする。
【0044】
水平DF処理部123は、水平ラインメモリ126からカレントCTUの上側に隣接する画素行を取り込む(ステップS205)。水平ラインメモリ126には、以前のCTU処理時間において処理された上側に隣接するCTUの下端4画素列が格納されている。CTUが16×16画素の場合はCTUの下端の16×4画素が水平ラインメモリ126に格納されている。なお、カレントCTUが垂直タイル境界に隣接しない場合、カレントCTUが垂直タイル境界の左隣に位置する場合、およびカレントCTUが垂直タイル境界の右隣に位置する場合のそれぞれで水平ラインメモリ126から取り込む画素行の大きさが変化する。詳細については後述の具体例で説明する。
【0045】
続いて、水平DF処理部123は、DF制御部121から取得したカレントCTUの位置情報に基づき、カレントCTUがピクチャの下端のCTUであるか否かを判定する(ステップS206)。カレントCTUがピクチャの下端のCTUの場合(ステップS206のYES)、カレントCTUの下端4画素列はHEフィルタ処理をしないため、カレントCTUの下端4画素列を水平ラインメモリ126に格納せずに、ステップS208に進む。
【0046】
カレントCTUがピクチャの下端のCTUでない場合(ステップS206のNO)、水平DF処理部123は、水平ラインメモリ126にカレントCTUの下端4画素行を格納する(ステップS207)。
【0047】
上記の処理を終えた後、水平DF処理部123は、図3(b)で示したように、カレントCTUの8×8ブロックの上側HEに対してHEフィルタ処理を行い(ステップS208)、HEフィルタ処理を終えた画素データを後段処理部13へ出力し(ステップS209)、ステップS201に戻り、次のCTUを処理する。
【0048】
次に、本実施形態に係る映像処理装置1のDF処理部12の処理を具体例を用いて説明する。
【0049】
図6は、垂直DF処理部122と水平DF処理部123におけるパイプライン処理を説明する図である。図6中の四角形は、垂直DF処理部122と水平DF処理部123のそれぞれが処理するCTUを示す。水平DF処理部123は、垂直DF処理部122においてVEフィルタ処理が終わったCTUを処理する。例を挙げて説明すると、垂直DF処理部122がCTU−1の処理を終えたときにCTU−0の右端の画素列のVEフィルタ処理が完了するので、垂直DF処理部122がCTU−2を処理するときに、水平DF処理部123はCTU−0を処理する。以下では、図6中の点線で囲まれたCTU−6,5、CTU−11、およびCTU−18を垂直DF処理部122と水平DF処理部123が処理する例について説明する。
【0050】
まず、図7A図7Cを用いて、垂直DF処理部122がCTU−6を処理する例について説明する。以下の説明中には、図4のフローチャートの対応するステップを記載している。
【0051】
図7Aに示すように、垂直DF処理部122は、前段処理部11からカレントCTUの画素データとしてCTU−6の画素データを取り込むとともに(ステップS101)、垂直ラインメモリ124からCTU−6の左隣のCTU−5の右端4画素列を取り込む(ステップS104)。CTU−5の右端4画素列は、垂直DF処理部122が1CTU処理時間前に取り込んだCTU−5の画素データのうち、VEフィルタ処理されていない画素列である。
【0052】
垂直DF処理部122は、CTU−6がピクチャの右端のCTUでなく(ステップS106のNO)、垂直タイル境界の左側に隣接するCTUでないと判定すると(ステップS107のNO)、図7Bに示すように、CTU−6の画素データの右端4画素列を垂直ラインメモリ124へ格納する(ステップS108)。CTU−6の右側のVE、すなわち、CTU−6の右端4画素列は、CTU−6の右隣のCTU−7の画素データが取り込まれない限り、VEフィルタ処理されない。そのため、垂直DF処理部122は、同CTU処理時間にVEフィルタ処理されないCTU−6の右端4画素列を垂直ラインメモリ124へ退避させる。なお、ピクチャの右端に位置するCTU(図2の例では、CTU−14,17,20,31,34)では、当該CTUの右端4画素列を垂直ラインメモリ124へ格納しない。
【0053】
そして、垂直DF処理部122は、CTU−6に含まれる全ての8×8ブロックの左側VEに対してVEフィルタ処理を行う(ステップS110)。図7Bでは、上向き実線矢印によりVEフィルタ処理がなされたVEを示している。
【0054】
図7Cに示すように、垂直DF処理部122は、VEフィルタ処理を終えた画素、すなわち、CTU−5の右端4画素列と、右端4画素列を除くCTU−6の画素データを中間メモリ125へ格納する(ステップS111)。中間メモリ125には、1つ前のCTU処理時間においてVEフィルタ処理した、右端4画素列を除くCTU−5の画素データが格納されているので、今回のCTU処理時間でVEフィルタ処理した画素データを中間メモリ125へ格納することで、中間メモリ125には、CTU−5の全ての画素データが格納されることになる。したがって、水平DF処理部123は、次のCTU処理時間で、CTU−5をHEフィルタ処理することができる。
【0055】
続いて、図8A図8Cを用いて、水平DF処理部123が、CTU−5をHEフィルタ処理する例について説明する。以下の説明中には、図5のフローチャートの対応するステップを記載している。
【0056】
図8Aに示すように、水平DF処理部123は、中間メモリ125からカレントCTUの画素データとしてCTU−5の画素データを取り込むとともに(ステップS201)、水平ラインメモリ126からCTU−5の上側のCTU−1の下端4画素行を取り込む(ステップS205)。CTU−1の下端4画素行は、水平DF処理部123が以前に処理したCTU−1の画素データのうち、HEフィルタ処理されていない画素行である。
【0057】
そして、水平DF処理部123は、CTU−5がピクチャの下端のCTUでないと判定すると(ステップS206のNO)、図8Bに示すように、CTU−5の画素データの下端4画素行を水平ラインメモリ126へ格納する(ステップS207)。CTU−5の下側のHE、すなわち、CTU−5の下端4画素行は、CTU−5の下側のCTU−9の画素データが取り込まれない限り、HEフィルタ処理されない。そのため、水平DF処理部123は、同CTU処理時間にHEフィルタ処理されないCTU−5の下端4画素を水平ラインメモリ126へ退避させる。なお、ピクチャの下端に位置するCTU(図2の例では、CTU−25〜28,32〜34)では、当該CTUの下端4画素行を水平ラインメモリ126へ格納しない。
【0058】
そして、水平DF処理部123は、CTU−5に含まれる全ての8×8ブロックの上側HEに対してHEフィルタ処理を行う(ステップS208)。図8Bでは、右向き点線矢印によりHEフィルタ処理がなされたHEを示している。
【0059】
図8Cに示すように、水平DF処理部123は、HEフィルタ処理を終えた画素、すなわち、CTU−1の下端4画素行と、下端4画素行を除くCTU−5の画素データを後段処理部13へ出力する(ステップS209)。
【0060】
次に、垂直DF処理部122が垂直タイル境界に隣接するCTU−11,18を処理する例について説明する。
【0061】
まず、図9A〜9Cを用いて、垂直DF処理部122が垂直タイル境界の左側に位置するCTU−11を処理する例について説明する。以下の説明中には、図4のフローチャートの対応するステップを記載している。
【0062】
図9Aに示すように、垂直DF処理部122は、前段処理部11からカレントCTUの画素データとしてCTU−11の画素データを取り込むとともに(ステップS101)、垂直ラインメモリ124からCTU−11の左隣のCTU−10の右端4画素列を取り込む(ステップS104)。
【0063】
そして、垂直DF処理部122は、CTU−11が垂直タイル境界の左側に隣接するCTUであると判定すると(ステップS107のYES)、図9Bに示すように、CTU−11の画素データの右端4画素列をタイルメモリ127へ格納する(ステップS109)。CTU−11の右隣のCTU−18は、CTU−11が属するタイルと異なるタイルに属しているため、CTU−18に隣接するCTU−11の右端4画素列は、垂直ラインメモリ124ではなくタイルメモリ127へ格納する。
【0064】
そして、垂直DF処理部122は、CTU−11に含まれる全ての8×8ブロックの左側VEに対してVEフィルタ処理を行う(ステップS110)。
【0065】
図9Cに示すように、垂直DF処理部122は、VEフィルタ処理を終えた画素、すなわち、CTU−10の右端4画素列と、右端4画素列を除くCTU−11の画素データを中間メモリ125へ格納する(ステップS111)。
【0066】
続いて、図10A〜10Cを用いて、垂直DF処理部122が垂直タイル境界の右側に位置するCTU−18を処理する例について説明する。以下の説明中には、図4のフローチャートの対応するステップを記載している。
【0067】
図10Aに示すように、垂直DF処理部122は、前段処理部11からカレントCTUの画素データとしてCTU−18の画素データを取り込むとともに(ステップS101)、タイルメモリ127からCTU−18の左隣のCTU−11の右端4画素列を取り込む(ステップS105)。CTU−18の左隣のCTU−11は、CTU−18が属するタイルとは異なるタイルに属しているため、CTU−11の画素データの右端4画素列は垂直ラインメモリ124ではなくタイルメモリ127に格納されている。
【0068】
そして、垂直DF処理部122は、CTU−18がピクチャの右端のCTUでなく(ステップS106)、垂直タイル境界の左側に位置するCTUでないと判定すると(ステップS107)、図10Bに示すように、CTU−18の画素データの右端4画素列を垂直ラインメモリ124へ格納する(ステップS108)。
【0069】
そして、垂直DF処理部122は、CTU−18に含まれる全ての8×8ブロックの左側VEに対してVEフィルタ処理を行う(ステップS110)。
【0070】
図10Cに示すように、垂直DF処理部122は、VEフィルタ処理を終えた画素、すなわち、CTU−11の右端4画素列と、右端4画素列を除くCTU−18の画素データを中間メモリ125へ格納する(ステップS111)。
【0071】
このように、垂直DF処理部122は、垂直タイル境界を挟んで隣接するCTUの画素列をタイルメモリ127を用いてやり取りする。具体的には、垂直DF処理部122は、垂直タイル境界の左側のCTUを処理するときに当該CTUの右端4画素列をタイルメモリ127へ格納し、垂直タイル境界の右側のCTUを処理するときにタイルメモリ127から画素列を取り込む。
【0072】
次に、水平DF処理部123が垂直タイル境界に隣接するCTU−11,18を処理する例について説明する。
【0073】
まず、図11A〜11Cを用いて、水平DF処理部123が垂直タイル境界の左側に位置するCTU−11を処理する例について説明する。以下の説明中には、図5のフローチャートの対応するステップを記載している。
【0074】
図11Aに示すように、水平DF処理部123は、中間メモリ125からカレントCTUの画素データとしてCTU−11の画素データを取り込むとともに(ステップS201)、水平ラインメモリ126からCTU−11の上側のCTU−7の下端4画素行を取り込む(ステップS205)。CTU−11は、垂直タイル境界の左側に位置するので、CTU−11の右端4画素列はタイルメモリ127に格納されている。したがって、ここでは右端4画素列を除くCTU−11の画素データが中間メモリ125から取り込まれる。また、水平ラインメモリ126から取り込むCTU−7の画素行についても、中間メモリ125から取り込んだCTU−11の画素データの幅に合わせて、右端4画素列を除くCTU−7の下端4画素行が取り込まれる。
【0075】
そして、水平DF処理部123は、CTU−11がピクチャの下端のCTUでないと判定すると(ステップS206)、図11Bに示すように、CTU−11の画素データの下端4画素行を水平ラインメモリ126へ格納する(ステップS207)。ここでは右端4画素列を除くCTU−11の下端4画素行が水平ラインメモリ126に格納される。
【0076】
そして、水平DF処理部123は、CTU−11に含まれる全ての8×8ブロックの上側HEに対してHEフィルタ処理を行う(ステップS208)。
【0077】
図11Cに示すように、水平DF処理部123は、HEフィルタ処理を終えた画素、すなわち、右端4画素列を除く、CTU−7の下端4画素行と下端4画素行を除くCTU−11の画素データを後段処理部13へ出力する(ステップS209)。
【0078】
続いて、図12A〜12Cを用いて、水平DF処理部123が垂直タイル境界の右側に位置するCTU−18を処理する例について説明する。以下の説明中には、図5のフローチャートの対応するステップを記載している。
【0079】
図12Aに示すように、水平DF処理部123は、中間メモリ125からカレントCTUの画素データとしてCTU−18の画素データと、CTU−18の左隣のCTU−11の右端4画素列を取り込むとともに(ステップS201,S204)、水平ラインメモリ126からCTU−11,18の上側のCTU−7,15の下端4画素行を取り込む(ステップS205)。水平DF処理部123は、CTU−18を処理するときにCTU−11の右端4画素列も合わせて処理する。
【0080】
そして、水平DF処理部123は、CTU−18がピクチャの下端のCTUでないと判定すると(ステップS206)、図12Bに示すように、CTU−11の右端4画素列とCTU−18の画素データの下端4画素行を水平ラインメモリ126へ格納する(ステップS207)。
【0081】
そして、水平DF処理部123は、CTU−18に含まれる全ての8×8ブロックの上側HEに対してHEフィルタ処理を行う(ステップS208)。
【0082】
図12Cに示すように、水平DF処理部123は、HEフィルタ処理を終えた画素、すなわち、CTU−7,11,15,18の画素データを後段処理部13へ出力する(ステップS209)。
【0083】
なお、水平タイル境界に隣接するCTUの処理は、図7A〜7Cと図8A〜8Cを用いて説明した処理と同様である。水平タイル境界と垂直タイル境界の両方に隣接するCTUの処理は、垂直タイル境界とCTUとの関係により、図9A〜9Cと図11A〜11C、あるいは図10A〜10Cと図12A〜12Cのいずれかと同様に処理できる。
【0084】
また、水平タイル境界の上側に隣接するCTUを処理するときに当該CTUの下端4画素行をタイルメモリ127へ格納しておき、水平タイル境界の下側に隣接するCTUを処理するときにタイルメモリ127から取り込んでもよい。
【0085】
以上説明したように、本実施の形態によれば、垂直DF処理部122は、カレントCTUが垂直タイル境界の左隣に位置するCTUであると判定した場合、カレントCTUの右端4画素列をタイルメモリ127へ格納した後、カレントCTUの8×8ブロックの左側VEに対してVEフィルタ処理を行い、水平DF処理部123が当該カレントCTUの8×8ブロックの上側HEに対してHEフィルタ処理するときは、タイルメモリ127に格納された右端4画素列を除く画素データに対してHEフィルタ処理を行い、垂直DF処理部122は、カレントCTUが垂直タイル境界の右隣に位置するCTUであると判定した場合、タイルメモリ127からカレントCTUの左隣のCTUの右端4画素列を取り込んだ後、カレントCTUの8×8ブロックの左側VEに対してVEフィルタ処理を行い、水平DF処理部123が当該カレントCTUの8×8ブロックの上側HEに対してHEフィルタ処理するときは、タイルメモリ127に格納された右端4画素列を含む画素データに対してHEフィルタ処理を行うことにより、垂直タイル境界の左側に隣接する4画素列がVEフィルタ処理される前にHEフィルタ処理されないようタイルメモリ127へ退避されるので、垂直タイル境界に対しても、H.265/HEVCの規格に沿ったデブロッキングフィルタ処理を行うことができる。
【0086】
なお、複数のDF処理部12を備えて、各タイルを並列処理してもよい。その場合、タイル境界のデブロッキングフィルタ処理については、共通のタイルメモリ127を用いて画素データをやり取りできる。
【符号の説明】
【0087】
1…映像処理装置
11…前段処理部
12…DF処理部
121…DF制御部
122…垂直DF処理部
123…水平DF処理部
124…垂直ラインメモリ
125…中間メモリ
126…水平ラインメモリ
127…タイルメモリ
13…後段処理部
図1
図2
図3
図4
図5
図6
図7A
図7B
図7C
図8A
図8B
図8C
図9A
図9B
図9C
図10A
図10B
図10C
図11A
図11B
図11C
図12A
図12B
図12C