説明

画像処理装置および画像処理プログラム

【課題】画素に含まれる複数の要素毎に並列でフィルタ処理が可能な描画プロセッサを用いて、従来よりも高速に、グレースケール画像の演算を可能にすることを目的とする。
【解決手段】画像処理装置は、複数の要素からなる画素を複数含むカラー画像のフィルタ処理を、該画素に含まれる該複数の要素をまとめてベクトル演算することで、実行する画像処理プロセッサと、濃淡の要素を含む画素を複数含む濃淡画像を取得する画像入力部と、取得した該濃淡画像を、該画像処理プロセッサの一括でベクトル演算が可能な要素の数に分割する方法を決定する分割法評価部と、該分割法評価部で決定した方法に応じて該濃淡画像のそれぞれの画素の濃淡の要素を該画像処理プロセッサが一括でベクトル演算する該複数の要素に対応するように分割する画像分割部とを有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置に関する。
【背景技術】
【0002】
モニタにカラー画像を表示する装置は、一般に、モニタに画像を表示するための描画プロセッサ(例えば、Graphics Processing Unit)を有する。カラー画像の各画素は、複数の要素を含む。複数の要素は、例えば、赤成分(Red)・緑成分(Green)・青成分(Blue)の三原色の要素、および透明度(アルファ成分:A)の要素である。描画プロセッサは、カラー画像の一つの画素に対するさまざまな画像処理が可能な複数のサブプロセッサを含む。各サブプロセッサは各画素のRGBAの各要素を一つのベクトルとして並列演算する。
【0003】
画像処理の一つにフィルタ処理がある。フィルタ処理に関する技術として以下の公知技術がある。
【0004】
ところで、画像処理装置は車両に搭載される場合がある。車両に搭載された画像処理装置は、車両に搭載されたカメラから得られた画像を解析して、画像に写る物体を検出することで運転者を支援する。画像処理装置は、例えば、画像解析処理の過程において、平滑化、エッジ検出等の画像フィルタ処理を実行した後、背景差分方式により画像に写る物体を検出する。画像に写る物体の検出では、画像処理装置は、画像内の隣接する画素の明るさの変化を検出することでエッジを検出する。したがって、処理の対象となる画像はカラーである必要はなく、明るさの度合いが分かればよい。画像の種類の一つにグレースケール画像がある。グレースケール画像は白から黒までの明暗の度合いだけで表現されており、色の情報は含まない。このため、グレースケール画像の各画素は、明暗の度合いを示す一つの要素を有する。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2007−274478号公報
【特許文献2】特許第4452027号
【特許文献3】特開2003−324736号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
画像処理に描画プロセッサを使用することが可能である。上記の描画プロセッサの各サブプロセッサは複数の演算器を含み、該複数の演算器を並列に実行することによるベクトル演算処理によって、画素内のすべての要素のフィルタ処理を実行する。ベクトル演算処理の手順は、ある画素に含まれる複数の要素に対して同一演算の実行を規定するためのベクトル命令の導入処理を行った後、導入処理に沿って複数の演算器を用いて、ある画素の各要素を、並列して処理する。したがって、ベクトル演算処理は複数の要素を並列に処理することが可能だが、ベクトル命令の導入処理に時間を要する。このため、並列処理の対象となる要素数が、一つであっても複数であっても、処理時間はほとんど変わらない。
【0007】
グレースケール画像の各画素は上記のように一つの要素を有する。このため、上記描画プロセッサを用いて濃淡画像を画像フィルタ処理する場合、各サブプロセッサはRGBA値からなる複数の要素を並列に処理できるにも関わらず、一つの要素しか使用しないことになってしまう。このため、グレースケール画像について画像処理を行う場合、描画プロセッサの演算処理を十分に機能させることができない問題があった。
【0008】
開示の画像処理装置は、画素に含まれる複数の要素毎に並列でフィルタ処理が可能な描画プロセッサを用いて、従来よりも高速に、グレースケール画像の演算を可能にすることを目的とする。
【課題を解決するための手段】
【0009】
画像処理装置は、複数の要素からなる画素を複数含むカラー画像のフィルタ処理を、該画素に含まれる該複数の要素をまとめてベクトル演算することで、実行する画像処理プロセッサと、濃淡の要素を含む画素を複数含む濃淡画像を取得する画像入力部と、取得した該濃淡画像を、該画像処理プロセッサの一括でベクトル演算が可能な要素の数に分割する方法を決定する分割法評価部と、該分割法評価部で決定した方法に応じて該濃淡画像のそれぞれの画素の濃淡の要素を該画像処理プロセッサが一括でベクトル演算する該複数の要素に対応するように分割する画像分割部とを有する。
【発明の効果】
【0010】
開示の画像処理装置は、既存のRGBA並列演算画像プロセッサを用いて、効率よくグレースケール画像のフィルタ処理を実行することが可能になる。
【図面の簡単な説明】
【0011】
【図1】図1は本実施例の画像処理装置の機能ブロック図である。
【図2】図2は本実施例の画像処理装置のハードウェア構成の例である。
【図3】図3は画像処理全体のフローチャートである。
【図4】図4は車両と検出すべき領域の関係を説明する図である。
【図5】図5は撮像部16が撮像した画像の一例である。
【図6】図6は本実施例の描画処理モジュール37による画像処理の説明図である。
【図7】図7は本実施例のRGBA画像のデータ構造の説明図である。
【図8】図8は本実施例のグレースケール画像のデータ構造の説明図である。
【図9】図9はフィルタ処理の説明図である。
【図10】図10はフィルタサイズの第一の変更例である。
【図11】図11はフィルタサイズの第二の変更例である。
【図12】図12は本実施例のフィルタ処理で使用する重複領域の説明図である。
【図13】図13は画像分割と画像サイズとの関係を説明する図である。
【図14】図14は本実施例のパラメータの差異による分割前後の画像サイズの比較テーブルである。
【図15】図15は分割画像の情報を示すテーブルである。
【図16】図16は各要素画像と座標の関係を示すテーブルである。
【図17】図17は要素画像の説明図である。
【図18】図18は画像分割部21が要素画像をまとめたデータ構成を説明する図である。
【図19】図19は本実施例の描画処理モジュール37によるフィルタ処理の説明図である。
【発明を実施するための形態】
【0012】
[装置の機能]
図1は本実施例の画像処理装置の機能ブロック図である。
【0013】
本実施例の画像処理装置1は、車両に搭載された場合を例に説明する。本実施例の車両は、車両の周囲を撮像可能なカメラ等の撮像部を有しているものとする。なお、車両は複数の撮像部を有することも可能である。画像処理装置1は、例えば、撮像部が撮像した画像の解析を行い、解析結果を車両に搭載された表示部に表示することで運転者の支援を行う。運転者の支援のための画像解析は、例えば、撮像部が撮像した画像に写る路上の障害物、他の車両、歩行者等の物体の検出、車両の車線逸脱警告などである。
【0014】
画像処理装置1は、全体処理部10、描画処理部20、撮像部16、入力部17、および表示部18を有する。全体処理部10、描画処理部20、撮像部16、入力部17、および表示部18は互いにデータの送受信が可能である。
【0015】
撮像部16は動画像や静止画像等を取得する。入力部17は各種パラメータ等を、例えば、利用者の入力により取得する。表示部18は撮像部16が取得した動画像や、画像解析結果等を表示する。
【0016】
全体処理部10は、例えば、画像の入出力、画像の分割方法の決定等の画像処理装置1の全体の動作を制御する。全体処理部10は、画像入力部11、パラメータ抽出部12、分割法評価部13、フィルタパラメータ14、画像メモリ15を有する。
【0017】
画像入力部11は、画像を外部から受け付ける。本実施例では、画像入力部11は撮像部16から取得する。
【0018】
パラメータ抽出部12は、画像処理に必要なパラメータを抽出する。画像処理に必要なパラメータは画像のサイズ、フィルタサイズ、フィルタ係数等である。なお、以降の説明においてサイズは画素数で示すものとする。画像のサイズのパラメータは、画像入力部11が取得した画像から特定する。フィルタサイズ、フィルタ係数等は、フィルタパラメータ14から特定する。フィルタサイズは、周辺の画素の範囲となるフィルタ領域のサイズである。フィルタ領域は、ある画素についてフィルタ処理を行う場合に使用する画素の範囲を特定する領域である。フィルタ係数はフィルタ領域内の個々の画素毎に定義されており、ある画素についてフィルタ処理を行う場合にフィルタ領域に含まれる個々の画素の画素値に対して用いる係数である。
【0019】
分割法評価部13は、描画処理部20が画像についてフィルタ処理を実行するときに画像を分割する際に使用する、画像を分割する数および分割方法を決定する。なお、分割される前の元の画像を元画像とし、元画像を複数の領域に分割した後の個々の画像を分割画像とする。また、分割法評価部13は、元画像を分割する数および分割後の画像の形状を描画処理部20に出力する。
【0020】
なお、本実施例の分割法評価部13は、描画処理部20が処理を均等に分割できるように、分割後の画像の形状が同じになるように分割しても良い。分割後の画像の形状が同じであれば、描画プロセッサ38がサブプロセッサ39にフィルタ処理を要求する際に、画素の座標を用いて要求することが可能になる効果がある。
【0021】
フィルタパラメータ14は、画像に対してフィルタ処理を実行する際の、各種のフィルタパラメータを記憶する。フィルタパラメータは、フィルタ領域の縦方向および横方向のサイズ(フィルタサイズ)、フィルタ領域に含まれる各画素に対応するフィルタ係数を記憶する。例えば、利用者により入力部17を用いてフィルタサイズおよびフィルタ係数が入力されると、全体処理部10は入力されたフィルタサイズ情報およびフィルタ係数情報をフィルタパラメータ14に格納する。
【0022】
画像メモリ15は、撮像部16によって撮像された映像、画像解析処理の対象となる入力画像、入力画像を濃淡に変更した後の元画像、元画像について画像処理を実行した後の出力画像等を記憶する。本実施例では、撮像部16はRGBA画像等のカラー画像を撮像するものとする。
【0023】
描画処理部20は、全体処理部10から元画像、元画像を分割する数、および分割後の画像の形状を取得し、元画像について画像処理を実行する。本実施例の描画処理部20は、複数の要素からなる画素により形成されるカラー画像の各要素について並列にフィルタ処理が可能であるものとする。
【0024】
画素に含まれる要素数は、例えば、1つの要素から成り立つ画像は濃淡で表現される画像であり、色を持つRGB画像の場合は、R、G、Bの3つの要素を持つ。さらに他画像との重ね合わせを考慮した透明度(アルファ要素:A)を持つ画像もあり、この場合はRGBAの4要素を持つ。描画処理部20は、画像分割部21、フィルタ処理部22、画像メモリ23、および描画プロセッサパラメータ24と有する。
【0025】
画像分割部21は、元画像を分割する数、および分割後の画像の形状に基づき元画像を分割する。画像分割部21は、各分割画像を描画処理部20のフィルタ処理部22で並列に処理が可能なように、フィルタ処理部22に出力する。
【0026】
フィルタ処理部22は、入力された各分割画像を並列にフィルタ処理する。フィルタ処理部22は、フィルタ処理結果を画像メモリ23に格納する。
【0027】
画像メモリ23は、撮像部16によって撮像された映像、画像解析処理の対象となる入力画像、入力画像を濃淡に変更した後の元画像、元画像について画像処理を実行した後の出力画像等を記憶する。
【0028】
描画プロセッサパラメータ24は、フィルタ処理、画像解析処理、その他の画像処理に用いるパラメータ情報を格納する。
【0029】
なお、本実施例の全体処理部10の画像メモリ15と、描画処理部20の画像メモリ23は別の構成としているが、全体処理部10と描画処理部20とが画像メモリ15と画像メモリ23とを共有して使用する構成も可能である。同様に、本実施例の全体処理部10のフィルタパラメータ14と描画処理部20の描画プロセッサパラメータ24は別の構成としているが、全体処理部10と描画処理部20とがフィルタパラメータ14と描画プロセッサパラメータ24とを共有して使用する構成も可能である。
【0030】
[ハードウェア構成]
次に、画像処理装置1のハードウェア構成について説明する。図2は本実施例の画像処理装置のハードウェア構成の例である。
【0031】
画像処理装置1は、メイン処理モジュール30と、描画処理モジュール37とを有する。メイン処理モジュール30は、メインプロセッサ31、メインRAM32、およびメインROM33を有し、それらはバスで接続される。
【0032】
メインプロセッサ31は、画像処理装置1の全体の動作を制御する中央演算処理装置である。本実施例のメインプロセッサ31は全体処理部10の機能を実行する一例である。本実施例ではメインプロセッサ31は全体処理部10の処理を実行するが、例えば、画像入力処理、パラメータ抽出処理、分割法評価処理等を、画像入力プロセッサ、パラメータ抽出プロセッサ、分割法評価プロセッサが実行するようにしてもよい。
【0033】
メインRAM32は全体処理部10の機能を実行する一例である。メインRAM32は、読み出しあるいは書き込みが可能なメモリであり、メインプロセッサ31が動作する際に読み出しあるいは書き込む各種データを記憶する。メインROM33は全体処理部10の機能を実行する一例である。メインROM33は、読み出し専用メモリであり、メインプロセッサ31が動作するための画像処理プログラムを記憶する。
【0034】
描画処理モジュール37は、描画プロセッサ38、複数のサブプロセッサ39、描画RAM40、および描画ROM41を有し、それらはバスで接続される。描画プロセッサ38は、メイン処理モジュール30からの処理依頼に基づき、画像処理を開始する。なお、複数のサブプロセッサ39は、個々のサブプロセッサについて説明する場合は、サブプロセッサ391、392、393、...394とし、複数のサブプロセッサ全体について説明する場合、複数のサブプロセッサ39とする。以降の説明では、複数のサブプロセッサ39のそれぞれを対象とする場合、および、それぞれのサブプロセッサ391、392、393、...394で共通する場合、各サブプロセッサ39という。
【0035】
本実施例の描画処理部20は、それぞれ独立した輝度情報であるRGBAの原色要素(以下、要素とする)を並列に処理が可能である。各サブプロセッサ39は4つの要素をまとめてベクトル演算が可能である。
【0036】
描画RAM40は描画処理部20の機能を実行する一例である。描画RAM40は、読み出しあるいは書き込みが可能なメモリであり、描画プロセッサ38が動作する際に読み出しあるいは書き込む各種データを記憶する。描画ROM41は描画処理部20の機能を実行する一例である。描画ROM41は、読み出し専用メモリであり、描画プロセッサ38が動作するための描画処理プログラムを記憶する。
【0037】
モニタ34は、表示部18の一例であり、例えばディスプレイである。カメラ35は、撮像部16の一例であり、車両外部の状態を撮像する。入力部36は、例えば、キーボード、タッチパッド、マウス等の入力機器である。
【0038】
[画像処理フロー]
次に、画像処理の手順についてフローチャートを用いて説明する。図3は、画像処理全体のフローチャートである。
【0039】
本実施例の画像処理装置1は、運転者支援の画像解析処理として、1つの要素からなる濃淡画像を対象とする。濃淡画像を処理の対象にする理由は、画像内の各画素の明るさの差異によって画像に写る対象物の検出を行っているため、および、一つの要素を演算すればよいので画像解析に必要な処理量(処理時間)が低減(短縮)されるためである。画像解析の処理は、例えば、画像の平滑化、画像のエッジ検出等の画像フィルタ処理がある。画像処理装置1は、リアルタイムでの処理を実現するために、画像フィルタ処理を高速で実行することが望ましい。
【0040】
本実施例の画像処理装置1は、複数のサブプロセッサ39を有することで複数の画素のフィルタ処理を並列に処理することが可能である。本実施例の描画プロセッサ38が有する複数のサブプロセッサ39は一つの画素が含む複数の要素をベクトル演算によりまとめて処理することが可能である。各サブプロセッサ39が複数の要素を含む画素を並列にベクトル演算が可能であるにも関わらず、各サブプロセッサ39が一つの要素しか有さない画像を処理する場合、描画処理部20は効率よい画像処理演算を実行しているとはいえない。
【0041】
そこで、本実施例の画像処理装置1は、一つの要素からなる元画像を各サブプロセッサ39が実行可能な要素の並列処理段数で分割して、分割後の画像をまとめた画像処理を実行することで、画像処理の時間を短縮する。なお、分割数は、要素以下であれば、いくつに分割してもよい。本実施例では、各サブプロセッサ39のベクトル演算機能を効率よく使用するために、一つの要素で構成される画像を4つに分割して、分割した画像をまとめてベクトル演算する。また、画像処理装置1は、画像処理を行うための分割後画像を生成する際に、重複領域を設けることで、画像処理を実行する際に、不連続領域の発生を防ぐ。また、画像処理装置1は、重複領域を決定するときに、分割後画像の格納に必要なメモリ容量を算出し、該メモリ容量が少なくなる分割方法を特定する。
【0042】
本実施例の画像処理装置1は、元画像を取得し(S01)、元画像および記憶部に格納されたパラメータ情報から各種パラメータを取得し(S02)、元画像の分割方法を決定し(S03)、決定した分割方法に沿って元画像を要素画像に分割し(S04)、分割した各要素画像を並列にフィルタ処理し(S05)、画像処理結果を表示部18に表示する(S06)手順で画像処理を実行する。以下各処理手順を詳細に説明する。
【0043】
[画像入力]
車両に搭載された撮像部16は、カラー画像を撮像する。本実施例の画像入力部11はカラー画像を取得するが、最初から濃淡画像を取得するようにしても良い。
【0044】
画像入力部11は、撮像部16により撮像されたカラー画像を取得する(S01)。画像入力部11は入力画像を画像メモリ15に格納する。また、画像入力部11は、カラー画像を表示部18に出力する。なお、画像入力部11は、表示部18に出力する場合、注目すべき領域のみを出力することも可能である。注目すべき領域とは、例えば、画像処理の対象とする範囲である。画像入力部11は、カラー画像から処理の対象となる領域を特定する。
【0045】
車両の運転においては様々な状態がある。したがって、運転者支援装置が検出すべき対象は、車両が動作している状態によって異なる。本実施例では、複数の撮像部16が車両に設置されているものとする。
【0046】
例えば、車両が停止している場合、画像処理装置1は複数の撮像部16により撮像された画像を取得し、車両の周囲に存在する障害物を検出する。また、車両が後進している場合、画像処理装置1は車両の後方を撮像する撮像部16により撮像された画像を取得し、車両の後方の障害物を検出する。また、車両が前進している場合、画像処理装置1は車両の前方を撮像する撮像部16により車両の前方の障害物、車両、人間を検出する。車両が交差点に進入する場合、画像処理装置1は前方を撮像する撮像部16の画像の内、交差する車線を撮像する領域を特定し、特定した交差する車線上の車両、人間を検出する。また、車両の速度によって、画像処理装置1が検出すべき範囲は異なる。
【0047】
車両は魚眼レンズを有するカメラを搭載し、車載装置は運転者の死角に位置する物体をカメラが撮像した画像から検出する場合を説明する。車載装置は、見通しが悪い交差点等において運転者の運転判断を支援する。
【0048】
図4は、車両と検出すべき領域の関係を説明する図である。図4において、車両90は道路92を走行中に交差点に進入しようとしている状態である。車両90は車両90の先端等にカメラを搭載する。車載装置は、該カメラから車両左右方向の映像を取得し、取得した映像を車載モニタに表示する。また、車載装置は、映像から接近車両等を検出して警告することで、運転者へ注意を喚起する。
【0049】
このとき、車載装置は、カメラが撮像した画像全体について画像処理するのではなく、左右の道路消失点付近のみを画像処理する。図4の場合、車両の進行する車線に交差する車線が画像処理の対象となる。この左右の道路消失点付近に位置する二つの領域91、93がそれぞれ解析対象となる。
【0050】
車載装置は二つの領域91、93を撮像する画像内の範囲についてフィルタ処理を行う。画像内の二つの領域91、93に対応する範囲は、車両の速度、方向等の状態によって異なる。また、結果、検出した物体(赤枠)の内部がフィルタ処理の対象となる場合もある。画像内での物体のサイズは、物体と車両との距離に応じて変わるためである。
【0051】
以上より、入力画像のサイズは、複数のカメラが異なるだけではなく、複数の異なるカメラが取得した画像のどの部分を画像解析すべきかにより変わる。
【0052】
図5は、撮像部16が撮像した画像の一例である。図5は、道路の一方の端から道路を横断する方向に魚眼レンズにより撮像された画像である。画像96の左右には消失点がある。たとえば、社債装置は、消失点の周囲を画像処理の対象とする。図5では、処理の対象の領域は94、97となる。領域94には検出対象の物体95が存在する。
【0053】
なお、本実施例の撮像部16は、動画像を撮影しているものとする。画像入力部11は取得した動画像から任意の時点の画像を抽出する。以下、取得した静止画像や動画像から抽出した画像を入力画像という。本実施例の入力画像の各画素は、明るさの度合いを示す一つの要素を有するものとする。
【0054】
また、本実施例の画像入力部11は、取得したカラーである入力画像をグレースケール等の濃淡画像に変更する処理の要求を描画処理部20に出力する。画像処理装置1は、例えば、カメラが撮像して入力された画像処理対象のRGBA画像を、輝度値からなる一つの要素を含むグレースケール画像(以下、元画像とする)に変換する。背景差分方式では、輝度の違いがあれば差分領域の検出が可能であること、および後述するフィルタ処理時間の短縮化のためである。画像入力部11はグレースケール画像に変換した後の画像処理の対象となる元画像を画像メモリ15に格納する。
【0055】
[パラメータ抽出]
次に、パラメータ抽出部12は、画像処理に用いる各種パラメータを取得する(S02)。パラメータ抽出部12は、画像メモリ15に格納された元画像のサイズを特定する。また、パラメータ抽出部12はフィルタパラメータ14からフィルタサイズおよびフィルタ係数を読み出す。また、パラメータ抽出部12は描画プロセッサパラメータ24から描画処理モジュール37の各サブプロセッサ39が実行可能なベクトル並列演算数を取得する。
【0056】
[元画像の分割]
次に、分割法評価部13は、元画像を分割する(S03)。画像処理装置1は、描画プロセッサが有する並列演算の能力を有効利用して、元画像を画像処理するために、元画像を分割する。
【0057】
本実施例の画像処理装置1は、効率よく画像処理演算を実行するため、描画処理モジュール37がまとめてベクトル演算を実行することが可能な数で元画像を分割する。分割する数は、元画像の要素数と描画処理モジュール37がまとめてベクトル演算の処理を実行可能な数との関係により定まる。本実施例の描画処理モジュール37は、4つの要素を含むRGBA画像についてベクトル演算が可能である。また、入力する元画像は一つの濃淡要素を含むグレースケール画像である。したがって、元画像を分割する数は4/1となり、「4」になる。同様に、描画処理モジュール37が、例えば、3つの要素を含むRGB画像についてベクトル演算が可能である場合で、入力する元画像が一つの濃淡要素を含むグレースケール画像である場合、元画像を分割する数は3/1となり、「3」になる。
【0058】
なお、元画像を分割する数は、描画処理モジュール37がまとめてベクトル演算の処理を実行可能な数以下であればフィルタ演算時間は短縮される。したがって、元画像を分割する数は、描画処理モジュール37がまとめてベクトル演算の処理を実行可能な数以下にする。
【0059】
なお、後述する重複領域を考慮しない場合、分割法評価部13は、描画処理モジュール37の各サブプロセッサが実行するベクトル演算の要素数の数で、元画像を分割するように決定する。一方、重複領域を考慮する場合、分割法評価部13は、以下の手順で元画像の分割方法を決定する。
【0060】
ここで、元画像の分割方法と描画処理モジュール37の処理の手順との関係について説明する。
【0061】
[描画プロセッサの処理]
以下、描画処理モジュール37による画像処理の手順を説明する。
【0062】
描画処理モジュール37は、表示部18に画を描画するための種々の処理を実行する。描画処理モジュール37は、複数のサブプロセッサ39と各サブプロセッサを管理するための描画プロセッサ38を含む。描画プロセッサ38は、画像の個々の画素についての演算を各サブプロセッサ39に割り当てる。各サブプロセッサ39は、描画プロセッサ38に割り当てられた一つの画素について、依頼された処理を実行する。各サブプロセッサ39は、画像処理演算の処理命令と画像処理対象の画素とを描画プロセッサ38から指示されると、画像処理対象の画素について処理命令を実行し、処理結果値を描画プロセッサ38に出力して、処理を終了する。本実施例の各サブプロセッサ39は、それぞれ画素値を構成する各要素(例:R、G、BおよびA成分)を1つのベクトルとして、並列演算することが可能である。各サブプロセッサ39のそれぞれは、各要素を並列演算することにより、高速な画像処理を実現する。描画プロセッサ38は、複数のサブプロセッサ39の内、処理を実行していないサブプロセッサ39に順次処理を割り当て、全画素を処理する。
【0063】
本実施例の描画プロセッサ38は、カラー画像のフィルタ処理を実行可能である。本実施例のカラー画像は、RGBAで表示される画像(以下、RGBA画像とする)である。RGBA画像の一つの画素は、三原色の各原色(赤、緑、青)およびアルファチャンネル(透明度)でそれぞれ独立した輝度情報を有する。この独立した輝度情報を要素とする。描画プロセッサ38の各サブプロセッサ39は、複数の要素を有する画素を一括に処理する。
【0064】
本実施例の描画プロセッサ38の各サブプロセッサ39は、ベクトル演算が可能であるとする。本実施例のベクトル演算は、複数の要素の演算を繰り返すような操作を逐次的(スカラー演算)ではなく、一度に行うものを指す。
【0065】
以上の手順で、描画プロセッサ38は画像の全画素値についてフィルタ処理を行う。
【0066】
図6は本実施例の描画処理モジュール37による画像処理の説明図である。描画処理モジュール37は描画プロセッサ38と複数のサブプロセッサ39(391,392,393,394,395,396,397,398,399)を有する。描画プロセッサ38は、各サブプロセッサ39に順次フィルタ処理を割り当てる。各サブプロセッサ39は、割り当てられたある位置に存在する1つの画素に対する画素値を決定するためのフィルタ処理を実行する。
【0067】
図6の50は、画像処理対象の画像の説明図である。50は、RGBA画像である。51、52、53、54は、それぞれ、RGBA画像50のR成分、G成分、B成分、A成分を示す。55、56、57はそれぞれ、RGBA画像50上の一つの画素を示す。描画プロセッサ38は、例えばサブプロセッサ391に画素55の画像処理演算を依頼する。サブプロセッサ391は、画素55のR成分、G成分、B成分、およびA成分をまとめてベクトル演算する。サブプロセッサ391は、演算結果を描画プロセッサ38に出力し処理を終了する。つまり、サブプロセッサ391は、描画プロセッサ38により指定されたある位置の画素を処理対象と認識し、ある位置における各成分を並行して処理する。
【0068】
例えば、サブプロセッサ391が画素55の要素値を2倍して出力する場合があるとする。
サブプロセッサ391は4つの要素のベクトル演算により、画素55に含まれるR成分、G成分、B成分、およびA成分をそれぞれ2倍する処理を実行する。
【0069】
同様に、描画プロセッサ38は、サブプロセッサ392に画素56の画像処理を割り当て、サブプロセッサ393に画素57の画像処理を割り当てる。各サブプロセッサ392、393は画素についての画像処理を実行し、実行結果を描画プロセッサ38に出力する。
【0070】
なお、各サブプロセッサ39はそれぞれ独立して演算を実行する。
【0071】
[RGBA画像]
ここで、画像のデータ構造について説明する。図7は本実施例のRGBA画像のデータ構造の説明図である。
【0072】
RGBAとは画像の表示方法の一つである。RGBAの「R」は赤、「G」は緑、「B」は青、「R」は透明度である。RGBA画像は、各画素の色を赤・緑・青の三原色と、透明度の組み合わせで表現する。4つの要素(赤、緑、青、透明度)はそれぞれ独立した値を有する。
【0073】
図7の画像は横方向にm個の画素を有し、縦方向にn個の画素を有する。以降、横方向にm個の画素を有し、縦方向にn個の画素を有する画像をm×nサイズとする。m×nに含まれる個々の画素は、RGBAのそれぞれの要素値を有する。図7では、画像50上の座標(x0、y0)に位置する画素は、RGBAの要素値がそれぞれ「64、64、64、64」であることを示す。以上のようにRGBA画像は、座標に位置する画素毎にRGBAそれぞれの要素値が対応づけられている。
【0074】
[グレースケール画像]
次に、グレースケール画像について説明する。本実施例で画像処理の対象となる元画像は濃淡を表示する画像である。濃淡を表示する画像には、例えばグレースケール画像がある。
【0075】
図8は本実施例のグレースケール画像のデータ構造の説明図である。グレースケールとは画像の表示方法の一つである。グレースケールで表示される画像(以下、グレースケール画像とする)は、白から黒までの明暗だけで表現される。グレースケール画像の各画素は色の情報を有さない。グレースケール画像の各画素は、灰色を表現する階調が定められた情報を有する。該情報は例えば、ビット数によって定められる。例えば、階調が1ビットの場合、白(ビット値=0)と黒(ビット値=1)のみで中間色がない状態である。例えば、階調が8ビットの場合、グレースケール画像は白と黒を含めた256階調の灰色で表現され、階調が16ビットの場合、グレースケール画像は白と黒を含めた65536階調の灰色で表現される。
【0076】
図8のグレースケール画像のサイズはm×nである。m×nに含まれる個々の画素は、諧調を表す要素値を有する。図8では、画像50上の座標(x0、y0)に位置する画素は、諧調の要素値が「64」であることを示す。以上のようにグレースケール画像は、座標に位置する画素毎に諧調を表す要素値が対応づけられている。
【0077】
[フィルタ処理と画像の関係]
次に、本実施例のフィルタ処理部22が実行するフィルタ処理と画像の関係について説明する。
【0078】
本実施例の画像のフィルタ処理は、画像のエッジ(edge)の強調処理やノイズの除去処理などの画像処理である。画像のエッジは、隣接する画素値間の変化が大きい領域である。一般的にエッジは、画像に写る物体の輪郭を示す。このため、画像処理装置1はエッジを用いて画像に写る物体を特定することができる。
【0079】
ノイズは、本来取得すべき画像に含まれる該画像とは無関係の情報である。撮像部16が撮影した画像は、撮影状況によりノイズが含まれる場合がある。画像処理装置1は、画像からノイズを除去することで、正確なエッジ検出等の処理を実行可能になる。
【0080】
本実施例のフィルタ処理は、処理対象の画素の画素値を以下の手順で算出する。フィルタ処理の入力値は、元画像の処理対象の画素に含まれる複数の要素の値、および処理対象の周辺の画素それぞれに含まれる複数の要素の値である。サブプロセッサ39は、複数の要素をベクトル演算により並列に以下の処理を実行する。サブプロセッサ39は、演算対象となる一つの画素の座標情報を取得する。サブプロセッサ39は、該一つの画素の座標値から、該一つの画素および該一つの画素の周辺の画素の画素値を取得する。取得した画素値は複数の要素情報を含むものとする。なお、本実施例では、処理対象の画素の周辺の画素の範囲は、フィルタサイズで定められるものとする。サブプロセッサ39は、フィルタ係数を読み出す。フィルタ係数は、フィルタサイズに対応する配列形式の情報であり、フィルタ内の各画素に対する演算で用いる係数である。サブプロセッサ39は、処理対象の画素および周辺の画素に含まれる要素のそれぞれとフィルタ係数のそれぞれとを積算する。その後サブプロセッサ39は、フィルタサイズ内で積算したそれぞれの結果値の累積値を算出する。サブプロセッサ39は、以上の手順を画素に含まれる複数の要素に対して並列に実行して、フィルタ処理する。
【0081】
図9はフィルタ処理の説明図である。図9の50は、フィルタ領域であるとする。フィルタ領域50は、9個の画素(501,502,503,504,505,506,507,508,および509)を有する。画素501,502,503,504,505,506,507,508,および509の要素値はそれぞれ「10」、「20」、「30」、「40」、「90」、「60」、「70」、「80」、および「50」である。画素505は、フィルタ処理の対象の画素である。画素505の座標は、(x,y)である。座標は、元画像内の画素の位置を特定する情報である。例えば画像の左上端の画素を(0、0)とすると、座標(x,y)は画像の左上端から右にx番目、下にy番目の位置を示す。
【0082】
図9の51はフィルタ係数である。フィルタ係数51は、フィルタ領域50のそれぞれの画素に対応する。フィルタ係数51は、画素501,502,503,504,505,506,507,508,および509に対して、それぞれ「1/9」が設定されている。なお、フィルタ係数51は、処理対象の画素および処理対象の画素の周辺の画素の要素の平均値を算出する平滑化フィルタ処理の場合の例である。平滑化フィルタは、画像のノイズ除去等に用いられる。
【0083】
サブプロセッサ39は、フィルタ領域50内の各画素の要素の値に対して各フィルタ係数51を積算し累積値を算出する。演算式は「f(x、y)=10*1/9+20*1/9+30*1/9+40*1/9+90*1/9+60*1/9+70*1/9+80*1/9+50*1/9=50」となる。よって、本実施例では、座標(x、y)の画素の一つの要素のフィルタ処理の値は「50」となる。
【0084】
なお、フィルタ領域のサイズ(フィルタサイズ)および形状は、処理の目的に応じて任意に設定が可能である。例えば、縦、横の矩形からなるフィルタサイズは、中心の画素を除き片端までの画素数(p,q)で表すことにする。
【0085】
図10は、フィルタサイズの第一の変更例である。図10のフィルタサイズは、(p,q)=(p1,q1)=(2,2)となる。図11は、フィルタサイズの第二の変更例である。図11のフィルタサイズは、(p,q)=(p2,q2)=(3,1)となる。
【0086】
なお、フィルタサイズは元画像サイズよりも十分小さいものとする。フィルタサイズが大きいときに分割数を多くすると、重複領域が大きくなり、演算量が増大する場合があるためである。
【0087】
[重複領域]
次に、重複領域について説明する。元画像内の一つの画素についてフィルタ処理をするためには、一般的に該一つの画素を中心とした周囲の画素が必要である。したがって、単に分割した画像を使用すると、分割画像の境界付近に位置する画素のフィルタ処理結果は不正確になる問題がある。
【0088】
そこで、分割法評価部13は、描画処理部20による二次元フィルタ処理の結果が正しくなるように、分割する方式を決定する。分割法評価部13は、元画像を分割したときに、領域が分割された境界の近傍の画素の画素値の参照が可能になるような重複領域を持たせて、元画像を分割する。具体的には、画像処理装置1の分割法評価部13は、境界に位置する画素をフィルタ処理するときに使用する周囲の画素を重複領域に含めて分割する。このような重複領域を含めた分割を行うことにより、分割の境界付近の画素に対するフィルタ処理を正しく行うことが可能になる。
【0089】
図12は本実施例のフィルタ処理で使用する重複領域の説明図である。
【0090】
60は元画像である。本実施例では、元画像60を縦方向に2つおよび横方向に2つの合計4つの領域(第一領域61、第二領域62、第三領域63、第四領域64)に分割する場合を説明する。
【0091】
65は、元画像60の外縁である。66、67は、各領域(第一領域61、第二領域62、第三領域63、第四領域64)の他の領域に対する境界である。境界66は第一領域61と第三領域53および第二領域62と第四領域64の境界であり、境界67は、第一領域61と第二領域62および第三領域63と第四領域64の境界である。68は第一領域61に含まれ境界66に接する画素である。69は第一領域61に含まれ元画像60の外縁65に接する画素である。70は画素68をフィルタ処理する際に必要となる画素68のフィルタ領域である。71は画素69をフィルタ処理する際に必要となる画素69のフィルタ領域である。
【0092】
サブプロセッサ39は、画素68についてフィルタ処理する場合、フィルタ領域70に含まれる画素の要素値を要する。フィルタ領域70に含まれる画素の一部は第三領域63に存在する。したがって、サブプロセッサ39は、分割後の第一領域61が重複領域を持たない状態で画素68に対してフィルタ処理を実行すると、フィルタ領域内の一部の画素の画素値を参照できないため、正確な演算ができない。
【0093】
そこで、分割法評価部13は、分割境界に位置する各画素のフィルタ処理が可能となる大きさの重複領域を付加して元画像60を分割するように分割方法を決定する。例えば、分割法評価部13は、分割される境界に接する画素のフィルタ処理を実行できるように、フィルタサイズの大きさの冗長領域を付加して分割するように分割方法を決定する。
【0094】
72は第一領域61と重複領域76とを含む分割画像である。73は第二領域62と重複領域77とを含む分割画像である。74は第三領域63と重複領域78とを含む分割画像である。75は第四領域64と重複領域79とを含む分割画像である。重複領域76は、第二領域62、第三領域63および第四領域64の画素を含む。
【0095】
なお、本実施例では、重複領域76において第三領域63と重複する領域の縦方向の幅はフィルタサイズの縦方向の幅「q」に一致する。同様に、本実施例では、重複領域76において第二領域62と重複する領域の横方向の幅はフィルタサイズの横方向の幅「p」に一致する。同様に、本実施例では、重複領域76において第四領域64と重複する領域の縦方向および横方向の幅はそれぞれフィルタサイズの縦方向の幅「q」および横方向の幅「p」に一致する。
【0096】
なお、本実施例のサブプロセッサ39は、画像の外縁よりも外側については、外縁に位置する画素の画素値を参照する。例えば、画素69は、元画像60の外縁に位置する。画素69をフィルタ処理するときの範囲71は、元画像60の外縁の外側を含む。サブプロセッサ39は、元画像60の外縁より外側の画素として、フィルタ領域71内の元画像60の外縁に位置する画素群を割り当てる。以上で、サブプロセッサ39は、画素69のフィルタ処理を実行することが可能になる。
【0097】
各分割画像に重複領域を付加することにより、サブプロセッサ39は分割境界近傍の画素について正確なフィルタ処理を算出することができる。
【0098】
[画像分割と画像サイズ]
次に、画像分割と画像サイズの関係について説明する。
【0099】
各分割画像の画素数の合計は、重複領域が存在するため、分割前の元画像の画素数よりも多くなる。そこで、分割法評価部13は、メモリサイズが小さくなるように、元画像を分割する。例えば、分割法評価部13は、重複領域が少なくなるように、元画像を分割する。本実施例の元画像の画像サイズは状況によって変わる。したがって、同じフィルタ処理であっても、分割法評価部13は元画像の画像サイズに応じて、効率よくフィルタ処理を実行できるように分割方法を決定する。重複領域に位置する画素の数に応じてフィルタ処理量は増加する。したがって、重複領域が少なくなるように分割することは重要である。
【0100】
また、重複領域を含む分割後の画像の各画像に含まれる画素数は、同じであることが望ましい。重複領域を含む分割後の画像が同じ画素数にすることにより、描画処理部20は、サブプロセッサの並列演算機能を無駄なく使用することができる。
【0101】
図13は画像分割と画像サイズとの関係を説明する図である。
【0102】
「W」は元画像60の横幅である。横幅Wは、例えば、x方向の画素数である。「p」は横方向のフィルタサイズである。「2p+1」はフィルタ領域の横幅である。「H」は元画像60の縦幅である。縦幅Hは、例えば、y方向の画素数である。「q」は縦方向のフィルタサイズである。「2q+1」はフィルタ領域の縦幅である。
【0103】
数1は、元画像60の横方向(x方向)の分割評価関数である。「dx」はx方向の分割数である。本実施例では、分割法評価部13は「W/dx」の結果を切り上げる。
【0104】
【数1】

【0105】
なお、「dx」の値により、「p」の加算の数を変更しても良い。例えば、元画像を横方向に2つに分割する場合、2つの分割画像は、片側領域のみに重複領域を有する。元画像を横方向に3つ以上に分割する場合、両側に重複領域を有する分割画像が現れる。元画像を横方向に3つ以上に分割するとき、元画像の左右端に相当する分割画像は、片側のみ重複領域を含み、その他の位置に相当する分割画像は、両端に重複領域を含む。
【0106】
分割法評価部13は、「W/dx」と「p」とを加えた値と「dx」の項との積を求めることで、x方向への重複領域を含む延べの長さを算出することができる。分割法評価部13は、3つ以上に分割する場合は、両側に重複領域を持つ領域の横方向の長さに合わせて分割数の積を算出しても良い。
【0107】
画像の縦方向(y方向)に関しても、分割法評価部13は、同様の評価関数で算出可能である。
【0108】
メモリサイズは重複領域を含む分割画像の総面積、つまり、x方向およびy方向の評価関数の積で表すことが可能である。数2はx方向およびy方向の評価関数の例である。分割法評価部13は、数2の評価関数の結果値が最小になる分割方法で、元画像を分割することを決定する。
【0109】
【数2】

【0110】
ここで、分割の方法の種類について説明する。図13は、元画像を4つに分割した場合の例である。
【0111】
元画像を4分割する場合、元画像の横方向を3つに分割する「4×1分割」と、元画像の縦方向を3つに分割する「1×4分割」と、元画像の横方向を2つに分割し縦方向を2つに分割する「2×2分割」との3通りがある。
ここで、それぞれの分割後の画像の面積はF(4,1)、F(1,4)、F(2,2)として表される。4x1分割および1x4分割後の4要素画像のサイズは、左右もしくは上下に重複領域を持つ分割画像に合わせたサイズとなる。縦方向および横方向をそれぞれ2つに分割する場合、重複領域を付加したそれぞれの分割後画像のサイズは、縦方向が「H/2+q」、横方向が「W/2+p」となる。
【0112】
図14は、本実施例のパラメータの差異による分割前後の画像サイズの比較テーブルである。比較テーブル80のW、H、p、およびqは先述した、分割前画像の横幅、分割前画像の縦幅、フィルタ領域の横幅、およびフィルタ領域の縦幅である。図14は、分割前の元画像のメモリサイズを100%とした場合における、各分割方式のメモリサイズの合計の増加率を示す。Wは元画像の横方向のサイズ、Hは元画像の縦方向のサイズ、pは横方向のフィルタサイズ、qはフィルタの縦方向のサイズを示す。4×1分割、2×2分割、1×4分割はそれぞれ、横方向および縦方向を分割する数を示す。例えば4×1分割は、元画像の横方向を4つに分割し、縦方向は分割しないことを示す。分割前は分割前、すなわち元画像のサイズの割合を示す。
【0113】
比較テーブル80の第一の状態81は、元画像の横方向(W)が160個の画素、元画像の縦方向(H)が160個の画素で構成され、横方向のフィルタサイズ(p)が2個の画素、縦方向のフィルタサイズ(q)が2個の画素である場合を示す。第一の状態81では、元画像を2×2分割する場合に増加率が105%になるため、分割後画像のサイズの合計の増加率が他の4×1分割あるいは1×4分割よりも少ない。したがって、分割法評価部13は、第一の状態81の場合、元画像を2×2分割すると決定すれば、重複領域の増加を最も少なくすることができる。
【0114】
第二の状態82は、元画像の横方向(W)が320個の画素、元画像の縦方向(H)が80個の画素で構成され、横方向のフィルタサイズ(p)が2個の画素、縦方向のフィルタサイズ(q)が2個の画素である場合を示す。第二の状態82では、元画像を4×1分割する場合に増加率が105%になるため、分割後画像のサイズの合計の増加率が他の2×2分割あるいは1×4分割よりも少ない。したがって、分割法評価部13は、第二の状態82の場合、元画像を4×1分割すると決定すれば、重複領域の増加を最も少なくすることができる。
【0115】
第三の状態83は、元画像の横方向(W)が320個の画素、元画像の縦方向(H)が80個の画素で構成され、横方向のフィルタサイズ(p)が60個の画素、縦方向のフィルタサイズ(q)が0個の画素である場合を示す。第三の状態83では、元画像を1×4分割する場合に増加率が100%になるため、分割後画像のサイズの合計の増加率が他の2×2分割あるいは4×1分割よりも少ない。したがって、分割法評価部13は、第三の状態83の場合、元画像を1×4分割すると決定すれば、重複領域の増加を最も少なくすることができる。
【0116】
上記のようにフィルタサイズが同じでも、元画像のサイズが異なると、分割方法によって、分割後画像のメモリサイズは異なる。また、元画像のサイズが同じでも、フィルタサイズが異なると、分割方法によって、分割後画像のメモリサイズは異なる。したがって、描画処理モジュール37に並列処理させるために作成する重複領域を付加した分割後画像は、元画像サイズおよびフィルタサイズによって変化する。
【0117】
分割法評価部13は、各方法で分割した場合の分割後画像のメモリサイズの合計を算出し、算出したそれぞれのメモリサイズの合計が最小となる分割方式を特定する。この結果、画像処理装置は、分割後画像を格納するためのメモリの領域を少なくすることが可能になる。
【0118】
なお、縦方向あるいは横方向に3つ以上に元画像を分割する場合、分割法評価部13はより重複領域が少なくなるように分割することが可能である。横方向に分割する場合を説明する。元画像の左右端に位置する2つの分割後画像は重複領域が一方の端のみであるため、重複領域は「p」のみでよい。また元画像の左右端以外に位置する分割後画像は、重複領域が両端になるため、重複領域が「2p」になる。
【0119】
例えば、分割法評価部13は、元画像の横方向を4つに分割する場合、分割後画像の横幅を同じにするため、W=(w・dx)+(p・2)とする。分割法評価部13は、左右両端の画像については「w+p」とし、中の2つの画像については「w」とする。分割法評価部13は、左右端の分割後画像である「w+p」の分割される側に、重複領域として「p」領域の画素を付加する。分割法評価部13は、中に位置する分割後画像である「w」の左右に重複領域としてそれぞれ「p」領域の画素を付加する。この結果、分割後画像の横幅はいずれも「w+2p」となる。
【0120】
同様に縦に四分割する場合、分割法評価部13は、分割後画像の横幅を同じにするため、H=(h・dx)+(q・2)とする。分割法評価部13は、上下両端の画像について「h+q」の幅で分割し、中の2つの画像については「h」の幅で分割する。分割法評価部13は、上下端の分割後画像である「h+q」の分割される側に、重複領域として「q」領域の画素を付加する。分割法評価部13は、中に位置する分割後画像である「h」の上下に重複領域としてそれぞれ「q」領域の画素を付加する。この結果、分割後画像の縦幅はいずれも「w+2p」となる。
【0121】
[画像分割処理]
次に、画像分割部21は、分割法評価部13により決定された分割方法に沿って、元画像を要素画像に分割する。(S04)。画像分割部21は、分割方法を分割法評価部13から取得する。画像分割部21は、画像メモリ15あるいは画像メモリ23に格納された元画像を読み出す。画像分割部21は分割方法にしたがって、元画像を分割する。
【0122】
図15、図16、および図17は、図12の元画像を2×2に分割した場合のそれぞれの分割画像の画素の座標を説明する図である。
【0123】
図15は分割画像の情報を示すテーブルである。W,Hは分割後画像の縦サイズおよび横サイズである。p,qはフィルタ範囲の縦サイズおよび横サイズである。w,hはオフセット量である。オフセット量とは、分割境界に位置する画素についてフィルタ処理する際に使用する画素を含む領域の大きさを示す。図12の元画像のサイズは160×160であり、フィルタサイズは縦方向および横方向に「2」であるとする。また、分割法評価部13は、元画像を4つに分割し、分割方法は2×2と決定したものとする。この場合、画像分割部21は、重複領域を付加した82×82のサイズの分割後画像を生成する。
【0124】
画像分割部21は、分割元画像を分割する座標を、図15の情報から特定する。本実施例では、元画像のサイズが160×160であり、分割方法が2×2である。したがって、画像分割部21は、元画像を4つの80×80の領域に分割する。このとき、オフセットは、フィルタサイズが横方向および縦方向のいずれも「2」であることから、横方向および縦方向に「2」となる。
【0125】
本実施例では、画像分割部21は、各要素画像の分割開始座標および分割終了座標をWおよびHからオフセット分たけ増減させることで、重複領域を含む分割画像を生成する。オフセットを加味した分割後画像のサイズすなわち重複領域を含む分割画像の横方向および縦方向のサイズは、(W/2+p=82、H/2+q=82)となる。以降、重複領域を含む分割画像を要素画像とする。
【0126】
図16は、各要素画像と座標の関係を示すテーブルである。図16において、「開始」は元画像を分割した際のそれぞれの要素画像の開始座標を示す。図16の「オフセット」は重複領域を考慮する場合のオフセット量を示す。例えば、第一の要素画像は、開始座標が元画像の(0,0)に相当し、オフセット量は(0,0)である。したがって、画像分割部21は、元画像の座標(0,0)から82×82の範囲の画素を切り出した画像を第一の要素画像とする。第二の要素画像は、開始座標が元画像の(80,0)に相当し、オフセット量は(−2,0)である。したがって、画像分割部21は、元画像の座標(80−2,0)から82×82の範囲の画素を切り出した画像を第二の要素画像とする。第三の要素画像は、開始座標が元画像の(0,80)に相当し、オフセット量は(0,−2)である。したがって、画像分割部21は、元画像の座標(0,80−2)から82×82の範囲の画素を切り出した画像を第三の要素画像とする。第四の要素画像は、開始座標が元画像の(80,80)に相当し、オフセット量は(−2,−2)である。したがって、画像分割部21は、元画像の座標(80−2,80−2)から82×82の範囲の画素を切り出した画像を第四の要素画像とする。
【0127】
図17は要素画像の説明図である。元画像の左上の画素の座標を(0,0)とし、右下の画素の座標を(159,159)とする。各要素画像は、開始座標とオフセットとから求めた分割開始座標から82×82の画素を含む。
【0128】
第一の要素画像72の左上端の開始座標は元画像の座標(0,0)に対応する。第二の要素画像73の左上端の開始座標は元画像の座標(78,0)に対応する。第三の要素画像74の左上端の開始座標は元画像の座標(0,78)に対応する。第四の要素画像75の左上端の開始座標は元画像の座標(78,78)に対応する。
【0129】
第一の要素画像72の右下端の終了座標は元画像の座標(81,81)に対応する。第二の要素画像73の右下端の終了座標は元画像の座標(159,81)に対応する。第三の要素画像74の右下端の終了座標は元画像の座標(81,159)に対応する。第四の要素画像75の右下端の終了座標は元画像の座標(159,159)に対応する。
【0130】
描画処理部20の画像分割部21は、例えば、ダイレクトメモリアクセス(DMA)等のメモリ転送命令によって、分割処理を実行してもよい。また、描画処理部20による並列処理によって、82×82サイズの4つの要素画像の作成処理として実行してもよい。
【0131】
なお、画像のサイズと分割数によっては、均等な画素数で分割できない場合がある。画像分割部21は、端数が出る場合、画素数の剰余数が割り当てられない要素画像については、オフセット領域を増加させることにより、要素画像のサイズを均等にする。例えば、横サイズが161個の画素、フィルタサイズ2×2分割の場合、画像分割部21は、81個の画素割り当てた要素画像のオフセットを2とし、80個の画素割り当てた要素画像のオフセットを3とする。この結果、画像分割部21は、各要素画像の横サイズを83に揃えることができる。
【0132】
なお、横方向あるいは縦方向に3つ以上の要素画像に分割する場合、片端のみに重複領域を持つ要素画像と両端に重複領域を持つ要素画像が存在する。画像分割部21は、開始座標とオフセットを調整することで、両端に重複領域を持つ要素画像にサイズを合わせるようにすることも可能である。
【0133】
画像分割部21は、分割した各要素画像をまとめて画像メモリ23に格納する。画像分割部21はフィルタ処理部22にフィルタ処理の依頼を出力する。
【0134】
図18は、画像分割部21が要素画像をまとめたデータ構成を説明する図である。
【0135】
画像分割部21は、図8の元画像を2×2の要素画像に分割し、各要素画像をまとめることで、4つの要素を有するデータを生成する。この結果、フィルタ処理の対象のデータは、元画像に比べて画素数がおよそ1/4になる。
【0136】
図18のデータ構成では、一つの座標に4つの要素が含まれている。図18のデータ構成は図17に対応するとする。
【0137】
データ構成において、xは画像の横方向の座標、yは画像の縦方向の座標を示すものとする。データ構成において、横方向の画素数は(m/2+p)個であり、縦方向の画素数は(n/2+q)である。mは元画像の横方向の画素数であり、nは元画像の縦方向の画素数である。
【0138】
データ構成において、(x0、y0)は4つの要素を含む画像の左上であり、(x(m/2)+p−1、y0)は4つの要素を含む画像の右上であり、(x(m/2)+p−1、y(n/2)+q−1)は4つの要素を含む画像の右下である。
【0139】
第一の要素画像72、第二の要素画像73、第三の要素画像74、および第四の要素画像75の左上端の開始座標はデータ構成の(x0、y0)に対応する。第一の要素画像72、第二の要素画像73、第三の要素画像74、および第四の要素画像75の右下端の終了座標は、データ構成の(x(m/2)+p−1、y(n/2)+q−1)に対応する。
【0140】
画像分割部21は、以上のように、分割後の各要素画像の画素の位置を対応づける。
【0141】
画像分割部21は、画素の位置対応づけた分割後の要素画像をまとめてフィルタ処理を実行する要求を、フィルタ処理部22に出力する。
【0142】
[フィルタ処理]
フィルタ処理部22は画像分割部21からフィルタ処理の依頼を受けると、画像メモリ23から各要素画像を読み出し、読み出した各要素画像を並列にフィルタ処理する(S05)。フィルタ処理部22は、画像分割部21により作成された分割画像をベクトル演算によってフィルタ処理する。フィルタ処理部22は、例えば、4つの要素画像について並列にフィルタ処理することで、元画像のフィルタ処理を実行する。
【0143】
図19は、本実施例の描画処理モジュール37によるフィルタ処理の説明図である。
【0144】
フィルタ処理部22は、元画像60を4つに分割した要素画像72乃至75をまとめてフィルタ処理する。具体的には、描画プロセッサ38は、各サブプロセッサ39に順次フィルタ処理を割り当てる。各サブプロセッサ39は、割り当てられた1つの画素に対する画素値を決定するためのフィルタ処理を実行する。なお、各サブプロセッサ39がフィルタ処理する一つの画素は、4つの要素画像72乃至75のそれぞれの画素となる。
【0145】
フィルタ処理部22はフィルタ処理結果を画像メモリ23に格納する。
【0146】
なお、重複領域に位置する画素についてのフィルタ処理は、行っても行わなくても良い。重複領域は、フィルタ処理部が分割画像の分割境界に位置する画素のフィルタ処理結果を正しく出力するために存在する。重複領域内の1点を中心とした平滑画素値は不要である。
【0147】
そこで、フィルタ処理部は重複領域に位置する画素についてフィルタ処理を行わないように判断させることも可能である。例えば、フィルタ処理部は中心画素が重複領域内に存在するかの判定処理を行い、判定結果として中心画素が重複領域内に存在する場合、フィルタ処理部は画素値算出を行わないと決定してもよい。フィルタ処理部は不定値を出力することとなるが、不定値を出力した画素の画素値は以降の処理で参照されないため問題ない。
【0148】
一方、描画処理モジュール37は、重複領域についてもフィルタ処理を行っても良い。この場合、描画処理モジュール37は重複領域に位置する画素についてもフィルタ処理を行うことになるが、描画処理モジュール37は、重複領域に位置する画素か否かを判別する分岐処理を省くことができる。
【0149】
画像処理装置1は、例えば、複数の異なるフィルタ処理を実行する場合、フィルタ処理を行った後、必ずしも画像の結合は必要ではない。画像処理装置1は、例えば、先述のフィルタサイズを包含したフィルタ処理が続くようであれば、このまま並列処理が可能である。
【0150】
しかし、重複領域の画素値は正確なフィルタ処理結果の値ではない。そこで、画像の再結合および再分割が必要な場合、画像処理装置1は、前回の分割時の開始座標およびオフセットを基に、画像の再結合および再分割が可能である。
【0151】
この構成により、画像処理装置1は、2回目以降のフィルタ処理であっても重複領域の画素値を正しく取得することができる。さらに、画像処理装置1は、2回目以降のフィルタ処理の場合、分割方法を評価する処理を省略して元画像を分割することが可能になる。
【0152】
また、画像処理装置1は、複数の異なるフィルタ処理を実行する場合、全てのフィルタ処理を正確に算出するための重複領域を予め設定することも可能である。この場合、重複領域はフィルタ処理の数だけ大きくなるが、画像処理装置1は、再結合と再分割の処理が不要になる。この時分割法評価部13は、複数の異なるフィルタ処理を正確に演算可能な重複領域をサイズに基づき、分割方法を決定する。
【0153】
[結果出力]
画像処理装置1は、画像処理結果を表示部18に表示する(S06)。画像処理装置1は、フィルタ処理結果の画像から例えば、背景差分方式等で画像に写る物体を検出する。画像処理装置1は、例えば、カメラ35が撮像したカラー画像に検出した物体を特定する情報を重ね合せてモニタ34に表示する。
【0154】
以上により、本実施例の画像処理装置1は描画処理モジュール37のサブプロセッサ39のベクトル演算処理機能に合わせて元画像を分割し、各サブプロセッサは分割した画像のそれぞれを並列演算が可能な要素に割り当てて演算することが可能になる。この結果、描画処理モジュール37は少ない命令ステップ数で元画像のフィルタ処理を行うことが可能になる。
【0155】
また、本実施例の画像処理装置は、重複領域を付加した分割画像をフィルタ処理するため、分割画像であっても分割境界の画素であっても正しいフィルタ処理結果を取得できる。
【0156】
さらに、本実施例の画像処理装置は、元画像サイズとフィルタサイズ、サブプロセッサの並列処理段数の関係から、メモリの使用領域が少なくなるように分割するため、画像処理装置のメモリ使用量を少なくすることができる。また、画像処理装置は、元画像サイズとフィルタサイズ、サブプロセッサの並列処理段数の関係から、重複領域が少なくなるように分割するため、フィルタ処理を行う対象の要素画像の画素数を少なくすることができる。
【0157】
さらに、本実施例の画像処理装置は、元画像サイズが、様々な大きさに変わる場合であっても、それぞれの大きさに基づき分割方法を決定することができるため、メモリ領域の使用を少なく保つことが可能になる。
【0158】
なお、本実施例ではメインプロセッサが画像の取得処理、画像分割処理を行っていたが、描画処理モジュール37が実行してもよい。
【0159】
本実施例では、画像処理装置を車両に搭載した場合を例に説明したが、描画処理モジュール37および対象フィルタ処理が存在する他分野の画像処理装置に適用可能である。
【0160】
本実施例では、RGBA画像の4つの要素の並列演算が可能な描画処理モジュール37を対象としたが、RGB画像の3つの要素の並列演算が可能な描画処理モジュール37を対象としても良い。3つの要素の並列演算が可能な描画処理モジュール37の場合、分割数は3になる。
【符号の説明】
【0161】
1 画像処理装置
10 全体処理部
11 画像入力部
12 パラメータ抽出部
13 分割法評価部
14 フィルタパラメータ
15 画像メモリ
16 撮像部
17 入力部
18 表示部
20 描画処理部
21 画像分割部
22 フィルタ処理部
23 画像メモリ
24 描画プロセッサパラメータ
30 メイン処理モジュール
31 メインプロセッサ
32 メインRAM
33 メインROM
37 描画処理モジュール
38 描画プロセッサ
39 サブプロセッサ
40 描画RAM
41 描画ROM
34 モニタ
35 カメラ
36 入力部

【特許請求の範囲】
【請求項1】
複数の要素からなる画素を複数含むカラー画像のフィルタ処理を、該画素に含まれる該複数の要素をまとめてベクトル演算することで、実行する画像処理プロセッサと、
濃淡の要素を含む画素を複数含む濃淡画像を取得する画像入力部と、
取得した該濃淡画像を、該画像処理プロセッサの一括でベクトル演算が可能な要素の数に分割する方法を決定する分割法評価部と、
該分割法評価部で決定した方法に応じて該濃淡画像のそれぞれの画素の濃淡の要素を該画像処理プロセッサが一括でベクトル演算する該複数の要素に対応するように分割する画像分割部と
を有する画像処理装置。
【請求項2】
該フィルタ処理は、処理の対象の画素についてフィルタ処理を行う際に、該処理の対象の画素を含む所定の範囲の画素の値を読み出し、
該分割法評価部は、分割の境界の画素についてフィルタ処理を行うため該所定の範囲の画素を含む冗長領域を含むように分割する方法を決定する
ことを特徴とする請求項1に記載の画像処理装置。
【請求項3】
該分割法評価部は、分割後のそれぞれの形状が同じになるように分割する方法を決定する
ことを特徴とする請求項2に記載の画像処理装置。
【請求項4】
該分割法評価部は、それぞれの分割された該濃淡画像の冗長領域の面積の合計が少なくなるように分割する方法を決定する
ことを特徴とする請求項2に記載の画像処理装置。
【請求項5】
該分割評価部は、該濃淡画像の縦および横の画素数、該フィルタ処理での該所定の範囲の縦および横の画素数、および該濃淡画像を分割する数に応じて該濃淡画像の冗長領域の面積の合計が少なくなるような分割を特定する
ことを特徴とする請求項4に記載の画像処理装置。
【請求項6】
複数の要素からなる画素を複数含むカラー画像のフィルタ処理を、該画素に含まれる該複数の要素をまとめてベクトル演算することで、実行する画像処理プロセッサを有するコンピュータに、
濃淡の要素を含む画素を複数含む濃淡画像を取得し、
取得した該濃淡画像を、該画像処理プロセッサの一括でベクトル演算が可能な要素の数に分割する方法を決定し、
該分割法評価部で決定した方法に応じて該濃淡画像のそれぞれの画素の濃淡の要素を該画像処理プロセッサが一括でベクトル演算する該複数の要素に対応するように分割する
処理を実行させる画像処理プログラム。
【請求項7】
1種類の要素で表された画素値を有する画素を、複数含む画像を取得する画像入力部と、
取得した前記画像を複数に分割し、複数に分割した前記画像における各々の画素の位置を、該複数に分割された画像間で対応付けると共に、該位置を互いに対応付けた画素の画素値を出力する画像分割部と、
出力された前記複数に分割された画像間で対応付けられた複数の画素値について、処理対象の画素を含む所定の範囲の画素値を該複数に分割された画像から各々読み出して実行されるフィルタ処理を、並列して実行するフィルタ処理部と
を有する画像処理装置。

【図2】
image rotate

【図12】
image rotate

【図17】
image rotate

【図1】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図18】
image rotate

【図19】
image rotate