(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024132391
(43)【公開日】2024-10-01
(54)【発明の名称】プログラム、画像処理方法及び画像処理装置
(51)【国際特許分類】
G06T 1/00 20060101AFI20240920BHJP
【FI】
G06T1/00 500A
【審査請求】未請求
【請求項の数】20
【出願形態】OL
(21)【出願番号】P 2023043132
(22)【出願日】2023-03-17
(71)【出願人】
【識別番号】302062931
【氏名又は名称】ルネサスエレクトロニクス株式会社
(74)【代理人】
【識別番号】100103894
【弁理士】
【氏名又は名称】家入 健
(72)【発明者】
【氏名】木村 基
(72)【発明者】
【氏名】倉持 健太
(72)【発明者】
【氏名】大林 雄次
【テーマコード(参考)】
5B057
【Fターム(参考)】
5B057BA02
5B057CA12
5B057CA16
5B057CB12
5B057CB16
5B057CC02
5B057CH09
(57)【要約】
【課題】画像を分割してフィルタ処理を行う場合の効率の低下を抑制する。
【解決手段】実施形態に係る画像処理装置10は、入力画像データを、第1分割画像データと、画像処理に使用されるカーネルのサイズに応じた、第1分割画像データとの所定の重なり領域を有する第2分割画像データとを含む複数の分割画像データに分割する画像分割部1と、第1分割画像データのうち、第2分割画像データに対する画像処理を行う際に再利用される第1再利用データを決定する再利用データ決定部2と、メモリにおいて、第1分割画像データに対して画像処理を行うことによって得られた第1分割画像の第1処理後データを、第1再利用データを格納した領域を除いた領域に格納し、第1再利用データを格納した領域に隣接するように第2分割画像データを格納する領域を割り当てるメモリ管理部3とを備える。
【選択図】
図1
【特許請求の範囲】
【請求項1】
入力画像データを、第1分割画像データと、画像処理に使用されるカーネルのサイズに応じた、前記第1分割画像データとの所定の重なり領域を有する第2分割画像データとを含む複数の分割画像データに分割する処理と、
前記第1分割画像データのうち、第2分割画像データに対する画像処理を行う際に再利用される第1再利用データを決定する処理と、
メモリにおいて、前記第1分割画像データに対して前記画像処理を行うことによって得られた第1分割画像の第1処理後データを、前記第1再利用データを格納した領域を除いた領域に格納し、前記第1再利用データを格納した領域に隣接するように前記第2分割画像データを格納する領域を割り当てる処理と、
をコンピュータに実行させる、
プログラム。
【請求項2】
前記第1分割画像の第1処理後データの少なくとも一部を、前記メモリの前記第1分割画像データが記憶された領域に上書きして格納する処理をさらにコンピュータに実行させる、
請求項1に記載のプログラム。
【請求項3】
前記第1分割画像の第1処理後データのうち、前記第2分割画像データに対して前記画像処理を行って第2分割画像の第1処理後データを生成したときに再利用される、第2再利用データを決定する処理と、
前記メモリにおいて、前記第1分割画像の第1処理後データに対して前記画像処理を行うことによって得られた第1分割画像の第2処理後データを、前記第1再利用データ及び前記第2再利用データを格納した領域を除いた領域に格納し、前記第2再利用データを格納した領域に隣接するように前記第2分割画像の第1処理後データを格納する領域を割り当てる処理と、
をさらにコンピュータに実行させる、
請求項1に記載のプログラム。
【請求項4】
前記第2分割画像の第1処理後データの少なくとも一部を、前記メモリの前記第2分割画像データが記憶された領域に上書きして格納する処理をさらにコンピュータに実行させる、
請求項3に記載のプログラム。
【請求項5】
前記第2再利用データは、前記第2分割画像の第1処理後データに対してさらに画像処理を行う際に用いられる、
請求項3に記載のプログラム。
【請求項6】
前記メモリにラップアラウンド方式で、前記第1分割画像データ及び当該第1分割画像データを画像処理したデータ、前記第2分割画像データ及び当該第2分割画像データを画像処理したデータを格納する処理をさらにコンピュータに実行させる、
請求項1に記載のプログラム。
【請求項7】
前記入力画像データは、第1画像データと第2画像データとを含み、
前記第1画像データと前記第2画像データとに対してそれぞれ、
前記複数の分割画像データに分割する処理と、
前記第1再利用データを決定する処理と、
前記第1再利用データを格納した領域に隣接するように前記第2分割画像データを格納する領域を割り当てる処理と、
を実行させ、
前記メモリの第1ラップアラウンド範囲に、前記第1画像データについての、前記第1分割画像データ及び当該第1分割画像データを画像処理したデータ、前記第2分割画像データ及び当該第2分割画像データを画像処理したデータを、ラップアラウンド方式で格納する処理と、
前記メモリの前記第1ラップアラウンド範囲と異なる第2ラップアラウンド範囲に、前記第2画像データについての、前記第1分割画像データ及び当該第1分割画像データを画像処理したデータ、前記第2分割画像データ及び当該第2分割画像データを画像処理したデータを、ラップアラウンド方式で格納する処理と、
をさらにコンピュータに実行させる、
請求項1に記載のプログラム。
【請求項8】
前記メモリの前記第1ラップアラウンド範囲及び前記第2ラップアラウンド範囲と異なる第3ラップアラウンド範囲に、前記第1画像データ及び前記第2画像データそれぞれの前記第1分割画像データを用いて生成した出力画像データをラップアラウンド方式で格納する処理をさらにコンピュータに実行させる、
請求項7に記載のプログラム。
【請求項9】
コンピュータが、
入力画像データを、第1分割画像データと、画像処理に使用されるカーネルのサイズに応じた、前記第1分割画像データとの所定の重なり領域を有する第2分割画像データとを含む複数の分割画像データに分割する処理と、
前記第1分割画像データのうち、第2分割画像データに対する画像処理を行う際に再利用される第1再利用データを決定する処理と、
メモリにおいて、前記第1分割画像データに対して前記画像処理を行うことによって得られた第1分割画像の第1処理後データを、前記第1再利用データを格納した領域を除いた領域に格納し、前記第1再利用データを格納した領域に隣接するように前記第2分割画像データを格納する領域を割り当てる処理と、
を実行する、
画像処理方法。
【請求項10】
コンピュータが、前記第1分割画像の第1処理後データの少なくとも一部を、前記メモリの前記第1分割画像データが記憶された領域に上書きして格納する処理をさらに実行する、
請求項9に記載の画像処理方法。
【請求項11】
コンピュータが、
前記第1分割画像の第1処理後データのうち、前記第2分割画像データに対して前記画像処理を行って第2分割画像の第1処理後データを生成したときに再利用される、第2再利用データを決定する処理と、
前記メモリにおいて、前記第1分割画像の第1処理後データに対して前記画像処理を行うことによって得られた第1分割画像の第2処理後データを、前記第1再利用データ及び前記第2再利用データを格納した領域を除いた領域に格納し、前記第2再利用データを格納した領域に隣接するように前記第2分割画像の第1処理後データを格納する領域を割り当てる処理と、
をさらに実行する、
請求項9に記載の画像処理方法。
【請求項12】
コンピュータが、
前記第2分割画像の第1処理後データの少なくとも一部を、前記メモリの前記第2分割画像データが記憶された領域に上書きして格納する処理をさらに実行する、
請求項11に記載の画像処理方法。
【請求項13】
コンピュータが、
前記第2分割画像の第1処理後データに対してさらに画像処理を行う際に前記第2再利用データを用いる、
請求項11に記載の画像処理方法。
【請求項14】
コンピュータが、前記メモリにラップアラウンド方式で、前記第1分割画像データ及び当該第1分割画像データを画像処理したデータ、前記第2分割画像データ及び当該第2分割画像データを画像処理したデータを格納する処理をさらに実行する、
請求項9に記載の画像処理方法。
【請求項15】
前記入力画像データは、第1画像データと第2画像データとを含み、
コンピュータが、
前記第1画像データと前記第2画像データとに対してそれぞれ、
前記複数の分割画像データに分割する処理と、
前記第1再利用データを決定する処理と、
前記第1再利用データを格納した領域に隣接するように前記第2分割画像データを格納する領域を割り当てる処理と、
を実行し、
前記メモリの第1ラップアラウンド範囲に、前記第1画像データについての、前記第1分割画像データ及び当該第1分割画像データを画像処理したデータ、前記第2分割画像データ及び当該第2分割画像データを画像処理したデータを、ラップアラウンド方式で格納する処理と、
前記メモリの前記第1ラップアラウンド範囲と異なる第2ラップアラウンド範囲に、前記第2画像データについての、前記第1分割画像データ及び当該第1分割画像データを画像処理したデータ、前記第2分割画像データ及び当該第2分割画像データを画像処理したデータを、ラップアラウンド方式で格納する処理と、
をさらに実行する、
請求項9に記載の画像処理方法。
【請求項16】
コンピュータが、
前記メモリの前記第1ラップアラウンド範囲及び前記第2ラップアラウンド範囲と異なる第3ラップアラウンド範囲に、前記第1画像データ及び前記第2画像データそれぞれの前記第1分割画像データを用いて生成した出力画像データをラップアラウンド方式で格納する処理をさらに実行する、
請求項15に記載の画像処理方法。
【請求項17】
入力画像データを、第1分割画像データと、画像処理に使用されるカーネルのサイズに応じた、前記第1分割画像データとの所定の重なり領域を有する第2分割画像データとを含む複数の分割画像データに分割する画像分割部と、
前記第1分割画像データのうち、第2分割画像データに対する画像処理を行う際に再利用される第1再利用データを決定する再利用データ決定部と、
メモリにおいて、前記第1分割画像データに対して前記画像処理を行うことによって得られた第1分割画像の第1処理後データを、前記第1再利用データを格納した領域を除いた領域に格納し、前記第1再利用データを格納した領域に隣接するように前記第2分割画像データを格納する領域を割り当てるメモリ管理部と、
を備える、
画像処理装置。
【請求項18】
前記第1分割画像の第1処理後データの少なくとも一部は、前記メモリの前記第1分割画像データが記憶された領域に上書きして格納される、
請求項17に記載の画像処理装置。
【請求項19】
前記入力画像データは、第1画像データと第2画像データとを含み、
前記第1画像データと前記第2画像データとに対してそれぞれ、
前記画像分割部が前記複数の分割画像データに分割し、
前記再利用データ決定部が前記第1再利用データを決定し、
前記メモリ管理部が前記第1再利用データを格納した領域に隣接するように前記第2分割画像データを格納する領域を割り当て、
前記メモリ管理部は、
前記メモリの第1ラップアラウンド範囲に、前記第1画像データについての、前記第1分割画像データ及び当該第1分割画像データを画像処理したデータ、前記第2分割画像データ及び当該第2分割画像データを画像処理したデータを、ラップアラウンド方式で格納し、
前記メモリの前記第1ラップアラウンド範囲と異なる第2ラップアラウンド範囲に、前記第2画像データについての、前記第1分割画像データ及び当該第1分割画像データを画像処理したデータ、前記第2分割画像データ及び当該第2分割画像データを画像処理したデータを、ラップアラウンド方式で格納する、
請求項17に記載の画像処理装置。
【請求項20】
前記メモリ管理部は、前記メモリの前記第1ラップアラウンド範囲及び前記第2ラップアラウンド範囲と異なる第3ラップアラウンド範囲に、前記第1画像データ及び前記第2画像データそれぞれの前記第1分割画像データを用いて生成した出力画像データをラップアラウンド方式で格納する、
請求項19に記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、画像処理方法及び画像処理装置に関する。
【背景技術】
【0002】
画像処理の分野において利用されるニューラルネットワークの1つに、畳み込みニューラルネットワーク(CNN:Convolution Neural Network)がある。例えば、運転支援システムや自動運転システム等に用いられる車載SoC(System on Chip)に搭載されるCNNアクセラレータIP(Intellectual Property)は、内蔵メモリ上に入力画像を読み込み、畳み込み演算や活性化関数の処理を繰り返し適用することで、入力画像から画像認識に必要な特徴量の抽出を行う。
【0003】
入力画像のサイズが、アクセラレータによって一度に処理できるサイズを上回る場合は画像を分割して処理する必要がある。例えば、特許文献1は、歪画像の歪み補正処理を行った後の画像データを内蔵メモリに記憶し、当該画像データを内蔵メモリから読み出してフィルタ処理及び画像縮小処理を行う技術を開示する。この技術では、内蔵メモリの容量を削減する場合、歪画像は分割して処理される。また、歪み画像が分割された後に歪み補正処理が行われるときは、フィルタ処理後に画像が小さくなることを考えて、分割した歪み画像の間に重なり領域ができるようにしている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
上述の通り、畳み込み演算をはじめとした、対象画素の周囲の画素を演算に使用するフィルタ処理を行う場合、出力画像は入力画像よりも縮小し、処理を繰り返すほど最終的な出力画像は小さくなる。画像を分割して処理を繰り返した最終的な出力画像が、画像を分割せずに処理した場合と同じになるようにするには、繰り返し行う処理の回数分だけ画像の分割境界よりも先の画素を余分に処理しなければならない。このため、内蔵メモリへのロードや演算処理にオーバーヘッドが発生して処理の効率が低下する。
【0006】
その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【0007】
本開示に係るプログラムは、入力画像データを、第1分割画像データと、画像処理に使用されるカーネルのサイズに応じた、前記第1分割画像データとの所定の重なり領域を有する第2分割画像データとを含む複数の分割画像データに分割する処理と、前記第1分割画像データのうち、第2分割画像データに対する画像処理を行う際に再利用される第1再利用データを決定する処理と、メモリにおいて、前記第1分割画像データに対して前記画像処理を行うことによって得られた第1分割画像の第1処理後データを、前記第1再利用データを格納した領域を除いた領域に格納し、前記第1再利用データを格納した領域に隣接するように前記第2分割画像データを格納する領域を割り当てる処理とをコンピュータに実行させる。
【0008】
本開示に係る画像処理方法は、コンピュータが、入力画像データを、第1分割画像データと、画像処理に使用されるカーネルのサイズに応じた、前記第1分割画像データとの所定の重なり領域を有する第2分割画像データとを含む複数の分割画像データに分割する処理と、前記第1分割画像データのうち、第2分割画像データに対する画像処理を行う際に再利用される第1再利用データを決定する処理と、メモリにおいて、前記第1分割画像データに対して前記画像処理を行うことによって得られた第1分割画像の第1処理後データを、前記第1再利用データを格納した領域を除いた領域に格納し、前記第1再利用データを格納した領域に隣接するように前記第2分割画像データを格納する領域を割り当てる処理とを実行する。
【0009】
本開示に係る画像処理装置は、入力画像データを、第1分割画像データと、画像処理に使用されるカーネルのサイズに応じた、前記第1分割画像データとの所定の重なり領域を有する第2分割画像データとを含む複数の分割画像データに分割する画像分割部と、前記第1分割画像データのうち、第2分割画像データに対する画像処理を行う際に再利用される第1再利用データを決定する再利用データ決定部と、メモリにおいて、前記第1分割画像データに対して前記画像処理を行うことによって得られた第1分割画像の第1処理後データを、前記第1再利用データを格納した領域を除いた領域に格納し、前記第1再利用データを格納した領域に隣接するように前記第2分割画像データを格納する領域を割り当てるメモリ管理部とを備える。
【発明の効果】
【0010】
本開示は、画像を分割してフィルタ処理を行う場合の効率の低下を抑制することが可能なプログラム、画像処理方法及び画像処理装置を提供することができる。
【図面の簡単な説明】
【0011】
【
図1】
図1は、実施形態1に係る画像処理装置の構成例を示すブロック図である。
【
図2】
図2は、実施形態1に係る画像処理方法の一例を説明する図である。
【
図3】
図3は、入力画像を3分割した第1分割画像を記憶部にロードした状態を示す図である。
【
図4】
図4は、第1分割画像に1回目の畳み込み演算を行うことによって得られた第1処理後データを記憶部に格納した状態を示す図である。
【
図5】
図5は、第1分割画像に2回目の畳み込み演算を行うことによって得られた第2処理後データを記憶部に格納した状態を示す図である。
【
図6】
図6は、入力画像を3分割した第2分割画像を記憶部にロードした状態を示す図である。
【
図7】
図7は、第2分割画像に1回目の畳み込み演算を行うことによって得られた第1処理後データを記憶部に格納した状態を示す図である。
【
図8】
図8は、第2分割画像に2回目の畳み込み演算を行うことによって得られた第2処理後データを記憶部に格納した状態を示す図である。
【
図9】
図9は、実施形態2に係る画像処理装置の構成例を示す図である。
【
図10】
図10は、実施形態2に係る画像処理方法の一例を説明する図である。
【発明を実施するための形態】
【0012】
以下、本開示の実施形態について、図面を参照しながら説明する。なお、図面は簡略的なものであるため、この図面の記載を根拠として本開示の技術的範囲を狭く解釈してはならない。また、各図面において、同一の要素には同一の符号が付されており、重複する説明は省略される。なお、説明の便宜上、各図面は実際の縮尺では描かれていないことに留意されたい。
【0013】
以下の実施形態では、便宜上その必要があるときは、複数のセクション又は実施形態に分割して説明する。ただし、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部又は全部の変形例、応用例、詳細説明、補足説明等の関係にある。また、以下の実施形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合及び原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
【0014】
さらに、以下の実施形態において、その構成要素(動作ステップ等も含む)は、特に明示した場合及び原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合及び原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似又は類似するもの等を含むものとする。このことは、上記数等(個数、数値、量、範囲等を含む)についても同様である。
【0015】
実施形態に係る画像処理装置は、一例として、畳み込みニューラルネットワーク(CNN)を用いた画像認識処理を行う画像認識アクセラレータに関する。まず、CNNについて説明する。CNNは、例えば画像データ等の、グリッド式のトポロジを有するデータを処理するためのフィードフォワードニューラルネットワークである。CNNは、処理対象の画像データにフィルタを適用して処理対象画像の特徴点を抽出する畳み込み処理層と、2次元配列の画像データを1次元配列データに変換し、処理対象の画像データが何を示しているものかを判断する全結合層とを有する。
【0016】
畳み込み処理層は、畳み込み層とプーリング層の2種類の層を交互に積み重ねた構造を有している。畳み込み層への入力画像データは、H×W×Cテンソルで表され得る。ここで、H、W、Cは、それぞれ入力画像データの高さ、幅及びチャネル数を示す。このような入力画像データに対して、畳み込み層では、カーネルと呼ばれるフィルタを用いた演算処理が実行され、特徴マップと呼ばれる中間画像データが生成される。生成された中間画像データは後続の層に送られ、さらに演算処理が実行される。
【0017】
上述したように、畳み込み処理を行う場合、出力画像は入力画像よりも縮小し、処理を繰り返すほど最終的な出力画像は小さくなる。
図11に、入力画像を分割することなく、畳み込み処理を2回行った時の出力画像のサイズを示している。例えば、カーネルサイズが3×3の場合、1回の畳み込み処理を行うごとに、出力画像は、入力画像の上下左右からそれぞれ1ラインずつ、すなわち、縦横でそれぞれ2ラインずつ減少する。したがって、畳み込み処理を2回行うと、入力画像の縦横が4ラインずつ減少する。
【0018】
画像を分割して処理する場合において、
図11の出力画像と同じサイズの出力画像を得るためには、畳み込み処理後に画像が小さくなることを考えて、分割した画像の間に重なり領域が必要となる。すなわち、繰り返し実行される畳み込み処理の回数分だけ、画像の分割境界よりも先の画素を余分に処理しなければならない。
【0019】
例えば、入力画像のサイズが100×100の場合に、3×3カーネルを用いて5回の畳み込み処理を行った場合について考える。この場合、まず、100×100の入力画像が内蔵メモリに読み込まれる。画像を分割しない場合、第1中間画像は98×98、第2中間画像は96×96、第3中間画像は94×94、第4中間画像は92×92となり、最終的な出力画像は90×90となる。この場合、内蔵メモリへのロードは、合計10000画素であり、畳み込み演算の回数は44220回となる。
【0020】
これに対し、画像を2分割した場合、内蔵メモリには、第1入力画像として100×55、第2入力画像として100×55のデータが読み込まれる。第1及び第2入力画像それぞれの、第1中間画像は98×53、第2中間画像は96×51、第3中間画像は94×49、第4中間画像は92×47となり、最終的な出力画像は90×45のデータを2つ合わせた90×90となる。この場合、内蔵メモリへのロードは合計11000画素であり、入力画像を分割しない場合と比較すると10%増加する。また、このときの畳み込み演算の回数は46140回であり、入力画像を分割しない場合と比較すると約4.3%増加する。
【0021】
このように、内蔵メモリへのロードや演算処理の回数が増加して処理の効率が低下すると、消費電力増大の原因となる。この問題は、畳み込み処理に限らず、平均化処理等の対象画素の周囲の画素を演算に使用する、他のフィルタ処理に関しても同様である。そこで、本発明者らは、画像データの読み出しや、演算処理の回数を削減するべく、以下の構成を考案した。
【0022】
実施形態1.
実施形態1に係る画像処理装置10について、
図1、2を参照して説明する。
図1は、実施形態1に係る画像処理装置の構成例を示すブロック図である。
図2は、実施形態1に係る画像処理方法の一例を説明する図である。
【0023】
図1に示すように、画像処理装置10は、畳み込みニューラルネットワークに関する処理のうち、入力画像に所定のカーネルを適用した畳み込み処理を行う。画像処理装置10は、外部から入力される処理対象の入力画像データを複数の分割画像データに分割して処理する。画像処理装置10は、少なくとも、画像分割部1、再利用データ決定部2、メモリ管理部3を備える。
【0024】
具体的には、画像処理装置10は、これらの構成に加えて、入力画像指定部11、画像処理種別指定部12、カーネル選択部13、転送条件決定部14、データ転送部15、記憶部16、演算処理部17を含み得る。なお、
図1に示す例では、画像処理装置10が利用する外付け部品の1つとして外部メモリ20が示されている。外部メモリ20は、例えば、フラッシュメモリ等の不揮発性メモリ、或いは、DDR-DRAM(Double Data Rate - Dynamic Random Access Memory)等の揮発性メモリである。外部メモリ20は、入力画像及び出力画像を格納する。
【0025】
入力画像指定部11は、処理対象の入力画像データのサイズ(H、W)、先頭アドレス及びデータ形式を指定し、指定した情報を画像分割部1に送信する。データ形式とは、データの記録方式であり、ファイル形式と称される場合もある。入力画像データのデータ形式は、例えば、JPG(Joint Photographic Experts Group)、GIF(Graphics Interchange Format)、PNG(Portable Network Graphics)等が挙げられる。
【0026】
画像処理種別指定部12は、処理対象の入力画像データに適用する画像処理の種別を指定し、指定した情報をカーネル選択部13及び演算処理部17に送信する。ここでは、画像処理種別指定部12は、画像処理の種別の一例として、3×3のカーネルによる畳み込み処理を2回行う処理が指定されたものとする。なお、入力画像指定部11、画像処理種別指定部12による各種指定は、外部から入力されてもよく、予め設定されていてもよい。
【0027】
カーネル選択部13は、画像処理種別指定部12により指定された画像処理の種別に応じて、演算に使用するカーネルサイズを選択する。例えば、カーネル選択部13は、特徴検出を行なうための適切な畳み込みカーネルサイズを選択することができる。ここでは、畳み込み処理を行う3×3のカーネルが選択される。
【0028】
画像分割部1は、入力画像データを、隣接する第1分割画像データと第2分割画像データとを含む複数の分割画像データに分割する。画像分割部1は、例えば、後に説明する、入力画像データを記憶する内蔵メモリのサイズ、畳み込み処理を実行する演算処理部17が1度に処理可能なデータ数の上限等のハードウェアに関する制限に基づいて、入力画像データを分割することができる。なお、入力画像データの分割方法は、これらの条件のうちの1つだけでなく、複数の組み合わせに基づいて決定されてもよい。
【0029】
また、カーネルのサイズは入力画像データの分割方法に影響するが、カーネルのサイズは入力画像のサイズに対して非常に小さい。このため、カーネルサイズは、内蔵メモリのサイズや、演算処理部17の処理能力等に基づいて入力画像データの大きな分割方法を決定した後に、複数の分割画像データの境界部分の画素数の調整や、後述する再利用データの計算といった、細かい分割方法の決定に使用され得る。
【0030】
図2に示すように、ここでは、記憶部16に格納可能な画像サイズの上限に応じて、入力画像が3分割される例について説明する。3分割された入力画像を、それぞれ第1分割画像、第2分割画像、第3分割画像とする。
【0031】
上述したように、画像を分割して処理する場合、畳み込み処理後に画像が小さくなることを考えて、分割した画像の間に重なり領域が必要となる。このため、第1分割画像と第2分割画像との間、及び、第2分割画像と第3分割画像との間には、畳み込み処理に用いられるカーネルのサイズや畳み込み処理の回数に応じた重なり領域が設けられる。実施形態1のように、入力画像を3分割して、3×3のカーネルを用い2回の畳み込み処理を行う場合、第1分割画像と第2分割画像との間、及び第2分割画像と第3分割画像との間には、それぞれ2ライン分の重なり領域を設ける必要がある。
【0032】
この場合、第1分割画像に対して1回目の畳み込み処理を行う際に内蔵メモリにロードしたデータと、第2分割画像の1回目の畳み込み処理を行う際にロードしたデータとの間には、重複してロードすることとなる2ライン分のロードオーバーヘッド部分が存在する。また、第1分割画像に対して1回目の畳み込み処理を行った後のデータの一部は、第2分割画像に対して1回目の畳み込み処理を行った後のデータと重複しており、演算オーバーヘッド部分が存在する。このロードオーバーヘッド部分、演算オーバーヘッド部分は、第2分割画像と第3分割画像との間にも同様に存在する。本実施形態では、このロードオーバーヘッド部分、演算オーバーヘッド部分を削減すべく以下の処理を行う。
【0033】
画像分割部1は、入力画像データのサイズと記憶部16に格納可能な画像サイズの上限とに応じて決定された入力画像の分割方法に基づき、各分割画像データのサイズを計算し、外部メモリ20から読み出すデータを決定することができる。
【0034】
再利用データ決定部2は、第1分割画像データの画像処理を行った後に第2分割画像データに対する画像処理を行う際に、第1分割画像データのうち再利用する第1再利用データを決定する。再利用データ決定部2は、入力画像の分割方法と各分割画像のサイズから、各分割画像データのうち、再利用する再利用データのサイズを計算することができる。
【0035】
再利用データのサイズは、
図2において説明したデータのロードや演算が重複する領域(オーバーヘッド部分)を考慮して決定することができる。再利用データのサイズは、注目画素と当該注目画素の処理に用いる周辺画素との位置関係に応じて、言い換えるとカーネルサイズに応じて定められる。例えば、畳み込み処理で用いられるカーネルサイズが3×3である場合、再利用データのサイズは、分割境界の下から2ラインとすることができる。なお、分割境界とは、
図2に示すように、最終的な出力画像において、それぞれの分割画像の処理後画像間の境界を指すものである。
【0036】
メモリ管理部3は、後述する内蔵メモリにおいて、第1分割画像データの第1再利用データを格納した領域に隣接するように第2分割画像データを格納する領域を割り当てる。メモリ管理部3は、転送条件決定部14の要求に応じて、記憶部16上に割り当てた領域の先頭アドレスを返すことができる。
【0037】
転送条件決定部14は、外部メモリ20と記憶部16との間及び記憶部16と演算処理部17との間のデータ転送に関する条件を決定する。具体的には、転送条件決定部14は、各分割画像データのサイズ又は再利用データのサイズを参照し、メモリ管理部3により割り当てられた記憶部16の領域に各データが格納されるように転送条件を決定する。
【0038】
データ転送部15は、転送条件決定部14から送信される転送条件に基づいて、外部メモリ20と記憶部16との間、及び、記憶部16と演算処理部17との間のデータ転送を実行する。演算処理部17は、画像処理種別指定部12において指定された画像処理のために必要な演算処理を行う。ここでは、演算処理部17は、上述した3×3カーネルを用いた畳み込み処理を行うことができる。
【0039】
記憶部16は、上述した分割画像データや、当該分割画像データに対して畳み込み処理を行うことによって得られた処理後データを一時的に格納する内蔵メモリである。記憶部16は、SRAM(Static Random Access Memory)等の揮発性メモリで構成され得る。
【0040】
画像処理装置10は、図示しない構成としてプロセッサ、メモリを備える。当該メモリには、実施形態1に係る画像処理方法の各処理をコンピュータに実行させるプログラムが記憶されている。当該プロセッサは、メモリからプログラムを読み出し、当該プログラムを実行する。これにより、プロセッサは、画像分割部1、再利用データ決定部2、メモリ管理部3を含む、
図1に示した各機能を実現することができる。
【0041】
上述した畳み込み処理のような、決まった演算を膨大な回数行う場合は、アクセラレータのように特定の演算をハードウェア的に処理することが好ましい。すなわち、画像処理装置10の各構成要素は、それぞれが専用のハードウェアで実現されていてもよい。これにより、演算時間を短縮することができる。また、各装置の各構成要素の一部又は全部は、汎用又は専用の回路(circuitry)、プロセッサ等やこれらの組合せによって実現されてもよい。これらは、単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。各装置の各構成要素の一部又は全部は、上述した回路等とプログラムとの組合せによって実現されてもよい。また、プロセッサとして、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、FPGA(Field-Programmable Gate Array)、量子プロセッサ(量子コンピュータ制御チップ)等を用いてもよい。
【0042】
また、画像処理装置10の各構成要素の一部又は全部が複数の装置や回路等により実現される場合には、複数の装置や回路等は、集中配置されてもよいし、分散配置されてもよい。各構成要素を実現する装置や回路等は、クライアントサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。また、画像処理装置10の機能がSaaS(Software as a Service)形式で提供されてもよい。
【0043】
次に、入力画像を分割して畳み込み処理を繰り返し実行する場合の、画像処理装置10の動作について説明する。
図3~
図8は、
図2に示す画像処理方法の流れにおいて、各処理にかかる画像データが記憶部16(内蔵メモリ)に格納された状態を示している。ここでは、一例として、入力画像データのサイズが100×148であり、入力画像を3分割して2回の畳み込み処理を行い、最終的な出力画像のサイズが96×144となるケースを想定する。また、記憶部16は、一例として、128画素の幅で64ライン分の2次元の記憶領域を有し、ラップアラウンド形式でデータを格納可能であるものとする。
【0044】
図3~8において、右に行くほどx方向のアドレスが増加し、下に行くほどy方向のアドレスが増加する。以下では、データの格納位置を(x、y)座標で示す。なお、記憶部16の記憶領域の態様はこれに限定されるものではない。例えば、記憶部16が1次元の記憶領域を有していてもよい。
【0045】
まず、入力画像指定部11が入力画像データのサイズと先頭アドレス、データ形式を指定し、画像処理種別指定部12がこれから行う画像処理の種別を指定する。上述の通り、ここでは、3×3のカーネルによる畳み込み処理を2回行う処理が指定されたものとする。これに基づき、カーネル選択部13は3×3のカーネルサイズを選択する。
【0046】
そして、画像分割部1は、入力画像データが記憶部16に格納可能か否かを判断する。画像分割部1は、入力画像データの分割が必要であると判断すると、
図2に示すように、入力画像を第1~第3分割画像データに3分割する。
図2において、入力画像の上から順に、第1分割画像をTile1、第2分割画像をTile2、第3分割画像をTile3とする。以下、第1分割画像データをTile1データ、第2分割画像データをTile2データ、第3分割画像データをTile3データとする。
【0047】
ここでは、Tile1~Tile3のいずれも、同じサイズ(100×52)に分割されるものとする。ただし、複数の分割画像のサイズは、必ずしも同じサイズである必要はない。例えば、複数の分割画像のうちの1つのみが他の分割画像より小さくても、大きくてもよいし、複数の分割画像のそれぞれが異なるサイズであってもよい。
【0048】
各Tileは、1回目の畳み込み処理を行うことで、100×52から98×50のサイズとなる。また、各Tileは、2回目の畳み込み処理を行うことで、98×50から96×48のサイズとなる。これから、再利用データ決定部2は、第1再利用データとして100×2、第2再利用データとして98×2のサイズを決定する。
【0049】
<Tile1の処理>
再利用データ決定部2が各再利用データのサイズを決定した後に、後続の処理が実行される。まず、Tile1データを外部メモリ20から記憶部16に読み込むために、メモリ管理部3は、記憶部16に処理対象のTile1データを格納する領域の割り当てを行う。Tile1の処理前の記憶部16には割り当てられた領域はないため、メモリ管理部3は、Tile1データの格納先として、記憶部16の先頭(0、0)から100×52画素分の領域を割り当てる。
【0050】
また、メモリ管理部3は、末尾の100×2画素分のデータをTile1第1再利用データとしてマークする。すなわち、メモリ管理部3は、記憶部16の(0、50)~(99、51)の領域に格納されるデータをTile1第1再利用データとする。転送条件決定部14は、メモリ管理部3により割り当てられた記憶部16の領域にTile1データが格納されるように、転送条件を決定する。
【0051】
データ転送部15は、この転送条件に基づいて、外部メモリ20からTile1データを読み出し、記憶部16上の割り当てられた領域に格納する。この、Tile1データを記憶部16にロードした状態が
図3に示される。この状態を、状態(A)と呼ぶ。状態(A)において、Tile1第1再利用データは破線の枠で示されている。Tile1第1再利用データは、外部メモリ20からロードされた入力画像データの再利用部分に相当する。
【0052】
そして、演算処理部17は、データ転送部15を用いて、記憶部16からTile1データを読み出して、3×3カーネルを用いた1回目の畳み込み処理に必要な演算を行い、Tile1第1処理後データを生成する。メモリ管理部3は、記憶部16にTile1第1処理後データを格納する領域の割り当てを行う。このとき、Tile1第1処理後データをTile1データと同じ位置((1、1)~(98、50))に格納すると、(0、50)~(99、51)に格納されているTile1第1再利用データが上書きされてしまう。
【0053】
そこで、Tile1第1処理後データは、記憶部16において、Tile1第1再利用データを格納した領域を除いた領域に格納される。これにより、Tile1第1再利用データの消失を防ぐことができる。このとき、Tile1第1処理後データの少なくとも一部を、Tile1データを格納した領域に上書きして格納することが好ましい。これにより、記憶部16の記憶容量を削減することができる。
【0054】
Tile1第1処理後データを記憶部16に格納した状態が
図4に示される。この状態を、状態(B)と呼ぶ。
図4に示すように、Tile1第1処理後データは、例えば、Tile1第1処理後データの処理前のTile1データと同じ位置((1、1)~(98、50))から1ライン分y方向に上にずらした(1、0)~(98、49)の領域に格納することができる。状態(B)において、Tile1第2再利用データが破線の枠で示されている。Tile1第2再利用データは、1回目の畳み込み処理を行うことによって得られた処理結果の再利用部分に相当する。
【0055】
また、メモリ管理部3は、Tile1第1処理後データの末尾の98×2画素分のデータをTile1第2再利用データとしてマークする。すなわち、メモリ管理部3は、記憶部16の(1、48)~(98、49)の領域に格納されるデータをTile1第2再利用データとする。
【0056】
転送条件決定部14は、メモリ管理部3により割り当てられた記憶部16の領域にTile1第1処理後データが格納されるように、転送条件を決定する。データ転送部15は、この転送条件に基づいて、Tile1第1処理後データを記憶部16上の割り当てられた領域に格納する。
【0057】
その後、演算処理部17は、データ転送部15を用いて、記憶部16からTile1第1処理後データを読み出して、3×3カーネルを用いた2回目の畳み込み処理に必要な演算を行い、Tile1第2処理後データを生成する。メモリ管理部3は、記憶部16にTile1第2処理後データを格納する領域の割り当てを行う。上述と同様に、Tile1第2処理後データをTile1第1処理後データと同じ位置に格納すると、Tile1第2再利用データが上書きされてしまう。
【0058】
そこで、Tile1第2処理後データは、記憶部16において、Tile1第1再利用データ及びTile1第2再利用データを格納した領域を除いた領域に格納される。また、Tile1第2処理後データの少なくとも一部を、Tile1第1処理後データを格納した領域に上書きして格納することが好ましい。これにより、記憶部16の記憶容量を削減することができる。
【0059】
転送条件決定部14は、メモリ管理部3により割り当てられた記憶部16の領域にTile1第2処理後データが格納されるように、転送条件を決定する。データ転送部15は、この転送条件に基づいて、Tile1第2処理後データを記憶部16上の割り当てられた領域に格納する。
【0060】
Tile1第2処理後データを記憶部16に格納した状態が
図5に示される。この状態を、状態(C)と呼ぶ。
図5に示すように、Tile1第2処理後データは、例えば、Tile1第2処理後データの処理前のTile1第1処理後データと同じ位置((2、1)~(97、48))から1ライン分y方向に上にずらした(2、0)~(97、47)の領域に格納することができる。
【0061】
なお、実施形態1では、2回の畳み込み処理で終了するため、Tile1第2処理後データには再利用データの設定を行わない。ただし、さらに処理を継続する場合は、上記と同様の処理を繰り返すことができる。例えば、記憶部16における処理後データの格納領域を、処理前データの格納領域より1ライン分y方向上にずらした領域とすることができる。
【0062】
その後、データ転送部15は、記憶部16に格納されたTile1第2処理後データを、外部メモリ20の出力画像を格納する領域の先頭96×48の部分に書き込む。これにより、Tile1に対する処理が終了する。
【0063】
<Tile2の処理>
Tile1の処理結果を外部メモリ20に格納した後は、Tile2の処理が実行される。2番目以降のTileの処理において、データを記憶部16に格納する際には、既に保存されている再利用データとの連結を行う必要がある。このため、メモリ管理部3は、記憶部16における処理対象のデータを格納する領域を、対応する再利用データの下端に隣接するアドレスから割り当てる。
【0064】
外部メモリ20から記憶部16に読み込むTiel2データについて考える。記憶部16にはすでに、ロードされた入力画像データの再利用部分であるTile1第1再利用データ、処理結果の再利用部分であるTile1第2再利用データが格納された状態である。従って、Tile2の1回目の畳み込み処理では、100×48のTiel2データの入力が必要であり、これにTile1第1再利用データを加えた100×50の画像データが処理対象となる。この100×50の画像データに畳み込み処理が実行されて、98×48のTile2第1処理後データが生成される。
【0065】
Tile2の2回目の畳み込み処理では、98×48のTile2第1処理後データに98×2のTile1第2処理後データを加えた、98×50の画像データが処理対象となる。この98×50の画像データに畳み込み処理が実行されて、96×48の第2処理後データが生成される。
【0066】
画像分割部1は、上述した入力画像データの分割方法を参照し、100×2の第1再利用データに連結する、100×48のTile2データを読み込むことを決定する。メモリ管理部3は、記憶部16にこのTile2データを格納する領域の割り当てを行う。上述したように、記憶部16は、128画素の幅で64ライン分の2次元の記憶領域を有し、ラップアラウンド形式でデータを格納可能である。このため、メモリ管理部3は、記憶部16のTile1第1再利用データ((0、50)~(99、51))の下端に隣接する、(0、52)~(99、63)の12ラインを、Tile2データの上側100×12の格納先として割り当てる。
【0067】
また、メモリ管理部3は、Tile2データの下側100×36の格納先として、記憶部16の先頭(0、0)~(99、35)の36ラインを割り当てる。このように、記憶部16の下端と上端の2か所にわたって合計48ライン分、100×48画素分の領域がTile2データの格納先となる。なお、データ転送部15は、これらの記憶部16の下端と上端に分かれた2つの領域をラップアラウンドして、連続した1つの領域としてアクセスすることができる。
【0068】
また、メモリ管理部3は、末尾の100×2画素分のデータをTile2第1再利用データとしてマークする。すなわち、メモリ管理部3は、記憶部16の(0、34)~(99、35)の領域に格納されるデータをTile2第1再利用データとする。転送条件決定部14は、メモリ管理部3により割り当てられた記憶部16の領域にTile2データが格納されるように、転送条件を決定する。データ転送部15は、この転送条件に基づいて、外部メモリ20からTile2データを読み出し、記憶部16上の割り当てられた領域に格納する。この、Tile2データを記憶部16にロードした状態が
図6に示される。この状態を、状態(D)と呼ぶ。状態(D)において、Tile2第1再利用データは破線の枠で示されている。
【0069】
そして、演算処理部17は、データ転送部15を用いて、記憶部16からTile2データを読み出して、3×3カーネルを用いた1回目の畳み込み処理に必要な演算を行い、Tile2第1処理後データを生成する。メモリ管理部3は、記憶部16にTile2第1処理後データを格納する領域の割り当てを行う。後続するTile2の2回目の畳み込み処理では、記憶部16の(1、48)~(98、49)のTile1第2再利用データを用いる。このため、メモリ管理部3は、Tile2第1処理後データの格納領域を、記憶部16のTile1第2再利用データの格納領域の下端に隣接する(1、50)~(98、63)の14ラインと、先頭ラインの(1、0)~(98、33)34ライン、合計48ラインに割り当てる。
【0070】
また、メモリ管理部3は、Tile2第1処理後データの末尾の98×2画素分のデータをTile2第2再利用データとしてマークする。すなわち、メモリ管理部3は、記憶部16の(1、32)~(98、33)の領域に格納されるデータをTile2第2再利用データとする。
【0071】
転送条件決定部14は、メモリ管理部3により割り当てられた記憶部16の領域にTile2第1処理後データが格納されるように、転送条件を決定する。データ転送部15は、この転送条件に基づいて、Tile2第1処理後データを記憶部16上の割り当てられた領域に格納する。Tile2第1処理後データを記憶部16に格納した状態が
図7に示される。この状態を、状態(E)と呼ぶ。状態(E)において、Tile2第2再利用データが破線の枠で示されている。
【0072】
その後、演算処理部17は、データ転送部15を用いて、記憶部16からTile2第1処理後データを読み出して、3×3カーネルを用いた2回目の畳み込み処理に必要な演算を行い、Tile2第2処理後データを生成する。メモリ管理部3は、記憶部16にTile2第2処理後データを格納する領域の割り当てを行う。Tile1第2処理後データは、記憶部16において、Tile2第1再利用データ及びTile2第2再利用データを格納した領域を除いた領域に格納され得る。また、Tile2第2処理後データの少なくとも一部を、Tile2第1処理後データを格納した領域に上書きして格納することが好ましい。
【0073】
転送条件決定部14は、メモリ管理部3により割り当てられた記憶部16の領域にTile2第2処理後データが格納されるように、転送条件を決定する。データ転送部15は、この転送条件に基づいて、Tile2第2処理後データを記憶部16上の割り当てられた領域に格納する。
【0074】
Tile2第2処理後データを記憶部16に格納した状態が
図8に示される。この状態を、状態(F)と呼ぶ。
図8に示すように、Tile2第2処理後データは、例えば、(2、48)~(97、63)の16ラインと、記憶部16の先頭ラインの(2、0)~(97、31)の32ラインの合計48ライン、96×48の領域に格納することができる。なお、上述したように、実施形態1では、2回の畳み込み処理で終了するため、Tile2第2処理後データには再利用データの設定を行わない。
【0075】
その後、データ転送部15は、記憶部16に格納されたTile2第2処理後データを、外部メモリ20の出力画像を格納する領域の中間の96×48の部分に書き込む。これにより、Tile2に対する処理が終了する。
【0076】
<Tile3の処理>
Tile3の処理については、再利用データを設定しないことを除いて、Tile2の処理と同様のため、説明を省略する。なお、データ転送部15は、記憶部16に格納されたTile3第2処理後データを、外部メモリ20の出力画像を格納する領域の終端96×48の部分に書き込む。これにより、画像を3分割して畳み込み処理を2回繰り返した場合に、画像を分割せずに処理した場合と同じサイズの最終的な出力画像を得ることができる。
【0077】
ここで、入力画像サイズをX×Yとし、Y方向にN個のTileに分割し、3×3カーネルによる畳み込み処理をC回繰り返す場合の畳み込み処理の回数、データロード量について説明する。
データを再利用しない場合、必要な畳み込み処理の回数Zは、以下の式(1)で表される。
【数1】
また、このときのデータロード量Lは、以下の式(2)で表される。
L=X×(Y+2×C) ・・・(2)
【0078】
一方、データを再利用する実施形態の場合、必要な畳み込み処理の回数Zは、以下の式(3)で表される。
【数2】
また、このときのデータロード量Lは、以下の式(4)で表される。
L=X×Y ・・・(4)
【0079】
例えば、100×100の画像データを2分割し、3×3のカーネルで畳み込み処理を5回行う場合、実施形態1に係る画像処理装置では、再利用データを用いない場合と比較して、内蔵メモリにロードする画素数が約9.1%減少し、また、畳み込み演算の回数が4.1%減少する。
【0080】
以上説明したように、実施形態1によれば、入力画像を隣接する第1及び第2分割画像に分割して、順次内蔵メモリに格納して画像処理を行う場合に、第1分割画像の処理を終えて第2分割画像の処理に移る際に、第1分割画像の処理の際にロードされたデータや画像処理により生成されたデータを内蔵メモリ上に残すことができる。第2分割画像を内蔵メモリにロードする、又は、繰り返し実行される画像処理を行う際には、内蔵メモリ上に残されたデータに隣接するようにデータを格納することで、外部からの再読み出しや再計算を行うことなく、この領域を含めた一連の画像データとして処理することが可能である。
【0081】
このように、記憶部16へのデータの配置を工夫することによって、記憶部16上のデータを再利用することができ、外部からの画像データの読み出しや計算の回数を削減できるため、CNNアクセルレータの処理性能の向上や消費電力の削減が可能となる。
【0082】
なお、入力画像データに対する1回目及び2回目の演算処理に、周辺画素の参照を行わず出力画像の縮小を伴わない演算が含まれていてもよい。出力画像の縮小を伴わない演算では、再利用データを設定することなく、記憶部16の処理対象の入力画像データが格納された領域に、出力画像データを書き込むことができる。
【0083】
実施形態2.
実施形態2に係る画像処理装置10aについて、
図9、10を参照して説明する。
図9は、実施形態2に係る画像処理装置の構成例を示すブロック図である。
図10は、実施形態2に係る画像処理方法の一例を説明する図である。実施形態2において、実施形態1と異なる点は、記憶部16に複数のラップアラウンド範囲を設定することが可能である点である。
【0084】
実施形態2では、実施形態1の
図1に示したデータ転送部15を、記憶部16に設定される複数のラップアラウンド範囲に、それぞれ異なるデータをラップアラウンド形式で格納するようにデータ転送を実行するデータ転送部15aに変更している。これにより、記憶部16内のデータが格納される領域は、複数の互いに重なり合わないラップアラウンド範囲に分割され得る。なお、転送条件決定部14aは、上述した転送条件を決定する機能に加えて、各データが格納されるラップアラウンド範囲を決定する機能が追加され得る。
【0085】
以下の説明では、入力される画像データは、それぞれ異なる第1画像データと第2画像データとを含むものとする。第1画像、第2画像のそれぞれに対して、複数の分割画像データに分割する処理と、再利用データを決定する処理と、再利用データを格納した領域に隣接するように後続の処理対象の分割画像データを格納する領域を割り当てる処理が実行される。例えば、第1画像と第2画像をそれぞれ3分割したTile1、Tile2、Tile3に分割して、実施形態1と同様に処理することができる。実施形態2では、第1画像データ、第2画像データに対して、それぞれ畳み込み処理を行うことによって得られた処理結果同士をさらに演算して、演算結果が生成される。
【0086】
このような場合、実施形態1の画像処理装置10では、ラップアラウンド範囲が固定されているため、記憶部16の一部に第1画像データの処理結果を格納したまま、第2画像データの繰り返し実行される一連の畳み込み処理を実行することができない。この場合、第1画像データと第2画像データの畳み込み処理結果を一旦外部メモリ20に出力し、画像間演算を行う際に再度読み込む必要があった。
【0087】
これに対し、実施形態2では、第1画像データと第2画像データの畳み込み処理結果の外部メモリ20への入出力を行わずに、効率的に画像間演算を行うことができる。
図10は、2枚の入力画像(第1画像、第2画像)に対して、それぞれ2回の畳み込み処理を行った後、その処理結果同士を画素単位で比較する処理を行う際の、記憶部16の状態の例を示す。
【0088】
図10に示す例は、第1画像、第2画像のTile2の処理結果を、記憶部16の第1、第2ラップアラウンド範囲にそれぞれ格納した状態を示している。すなわち、第1ラップアラウンド範囲には第1画像のTile2の第2処理後データが格納されており、第2ラップアラウンド範囲には第2画像のTile2の第2処理後データが格納されている。第1画像のTile2の第2処理後データは第1画像のTile2の出力画像であり、第2画像のTile2の第2処理後データは第2画像のTile2の出力画像である。
【0089】
第1及び第2ラップアラウンド範囲は、それぞれ実施形態1の
図8の記憶部16の状態に相当する。なお、
図10では、Tile2の第1再利用データ、第2再利用データの記載は省略されている。このように、記憶部16に、第1画像と第2画像のための異なるラップアラウンド範囲を設定できることで、第1画像と第2画像の処理を互いに影響せずに実施することができる。
【0090】
また、
図10に示す例では、第3ラップアラウンド範囲に、第1画像と第2画像それぞれのTile2第2処理後データを比較する処理を行うことによって得られた演算結果が格納され得る。具体的には、演算処理部17は、データ転送部15aを用いて、記憶部16の第1ラップアラウンド範囲から第1画像のTile2第2処理後データを読み出し、第2ラップアラウンド範囲から第2画像のTile2第2処理後データを読み出し、これらを用いて、比較処理を行うことができる。また、データ転送部15aは、画像間比較の演算結果である第3画像を、第3ラップアラウンド範囲に格納することができる。例えば、運転支援システムでは、時間経過に伴って順次取得された第1画像と第2画像とを比較して、第1画像及び第2画像において認識された同一の物体の動きを示す第3画像を生成する場合がある。実施形態2はこのような例に適用可能である。
【0091】
また、第3画像を第3ラップアラウンド範囲に格納した後、第1画像、第2画像それぞれについて、再利用データ(不図示)を利用してTile3の畳み込み処理を実行することが可能である。
【0092】
以上、本発明者によってなされた発明を実施形態に基づき具体的に説明したが、本発明は既に述べた実施形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【0093】
上述したプログラムは、コンピュータに読み込まれた場合に、実施形態で説明された1又はそれ以上の機能をコンピュータに行わせるための命令群(又はソフトウェアコード)を含む。プログラムは、非一時的なコンピュータ可読媒体又は実体のある記憶媒体に格納されてもよい。限定ではなく例として、コンピュータ可読媒体又は実体のある記憶媒体は、RAM(Random-Access Memory)、ROM(Read-Only Memory)、フラッシュメモリ、SSD(Solid-State Drive)又はその他のメモリ技術、CD-ROM、DVD(Digital Versatile Disc)、Blu-ray(登録商標)ディスク又はその他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ又はその他の磁気ストレージデバイスを含む。プログラムは、一時的なコンピュータ可読媒体又は通信媒体上で送信されてもよい。限定ではなく例として、一時的なコンピュータ可読媒体又は通信媒体は、電気的、光学的、音響的、又はその他の形式の伝搬信号を含む。
【符号の説明】
【0094】
1 画像分割部
2 再利用データ決定部
3 メモリ管理部
10、10a 画像処理装置
11 入力画像指定部
12 画像処理種別指定部
13 カーネル選択部
14、14a 転送条件決定部
15、15a データ転送部
16 記憶部
17 演算処理部
20 外部メモリ