JP2013239120A - 画像処理装置 - Google Patents

画像処理装置 Download PDF

Info

Publication number
JP2013239120A
JP2013239120A JP2012113506A JP2012113506A JP2013239120A JP 2013239120 A JP2013239120 A JP 2013239120A JP 2012113506 A JP2012113506 A JP 2012113506A JP 2012113506 A JP2012113506 A JP 2012113506A JP 2013239120 A JP2013239120 A JP 2013239120A
Authority
JP
Japan
Prior art keywords
image data
processing
image
data
input
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2012113506A
Other languages
English (en)
Inventor
Masaru Ito
大 伊藤
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.)
Olympus Corp
Original Assignee
Olympus Corp
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 Olympus Corp filed Critical Olympus Corp
Priority to JP2012113506A priority Critical patent/JP2013239120A/ja
Publication of JP2013239120A publication Critical patent/JP2013239120A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Image Input (AREA)

Abstract

【課題】回路規模が増大することなく、所望の画像処理の演算に柔軟に変更することができる画像処理回路を備えた画像処理装置を提供する。
【解決手段】画像データに対してソフトウエアに応じた演算処理を行う1つ以上のプロセッサと、画像データに対して予め定めた演算処理を行う1つ以上のハードウェアアクセラレータと、それぞれの演算処理において用いる画像データを一時的に記憶するメモリ部と、メモリ部への画像データの書き込みおよび読み出しを制御するバッファ制御部と、を備え、メモリ部の記憶領域は、少なくとも、プロセッサの数とハードウェアアクセラレータの数との合計の数−1個のバッファ領域に、物理的に分割され、バッファ制御部は、プロセッサおよびハードウェアアクセラレータのそれぞれからのアクセスに応じて、分割されたそれぞれのバッファ領域の内、対応するバッファ領域に対する画像データの書き込みおよび読み出しを制御する。
【選択図】図1

Description

本発明は、画像処理装置に関する。特に、画像処理装置における演算器の量の削減に関する。
一般的に、CPUで処理すると処理時間がかかる処理は、専用の処理回路で実行する方法がとられることがある。例えば、浮動小数点演算を行う場合、図13(a)に示したように、専用の浮動小数点演算回路(FPU)に浮動小数点演算を実行させる。しかし、CPUが浮動小数点演算回路に対して演算の実行命令を発行すると、浮動小数点演算回路が演算を実行している間、CPUは他の処理を行うことができない。つまり、CPUと浮動小数点演算回路とが同時(並列)に動作することができない。
そこで、画像処理装置では、図13(b)に示したように、CPUおよび画像処理回路のそれぞれをバスに接続し、同様にバスに接続されているフレームメモリを利用して、CPUで処理すると処理時間がかかる画像処理を、専用の画像処理回路で実行させている。例えば、CPUが画像処理を画像処理回路に実行させる場合、まず、CPUが画像処理を行う画像データを一旦フレームメモリに記憶させる。そして、画像処理回路は、フレームメモリに記憶された画像データを読み出し、読み出した画像データに対して予め定めた画像処理を実行した後、画像処理した後の画像データを再びフレームメモリに記憶させる。その後、CPUが、フレームメモリに記憶されている画像処理後の画像データを取得する。このように、フレームメモリを利用して専用の画像処理回路に画像処理を実行させることにより、CPUは、画像処理回路が処理を実行している間に他の処理を実行する、つまり、CPUと画像処理回路とが同時に他の処理を実行することができる。
しかしながら、図13(b)に示した構成の場合であっても、画像処理回路は、予め定めた画像処理を実行するのみである。すなわち、画像処理回路が処理する機能は固定されている。このため、複数の画像処理を行う画像処理装置では、図14に示したように、それぞれの機能を実現する専用の画像処理回路を同時に備えた構成にする必要があった。図14には、2つの専用の画像処理回路(2次元のFIRフィルタ(2DFIR))回路および行列積演算回路)を備えた画像処理装置の一例を示している。このような構成にすることによって、それぞれの画像処理回路が処理を実行している間に、CPUが他の処理を実行することができる。
ところが、図14に示した画像処理装置において2つの画像処理回路は、それぞれ排他的に処理を行う場合、いずれか一方の画像処理回路が、常に処理を実行していない状態になる。一般的に、それぞれの画像処理回路は、同じLSI内に配置されていることが多い。このため、機能毎に画像処理回路を備えることによるLSIの回路面積の増大や、リーク電流の増加などが、画像処理装置の問題として挙がってくる。また、LSI内に配置した画像処理回路の機能と異なる処理を画像処理装置で実行する場合には、CPUの処理によって対応する、または新たにLSIを開発することが必要であった。
このような問題を解決するための技術として、例えば、特許文献1のように、画像処理の演算をそれぞれの演算要素に分け、それぞれの演算要素を組み合わせることによって、所望の画像処理演算を実現する画像処理装置が開示されている。特許文献1で開示された画像処理装置では、それぞれの演算要素を実行する部分積生成器や加減算器をセレクタで接続し、(A+B)×C+BやA+B+Cなどの異なる演算を行うことができる再構成可能な演算ユニットを複数備えている。そして、特許文献1で開示された画像処理装置では、一定以上の粒度の画像処理を行う場合に、それぞれの演算ユニット同士の接続をクロスバー回路で繋ぎ替えることによって、所望の演算処理を実現する演算ユニットの組み合わせに変更している。
これにより、特許文献1で開示された画像処理装置では、演算ユニットの組み合わせを変更することによって、画像処理装置が必要とする画像処理演算を行う画像処理回路を構築することができる。また、特許文献1で開示された画像処理装置では、排他的に動作する画像処理回路を、その画像処理回路が動作するときだけ構築することができ、常に処理を実行していない画像処理回路を、LSI内に配置しておく必要がなくなる。
また、例えば、特許文献2で開示された技術のように、特定の機能に絞った演算を行う数学エンジン(特許文献1でいう演算ユニット)も開示されている。
特開2004−145838号公報 特許第4263693号公報
しかしながら、特許文献1で開示された技術では、演算ユニットが実行する演算処理の単位が小さく、1つの画像処理回路を構築するためにより多くの演算ユニットを必要とする。例えば、3タップの2次元のFIRフィルタ処理を実行する場合、演算ユニットの数が、最低でも17個必要であり、FIRフィルタの係数の桁数によっては、さらに、複数の部分積の加算が必要である。つまり、(17+(9×2))×N(Nは乗算1回に必要な部分積の数)個の演算ユニットが必要である。このため、特許文献1で開示された技術では、画像処理を実現する際のクロスバー回路による繋ぎ替えの制御が煩雑になるばかりでなく、様々な画像処理回路の構築に対応するためのクロスバー回路そのものが大きな回路となってしまう、という問題がある。
また、特許文献2で開示された数学エンジンは、特定の機能に絞った演算を行う構成であるため、回路規模を低減することができるが、画像処理装置が必要とする、例えば、FFT処理に適用することができない。
本発明は、上記の課題認識に基づいてなされたものであり、回路規模が増大することなく、所望の画像処理の演算に柔軟に変更することができる画像処理回路を備えた画像処理装置を提供することを目的としている。
上記の課題を解決するため、本発明の画像処理装置は、画像データに対してソフトウエアに応じた演算処理を行う1つ以上のプロセッサと、前記画像データに対して予め定めた演算処理を行う1つ以上のハードウェアアクセラレータと、前記プロセッサおよび前記ハードウェアアクセラレータが、それぞれの演算処理において用いる前記画像データを一時的に記憶するメモリ部と、前記メモリ部への前記画像データの書き込み、および前記メモリ部からの前記画像データの読み出しを制御するバッファ制御部と、を備え、前記メモリ部の記憶領域は、少なくとも、前記プロセッサの数と前記ハードウェアアクセラレータの数との合計の数−1個のバッファ領域に、物理的に分割され、前記バッファ制御部は、前記プロセッサおよび前記ハードウェアアクセラレータのそれぞれからのアクセスに応じて、分割されたそれぞれの前記バッファ領域の内、対応する前記バッファ領域に対する前記画像データの書き込みおよび読み出しを制御する、ことを特徴とする。
また、本発明の前記バッファ制御部は、前記プロセッサおよび前記ハードウェアアクセラレータのそれぞれが演算処理を実行する際に用いる画像データのデータ幅、演算処理においてアクセスするライン数、および演算処理に使用するバッファの段数に基づいて、前記プロセッサおよび前記ハードウェアアクセラレータのそれぞれに対応する前記バッファ領域に含まれる記憶領域に対する前記画像データの書き込みおよび読み出しを制御する、ことを特徴とする。
また、本発明の前記ハードウェアアクセラレータは、n(nは3以上の自然数)チャンネルの前記画像データと、n個の乗算係数が入力され、少なくとも1つの前記チャンネルに入力された前記画像データを順次遅延させた遅延データを出力する、少なくともn−1個の遅延素子と、入力されたデータに対して、対応する乗算係数での乗算を行うn個の乗算器と、入力されたそれぞれの前記チャンネルの前記画像データ、またはそれぞれの前記遅延素子によって遅延されたそれぞれの前記遅延データのいずれか一方のデータを選択し、該選択したそれぞれのデータを、対応する前記乗算器のそれぞれに出力するデータセレクタと、前記乗算器のそれぞれから出力された乗算結果を加算する、n−1個、または前記遅延素子の個数のいずれか大きい方の数と同数の加算器と、を備え、該ハードウェアアクセラレータは、全ての前記加算器が対応する前記乗算結果を加算した最終的な加算結果を、演算処理の結果として出力する、ことを特徴とする。
また、本発明の前記ハードウェアアクセラレータは、画像の透明度を表す1.0よりも小さい透明度係数が入力され、前記透明度係数に基づいて、画像の透明でない状態を表す透明度係数から、前記透明度係数を減算し、該減算した結果を逆透明度係数として出力する減算器と、入力されたいずれか1つの前記乗算係数、または前記逆透明度係数のいずれか一方の係数を選択し、該選択した係数を、該乗算係数に対応するいずれか1つの前記乗算器に出力する第1の係数セレクタと、入力された他のいずれか1つの前記乗算係数、または前記透明度係数のいずれか一方の係数を選択し、該選択した係数を、該他の乗算係数に対応する他のいずれか1つの前記乗算器に出力する第2の係数セレクタと、をさらに備える、ことを特徴とする。
また、本発明の前記ハードウェアアクセラレータは、少なくとも1つの前記乗算器に対応し、該乗算器が出力する乗算結果が予め定めた値よりも大きな値にならないように抑圧し、該抑圧した結果を抑圧乗算結果として出力するクリップ回路と、抑圧前の前記乗算結果、または抑圧後の前記抑圧乗算結果のいずれか一方の乗算結果を選択し、該選択した乗算結果を、対応する前記加算器に出力する乗算結果セレクタと、をさらに備える、ことを特徴とする。
また、本発明の前記ハードウェアアクセラレータは、少なくとも1つの前記チャンネルに入力された前記画像データの数をカウントするカウンタと、前記カウンタがカウントした入力された前記画像データの数と、予め定めたカウント値とを比較し、該比較した結果である比較結果を出力する比較器と、前記比較結果に基づいて、現在入力された前記画像データが有効なデータであるか否か表す有効フラグの値を選択し、該選択した前記有効フラグの値を出力する有効フラグセレクタと、前記有効フラグの値を、現在入力された前記画像データに付加する有効フラグ付加回路と、をさらに備え、前記有効フラグ付加回路は、前記有効フラグの値を付加した有効フラグ付きの画像データ、または前記有効フラグの値を付加していない現在入力された前記画像データのいずれか一方の前記画像データを出力し、前記データセレクタは、入力されたそれぞれの前記チャンネルの前記画像データ、または 前記有効フラグ付加回路をから出力された画像データのいずれか一方のデータを選択して、対応する前記乗算器のそれぞれに出力する、ことを特徴とする。
また、本発明の前記有効フラグ付加回路は、さらに、それぞれの前記遅延素子によって遅延されたそれぞれの前記遅延データに付加する、ことを特徴とする。
また、本発明の前記ハードウェアアクセラレータは、前記乗算器のそれぞれから出力された乗算結果、または前記データセレクタが選択したそれぞれのデータのいずれか一方のデータを選択し、該選択したそれぞれのデータを、対応する前記加算器のそれぞれに出力する第2のデータセレクタ、をさらに備え、前記加算器のそれぞれは、前記第2のデータセレクタから出力された対応する前記データを加算し、該ハードウェアアクセラレータは、全ての前記加算器が対応する前記データを加算した最終的な加算結果を、演算処理の結果として出力する、ことを特徴とする。
また、本発明の前記ハードウェアアクセラレータは、前記最終的な加算結果を、該ハードウェアアクセラレータに入力された前記画像データの数で除算する除算器と、前記最終的な加算結果、または前記除算器から出力された除算結果のいずれか一方の結果を選択し、該選択した結果を、該ハードウェアアクセラレータの演算処理の結果として出力する出力セレクタと、をさらに備える、ことを特徴とする。
本発明によれば、回路規模が増大することなく、所望の画像処理の演算に柔軟に変更することができる画像処理回路を備えた画像処理装置を提供することができるという効果が得られる。
本発明の実施形態における画像処理装置の概略構成の一例を示したブロック図である。 本実施形態の画像処理装置におけるバッファ制御部の概略構成の一例を示したブロック図である。 本実施形態の画像処理装置において第1の画像処理を行う場合の構成の一例を示したブロック図である。 本実施形態の画像処理装置による第1の画像処理における画像データの流れを示した図である。 本実施形態の画像処理装置における処理演算部の構成の一例を示したブロック図である。 本実施形態の画像処理装置において第2の画像処理を行う場合の構成の一例を示したブロック図である。 本実施形態の画像処理装置による第2の画像処理における処理演算部内の画像データの流れを示した図である。 本実施形態の画像処理装置において第3の画像処理を行う場合の構成の一例を示したブロック図である。 本実施形態の画像処理装置による第3の画像処理において水平方向の処理を行う場合の処理演算部内の画像データの流れを示した図である。 本実施形態の画像処理装置による第3の画像処理において画像データの方向を変換する処理を説明する図である。 本実施形態の画像処理装置による第3の画像処理において垂直方向の処理を行う場合の処理演算部内の画像データの流れを示した図である。 本実施形態の画像処理装置による第4の画像処理において水平方向または垂直方向の処理を行う場合の処理演算部内の画像データの流れを示した図である。 従来の処理装置の構成の一例を示したブロック図である。 従来の画像処理装置の構成の一例を示したブロック図である。
以下、本発明の実施形態について、図面を参照して説明する。図1は、本実施形態における画像処理装置の概略構成の一例を示したブロック図である。図1に示した画像処理装置1は、2つのCPU11およびCPU12と、バッファ制御部30と、メモリ部40と、2つの処理演算部51および処理演算部52とが、バス20に接続された構成である。
処理演算部51と処理演算部52とのそれぞれは、n(nは3以上の自然数)チャンネルの入力に対応し、1次元のFIRフィルタ処理、1行n列×n行1列のマトリックス演算、またはLUT(ルックアップテーブル)処理などの基本的な演算処理を、1つの処理演算部で実行することができるハードウェアアクセラレータとしての演算部である。処理演算部51と処理演算部52とのそれぞれが実行する演算処理は、画像処理装置1が実行する画像処理に応じた所望の画像処理演算を実現するために、例えば、画像処理装置1の全体を制御する制御部によって、任意に変更することができる。以下の説明において、処理演算部51または処理演算部52のいずれかを特定しない場合には、「処理演算部50」という。なお、処理演算部50の構成や動作に関する詳細な説明は、後述する。
CPU11とCPU12とのそれぞれは、ソフトウエアで演算処理を実行するプロセッサである。CPU11とCPU12とのそれぞれが実行する演算処理は、画像処理装置1が実行する画像処理に応じた所望の画像処理演算の内、処理演算部50では実行しない演算処理である。以下の説明において、CPU11またはCPU12のいずれかを特定しない場合には、「CPU10」という。
バッファ制御部30は、処理演算部50またはCPU10が画像処理に用いる画像データのメモリ部40への書き込みおよび読み出しを制御する。バッファ制御部30は、処理演算部50やCPU10のそれぞれが演算処理する画像データのデータ幅や、演算処理においてアクセスするライン数(データ数)や、演算処理に使用するバッファの段数に応じて、メモリ部40にアクセスする各入出力ポートのデータ幅や、ライン数(データ数)や、段数が設定される。バッファ制御部30に対するデータ幅や、ライン数(データ数)や、バッファの段数の設定は、例えば、画像処理装置1の全体を制御する制御部によって、任意に設定することができる。バッファ制御部30は、設定されたデータ幅や、ライン数(データ数)や、バッファの段数に基づいて、処理演算部50またはCPU10からバス20を介して入力された画像データを、メモリ部40に書き込み、メモリ部40から読み出した画像データを、バス20を介して処理演算部50またはCPU10に出力する。
メモリ部40は、処理演算部50やCPU10が画像処理に用いる画像データを一時的に記憶する。メモリ部40の記憶領域は、画像処理装置に備えたプロセッサの数とハードウェアアクセラレータの数との合計の数−1個に、物理的に分割されているように構成されている。本実施形態の画像処理装置1では、2つのプロセッサ(CPU11およびCPU12)と、2つのハードウェアアクセラレータ(処理演算部51および処理演算部52)を備えているため、メモリ部40は、(2+2)−1=3個の記憶領域に物理的に分割されている。
バス20は、処理演算部50およびCPU10が画像処理に用いる画像データを伝送するバスである。バス20は、接続されている処理演算部50およびCPU10と、バッファ制御部30との接続関係を、例えば、それぞれの画像データの接続先を表すアドレスに基づいて、任意に変更することができる。
このような構成によって、画像処理装置1では、処理演算部50およびCPU10のそれぞれが、所望の演算処理を実行することによって、画像処理装置1が実行する画像処理を実現する。
次に、本実施形態の画像処理装置1に備えたバッファ制御部30について説明する。図2は、本実施形態の画像処理装置1におけるバッファ制御部30の概略構成の一例を示したブロック図である。なお、図2には、バッファ制御部30が接続されたバス20など、バッファ制御部30に関連する画像処理装置1に備えたその他の構成要素も併せて示している。
本実施形態の画像処理装置1では、上述したように、2つのプロセッサ(CPU11およびCPU12)と、2つのハードウェアアクセラレータ(処理演算部51および処理演算部52)を備えているため、メモリ部40は、3個の記憶領域(メモリ部41、メモリ部42、およびメモリ部43)に物理的に分割されている。このため、バッファ制御部30も、図2に示したように、分割されたメモリ部40のそれぞれに対応して、3個(バッファ制御部31、バッファ制御部32、およびバッファ制御部33)に分割され、それぞれ対応するメモリ部40に対して制御を行う。
バッファ制御部31は、対応するメモリ部41に対する画像データの書き込みおよび読み出しを制御する。バッファ制御部31は、メモリ部41のデータ幅を設定するデータ幅レジスタ311と、メモリ部41のライン数を設定するライン数レジスタ312と、メモリ部41の段数を設定するバッファ段数レジスタ313と、を備えている。バッファ制御部31は、メモリ部41を、データ幅レジスタ311と、ライン数レジスタ312と、バッファ段数レジスタ313とに設定された値に応じた大きさの記憶領域を持つバッファとして、メモリ部41への画像データの書き込みおよび読み出しを制御する。
バッファ制御部32も、バッファ制御部31と同様に、データ幅レジスタ321と、ライン数レジスタ322と、バッファ段数レジスタ323とを備え、それぞれのレジスタに設定された値に応じた大きさの記憶領域を持つバッファとして、対応するメモリ部42への画像データの書き込みおよび読み出しを制御する。
バッファ制御部33も、バッファ制御部31およびバッファ制御部32と同様に、データ幅レジスタ331と、ライン数レジスタ332と、バッファ段数レジスタ333とを備え、それぞれのレジスタに設定された値に応じた大きさの記憶領域を持つバッファとして、対応するメモリ部43への画像データの書き込みおよび読み出しを制御する。
なお、バッファ制御部31、バッファ制御部32、およびバッファ制御部33のそれぞれに備えたレジスタに対する値の設定は、画像処理装置1が画像処理を実行する前に、例えば、画像処理装置1の全体を制御する制御部によって、事前に行われる。例えば、図2に示した一例では、メモリ部41、メモリ部42、およびメモリ部43のそれぞれのデータ幅を、32bit、24bit、および24bitと設定した場合を示している。このように、バッファ制御部30に備えたそれぞれのレジスタに事前に値を設定することによって、例えば、16段の8bit×3ラインや、32段の24bit×1ラインや、8段の24bit×2ラインなどのラインバッファを、メモリ部40に構成することができる。
なお、図2においては、分割されたバッファ制御部30とメモリ部40とのそれぞれをまとめて、「バッファ340」として示している。以下の説明において、分割されたバッファ制御部30とメモリ部40とのそれぞれを特定しない場合には、「バッファ340」として説明する。
バス20は、接続されたCPU11とCPU12、および処理演算部51と処理演算部52とのそれぞれの入出力ポートと、バッファ制御部31、バッファ制御部32、およびバッファ制御部33のそれぞれの入出力ポート、すなわち、メモリ部41、メモリ部42、およびメモリ部43のそれぞれの入力ポートおよび出力ポートとの接続を切り替える。バス20におけるそれぞれの入出力ポートの接続の切り換えは、それぞれの画像データに対して付加されているアドレスに応じて、バス20に備えたアドレスデコーダ(書き込みアドレスデコーダ210および読み出しアドレスデコーダ220)が行う。
より具体的には、書き込みアドレスデコーダ210は、2ビットのアドレスをデコードして、CPU11とCPU12、および処理演算部51と処理演算部52とのそれぞれの出力ポートと、バッファ340のそれぞれの入力ポートとの接続を切り替える。また、読み出しアドレスデコーダ220は、2ビットのアドレスをデコードして、バッファ340のそれぞれの出力ポートと、CPU11とCPU12、および処理演算部51と処理演算部52とのそれぞれの入力ポートとの接続を切り替える。
このような構成によって、画像処理装置1では、処理演算部50およびCPU10が、それぞれの演算処理を実行する際に用いる画像データのデータ幅、データ数(ライン数)や、バッファの段数に合わせた大きさの記憶領域を準備することができる。
なお、バス20におけるそれぞれの入出力ポートの接続の切り換えは、上述したアドレスデコーダによって行う構成に限定されるものではなく、接続されている処理演算部50およびCPU10の入出力ポートと、バッファ340の入出力ポートとの接続を切り替えることができる構成であれば、いかなる構成であってもよい。
<第1の画像処理>
ここで、画像処理装置1において実行する画像処理の一例について説明する。図3は、本実施形態の画像処理装置1において第1の画像処理を行う場合の構成の一例を示したブロック図である。本第1の画像処理では、画像処理装置1が、画像データに対して、FIRフィルタ処理とマトリックス演算とのそれぞれの演算処理を実行する。
以下の説明においては、説明を容易にするため、図3に示したように、処理演算部51がFIRフィルタ処理を、処理演算部52がマトリックス演算を、それぞれ実行するものとして説明を行う。また、処理演算部50のそれぞれが演算処理を実行する際に用いる画像データに対応した大きさの記憶領域が、バッファ340に事前に準備されているものとし、バッファ340内のバッファ制御部30に備えたそれぞれのレジスタの設定についての説明は省略する。なお、処理演算部50のそれぞれが実行する処理に関する詳細な説明は、後述する。
図4は、本実施形態の画像処理装置1による第1の画像処理における画像データの流れを示した図である。図4(a)には、FIRフィルタ処理とマトリックス演算とを順次実行する場合の第1の画像処理における画像データの流れを示し、図4(b)には、FIRフィルタ処理とマトリックス演算とを同時に実行する場合の第1の画像処理における画像データの流れを示している。
まず、図4(a)に示した、FIRフィルタ処理とマトリックス演算とを順次実行する場合(以下、「第1の処理手順」という)の第1の画像処理における画像データの流れについて説明する。画像処理装置1が第1の処理手順で第1の画像処理を実行する場合には、以下のような手順でそれぞれの処理を実行する。なお、以下の説明においては、処理演算部50のそれぞれが処理を実行する際に用いる画像データに対応したバッファ340a、340b、および340cが、バッファ340内に事前に準備されているものとする。
(手順1):まず、CPU11は、処理演算部51がFIRフィルタ処理を実行する際に用いる画像データを、例えば、画像の画角の横幅×FIRフィルタのタップ数のバッファ340aに書き込む。
(手順2):続いて、処理演算部51は、バッファ340aに書き込まれた(記憶された)画像データを読み出し、読み出した画像データに対してFIRフィルタ処理を実行する。そして、処理演算部51は、FIRフィルタ処理を実行した後の画像データをバッファ340bに書き込む。
(手順3):続いて、CPU12は、バッファ340bに書き込まれた(記憶された)、FIRフィルタ処理を実行した後の画像データを読み出し、読み出した画像データに対して画像処理を実行した後、画像処理した後の画像データを、例えば、16段のバッファ340cに書き込む。
(手順4):続いて、処理演算部52は、バッファ340cに書き込まれた(記憶された)画像データを読み出し、読み出した画像データに対してマトリックス演算を実行する。
このようにして、画像処理装置1が第1の処理手順で、FIRフィルタ処理とマトリックス演算とを順次実行することによって、第1の画像処理を実行する。
次に、図4(b)に示した、FIRフィルタ処理とマトリックス演算とを同時に実行する場合(以下、「第2の処理手順」という)の第1の画像処理における画像データの流れについて説明する。画像処理装置1が第2の処理手順で第1の画像処理を実行する場合には、以下のような手順でそれぞれの処理を実行する。なお、以下の説明においては、処理演算部50のそれぞれが処理を実行する際に用いる画像データに対応したバッファ340d、340e、および340fが、バッファ340内に事前に準備されているものとする。
(手順1):まず、CPU11は、処理演算部51がFIRフィルタ処理を実行する際に用いる画像データを、バッファ340dに書き込む。また、CPU11は、処理演算部52がマトリックス演算を実行する際に用いる画像データを、バッファ340eに書き込む。
(手順2):続いて、処理演算部51は、バッファ340dに書き込まれた(記憶された)画像データを読み出し、読み出した画像データに対してFIRフィルタ処理を実行し、FIRフィルタ処理を実行した後の画像データをバッファ340fに書き込む。また、処理演算部52は、バッファ340eに書き込まれた(記憶された)画像データを読み出し、読み出した画像データに対してマトリックス演算を実行し、マトリックス演算を実行した後の画像データをバッファ340fに書き込む。
なお、手順2においては、処理演算部51と処理演算部52とのそれぞれが、演算を実行した後のデータをバッファ340fに書き込んでいる。しかし、処理演算部51と処理演算部52とが共に、同じサイクル数で演算を実行することができるとは限らない。このため、バッファ340fにデータを書き込むタイミングを、処理演算部51と処理演算部52とで同期させる必要がある場合もある。そこで、バッファにデータを書き込むタイミングを同期させる方法としては、例えば、画像データを読み出してから演算を実行した後の画像データを出力するまでのサイクル数を、処理演算部50毎に事前に把握しておく。そして、それぞれの処理演算部50が、演算を実行した後の画像データを出力するタイミングが同期するように、画像データを読み出すタイミングを調整する方法などが考えられる。また、例えば、バッファ340fの機能として、リードモディファイライトの機能を備え、異なるタイミングで書き込まれる画像データで、すでに記憶している画像データが上書きされないように制御する方法などが考えられる。
(手順3):続いて、CPU12は、バッファ340fに書き込まれた(記憶された)、FIRフィルタ処理を実行した後の画像データおよびマトリックス演算を実行した後の画像データを読み出す(取得する)。
このようにして、画像処理装置1が第2の処理手順で、FIRフィルタ処理とマトリックス演算とを同時に実行することによって、第1の画像処理を実行する。
上記に述べたように、本実施形態の画像処理装置1では、同様の画像処理を実行する場合であっても、プロセッサ(CPU11およびCPU12)と、ハードウェアアクセラレータ(処理演算部51および処理演算部52)とがそれぞれ実行する画像処理の順番を、任意に組み替えることができる。これにより、ハードウェアアクセラレータによる画像処理の高速化と、プロセッサによる画像処理の柔軟性とを両立することができる。
また、本実施形態の画像処理装置1では、画像の画角やフィルタのサイズ(タップ数)に応じて、メモリ部40の記憶領域の大きさを任意に設定することができる。これにより、バッファ制御部30によるバッファの管理を集中しておこうことができ、それぞれの画像処理に対して個別に十分な大きさのバッファを準備する場合に比べて、メモリ部40の面積効率を向上し、画像処理装置1に係るコストを削減することができる。
次に、本実施形態の画像処理装置1に備えた処理演算部50について説明する。図5は、本実施形態の画像処理装置1における処理演算部50の構成の一例を示したブロック図である。図5には、3チャンネルの入力に対応し、演算処理を実行して1つの演算結果を得る処理演算部50の一例を示している。すなわち、図5に示した処理演算部50は、3タップの1次元のFIRフィルタ処理、および1行3列×3行1列のマトリックス演算の基本的な演算処理を行うことができるハードウェアアクセラレータの一例である。なお、図5には、処理演算部50が実行する1次元のFIRフィルタ処理および1行3列×3行1列のマトリックス演算の基本的な演算処理を実現する構成要素以外にも、付加的な演算処理の機能を実現する構成要素も併せて示している。
図5に示した処理演算部50は、遅延素子511および512と、セレクタ520と、乗算器531、532、および533と、加算器541および542と、減算器550と、セレクタ562および563と、クリップ(CLIP)回路570と、セレクタ580と、セレクタ590と、有効フラグ(Valid)付加回路601と、カウンタ611と、比較器612と、セレクタ613と、セレクタ620と、除算器630と、を備えている。処理演算部50は、入力ポートIn1、In2、およびIn3のそれぞれに同時に入力された同一位置における3チャンネルの画像データに対して、対応する係数ポートC1、C2、およびC3のそれぞれに入力された係数、またはアルファチャンネル係数ポートCαに入力された係数に応じた演算処理を実行し、その結果を出力ポートOut1から出力する。
遅延素子511と遅延素子512とのそれぞれは、入力ポートIn1に時系列的に入力された画像データを順次遅延させる。処理演算部50では、3チャンネルの画像データが入力されるため、画像データを、チャネル数−1、すなわち、3−1=2段の遅延素子が直列に接続されている。これにより、処理演算部50は、入力ポートIn1に入力された画像データ(以下、「現データ」という)と、1段遅延させた画像データ(以下、「1段遅延データ」という)と、2段遅延させた画像データ(以下、「2段遅延データ」という)とに対して、同時に演算処理を実行することができる。すなわち、入力ポートIn1に時系列的に入力されたそれぞれの画像データが、同時に入力されたものとして演算処理を実行することができる。
なお、図5に示した処理演算部50では、入力ポートIn1に入力された1つのチャンネルの画像データのみを遅延させる構成を示している、すなわち、他のチャンネルの画像データを遅延させる構成を省略している。しかし、処理演算部50において遅延させる画像データは、図5に示したような1つのチャンネルのみに限定されるものではなく、図5に示した遅延素子511および遅延素子512と同様の構成を他のチャンネルの入力ポートIn2および入力ポートIn2にも備え、それぞれのチャンネルの画像データをそれぞれ2段遅延させる構成にしてもよい。また、図5に示した処理演算部50では、入力された画像データを2段遅延させる構成を示しているが、遅延素子の構成、すなわち、画像データを遅延させる段数は、図5に示した構成のみに限定されるものではなく、入力された画像データを、さらに多くの段数遅延させる構成にすることもできる。
セレクタ520は、演算処理を実行する画像データを選択する。より具体的には、セレクタ520は、入力ポートIn1〜In3のそれぞれに同時に入力された同一位置における3チャンネル分の画像データ、または遅延素子511および遅延素子512によって遅延された1チャンネルの画像データの3つ分(3段分)の画像データのいずれか一方の画像データを、演算処理を実行する画像データとして選択する。そして、セレクタ520は、選択した画像データのそれぞれを、乗算器531、532、または533のいずれかの乗算器に出力する。
なお、図5に示した処理演算部50では、後述する付加的な演算処理機能の追加に伴って、1チャンネルの画像データの3つ分(3段分)の画像データ、すなわち、現データと、1段遅延データと、2段遅延データとが、有効フラグ付加回路601を介して入力される構成になっている。
乗算器531と乗算器532と乗算器533とのそれぞれは、セレクタ520から入力された画像データに対して、対応する係数ポートC1、C2、またはC3のそれぞれに入力された係数(以下、「乗算係数」という)での乗算を行う。処理演算部50では、チャネル数、すなわち、画像データの入力ポート数、または遅延素子の数+1のいずれか大きい方の数と同じ数の乗算器、すなわち、3つの乗算器を備えている。
なお、図5に示した処理演算部50では、後述する付加的な演算処理機能の追加に伴って、乗算器532および乗算器533のそれぞれが乗算を実行する際に用いる乗算係数が、対応するセレクタ562またはセレクタ563から出力されたそれぞれの係数になっている。より具体的には、乗算器532は、セレクタ520から入力された画像データに対して、対応するセレクタ562から出力された、対応する係数ポートC2に入力された乗算係数、またはアルファチャンネル係数ポートCαに入力された係数に応じた係数のいずれか一方の係数での乗算を行う構成になっている。また、乗算器533は、セレクタ520から入力された画像データに対して、対応するセレクタ563から出力された、対応する係数ポートC3に入力された乗算係数、またはアルファチャンネル係数ポートCαに入力された係数のいずれか一方の係数での乗算を行う構成になっている。
なお、図5に示した処理演算部50では、乗算器531と乗算器532と乗算器533とのそれぞれが乗算を実行する際に用いる乗算係数が、対応する係数ポートC1〜C3またはアルファチャンネル係数ポートCαから入力される構成を示している。しかし、処理演算部50において乗算器531と、乗算器532と、乗算器533とのそれぞれに乗算係数を与える方法は、図5に示したようなそれぞれのポートから入力する構成のみに限定されるものではない。例えば、それぞれの乗算係数を保持するレジスタを備え、それぞれのレジスタに保持されたそれぞれの乗算係数を、乗算器531と乗算器532と乗算器533とのそれぞれに与える構成にしてもよい。
加算器541と加算器542とのそれぞれは、対応する乗算器531と乗算器532と乗算器533とのそれぞれが乗算した結果の画像データの加算を行う。処理演算部50では、チャネル数、すなわち、画像データの入力ポート数−1、または遅延素子の数のいずれか大きい方の数の加算器、すなわち、2つの加算器を備えている。この構成により、処理演算部50は、乗算器531と乗算器532と乗算器533とのそれぞれが乗算した結果の画像データの全てを累積加算した画像データを出力する。
なお、図5に示した処理演算部50では、後述する付加的な演算処理機能の追加に伴って、加算器541および加算器542のそれぞれには、対応する乗算器531と乗算器532と乗算器533とのそれぞれが乗算した結果の画像データが、セレクタ620を介して入力される構成になっている。
ここまでの構成、すなわち、遅延素子511および512と、セレクタ520と、乗算器531、532、および533と、加算器541および542との構成が、3タップの1次元のFIRフィルタ処理または1行3列×3行1列のマトリックス演算のいずれかの基本的な演算処理を実現するための処理演算部50における基本的な構成である。
続いて、処理演算部50に追加された付加的な演算処理機能を実現する構成について説明する。図5に示した処理演算部50に追加された1つめの付加的な演算処理機能は、完全な透明や半透明の2枚の画像を合成して1枚の画像を生成するための、いわゆるアルファブレンディング処理の機能である。このアルファブレンディング処理の機能の追加に伴って、処理演算部50には、減算器550と、セレクタ562および563とが追加されている。また、アルファチャンネル係数ポートCαには、画像の透明度を表す1.0よりも小さい係数(以下、「透明度係数」という)が入力される。
減算器550は、アルファチャンネル係数ポートCαに入力されたアルファブレンディング処理における透明度係数に基づいて、最終的に生成される1枚の画像の透明度が1.0、すなわち、透明でない状態になるように、透明度係数に対する逆の係数(以下、「逆透明度係数」という)を算出する。より具体的には、減算器550は、1.0からアルファチャンネル係数ポートCαに入力された透明度係数を減算し、その結果をアルファブレンディング処理における逆透明度係数としてセレクタ562に出力する。
セレクタ562とセレクタ563とのそれぞれは、対応する乗算器532および乗算器533のそれぞれが乗算を実行する際に用いる係数を選択する。より具体的には、セレクタ562は、対応する係数ポートC2に入力された乗算係数、または減算器550から入力された逆透明度係数のいずれか一方の係数を、乗算器532が乗算を実行する際に用いる係数として選択する。これにより、乗算器532は、セレクタ520から入力された画像データに対して、セレクタ562から入力された係数ポートC2に入力された乗算係数、または逆透明度係数のいずれか一方の係数での乗算を行う。また、セレクタ563は、対応する係数ポートC3に入力された乗算係数、またはアルファチャンネル係数ポートCαに入力された透明度係数のいずれか一方の係数を、乗算器533が乗算を実行する際に用いる係数として選択する。これにより、乗算器533は、セレクタ520から入力された画像データに対して、セレクタ563から入力された係数ポートC3に入力された乗算係数、または透明度係数のいずれか一方の係数での乗算を行う。
この構成により、処理演算部50は、アルファブレンディング処理を行うことができる。なお、アルファブレンディング処理は、画像データ毎に透明度係数が異なることもある。このため、図5に示した処理演算部50の構成のように、透明度係数がアルファチャンネル係数ポートCαから順次入力される構成のみに限定されるものではない。例えば、透明度係数を保持したテーブルを処理演算部50内に備え、画像データ毎に対応した透明度係数をテーブルから順次読み出して、減算器550とセレクタ563とのそれぞれに与える構成にしてもよい。
また、図5に示した処理演算部50に追加された2つめの付加的な演算処理機能は、出力する画像データの値が予め定めた値よりも大きな値にならないように、画像データの値を抑圧(クリップ)する、いわゆるコアリング処理の機能である。このコアリング処理の機能の追加に伴って、処理演算部50には、クリップ回路570と、セレクタ580とが追加されている。
クリップ回路570は、乗算器533が乗算を実行した画像データの値が、予め定めた値以下になるように抑圧し、抑圧した画像データをセレクタ580に出力する。これにより、例えば、乗算器533が乗算を実行した画像データの値が飽和してしまうなどの状態を抑えることができる。なお、クリップ回路570が画像データを抑圧する予め定めた値は、図5に示した処理演算部50の構成のように、事前にクリップ回路570内に設定されている構成のみに限定されるものではない。例えば、別途設けられたクリップ値ポートから画像データを抑圧する値を入力する構成や、画像データを抑圧する値を保持するレジスタを備え、レジスタに保持されたクリップ値で画像データを抑圧する構成にしてもよい。
セレクタ580は、乗算器533が乗算を実行した画像データ、またはクリップ回路570によって値が抑圧された画像データのいずれか一方の画像データを選択して出力する。これにより、処理演算部50は、乗算器531および乗算器532のそれぞれが乗算した結果の画像データと、セレクタ580によって選択された乗算器533が乗算した結果の画像データまたはクリップ回路570によって値が抑圧された画像データのいずれか一方の画像データとの全てを累積加算した画像データを出力する。
なお、図5に示した処理演算部50では、乗算器533が乗算を実行した画像データを抑圧する構成を示している、すなわち、他の乗算器が乗算を実行した画像データを抑圧する構成を省略している。しかし、処理演算部50において抑圧する乗算を実行した画像データは、図5に示したような1つの乗算器533のみに限定されるものではない。例えば、図5に示したクリップ回路570およびセレクタ580と同様の構成を他の乗算器531および乗算器532の出力側にも備え、それぞれの乗算器が乗算を実行した画像データをそれぞれ抑圧する構成にしてもよい。
また、図5に示した処理演算部50に追加された3つめの付加的な演算処理機能は、乗算器531と乗算器532と乗算器533とのそれぞれが乗算を行う画像データが、有効な画像データであるか否かを表す有効フラグを画像データに付加する、いわゆる有効フラグ(Valid)付加処理の機能である。有効フラグ付加処理の機能では、予め定めたサイクルに1回の割合で、有効フラグを画像データに付加する。この有効フラグ付加処理の機能の追加に伴って、処理演算部50には、有効フラグ付加回路601と、カウンタ611と、比較器612と、セレクタ613とが追加されている。
カウンタ611は、有効フラグを画像データに付加するサイクルをカウントする。図5に示した処理演算部50において、カウンタ611は、設定されたサイクル数の値から、入力ポートIn1に画像データが入力される毎にサイクル数の値を減算するカウント(カウントダウン)するダウンカウンタである。カウンタ611は、カウントしたサイクル数の値を、比較器612に出力する。
なお、カウンタ611がカウントするサイクル数は、図5に示した処理演算部50の構成のように、事前にカウンタ611内に設定されている構成のみに限定されるものではない。例えば、別途設けられたカウント数ポートから画像データに有効フラグを付加するサイクル数を入力する構成や、画像データに有効フラグを付加するサイクル数を保持するレジスタを備え、レジスタに保持されたサイクル数をカウントする構成にしてもよい。
比較器612は、カウンタ611から入力されたサイクル数の値と、予め定めた値とを比較し、比較した結果をセレクタ613に出力する。図5に示した処理演算部50において、カウンタ611はダウンカウンタであるため、比較器612がカウンタ611から入力されたサイクル数の値と比較する予め定めた値は“0”である。比較器612は、例えば、カウンタ611から入力されたサイクル数の値が“0”となったときに比較結果=1をセレクタ613に出力し、サイクル数の値が“0”以外である場合に比較結果=0を、セレクタ613に出力する。
セレクタ613は、比較器612から入力された比較結果に基づいて、画像データに付加する有効フラグの値を選択し、選択した有効フラグの値を、有効フラグ付加回路601に出力する。図5に示した処理演算部50において、セレクタ613は、例えば、有効フラグを画像データに付加するサイクルのときに有効フラグの値=1を有効フラグ付加回路601に出力し、有効フラグを画像データに付加するサイクルではないときに有効フラグの値=0を有効フラグ付加回路601に出力する。
有効フラグ付加回路601は、セレクタ613から入力された有効フラグの値を、実際に画像データに付加する。有効フラグ付加回路601による有効フラグの付加は、例えば、画像データの上位ビット側に1ビットの有効フラグの値のビットを付加することによって行われる。なお、有効フラグ付加回路601は、有効フラグを付加しないこともできる。すなわち、有効フラグ付加回路601は、現データ、1段遅延データ、および2段遅延データの全てに有効フラグを付加する、全てに有効フラグを付加しない、いずれか1つに有効フラグを付加する、いずれか1つに有効フラグを付加しないなど、様々な状態にすることができる。これにより、以降の演算処理では、画像データが有効であることを表している有効フラグが付加された画像データに対してのみに演算処理を行うことや、有効な画像データが揃ったサイクルで演算処理を行うなど、柔軟に演算処理を行うタイミングを変更することができる。
なお、図5に示した処理演算部50では、入力ポートIn1に入力された1つのチャンネルの画像データのみに有効フラグを付加する構成を示している、すなわち、他のチャンネルの画像データに有効フラグを付加する構成を省略している。しかし、処理演算部50において有効フラグを付加する画像データは、図5に示したような1つのチャンネルのみに限定されるものではない。例えば、図5に示したカウンタ611、比較器612、セレクタ613、および有効フラグ付加回路601と同様の構成を他のチャンネルの入力ポートIn2および入力ポートIn2にも備え、それぞれのチャンネルの画像データに有効フラグを付加する構成にしてもよい。
また、図5に示した処理演算部50に追加された4つめの付加的な演算処理機能は、加算器541と加算器542とによって累積加算する画像データを選択するブロック累積加算処理の機能である。このブロック累積加算処理の機能の追加に伴って、処理演算部50には、セレクタ620が追加されている。
セレクタ620は、加算器541と加算器542とによって行う累積加算する画像データを選択する。より具体的には、セレクタ620は、乗算器531、532、および533のそれぞれが乗算を行った画像データ、または乗算器531、532、および533のそれぞれが乗算を行う前の画像データ、すなわち、入力ポートIn1〜In3に入力された元の画像データのいずれか一方の画像データを、累積加算する画像データとして選択する。そして、セレクタ620は、選択した画像データのそれぞれを、加算器541または加算器542のいずれかの加算器に出力する。これにより、処理演算部50は、乗算器531と乗算器532と乗算器533とのそれぞれが対応する乗算係数での乗算を行った画像データ、または入力ポートIn1〜In3のそれぞれに同時に入力された同一位置における3チャンネル分の画像データのいずれか一方の画像データを、累積加算した画像データを出力することができる。
また、図5に示した処理演算部50に追加された5つめの付加的な演算処理機能は、加算器541と加算器542とによって累積加算した画像データを入力された画像データの数で除算したブロック加算平均処理の機能である。このブロック加算平均処理の機能の追加に伴って、処理演算部50には、除算器630が追加されている。
除算器630は、加算器541と加算器542とによって累積加算された画像データを、入力された画像データの数で除算する。これにより、処理演算部50は、乗算器531と乗算器532と乗算器533とのそれぞれが対応する乗算係数での乗算を行った画像データ、または入力ポートIn1〜In3のそれぞれに同時に入力された同一位置における3チャンネル分の画像データのいずれか一方の画像データを、加算平均した画像データを出力することができる。
そして、図5に示した処理演算部50は、基本的な演算処理の結果の画像データ、または追加された付加的な演算処理の結果の画像データのいずれか一方の画像データを、処理演算部50が演算処理を実行した結果の画像データとして、出力ポートOut1から出力する。出力ポートOut1から出力する画像データを選択するため、処理演算部50には、セレクタ590が追加されている。
セレクタ590は、出力ポートOut1から出力する画像データを選択する。より具体的には、セレクタ590は、加算器542が出力する累積加算した画像データ、加算器542に入力される加算前の画像データ、または、除算器630が出力する加算平均した画像データのいずれか一方の画像データを、処理演算部50が演算処理を実行した結果の画像データとして選択し、出力ポートOut1から出力する。
このような構成によって、処理演算部50は、入力ポートIn1、In2、およびIn3のそれぞれに入力された画像データ、または入力ポートIn1に時系列的に入力された画像データに基づいて、以下のような演算処理を実行した画像データを出力することができる。
・3タップの1次元のFIRフィルタ処理、
・1行3列×3行1列のマトリックス演算、
・アルファブレンディング処理、
・コアリング処理、
・有効フラグ(Valid)の付加処理、
・1行×3列または3行×1列のブロック累積加算処理、
・1行×3列または3行×1列のブロック加算平均処理。
なお、図5に示した処理演算部50は、3チャンネルの入力に対応した処理演算部であったが、同様の考え方で処理演算部50内の構成要素を増やすなどの対応を行うことによって、さらに多くのチャンネルの入力に対応した処理演算部を構築することができる。
<第2の画像処理>
本実施形態の画像処理装置1では、処理演算部50を複数組み合わせることによって、様々な画像処理を実現することができる。ここで、画像処理装置1において、処理演算部50を複数組み合わせで実行する画像処理の一例について説明する。図6は、本実施形態の画像処理装置1において第2の画像処理を行う場合の構成の一例を示したブロック図である。本第2の画像処理では、図6に示したように、画像処理装置1に備えた3つの処理演算部50(処理演算部51、処理演算部52、および処理演算部53)を用いて、入力された画像データに対して、下式(1)のような、3行3列×3行1列のマトリックス演算を、画像処理装置1における画像処理演算として実行する。
Figure 2013239120
上式(1)において、「R」、「G」、「B」は画像におけるそれぞれの色(R=赤色、G=緑色、B=青色)の画像データである。なお、「R」、「G」、および「B」は処理演算部50に入力されるそれぞれの色の画像データであり、「R’」、「G’」、および「B’」は処理演算部50から出力されるそれぞれの色の画像データである。また、「C00」〜「C22」は処理演算部50が演算処理に用いる乗算係数である。
それぞれの処理演算部50は、対応する色の画像データに対して、1行3列×3行1列のマトリックス演算を同時に行う。図6に示した画像処理装置1の構成では、処理演算部51が赤色(R)の画像データに対応し、処理演算部52が緑色(G)の画像データに対応し、処理演算部53が青色(B)の画像データに対応している。
次に、画像処理装置1による本第2の画像処理において、処理演算部50が実行する演算処理について説明する。図7は、本実施形態の画像処理装置1による第2の画像処理における処理演算部50内の画像データの流れを示した図である。図7には、赤色(R)の画像データに対して、1行3列×3行1列のマトリックス演算を行う処理演算部51内の画像データの流れを示している。なお、図7には、処理演算部51の演算処理において使用される処理経路を、太線で示している。
処理演算部51には、同時に入力された同一位置における3チャンネル分、すなわち、3色(「R」、「G」、「B」)の画像データ(以下、「画像データR」、「画像データG」、および「画像データB」という)が入力される。そして、処理演算部51は、入力されたそれぞれの色(R、G、B)の画像データに対して、下式(2)のような、1行3列×3行1列のマトリックス演算を実行し、累積加算した赤色(R)の画像データ(以下、「画像データR’」という)を出力する。
Figure 2013239120
より具体的には、処理演算部51の入力ポートIn1には画像データRが、入力ポートIn2には画像データGが、入力ポートIn3には画像データBが、それぞれ入力される。また、処理演算部51の係数ポートC1には乗算係数=C00が、係数ポートC2には乗算係数=C01が、係数ポートC3には乗算係数=C02が、それぞれ入力される。そして、処理演算部51の出力ポートOut1から画像データR’を出力する。
処理演算部51内のセレクタ520は、入力ポートIn1〜In3のそれぞれに同時に入力された画像データR、画像データG、および画像データBを、対応する乗算器531、乗算器532、および乗算器533のそれぞれに出力する。
処理演算部51内のセレクタ562は、対応する係数ポートC2から入力された乗算係数=C01を乗算器532に出力し、処理演算部51内のセレクタ563は、対応する係数ポートC3から入力された乗算係数=C02を乗算器533に出力する。
処理演算部51内の乗算器531は、セレクタ520から入力された画像データRに対して、対応する係数ポートC1から入力された乗算係数=C00を乗算し、セレクタ620に出力する。また、処理演算部51内の乗算器532は、セレクタ520から入力された画像データGに対して、セレクタ562から入力された乗算係数=C01を乗算し、セレクタ620に出力する。また、処理演算部51内の乗算器533は、セレクタ520から入力された画像データBに対して、セレクタ563から入力された乗算係数=C02を乗算し、セレクタ580を介して、セレクタ620に出力する。
処理演算部51内のセレクタ620は、乗算器531が乗算した結果(画像データR×C00)の画像データと、乗算器532が乗算した結果(画像データG×C01)の画像データとを加算器541に出力する。また、処理演算部51内のセレクタ620は、セレクタ580を介して入力された、乗算器533が乗算した結果(画像データB×C02)の画像データを加算器542に出力する。
処理演算部51内の加算器541は、セレクタ620から入力された画像データ(画像データR×C00)と、画像データ(画像データG×C01)とを加算し、加算器542に出力する。また、処理演算部51内の加算器542は、加算器541から入力された画像データ((画像データR×C00)+(画像データG×C01))と、セレクタ620から入力された画像データ(画像データB×C02)とを加算し、セレクタ590を介して、処理演算部51が演算処理した結果の画像データR’として、出力ポートOut1から出力する。
このように、処理演算部51は、入力ポートIn1〜In3のそれぞれに同時に入力されたそれぞれの画像データに対して、対応する係数ポートC1〜C2のそれぞれに入力された乗算係数での乗算を行った後、累積加算した結果の画像データR’を出力することによって、1行3列×3行1列のマトリックス演算を実行する。
なお、画像処理装置1による本第2の画像処理では、上述したように、処理演算部52および処理演算部53による1行3列×3行1列のマトリックス演算も、処理演算部51による1行3列×3行1列のマトリックス演算と同時に行われる。なお、処理演算部52および処理演算部53による1行3列×3行1列のマトリックス演算は、係数ポートC1〜C2のそれぞれに入力される乗算係数と、出力する累積加算した結果の画像データの色とが異なるのみである。
より具体的には、処理演算部52の入力ポートIn1には画像データRが、入力ポートIn2には画像データGが、入力ポートIn3には画像データBが、それぞれ入力され、係数ポートC1には乗算係数=C10が、係数ポートC2には乗算係数=C11が、係数ポートC3には乗算係数=C12が、それぞれ入力される。そして、処理演算部52の出力ポートOut1から画像データG’を出力する。また、処理演算部53の入力ポートIn1には画像データRが、入力ポートIn2には画像データGが、入力ポートIn3には画像データBが、それぞれ入力され、係数ポートC1には乗算係数=C20が、係数ポートC2には乗算係数=C21が、係数ポートC3には乗算係数=C22が、それぞれ入力される。そして、処理演算部53の出力ポートOut1から画像データB’を出力する。
その他、処理演算部52および処理演算部53内の画像データの流れは、図7に示した処理演算部51内の画像データの流れと同様であるため、詳細な説明は省略する。
そして、画像処理装置1では、処理演算部51、処理演算部52、および処理演算部53が対応する色の画像データに対してそれぞれ1行3列×3行1列のマトリックス演算を実行した結果の画像データR’、画像データG’、および画像データB’を合わせることにより、最終的な3行3列×3行1列のマトリックス演算の結果を得る。
上記に述べたように、本実施形態の画像処理装置1では、3つの処理演算部50を用いて、入力された画像データに対する3行3列×3行1列のマトリックス演算の画像処理演算を実行する。
なお、本第2の画像処理では、図5に示した3チャンネルの入力に対応した処理演算部50を用いて、3行3列×3行1列のマトリックス演算を実行する場合について説明したが、処理演算部50がさらに多くのチャンネルの入力に対応した処理演算部である場合には、さらに多くの行および列のマトリックス演算を実行することができる。
より具体的には、処理演算部50に、マトリックス演算を実行する行または列の大きい方と同じ数の入力ポートおよび係数ポートを備え、それぞれの入力ポートから入力された画像データとそれぞれの係数ポートから入力された乗算係数とを乗算する乗算器と、それぞれの乗算器が乗算した画像データを加算する加算器とをさらに備える。このような構成にすることによって、さらに多くの行および列に対応したマトリックス演算を実行することができる処理演算部50を構成することができる。
なお、画像処理装置1によるアルファブレンディング処理も、上述した1行3列×3行1列のマトリックス演算と同様に考えることができる。つまり、アルファブレンディングの演算処理も、画像処理装置1に備えた3つの処理演算部50(処理演算部51、処理演算部52、および処理演算部53)を用いて、画像データの色毎に行う。
より具体的には、例えば、処理演算部51の入力ポートIn2に1枚目の画像の画像データRを入力し、入力ポートIn3に2枚目の画像の画像データRを入力する。そして、処理演算部51内の乗算器532が、セレクタ520から入力された1枚目の画像の画像データRに対して、セレクタ562から入力された逆透明度係数での乗算を行い、乗算器533が、セレクタ520から入力された2枚目の画像の画像データRに対して、セレクタ563から入力された透明度係数での乗算を行う。そして、処理演算部51内の加算器541および加算器542で加算した結果を、処理演算部51がアルファブレンディングの演算処理した結果の画像データR’として、出力ポートOut1から出力する。
同様に、処理演算部52が、1枚目の画像の画像データGと2枚目の画像の画像データGとに対してアルファブレンディングの演算処理した結果の画像データG’を、出力ポートOut1から出力する。また、同様に、処理演算部53が、1枚目の画像の画像データBと2枚目の画像の画像データBとに対してアルファブレンディングの演算処理した結果の画像データB’を、出力ポートOut1から出力する。
このようにして、画像処理装置1では、処理演算部51、処理演算部52、および処理演算部53が対応する色の画像データに対してそれぞれアルファブレンディングの演算処理を実行した結果の画像データR’、画像データG’、および画像データB’を合わせることにより、最終的なアルファブレンディングの演算処理の結果を得ることができる。
<第3の画像処理>
次に、画像処理装置1において実行する画像処理の別の一例について説明する。図8は、本実施形態の画像処理装置1において第3の画像処理を行う場合の構成の一例を示したブロック図である。本第3の画像処理では、図8に示したように、画像処理装置1に備えた2つの処理演算部50(処理演算部51および処理演算部52)を用いて、入力された画像データに対して、下式(3)のような、3×3タップの2次元のFIRフィルタ(2DFIR)処理を、画像処理装置1における画像処理演算として実行する。
Figure 2013239120
上式(3)において、「k」および「i」は水平方向の行の数であり、「l」および「j」は垂直方向の列の数であり、「D」は画像データである。なお、「D」は処理演算部50に入力される、対応する水平方向(kまたはi)および垂直方向(lまたはj)の画像データであり、「D’」は処理演算部50から出力される、対応する水平方向(k)および垂直方向(l)の画像データである。また、「Cij」は処理演算部50が演算処理に用いる、対応する水平方向(i)および垂直方向(j)の乗算係数である。
上述したように、単体の処理演算部50では、1次元のFIRフィルタ処理を行うことができる。そこで、画像処理装置1において本第3の画像処理を行う場合には、2次元のFIRフィルタ処理を、水平方向と垂直方向との1次元のFIRフィルタ処理にそれぞれ分け、水平方向の1次元のFIRフィルタ処理に引き続き、垂直方向の1次元のFIRフィルタ処理を行うことで、2次元のFIRフィルタ処理を実現する。
より具体的には、上式(3)を、下式(4)が成り立つことを条件として、水平方向の下式(5)と、垂直方向の下式(6)とに分ける。
Figure 2013239120
Figure 2013239120
Figure 2013239120
上式(4)において、「CH」は水平方向(i)の乗算係数であり、「CV」は垂直方向(j)の乗算係数である。また、上式(5)および上式(6)において、「Dtmp」は処理演算部50が水平方向に1次元のFIRフィルタ処理を実行した水平方向(k)および垂直方向(l)の画像データ、すなわち、2次元のFIRフィルタ処理における中間の画像データである。
図8に示した画像処理装置1の構成では、処理演算部51が水平方向の1次元のFIRフィルタ処理に対応し、処理演算部52が垂直方向の1次元のFIRフィルタ処理に対応している。従って、画像処理装置1による本第3の画像処理では、図8に示したH方向処理に引き続き、図8に示したV方向処理を実行する。
なお、水平方向の1次元のFIRフィルタ処理の結果に対して、垂直方向の1次元のFIRフィルタ処理を行う場合には、水平方向から垂直方向への変換が必要である。このため、図8に示した画像処理装置1の構成では、バッファ340でラインメモリを構成し、ラインメモリ340gを用いて、水平方向から垂直方向への変換を行う。
ラインメモリ340gには、処理演算部51および処理演算部52のそれぞれが1次元のFIRフィルタ処理を実行する際に用いる画像データに対応した大きさの記憶領域が、バッファ340に事前に準備されている。なお、バッファ340内のバッファ制御部30に備えたそれぞれのレジスタの設定についての説明は省略する。なお、ラインメモリ340gにおける水平方向から垂直方向への変換方法に関する詳細な説明は、後述する。
次に、画像処理装置1による本第3の画像処理において、処理演算部50が実行する演算処理について説明する。まず、処理演算部51による水平方向の1次元のFIRフィルタ処理について説明する。図9は、本実施形態の画像処理装置1による第3の画像処理において水平方向の処理を行う場合の処理演算部50内の画像データの流れを示した図である。図9には、水平方向に1次元のFIRフィルタ処理を行う処理演算部51内の画像データの流れを示している。なお、図9には、処理演算部51の演算処理において使用される処理経路を、太線で示している。
処理演算部51には、入力ポートIn1に水平方向、すなわち、行方向の画像データ(以下、「画像データD」という)が時系列的に入力される。そして、処理演算部51は、3つの画像データD、すなわち、3列分の画像データDに対して、順次上式(5)のような、水平方向に3タップの1次元のFIRフィルタ処理を実行し、累積加算した画像データ(以下、「画像データDtmp」という)を、ラインメモリ340gに出力する。
より具体的には、処理演算部51の入力ポートIn1には画像データDが時系列的に入力される。また、処理演算部51の係数ポートC1には3つ目(3列目)の画像データに対応した乗算係数=CHが、係数ポートC2には2つ目(2列目)の画像データに対応した乗算係数=CHが、係数ポートC3には1つ目(1列目)の画像データに対応した乗算係数=CHが、それぞれ入力される。そして、処理演算部51の出力ポートOut1から画像データDtmpを出力する。
処理演算部51内の遅延素子511と遅延素子512とのそれぞれは、入力ポートIn1に時系列的に入力された画像データDを順次遅延させ、3つ分(3列分)の画像データ(現データ、1段遅延データ、および2段遅延データ)を、有効フラグ付加回路601を介してセレクタ520に出力する。なお、このとき、2段遅延データは1つ目(1列目)の画像データであり、1段遅延データは2つ目(2列目)の画像データであり、現データは3つ目(3列目)の画像データである。また、有効フラグ付加回路601は、それぞれの画像データに対して有効フラグを付加しない。
処理演算部51内のセレクタ520は、3つ目の画像データDが入力されたときから、有効フラグ付加回路601を介して入力された現データ、1段遅延データ、および2段遅延データを、対応する乗算器531、乗算器532、および乗算器533のそれぞれに出力する。
処理演算部51内のセレクタ562は、対応する係数ポートC2から入力された乗算係数=CHを乗算器532に出力し、処理演算部51内のセレクタ563は、対応する係数ポートC3から入力された乗算係数=CHを乗算器533に出力する。
処理演算部51内の乗算器531は、セレクタ520から入力された現データに対して、対応する係数ポートC1から入力された乗算係数=CHを乗算し、セレクタ620に出力する。また、処理演算部51内の乗算器532は、セレクタ520から入力された1段遅延データに対して、セレクタ562から入力された乗算係数=CHを乗算し、セレクタ620に出力する。また、処理演算部51内の乗算器533は、セレクタ520から入力された2段遅延データに対して、セレクタ563から入力された乗算係数=CHを乗算し、セレクタ580を介して、セレクタ620に出力する。
処理演算部51内のセレクタ620は、乗算器531が乗算した結果(現データ×CH)の画像データと、乗算器532が乗算した結果(1段遅延データ×CH)の画像データとを加算器541に出力する。また、処理演算部51内のセレクタ620は、セレクタ580を介して入力された、乗算器533が乗算した結果(2段遅延データ×CH)の画像データを加算器542に出力する。
処理演算部51内の加算器541は、セレクタ620から入力された画像データ(現データ×CH)と、画像データ(1段遅延データ×CH)とを加算し、加算器542に出力する。また、処理演算部51内の加算器542は、加算器541から入力された画像データ((現データ×CH)+(1段遅延データ×CH))と、セレクタ620から入力された画像データ(2段遅延データ×CH)とを加算し、セレクタ590を介して、処理演算部51が演算処理した結果の画像データDtmpとして、出力ポートOut1から出力する。
このように、処理演算部51は、入力ポートIn1に時系列的に入力されたそれぞれの画像データDに対して、対応する係数ポートC1〜C2のそれぞれに入力された乗算係数での乗算を行った後、累積加算した結果の画像データDtmpを出力することによって、水平方向に3タップの1次元のFIRフィルタ処理を実行する。
その後、画像処理装置1による本第3の画像処理では、処理演算部52による垂直方向の1次元のFIRフィルタ処理を実行する。このとき、画像処理装置1は、上述したように、水平方向の1次元のFIRフィルタ処理の結果、すなわち、画像データDtmpに対して実行する演算処理の方向を、ラインメモリ340gを用いて、水平方向から垂直方向に変換する。
ここで、ラインメモリ340gにおける水平方向から垂直方向への変換方法について説明する。図10は、本実施形態の画像処理装置1による第3の画像処理において画像データの方向を変換する処理を説明する図である。上述したように、ラインメモリ340gは、処理演算部51および処理演算部52のそれぞれが1次元のFIRフィルタ処理を実行する際に用いる画像データDtmpに対応した大きさのラインメモリである。
ところで、画像処理装置1による本第3の画像処理は、3×3タップの2次元のFIRフィルタ処理であるため、処理演算部52が垂直方向に3タップの1次元のFIRフィルタ処理を実行するには、3行分の画像データDtmpが揃っている必要がある。なお、処理演算部52による垂直方向の1次元のFIRフィルタ処理は、3行分の画像データDtmpが揃っていれば、処理演算部51による水平方向の1次元のFIRフィルタ処理と同時に実行することができる。
ラインメモリ340gは、図10に示したように、4行分の画像データDtmpを記憶するラインメモリで構成されている。より具体的には、処理演算部52が垂直方向の1次元のFIRフィルタ処理を実行する際に用いる画像データDtmpを記憶した3行分のラインメモリと、処理演算部51が水平方向の1次元のFIRフィルタ処理を実行した画像データDtmpを記憶する1行分のラインメモリとの合計4行分のラインメモリで構成されている。
そして、処理演算部51が水平方向の1次元のFIRフィルタ処理を実行し、3行分の画像データDtmpをラインメモリ340gに書き込んだ後、処理演算部52がラインメモリ340gに記憶されている3行分の画像データDtmpの内、同一の列の画像データDtmpを読み出すことによって、水平方向から垂直方向に変換する。図10には、処理演算部51が水平方向の1次元のFIRフィルタ処理を実行した画像データDtmpをラインメモリ341gに書き込み、処理演算部52が垂直方向の1次元のFIRフィルタ処理を実行するための3行分の画像データDtmpをラインメモリ342g、343g、および344gの同一列から読み出している場合を示している。
このようにして、画像処理装置1では、FIRフィルタ処理を行う画像データDtmpに対して実行する演算処理の方向を、ラインメモリ340gを用いて水平方向から垂直方向に変換することができる。なお、処理演算部51が水平方向の1次元のFIRフィルタ処理を実行した画像データDtmpを書き込むラインメモリ340gは、1行分のFIRフィルタ処理が完了する毎に、例えば、図10に示したラインメモリ341gからラインメモリ342gというように、順次次のラインメモリ340gに移動していく。このラインメモリ340gの移動に伴い、処理演算部52が垂直方向の1次元のFIRフィルタ処理を実行するために画像データDtmpを読み出すラインメモリ340gも、順次対応するラインメモリ340gに移動していく。
次に、処理演算部52による垂直方向の1次元のFIRフィルタ処理について説明する。図11は、本実施形態の画像処理装置1による第3の画像処理において垂直方向の処理を行う場合の処理演算部50内の画像データの流れを示した図である。図11には、垂直方向に1次元のFIRフィルタ処理を行う処理演算部52内の画像データの流れを示している。なお、図11には、処理演算部52の演算処理において使用される処理経路を、太線で示している。
処理演算部52には、入力ポートIn1に垂直方向、すなわち、列方向の画像データDtmpが時系列的に入力される。そして、処理演算部52は、3つの画像データDtmp、すなわち、3行分の画像データDtmpが揃ったときに、入力されたそれぞれの画像データDtmpに基づいて、順次上式(6)のような、垂直方向に3タップの1次元のFIRフィルタ処理を実行し、累積加算した画像データD’を、画像処理装置1における2次元のFIRフィルタ処理の画像処理演算の結果として出力する。
より具体的には、処理演算部52の入力ポートIn1には画像データDtmpが時系列的に入力される。また、処理演算部52の係数ポートC1には3つ目(3行目)の画像データに対応した乗算係数=CVが、係数ポートC2には2つ目(2行目)の画像データに対応した乗算係数=CVが、係数ポートC3には1つ目(1行目)の画像データに対応した乗算係数=CVが、それぞれ入力される。そして、処理演算部52の出力ポートOut1から画像データD’を出力する。
処理演算部52内の遅延素子511と遅延素子512とのそれぞれは、入力ポートIn1に時系列的に入力された画像データDtmpを順次遅延させ、3つ分(3行分)の画像データ(現データ、1段遅延データ、および2段遅延データ)を、有効フラグ付加回路601に出力する。なお、このとき、2段遅延データは1つ目(1行目)の画像データであり、1段遅延データは2つ目(2行目)の画像データであり、現データは3つ目(3行目)の画像データである。
上述したように、処理演算部52による垂直方向の1次元のFIRフィルタ処理は、3行分の画像データDtmpが揃ったときに、演算処理を実行する。従って、有効フラグ付加回路601が、それぞれの画像データに有効フラグを付加することによって、3行分の画像データDtmpが揃ったタイミングを判定する。
処理演算部52内のカウンタ611は、画像データDtmpが入力される毎に、サイクル数をダウンカウントし、カウントしたサイクル数の値(“2”、“1”、または“0”)を、比較器612に出力する。また、処理演算部52内の比較器612は、カウンタ611から入力されたサイクル数の値と、予め定めた値=0とを比較し、カウンタ611から入力されたサイクル数の値が“0”となったときに、例えば、比較結果=1をセレクタ613に出力する。また、処理演算部52内のセレクタ613は、比較器612から入力された比較結果に基づいて、例えば、有効な画像データであることを表す有効フラグの値=1、または無効な画像データであることを表す有効フラグの値=0を、有効フラグ付加回路601に出力する。また、処理演算部52内の有効フラグ付加回路601は、セレクタ613から入力された有効フラグの値を、実際に現データ、1段遅延データ、および2段遅延データに付加して、セレクタ520に出力する。
このようなカウンタ611、比較器612、セレクタ613、および有効フラグ付加回路601の動作によって、処理演算部52による垂直方向の1次元のFIRフィルタ処理では、入力される画像データDtmpの3つ目毎(3行目毎)、すなわち、3行分の画像データDtmpが揃う毎に、現データ、1段遅延データ、および2段遅延データに対して、有効な画像データであることを表す有効フラグの値=1が付加される。なお、有効フラグ付加回路601は、3行分の画像データDtmpが揃う毎に、現データのみに有効な画像データであることを表す有効フラグの値=1が付加することもできる。
処理演算部52内のセレクタ520は、有効フラグの値=1が付加された現データ、1段遅延データ、および2段遅延データが有効フラグ付加回路601から入力されたときに、入力された現データ、1段遅延データ、および2段遅延データを、対応する乗算器531、乗算器532、および乗算器533のそれぞれに出力する。なお、処理演算部52内の有効フラグ付加回路601が、3行分の画像データDtmpが揃ったときに、現データのみに有効フラグの値=1を付加する場合には、セレクタ520は、有効フラグの値=1が付加された現データが有効フラグ付加回路601から入力されたときに、入力された現データと、同時に入力されている1段遅延データおよび2段遅延データとを、対応する乗算器531、乗算器532、および乗算器533のそれぞれに出力する。
処理演算部52内のセレクタ562は、対応する係数ポートC2から入力された乗算係数=CVを乗算器532に出力し、処理演算部52内のセレクタ563は、対応する係数ポートC3から入力された乗算係数=CVを乗算器533に出力する。
処理演算部52内の乗算器531は、セレクタ520から入力された現データに対して、対応する係数ポートC1から入力された乗算係数=CVを乗算し、セレクタ620に出力する。また、処理演算部52内の乗算器532は、セレクタ520から入力された1段遅延データに対して、セレクタ562から入力された乗算係数=CVを乗算し、セレクタ620に出力する。また、処理演算部52内の乗算器533は、セレクタ520から入力された2段遅延データに対して、セレクタ563から入力された乗算係数=CVを乗算し、セレクタ580を介して、セレクタ620に出力する。
処理演算部52内のセレクタ620は、乗算器531が乗算した結果(現データ×CV)の画像データと、乗算器532が乗算した結果(1段遅延データ×CV)の画像データとを加算器541に出力する。また、処理演算部52内のセレクタ620は、セレクタ580を介して入力された、乗算器533が乗算した結果(2段遅延データ×CV)の画像データを加算器542に出力する。
処理演算部52内の加算器541は、セレクタ620から入力された画像データ(現データ×CV)と、画像データ(1段遅延データ×CV)とを加算し、加算器542に出力する。また、処理演算部52内の加算器542は、加算器541から入力された画像データ((現データ×CV)+(1段遅延データ×CV))と、セレクタ620から入力された画像データ(2段遅延データ×CV)とを加算し、セレクタ590を介して、処理演算部52が演算処理した結果の画像データD’として、出力ポートOut1から出力する。
このように、処理演算部52は、入力ポートIn1に時系列的に入力されたそれぞれの画像データDtmpに対して、対応する係数ポートC1〜C2のそれぞれに入力された乗算係数での乗算を行った後、累積加算した結果の画像データD’を出力することによって、垂直方向に3タップの1次元のFIRフィルタ処理を実行する。
上記に述べたように、本実施形態の画像処理装置1では、2つの処理演算部50を用いて、水平方向と垂直方向とに分けてそれぞれの1次元のFIRフィルタ処理を行うことで、入力された画像データに対する3×3タップの2次元のFIRフィルタ処理の画像処理演算を実行する。
なお、本第3の画像処理では、処理演算部50の基本的な構成に追加された有効フラグ(Valid)付加処理の機能を使用して、3行分の画像データDtmpが揃ったタイミングを判定する場合について説明した。しかし、例えば、図10に示したラインメモリ342g、343g、および344gに記憶された3行分の同一列の画像データDtmpを同時に読み出すことができるなど、処理演算部52に同一の列の画像データDtmpを同時に入力することができる場合には、3行分の画像データDtmpが揃ったタイミングを判定せずに、垂直方向の1次元のFIRフィルタ処理を実行することができる。この場合には、例えば、ラインメモリ342gに記憶された画像データDtmpが入力ポートIn1に、ラインメモリ343gに記憶された画像データDtmpが入力ポートIn2に、ラインメモリ344gに記憶された画像データDtmpが入力ポートIn3に、それぞれ同時に入力する。そして、処理演算部52内のセレクタ520は、入力ポートIn1〜In3のそれぞれに同時に入力されたそれぞれの画像データDtmpを、対応する乗算器531、乗算器532、および乗算器533のそれぞれに出力することになる。
なお、本第3の画像処理では、図5に示した3チャンネルの入力に対応した処理演算部50を用いて、3×3タップの2次元のFIRフィルタ処理を実行する場合について説明したが、処理演算部50がさらに多くのチャンネルの入力に対応した処理演算部である場合には、さらに多くのタップ数の2次元のFIRフィルタ処理を実行することができる。
より具体的には、処理演算部50に、FIRフィルタ処理を実行するタップ数と同じ数の入力ポートおよび係数ポートを備え、それぞれの入力ポートから入力された画像データとそれぞれの係数ポートから入力された乗算係数とを乗算する乗算器と、それぞれの乗算器が乗算した画像データを加算する加算器とをさらに備える。または、処理演算部50に、FIRフィルタ処理を実行するタップ数−1段の遅延素子と、FIRフィルタ処理を実行するタップ数と同じ数の乗算器と、それぞれの乗算器が乗算した画像データを加算する加算器とをさらに備え、FIRフィルタ処理を実行するタップ数に応じた有効フラグ付加処理を実行する。このような構成にすることによって、さらに多くのタップ数に対応したFIRフィルタ処理を実行することができる処理演算部50を構成することができる。
<第4の画像処理>
次に、画像処理装置1において実行する画像処理の別の一例について説明する。本第4の画像処理では、画像処理装置1に備えた2つの処理演算部50を用いて、入力された画像データの3行×3列のブロックにおける画像データのブロック加算平均処理を、画像処理装置1における画像処理演算として実行する。なお、画像処理装置1の構成は、図8に示した第3の画像処理を行う場合の構成と同様である。
本第4の画像処理においても、第3の画像処理と同様に、画像データの3行×3列のブロックを、水平方向と垂直方向とに分けて、水平方向の1行×3列のブロック加算平均処理と、垂直方向の3行×1列のブロック加算平均処理とを行うことで、3行×3列のブロック加算平均処理を実現する。従って、本第4の画像処理においては、図8に示した処理演算部51が水平方向の1行×3列のブロック加算平均処理を行い、処理演算部52が垂直方向の3行×1列のブロック加算平均処理を行う。
また、本第4の画像処理においても、第3の画像処理と同様に、処理演算部51が水平方向にブロック加算平均した画像データを、処理演算部52が垂直方向にブロック加算平均する必要があるため、水平方向から垂直方向への変換にバッファ340に構成された、図8に示したラインメモリ340gと同様の構成のラインメモリを使用する。ただし、ラインメモリのデータ数は、ラインメモリ340gと異なり、ブロック加算平均処理に対応したデータ数である。なお、バッファ340内のバッファ制御部30に備えたそれぞれのレジスタの設定についての説明は省略する。また、ラインメモリ340における水平方向から垂直方向への変換方法は、第3の画像処理と同様であるため、説明は省略する。
また、処理演算部51と処理演算部5とのそれぞれが行うブロック加算平均の演算処理は、第3の画像処理において、処理演算部52が実行した演算処理と同様に考えることができる。ただし、ブロック加算平均の演算処理では、乗算器531、乗算器532、および乗算器533による乗算を行わない。つまり、処理演算部51と処理演算部5とのそれぞれに備えたセレクタ520は、有効フラグ付加回路601から入力された現データ、1段遅延データ、および2段遅延データを、そのままセレクタ620に出力する。
ここで、処理演算部50によるブロック加算平均処理について説明する。図12は、本実施形態の画像処理装置1による第4の画像処理において水平方向または垂直方向の処理を行う場合の処理演算部50内の画像データの流れを示した図である。本第4の画像処理においては、それぞれの処理演算部50に入力される画像データが、ブロック加算平均処理を実行する前の画像データであるか、水平方向のブロック加算平均処理を実行した後の画像データであるかが異なるのみで、演算処理する際の処理演算部50内の画像データの流れは同じである。なお、図12には、処理演算部50の演算処理において使用される処理経路を、太線で示している。
以下の説明においては、処理演算部51が、水平方向にブロック加算平均の演算処理をする場合について説明する。なお、本第4の画像処理において使用するラインメモリは、上述したようにデータ数が異なるが、図8に示したラインメモリ340gであるものとして説明する。
処理演算部51には、入力ポートIn1に水平方向、すなわち、行方向の画像データDが時系列的に入力される。そして、処理演算部51は、3つの画像データD、すなわち、3列分の画像データDが揃ったときに、入力されたそれぞれの画像データDに対してブロック加算平均処理を実行し、加算平均した画像データDtmpを、処理演算部51がブロック加算平均処理した結果として、出力ポートOut1から出力し、ラインメモリ340gに記憶させる。
処理演算部51内の遅延素子511と遅延素子512とのそれぞれは、入力ポートIn1に時系列的に入力された画像データDを順次遅延させ、3つ分(3列分)の画像データ(現データ、1段遅延データ、および2段遅延データ)を、有効フラグ付加回路601に出力する。なお、このとき、2段遅延データは1つ目(1列目)の画像データであり、1段遅延データは2つ目(2列目)の画像データであり、現データは3つ目(3列目)の画像データである。
上述したように、処理演算部51による水平方向のブロック加算平均処理は、3列分の画像データD毎に演算処理を実行する。従って、有効フラグ付加回路601が、3列の区切りとなる画像データに有効フラグを付加することによって、加算平均処理を実行する画像データDのタイミングを判定する。なお、カウンタ611、比較器612、セレクタ613、および有効フラグ付加回路601の動作は、第3の画像処理におけるカウンタ611、比較器612、セレクタ613、および有効フラグ付加回路601の動作と同様に考えることができるため、説明は省略する。
処理演算部51内のセレクタ520は、有効フラグの値=1が付加された現データ、1段遅延データ、および2段遅延データが有効フラグ付加回路601から入力されたときに、入力された現データ、1段遅延データ、および2段遅延データを、セレクタ620に出力する。なお、処理演算部51内の有効フラグ付加回路601が、3列分の画像データDが揃ったときに、現データのみに有効フラグの値=1を付加する場合には、セレクタ520は、有効フラグの値=1が付加された現データが有効フラグ付加回路601から入力されたときに、入力された現データと、同時に入力されている1段遅延データおよび2段遅延データとを、セレクタ620に出力する。
処理演算部51内のセレクタ620は、セレクタ520から入力された現データと、1段遅延データとを加算器541に出力する。また、処理演算部51内のセレクタ620は、セレクタ520から入力された2段遅延データを加算器542に出力する。
処理演算部51内の加算器541は、セレクタ620から入力された現データと1段遅延データとを加算し、加算器542に出力する。また、処理演算部51内の加算器542は、加算器541から入力された画像データ(現データ+1段遅延データ)と、セレクタ620から入力された2段遅延データとを加算し、除算器630に出力する。
処理演算部51内の除算器630は、加算器542から入力された画像データ(現データ+1段遅延データ+2段遅延データ)を、入力された画像データDの数で除算し、セレクタ590を介して、処理演算部51が演算処理した結果の画像データDtmpとして、出力ポートOut1から出力する。なお、本第4の画像処理は、3行×3列のブロック加算平均処理であるため、水平方向または垂直方向のそれぞれのブロック加算平均処理を行う処理演算部51に入力される画像データDの数は、“3”である。従って、除算器630は、加算器542から入力された画像データ(現データ+1段遅延データ+2段遅延データ)を、“3”で除算した結果を、画像データDtmpとしてセレクタ590を介して出力ポートOut1から出力する。
このように、処理演算部51は、入力ポートIn1に時系列的に入力されたそれぞれの画像データDを加算平均した結果の画像データDtmpを出力することによって、水平方向の1行×3列のブロック加算平均処理を実行する。
その後、画像処理装置1による本第4の画像処理でも、第3の画像処理と同様に、処理演算部52が、ラインメモリ340gに記憶されている水平方向のブロック加算平均処理の結果である画像データDtmpの内、同一の列の画像データDtmpを読み出す、すなわち、垂直方向に読み出して、垂直方向の3行×1列のブロック加算平均処理とを行う。
なお、処理演算部52による垂直方向のブロック加算平均処理は、上述した処理演算部51による水平方向のブロック加算平均処理における、画像データDを画像データDtmpに置き換え、画像データDtmpを画像データD’に置き換えることで、処理演算部51によるブロック加算平均処理と同様に考えることができる。従って、処理演算部52による垂直方向のブロック加算平均処理についての説明は省略する。
上記に述べたように、本実施形態の画像処理装置1では、2つの処理演算部50を用いて、水平方向と水平方向とに分けてそれぞれのブロック加算平均処理を行うことで、入力された画像データに対する3行×3列のブロック加算平均処理の画像処理演算を実行する。
なお、本第4の画像処理では、処理演算部50の基本的な構成に追加された有効フラグ(Valid)付加処理の機能を使用した場合について説明したが、演算処理に用いる画像データを同時に処理演算部50に入力することができる場合には、第3の画像処理と同様に、有効フラグ付加処理の機能を使用せずに、ブロック加算平均処理を実行することができる。
なお、本第4の画像処理では、図5に示した3チャンネルの入力に対応した処理演算部50を用いて、3行×3列のブロック加算平均処理を実行する場合について説明したが、処理演算部50がさらに多くのチャンネルの入力に対応した処理演算部である場合には、さらに多くの行および列のブロック加算平均処理を実行することができる。
より具体的には、処理演算部50に、ブロック加算平均処理を実行する行または列の大きい方と同じ数の入力ポートを備え、それぞれの入力ポートから入力された画像データを加算する加算器をさらに備える。または、処理演算部50に、ブロック加算平均処理を実行する行または列の大きい方の数−1段の遅延素子と、それぞれの遅延素子から入力された画像データを加算する加算器をさらに備え、ブロック加算平均処理を実行する行または列の大きい方と同じ数に応じた有効フラグ付加処理を実行する。このような構成にすることによって、さらに多くの行および列に対応したブロック加算平均処理を実行することができる処理演算部50を構成することができる。
上記に述べたとおり、本発明を実施するための形態によれば、画像処理装置に備えたプロセッサ(CPU)の数とハードウェアアクセラレータ(処理演算部)の数との合計の数−1個に、物理的に分割されたバッファによって、1つ以上のプロセッサと1つ以上のハードウェアアクセラレータとのそれぞれが、演算処理に用いる画像データを受け渡しする。これにより、本発明を実施するための形態では、ハードウェアアクセラレータによる画像処理の高速化と、プロセッサによる画像処理のプログラマビリティとを両立することができる。
また、本発明を実施するための形態によれば、画像処理装置に備えたバッファ制御部によって、バッファの記憶領域の大きさを任意に変更する。これにより、本発明を実施するための形態では、画像処理装置が画像処理する画像の画角やフィルタのサイズ(タップ数)に応じたバッファを、事前に準備することができる。このことにより、本発明を実施するための形態では、それぞれの画像処理に対して個別に十分な大きさのバッファをそれぞれ準備する場合に比べて、バッファの記憶領域を効率的に使用することができ、メモリ部の面積効率を向上し、画像処理装置に係るコストを削減することができる。
また、本発明を実施するための形態によれば、画像処理装置に備えたハードウェアアクセラレータ(処理演算部)が実行する演算処理を、画像処理装置が実行する画像処理に応じて任意に変更することができる。これにより、本発明を実施するための形態では、画像処理装置において排他的に実行する画像処理演算同士で、それぞれの演算処理を実行する処理演算部を共有することができる。
また、本発明を実施するための形態によれば、画像処理装置に備えたハードウェアアクセラレータが実行する演算処理を、FIRフィルタ処理、マトリックス演算、アルファブレンディング処理、コアリング処理、ブロック累積加算処理、またはブロック加算平均処理のような、ある程度まとまった演算処理の単位で変更する。これにより、本発明を実施するための形態では、演算処理の変更に伴う構成要素の数を少なくすることができ、画像処理装置の回路規模やコストを削減することができる。
なお、本実施形態においては、処理演算部50が、3チャンネルの入力に対応している場合の構成について説明した。しかし、処理演算部50が対応するチャンネル入力の数は、本発明を実施するための形態に限定されるものではなく、処理演算部50の構成を追加することによって、さらに多くのチャンネルの入力に対応した処理演算部を構成することができる。この場合、それぞれの処理演算部は、画像処理装置が実行する画像処理において、最大のチャンネル数に対応していることが望ましい。ただし、画像処理装置に備える全ての処理演算部が、最大のチャンネル数に対応していない場合でも、同時に実行する画像処理演算のそれぞれに対応した適切なチャンネル数の処理演算部を備えていれば、所望の画像処理演算を実現することができる。
以上、本発明の実施形態について、図面を参照して説明してきたが、具体的な構成はこの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の変更も含まれる。
1・・・画像処理装置
10,11,12・・・CPU(プロセッサ)
20・・・バス
210・・・書き込みアドレスデコーダ
220・・・読み出しアドレスデコーダ
30,31,32,33・・・バッファ制御部
311,321,331・・・データ幅レジスタ
312,322,332・・・ライン数レジスタ
313,323,333・・・バッファ段数レジスタ
40,41,42,43・・・メモリ部
50,51,52,53・・・処理演算部(ハードウェアアクセラレータ)
511,512・・・遅延素子
520・・・セレクタ(データセレクタ)
531,532,533・・・乗算器
541,542・・・加算器
550・・・減算器
562・・・セレクタ(第1の係数セレクタ)
563・・・セレクタ(第2の係数セレクタ)
570・・・クリップ回路
580・・・セレクタ(乗算結果セレクタ)
590・・・セレクタ(出力セレクタ)
601・・・有効フラグ付加回路
611・・・カウンタ
612・・・比較器
613・・・セレクタ(有効フラグセレクタ)
620・・・セレクタ(第2のデータセレクタ)
630・・・除算器
340,340a,340b,340c,340d,340e,340f,340g,341g,342g,343g,344g・・・バッファ(バッファ領域)

Claims (9)

  1. 画像データに対してソフトウエアに応じた演算処理を行う1つ以上のプロセッサと、
    前記画像データに対して予め定めた演算処理を行う1つ以上のハードウェアアクセラレータと、
    前記プロセッサおよび前記ハードウェアアクセラレータが、それぞれの演算処理において用いる前記画像データを一時的に記憶するメモリ部と、
    前記メモリ部への前記画像データの書き込み、および前記メモリ部からの前記画像データの読み出しを制御するバッファ制御部と、
    を備え、
    前記メモリ部の記憶領域は、
    少なくとも、前記プロセッサの数と前記ハードウェアアクセラレータの数との合計の数−1個のバッファ領域に、物理的に分割され、
    前記バッファ制御部は、
    前記プロセッサおよび前記ハードウェアアクセラレータのそれぞれからのアクセスに応じて、分割されたそれぞれの前記バッファ領域の内、対応する前記バッファ領域に対する前記画像データの書き込みおよび読み出しを制御する、
    ことを特徴とする画像処理装置。
  2. 前記バッファ制御部は、
    前記プロセッサおよび前記ハードウェアアクセラレータのそれぞれが演算処理を実行する際に用いる画像データのデータ幅、演算処理においてアクセスするライン数、および演算処理に使用するバッファの段数に基づいて、前記プロセッサおよび前記ハードウェアアクセラレータのそれぞれに対応する前記バッファ領域に含まれる記憶領域に対する前記画像データの書き込みおよび読み出しを制御する、
    ことを特徴とする請求項1に記載の画像処理装置。
  3. 前記ハードウェアアクセラレータは、
    n(nは3以上の自然数)チャンネルの前記画像データと、n個の乗算係数が入力され、
    少なくとも1つの前記チャンネルに入力された前記画像データを順次遅延させた遅延データを出力する、少なくともn−1個の遅延素子と、
    入力されたデータに対して、対応する乗算係数での乗算を行うn個の乗算器と、
    入力されたそれぞれの前記チャンネルの前記画像データ、またはそれぞれの前記遅延素子によって遅延されたそれぞれの前記遅延データのいずれか一方のデータを選択し、該選択したそれぞれのデータを、対応する前記乗算器のそれぞれに出力するデータセレクタと、
    前記乗算器のそれぞれから出力された乗算結果を加算する、n−1個、または前記遅延素子の個数のいずれか大きい方の数と同数の加算器と、
    を備え、
    該ハードウェアアクセラレータは、
    全ての前記加算器が対応する前記乗算結果を加算した最終的な加算結果を、演算処理の結果として出力する、
    ことを特徴とする請求項2に記載の画像処理装置。
  4. 前記ハードウェアアクセラレータは、
    画像の透明度を表す1.0よりも小さい透明度係数が入力され、
    前記透明度係数に基づいて、画像の透明でない状態を表す透明度係数から、前記透明度係数を減算し、該減算した結果を逆透明度係数として出力する減算器と、
    入力されたいずれか1つの前記乗算係数、または前記逆透明度係数のいずれか一方の係数を選択し、該選択した係数を、該乗算係数に対応するいずれか1つの前記乗算器に出力する第1の係数セレクタと、
    入力された他のいずれか1つの前記乗算係数、または前記透明度係数のいずれか一方の係数を選択し、該選択した係数を、該他の乗算係数に対応する他のいずれか1つの前記乗算器に出力する第2の係数セレクタと、
    をさらに備える、
    ことを特徴とする請求項3に記載の画像処理装置。
  5. 前記ハードウェアアクセラレータは、
    少なくとも1つの前記乗算器に対応し、該乗算器が出力する乗算結果が予め定めた値よりも大きな値にならないように抑圧し、該抑圧した結果を抑圧乗算結果として出力するクリップ回路と、
    抑圧前の前記乗算結果、または抑圧後の前記抑圧乗算結果のいずれか一方の乗算結果を選択し、該選択した乗算結果を、対応する前記加算器に出力する乗算結果セレクタと、
    をさらに備える、
    ことを特徴とする請求項3または請求項4に記載の画像処理装置。
  6. 前記ハードウェアアクセラレータは、
    少なくとも1つの前記チャンネルに入力された前記画像データの数をカウントするカウンタと、
    前記カウンタがカウントした入力された前記画像データの数と、予め定めたカウント値とを比較し、該比較した結果である比較結果を出力する比較器と、
    前記比較結果に基づいて、現在入力された前記画像データが有効なデータであるか否か表す有効フラグの値を選択し、該選択した前記有効フラグの値を出力する有効フラグセレクタと、
    前記有効フラグの値を、現在入力された前記画像データに付加する有効フラグ付加回路と、
    をさらに備え、
    前記有効フラグ付加回路は、
    前記有効フラグの値を付加した有効フラグ付きの画像データ、または前記有効フラグの値を付加していない現在入力された前記画像データのいずれか一方の前記画像データを出力し、
    前記データセレクタは、
    入力されたそれぞれの前記チャンネルの前記画像データ、または 前記有効フラグ付加回路をから出力された画像データのいずれか一方のデータを選択して、対応する前記乗算器のそれぞれに出力する、
    ことを特徴とする請求項3から請求項5のいずれか1の項に記載の画像処理装置。
  7. 前記有効フラグ付加回路は、さらに、
    それぞれの前記遅延素子によって遅延されたそれぞれの前記遅延データに付加する、
    ことを特徴とする請求項6に記載の画像処理装置。
  8. 前記ハードウェアアクセラレータは、
    前記乗算器のそれぞれから出力された乗算結果、または前記データセレクタが選択したそれぞれのデータのいずれか一方のデータを選択し、該選択したそれぞれのデータを、対応する前記加算器のそれぞれに出力する第2のデータセレクタ、
    をさらに備え、
    前記加算器のそれぞれは、
    前記第2のデータセレクタから出力された対応する前記データを加算し、
    該ハードウェアアクセラレータは、
    全ての前記加算器が対応する前記データを加算した最終的な加算結果を、演算処理の結果として出力する、
    ことを特徴とする請求項3から請求項7のいずれか1の項に記載の画像処理装置。
  9. 前記ハードウェアアクセラレータは、
    前記最終的な加算結果を、該ハードウェアアクセラレータに入力された前記画像データの数で除算する除算器と、
    前記最終的な加算結果、または前記除算器から出力された除算結果のいずれか一方の結果を選択し、該選択した結果を、該ハードウェアアクセラレータの演算処理の結果として出力する出力セレクタと、
    をさらに備える、
    ことを特徴とする請求項3から請求項8のいずれか1の項に記載の画像処理装置。
JP2012113506A 2012-05-17 2012-05-17 画像処理装置 Pending JP2013239120A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012113506A JP2013239120A (ja) 2012-05-17 2012-05-17 画像処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012113506A JP2013239120A (ja) 2012-05-17 2012-05-17 画像処理装置

Publications (1)

Publication Number Publication Date
JP2013239120A true JP2013239120A (ja) 2013-11-28

Family

ID=49764075

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012113506A Pending JP2013239120A (ja) 2012-05-17 2012-05-17 画像処理装置

Country Status (1)

Country Link
JP (1) JP2013239120A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9363412B2 (en) 2014-04-18 2016-06-07 Ricoh Company, Limited Accelerator circuit and image processing apparatus
WO2017074072A1 (ko) * 2015-10-29 2017-05-04 주식회사 넥서스칩스 렌즈 왜곡 교정 장치 및 동작 방법
CN112989269A (zh) * 2021-03-26 2021-06-18 上海西井信息科技有限公司 加速器及加速器片内计算模块

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9363412B2 (en) 2014-04-18 2016-06-07 Ricoh Company, Limited Accelerator circuit and image processing apparatus
WO2017074072A1 (ko) * 2015-10-29 2017-05-04 주식회사 넥서스칩스 렌즈 왜곡 교정 장치 및 동작 방법
CN112989269A (zh) * 2021-03-26 2021-06-18 上海西井信息科技有限公司 加速器及加速器片内计算模块

Similar Documents

Publication Publication Date Title
US8346833B2 (en) Filter and method for filtering
US7778494B2 (en) FIR-based interpolation in advanced video codecs on VLIW processor
CN108073549B (zh) 卷积运算装置及方法
JP2009075676A (ja) マイクロプロセッサ
JP2015513837A (ja) パラレルスケーラ処理
JP3955741B2 (ja) ソート機能を有するsimd型マイクロプロセッサ
JP2013239120A (ja) 画像処理装置
JP4844406B2 (ja) データ処理装置、画像処理装置、及びデータ処理プログラム
US20070198811A1 (en) Data-driven information processor performing operations between data sets included in data packet
JP4856445B2 (ja) 画像合成装置及びその画像合成方法
WO2016197393A1 (zh) 并行多相位图像插值装置和方法
JP2007094846A (ja) リコンフィグ可能な画像処理用アドレス生成回路及びそれを有するリコンフィグlsi
JP2006201914A (ja) 画像フィルタ装置、方法およびコンピュータプログラム
US9262123B2 (en) Data processing apparatus and method for performing a narrowing-and-rounding arithmetic operation
WO2015101012A1 (zh) 一种实现解扰解扩的方法和矢量运算器、计算机存储介质
KR102667134B1 (ko) 싱글포트 메모리를 포함하는 신경망 하드웨어 가속기 및 그 동작 방법
WO2021035715A1 (zh) 数据处理方法和装置
US7412473B2 (en) Arithmetic circuitry for averaging and methods thereof
CN108833872B (zh) 一种yuy2颜色空间快速缩放或放大的方法
TWI616840B (zh) 卷積運算裝置及方法
JPH07146781A (ja) プロセツサ
JP4171319B2 (ja) 画像音声処理装置
Ngo et al. Neighborhood dependent approach for low power 2d convolution in video processing applications
JP2007102799A (ja) ソート機能を有するsimd型マイクロプロセッサ
JP4586114B1 (ja) 積和演算装置