JP2016220026A - 画像処理装置および画像処理方法 - Google Patents

画像処理装置および画像処理方法 Download PDF

Info

Publication number
JP2016220026A
JP2016220026A JP2015102785A JP2015102785A JP2016220026A JP 2016220026 A JP2016220026 A JP 2016220026A JP 2015102785 A JP2015102785 A JP 2015102785A JP 2015102785 A JP2015102785 A JP 2015102785A JP 2016220026 A JP2016220026 A JP 2016220026A
Authority
JP
Japan
Prior art keywords
cores
core
tiles
image
processing
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
JP2015102785A
Other languages
English (en)
Other versions
JP6613618B2 (ja
Inventor
英典 仲石
Hidenori Nakaishi
英典 仲石
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.)
Socionext Inc
Original Assignee
Socionext Inc
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 Socionext Inc filed Critical Socionext Inc
Priority to JP2015102785A priority Critical patent/JP6613618B2/ja
Priority to US15/081,554 priority patent/US10743009B2/en
Publication of JP2016220026A publication Critical patent/JP2016220026A/ja
Application granted granted Critical
Publication of JP6613618B2 publication Critical patent/JP6613618B2/ja
Active 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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • 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

Landscapes

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

Abstract

【課題】メモリ容量の増大を招くことなく、マルチコアによる画像処理の遅延を低減する画像処理装置及び画像処理方法を提供する。
【解決手段】1つの画像データを分割した複数のタイルT10、T11a〜T15eに対して割り当てられる複数のコアと、分割されたタイルに基づいて、複数のコアの割り当てを制御する演算処理装置と、を有する画像処理装置である。演算処理装置は、画像データが第1方向及び第1方向とは異なる第2方向において複数のタイルに分割されたとき、第2方向の1列分の複数のタイルに対して複数のコアの全てを割り当てる。
【選択図】図17

Description

本明細書で言及する実施例は、画像処理装置および画像処理方法に関する。
近年、様々な動画像の圧縮技術が提案され、実用化されている。多くの動画像圧縮技術(例えば、MPEG(Moving Picture Experts Group)-2、H.264およびH.265(HEVC: High Efficiency Video Coding)等)において、符号化/復号化処理を行う際、画面内予測(イントラ予測)および画面間予測(インター予測)の技術が用いられている。
ところで、インター予測は、複数のフレーム(画面)における画像を処理するため、処理時間が長くなる。さらに、画面サイズは、フルハイビジョン(Full HD(1920×1080)から4K(3840×2160等)や8K(7680×4320等)と大きくなる傾向にあり、それに従って、処理時間も、4倍(4K)や16倍(8K)と増大することになる。
そのため、最近では、複数のプロセッサコア(コア)を使用して、動画像の符号化および復号化を行うことが一般化している。しかしながら、複数のコアを使用すると、例えば、復号化の処理順番等において、コアの待ち合わせ(ウェイト)時間が生じることになる。
ところで、従来、複数のコアを使用して画像処理を効率的に行うようにした画像処理装置および画像処理方法としては、様々なものが提案されている。
特開平02−242485号公報 特開平08−044678号公報 特開2003−051019号公報 特開2011−167857号公報
上述したように、複数のコアを使用して画像処理を効率的に行うようにした画像処理技術としては、様々な提案がなされているが、画面サイズの増大と相俟って、例えば、復号化の処理順番等において、コアの待ち合わせ時間が生じる。
このようなコアの待ち合わせ時間は、全体としての画像処理の遅延を招くことになるため、低減するのが好ましい。しかしながら、複数のコアを有する画像処理装置において、コアの待ち合わせ時間の低減は、十分なものとはいえないのが現状である。
一実施形態によれば、1つの画像データを分割した複数のタイルに対して割り当てられる複数のコアと、分割された前記タイルに基づいて、前記複数のコアの割り当てを制御する演算処理装置と、を有する画像処理装置が提供される。
前記演算処理装置は、前記画像データが第1方向および前記第1方向とは異なる第2方向において複数のタイルに分割されたとき、前記第2方向の1列分の複数のタイルに対して前記複数のコアの全てを割り当てる。
開示の画像処理装置および画像処理方法は、メモリ容量の増大を招くことなく、マルチコアによる画像処理の遅延を低減することができるという効果を奏する。
図1は、動画像の符号化処理および復号化処理を説明するための図である。 図2は、符号化処理および復号化処理の単位を説明するための図(その1)である。 図3は、符号化処理および復号化処理の単位を説明するための図(その2)である。 図4は、符号化処理および復号化処理の単位を説明するための図(その3)である。 図5は、符号化処理および復号化処理の単位を説明するための図(その4)である。 図6は、動画像圧縮規格の一例における分割サイズを説明するための図(その1)である。 図7は、動画像圧縮規格の一例における分割サイズを説明するための図(その2)である。 図8は、動きベクトル復号化処理の一例を説明するための図(その1)である。 図9は、動きベクトル復号化処理の一例を説明するための図(その2)である。 図10は、隣接メモリの一例を説明するための図(その1)である。 図11は、隣接メモリの一例を説明するための図(その2)である。 図12は、ピクチャ内のタイル分割の一例を説明するための図である。 図13は、CTBライン毎のコアの割り当てを説明するための図である。 図14は、図13に示すCTBライン毎のコアの割り当てにおける課題を説明するための図である。 図15は、タイル毎のコアの割り当てを説明するための図である。 図16は、本実施形態に係る画像処理装置の一例を示すブロック図である。 図17は、図16に示す画像処理装置に適用される第1実施例のコアの割り当て処理の一例を説明するためのフローチャートである。 図18は、図16に示す画像処理装置に適用される第2実施例のコアの割り当て処理を説明するための図である。 図19は、第2実施例のコアの割り当て処理の一例を説明するためのフローチャート(その1)である。 図20は、図19に示すフローチャートにおける処理を説明するための図である。 図21は、第2実施例のコアの割り当て処理の一例を説明するためのフローチャート(その2)である。 図22は、図21に示すフローチャートにおける処理を説明するための図である。 図23は、第2実施例のコアの割り当て処理の一例を説明するためのフローチャート(その3)である。 図24は、図23に示すフローチャートにおける処理を説明するための図である。 図25は、4つのコアによる並列処理を説明するための図である。 図26は、第2実施例のコアの割り当て処理の効果を説明するための図(その1)である。 図27は、第2実施例のコアの割り当て処理の効果を説明するための図(その2)である。
まず、本実施例の画像処理装置および画像処理方法を詳述する前に、図1〜図15を参照して、画像処理技術の一例、関連技術としての画像処理技術、並びに、その問題点を説明する。
図1は、動画像の符号化処理および復号化処理を説明するための図であり、符号器1,復号器3および外部メモリ5を示すものである。図1に示されるように、符号器1は、例えば、4K画像等の符号化対象の入力画像Iinを受け取って符号化し、例えば、HEVC(High Efficiency Video Coding)ストリーム等の画像ストリームIstmを生成する。
符号器1は、CTB(Coding Tree Block)分割部10,減算器11,直交変換量子化部12,エントロピー符号化部13,逆量子化逆直交変換部14,予測モード選択部15,加算器16および動きベクトル検出部17を含む。
さらに、符号器1は、フレーム間予測部18,フレーム内予測部19,現フレームバッファ20,過去フレームバッファ21,フレームバッファ管理部22およびデブロッキングフィルタ23を含む。
CTB分割部10は、入力画像Iinを受け取ってCTB分割処理し、減算器11は、CTB分割部10からのCTB分割処理された画像と、予測モード選択部15から出力される予測画像の差分値を算出し、その差分値を直交変換量子化部12に出力する。
直交変換量子化部12は、減算器11からの画素差分値を直交変換した後、量子化を行い、その量子化したデータを、エントロピー符号化部13および逆量子化逆直交変換部14に出力する。
エントロピー符号化部13は、直交変換量子化部12により量子化されたデータを可変長符号化変換して符号化信号(画像ストリームIstm)を出力する。また、エントロピー符号化部13は、フレーム間予測部18からの予測差分値(MVD:Motion Vector Difference)を含む符号化信号(Istm)を出力する。
さらに、エントロピー符号化部13は、例えば、復号化装置(図示しない)において、予測差分値(MVD)により動きベクトル(MV:Motion Vector)を算出し、復号化した出力画像を生成する。
逆量子化逆直交変換部14は、直交変換量子化部12より量子化されたデータを逆量子化した後、逆直交変換を行い、処理後のデータを加算器16に出力する。予測モード選択部15は、フレーム間予測部18とフレーム内予測部19で生成した予測画像において、予測精度が良い方を選択して、上述した減算器11および加算器16に出力する。
加算器16は、逆量子化逆直交変換部14から出力される逆量子化逆直交変換された画素と、予測モード選択部15から出力される画素を加算する。動きベクトル検出部17は、CTB分割部10から入力されたCTBと、過去フレームバッファ21に格納された参照画像とを用いて、対象CTBの動きベクトル(MV)を検出する。
フレーム間予測部18は、周辺領域の動きベクトル(MV)に基づいて、動きベクトル予測値(MVP:Motion Vector Predictor)を算出する。さらに、フレーム間予測部18は、対象マクロブロックの動きベクトル(MV)と動きベクトル予測値(MVP)の間の予測差分値(MVD)を算出する。
フレーム内予測部19は、現フレームバッファ20に保持された参照画像を受け取り、隣接ブロックからの画素レベルに基づいて、参照画像のフレーム内予測を行う。現フレームバッファ20は、加算器16からの値を格納し、過去フレームバッファ21は、フレームバッファ管理部22からの値を格納する。
フレームバッファ管理部22は、デブロッキングフィルタ23の出力データを受け取って過去フレームバッファ21に出力し、過去フレームバッファ21は、その出力データを記憶する。
デブロッキングフィルタ23は、現フレームバッファ20に保持された参照画像を受け取り、隣接する2つのマクロブロックの境界を平滑化して出力する。なお、符号器1の出力である、例えば、HEVCストリーム(画像ストリームIstm:符号化信号)は、例えば、インターネット等の通信回線や衛星回線等を経由して復号器3に送られる。
図1に示されるように、復号器3は、例えば、HEVCストリーム等の画像ストリームIstmを受け取って復号化し、4K画像等の復号化された出力画像Ioutを生成して出力する。
復号器3は、エントロピー復号化部30,逆量子化逆直交変換部31,加算器32,予測モード選択部33,現フレームバッファ34,フレーム内予測部35およびフレーム間予測部36を含む。さらに、復号器3は、デブロッキングフィルタ37,フレームバッファ管理部38および過去フレームバッファ39を含む。
なお、図1に示されるように、外部メモリ5は、復号器3により使用される外部のメモリであり、デブロッキングフィルタ用一時メモリ(Temporary Memory)50およびフレーム間予測部用一時メモリ51を含む。
CTB分割部10は、入力画像Iinを受け取ってCTB分割処理し、減算器11は、CTB分割部10からのCTB分割処理された画像と、予測モード選択部15から出力される予測画像の差分値を算出し、その差分値を直交変換量子化部12に出力する。
エントロピー復号化部30は、画像ストリームIstm(符号化信号)を受け取って、エントロピー復号化処理を行い、逆量子化逆直交変換部31は、エントロピー復号化部30からの入力情報に対して、逆量子化逆直交変換を行う。
加算器32は、逆量子化逆直交変換部31から出力される逆量子化逆直交変換された画素と、予測モード選択部33から出力される画素を加算する。予測モード選択部33は、フレーム間予測部36またはフレーム内予測部35で復号化された画素を選択して、上述した加算器32に出力する。
現フレームバッファ34は、加算器32の出力結果の画素を格納する。フレーム内予測部35は、現フレームバッファ34に保持された参照画像を受け取り、隣接ブロックからの画素レベルに基づいて、参照画像のフレーム内予測を行う。
フレーム間予測部36は、周辺領域の動きベクトル(MV)に基づいて、動きベクトル予測値(MVP)を算出する。さらに、フレーム間予測部36は、対象ブロックの予測差分値(MVD)と動きベクトル予測値(MVP)との加算結果から、動きベクトル(MV)を算出する。
デブロッキングフィルタ37は、現フレームバッファ34に保持された参照画像を受け取り、隣接する2つのブロックの境界を平滑化して出力する。フレームバッファ管理部38は、デブロッキングフィルタ37の出力データを受け取って過去フレームバッファ39に出力し、過去フレームバッファ39はその出力データを記憶する。過去フレームバッファ39は、フレームバッファ管理部38からの値を格納する。
デブロッキングフィルタ用一時メモリ50は、デブロッキングフィルタ37の隣接メモリを示し、現CTBが処理した内容を格納して、現CTBが1CTBライン下の処理に移った時、その格納された内容が読み出される。なお、この現CTBが処理した内容は、外部メモリ5に格納してもよい。
フレーム間予測部用一時メモリ51は、フレーム間予測部36の隣接メモリを示し、現CTBが処理した内容を格納して、現CTBが1CTBライン下の処理に移った時、その格納された内容が読み出される。なお、この現CTBが処理した内容は、外部メモリ5に格納してもよい。
なお、復号器3により復号された出力画像Ioutは、そのまま出力されてもよいが、外部メモリ5に格納することもできる。
図2〜図5は、符号化処理および復号化処理の単位を説明するための図である。図2のピクチャ種類において、参照符号Iは、Iピクチャ(Intra-coded Picture)、Pは、Pピクチャ(Predicted Picture)、そして、Bは、Bピクチャ(Bi-directional Predicted Picture)を示す。なお、図2において、参照符号Cuは、現処理ブロックを示す。
ここで、イントラ予測は、動きベクトル探索処理が不要なIピクチャを使用し、インター予測は、動きベクトル探索処理を行うPピクチャ(前方参照)および動きベクトル探索処理を行うBピクチャ(前方,後方参照、双方向参照)を使用する。
具体的に、図2に示されるように、現在処理している画像(現処理ピクチャ(Picture))がBピクチャの場合、参照画像(Picture)としては、例えば、前方参照としてI,Pピクチャを使用し、後方参照としてP,Pピクチャを使用する。なお、MV(動きベクトル)の成分としては、垂直成分および水平成分よりMVが求められる。
図3は、図2における現処理ピクチャの処理を示し、例えば、CTB(64×64画素)単位で矢印の方向に、すなわち、左上端からCTB単位で1ラインずつ右下端に向かって順に処理を行う。
図4は、CTBを示し、CTB内で分割がある場合、例えば、田の字分割(四分木分割)があり、さらに、その内部で分割がある場合を示す。図4(a)に示すCTBにおける括弧付き数字(1),(2),(3),…,(11)は、そのような分割があった場合における処理の順序の一例を示すものである。
図4(b)は、それぞれのブロックにおける処理の順序を示すもので、例えば、田の字分割ならばZを記載する順、上下分割ならば上から下の順、そして、左右分割ならば、左から右の順に処理を行う。すなわち、図4(a)における(1)→(2)→(3)→…→(11)の順に処理を行う。
図5は、各ブロック単位を示し、例えば、図5(a)は、一番大きな外枠(64×64(画素))のCTB(Coding Tree Block)を示し、図5(b)は、田の字(四分木)分割された正方形単位(64×64,32×32,16×16,8×8)のCU(Coding Unit)を示す。
さらに、図5(c)〜図5(e)は、例えば、最小のCUのさらに分割された一部のパート(Part:Part0,Part1、Part0〜Part3)であるPU(Prediction Unit)を示す。
図6および図7は、動画像圧縮規格の一例における分割サイズを説明するための図である。図6および図7に示されるように、動画圧縮規格(HEVC(H.265))には、様々な分割サイズ(ブロック単位:ケース1〜27)が存在する。
ここで、ケース1〜8では、N=32とし、ケース1は、CU=64×64がPUの場合(分割しない場合)、すなわち、2N×2Nの場合であり、PU=0(Part0)だけで表される。また、ケース2は、田の字分割した場合、すなわち、N×N(32×32)の場合であり、PU=0(Part0)〜PU=3(Part3)で表される。
さらに、ケース3は、上下に二等分割した場合、すなわち、2N×Nの場合であり、PU=0(Part0)およびPU=1(Part1)で表され、ケース4は、左右に二等分割した場合、すなわち、N×2Nの場合であり、PU=0(Part0)およびPU=1(Part1)で表される。
そして、ケース5は、上下方向を16:48で分割した場合、すなわち、2N×nUの場合であり、64×16のPU=0(Part0)および64×48のPU=1(Part1)で表され、ケース6〜8の分割も同様に考えることができる。
ここで、ケース9〜16では、N=16とし、また、ケース17〜24では、N=8とし、他はN=32の場合と同様である。例えば、ケース2で分割されたPU=0(Part0)〜PU=3(Part3)、すなわち、32×32(画素)の各ブロックは、そのままケース9に対応し、ケース10において分割された16×16の各ブロックは、そのままケース17に対応する。このように、例えば、HEVCには、ケース1〜27の分割サイズが存在する。
図8および図9は、動きベクトル復号化処理の一例を説明するための図であり、動きベクトル(MV)の復元(復号)処理を説明するためのものである。ここで、図8(a)は、例えば、CTBの分割が無い場合を示し、図8(b)〜図8(d)は、隣接CTBおよび現CTBで分割がある場合を示す。
参照符号Cuは現処理ブロック、A〜Dは隣接ブロック、MVは動きベクトル、MVDは予測差分値(差分ベクトル)、そして、MVPは中間値を示す。すなわち、参照符号Aは、現処理ブロックCuに対する、左隣接ブロック、Bは、真上隣接ブロック、Cは、右上隣接ブロック、そして、Dは、左上隣接ブロックを示す。
なお、A,B,Cの中間値MVPは、MVP=Median(MV_MB_A, MV_MB_B, MV_MB_C)として求めるが、例えば、右上隣接ブロックCの処理が完了せずに、MV_MB_Cが無効であれば、左上隣接ブロックDのMV_MB_Dを使用する。そして、CuのMVは、MV=MVD+MVPとして求めることができる。
図8(a)に示されるように、現処理ブロックCuの動きベクトルMVの復号(復元)は、例えば、CTBのブロック毎に存在する差分ベクトルMVDと、Cuに対する周辺ブロック(左隣接ブロックA,真上隣接ブロックBおよび右上隣接ブロックC)を使用して行う。
隣接CTBおよび現CTBで分割がある場合、例えば、図8(b)から図8(c)のように、処理を行うCuが次のブロック(1つ右隣のブロック)に移動すると、隣接ブロックA〜Dも変化する。
そして、例えば、図8(d)に示されるように、Cuの位置によっては、隣接ブロックCの処理が開始されていないため、Cが無効となり、Cの代わりにDを使用する。
図9(a)は、CTB(64×64(画素))の内部が四分木(田の字)分割されて、32×32のブロックとされ、さらに、32×32の4つのブロックが全て四分木分割されて、全てのPUが16×16とされた場合を示す。
なお、図9(b)〜図9(q)は、図9(a)における処理の順序(0〜15)に対応し、それぞれにおける、現処理ブロックCuの位置、並びに、隣接ブロックA〜Dの位置およびCの有効/無効を示す。
図9(a)に示されるように、0〜15の順に、16×16のPUが処理される場合、例えば、図9(e),図9(i),図9(m),図9(o)および図9(q)の場合、現処理ブロックCuに対する右上隣接ブロックCは、未だ復号化されていないため、無効『×』になる。すなわち、右上隣接ブロックCは、使用することができず、代わりに左上隣接ブロックDを使用する。
ここで、図9(k)の場合、現処理ブロックCuに対する右上隣接ブロックCは、既に復号化されている(MVが生成されている)ため、そのまま使用することができる。なお、他の図の場合も、右上隣接ブロックCは、既にMVの生成が済んでいるため、そのまま使用することができる。このように、現処理ブロックCuの位置によって、右上隣接ブロックCを使用可能な場合と不可能な場合が存在することが分かる。
図10および図11は、隣接メモリの一例を説明するための図である。図10および図11において、参照符号AMは、隣接メモリを示す。図10に示されるように、例えば、位置(1)におけるCTBを処理するとき、画面端の動きベクトルMVのデータを隣接メモリAMに保持する。そして、例えば、位置(2)におけるCTBを処理するとき、位置(1)のCTBを真上隣接ブロック(B)として使用する。
ここで、隣接メモリAMは、例えば、64×64のCTBを、全て4×8のブロックに分割するメモリ容量が最大となる場合を考える。すなわち、CTBのブロック分割は様々な場合があり得るため、最も容量を使う場合を想定して隣接メモリAMの容量を決めることが望まれる。
図12は、ピクチャ内のタイル分割の一例を説明するための図であり、1つのピクチャを、9つのタイル(Tile)0〜8に分割した様子を示すものである。図12に示されるように、例えば、HEVCでは、1つのピクチャ内でタイル分割が行われることがある。
図12に示す例では、タイル0,2,6および8が同じサイズとされ、タイル1および7が同じサイズとされ、タイル3および5が同じサイズとされている。
このように、1つのピクチャを9つのタイル0〜8に分割すると、各タイル間では、前述したCuに対するA,B,C(D)の依存関係が存在しないため、それぞれのタイルで独立の処理を行うことができる。
すなわち、例えば、複数の演算処理部(コア:Core)を使用し、それぞれのコアが対応するタイルの処理を行うように並列して動作させることができる。
図13は、CTBライン(画像ブロックライン)毎のコアの割り当てを説明するための図である。なお、以下の説明では、コアの数を4つとして説明するが、4つに限定されないのはいうまでもない。ここで、図13(a)および図13(b)は、4つのコアによる復号化処理を示し、図13(c)は、隣接メモリAMを示し、そして、図13(d)は、隣接条件が揃うまで後発コアが停止している様子を示す。
図13(a)および図13(b)に示されるように、4つのコアCR1〜CR4は、それぞれ対応するCTBラインL1〜L4,L5〜L8に割り当てられ、それぞれのブロックの復号化処理を行う。
ここで、例えば、CR1は、L1の処理が終了(完了)したらL5の処理を行い、CR2は、L2の処理が完了したらL6の処理を行い、CR3は、L3の処理が完了したらL7の処理を行い、そして、CR4は、L4の処理が完了したらL8の処理を行う。ここで、隣接メモリAMは、図13(c)に示されるように、同時に1つのブロックのみ処理するため、1CTBライン分のメモリ容量になる。
図13(d)に示されるように、CTBライン毎にコアCR1〜CR4の割り当てを行う場合、例えば、隣接条件が揃うまで後発コアが停止することになる。すなわち、コアCR2は、現処理ブロックCuの動きベクトルMVを復元する場合、例えば、コアCR1がCuの右上隣接ブロックCの処理を完了していないと、コアCR1が処理を完了するまで、CR2は停止することになる。これは、CR3およびCR4でも同様であり、処理の遅延を招くことになる。
図14は、図13に示すCTBライン毎のコアの割り当てにおける課題を説明するための図である。図14に示されるように、タイル分割を行わない場合、通常の動作において、コアCR1〜CR4は、それぞれ対応するCTBラインL1〜L4に割り当てられる。
そのため、図13(d)を参照して説明したように、上側のCTBの隣接条件が揃うまで、下側CTBのコアが停止する。例えば、コアCR1が、コアCR2が処理する現処理ブロックCuで使用する隣接ブロク(右上隣接ブロックC)のデータ(MV)を生成していない場合には、コアCR2は、コアCR1の生成が完了するまで処理を停止する。
ここで、図14におけるCTBラインL1の右端ブロックのように、分割サイズが小さいものが多い場合には、CR1による処理時間が長くなり、その結果、CR2の待ち時間も長くなる。すなわち、処理するブロックの分割サイズ数が多い場合には、処理の停止による遅延の影響も大きくなる。
図15は、タイル毎のコアの割り当てを説明するための図である。ここで、図15(a)および図15(b)は、同じ大きさの4つのタイルを4つのコアで復号化処理する様子を示し、図14(c)は、隣接メモリAMを示し、そして、図14(d)は、タイルのサイズが異なる場合を示す。
図15(a)および図15(b)に示されるように、4つのコアCR1〜CR4は、それぞれ対応するタイルT1〜T4におけるCTBラインに割り当てられ、それぞれのブロックの復号化処理を行う。ここで、4つのタイルT1〜T4では、それぞれコアCR1〜CR4により並列に処理が行われる。
すなわち、タイルT1では、コアCR1がCTBラインL11〜L14を順に処理し、タイルT2では、コアCR2がCTBラインL21〜L24を順に処理する。また、タイルT3では、コアCR3がCTBラインL31〜L34を順に処理し、タイルT4では、コアCR4がCTBラインL41〜L44を順に処理する。
このように、タイル毎にコアを割り当てた場合、各タイルの処理を並列に行って処理を高速化することができる。ただし、例えば、4つのコアCR1〜CR4で4つのタイルT1〜T4を処理する場合には、同時に2つの隣接メモリAMが使用される可能性があるため、隣接メモリAMの容量は、図13(c)の2倍準備することになる。すなわち、隣接メモリの容量は、例えば、タイルの上下方向の段数分だけ準備しておくことになる。
さらに、図15(d)に示されるように、CTBを分割した各タイルT1〜T4のサイズは、必ずしも一体ではなく、例えば、タイル(T4)のサイズが小さく、短時間に処理が完了したコアCR4は、そのまま停止することになる。
すなわち、複数のコアを使用して画像処理を効率的に行うようにした画像処理技術としては、様々なものが考えられるが、近年の画面サイズの増大や高精細化と相俟って、例えば、復号化の処理順番等において、コアの待ち合わせ時間が生じている。このようなコアの待ち合わせ時間は、全体としての画像処理の遅延を招くことになる。
以下、画像処理装置および画像処理方法の実施例を、添付図面を参照して詳述する。図16は、本実施形態に係る画像処理装置の一例を示すブロック図である。ここで、図16に示す画像処理装置は、図1を参照して説明した復号器3に対応するが、図16では、4つのコアCR1〜CR4に注目して描かれている。
図16に示されるように、本実施形態の画像処理装置(復号器)3は、例えば、HEVCストリーム等の画像ストリームIstmを受け取って復号化し、4K画像等の復号化された出力画像Ioutを生成して、外部メモリ5(復号画像格納領域5B)に出力する。
復号器3は、復号器3内の全体制御を行う演算処理装置(CPU:Central Processing Unit)300と、4つのコア(第1〜第4コア)CR1〜CR4を含む。CPU300は、画像ストリームIstmを受け取り、タイルおよび分割状況等を解析し、タイル毎およびCTBライン(画像ブロックライン)毎等に、第1〜第4コアCR1〜CR4に対する処理の振り分けを行う。
第1コアCR1は、全体制御を行うCPU300によって振り分けられたタイル或いはCTBラインの復号化処理を行う。また、第1コアCR1は、他の第2,第3および第4コアCR2,CR3およびCR4の処理状態を監視する。さらに、第1コアCR1は、後に詳述する、上端CTBライン処理の待ち合わせを検出すれば、上端ラインの応援処理を行う。
第2コアCR2は、CPU300によって振り分けられたタイル或いはCTBラインの復号化処理を行い、他の第1,第3および第4コアCR1,CR3およびCR4の処理状態を監視する。また、第2コアCR2は、上端CTBライン処理の待ち合わせを検出すれば、上端ラインの応援処理を行う。
第3コアCR3は、CPU300によって振り分けられたタイル或いはCTBラインの復号化処理を行い、他の第1,第2および第4コアCR1,CR2およびCR4の処理状態を監視する。また、第3コアCR3は、上端CTBライン処理の待ち合わせを検出すれば、上端ラインの応援処理を行う。
第4コアCR4は、CPU300によって振り分けられたタイル或いはCTBラインの復号化処理を行い、他の第1,第2および第3コアCR1,CR2およびCR3の処理状態を監視する。また、第4コアCR4は、上端CTBライン処理の待ち合わせを検出すれば、上端ラインの応援処理を行う。
外部メモリ5は、隣接メモリAMとして使用する隣接メモリ領域5A、および、復号器3により復号された4K画像等の出力画像Ioutを格納する復号画像格納領域5Bを含む。
ここで、隣接メモリ領域5Aは、第1〜第4コアCR1〜CR4との間でデータの読み出しおよび書き込みを行い、復号画像格納領域5Bは、第1〜第4コアCR1〜CR4により復号された画像を書き込む。
図17は、図16に示す画像処理装置に適用される第1実施例のコアの割り当て処理の一例を説明するためのフローチャートであり、使用コア(CORE)数=4とした場合の処理の一例を示すものである。
図17に示されるように、コアの割り当て処理が開始(START)すると、まず、ステップST11において、処理する画像データにタイル(Tile)分割があるかどうかを判定する。なお、図17において、割り当てを行う1COREは、第1コアCR1,第2コアCR2,第3コアCR3,第4コアCR4の各1つのコアに対応する。
また、割り当てを行う2COREは、例えば、CR1およびCR2、並びに、CR3およびCR4の各2つのコアに対応し、3COREは、例えば、CR1〜CR3またはCR2〜CR4の3つのコアに対応する。
ステップST11において、タイル分割がない(NO)と判定すると、ステップST17に進んで、図13を参照して説明したのと同様に、1つのタイルT0に対して4つのコアを割り当てる。すなわち、画像データ(タイルT0)において、1列目ライン1CORE(コア),2列目ライン1CORE,3列目ライン1CORE,4列目ライン1COREとして4つのコアを対応するラインに割り当てる。
ここで、例えば、1列目ラインの処理が完了したコアは、次に5列目ラインに割り当てられ、2列目ラインの処理が完了したコアは、次に6列目ラインに割り当てられ、そして、3列目ラインの処理が完了したコアは、次に7列目ラインに割り当てられる。すなわち、タイル分割がない場合には、4つのコア全てを1つのタイルT0で使用し、4つのコアでCTBの並列処理を行う。
一方、ステップST11において、タイル分割がある(YES)と判定すると、ステップST12に進んで、タイル分割が上下分割のみかどうかを判定する。ステップST12において、タイル分割が上下分割のみ(YES)と判定すると、ステップST18に進み、例えば、上側タイルT10の1列目ライン1CORE,2列目ライン1CORE,3列目ライン1CORE,4列目ライン1COREとして4つのコアを割り当てる。
ここで、例えば、上側タイルT10の1列目ラインの処理が完了したコアは、次に上側タイルT10の5列目ラインに割り当てられ、上側タイルT10の処理を行う。そして、上側タイルT10の処理が完了したら、例えば、下側タイルT20の1列目ライン1CORE,2列目ライン1CORE,3列目ライン1CORE,4列目ライン1COREとして4つのコアを割り当てる。
すなわち、上下分割のみの場合、例えば、4つのコア全てを上側タイルT10で使用し、4つのコアでCTBの並列動作を行う。そして、上側タイルT10の処理が完了したら、4つのコア全てを下側タイル(次のタイル)T20で使用し、4つのコアでCTBの並列動作を行う。
このように、上下分割の場合には、コアを分散して上下のタイルT10,T20に割り当てないことにより、上下方向の複数のタイルで並列処理を行う場合に求められる隣接メモリの容量増加(倍増)を招かないようにしている。換言すると、隣接メモリの容量を1ライン分のままとして処理を行い、回路規模の増大を防ぐようになっている。
次に、ステップST12において、タイル分割が上下分割のみではない(NO)と判定すると、ステップST13に進み、タイル内の分割数をカウントし、さらに、ステップST14に進む。
ステップST14では、横方向のタイル数が使用するコア数以上かどうか(横幅Tile数≧使用CORE数?)を判定し、横方向のタイル数が使用するコア数(4個)以上である(YES)と判定すると、ステップST23に進む。
例えば、横方向のタイル数が5の場合、コア数の4よりも多いので、横方向のタイル(上側における横方向のタイル)T11e〜T14eに対して、それぞれ1つのコアを割り当てる。
すなわち、上側における左から1番目のタイル(Tile1番目:T11e)1CORE,Tile2番目(T12e)1CORE,Tile3番目(T13e)1CORE,Tile4番目(T14e)1COREとして、4つのコアを割り当てる。なお、例えば、上側におけるTile1番目(T11e)の処理が完了したコアは、次に、上側におけるTile5番目(T15e)に割り当てられる。
また、ステップST14において、横方向のタイル数が使用するコア数以上ではない(NO)と判定すると、ステップST15に進み、横方向のタイル数が3かどうか(横幅3Tile?)を判定する。
ステップST15において、横方向のタイル数が3である(YES)と判定すると、ステップST22に進み、一番分割サイズ数が大きいタイルに対して2つのコアを割り当て、それ以外のタイル(2つのタイル)に対して1つのコアを割り当てる。すなわち、上側1ライン分の横方向の3つのタイルに対して、4つのコアの全てを割り当て、下側の3つのタイルに対しては、コアの割り当てを行わない。
なお、図17におけるステップ22の図では、3つのタイルT11d,T12d,T13dのサイズは全て等しいので、便宜的に左端(左上端)のタイルT11dに対して2COREを割り当てている。
また、ステップST15において、横方向のタイル数が3ではない(NO:横方向のタイル数が2)と判定すると、ステップST16に進み、各タイルに含まれる分割数(PU(Prediction Unit)数)を比較する。
ステップST16において、右側タイルのPUが左側タイルのPUよりも多い場合には、ステップST19に進んで、例えば、右側タイルT12aに3つのコア(右側Tile3CORE)を割り当て、左側タイルT11aに1つのコア(左側Tile1CORE)を割り当てる。すなわち、上側1ライン分の横方向の2つのタイルに対して、4つのコアの全てを割り当て、下側の2つのタイルに対しては、コアの割り当てを行わない。
また、ステップST16において、右側タイルのPUが左側タイルのPUよりも少ない場合には、ステップST20に進んで、例えば、右側タイルT12bに1つのコア(右側Tile1CORE)を割り当て、左側タイルT11bに3つのコア(左側Tile3CORE)を割り当てる。すなわち、上側1ライン分の横方向の2つのタイルに対して、4つのコアの全てを割り当て、下側の2つのタイルに対しては、コアの割り当てを行わない。
さらに、ステップST16において、右側タイルのPUと左側タイルのPUが均等な場合には、ステップST21に進んで、例えば、右側タイルT12cに2つのコア(右側Tile2CORE)を割り当て、左側タイルT11cに2つのコア(左側Tile2CORE)を割り当てる。すなわち、上側1ライン分の横方向の2つのタイルに対して、4つのコアの全てを割り当て、下側の2つのタイルに対しては、コアの割り当てを行わない。
なお、それぞれのステップST18〜ST23において、上側のタイル(T10,T11a〜T15e)の処理が完了した後、コアを下側のタイル(T20,T21a〜T25e)に割り当て、下側のタイルの処理を行うことになる。
このように、第1実施例によれば、タイルの分割が上下分割の場合には、コアを分散して上下のタイルに割り当てないため、上下方向の複数のタイルで並列処理を行うことがなく、隣接メモリの容量を1ライン分のままとして処理を行うことができる。
図18は、図16に示す画像処理装置に適用される第2実施例のコアの割り当て処理を説明するための図であり、待ち合わせ処理を回避(低減)する処理を説明するためのものである。なお、図18は、例えば、上述した図17におけるステップST17(ST18)における1つのタイルの処理に4つのコアを使用する場合を例として示している。
図17を参照して説明したように、タイルに対応したコアの割り当て(振り分け)を行った後、例えば、1つのタイルで2つ以上のコアを使用する場合、CTBラインの並列処理を行う。例えば、上側のCTBラインの分割数が多く、下側のCTBラインで待ち合わせ処理が発生した場合、上端CTBライン側の分割状況を判断し、上端CTBライン側の処理を行う。
図18に示されるように、4つのコアCR1〜CR4は、対応するCTBラインL1〜L3に割り当てられる。ここで、図18は、最上端のCTBラインL1では、例えば、処理途中で極端に分割サイズが増えて、コアCR1がブロックBp0の生成が完了していないため、上から2番目のCTBラインL2を処理するコアCR2が待たされている様子を示す。
すなわち、2番目のCTBラインL2を処理するコアCR2が待たされると、それ以降の3番目のCTBラインL3を処理するコアCR3および4番目のCTBラインL4を処理するコアCR4も待たされることになる。
そのため、本第2実施例のコアの割り当て処理は、未だ処理が完了していないブロックBp0に対して、本来のCTBラインL1を処理するコアCR1に加えて、ブロックBp0の処理が完了しないと待たされるコアCR2〜CR4も割り当てられるようになっている。
すなわち、上側のCTBの処理が完了するまで下側CTBの処理を開始するのは困難なため、待ち合わせで停止しているコアがあれば、その停止している時間で上側CTBの処理を助けるようになっている。
換言すると、2番目以降のCTBラインL2〜L4を処理する下側コアCR2〜CR4が待たされている状態と、最上端のCTBラインL1で並列処理動作が可能な状態を判定し、例えば、最上端CTBラインL1の分割が多いCTBの処理を最優先で処理する。
例えば、ブロックBp0において、コアCR1をCR1a,CR1bのように処理させ、コアCR2をCR2a,CR2bのように処理させ、コアCR3をCR3a,CR3bのように処理させ、コアCR4をCR4aおよびCR4bのように処理させる。
なお、4つのコアCR1〜CR4によるブロックBp0の処理が完了した後、例えば、コアCR1は、最上端のCTBラインL1におけるBp0の次のブロックBp1を処理する。また、Bp0の処理が完了した後、例えば、コアCR2は、本来の処理に戻り、2番目のCTBラインL2におけるブロックBp2を処理する。
このように、第2実施例によれば、処理が待たされるコアは、その待たされる原因となっている優先的に処理するブロックに割り当てられるため、全体としての処理時間を低減することが可能になる。
図19,図21および図23は、第2実施例のコアの割り当て処理の一例を説明するためのフローチャートであり、図20,図22および図24は、それぞれ図19,図21および図23に示すフローチャートにおける処理を説明するための図である。
すなわち、図19は、64×64(画素:CTB)以下の処理を示し、図21は、図19におけるステップST39の32×32以下の処理を示し、図23は、図21におけるステップST51の16×16以下の処理を示す。
図19に示されるように、第2実施例のコアの割り当て処理(64×64以下)が開始すると、ステップST31において、CTB(Coding Tree Block:現ブロック)のサイズを判定する。
ステップST31において、現ブロックのサイズが64×64であると判定すると、ステップST34に進み、64×32であると判定すると、ステップST32に進み、32×64であると判定すると、ステップST33に進む。なお、ステップST31において、現ブロックのサイズが32×32以下であると判定すると、ステップST39に進む。
ステップST34では、図20(a)に示されるように、現在処理しているブロック(現CTB)Bp11の次に処理するブロックは、右側のブロック(次CTB)Bp12だけになり、下のブロックは、同時処理不可(×)になる。
ステップST32では、現ブロックのサイズがPart0(PU=0)かどうかを判定し、現ブロックのサイズ(64×32)がPart0である(YES)と判定すると、ステップST35に進み、Part0ではない(NO)と判定すると、ステップST36に進む。
また、ステップST33でも、Part0かどうかを判定し、現ブロック(32×64)のサイズがPart0である(YES)と判定すると、ステップST37に進み、Part0ではない(NO)と判定すると、ステップST38に進む。
ステップST35では、図20(b)に示されるように、Bp21(現CTB)の次に処理するブロックは、右側のブロック(次CTB)Bp23だけでなく、下のブロックBp22も可能であり、同時にBp22,Bp23の両方を処理することができる。すなわち、例えば、第1コアCR1によりブロックBp23を処理すると共に、第2コアCR2によりブロックBp22を並列に処理することが可能になる。
なお、ステップST36〜ST38では、図20(c)〜図20(e)に示されるように、ステップST34と同様に、現在処理しているブロックBp24,Bp31,Bp33の右側のブロックBp25,Bp32,Bp34だけになり、下のブロックは、同時処理不可(×)になる。
図21に示されるように、図19におけるステップST39の処理(32×32以下)の処理が開始すると、ステップST41において、現ブロック(CTB)のサイズを判定する。
ステップST41において、現ブロックのサイズが32×32であると判定すると、ステップST44に進み、32×16であると判定すると、ステップST42に進み、16×32であると判定すると、ステップST43に進む。なお、ステップST41において、現ブロックのサイズが16×16以下であると判定すると、ステップST51に進む。
ステップST44では、現ブロックのサイズが、Part0(PU=0)かどうかを判定し、ステップST45では、Part1(PU=1)かどうかを判定し、ステップST46では、Part2(PU=2)かどうかを判定する。
そして、現ブロックのサイズが、Part0と判定すると、ステップST47に進み、Part1と判定すると、ステップST48に進み、Part2と判定するすると、ステップST49に進み、Part0〜Part2ではないと判定すると、ステップST50に進む。
ここで、図22(a)に示されるように、現ブロックのサイズが、Part2およびPart0〜Part2以外のときは、右側のブロックのみで、下のブロックは並列処理(×)である。しかしながら、現ブロックのサイズが、Part0およびPart1のときは、右側のブロックと共に、下側のブロックも並列的に処理することが可能なのが分かる。
なお、図22(b)は、ステップST42でPart0である(YES)と判定された場合の各処理に対応し、図22(c)は、ステップST42でPart0ではない(NO)と判定された場合の各処理に対応する。
さらに、図22(d)は、ステップST43でPart0である(YES)と判定された場合の各処理に対応し、図22(e)は、ステップST43でPart0ではない(NO)と判定された場合の各処理に対応する。
すなわち、図22(b)では、全ての場合で、並列処理が可能であり、図22(c)〜図22(e)では、2つの場合で並列処理が不可(×)であり、2つの場合で並列処理が可能なのが分かる。
図23に示されるように、図21におけるステップST51の処理(16×16以下)の処理が開始すると、ステップST61において、現ブロック(CTB)のサイズを判定する。
ステップST61において、現ブロックのサイズが16×16であると判定すると、ステップST64に進み、16×8であると判定すると、ステップST62に進み、8×16であると判定すると、ステップST63に進む。なお、ステップST61において、現ブロックのサイズが8×8以下であると判定すると、ステップST69に進む。
ステップST62において、Part0である(YES)と判定すると、ステップST65に進み、Part0ではない(NO)と判定すると、ステップST66に進む。また、ステップST63において、Part0である(YES)と判定すると、ステップST67に進み、Part0ではない(NO)と判定すると、ステップST68に進む。
ここで、図24(a)は、ステップST64以降の処理に対応し、図24(b)は、ステップST65以降の処理に対応し、図24(c)は、ステップST66以降の処理に対応する。また、図24(d)は、ステップST67以降の処理に対応し、図24(e)は、ステップST68以降の処理に対応する。
また、図24(a)および図24(c)〜図24(e)に示されるように、ステップST64およびST66〜ST68以下に処理では、各図における一番下の4つの場合を除き、右側のブロックおよび下のブロックの並列処理が可能なのが分かる。
さらに、図24(b)に示されるように、ステップST65以下に処理では、全ての場合で、右側のブロックおよび下のブロックの並列処理が可能なのが分かる。なお、ステップST69における現ブロックのサイズが8×8以下の処理としては、例えば、HEVCにおいては、4×8および8×4があるが、その説明は省略する。
このように、本第2実施例によれば、例えば、処理が待たされて停止しているコアが存在する場合には、その停止しているコアを使用して、複数のコアによる並列処理を行って、処理時間を低減することが可能になる。なお、並列処理に使用するコアは、1つに限定されず、停止しているコアが複数存在している場合には、複数のコアを使用することができるのはいうまでもない。
図25は、4つのコアによる並列処理を説明するための図である。なお、図25では、例えば、上述した第2実施例のように、処理が待たされて停止しているコアを使用して並列処理を行うことは考慮していない。
なお、図25は、CTBのサイズを64×64とし、全ブロックのサイズを8×8とした例を示し、処理の順番1では、第1コアCR1の1個のみで開始し、その後、次のサイクルの処理の順番2となる場合を示す。
また、処理位置『1』の状態では、並列動作が可能であり、第1コアCR1は、処理位置『1』から『4』へと処理を行い、処理の順番2では、第2コアCR2が処理位置『2』の処理を行う。このような処理を処理位置『0』から『63』まで繰り返して行うものとする。
図25に示されるように、このような処理を行うことにより、例えば、『0』〜『63』までの64サイクルの処理は、4つのコアCR1〜CR4を使用することにより22サイクルで完了することが可能なのが分かる。
ここで、サイクル[6]〜[16]では、4つのコアCR1〜CR4の全てが並列動作し、サイクル[5],[17]および[18]では、3つのコア(CR1〜CR3またはCR2〜CR4)が並列動作する。また、サイクル[3],[4],[19]および[20]では、2つのコア(CR1,CR2またはCR3,CR4)が並列動作する。なお、サイクル[1],[2],[21]および[22]では、1つのコア(CR1またはCR4)が並列動作する。
図26および図27は、第2実施例のコアの割り当て処理の効果を説明するための図であり、図26は、第2実施例を適用しない場合の動作の一例を示し、図27は、第2実施例を適用した場合の動作の一例を示す。
ここで、図26および図27では、CTBラインL1〜L4に対して、基本的に、それぞれ第1コアCR1〜第4コアCR4が割り当てられ、さらに、図27では、上述した第2実施例の停止しているコアを使用した並列処理を行うようになっている。
図26と図27の比較から明らかなように、第2実施例を適用しない場合には、20サイクル要していた処理が、第2実施例を適用することにより、14サイクルに低減することができることが分かる。
すなわち、図26に示されるように、第2実施例を適用しない場合、複数のコアが同時(並列)に動作できるのは、例えば、CR13,CR23、CR114,CR214、CR215,CR315、CR216,CR316,CR416等のみである。
ここで、例えば、参照符号CR216は、第2コアCR2が16サイクル目で行うブロック処理を示し、CR316は、第3コアCR3が16サイクル目で行うブロック処理を示し、CR416は、第4コアCR4が16サイクル目で行うブロック処理を示す。
例えば、CTBラインL1において、細分化されたCTBブロックBpxを処理するとき、第2実施例を適用しない場合は、第1コアCR1のみで処理するため、L2〜L4を処理するコアCR2〜CR4は、待たされて停止するサイクルを含む。その結果、全ての処理を完了するまでに、20サイクルを要することになる。
これに対して、図27に示されるように、第2実施例を適用した場合、複数のコアが並列動作できるのは、例えば、CR13,CR23やCR210,CR310,CR410等だけでなく、さらに多くの並列処理を行うことができる。
すなわち、第2実施例を適用した場合は、例えば、CTBブロックBpxの処理を、CR15,CR35、CR26,CR36のように複数のコアで行い、さらに、他のCTBライン(CTB)の処理もCR25、CR16で並列に行うことができる。
その結果、全ての処理を完了するまでに、20サイクルから14サイクルに処理時間を短縮することが可能になる。これは、CTBブロックを細分化するサイズや使用するコアに応じて、より一層の処理時間の短縮が期待できる。
なお、上述した第1実施例および第2実施例の適用は、HEVC(H.265)に限定されるものではなく、複数のコア(プロセッサコア)を使用して画像を処理する様々な画像処理技術に対して適用することが可能である。
また、本実施例は、図1或いは図16を参照して説明したような復号器3に適用することができるが、例えば、図16に示す復号器3の演算処理装置(CPU)300が実行するプログラムとしても実施することが可能である。
以上、実施形態を説明したが、ここに記載した全ての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではない。また、明細書のそのような記載は、発明の利点および欠点を示すものでもない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
以上の実施例を含む実施形態に関し、さらに、以下の付記を開示する。
(付記1)
1つの画像データを分割した複数のタイルに対して割り当てられる複数のコアと、
分割された前記タイルに基づいて、前記複数のコアの割り当てを制御する演算処理装置と、を有する画像処理装置であって、
前記演算処理装置は、
前記画像データが第1方向および前記第1方向とは異なる第2方向において複数のタイルに分割されたとき、前記第2方向の1列分の複数のタイルに対して前記複数のコアの全てを割り当てる、
ことを特徴とする画像処理装置。
(付記2)
前記演算処理装置は、
前記複数のコアが割り当てられた前記1列分の複数のタイルと、前記第1方向に隣接するタイルに対しては、前記コアの割り当てを行わない、
ことを特徴とする付記1に記載の画像処理装置。
(付記3)
前記演算処理装置は、
前記第2方向におけるタイルの数が前記コアの数よりも小さいとき、前記第2方向において、第1のサイズを有するタイルに対して、第1の数のコアを割り当て、前記第1のサイズより大きい第2のサイズのタイルに対して、前記第1の数より大きい第2の数のコアを割り当てる、
ことを特徴とする付記2に記載の画像処理装置。
(付記4)
前記演算処理装置は、
前記第2方向におけるタイルの数が前記コアの数よりも小さいとき、前記第2方向において、タイルに含まれる分割数が第1の数であるタイルに対して、第2の数のコアを割り当て、タイルに含まれる分割数が前記第1の数より大きい第3の数であるタイルに対して、前記第2の数より大きい第4の数のコアを割り当てる、
ことを特徴とする付記2に記載の画像処理装置。
(付記5)
前記第1方向は、前記第1方向における少なくとも2つのタイルを同時に処理した場合、隣接メモリとして使用するメモリ容量の増加を招く方向である、
ことを特徴とする付記2乃至付記4のいずれか1項に記載の画像処理装置。
(付記6)
前記第1方向は、前記画像データの上下方向である、
ことを特徴とする付記2乃至付記5のいずれか1項に記載の画像処理装置。
(付記7)
前記第2方向は、前記第1方向と直交する方向である、
ことを特徴とする付記2乃至付記6のいずれか1項に記載の画像処理装置。
(付記8)
前記第2方向は、前記画像データの左右方向である、
ことを特徴とする付記2乃至付記7のいずれか1項に記載の画像処理装置。
(付記9)
1つの画像データを分割した複数の画像ブロックラインに対して割り当てられる複数のコアと、
前記複数のコアの割り当てを制御する演算処理装置と、を有する画像処理装置であって、
前記演算処理装置は、
第1コアによる先行する第1画像ブロックラインの処理が完了していないことで、後続の第2画像ブロックラインを処理する第2コアの動作が停止するとき、前記第2コアを、前記第1コアに加えて前記第1画像ブロックラインの処理に割り当てる、
ことを特徴とする画像処理装置。
(付記10)
前記演算処理装置は、
第1コアによる先行する第1画像ブロックラインの処理が完了していないことで、さらに後続の第3画像ブロックラインを処理する第3コアの動作が停止するとき、前記第3コアを、前記第1コアおよび前記第2コアに加えて前記第1画像ブロックラインの処理に割り当てる、
ことを特徴とする付記9に記載の画像処理装置。
(付記11)
1つの画像データを分割した複数のタイルに対して割り当てられる複数のコアと、
分割された前記タイルに基づいて、前記複数のコアの割り当てを制御する演算処理装置と、を有する画像処理装置であって、
前記演算処理装置は、
前記画像データが第1方向および前記第1方向とは異なる第2方向において複数のタイルに分割されたとき、前記第2方向の1列分の複数のタイルに対して前記複数のコアの全てを割り当て、
前記1列分の複数のタイルの1つに複数のコアを割り当てたとき、前記複数のコアが割り当てられたタイルを分割した複数の画像ブロックラインに対して、前記複数のコアの割り当てを制御し、
第1コアによる先行する第1画像ブロックラインの処理が完了していないことで、後続の第2画像ブロックラインを処理する第2コアの動作が停止するとき、前記第2コアを、前記第1コアに加えて前記第1画像ブロックラインの処理に割り当てる、
ことを特徴とする画像処理装置。
(付記12)
前記画像処理装置は、前記画像データに基づいたインター予測を行って画像を復号化する復号器である、
ことを特徴とする付記1乃至付記11のいずれか1項に記載の画像処理装置。
(付記13)
1つの画像データを複数のタイルに分割し、分割されたタイルに対して複数のコアを割り当てて画像処理を行う画像処理方法であって、
前記画像データが第1方向および前記第1方向とは異なる第2方向において複数のタイルに分割されたとき、前記第2方向の1列分の複数のタイルに対して前記複数のコアの全てを割り当てる、
ことを特徴とする画像処理方法。
(付記14)
さらに、
前記複数のコアが割り当てられた前記1列分の複数のタイルと、前記第1方向に隣接するタイルに対しては、前記コアの割り当てを行わない、
ことを特徴とする付記13に記載の画像処理方法。
(付記15)
1つの画像データを複数の画像ブロックラインに分割し、分割された画像ブロックラインに対して複数のコアを割り当てて画像処理を行う画像処理方法であって、
第1コアによる先行する第1画像ブロックラインの処理が完了していないことで、後続の第2画像ブロックラインを処理する第2コアの動作が停止するとき、前記第2コアを、前記第1コアに加えて前記第1画像ブロックラインの処理に割り当てる、
ことを特徴とする画像処理方法。
(付記16)
1つの画像データを複数のタイルに分割し、分割されたタイルに対して複数のコアを割り当てて画像処理を行う画像処理方法であって、
前記画像データが第1方向および前記第1方向とは異なる第2方向において複数のタイルに分割されたとき、前記第2方向の1列分の複数のタイルに対して前記複数のコアの全てを割り当て、
前記1列分の複数のタイルの1つに複数のコアを割り当てたとき、前記複数のコアが割り当てられたタイルを分割した複数の画像ブロックラインに対して、前記複数のコアの割り当てを制御し、
第1コアによる先行する第1画像ブロックラインの処理が完了していないことで、後続の第2画像ブロックラインを処理する第2コアの動作が停止するとき、前記第2コアを、前記第1コアに加えて前記第1画像ブロックラインの処理に割り当てる、
ことを特徴とする画像処理方法。
(付記17)
1つの画像データを分割した複数のタイルに対して割り当てられる複数のコアと、分割された前記タイルに基づいて、前記複数のコアの割り当てを制御する演算処理装置と、を有する画像処理装置の画像処理プログラムであって、
前記演算処理装置に、
前記画像データが第1方向および前記第1方向とは異なる第2方向において複数のタイルに分割されたとき、前記第2方向の1列分の複数のタイルに対して前記複数のコアの全てを割り当てる、
処理を実行させる、ことを特徴とする画像処理プログラム。
(付記18)
1つの画像データを分割した複数のタイルに対して割り当てられる複数のコアと、分割された前記タイルに基づいて、前記複数のコアの割り当てを制御する演算処理装置と、を有する画像処理装置の画像処理プログラムであって、
前記演算処理装置に、
第1コアによる先行する第1画像ブロックラインの処理が完了していないことで、後続の第2画像ブロックラインを処理する第2コアの動作が停止するとき、前記第2コアを、前記第1コアに加えて前記第1画像ブロックラインの処理に割り当てる、
処理を実行させる、ことを特徴とする画像処理プログラム。
(付記19)
1つの画像データを分割した複数のタイルに対して割り当てられる複数のコアと、分割された前記タイルに基づいて、前記複数のコアの割り当てを制御する演算処理装置と、を有する画像処理装置の画像処理プログラムであって、
前記演算処理装置に、
前記画像データが第1方向および前記第1方向とは異なる第2方向において複数のタイルに分割されたとき、前記第2方向の1列分の複数のタイルに対して前記複数のコアの全てを割り当て、
前記1列分の複数のタイルの1つに複数のコアを割り当てたとき、前記複数のコアが割り当てられたタイルを分割した複数の画像ブロックラインに対して、前記複数のコアの割り当てを制御し、
第1コアによる先行する第1画像ブロックラインの処理が完了していないことで、後続の第2画像ブロックラインを処理する第2コアの動作が停止するとき、前記第2コアを、前記第1コアに加えて前記第1画像ブロックラインの処理に割り当てる、
処理を実行させる、ことを特徴とする画像処理プログラム。
1 符号器
3 復号器
5 外部メモリ
5A 隣接メモリ領域
5B 復号画像格納領域
10 CTB分割部
11 減算器
12 直交変換量子化部
13 エントロピー符号化
14 逆量子化逆直交変換部
15 予測モード選択部
16 加算器
17 動きベクトル検出部
18 フレーム間予測部
19 フレーム内予測部
20 現フレームバッファ
21 過去フレームバッファ
22 フレームバッファ管理部
23 デブロッキングフィルタ
30 エントロピー復号化部
31 逆量子化逆直交変換部
32 加算器
33 予測モード選択部
34 現フレームバッファ
35 フレーム内予測部
36 フレーム間予測部
37 デブロッキングフィルタ
38 フレームバッファ管理部
39 過去フレームバッファ
50 デブロッキングフィルタ用一時メモリ
51 フレーム間予測部用一時メモリ
300 演算処理装置(CPU)

Claims (10)

  1. 1つの画像データを分割した複数のタイルに対して割り当てられる複数のコアと、
    分割された前記タイルに基づいて、前記複数のコアの割り当てを制御する演算処理装置と、を有する画像処理装置であって、
    前記演算処理装置は、
    前記画像データが第1方向および前記第1方向とは異なる第2方向において複数のタイルに分割されたとき、前記第2方向の1列分の複数のタイルに対して前記複数のコアの全てを割り当てる、
    ことを特徴とする画像処理装置。
  2. 前記演算処理装置は、
    前記複数のコアが割り当てられた前記1列分の複数のタイルと、前記第1方向に隣接するタイルに対しては、前記コアの割り当てを行わない、
    ことを特徴とする請求項1に記載の画像処理装置。
  3. 前記演算処理装置は、
    前記第2方向におけるタイルの数が前記コアの数よりも小さいとき、前記第2方向において、第1のサイズを有するタイルに対して、第1の数のコアを割り当て、前記第1のサイズより大きい第2のサイズのタイルに対して、前記第1の数より大きい第2の数のコアを割り当てる、
    ことを特徴とする請求項2に記載の画像処理装置。
  4. 前記演算処理装置は、
    前記第2方向におけるタイルの数が前記コアの数よりも小さいとき、前記第2方向において、タイルに含まれる分割数が第1の数であるタイルに対して、第2の数のコアを割り当て、タイルに含まれる分割数が前記第1の数より大きい第3の数であるタイルに対して、前記第2の数より大きい第4の数のコアを割り当てる、
    ことを特徴とする請求項2に記載の画像処理装置。
  5. 1つの画像データを分割した複数の画像ブロックラインに対して割り当てられる複数のコアと、
    前記複数のコアの割り当てを制御する演算処理装置と、を有する画像処理装置であって、
    前記演算処理装置は、
    第1コアによる先行する第1画像ブロックラインの処理が完了していないことで、後続の第2画像ブロックラインを処理する第2コアの動作が停止するとき、前記第2コアを、前記第1コアに加えて前記第1画像ブロックラインの処理に割り当てる、
    ことを特徴とする画像処理装置。
  6. 前記演算処理装置は、
    第1コアによる先行する第1画像ブロックラインの処理が完了していないことで、さらに後続の第3画像ブロックラインを処理する第3コアの動作が停止するとき、前記第3コアを、前記第1コアおよび前記第2コアに加えて前記第1画像ブロックラインの処理に割り当てる、
    ことを特徴とする請求項5に記載の画像処理装置。
  7. 1つの画像データを分割した複数のタイルに対して割り当てられる複数のコアと、
    分割された前記タイルに基づいて、前記複数のコアの割り当てを制御する演算処理装置と、を有する画像処理装置であって、
    前記演算処理装置は、
    前記画像データが第1方向および前記第1方向とは異なる第2方向において複数のタイルに分割されたとき、前記第2方向の1列分の複数のタイルに対して前記複数のコアの全てを割り当て、
    前記1列分の複数のタイルの1つに複数のコアを割り当てたとき、前記複数のコアが割り当てられたタイルを分割した複数の画像ブロックラインに対して、前記複数のコアの割り当てを制御し、
    第1コアによる先行する第1画像ブロックラインの処理が完了していないことで、後続の第2画像ブロックラインを処理する第2コアの動作が停止するとき、前記第2コアを、前記第1コアに加えて前記第1画像ブロックラインの処理に割り当てる、
    ことを特徴とする画像処理装置。
  8. 1つの画像データを複数のタイルに分割し、分割されたタイルに対して複数のコアを割り当てて画像処理を行う画像処理方法であって、
    前記画像データが第1方向および前記第1方向とは異なる第2方向において複数のタイルに分割されたとき、前記第2方向の1列分の複数のタイルに対して前記複数のコアの全てを割り当てる、
    ことを特徴とする画像処理方法。
  9. 1つの画像データを複数の画像ブロックラインに分割し、分割された画像ブロックラインに対して複数のコアを割り当てて画像処理を行う画像処理方法であって、
    第1コアによる先行する第1画像ブロックラインの処理が完了していないことで、後続の第2画像ブロックラインを処理する第2コアの動作が停止するとき、前記第2コアを、前記第1コアに加えて前記第1画像ブロックラインの処理に割り当てる、
    ことを特徴とする画像処理方法。
  10. 1つの画像データを複数のタイルに分割し、分割されたタイルに対して複数のコアを割り当てて画像処理を行う画像処理方法であって、
    前記画像データが第1方向および前記第1方向とは異なる第2方向において複数のタイルに分割されたとき、前記第2方向の1列分の複数のタイルに対して前記複数のコアの全てを割り当て、
    前記1列分の複数のタイルの1つに複数のコアを割り当てたとき、前記複数のコアが割り当てられたタイルを分割した複数の画像ブロックラインに対して、前記複数のコアの割り当てを制御し、
    第1コアによる先行する第1画像ブロックラインの処理が完了していないことで、後続の第2画像ブロックラインを処理する第2コアの動作が停止するとき、前記第2コアを、前記第1コアに加えて前記第1画像ブロックラインの処理に割り当てる、
    ことを特徴とする画像処理方法。
JP2015102785A 2015-05-20 2015-05-20 画像処理装置および画像処理方法 Active JP6613618B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015102785A JP6613618B2 (ja) 2015-05-20 2015-05-20 画像処理装置および画像処理方法
US15/081,554 US10743009B2 (en) 2015-05-20 2016-03-25 Image processing apparatus and image processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015102785A JP6613618B2 (ja) 2015-05-20 2015-05-20 画像処理装置および画像処理方法

Publications (2)

Publication Number Publication Date
JP2016220026A true JP2016220026A (ja) 2016-12-22
JP6613618B2 JP6613618B2 (ja) 2019-12-04

Family

ID=57325823

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015102785A Active JP6613618B2 (ja) 2015-05-20 2015-05-20 画像処理装置および画像処理方法

Country Status (2)

Country Link
US (1) US10743009B2 (ja)
JP (1) JP6613618B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020105069A1 (en) * 2018-11-21 2020-05-28 Datalogic Ip Tech S.R.L. Image multiprocessing method for vision systems

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008079170A (ja) * 2006-09-25 2008-04-03 Sony Corp 画像データ処理装置、画像データ処理方法、画像データ処理方法のプログラム及び画像データ処理方法のプログラムを記録した記録媒体
US20130188701A1 (en) * 2012-01-19 2013-07-25 Qualcomm Incorporated Sub-block level parallel video coding
JP2014011634A (ja) * 2012-06-29 2014-01-20 Canon Inc 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
JP2014011638A (ja) * 2012-06-29 2014-01-20 Canon Inc 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
JP2015526969A (ja) * 2012-06-29 2015-09-10 クゥアルコム・インコーポレイテッドQualcomm Incorporated タイル及び波面並列処理

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02242485A (ja) 1989-03-16 1990-09-26 Fujitsu Ltd 画像処理装置
JPH0844678A (ja) 1994-07-29 1996-02-16 Canon Inc 画像処理装置及びシステム
JP2003051019A (ja) 2001-08-08 2003-02-21 Canon Inc 画像処理装置、画像処理方法、画像処理プログラム及び記憶媒体
TW200746655A (en) * 2005-11-18 2007-12-16 Sony Corp Encoding device and method, decoding device and method, and transmission system
JP2011167857A (ja) 2010-02-16 2011-09-01 Ricoh Co Ltd 画像形成装置、画像形成方法、および画像形成プログラム
US8738860B1 (en) * 2010-10-25 2014-05-27 Tilera Corporation Computing in parallel processing environments
KR20150057790A (ko) * 2013-11-20 2015-05-28 삼성전자주식회사 웨이브-프런트 어프로치에 기초한 비디오 프레임의 병렬 처리 방법
JP2016219913A (ja) * 2015-05-15 2016-12-22 富士通株式会社 画像符号化装置、画像符号化方法および画像符号化プログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008079170A (ja) * 2006-09-25 2008-04-03 Sony Corp 画像データ処理装置、画像データ処理方法、画像データ処理方法のプログラム及び画像データ処理方法のプログラムを記録した記録媒体
US20130188701A1 (en) * 2012-01-19 2013-07-25 Qualcomm Incorporated Sub-block level parallel video coding
JP2014011634A (ja) * 2012-06-29 2014-01-20 Canon Inc 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
JP2014011638A (ja) * 2012-06-29 2014-01-20 Canon Inc 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
JP2015526969A (ja) * 2012-06-29 2015-09-10 クゥアルコム・インコーポレイテッドQualcomm Incorporated タイル及び波面並列処理

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
都市 雅彦他: "CMPアーキテクチャを導入したマルチメディア処理向けVLIWプロセッサ", 情報処理学会研究報告, vol. 2006−ARC−168(16), JPN6019009516, 9 June 2006 (2006-06-09), JP, pages 第83−88頁 *

Also Published As

Publication number Publication date
JP6613618B2 (ja) 2019-12-04
US10743009B2 (en) 2020-08-11
US20160345008A1 (en) 2016-11-24

Similar Documents

Publication Publication Date Title
US10771809B2 (en) Picture prediction method and picture prediction apparatus
KR102017164B1 (ko) 영상 복호화 방법 및 장치
KR102060184B1 (ko) 픽쳐 예측 방법 및 관련 장치
CN101127902B (zh) 具有用于运动向量存储的地址管理机制的帧间预测处理器
TWI449432B (zh) 解碼端移動向量導出方法
WO2011046008A1 (ja) 動画像符号化装置、および、動画像復号装置
JP6267287B2 (ja) 動画像符号化装置、動画像復号装置、動画像符号化方法、動画像符号化方法及びプログラム
JP2015106747A (ja) 動画像符号化装置、動画像符号化方法及び動画像符号化用コンピュータプログラム
JP2022008349A (ja) 低減されたメモリアクセスを用いてfrucモードでビデオデータを符号化又は復号する方法及び装置
JP7323220B2 (ja) 大域的運動を伴うフレームにおける候補
JP2023531010A (ja) 符号化・復号方法、装置及びその機器
JP4764706B2 (ja) 動画像変換装置
JP5677576B2 (ja) 動画像復号化方法及び動画像符号化方法
JP6613618B2 (ja) 画像処理装置および画像処理方法
JPWO2016116984A1 (ja) 動画像符号化装置、動画像符号化方法および動画像符号化プログラム
JP2015165644A (ja) 動画像符号化装置及び動画像符号化方法
CN109905713B (zh) 针对hevc的编码加速方法、相关装置和设备
JP5265984B2 (ja) 画像符号化装置及び復号装置
JP2017069862A (ja) 動画像符号化装置、動画像符号化方法及び動画像符号化用コンピュータプログラム
CN111083490B (zh) 一种视频解码中运动补偿的方法及装置
CN102625095B (zh) 一种基于avs的帧间预测方法
JP5874461B2 (ja) データ処理方法,データ処理プログラム,及び画像圧縮装置
JP2005244845A (ja) 動画像処理装置
JP2016092736A (ja) 画像処理システムおよび画像処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180418

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190319

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190508

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: 20191008

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191021

R150 Certificate of patent or registration of utility model

Ref document number: 6613618

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150