(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0016】
<画像処理装置の全体構成>
図1は画像処理装置1の構成を示す図である。画像処理装置1は、処理対象画像に対して各種処理を行う装置であって、CPU(Central Processing Unit)2と、システムメモリ3と、画像処理回路4とを備えている。処理対象画像は、例えば、カメラで撮像された撮像画像、あるいは当該撮像画像に対して所定処理を行うことによって得られた画像である。CPU2、システムメモリ3及び画像処理回路4は、例えばバス5を介して相互に接続されている。
【0017】
CPU2は、一種のプロセッサであって、ソフトウェア(プログラム)を使用して動作する。CPU2は、画像処理装置1の他の構成を制御することによって、画像処理装置1全体の動作を統括的に管理する。CPU2が、システムメモリ3内の各種プログラム(各種ソフトウェア)を実行することによって、画像処理装置1には様々な機能が実現される。
【0018】
システムメモリ3は、例えば、DRAM(Dynamic Random Access Memory)あるいはSRAM(Static Random Access Memory)などで構成されている。システムメモリ3は、処理対象画像及び各種プログラム等を記憶する。
【0019】
画像処理回路4は、システムメモリ3から処理対象画像を読み出し、読み出した処理対象画像に対して処理を行う。画像処理回路4は、処理対象画像に対して、例えば、画像の座標変換を行う。そして、画像処理回路4は、処理対象画像に対する処理によって得られた画像をシステムメモリ3に書き込む。画像処理回路4は、例えば、ソフトウェアを使用せずに動作する回路であり、ソフウェアを使用して動作するプロセッサとは異なる。言い換えれば、画像処理回路4は、その機能の実現にソフトウェアを必要としないハードウェアである。以後、処理対象画像を「対象画像110」と呼ぶ。
【0020】
<画像処理回路の構成>
図2は画像処理回路4の構成を示す図である。
図2に示されるように、画像処理回路4は、DMA(Direct Memory Access)コントローラ10と、入力フレームバッファ11と、座標変換回路12と、記憶回路13と、処理回路14とを備えている。画像処理回路4は、DMAコントローラ10の働きにより、CPU2を介さずにシステムメモリ3にアクセスすることが可能である。これにより、画像処理回路4とシステムメモリ3との間では、CPU2を介さずにデータ転送が行われる。
【0021】
DMAコントローラ10は、システムメモリ3からデータを読み出すことが可能である。またDMAコントローラ10は、システムメモリ3に対してデータを書き込むことが可能である。DMAコントローラ10は、複数の画素データを記憶することが可能なバッファ100を有している。バッファ100は例えばFIFO(first in first out)バッファで構成されている。
【0022】
入力フレームバッファ11は、1フレーム分の対象画像110(1枚の対象画像110)を記憶することができる。つまり、入力フレームバッファ11は、1フレーム分の画像データを記憶することができる。DMAコントローラ10は、システムメモリ3内の対象画像110を入力フレームバッファ11に書き込む。具体的には、DMAコントローラ10は、対象画像110の複数の画素データをシステムメモリ3から読み出してバッファ100に一旦記憶する。そして、DMAコントローラ10は、バッファ100内の複数の画素データを入力フレームバッファ11に書き込む。この処理が複数回繰り返されることによって、1フレーム分の対象画像110(1フレーム分の対象画像110の画像データ)が入力フレームバッファ11に書き込まれる。DMAコントローラ10は、システムメモリ3に記憶されている複数枚の対象画像110を順次読み出して入力フレームバッファ11に順次記憶する。
【0023】
また、DMAコントローラ10は、処理回路14から出力される出力画像をシステムメモリ3に書き込む。具体的には、DMAコントローラ10は、処理回路14から出力される出力画像の複数の画素データを、バッファ100に一旦記憶する。そして、DMAコントローラ10は、バッファ100内の複数の画素データをシステムメモリ3に書き込む。この処理が複数回繰り返されることによって、1フレーム分の出力画像(1フレーム分の出力画像の画像データ)がシステムメモリ3に書き込まれる。
【0024】
座標変換回路12は、入力フレームバッファ11に記憶されている対象画像110に対して画像の座標変換を行う。座標変換が行われた対象画像110は処理回路14に入力される。座標変換回路12は、入力フレームバッファ11に新たな対象画像110が記憶されると、入力フレームバッファ11内の新たな対象画像110に対して画像の座標変換を行う。記憶回路13には、座標変換回路12で使用される各種パラメータが記憶されている。以後、座標変換が行われた対象画像110を「変換後対象画像110」と呼ぶことがある。また、単に「対象画像110」と言えば、座標変換が未だ行われていない対象画像110を意味する。
【0025】
処理回路14は、座標変換回路12で得られる変換後対象画像110に対して所定の処理を行う。例えば、処理回路14は、座標変換回路12で得られる複数枚の変換後対象画像110を合成し、それによって得られた合成画像を出力画像としてDMAコントローラ10に出力する。
【0026】
<座標変換回路について>
ここでは、まず座標変換回路12の動作の概要を説明した上で、座標変換回路12の構成及び詳細な動作について説明する。
【0027】
<座標変換回路の動作の概要>
座標変換回路12は、入力フレームバッファ11内の1枚の対象画像110を用いて複数種類の座標変換を行う。具体的には、座標変換回路12は、
図3に示されるように、入力フレームバッファ11内の1枚の対象画像110に対して、複数種類の座標変換のそれぞれを別々に行って、複数枚の処理画像115を生成する。処理画像115は変換後対象画像110である。以後、1枚の対象画像110に対して、複数種類の座標変換のそれぞれを別々に行って、複数枚の処理画像115を生成する処理を「個別変換処理」と呼ぶ。
【0028】
本例では、座標変換回路12は、画像のアフィン変換を行うための座標変換を対象画像110に対して行う。具体的には、座標変換回路12は、画像の回転を行うための回転用座標変換を対象画像110に対して行う。これにより、座標変換回路12では、対象画像110の回転が行われ、回転された対象画像110が処理画像115(変換後対象画像110)として得られる。ここで、画像の回転とは、画像に映る被写体の回転であって、画像が回転したとしても、画像の外形が変化するのではない。以後、回転された対象画像110を単に「回転画像」と呼ぶことがある。
【0029】
座標変換回路12は、入力フレームバッファ11内の1枚の対象画像110を用いて、画像の複数種類の回転をそれぞれ行うための複数種類の回転用座標変換を行う。本例では、座標変換回路12は、入力フレームバッファ11内の1枚の対象画像110に対して、複数種類の回転用座標変換のそれぞれを別々に行って、互いに回転角度が異なる複数枚の回転画像を生成する。座標変換回路12は、入力フレームバッファ11内に対象画像110が書き込まれるたびに、入力フレームバッファ11内の対象画像110に対して、複数種類の回転用座標変換のそれぞれを別々に行う。以後、座標変換回路12において、1枚の対象画像110に基づいて生成された、回転角度が互いに異なる一群の複数枚の回転画像を「回転画像群」と呼ぶことがある。また、1枚の対象画像110に対して、複数種類の回転用座標変換のそれぞれを別々に行うことを「回転画像群生成処理」と呼ぶことがある。回転画像群生成処理は、個別変換処理の一種である。
【0030】
<座標変換回路の詳細>
図4は座標変換回路12の構成を示す図である。
図4に示されるように、座標変換回路12は、座標変換を行う変換回路20と、記憶回路13を制御する制御回路21とを備えている。座標変換回路12は、例えば、CPU等とは異なり、ソフトウェアを使用せずに動作するハードウェアである。
【0031】
図4に示されるように、記憶回路13には、座標変換で使用される変換パラメータリスト130が記憶されている。変換パラメータリスト130には、複数種類の座標変換においてそれぞれ必要な複数種類の変換パラメータ131が含まれている。変換パラメータリスト130は、後述するように、CPU2によって記憶回路13に書き込まれる。
【0032】
変換回路20は、入力フレームバッファ11内の1枚の対象画像110に対して、複数種類の回転用座標変換のそれぞれを別々に行って回転画像群を生成する。変換パラメータリスト130には、回転用座標変換において必要な回転用変換パラメータ131(以後、「回転パラメータ132」と呼ぶことがある)が含まれる。
【0033】
図5は、変換パラメータリスト130が記憶回路13に記憶されている様子の一例を示す図である。
図5に示されるように、変換パラメータリスト130には、画像の複数種類の回転をそれぞれ行うための複数種類の回転用座標変換においてそれぞれ必要な複数種類の回転パラメータ132が含まれている。変換パラメータリスト130には、例えば、画像を1°から360°まで回転するための360種類の回転パラメータ132が含まれている。記憶回路13では、回転角度が小さい回転パラメータ132ほど、アドレスが小さい記憶領域に記憶される。したがって、記憶回路13に記憶されている360種類の回転パラメータ132を、それが記憶されている記憶領域のアドレスが小さいもの順に見ると、360種類の回転パラメータ132は、回転角度が小さいもの順に並んでいる。
【0034】
変換回路20は、記憶回路13内の回転パラメータ132に基づいて、対象画像110に対して回転用座標変換を行う。これにより、対象画像110は、回転パラメータ132に応じた回転角度だけ回転する。変換回路20は、記憶回路13内の複数種類の回転パラメータ132を使用して、入力フレームバッファ11内の1枚の対象画像110に対して、複数種類の回転用座標変換のそれぞれを別々に行って、互いに回転角度が異なる複数枚の回転画像を生成する。なお本例では、対象画像110は、例えば、その重心の周りに時計回りで回転されるものとする。
【0035】
制御回路21は、記憶回路13から、複数種類の回転パラメータ132を順次読み出す。記憶回路13から読み出された回転パラメータ132は変換回路20に入力される。これにより、変換回路20には、制御回路21の働きにより、記憶回路13内の複数種類の回転パラメータ132が順次入力される。変換回路20は、回転パラメータ132が入力されるたびに、入力された回転パラメータ132に基づいて、入力フレームバッファ11内の対象画像110を回転し、それよって得られた回転画像を処理回路14に出力する。
【0036】
制御回路21はレジスタ22を有している。レジスタ22には、変換パラメータリスト130を構成する複数種類の回転パラメータ(本例では、360種類の回転パラメータ132)のうち、変換回路20で使用される複数種類の使用対象回転パラメータ132を特定するための特定情報220が記憶される。制御回路21は、レジスタ22内の特定情報220に基づいて、複数種類の使用対象回転パラメータ132を記憶回路13から順次読み出す。特定情報220は、後述するように、CPU2によってレジスタ22に設定される。
【0037】
図6は特定情報220の一例を示す図である。
図6に示されるように、特定情報220には、例えば、使用パラメータ数221、使用開始位置222及び使用間隔223が含まれる。本例では、座標変換回路12は、複数種類の使用対象回転パラメータ132を、それに対応する回転角度が小さいもの順に使用して、回転角度が互いに異なる複数種類の回転用座標変換を1枚の対象画像110に対して連続的に行う。
【0038】
使用パラメータ数221は、回転画像群生成処理において使用される回転パラメータ132の種類の数を示している。本例では、対象画像110に対して、1種類の回転パラメータが使用されて1回の座標変換が行われることから、使用パラメータ数221は、1枚の対象画像110についての座標変換回数を示していると言える。使用パラメータ数221が例えば「180」を示す場合には、変換回路20は、1枚の対象画像110に対して、180種類の回転用座標変換のそれぞれを別々に行って、互いに回転角度が異なる180枚の回転画像を連続的に生成する。
【0039】
使用開始位置222は、回転画像群生成処理において、最初に使用される使用対象回転パラメータ132の格納位置、つまり最初に使用される使用対象回転パラメータ132が記憶される記憶領域のアドレスを示している。
図5の例において、使用開始位置222が例えば「0001h」を示す場合、回転画像群生成処理では、対象画像110を2°回転させるための回転パラメータ132が最初に使用される。
【0040】
使用間隔223は、あるタイミングで回転用座標変換を行う場合に、回転角度が小さいもの順に並ぶ複数種類の回転パラメータ132において、前回の回転用座標変換で使用された回転パラメータ132から何個離れた回転パラメータ132を使用するかを示している。例えば、使用間隔223が「2」を示す場合、あるタイミングで回転用座標変換を行う際には、前回の回転用座標変換で使用された回転パラメータ132(例えば、対象画像110を2°回転させるための回転パラメータ132)から2個離れた回転パラメータ132(例えば、対象画像110を4°回転させるための回転パラメータ132)が使用される。
【0041】
以上より、回転画像群生成処理において、入力フレームバッファ11内の1枚の対象画像110を2°から360°まで2°ずつ回転させる場合には、使用パラメータ数221が「180」となり、使用開始位置222が「0001h」となり、使用間隔223が「2」となる。この場合、制御回路21による記憶回路13に対する制御によって、記憶回路13からは、回転角度が2°の回転パラメータ132、回転角度が4°の回転パラメータ132、回転角度が6°の回転パラメータ132、・・・回転角度が360°の回転パラメータ132が順次読み出されて、変換回路20に順次入力される。これにより、変換回路20では、
図7に示されるように、回転角度が2°ずつ異なる180枚の回転画像120が順次生成される。
【0042】
変換回路20は、回転画像120を1枚ずつ処理回路14に出力する。そして、変換回路20は、回転画像120を構成する複数の画素を1画素ずつ処理回路14に出力する。つまり、変換回路20は、回転画像120の画像データを構成する複数の画素データを1画素分ずつ処理回路14に出力する。変換回路20は、回転画像120の画素データを生成するたびに、生成した画素データを出力する。
【0043】
このように、座標変換回路12では、特定情報220によって、複数種類の使用対象回転パラメータ132が特定されることから、特定情報220によって、座標変換回路12がどのような座標変換を行うかを決定することができる。
【0044】
例えば、
図5の例において、使用パラメータ数221に「360」を設定し、使用開始位置222に「0000h」を設定し、使用間隔223に「1」を設定すると、入力フレームバッファ11内の1枚の対象画像110が1°から360°まで1°ずつ回転させられて、360枚の回転画像120が生成される。
【0045】
また、使用パラメータ数221を「36」に設定し、使用開始位置222を、回転角度が10°の回転パラメータ132が記憶される記憶領域のアドレスに設定し、使用間隔223を「10」に設定すると、入力フレームバッファ11内の1枚の対象画像110が10°から360°まで10°ずつ回転させられて、36枚の回転画像120が生成される。
【0046】
また、使用パラメータ数221を「18」に設定し、使用開始位置222を、回転角度が270°の回転パラメータ132が記憶される記憶領域のアドレスに設定し、使用間隔223を「5」に設定すると、入力フレームバッファ11内の1枚の対象画像110が270°から360°まで5°ずつ回転させられて、18枚の回転画像120が生成される。
【0047】
また、特定情報220によって、複数種類の使用対象回転パラメータ132が特定されることから、複数の画像処理装置1の間で、座標変換回路12が使用する特定情報220を異ならせることによって、複数の画像処理装置1の間で互いに異なる座標変換を実行させることができる。
【0048】
また、一つの画像処理装置1において、複数種類の特定情報220が使用されても良い。この場合には、座標変換回路12は、ある対象画像110に対して座標変換を行う場合には第1特定情報220を使用し、別の対象画像110に対して座標変換を行う場合には第1特定情報220とは異なる第2特定情報220を使用する。これにより、座標変換回路12は、複数枚の対象画像110に対して、互いに異なる座標変換を行うことができる。
【0049】
<回転パラメータの一例>
対象画像110の座標変換では、変換後対象画像110における、ある座標Zでの画素として、対象画像110における、当該ある座標Zに対応する座標CZでの画素が採用される。言い換えれば、対象画像110の座標変換では、変換後対象画像110における、ある座標Zでの画素データ(画素値)として、対象画像110における、当該ある座標Zに対応する座標CZでの画素データ(画素値)が採用される。対象画像110において、変換後対象画像110でのある座標Zに対応する座標CZに画素が存在しない場合には、その対応する座標CZでの画素データは、当該対応する座標CZの周辺の複数の座標PCZに存在する複数の画素の画素データを用いた補間によって求められる。この画素補間には、例えば、バイリニア補間あるいはバイキュービック補間などが使用される。
【0050】
図8は回転パラメータ132の一例を説明するための図である。本例では、回転パラメータ132には、回転画像(変換後対応画像)での4隅の画素の座標A1,B1,C1,D1にそれぞれ対応する、対象画像110での4つの座標A0,B0,C0,D0が含まれている。言い換えれば、回転パラメータ132には、回転画像での4隅の画素についての対象画像110での写像元の画素の座標A0,B0,C0,D0が含まれている。
【0051】
変換回路20は、記憶回路13から回転パラメータ132が入力されると、入力された回転パラメータ132に含まれる4つの座標A0,B0,C0,D0に基づいて、変換後対象画像110を構成する複数の画素の座標にそれぞれ対応する、対象画像110での複数の座標を求める。そして、変換回路20は、対象画像110に関して求めた複数の座標のそれぞれでの画素データを、対象画像110を構成する複数の画素の画素データに基づいて決定する。このとき、必要に応じて画素補間が使用される。その後、変換回路20は、変換後対象画像110における各座標での画素データとして、対象画像110における、対応する座標での画素データを採用する。これにより、変換回路20では、入力された回転パラメータ132に基づいて対象画像110が回転され、回転画像が生成される。つまり、変換回路20では、回転画像の画像データが生成される。変換回路20で生成された、回転画像の画像データは、処理回路14に入力される。
【0052】
なお、対象画像110に対して所定の座標変換を行うことによって、対象画像110に含まれる、たる型歪み等の画像歪みを補正することができる。そこで、変換パラメータ131として、回転用座標変換と歪み補正用座標変換の両方に対応した変換パラメータ131を記憶回路13に記憶し、座標変換回路12は、記憶回路13内の変換パラメータ131に基づいて、対象画像110に対して回転用座標変換と歪み補正を同時に行っても良い。上記の特許文献2及び3には、たる型歪みの補正技術が開示されている。
【0053】
<処理回路について>
ここでは、まず処理回路14の動作の概要を説明した上で、処理回路14の構成及び詳細な動作について説明する。
【0054】
<処理回路の動作の概要>
処理回路14は、
図9に示されるように、座標変換回路12で生成される回転画像群121を構成する複数枚の回転画像120を合成し、それによって得られた合成画像140を出力画像としてDMAコントローラ10に出力する。処理回路14は、1フレーム分の画像を記憶することが可能なフレームメモリを有しており、当該フレームメモリを用いて合成画像140を生成する。
【0055】
図10は処理回路14の動作の概要を説明するための図である。処理回路14は、回転画像群121を構成するN枚の回転画像120を順番に積算することによって合成画像140を生成する。
【0056】
図10に示されるように、処理回路14は、回転画像群121のうち、変換回路20で最初に生成された回転画像120−1(上記の
図7の例では回転角度が2°の回転画像)をフレームメモリに記憶する。
【0057】
処理回路14は、回転画像群のうち、変換回路20で2番目に生成された回転画像120−2(上記の
図7の例では回転角度が4°の回転画像)を、フレームメモリ内の最初の回転画像120−1に対して加算して1回積算画像150−1を生成する。処理回路は、1回積算画像150−1をフレームメモリに記憶する。
【0058】
処理回路14は、回転画像群のうち、変換回路20で3番目に生成された回転画像120−3(上記の
図7の例では回転角度が6°の回転画像)を、フレームメモリ内の1回積算画像150−1に対して加算して2回積算画像150−2を生成する。処理回路14は、2回積算画像150−2をフレームメモリに記憶する。
【0059】
以後、処理回路14は同様に動作して、処理回路14は、回転画像群のうち、変換回路20で最後に生成された回転画像120−N(上記の
図7の例では回転角度が360°の回転画像)を、フレームメモリ内の(N−2)回積算画像150−(N−2)に対して加算して(N−1)回積算画像150−(N−1)を生成する。この(N−1)回積算画像150−(N−1)が合成画像140となる。処理回路14は、合成画像140をフレームメモリに記憶する。フレームメモリ内の合成画像140はDMAコントローラ10に出力される。以後、1回積算画像150−1、2回積算画像150−2、・・・(N−1)回積算画像150−(N−1)を特に区別する必要がない場合には、それぞれを単に「積算画像150」と呼ぶ。
【0060】
<処理回路の詳細>
図11は処理回路14の構成を示す図である。
図11に示されるように、処理回路14は、フレームメモリ40と、記憶制御部41と、加算処理部42と、ライトバッファ43と、リードバッファ44と、出力制御部45とを備えている。処理回路14は、例えば、CPU等とは異なり、ソフトウェアを使用せずに動作するハードウェアである。したがって、記憶制御部41、加算処理部42及び出力制御部45は、それぞれ、記憶制御回路41、加算処理回路42及び出力制御回路45と呼ぶことができる。処理回路14は、画像データを処理する一種のデータ処理装置である。
【0061】
フレームメモリ40は、一種の記憶回路であって、例えばSRAMで構成されている。フレームメモリ40は、例えば、1フレーム分の画像(1枚の画像)を記憶することができる。つまり、フレームメモリ40は、1フレーム分の画像データを記憶することができる。フレームメモリ40は、複数フレーム分の画像を記憶することが可能であっても良い。
【0062】
出力制御部45は、フレームメモリ40から読み出されたデータが入力され、当該データについてのDMAコントローラ10への出力を制御する。出力制御部45は、動作モードとして、入力されるデータをDMAコントローラ10に出力する出力モードと、入力されるデータをDMAコントローラ10に出力しない非出力モードとを有している。出力制御部45は、基本的には非出力モードで動作し、フレームメモリ40から出力対象データが読み出されるときにだけ出力モードで動作する。これにより、フレームメモリ40から読み出された出力対象データは、出力制御部45からDMAコントローラ10に出力される。
【0063】
記憶制御部41は、フレームメモリ40、リードバッファ44、ライトバッファ43及び出力制御部45を制御する。記憶制御部41によるフレームメモリ40に対する制御によって、フレームメモリ40にデータが書き込まれたり、フレームメモリ40からデータが読み出されたりする。出力制御部45は、記憶制御部41による制御に応じて、フレームメモリ40から読み出されたデータについてのDMAコントローラ10への出力を制御する。なお、記憶制御部41については後で詳細に説明する。
【0064】
加算処理部42は、変換回路20で生成される回転画像を、記憶制御部41による制御によってフレームメモリ40から読み出される加算対象の画像に対して加算する。つまり、加算処理部42は、変換回路20で生成される、回転画像の画像データを、フレームメモリ40から読み出される、加算対象の画像の画像データに対して加算する。上述の
図10に示されるように、回転画像群のうち2番目の回転画像120−2についての加算対象の画像は、最初の回転画像120−1となり、m番目(mは変数で、3≦m≦N)の回転画像120−mについての加算対象の画像は、(m−2)回積算画像150−(m−2)となる。
【0065】
ここで、加算される2つの画像データの一方及び他方を「第1画像データ」及び「第2画像データ」とそれぞれ呼ぶ。そして、第1画像データを構成する複数の画素データのそれぞれを「第1画素データ」と呼び、第2画像データを構成する複数の画素データのそれぞれを「第2画素データ」と呼ぶ。加算処理部42は、第1画像データを構成する複数の第1画素データのそれぞれについて、当該第1画素データと、第2画像データにおける、当該第1画素データと同じ位置(座標)での第2画素データとを加算することによって、第1画像データと第2画像データとを加算する。
【0066】
本例では、座標変換回路12は、上述のように、回転画像120の画像データを構成する複数の画素データを1画素ずつ出力する。加算処理部42は、最初の回転画像120−1の画素データが入力画素データ125として入力されると、加算処理を行わずに、入力画素データ125をそのままライトバッファ43に書き込む。ライトバッファ43は、例えば4画素分の画素データを記憶することが可能である。ライトバッファ43に4画素分の画素データが蓄積されると、記憶制御部41によるフレームメモリ40に対する制御によって、ライトバッファ43内の4画素分の画素データはフレームメモリ40に一度に書き込まれる。これにより、フレームメモリ40に対しては4画素単位で画素データが書き込まれる。つまり、フレームメモリ40に対する1回のライトアクセスで、ライトバッファ43内の4画素分の画素データが書き込まれる。フレームメモリ40では、ライトバッファ43内の4画素分の画素データは、同じアドレスの記憶領域に書き込まれる。ライトバッファ43内のデータがフレームメモリ40に書き込まれると、書き込まれたデータはライトバッファ43から消去される。
【0067】
記憶制御部41によるフレームメモリ40に対する制御によって、フレームメモリ40からは、4画素単位で画素データが読み出される。つまり、フレームメモリ40に対する1回のリードアクセスで、フレームメモリ40から、同じアドレスの記憶領域に記憶されている4画素分の画素データが読み出される。フレームメモリ40から一度に読み出された4画素分の画素データはリードバッファ44に書き込まれる。
【0068】
加算処理部42は、入力画素データ125が、l番目(lは変数で、2≦l≦N)の回転画像120−lの画素データである場合、リードバッファ44から加算対象の画素データ165を読み出す。そして、加算処理部42は、リードバッファ44から読み出した画素データ165に対して入力画素データ125を加算する。これにより、加算処理部42では、(l−1)回積算画像150−(l−1)の画素データ155が得られる。加算処理部42は、(l−1)回積算画像150−(l−1)の画素データ155を、ライトバッファ43に記憶する。ライトバッファ43内の画素データはフレームメモリ40に記憶される。加算処理部42は、座標変換回路12から画素データが入力されるたびに同様の処理を行う。これにより、フレームメモリ40には、合成画像140((N−1)回積算画像150−(N−1))の画像データが記憶される。リードバッファ44からデータが読み出されると、読み出されたデータはリードバッファ44から消去される。
【0069】
このように、加算処理部42は、l番目の回転画像120の画素データを、リードバッファ44内の加算対象の画素データ165に対して加算して、(l−1)回積算画像150−(l−1)の画素データ155を生成する。例えば、2番目の回転画像120−2の画素データが入力画素データ125である場合、当該入力画素データ125についての加算対象の画素データ165は、最初の回転画像120−lにおける、当該入力画素データ125と同じ位置での画素データとなる。また、3番目の回転画像120−3の画素データが入力画素データ125である場合、当該入力画素データ125についての加算対象の画素データ165は、1回積算画像150−1における、当該入力画素データ125と同じ位置での画素データとなる。入力画素データ125についての加算対象の画素データ165は、記憶制御部41によるフレームメモリ40に対する制御によって、当該入力画素データ125が加算処理部42に入力されるときにはリードバッファ44に記憶されている。
【0070】
本例では、フレームメモリ40は、例えば1ポートメモリである。したがって、フレームメモリ40からデータが読み出されているときに、フレームメモリ40に対してデータを書き込むことはできない。
【0071】
また、処理回路14では、フレームメモリ40に対してリードモディファイライトが行われる。具体的には、フレームメモリ40のあるアドレスの記憶領域に記憶されている画素データは、フレームメモリ40から読み出された後、加算処理部42で加算処理が実行される。そして、加算処理された画素データは、当該あるアドレスと同じアドレスの記憶領域に書き戻される。言い換えれば、ライトバッファ43内の積算画像150の画素データ155がフレームメモリ40に対して書き込まれる場合には、加算処理部42において当該画素データ155の生成で使用された加算対象の画素データ165が読み出された記憶領域に対して、当該画素データ155が記憶される。
【0072】
本例では、フレームメモリ40から一度に4画素分の画素データが読み出されて、リードバッファ44に記憶される。また、ライトバッファ43内の4画素分の画素データがフレームメモリ40に対して一度に書き込まれる。処理回路14では、フレームメモリ40のあるアドレスの記憶領域に記憶されている4画素分の画素データは、フレームメモリ40から読み出されて、一旦リードバッファ44に記憶された後に、加算処理部42で加算処理が実行される。そして、加算処理された4画素分の画素データは、ライトバッファ43に一旦記憶された後に、当該あるアドレスと同じアドレスの記憶領域に書き戻される。
【0073】
このように、本例では、フレームメモリ40が1ポートメモリであって、フレームメモリ40に対してリードモディファイライトが行われる。したがって、フレームメモリ40の回路規模を小さくすることができる。
【0074】
フレームメモリ40内の合成画像140の画像データは、出力制御部45からDMAコントローラ10に出力される。記憶制御部41によるフレームメモリ40に対する制御によって、フレームメモリ40から、合成画像140の画素データ(出力対象データ)145が読み出されると、出力制御部45は、読み出された画素データ145をDMAコントローラ10に出力する。フレームメモリ40からは、4画素分の画素データが一度に読み出されることから、出力制御部45は、フレームメモリ40から読み出された、合成画像140の4画素分の画素データ145をDMAコントローラ10に出力する。フレームメモリ40から読み出された合成画像140の画素データ145は、記憶制御部41によるリードバッファ44に対する制御によって、リードバッファ44には記憶されない。
【0075】
DMAコントローラ10は、処理回路14から入力される画素データをバッファ100に一旦記憶する。バッファ100は、複数画素分の画素データを記憶することが可能である。DMAコントローラ10は、バッファ100が一杯になると、バッファ100内の複数画素分の画素データをシステムメモリ3に転送する。これにより、システムメモリ3には、画像処理回路4で生成された合成画像140(合成画像140の画像データ)が記憶される。DMAコントローラ10では、バッファ100内のデータがシステムメモリ3に転送されると、転送されたデータはバッファ100から消去される。なお、DMAコントローラ10は、バッファ100内のデータのデータ量が所定以上になると、バッファ100内のデータをシステムメモリ3に転送しても良い。
【0076】
<記憶制御部の詳細>
記憶制御部41は、加算処理部42で処理される加算対象の画素データ165をフレームメモリ40から読み出す第1読み出し処理(「処理対象読み出し処理」とも言う)を実行する。また、記憶制御部41は、加算処理部42で生成される、積算画像150の画素データ155を、フレームメモリ40に書き込む書込み処理を行う。積算画像150の画素データ155は、加算処理部42で処理された画素データ165であると言える。そして、記憶制御部41は、出力対象データである、合成画像140の画素データ145を、フレームメモリ40から読み出す第2読み出し処理(「出力対象読み出し処理」とも言う)を実行する。
【0077】
記憶制御部41は、第1読み出し要求出力部411、書き込み要求出力部412、第2読み出し要求出力部413及び調停部410を備えている。第1読み出し要求出力部411は、第1読み出し処理の実行要求である第1読み出し要求(「処理対象読み出し要求」とも言う)を出力する。書き込み要求出力部412は、書き込み要求の実行要求である書き込み要求を出力する。第2読み出し要求出力部413は、第2読み出し処理の実行要求である第2読み出し要求(「出力対象読み出し要求」とも言う)を出力する。
【0078】
第1読み出し要求出力部411は、第1読み出し要求を示す第1読み出し要求信号を出力する。第1読み出し要求信号には、フレームメモリ40において、読み出し対象の画素データ165が記憶される記憶領域のアドレスが含まれている。
【0079】
書き込み要求出力部412は、書き込み要求を示す書き込み要求信号を出力する。書き込み要求信号には、フレームメモリ40において、書き込み対象の画素データ155を書き込む記憶領域のアドレスが含まれている。
【0080】
第2読み出し要求出力部411は、第2読み出し要求を示す第2読み出し要求信号を出力する。第2読み出し要求信号には、フレームメモリ40において、読み出し対象の画素データ145が記憶される記憶領域のアドレスが含まれている。
【0081】
第1読み出し要求出力部411、書き込み要求出力部412及び第2読み出し要求出力部413は、互いに独立した基準に基づいて、第1読み出し要求、書き込み要求及び第2読み出し要求をそれぞれ出力する。
【0082】
第1読み出し要求出力部411は、例えば、リードバッファ44が空の場合に、第1読み出し要求(第1読み出し要求信号)を出力する。書き込み要求出力部412は、例えば、ライトバッファ43が一杯の場合に、書き込み要求(書き込み要求信号)を出力する。
【0083】
第2読み出し要求出力部413は、例えば、DMAコントローラ10のバッファ100の空き状況に基づいて、第2読み出し要求(第2読み出し要求信号)を出力する。例えば、第2読み出し要求出力部413は、バッファ100が空の場合、第2読み出し要求を出力する。あるいは、第2読み出し要求出力部413は、バッファ100の空き容量が所定量以上の場合(例えば、4画素分の画素データのデータ量以上の場合)、第2読み出し要求を出力する。言い換えれば、第2読み出し要求出力部413は、バッファ100での空いている記憶領域が記憶することが可能なデータ量が所定量以上の場合、第2読み出し要求を出力する。
【0084】
ただし、フレームメモリ40内に、出力対象データ、つまり合成画像140の画素データ145が記憶されていない場合には、記憶制御部41は出力対象データをフレームメモリ2から読み出すことができない。したがって、第2読み出し要求出力部413は、フレームメモリ40において、合成画像140の画素データ145が4画素分以上記憶されている場合であって、かつバッファ100が空の場合、第2読み出し要求を出力する。あるいは、第2読み出し要求出力部413は、フレームメモリ40において、合成画像140の画素データ145が4画素分以上記憶されている場合であって、かつバッファ100の空き容量が所定量以上の場合、第2読み出し要求を出力する。
【0085】
このように、第1読み出し要求出力部411、書き込み要求出力部412及び第2読み出し要求出力部413は、互いに独立した基準に基づいて、第1読み出し要求、書き込み要求及び第2読み出し要求をそれぞれ出力することから、第1読み出し要求、書き込み要求及び第2読み出し要求の少なくとも2つの要求が競合することがある。つまり、第1読み出し要求出力部411、書き込み要求出力部412及び第2読み出し要求出力部413の少なくとも2つから同時に要求が出力されることがある。
【0086】
そこで、記憶制御部41には、第1読み出し要求、書き込み要求及び第2読み出し要求の少なくとも2つの要求が競合する場合に、競合する少なくとも2つの要求を調停する調停部410が設けられている。
【0087】
調停部410は、第1読み出し要求、書き込み要求及び第2読み出し要求が競合しない場合には、入力される要求に応じた処理をフレームメモリ2に対して行う。一方で、調停部410は、第1読み出し要求、書き込み要求及び第2読み出し要求の少なくとも2つの要求が競合する場合には、競合する少なくとも2つの要求を調停することによって当該2つの要求の一つを選択する。そして、調停部410は、選択した要求に応じた処理をフレームメモリ2に対して行う。
【0088】
本例では、第1読み出し要求、書き込み要求及び第2読み出し要求に対して、処理の優先度が割り当てられている。例えば、第1読み出し要求に対して最も高い優先度が割てられて、書き込み要求に対して2番目に高い優先度が割り当てられ、第2読み出し要求に対しては最も低い優先度が割り当てられる。そして、調停部410は、競合する少なくとも2つの要求の優先度に基づいて、当該少なくとも2つの要求を調停する。調停部410では、競合する少なくとも2つの要求のうち、優先度が最も高い要求が選択され、選択された要求に応じた処理が行われる。したがって、例えば、第1読み出し要求、書き込み要求及び第2読み出し要求の3つの要求が競合する場合には、第1読み出し要求が選択される。また、書き込み要求及び第2読み出し要求の2つの要求が競合する場合には、書き込み要求が選択される。
【0089】
調停部410は、第1読み出し要求に応じた処理を行う場合には、第1読み出し要求出力部411から入力される第1読み出し要求信号に含まれるアドレスと、リード信号とをフレームメモリ40に出力する。これにより、フレームメモリ40における、第1読み出し要求信号に含まれるアドレスの記憶領域から4画素分の画素データが読み出されて、リードバッファ44に書き込まれる。調停部410が第1読み出し要求に応じた処理を行う際には、出力制御部45は非出力モードで動作していることから、フレームメモリ40から読み出されたデータが出力制御部45から出力されない。
【0090】
調停部410は、書き込み要求に応じた処理を行う場合には、ライトバッファ43から4画素分の画素データを読み出してフレームメモリ40に入力するとともに、書き込み要求出力部412から入力される書き込み要求信号に含まれるアドレスと、ライト信号とをフレームメモリ40に出力する。これにより、ライトバッファ43から出力される4画素分の画素データが、フレームメモリ40における、書き込み要求信号に含まれるアドレスの記憶領域に対して書き込まれる。
【0091】
調停部410は、第2読み出し要求に応じた処理を行う場合には、第2読み出し要求出力部413から入力される第2読み出し要求信号に含まれるアドレスと、リード信号とをフレームメモリ40に出力するとともに、出力制御部45の動作モードを非出力モードから出力モードに変更する。これにより、フレームメモリ40における、第2読み出し要求信号に含まれるアドレスの記憶領域から4画素分の画素データが読み出され、読み出された4画素分の画素データは、出力制御部45からDMAコントローラ10に出力される。
【0092】
なお、上記の例では、座標変換回路12での処理時間が比較的大きく、座標変換回路12において回転画像120の画素データがすぐに得られず、その結果、合成画像140の画素データ145(出力対象データ)が得られにくい状況を想定し、画像処理装置1全体での処理速度を向上するために、合成画像140の画素データ145の生成に必要な第1読み出し要求及び書き込み要求の優先度を、第2読み出し要求の優先度よりも高くしている。しかしながら、第1読み出し要求、書き込み要求及び第2読み出し要求に対する優先度の割り当て方はこの限りではない。
【0093】
例えば、バス5の使用率が常に高く、DMAコントローラ10からシステムメモリ3に対してデータを転送しにくく、その結果、DMAコントローラ10のバッファ100に空きが生じにくい場合には、フレームメモリ40内において出力対象データ(合成画像140の画素データ145)が蓄積されやすい。この場合に、第1読み出し要求及び書き込み要求の優先度を、第2読み出し要求の優先度よりも高くすると、フレームメモリ40内の出力対象データはいつまでも処理回路14から出力されない可能性がある。そこで、このような場合には、フレームメモリ40からの出力対象データの読み出しに必要な第2読み出し要求の優先度を、第1読み出し要求及び書き込み要求の優先度よりも高くする。これにより、画像処理装置1全体での処理速度を向上することができる。
【0094】
このように、記憶制御部41では、第1読み出し要求、書き込み要求及び第2読み出し要求の少なくとも2つの要求が競合する場合には、当該少なくとも2つの要求が調停される。そのため、第1読み出し要求出力部411、書き込み要求出力部412及び第2読み出し要求出力部413は互いに独立して動作することができる。よって、第1読み出し要求出力部411、書き込み要求出力部412及び第2読み出し要求出力部413のうちの特定の出力部での処理がボトルネックになることを抑制することができる。その結果、処理回路14全体の処理速度を向上させることができる。
【0095】
なお、処理の優先度は変更可能であって良い。例えば、ユーザが処理の優先度を変更できるように画像処理装置1を構成しても良い。また、処理回路14は、画像処理装置1の動作状況に応じて処理の優先度を変更しても良い。例えば、バス5の使用率を求める回路を画像処理装置1に設けて、処理回路14は、当該回路で得られるバス5の使用率に基づいて処理の優先度を変更しても良い。具体的には、処理回路14は、バス5の使用率が所定値よりも大きい場合には、第2読み出し要求の優先度を、第1読み出し要求及び書き込み要求の優先度よりも高くし、バス5の使用率が所定値以下の場合には、第1読み出し要求及び書き込み要求の優先度を、第2読み出し要求の優先度よりも高くする。このように、処理の優先度を動的に変更することにより、処理回路14全体の処理速度をさらに向上させることができる。
【0096】
<対象画像110の読み出しから合成画像の生成までの一連の動作について>
図12は画像処理装置1の動作を示すフローチャートである。画像処理装置1の電源が投入されると、CPU2は画像処理装置1の初期設定を行う。画像処理装置1の初期設定では、画像処理回路4に対する初期設定が行われる(ステップs0)。画像処理回路4には、図示しない各種設定レジスタが設けられている。初期設定において、CPU2は、画像処理回路4内の各種設定レジスタにデータを設定する。例えば、CPU2は、システムメモリ3において対象画像110が記憶される記憶領域のアドレスを第1設定レジスタに設定したり、システムメモリ3において、画像処理回路4で得られる合成画像140の書き込み先の記憶領域のアドレスを第2設定レジスタに設定したり、画像処理回路4が処理する対象画像110の画像サイズを第3設定レジスタに設定する。さらに、画像処理回路4の初期設定では、CPU2は、変換パラメータリスト130を、画像処理回路4の記憶回路13に設定する。これにより、記憶回路13には、変換パラメータリスト130が記憶される。CPU2は、例えば、システムメモリ3内の、変換パラメータリスト130が記述されたプログラムを実行することによって、変換パラメータリスト130を記憶回路13に書き込む。なお、CPU2は、初期設定時に、変換パラメータリスト130を作成し、作成した変換パラメータリスト130を記憶回路13に書き込んでも良い。
【0097】
初期設定が終了した後、CPU2は、画像処理回路4に対して1枚目の対象画像110に関する設定を行う(ステップs1)。具体的には、CPU2は、1枚目の対象画像110に対する処理で使用される特定情報220を、画像処理回路4の制御回路21が有するレジスタ22に設定する。
【0098】
画像処理回路4では、レジスタ22に特定情報220が設定されると、DMAコントローラ10が、上述の第1設定レジスタに設定されているアドレスに基づいて、システムメモリ3から1枚目の対象画像110を読み出して入力フレームバッファ11に書き込む(ステップs1−1)。座標変換回路12は、レジスタ22内の特定情報220に基づいて、記憶回路13から最初に使用する使用対象回転パラメータ132を読み出して、読み出した使用対象回転パラメータ132に基づいて、入力フレームバッファ11内の対象画像110に対して1回目の回転用座標変換を行う(ステップs1−1)。これにより、最初の回転画像120−1が得られる。この最初の回転画像120−1は処理回路14のフレームメモリ40に記憶される。
【0099】
座標変換回路12は、最初の回転画像120−1を生成すると、特定情報220に基づいて、記憶回路13から2番目に使用する使用対象回転パラメータ132を読み出して、読み出した使用対象回転パラメータ132に基づいて、入力フレームバッファ11内の対象画像110に対して2回目の回転用座標変換を行う(ステップs1−2)。これより、2番目の回転画像120−2が得られる。一方で、処理回路14は、最初の回転画像120−1に対して、2番目の回転画像120−2を加算して、1回積算画像150−1を生成する(ステップs1−2)。
【0100】
ここで、座標変換回路12は、回転画像120の画素データを生成するたびに、生成した画素データを出力する。また、処理回路14は、座標変換回路12から画素データが入力されると、入力された画素データを、リードバッファ44から読み出した加算対象の画素データに加算する。したがって、画像処理回路4では、回転画像120−2が生成された後に、1回積算画像150−1が生成されるのではなく、座標変換回路12での回転画像120−2の生成処理と、処理回路14での1回積算画像150−1の生成処理とは並行して実行される。つまり、画像処理回路4では、座標変換回路12でのl番目の回転画像120−lの生成処理と、処理回路14での(l−1)回積算画像150−(l−1)の生成処理とは並行して実行される。
【0101】
座標変換回路12は、2番目の回転画像120−2を生成すると、特定情報220に基づいて、記憶回路13から3番目に使用する使用対象回転パラメータ132を読み出して、読み出した使用対象回転パラメータ132に基づいて、入力フレームバッファ11内の対象画像110に対して3回目の回転用座標変換を行う。これより、3番目の回転画像120−3が得られる。一方で、処理回路14は、1回積算画像150−1に対して、3番目の回転画像120−3を加算して、2回積算画像150−2を生成する。
【0102】
以後、画像処理回路4は同様に動作して、座標変換回路12は、N番目の回転画像120−Nを生成する(ステップs1−N)。一方で、処理回路14は、(N−2)回積算画像150−(N−2)に対して、N番目の回転画像120−3を加算して、(N−1)回積算画像150−2、つまり合成画像140を生成する(ステップs1−N)。そして、処理回路14は、合成画像140をDMAコントローラ10に出力する(ステップs1−N)。DMAコントローラ10は、処理回路14から入力された合成画像140を、システムメモリ3における、上述の第2設定レジスタに設定されているアドレスの記憶領域に対して書き込む(ステップs1−N)。上述のように、第1読み出し要求出力部411、書き込み要求出力部412及び第2読み出し要求出力部413は互いに独立して動作することから、加算処理部42での加算処理と、出力制御部45での出力処理とは並行して実行される。したがって、処理回路14では、合成画像140を構成するすべての画素データが生成された後に、合成画像140の画素データが出力されるのではなく、合成画像140の画素データの生成処理と、合成画像140の画素データの出力処理とは並行して実行される。
【0103】
画像処理回路4は、システムメモリ3に対する合成画像140の書き込みが終了すると、CPU2に対して、1枚目の対象画像110に対する処理が完了したことを通知する完了通知を行う(ステップs1−e)。画像処理回路4からのCPU2に対する完了通知は、例えばCPU2の割り込み機能が利用される。CPU2は、完了通知を受け取ると、画像処理回路4に対して2枚目の対象画像110に関する設定を行う(ステップs2)。具体的には、CPU2は、2枚目の対象画像110に対する処理で使用される特定情報220を、画像処理回路4の制御回路21が有するレジスタ22に設定する。画像処理回路4は、同様に動作して、2枚目の対象画像110に基づいて合成画像140を生成し、合成画像140をシステムメモリ3に書き込む。以後、画像処理装置1は、3枚目以降の対象画像110に対しても同様に処理を行う。
【0104】
なお、p枚目(pは変数で、p≧2)の対象画像110に対する処理で使用される特定情報220が、(p−1)枚目の対象画像110に対する処理で使用される特定情報220と同じである場合には、(p−1)枚目の対象画像110についての完了通知を受け取ったCPU2は、p枚目の対象画像110に対する処理で使用する特定情報220をレジスタ22に設定せずに、p枚目の対象画像110に対する処理を開始するように画像処理回路4に指示しても良い。
【0105】
このように、座標変換回路12は、複数種類の変換パラメータ131に基づいて、1枚の対象画像110を用いて複数種類の座標変換を連続的に行っている。つまり、座標変換回路12は、複数種類の変換パラメータ131に基づいて、CPU2とデータのやり取りを行わずに1枚の対象画像110を用いて複数種類の座標変換を行っている。したがって、座標変換回路12が、座標変換を行うたびに、その座標変換で使用する変換パラメータ131をCPU2から受け取る場合と比較して、複数種類の座標変換の処理時間を低減することができる。
【0106】
本例では、座標変換回路12は、複数種類の回転パラメータ132に基づいて、1枚の対象画像110に基づいて、互いに回転角度が異なる複数枚の回転画像120を連続的に生成している。したがって、座標変換回路12が、回転画像120を生成するたびに、その回転画像120の生成で使用する回転パラメータ132をCPU2から受け取る場合と比較して、複数枚の回転画像120の生成に必要な処理時間を低減することができる。
【0107】
また、座標変換回路12が、複数種類の変換パラメータ131に基づいて、CPU2とデータのやり取りを行わずに1枚の対象画像110を用いて複数種類の座標変換を行うことによって、CPU2の処理負荷を低減することができる。また、本例のように、CPU2と画像処理回路4とがバス5で接続されている場合には、バス5の帯域を低減することが可能となる。
【0108】
また、本例では、画像処理装置1の初期設定の際に、CPU2が変換パラメータリスト130を、画像処理回路4の記憶回路13に設定することから、座標変換回路12は、初期設定の後、記憶回路13から、使用する変換パラメータ131を読み出すことができる。よって、座標変換回路12は、変換パラメータ131を使用するたびに、CPU2から使用する変換パラメータ131を受け取る必要がない。よって、座標変換回路12での処理時間が低減する。
【0109】
なお、画像処理装置1の変換パラメータリスト130には、その画像処理装置1が使用する変換パラメータ131だけが含まれても良い。例えば、座標変換回路12が、どの対象画像110に対しても、対象画像110を2°から360°まで2°ずつ回転させる場合には、回転角度が1°の回転パラメータ132から回転角度360°の回転パラメータ132のうち、回転角度が偶数の回転パラメータ132だけが、変換パラメータリスト130に含まれても良い。
【0110】
また、対象画像110に対して互いに異なる座標変換を行う複数の画像処理装置1の間で共通の変換パラメータリスト130を、当該複数の画像処理装置1に記憶させても良い。例えば、第1画像処理装置1が、対象画像110を1°から90°まで1°ずつ回転させる処理を行い、第2画像処理装置1が、対象画像110を91°から180°まで1°ずつ回転させる処理を行い、第3画像処理装置1が、対象画像110を181°から270°まで1°ずつ回転させる処理を行い、第4画像処理装置1が、対象画像110を271°から360°まで1°ずつ回転させる処理を行う場合を考える。この場合には、第1〜第4画像処理装置1に共通の変換パラメータリスト130には、上記の例と同様に、画像を1°から360°まで回転するための360種類の回転パラメータ132を含ませる。これにより、画像処理装置1ごとに個別に変換パラメータリスト130を用意する必要がなくなるため、画像処理装置1に誤った変換パラメータリスト130が記憶されることを抑制することができる。
【0111】
また上記の例では、処理回路14は、DMAコントローラ10に対して、合成画像140を出力しているが、座標変換回路12で得られる変換後対象画像110、つまり回転画像120を出力しても良い。この場合には、処理回路14では、加算処理部42、リードバッファ44及び第1読み出し要求出力部411が不要となる。そして、座標変換回路12から出力される回転画像120の画素データはライトバッファ43に一旦記憶され、ライトバッファ43内の回転画像120の画素データがフレームメモリ40に書き込まれる。フレームメモリ40内の回転画像120の画素データが出力制御部45からDMAコントローラ10に出力されることによって、回転画像120がDMAコントローラ10に入力される。
【0112】
また、変換パラメータリスト130には、回転パラメータ132の替りに、あるいは回転パラメータ132に加えて、回転パラメータ132以外の変換パラメータ131、つまり回転用座標変換以外の座標変換において必要な変換パラメータ131が含まれても良い。
【0113】
例えば、変換パラメータリスト130には、画像の拡大を行うための拡大用座標変換において必要な拡大用変換パラメータ(以後、「拡大パラメータ」と呼ぶ)が含まれても良い。この場合に、変換パラメータリスト130には、拡大率が互いに異なる複数種類の拡大用座標変換においてそれぞれ必要な複数種類の拡大パラメータが含まれても良い。座標変換回路12は、拡大パラメータに基づいて対象画像110に対して拡大用座標変換を行うことによって、当該拡大パラメータに応じた拡大率で対象画像110を拡大することができる。例えば、座標変換回路12が、拡大率1.1倍の拡大パラメータに基づいて対象画像110に対して拡大用座標変換を行うと、1.1倍に拡大された対象画像110が得られる。ここで、画像の拡大とは、画像に映る被写体の拡大であって、画像の縦横の画素数の増大ではない。変換パラメータリスト130に、回転パラメータ及び拡大パラメータが含まれる場合には、座標変換回路12は、対象画像110を回転させることによって得られる回転画像と、対象画像110を拡大することによって得られる拡大画像とを生成することができる。拡大パラメータには、回転パラメータと同様に、例えば、拡大画像での4隅の画素についての対象画像110での写像元の4つの画素の座標が含まれている。
【0114】
また、変換パラメータリスト130には、画像の縮小を行うための縮小用座標変換において必要な縮小用変換パラメータ(以後、「縮小パラメータ」と呼ぶ)が含まれても良い。この場合に、変換パラメータリスト130には、縮小率が互いに異なる複数種類の縮小用座標変換においてそれぞれ必要な複数種類の縮小パラメータが含まれても良い。座標変換回路12は、縮小パラメータに基づいて対象画像110に対して縮小用座標変換を行うことによって、当該縮小パラメータに応じた縮小率で対象画像110を縮小することができる。例えば、座標変換回路12が、縮小率0.9倍の縮小パラメータに基づいて対象画像110に対して縮小用座標変換を行うと、0.9倍に縮小された対象画像110が得られる。ここで、画像の縮小とは、画像に映る被写体の縮小であって、画像の縦横の画素数の減少ではない。変換パラメータリスト130に、回転パラメータ及び縮小パラメータが含まれる場合には、座標変換回路12は、対象画像110を回転させることによって得られる回転画像と、対象画像110を縮小することによって得られる縮小画像とを生成することができる。縮小パラメータには、回転パラメータと同様に、例えば、縮小画像での4隅の画素についての対象画像110での写像元の4つの画素の座標が含まれている。
【0115】
また、変換パラメータリスト130には、画像の平行移動を行うための平行移動用座標変換において必要な平行移動用変換パラメータ(以後、「平行移動パラメータ」と呼ぶ)が含まれても良い。この場合に、変換パラメータリスト130には、移動方向が互いに異なる複数種類の平行移動用座標変換においてそれぞれ必要な複数種類の平行移動パラメータが含まれても良い。また、変換パラメータリスト130には、移動量が互いに異なる複数種類の平行移動用座標変換においてそれぞれ必要な複数種類の平行移動パラメータが含まれても良い。座標変換回路12は、平行移動パラメータに基づいて対象画像110に対して平行移動用座標変換を行うことによって、対象画像110を、当該平行移動パラメータに応じた移動方向に、当該平行移動パラメータに応じた移動量だけ平行移動することができる。例えば、座標変換回路12が、移動方向が「右」、移動量が「1画素」の平行移動パラメータに基づいて対象画像110に対して平行移動用座標変換を行うと、右に1画素分平行移動された対象画像110が得られる。ここで、画像の平行移動とは、画像に映る被写体の平行移動である。変換パラメータリスト130に、回転パラメータ及び平行移動パラメータが含まれる場合には、座標変換回路12は、対象画像110を回転させることによって得られる回転画像と、対象画像110を平行移動することによって得られる平行移動画像とを生成することができる。平行移動パラメータには、回転パラメータと同様に、例えば、平行移動画像での4隅の画素についての対象画像110での写像元の4つの画素の座標が含まれている。
【0116】
<画像処理装置の使用例>
画像処理装置1は、様々な用途に使用することができる。以下では、一例として、画像に映る対象物が比較対象に相当するか否かを判定する画像処理システム500において画像処理装置1が使用される場合について説明する。
【0117】
<画像処理システムの構成>
図13は画像処理システム500の構成を示す図である。画像処理システム500は、画像処理を用いて、対象物が比較対象に相当するか否かを判定するシステムである。画像処理システム500は、例えば、工場内において、クッキーあるいはチョコレートなどの円形のお菓子が製造される製造ラインに導入される。画像処理システム500は、実稼働中の製造ラインにおいて製造されるお菓子が正しく製造されたお菓子に相当するか否かを判定する。言い換えれば、画像処理システム500は、実稼働中の製造ラインで製造されるお菓子が正しく製造されているか否か、つまり当該お菓子の良否を判定する。これにより、画像処理システム500は、お菓子の模様の崩れ及び欠け等を検出することができる。本例の画像処理システム500では、対象物がお菓子となり、対象物と比較される比較対象が、正しく製造されたお菓子(良品のお菓子)となる。なお、対象物はお菓子以外であっても良い。また対象物の外形は円形以外であっても良い。
【0118】
図13に示されるように、画像処理システム500は、上述のCPU2、システムメモリ3及び画像処理回路4と、撮像装置6と、DSP(Digital Signal Processor)7とを備えている。これらの構成要素は、バス5によって互いに接続されている。
【0119】
撮像装置6は、製造ラインで製造されたお菓子を撮像し、当該お菓子が映った撮像画像510を生成する。この撮像画像510はシステムメモリ3に記憶される。製造ラインでは、搬送コンベアによってお菓子が搬送され、撮像装置6は搬送されるお菓子を撮像する。製造された複数のお菓子は、不揃いな向きで搬送コンベア上を一列で移動する。本例では、撮像装置6で生成される撮像画像510は、カラー画像であるが、グレースケール画像であっても良い。
【0120】
図14は撮像装置6で得られる撮像画像510の一例を模式的に示す図である。
図14に示される撮像画像510には、正しく製造されたお菓子600、つまり良品のお菓子600が映っている。また撮像画像510には、背景である搬送コンベア601が映っている。良品のお菓子600の一方主面600aには、例えばアルファベット「A」の模様が示されている。なお、良品のお菓子600の模様はこれ以外であっても良い。また、良品のお菓子600の両主面に模様が付されていても良い。
【0121】
お菓子600は、その一方主面600aを上側にして、搬送コンベア601上を移動する。搬送コンベア601上では、複数のお菓子600が一列になって移動する。そして、撮像装置6は、お菓子600の一方主面600a側から当該お菓子600を撮像する。したがって、撮像画像510には、お菓子600の一方主面600aが映っている。
【0122】
画像処理システム500では、CPU2、システムメモリ3、画像処理回路4及びDSP7によって、撮像装置6で得られた撮像画像510に映るお菓子600が正しく製造されたものに相当するか否か、つまり当該お菓子600が正しく製造されているか否かを判定し、その判定結果を出力する判定装置8が構成されている。判定装置8で得られる判定結果は、工場内に設けられた、製造ラインの動作を管理する制御装置に入力される。制御装置は、入力された判定結果に基づいて各種動作を行う。以後、判定装置8が、撮像画像510に映るお菓子600が正しく製造されているか否かを判定する処理を「お菓子判定処理」と呼ぶ。
【0123】
DSP7はシステムメモリ3に記憶されるプログラムを実行する。CPU2及びDSP7がシステムメモリ3内のプログラムを実行することによって、判定装置8には様々な機能ブロックが形成される。
【0124】
図15は判定装置8の構成を示す図である。
図15に示されるように、判定装置8は、変換部530、特徴画像生成部531及び判定部532を備えている。変換部530は、撮像装置6で得られた撮像画像510をカラー画像からグレースケール画像に変換し、変換後の撮像画像510を撮像画像511として出力する。
【0125】
特徴画像生成部531は、お菓子600が映る撮像画像511に基づいて、当該お菓子600の特徴を示す特徴画像520を生成する。判定部532は、特徴画像生成部531で生成された特徴画像520に基づいて、撮像画像511に映るお菓子600が正しいものか否かを判定し、その判定結果521を出力する。判定部532は、特徴画像生成部531が撮像画像511から生成した特徴画像520と、良品のお菓子600の特徴を示すテンプレート特徴画像522とを比較し、その比較結果に基づいて、当該撮像画像511に映るお菓子600が正しいものか否かを判定する。テンプレート特徴画像522はシステムメモリ3に記憶されている。
【0126】
図16は特徴画像生成部531の構成を示す図である。
図16に示されるように、特徴画像生成部531は、第1画像生成部540及び第2画像生成部550を備えている。第1画像生成部540は、撮像画像511に基づいて、お菓子600を示す第1画像524を生成する。第2画像生成部550は、第1画像生成部540で生成された第1画像524を回転して得られる複数の回転画像を合成し、それによって得られる合成画像を特徴画像520として出力する。
【0127】
第1画像生成部540は、抽出部541及びエッジ画像生成部542を備えている。抽出部541は、撮像画像511からお菓子600が映るお菓子領域523を抽出する。エッジ画像生成部542は、抽出部541で抽出されたお菓子領域523に対してエッジ検出を行って、第1画像524としてのエッジ画像を生成する。
【0128】
本例では、画像処理回路4が第2画像生成部550として機能する。また、DSP7が、変換部530、第1画像生成部540及び判定部532として機能する。そして、第1画像生成部540で生成される第1画像524(エッジ画像)が、画像処理回路4が処理する上述の対象画像110に相当し、第2画像生成部550が生成する特徴画像520(合成画像)が、画像処理回路4が生成する合成画像140に相当する。
【0129】
画像処理システム500の電源が投入されると、CPU2は画像処理システム500の初期設定を行う。画像処理システム500の初期設定において、画像処理回路4の初期設定が行われる。画像処理回路4の初期設定では、上述のように、CPU2は、画像処理回路4内の各種設定レジスタにデータを設定する。
【0130】
画像処理システム500の初期設定が完了すると、撮像装置6は、撮像を開始し、所定のフレームレートで撮像を行う。撮像装置6で順次生成される撮像画像510はシステムメモリ3に記憶される。判定装置8は、システムメモリ3から撮像画像510を読み出して、読み出した撮像画像510に基づいてお菓子判定処理を行う。
【0131】
<お菓子判定処理のフローについて>
次に、製造ラインが実稼働中において、判定装置8がお菓子判定処理を行う際の当該判定装置8の一連の動作について説明する。
図17は当該動作を示すフローチャートである。
【0132】
図17に示されるように、ステップs11において、変換部530(DSP7)は、システムメモリ3から撮像画像510を読み出して、読み出した撮像画像510をカラー画像からグレースケール画像に変換し、それによって得られた撮像画像511を判定対象画像511としてシステムメモリ3に記憶する。
【0133】
次にステップs12において、抽出部541(DSP7)は、システムメモリ3から判定対象画像511を読み出し、読み出した判定対象画像511から、お菓子600が映るお菓子領域523を抽出する。次にステップs13において、エッジ画像生成部542(DSP7)は、抽出部541で抽出されたお菓子領域523に対してエッジ検出を行って、お菓子600を示す第1画像524としてのエッジ画像を生成する。そして、エッジ画像生成部542(DSP7)は、生成したエッジ画像をシステムメモリ3に記憶する。
【0134】
次にステップs14において、第2画像生成部550(画像処理回路4)は、システムメモリ3からエッジ画像を読み出して、読み出したエッジ画像を回転して得られる複数の回転画像(回転画像120)を合成した合成画像(合成画像140)を特徴画像520として生成する。第2画像生成部550は生成した特徴画像520をシステムメモリ3に記憶する。
【0135】
次にステップs15において、判定部532(DSP7)は、システムメモリ3から特徴画像520及びテンプレート特徴画像522を読み出す。そして、判定部532は、読み出した特徴画像520及びテンプレート特徴画像522を比較し、その比較結果に基づいて、判定対象画像511に映るお菓子600が正しいものであるかを判定する。言い換えれば、判定部532は、特徴画像520とテンプレート特徴画像522との比較結果に基づいて、撮像装置6で生成された撮像画像510に映るお菓子600が正しいものであるか否かを判定する。そして、判定部532は、ステップs16において、ステップs15での判定結果521を、システムメモリ3に書き込む。システムメモリ3内の判定結果521は、工場内に設けられた制御装置に入力される。制御装置は、撮像画像510に映るお菓子600が正しく製造されていない場合には、言い換えれば、撮像画像510に映るお菓子600が良品に相当しない場合には、例えば、スピーカから警告音を出力したり、ディスプレイに警告情報を表示したりするなどして、外部に警告を発する。
【0136】
その後、判定装置8は、ステップs1を実行して、撮像装置6で次に生成された撮像画像510をシステムメモリ3から読み出し、読み出した撮像画像510から得られる撮像画像511を新たな判定対象画像511として、ステップs12〜s16を実行する。以後、判定装置8は同様の動作を行う。
【0137】
<各構成要素の詳細説明>
以下に、抽出部541、エッジ画像生成部542、第2画像生成部550及び判定部532の動作についてさらに詳細に説明する。
【0138】
<抽出部について>
図18は、抽出部541が撮像画像511から抽出するお菓子領域523の一例を模式的に示す図である。撮像画像511からお菓子領域523を抽出する方法としては様々な方法がある。
【0139】
例えば、お菓子600の外形が円形であることを利用した第1の抽出方法がある。この第1の抽出方法では、まず、撮像画像511に対してエッジ検出が行われてエッジ画像が生成される。エッジ画像の生成方法としては、例えば、Sobel法、Laplacian法、Canny法などが使用される。次に、生成されたエッジ画像から円形領域が抽出される。円形領域の抽出方法としては、例えばハフ変換が使用される。そして、エッジ画像における当該円形領域の位置と同じ位置に存在する撮像画像511での円形領域が、お菓子領域523とされる。
【0140】
別の方法としては、背景差分法とラベリングを用いて撮像画像511からお菓子領域523を抽出する第2の抽出方法がある。この第2の抽出方法では、まず、撮像画像511と背景画像(撮像画像511の背景だけが映る画像)との差分を示す背景差分画像が生成され、生成された背景差分画像が2値化される。そして、2値の背景差分画像に対して4連結等のラベリングが行われる。そして、2値の背景差分画像における、ラベリングの結果得られた連結領域(独立領域)の位置と同じ位置に存在する撮像画像511での部分領域が、お菓子領域523とされる。
【0141】
本例では、抽出部541は、上記の2つの方法とは異なる方法で、撮像画像511からお菓子領域523を抽出する。以下に抽出部541の動作について説明する。なお、抽出部541は、上記の2つの方法のどちらか一方を用いて撮像画像511からお菓子領域523を抽出しても良い。
【0142】
まず、抽出部541は、撮像画像511と背景画像560(撮像画像511の背景だけが映る画像)との差分を示す背景差分画像を生成し、生成した背景差分画像を2値化する。
図19は背景画像560を模式的に示す図であって、
図20は2値の背景差分画像561を模式的に示す図である。なお、
図20及び後述の図において模式的に示される2値の画像では、画素値が“1”の領域(高輝度領域)は黒色で示され、画素値が“0”の領域(低輝度領域)は白色で示される。背景画像560はシステムメモリ3に予め記憶されている。
【0143】
次に、抽出部541は、2値の背景差分画像561に対して、お菓子600の外形を示す2値の外形テンプレート562を用いたテンプレートマッチングを行う。つまり、抽出部541は、背景差分画像561において、外形テンプレート562と類似する領域がどこに存在するかを特定する。言い換えると、抽出部541は、背景差分画像561において、外形テンプレート562が示すお菓子600の外形と一致する領域がどこに存在するかを特定する。
図21は外形テンプレート562を模式的に示す図である。外形テンプレート562はシステムメモリ3に予め記憶されている。
【0144】
テンプレートマッチングでは、抽出部541は、
図22に示されるように、背景差分画像561上で外形テンプレート562をラスタスキャン方向に少しずつ移動させる。言い換えれば、抽出部541は、背景差分画像561上で外形テンプレート562をラスタスキャンさせる。このとき、抽出部541は、外形テンプレート562の各位置において、当該外形テンプレート562と、それに重なる、背景差分画像561の部分領域とのAND画像を生成する。これにより、複数の2値のAND画像が生成される。そして、抽出部541は、生成した複数のAND画像のうち、画素値が“1”の画素(高輝度画素)の数が最も多いAND画像の生成で使用された外形テンプレート562の背景差分画像561上の位置を特定する。この位置は、背景差分画像561において、外形テンプレート562と類似した領域が存在する位置である。そして、抽出部541は、
図23に示されるように、特定した位置と同じ位置に存在する撮像画像511での部分領域511aを、お菓子領域523として抽出する。言い換えれば、抽出部541は、特定した位置と同じ位置に外形テンプレート562を撮像画像511に配置した際に、当該外形テンプレート562と重なる、撮像画像511での部分領域511aを、お菓子領域523として抽出する。このとき、当該部分領域511aにおいて、その上の外形テンプレート562が示す円形よりも外側の各画素の画素値を零としたものお菓子領域523としても良い。抽出部541で抽出されるお菓子領域523はグレースケール画像である。
【0145】
<エッジ画像生成部について>
エッジ画像生成部542は、例えば、Sobel法、Laplacian法、Canny法などを使用して、抽出部541で抽出されたお菓子領域523に対してエッジ検出を行ってエッジ画像565を生成する。エッジ画像生成部542は、例えば、処理が軽いSobel法を使用する。エッジ画像565は2値の画像である。
図24はエッジ画像565を模式的に示す図である。
【0146】
<第2画像生成部について>
第2画像生成部550は、エッジ画像生成部542で生成されたエッジ画像565を回転して得られる複数の回転画像565aを合成した合成画像570を特徴画像520として生成する。回転画像565aは上述の回転画像120に相当し、合成画像570は上述の合成画像140に相当する。
【0147】
図25は上述の
図9に対応する図である。第2画像生成部550は、上述の画像処理回路4の座標変換回路12と同様にして、エッジ画像565(対象画像110)に対して、複数種類の回転用座標変換のそれぞれを別々に行うことによって、
図25に示されるように、回転角度が互いに異なる複数枚の回転画像565a(複数枚の回転画像120)を生成する。そして、第2画像生成部550は、画像処理回路4の処理回路14と同様にして、生成した複数枚の回転画像565aを合成して合成画像570(合成画像140)を生成する。第2画像生成部550は、生成した合成画像570を、撮像画像511に映るお菓子600の特徴を示す特徴画像520として使用する。
【0148】
上述のように、撮像装置6は、不揃いな向きで搬送されるお菓子600を撮像し、当該お菓子600が映る撮像画像510を生成する。したがって、判定装置8の変換部530が生成する撮像画像511に映るお菓子600の周方向の向きが常に同じであるとは限らない。つまり、撮像画像511に映るお菓子600の周方向の向きは一定せず、ある撮像画像511に映るお菓子600の姿勢が、別の撮像画像511に映るお菓子600の姿勢を、当該お菓子600の両主面の重心(中心)を通る、厚み方向に沿った回転軸の周りに回転させたような姿勢となる可能性がある。したがって、お菓子領域523に映るお菓子600の周方向の向きも一定しない。一方で、合成画像570は、撮像画像511に映るお菓子600を示すエッジ画像565を回転して得られる複数枚の回転画像565aを合成したものである。そのため、撮像画像511に映るお菓子600の周方向の向きが一定でなくても、お菓子600が良品であれば、撮像画像511から得られる合成画像570はほとんど変化しない。よって、合成画像570は、撮像画像511に映るお菓子600の周方向の向きの影響を受けにくい、当該お菓子600の特徴を示す特徴画像520であると言える。
【0149】
<判定部について>
判定部532は、第2画像生成部550で生成された合成画像570(特徴画像520)と、良品のお菓子600の特徴を示すテンプレート特徴画像522とを比較し、その比較結果に基づいて、当該撮像画像511に映るお菓子600が正しく製造されたものか否かを判定する。テンプレート特徴画像522としては、良品のお菓子600が映る撮像画像511から上記と同様にして特徴画像生成部531で生成された、当該良品のお菓子600の特徴を示す特徴画像520(合成画像570)が使用される。製造ラインが実稼働していないときには、テンプレート特徴画像522を得るために、製造ラインに対して良品のお菓子600が投入される。画像処理システム500では、投入された良品のお菓子600が映る撮像画像511が生成される。この撮像画像511を「標準画像511」と呼ぶ。画像処理システム500では、特徴画像生成部531が、標準画像511に基づいて、当該標準画像511に映る良品のお菓子600の特徴を示す特徴画像520(合成画像570)を生成する。この特徴画像520を「標準特徴画像520」と呼ぶと、標準特徴画像520がテンプレート特徴画像522となる。製造ラインが実稼働していないときに生成されたテンプレート特徴画像522はシステムメモリ3に記憶される。以後、製造ラインが実稼働中に生成される特徴画像520(良否判定を行うお菓子600が映る撮像画像511から生成された特徴画像520)を、標準特徴画像520と区別するために、「対象特徴画像520」と呼ぶことがある。
【0150】
判定部532は、例えば、合成画像570(対象特徴画像520)とテンプレート特徴画像522との間の類似度(相違度)を求めることによって、両者を比較する。判定部532は、類似度を示す値として、例えばSAD(Sum of Absolute Difference)を使用する。SADが大きいことは類似度が低いことを意味し、SADが小さいことは類似度が高いことを意味する。類似度を示す値として、SSD(Sum of Squared Difference)あるいはNCC(Normalized Correlation Coffiecient)などの他の値を使用しても良い。
【0151】
判定部532は、合成画像570とテンプレート特徴画像522との間の類似度が高い場合には、撮像画像511に映るお菓子600が正しく製造されたものであると判定し、当該類似度が低い場合には、撮像画像511に映るお菓子600が正しく製造されたものではないと判定する。具体的には、判定部532は、合成画像570とテンプレート特徴画像522との間のSADがしきい値以下の場合には、撮像画像511に映るお菓子600が正しく製造されたものであると判定し、当該SADが当該しきい値よりも大きい場合には、撮像画像511に映るお菓子600が正しく製造されたものではないと判定する。そして、判定部532は判定結果521をシステムメモリ3に記憶する。
【0152】
なお上記の例では、2値のエッジ画像565が、撮像画像511に映るお菓子600を示す第1画像524として使用されたが、グレースケール画像のお菓子領域523が第1画像524として使用されても良い。この場合には、お菓子領域523を回転して得られる複数の回転画像を合成した合成画像が特徴画像520とされる。
【0153】
また上記の例では、合成画像570が特徴画像520とされているが、合成画像570の一部が特徴画像520とされても良い。この場合には、標準特徴画像520の一部がテンプレート特徴画像522とされる。
【0154】
以上のように、画像処理システム500では、お菓子600を示す第1画像524を回転して得られる複数の回転画像を合成した合成画像570の少なくとも一部が、特徴画像520とされている。特徴画像520は、撮像画像511に映るお菓子600の周方向の向きの影響を受けにくい。したがって、撮像画像511に映るお菓子600の周方向の向きが一定しない場合であっても、特徴画像520を用いて、撮像画像511に映るお菓子600が正しく製造されたものであるか否かをより正確に判定することができる。よって、お菓子判定処理の判定精度が向上する。
【0155】
また本例では、2値のエッジ画像565を第1画像524としているため、グレースケール画像のお菓子領域523を第1画像524とする場合と比較して、撮像装置6での撮像領域の明るさの変化の影響を第1画像524が受けることを抑制することができる。よって、特徴画像520が、お菓子600が撮像される撮像領域の明るさの変化の影響を受けることを抑制することができ、その結果、お菓子600の良否判定の精度が向上する。
【0156】
また本例では、抽出部541は、テンプレートマッチングを用いて、撮像画像511からお菓子領域523を抽出しているため、ハフ変換が使用される上述の第1の抽出方法や、ラベリングが使用される第2の抽出方法と比較して、抽出処理が簡素化される。
【0157】
また本例では、判定部532は、撮像画像511から生成された特徴画像520と、テンプレート特徴画像522とをSAD等を用いて比較し、その比較結果に基づいて当該撮像画像511に映るお菓子600が良品か否かを判定しているため、判定処理が簡素化される。
【0158】
なお上記の例では、画像処理装置1を含む画像処理システム500は、お菓子を製造する製造ラインに導入されていたが、他の装置あるいは様々な場所に導入されても良い。
【0159】
例えば、画像処理システム500は、表面に模様が付された貨幣が投入される自動販売機内に導入されても良い。この場合には、自動販売機内に投入される貨幣が撮像装置6で撮像される。自動販売機内では、例えば、貨幣がレール上を回転しながら移動する。撮像装置6は回転する貨幣を撮像する。特徴画像生成部531は、貨幣が映る撮像画像511に基づいて、当該貨幣の特徴を示す特徴画像を生成する。判定部532は、特徴画像生成部531で生成された特徴画像に基づいて、撮像画像511に映る貨幣が正しいものに相当するか否かを判定する。貨幣表面の模様は、お菓子表面の模様と同じように扱うことができることから、上記と同様にして、画像処理システム500は、撮像画像511に映る貨幣が正しいものに相当するか否かを判定することができる。これにより、自動販売機に投入された貨幣の真偽判定を行うことができる。
【0160】
また、画像処理システム500は、工場内で製品を組み立てる製造ラインに導入されても良い。より具体的には、画像処理システム500は、例えば、複数の部品を基板に実装する製造ラインに導入されても良い。この場合には、複数の部品が実装された基板が撮像装置6で撮像される。特徴画像生成部531は、複数の部品が実装された基板が映る撮像画像511に基づいて、当該基板の特徴を示す特徴画像を生成する。判定部532は、特徴画像生成部531で生成された特徴画像に基づいて、撮像画像511に映る、複数の部品が実装された基板が、複数の部品が正しく実装された基板に相当するか否か、つまり、基板に対して複数の部品が正しく実装されているか否かを判定する。基板上での複数の部品は、貨幣表面の模様と同じように扱うことができることから、上記と同様にして、画像処理システム500は、基板に対して複数の部品が正しく実装されているか否かを判定することができる。これにより、部品の実装間違え及び部品の実装もれ等を検出することができる。
【0161】
また、画像処理システム500は、回転寿司店に導入されても良い。回転寿司店では、寿司等の商品の値段として、当該商品がのせられた皿の模様に応じた値段が設定されていることがある。そして、回転寿司店では、客が手に取った各皿の模様に応じた値段の合計が、飲食代として計算されることがある。このような回転寿司店に導入される画像処理システム500は、画像処理によって、客が手に取った皿の模様を特定する。
【0162】
具体的には、寿司等をのせた複数の皿が搭載された回転レーンから客が皿を手に取ったとき、当該皿が撮像装置6で撮像される。特徴画像生成部531は、皿が映る撮像画像511に基づいて、当該皿の特徴を示す特徴画像を生成する。
【0163】
ここで、皿の周縁部に模様が付されており、寿司等の商品が皿の中央部(模様が無い部分)にのせられるものとする。特徴画像生成部531の第1画像生成部540で生成されたエッジ画像565のうちの中央部は、商品が映っており、皿の特徴を示すものではないことから、第1画像生成部540は、エッジ画像565のうち、中央部以外の部分を、皿を示す第1画像524とする。特徴画像生成部531の第2画像生成部550は、この第1画像524を回転して得られる複数の回転画像を合成した合成画像の少なくとも一部を特徴画像とする。
【0164】
判定部532は、特徴画像生成部531で生成された特徴画像に基づいて、撮像画像511に映る皿が、所定の模様を有する皿に相当するか否かを判定する。つまり、判定部532は、特徴量に基づいて、撮像画像511に映る皿の模様が、所定の模様に一致するか否かを判定する。皿表面の模様は、貨幣表面の模様と同じように扱うことができることから、上記と同様にして、画像処理システム500は、撮像画像511に映る皿が、所定の模様を有する皿に相当するか否かを判定することができる。判定部532は、回転寿司店で使用される複数種類の皿にそれぞれ付された複数種類の模様のそれぞれについて、当該模様と、撮像画像511に映る皿の模様と一致するか否かを判定する。これにより、撮像画像511に映る皿の模様が特定される。したがって、撮像画像511に映る皿の模様に応じた値段を自動的に特定することができる。よって、客が手に取った各皿の模様に応じた値段の合計、つまり飲食代を自動計算することができる。
【0165】
また、画像処理システム500は、物流センターに導入されても良い。物流センターでは、ダンボール等の荷物に対して、郵送先等が記載されたシールが貼られることがある。画像処理システム500は、荷物に貼られたシールが正しいシールに相当するか否か、つまり荷物に正しいシールが貼られているか否かを判定する。この場合には、荷物に貼られたシールが撮像装置6で撮像される。特徴画像生成部531は、シールが映る撮像画像511に基づいて、当該シールの特徴を示す特徴画像を生成する。判定部532は、特徴画像生成部531で生成された特徴画像に基づいて、撮像画像511に映るシールが正しいシールに相当するか否か、つまり、撮像画像511に映るシールが正しいものであるか否かを判定する。シール表面の文字等は、貨幣表面の模様と同じように扱うことができることから、上記と同様にして、画像処理システム500は、荷物に正しいシールが貼られているか否かを判定することができる。これにより、シールの貼り間違え等を検出することができる。
【0166】
なお、第2画像生成部550(画像処理回路4)は、合成画像570を生成する際に使用する回転画像の数(Nの値)を、画像処理システム500の動作状況に応じて変化させても良い。例えば、製造ラインでのお菓子の搬送速度が時間帯等に応じて変化する場合を想定する。このような場合には、お菓子の搬送速度が速く、判定結果521をすぐに得る必要がある場合には、第2画像生成部550は、処理時間を判定精度よりも優先させて、合成画像570を生成する際に使用する回転画像の数を少なくする。例えば、第2画像生成部550は、エッジ画像565を10°から360°まで10°ずつ回転させて、36枚の回転画像565aを生成する。そして、第2画像生成部550は、生成した36枚の回転画像565aを合成して合成画像570を生成する。一方で、製造ライン上でのお菓子の搬送速度が遅く、判定結果521をすぐに得る必要は無い場合には、第2画像生成部550は、処理時間よりも判定精度を優先させて、合成画像570を生成する際に使用する回転画像の数を多くする。例えば、第2画像生成部550は、エッジ画像565を0°から360°まで1°ずつ回転させて、360枚の回転画像565aを生成する。そして、第2画像生成部550は、生成した360枚の回転画像565aを合成して合成画像570を生成する。
【0167】
また、製造ラインでは、製造物がその姿勢を変化させずに搬送コンベア上を移動することがある。このような製造物が撮像装置6で撮像される場合には、撮像画像510において、それに映る製造物の姿勢は一定であるものの、それに映る製造物の左右方向の位置がばらつくことがある。例えば、ある撮像画像510では製造物が左側に映っており、別の撮像画像510では製造物が中央に映っており、さらに別の撮像画像510では製造物が右側に映っていることがある。
【0168】
このような場合には、変換パラメータリスト130に複数種類の平行移動パラメータを含めて、エッジ画像565ではなく、撮像画像511を対象画像110として第2画像生成部550に入力する。そして、第2画像生成部550は、複数種類の平行移動パラメータに基づいて、撮像画像511に対して、複数種類の平行移動用座標変換のそれぞれを別々に行って、複数枚の平行移動画像を生成する。例えば、第2画像生成部550は、撮像画像511を、右方向に2画素ずつ移動させた複数枚の右平行移動画像を生成するとともに、エッジ画像565を、左方向に2画素ずつ移動させた複数枚の左平行移動画像を生成する。そして、第2画像生成部550は、複数枚の右平行移動画像及び複数枚の左平行移動画像から成る複数枚の平行移動画像を合成して、合成画像を生成する。判定部532は、この合成画像を特徴画像として、撮像画像510に映る商品が正しく製造されているか否かを判定する。これにより、撮像画像510において、それに映る製造物の左右方向の位置がばらつく場合であっても、画像処理システム500は、撮像画像510に映る製造物が正しく製造されているか否かを適切に判定することができる。
【0169】
また、画像処理システム500が導入される環境によっては、撮像画像510に映る対象物の大きさがばらつくことがある。例えば、対象物の実際の大きさがばらつく場合、あるいは対象物と撮像装置6の撮像レンズとの間の距離がばらつく場合には、撮像画像510に映る対象物の大きさがばらつくことがある。
【0170】
このような場合には、変換パラメータリスト130に複数種類の拡大パラメータ及び複数種類の縮小パラメータを含める。そして、第2画像生成部550は、複数種類の拡大パラメータに基づいて、エッジ画像(第1画像524)に対して、複数種類の拡大用座標変換のそれぞれを別々に行って、複数枚の拡大画像を生成する。さらに、第2画像生成部550は、複数種類の縮小パラメータに基づいて、エッジ画像に対して、複数種類の縮小用座標変換のそれぞれを別々に行って、複数枚の縮小画像を生成する。そして、第2画像生成部550は、複数枚の拡大画像及び複数枚の縮小画像から成る複数枚の画像を合成して、合成画像を生成する。判定部532は、この合成画像を特徴画像として、撮像画像510に映る対象物が比較対象(例えば良品)に相当するか否かを判定する。これにより、撮像画像510において、それに映る対象物の大きさがばらつく場合であっても、画像処理システム500は、撮像画像510に映る対象物が比較対象に相当するか否かを適切に判定することができる。
【0171】
また、同じ製造ラインにおいて、複数種類の製造物が製造される場合には、製造物の種類に応じて、第2画像生成部550(画像処理回路4)で使用される複数種類の変換パラメータの組を変化させても良い。例えば、ある種類の製造物が製造ラインで製造される場合には、第2画像生成部550は、変換パラメータリスト130に含まれる複数種類の回転パラメータを使用して、対象画像110に対して複数種類の回転用座標変換のそれぞれを別々に行う。一方で、別の種類の製造物が製造ラインで製造される場合には、第2画像生成部550は、変換パラメータリスト130に含まれる複数種類の平行移動パラメータを使用して、対象画像110に対して複数種類の平行移動用座標変換のそれぞれを別々に行う。
【0172】
<各種変形例>
以下の画像処理回路4の各種変形例について説明する。
【0173】
<第1変形例>
図26は、本変形例に係る座標変換回路12の構成を示す図である。本変形例に係る座標変換回路12は、回転画像120に映る被写体のうちの特定の被写体(以後、「特定被写体」と呼ぶ)の位置を調整することが可能である。以下に、本変形例に係る座標変換回路12について、上述の
図4の示される座標変換回路12との相違点を中心に説明する。
【0174】
本変形例に係る座標変換回路12は加算回路25を備えている。加算回路25は、制御回路21によって記憶回路13から読み出された変換パラメータ131に対して、パラメータオフセット230を加算する。そして、加算回路25は、パラメータオフセット230が加算された変換パラメータ131を変換回路20に出力する。
【0175】
パラメータオフセット230は、制御回路21のレジスタ22内に記憶される。パラメータオフセット230は、例えば、対象画像110の重心(四角形の対象画像110での対角線の交点)の位置に対する、対象画像110での特定被写体の重心の位置のずれ量を示している。画像処理回路4が、お菓子判定処理を行う上述の画像処理システム500の第2画像生成部550として機能する場合には、特定被写体は、例えば、撮像画像511に映るお菓子600となる。この場合、特定被写体の重心は、お菓子600の重心、つまり円形のお菓子600の中心となる。
【0176】
パラメータオフセット230は、対象画像110の重心の位置に対する、対象画像110での特定被写体の重心の位置のx方向(例えば画像の左右方向)のずれ量xoffと、対象画像110の重心の位置に対する、対象画像110での特定被写体の重心の位置のy方向(例えば画像の上下方向)のずれ量yoffとで構成されている。以後、ずれ量xoffを「xオフセットxoff」と呼ぶ。また、ずれ量yoffを「yオフセットyoff」と呼ぶ。
【0177】
ここで、対象画像110の重心の座標を(x1,y1)とし、対象画像110での特定被写体の重心の座標を(x2,y2)とする。このとき、xオフセットxoff=x2−x1となり、yオフセットyoff=y2−y1となる。
【0178】
加算回路25は、変換パラメータ131に対してパラメータオフセット230を加算する際には、変換パラメータ131を構成する4つの座標のそれぞれのx座標に対して、パラメータオフセット230のxオフセットxoffを加算する。そして、加算回路25は、変換パラメータ131を構成する4つの座標のそれぞれのy座標に対して、パラメータオフセット230のyオフセットyoffを加算する。
【0179】
変換回路20は、パラメータオフセット230が加算された変換パラメータ131に基づいて、対象画像110に対して座標変換を行う。変換パラメータ131が回転パラメータ132である場合には、変換回路20は、パラメータオフセット230が加算された回転パラメータ132に基づいて、対象画像110に対して回転用座標変換を行う。これにより、対象画像110での特定被写体の重心の位置が、対象画像110の重心の位置からずれている場合であっても、対象画像110に基づいて生成された回転画像120での特定被写体の重心の位置が、回転画像120の重心の位置と一致するようになる。画像処理回路4が、お菓子判定処理を行う画像処理システム500で使用される場合には、エッジ画像565でのお菓子の重心の位置が、エッジ画像565の重心の位置からずれている場合であっても、エッジ画像565に基づいて生成された回転画像565aでのお菓子の重心の位置が、回転画像565aの重心の位置と一致するようになる。
【0180】
パラメータオフセット230は、CPU2が画像処理回路4に対して対象画像110に関する設定を行う際に(上述の
図12のステップs1,s2など)、CPU2によって、特定情報220とともに、制御回路21のレジスタ22に設定される。CPU2は、画像処理回路4に対してある対象画像110に関する設定を行う際には、当該ある対象画像110に応じた特定情報220及びパラメータオフセット230をシステムメモリ3から読み出し、読み出した特定情報220及びパラメータオフセット230をレジスタ22に設定する。制御回路21は、加算回路25にレジスタ22内のパラメータオフセット230を出力するとともに、レジスタ22内の特定情報220に基づいて記憶回路13から変換パラメータ131を読み出す。加算回路25は、記憶回路13から読み出される変換パラメータ131に対してパラメータオフセット230を加算し、パラメータオフセット230が加算された変換パラメータ131を変換回路20に出力する。
【0181】
画像処理回路4が、お菓子判定処理を行う画像処理システム500で使用される場合には、パラメータオフセット230は、例えば、DSP7によって生成される。第1画像生成部540として機能するDSP7は、撮像画像511に基づいてエッジ画像565(第1画像524)を生成する際に、パラメータオフセット230を生成することができる。DSP7は、エッジ画像565(対象画像510)を生成する際に求めたパラメータオフセット230を、当該エッジ画像565と対応付けてシステムメモリ3に記憶する。
【0182】
このように、本変形例に係る座標変換回路12では、変換回路20は、パラメータオフセット230が加算された変換パラメータ131に基づいて対象画像110に対して座標変換を行う。そのため、対象画像110ごとにパラメータオフセット230を調整することによって、変換回路20で得られる処理画像115(回転画像120)での特定被写体の位置を調整することができる。お菓子判定処理を行う画像処理システム500では、回転画像565aでのお菓子の位置がばらつく場合には、合成画像570にばらつきが生じ、その結果、特徴画像520にばらつきが生じる。特徴画像520がばらつくと、正しく製造されたお菓子が映る撮像画像510に基づいて生成された特徴画像520であっても、テンプレート特徴画像522と大きく異なる可能性がある。その結果、判定部532での判定精度が低下する可能性がある。したがって、本変形例のように、回転画像565aでのお菓子の重心の位置を、回転画像565aの重心の位置に一致させることによって、回転画像565aでのお菓子の位置のばらつきが低減し、その結果、判定部532での判定精度を向上させることができる。
【0183】
<第2変形例>
本変形例では、
図27に示されるように、画像処理回路4は、入力フレームバッファ11内の1枚の対象画像110に対して複数種類の座標変換を重ねて行って、1枚の処理画像215を生成する。以後、1枚の対象画像110に対して複数種類の座標変換を重ねて行って、1枚の処理画像215を生成する処理を「重複変換処理」と呼ぶことがある。
【0184】
図28は本変形例に係る座標変換回路12の構成を示す図である。
図29は本変形例に係る処理回路14の構成を示す図である。
図29に示されるように、本変形例に係る処理回路14は、上述の
図11に示される処理回路14と比較して、加算処理部42を備えていない。処理回路14では、座標変換回路12から出力される画素データがライトバッファ43に書き込まれる。また、リードバッファ44内の画素データが座標変換回路12に出力される。
【0185】
図28に示されるように、本変形例に係る座標変換回路12は、上述の
図4に示される座標変換回路12と比較して、選択回路23をさらに備える。選択回路23は、制御回路21から出力される制御信号CNT1に基づいて、入力フレームバッファ11の出力及び処理回路14の出力のどちらか一方を選択し、選択した出力を変換回路20に接続する。本変形例では、制御信号CNT1が第1状態のとき(例えば“1”を示すとき)、選択回路23は入力フレームバッファ11の出力を選択する。選択回路23が入力フレームバッファ11の出力を選択する場合には、変換回路20は、入力フレームバッファ11内の対象画像110にアクセスすることができる。一方で、制御信号CNT1が第2状態のとき(例えば“0”を示すとき)、選択回路23は処理回路14の出力を選択する。選択回路23が処理回路14の出力を選択する場合には、変換回路20は、処理回路14のリードバッファ44と接続され、リードバッファ44から画素データを読み出すことができる。
【0186】
図30は本変形例に係る変換パラメータリスト130の一例を示す図である。本変形例に係る変換パラメータリスト130では、複数種類の変換パラメータ131のそれぞれに対して固有のパラメータ番号(識別情報)が対応付けられている。変換パラメータリスト130に、P種類(P≧2)の変換パラメータ131が含まれているとすると、
図30の例では、P種類の変換パラメータ131に対して、1番からP番までのパラメータ番号がそれぞれ対応付けられている。
【0187】
また
図30の例では、変換パラメータリスト130には、複数種類の回転パラメータ132と、複数種類の拡大パラメータ133と、複数種類の縮小パラメータ134と、複数種類の平行移動パラメータ135とが含まれている。具体的には、変換パラメータリスト130には、画像を1°から360°まで回転するための360種類の回転パラメータ132が含まれている。また、変換パラメータリスト130には、画像を1.1倍に拡大するための拡大用座標変換に必要な拡大パラメータ133、画像を1.2倍に拡大するための拡大用座標変換に必要な拡大パラメータ133などが含まれている。また、変換パラメータリスト130には、画像を0.9倍に縮小するための縮小用座標変換に必要な縮小パラメータ134、画像を0.8倍に縮小するための縮小用座標変換に必要な縮小パラメータ134などが含まれている。そして、変換パラメータリスト130には、画像を右方向に1画素分だけ平行移動するための平行移動用座標変換に必要な平行移動パラメータ135、画像を右方向に2画素分だけ平行移動するための平行移動用座標変換に必要な平行移動パラメータ135などが含まれている。
【0188】
図31は本変形例に係る特定情報220の一例を示す図である。
図31に示されるように、本変形例に係る特定情報220には、ルックアップテーブル(LUT)240と、参照態様情報250とが含まれている。
【0189】
LUT240には、複数のパラメータ番号が記述されている。参照態様情報250は、LUT240に記述された複数のパラメータ番号をどのように参照するかを示す情報である。制御回路21は参照態様情報250に従ってLUT240内のパラメータ番号を1つずつ参照し、パラメータ番号を参照するたびに、参照したパラメータ番号に対応する変換パラメータ131を読み出す。読み出された変換パラメータ131は変換回路20に入力される。
【0190】
参照態様情報250には、参照回数251、参照開始位置252及び参照間隔253が含まれる。参照回数251は、LUT240内のパラメータ番号を参照する回数を示している。参照開始位置252は、LUT240において、最初に参照するパラメータ番号の位置を示している。参照間隔253は、あるタイミングで変換パラメータ131を参照する場合に、LUT240において、前回参照した変換パラメータ131から何個離れた変換パラメータ131を参照するかを示している。
【0191】
制御回路21は、LUT240内の複数のパラメータ番号を、LUT240の先頭側から末尾側にかけて順に参照する。座標変換回路12において、対象画像110に対してM(≧2)種類の座標変換が重ねて行われる場合には、制御回路21は、まず、LUT240において、参照開始位置252が示す位置のパラメータ番号を参照する。そして、制御回路21は、参照したパラメータ番号に対応する変換パラメータ131を記憶回路13から読み出して変換回路20に入力する。次に、制御回路21は、LUT240において、前回参照したパラメータ番号から、参照間隔253が示す個数だけ末尾側に離れたパラメータ番号を参照する。そして、制御回路21は、参照したパラメータ番号に対応する変換パラメータ131を記憶回路13から読み出して変換回路20に入力する。以後、制御回路21は、同様に動作し、参照回数251が示す回数(M回)だけパラメータ番号を参照する。これにより、記憶回路13に記憶されている複数種類の変換パラメータ131のうち、変換回路20が入力フレームバッファ11内の対象画像110に対する座標変換で使用するM種類の使用対象変換パラメータ131が順に変換回路20に入力される。
【0192】
図30,31の例において、例えば、参照回数251が「3回」、参照開始位置252が「先頭」、参照間隔253が「1」を示す場合、制御回路21は、LUT240に含まれる複数のパラメータ番号のうち、No.1、No.361及びNo.400を順に参照する。これにより、変換回路20には、No.1に対応する、画像を1°回転するための回転パラメータ132と、No.361に対応する、画像を1.1倍で拡大するための拡大パラメータ133と、No.400に対応する、画像を右方向に1画素分だけ平行移動するための平行移動パラメータ135とが順に入力される。
【0193】
<画像処理回路の動作>
図32は、本変形例に係る画像処理回路4の動作を説明するための図である。入力フレームバッファ11内に対象画像110が書き込まれると、制御回路21は制御信号CNT1を第1状態に設定するとともに、記憶回路13から、最初に使用される変換パラメータ131を読み出して変換回路20に出力する。変換回路20は、入力フレームバッファ11内の対象画像110に対して、入力された変換パラメータ131に基づいて座標変換を行って、第1中間画像160−1を生成する。制御回路21は、変換回路20で第1中間画像160−1が生成されると、制御信号CNT1を第2状態に設定する。これにより、処理回路14のリードバッファ44は、変換回路20に接続される。
【0194】
変換回路20は、第1中間画像160−1の画素データを、処理回路14のライトバッファ43に書き込む。ライトバッファ43内の画素データはフレームメモリ40に書き込まれる。これにより、フレームメモリ40に第1中間画像160−1が記憶される。
【0195】
処理回路14は、フレームメモリ40内の、第1中間画像160−1の画素データを、リードバッファ44に書き込む。変換回路20は、リードバッファ44内の第1中間画像160−1画素データを読み出す。これにより、変換回路20には、処理回路14から第1中間画像160−1が入力される。変換回路20は、第1中間画像160−1に対して、制御回路21によって記憶回路13から読み出された、2番目に使用される変換パラメータ131に基づいて座標変換を行って、第2中間画像160−2を生成する。変換回路20は、第2中間画像160−2の画素データを、処理回路14のライトバッファ43に書き込む。ライトバッファ43内の画素データはフレームメモリ40に書き込まれる。これにより、フレームメモリ40に第2中間画像160−2が記憶される。
【0196】
処理回路14は、フレームメモリ40内の、第2中間画像160−2の画素データを、リードバッファ44に書き込む。変換回路20は、リードバッファ44内の第2中間画像160−2の画素データを読み出す。これにより、変換回路20には、処理回路14から第2中間画像160−2が入力される。変換回路20は、第2中間画像160−2に対して、制御回路21によって記憶回路13から読み出された、3番目に使用される変換パラメータ131に基づいて座標変換を行って、第3中間画像160−3を生成する。変換回路20は、第3中間画像160−3の画素データを、処理回路14のライトバッファ43に書き込む。ライトバッファ43内の画素データはフレームメモリ40に書き込まれる。これにより、フレームメモリ40に第3中間画像160−3が記憶される。
【0197】
以後、画像処理回路4は同様に動作して、変換回路20が、第(M−1)中間画像160−(M−1)に対して、制御回路21によって記憶回路13から読み出された、M番目に使用される変換パラメータ131に基づいて座標変換を行って、第M中間画像160−Mを生成する。この第M中間画像160−Mが処理画像215としてフレームメモリ40に書き込まれる。
【0198】
図30,31の例において、例えば、参照回数251が「3回」、参照開始位置252が「先頭」、参照間隔253が「1」を示す場合には、上述のように、変換回路20には、画像を1°回転するための回転パラメータ132と、画像を1.1倍で拡大するための拡大パラメータ133と、画像を右方向に1画素分だけ平行移動するための平行移動パラメータ135とが順に入力される。したがって、この場合には、変換回路20は、1枚の対象画像110に対して、画像を1°回転するための回転用座標変換、画像を1.1倍で拡大するための拡大用座標変換及び画像を右方向に1画素分だけ平行移動するための平行移動用座標変換をこの順で重ねて実行する。つまり、変換回路20は、1枚の対象画像110を1°回転し、それによって得られた回転画像を1.1倍に拡大し、それによって得られた拡大画像を右方向に1画素分だけ平行移動することによって、1枚の処理画像215を生成する。
【0199】
処理回路14の出力制御部45は、処理画像215を出力画像として、上記と同様にDMAコントローラ10に出力する。出力制御部45は、記憶制御部41によるフレームメモリ40に対する制御によって、フレームメモリ40から、処理画像215の4画素分の画素データが読み出されると、読み出された4画素分の画素データをDMAコントローラ10に出力する。DMAコントローラ10は処理画像215をシステムメモリ3に書き込む。変換回路20は、画素データを生成するたびに、生成した画素データをライトバッファ43に書き込み、書き込み要求出力部412と第2読み出し要求出力部413とは独立して動作する。したがって、処理画像215が生成された後に、処理画像215がDMAコントローラ10に出力されるのではなく、変換回路20での処理画像215の画素データの生成処理と、出力制御部45での処理画像215の画素データの出力処理とは並行して実行される。
【0200】
このように、本変形例に係る座標変換回路12は、複数種類の変換パラメータ131に基づいて、CPU2とデータのやり取りを行わずに1枚の対象画像110に対して複数種類の座標変換を重ねて行う。したがって、上記と同様に、座標変換回路12が、座標変換を行うたびに、その座標変換で使用する変換パラメータ131をCPU2から受け取る場合と比較して、複数種類の座標変換の処理時間を低減することができる。
【0201】
また、上記と同様に、記憶制御部41では、第1読み出し要求、書き込み要求及び第2読み出し要求の少なくとも2つの要求が競合する場合には、当該少なくとも2つの要求が調停される。そのため、第1読み出し要求出力部411、書き込み要求出力部412及び第2読み出し要求出力部413は互いに独立して動作することができる。よって、第1読み出し要求出力部411、書き込み要求出力部412及び第2読み出し要求出力部413のうちのある出力部での処理がボトルネックになることを抑制することができる。その結果、処理回路14全体の処理速度を向上させることができる。
【0202】
また、本変形例では、特定情報220は、変換パラメータ131に対応するパラメータ番号が記述されたLUT240と、LUT240に記述された複数のパラメータ番号をどのように参照するかを示す参照態様情報250とで構成されている。このため、変換回路20で使用される使用対象変換パラメータ131が、パラメータ番号で指定される。よって、記憶回路13において、複数種類の変換パラメータ131がどのように記憶されているとしても、当該複数種類の変換パラメータ131から、変換回路20で使用される使用対象変換パラメータ131を自由に指定することができる。
【0203】
例えば、上述の
図5のように、複数種類の回転パラメータ132が記憶回路13に記憶されている場合を考える。この場合、上述の
図6に示されるように、特定情報220が使用パラメータ数221、使用開始位置222及び使用間隔223で構成されている場合には、特定情報220によって、画像を1°回転するための回転パラメータ132、画像を2°回転するための回転パラメータ132、画像を4°回転するための回転パラメータ132及び画像を7°回転するための回転パラメータ132だけを指定することができない。これに対して、本変形例では、LUT240に、画像を1°回転するための回転パラメータ132に対応するパラメータ番号と、画像を2°回転するための回転パラメータ132に対応するパラメータ番号と、画像を4°回転するための回転パラメータ132に対応するパラメータ番号と、画像を7°回転するための回転パラメータ132に対応するパラメータ番号とを記述することによって、特定情報220によって、これらの回転パラメータ132だけを指定することが可能となる。
【0204】
なお、特定情報220は、LUT240及び参照態様情報250で構成されているが、LUT240のみで構成しても良い。この場合には、制御回路21は、LUT240内の複数のパラメータ番号を、例えば、LUT240の先頭から順に参照する。このような場合であっても、変換回路20で使用される使用対象変換パラメータ131がパラメータ番号で指定されることから、記憶回路13において、複数種類の変換パラメータ131がどのように記憶されているとしても、当該複数種類の変換パラメータ131から、変換回路20で使用される使用対象変換パラメータ131を自由に指定することができる。
【0205】
また、本変形例に係る画像処理回路4において、上述の
図6に示される特定情報220が使用されても良い。
【0206】
<第3変形例>
本変形例に係る画像処理回路4は、動作モードとして、対象画像110に対して個別変換処理を行う個別変換処理モードと、対象画像110に対して重複変換処理を行う重複変換処理モードとを備えている。
図33,34は、本変形例に係る座標変換回路12及び処理回路14の構成をそれぞれ示す図である。
【0207】
図33に示されるように、本変形例に係る座標変換回路12は、上述の
図28に示される座標変換回路12と同様の構成を有している。変形例では、制御回路21のレジスタ22には、画像処理回路4が動作すべき動作モードを示す動作モード情報260が記憶される。動作モード情報260は、例えば、CPU2によってレジスタ22に設定される。CPU2は、特定情報220をレジスタ22に設定する際に、動作モード情報もレジスタ22に設定する。
【0208】
制御回路21は、動作モード情報260に基づいて制御信号CNT1を制御する。また制御回路21は、処理回路14が有する後述の選択回路46を制御するための制御信号CNT2を出力する。制御回路21は、動作モード情報260に基づいて制御信号CNT2を制御する。
【0209】
図34に示されるように、本変形例に係る処理回路14は、上述の
図11に示される処理回路14と比較して、選択回路46をさらに備える。選択回路46は、制御信号CNT2に基づいて、変換回路20の出力及び加算処理部42の出力の一方を選択し、選択した出力をライトバッファ43に接続する。本変形例では、制御信号CNT2が第1状態(例えば、“1”を示す状態)のとき、選択回路46は、加算処理部42の出力を選択してライトバッファ43に接続する。選択回路46が加算処理部42出力を選択する場合には、ライトバッファ43には加算処理部42から出力される画素データが書き込まれる。一方で、制御信号CNT2が第2状態(例えば、“0”を示す状態)のとき、選択回路46は、変換回路20の出力を選択してライトバッファ43に接続する。選択回路46が変換回路20の出力を選択する場合には、ライトバッファ43には変換回路20から出力される画素データが書き込まれる。
【0210】
<動作モードの設定>
制御回路21は、動作モード情報260が個別変換処理モードを示す場合には、制御信号CNT1,CNT2をともに第1状態に設定する。これにより、本変形例に係る画像処理回路4の動作モードは個別変換処理モードとなり、その構成は、上述の
図4,11に示される画像処理回路4の構成と等価となる。個別変換処理モードでの画像処理回路4の動作は、上述の
図4,11に示される画像処理回路4の動作と同様である。
【0211】
一方で、制御回路21は、動作モード情報260が重複変換処理モードを示す場合には、制御信号CNT2を第2状態に設定する。これにより、本変形例に係る画像処理回路4の動作モードは重複変換処理モードとなり、その構成は、上述の
図28,29に示される第2変形例に係る画像処理回路4の構成と等価となる。重複変換処理モードでの画像処理回路4の動作は、上述の第2変形例に係る画像処理回路4の動作と同様である。
【0212】
本変形例に係る画像処理回路4を備える画像処理装置1が起動した後、CPU2が、画像処理回路4に対して、q枚目(qは変数で、q≧1)の対象画像110に関する設定を行う場合には(上述の
図12のステップs1,s2など)、CPU2は、q枚目の対象画像110に対する処理で使用される特定情報220と、q枚目の対象画像110に対する処理での画像処理回路4の動作モードを示す動作モード情報260とを、画像処理回路4の制御回路21が有するレジスタ22に設定する。画像処理回路4では、レジスタ22に特定情報220及び動作モード情報260が設定されると、DMAコントローラ10が、システムメモリ3からq枚目の対象画像110を読み出して入力フレームバッファ11に書き込む。座標変換回路12では、制御回路21が、制御信号CNT1,CNT2を制御して、画像処理回路4の動作モードを、レジスタ22内の動作モード情報260が示す動作モードに設定する。画像処理回路4は、入力フレームバッファ11内のq枚目の対象画像110に対して、動作モードに応じた処理を行う。
【0213】
CPU2は、画像処理回路4に対して、(q+1)枚目の対象画像110に関する設定を行う場合には、同様にして、(q+1)枚目の対象画像110に対する処理で使用される特定情報220と、(q+1)枚目の対象画像110に対する処理での画像処理回路4の動作モードを示す動作モード情報260とを、画像処理回路4の制御回路21が有するレジスタ22に設定する。
【0214】
このように、本変形例に係る画像処理回路4は、動作モードとして、個別変換処理モードと重複変換処理モードとを備えていることから、一つの画像処理装置1において個別変換処理と重複変換処理の両方を実行させることができる。あるいは、同じ構成を有する2つの画像処理装置1において、一方の画像処理装置1では個別変換処理だけを実行させ、他方の画像処理装置1では重複変換処理だけを実行させることができる。
【0215】
<第4変形例>
図35は本変形例に係る画像処理回路4の処理回路14の構成を示す図である。
図35に示されるように、本変形例に係る処理回路14は、上述の
図11に示される処理回路14と比較して、第2読み出し要求出力部413を備えていない。したがって、調停部410は、第1読み出し要求出力部411から出力される第1読み出し要求と、書き込み要求出力部412から出力される書き込み要求とを調停して、第1読み出し要求及び書き込み要求のいずれか一方を選択し、選択した要求に応じた処理を行う。
【0216】
また、本変形例に係る処理回路14では、出力制御回路45は、フレームメモリ40から読み出された合成画像140の画素データを出力するのではなく、ライトバッファ43内の合成画像140の画素データを出力する。ライトバッファ43に、合成画像140の4画素分の画素データが記憶されると、出力制御回路45は、ライトバッファ43から4画素分の画素データを読み出してDMAコントローラ10に出力する。本変形例では、書き込み要求出力部412は、ライトバッファ43に合成画像140の画素データが記憶されているときには、ライトバッファ43が一杯なったとしても例外的に書き込み要求を出力しない。
【0217】
このように、本変形例に係る処理回路14では、第1読み出し要求及び書き込み要求が競合する場合には、その2つの要求が調停されるため、第1読み出し要求出力部411及び書き込み要求出力部412は、互いに独立して動作することができる。よって、第1読み出し要求出力部411及び書き込み要求出力部412のうちの一方の出力部での処理がボトルネックになることを抑制することができる。その結果、処理回路14全体の処理速度が向上することができる。
【0218】
さらに、出力制御部45は、フレームメモリ40に書き込まれていない、合成画像140の画素データを、DMAコントローラ10に出力する。したがって、出力制御部45が、フレームメモリ40から読み出された合成画像140の画素データを出力する場合と比較して、DMAコントローラ10は、加算処理部42から出力された出力対象データをすぐに受け取ることができる。よって、出力対象データが生成されてから、それがシステムメモリ3に書き込まれるまでの時間を低減することができる。
【0219】
<その他の変形例>
上記の例では、座標変換回路12は、1枚の対象画像110を用いて複数種類の座標変換を行っていたが、1枚の対象画像110に対して1種類の座標変換だけを行っても良い。また、座標変換回路12は、1枚の対象画像110に対して1種類の座標変換を繰り返し重ねて行っても良い。例えば、上記の第2変形例において、座標変換回路12は、画像を2°回転するための回転パラメータ132に基づいて、1枚の対象画像110に対して、回転角度が2°の回転用座標変換を90回重ねて行う。これにより、対象画像110を180°回転させた画像が処理画像215として得られる。
【0220】
また、座標変換回路12の全部あるいは一部の機能は、プロセッサ(CPUあるいはDSPなど)によって実現されても良い。また、処理回路14の全部あるいは一部の機能は、プロセッサによって実現されても良い。
【0221】
また、画像処理回路4には、処理回路14が設けられていなくても良い。この場合には、座標変換回路12から出力されるデータがDMAコントローラ10を通じてシステムメモリ3に書き込まれる。また処理回路14は、画像データ以外のデータを処理しても良い。また、加算処理部42の替りに、加算処理以外の処理を行う処理部が設けられても良い。
【0222】
以上のように、画像処理装置1及び画像処理システム500は詳細に説明されたが、上記した説明は、全ての局面において例示であって、この発明がそれに限定されるものではない。また、上述した各種変形例は、相互に矛盾しない限り組み合わせて適用可能である。そして、例示されていない無数の変形例が、この発明の範囲から外れることなく想定され得るものと解される。