説明

画像処理装置

【課題】外部から画像データを取り込み、所定の画像処理を施して外部へ出力する画像処理装置において、画像処理の負荷が増大した場合のコマ落ちを防止する。
【解決手段】CPU12は、VPSSバッファ21に格納された未処理画像データをアプリケーションバッファ22に格納するVPFEタスクと、アプリケーションバッファ22に格納された未処理画像データを読み出し、所定のアルゴリズムによる画像処理を施し、アプリケーションバッファ22に格納するアルゴリズムタスクと、アプリケーションバッファ22に格納された処理済み画像データをVPSSバッファ21に格納するVPBEタスクを実行する。VPFEタスク、VPBEタスク、アルゴリズムタスクの順に実行優先順位を高くする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、外部から画像データを取り込み、所定の画像処理を施して外部へ出力する画像処理装置に関する。
【背景技術】
【0002】
図6にこのような画像処理装置を備えた画像処理システムの一例のブロック図を示す(非特許文献1参照)。この画像処理システムは、DSP(Digital Signal Processor)1と、それぞれがDSP1に接続された外部メモリ2、デコーダ3、及びモニタ4を備えている。ここで、DSP1と、外部メモリ2が画像処理装置を構成している。
【0003】
DSP1は、内部バス11と、それぞれが内部バス11に接続されたCPU(Central Processing Unit)12、VPSS(Video Processing Sub System)13、内部メモリ14、外部メモリI/F(インタフェース)15、及びタイマ16を備えている。
【0004】
CPU12は各種レジスタ121や、論理演算ユニットを内蔵している。VPSS13は、DMA(Direct Memory Access)コントローラの機能を持つVPFE(Video Processing Front End)131及びVPBE(Video Processing Back End)132を内蔵しており、VPFE131にはデコーダ3が接続され、VPBE132にはモニタ4が接続されている。また、外部メモリI/F15には外部メモリ2が接続されている。
【0005】
内部メモリ14はSRAMやフラッシュメモリで構成されており、プログラムや固定データが格納される。外部メモリ2はSDRAMで構成されており、CPU12のデータ処理時のワークエリアや画像データバッファメモリ(VPSSバッファ21)として使用される。
【0006】
図7は、上記画像処理システムの概略動作を説明するための図であり、図8は、その動作時のVPSSバッファ21の状態の一例を示す図である。ここでは、VPSSバッファ21の容量は6フレームである。
【0007】
図7に示すように、VPFE131は15fps(66.6ms)毎にCPU12に割り込みをかけ、デコーダ3からの未処理(処理対象)画像データをVPSSバッファ21に書き込む(ステップS101)。図8Aは3フレーム分の未処理画像データが格納された状態を示している。
【0008】
CPU12は、VPSSバッファ21に格納された未処理画像データを15fps(66.6ms)毎に読み出し(ステップS102)、所定のアルゴリズムによる画像処理を施し、処理済みの画像データをVPSSバッファ21に書き込む(ステップS103)。図8Bは2フレーム分の処理済み画像データが格納された状態を示している。
【0009】
VPBE132は、VPSSバッファ21に格納された処理済み画像データを15fps(66.6ms)毎にCPU12に割り込みをかけて読み出し(ステップS104)、モニタ4へ出力する。図8Cは1フレーム分の処理済み画像データが読み出された状態を示している。VPBE132により処理済み画像データが読み出されたVPSSバッファ21の領域は解放され、空き領域となる。
【0010】
このように、VPFE131が未処理画像データをVPSSバッファ21に書き込む処理(S101)、CPU12が未処理画像データをVPSSバッファ21から読み出す処理(S102)、CPU12が処理済み画像データをVPSSバッファ21に書き込む処理(S103)、VPBE132が処理済み画像データをVPSSバッファ21から読み出す処理は、同じ15fpsのレートで行われるが、それらの処理は非同期である。
【0011】
しかしながら、図7及び図8に示した処理の場合、CPU12による所定のアルゴルズムの画像処理の負荷が増大すると、VPSSバッファ21の空き領域がなくなってしまう。この結果、空き領域ができるまで、VPFE131は画像データを書き込めなくなるため、コマ落ちが発生してしまう。
【0012】
そこで、画像処理のアプリケーション上にバッファを設けることで、VPSSバッファ21のコマ落ちを防止することが考えられる。図9は、この場合のアプリケーションバッファの状態の一例を示す図である。アプリケーションバッファの容量は例えば100フレームである。ここで、VPFE131、VPBE132による処理は図7と同じであるため省略した。
【0013】
CPU12は、VPSSバッファ21に格納された未処理画像データを15fps(66.6ms)毎に読み出し、アプリケーションバッファに書き込む(VPFEタスク)。図9Aは4フレーム分の未処理画像データが格納された状態を示している。
【0014】
また、CPU12は、アプリケーションバッファに格納された未処理画像データを15fps(66.6ms)毎に読み出し、所定のアルゴリズムによる画像処理を施し、処理済みの画像データをアプリケーションバッファに書き込む(アルゴリズムタスク)。図9Bは2フレーム分の処理済み画像データが格納された状態を示している。
【0015】
また、CPU12は、アプリケーションバッファに格納された処理済み画像データを15fps(66.6ms)毎に読み出し、VPSSバッファ21に書き込む(VPBEタスク)。図9Cは2フレーム分の処理済み画像データが読み出された状態を示している。CPU12により処理済み画像データが読み出されたアプリケーションバッファの領域は解放され、空き領域となる。
【0016】
しかしながら、このようにアプリケーションバッファを設けることで、VPSSバッファ21でコマ落ちすることは防止することはできるものの、アルゴリズムタスクを抜けたときにVPBEタスクを行う構成であるため、CPU12によるアルゴリズムの負荷が増大すると、図9Dに示すように、VPBEタスクを実行できず、アプリケーションバッファが満杯となってしまう。この結果、数秒程度しかコマ落ち防止の効果がなくなる。
【先行技術文献】
【非特許文献】
【0017】
【非特許文献1】生駒伸一郎「DSP入門講座」p.126、株式会社電波新聞社(2009年2月15日)
【発明の概要】
【発明が解決しようとする課題】
【0018】
本発明は、このような問題を解決するためになされたものであり、その目的は、外部から未処理画像データを取り込み、入出力バッファに書き込む画像入力手段と、前記入出力バッファに書き込まれた未処理画像データを読み出し、所定の画像処理を施して処理済み画像データを生成し、前記入出力バッファに書き込む画像処理手段と、前記入出力バッファに書き込まれた処理済み画像データを読み出し、外部へ出力する画像出力手段とを有する画像処理装置において、前記画像処理手段による処理負荷が増大した場合のコマ落ちを防止することである。
【課題を解決するための手段】
【0019】
本発明は、外部から前記未処理画像データを取り込み、入出力バッファに書き込む画像入力手段と、前記入出力バッファに書き込まれた未処理画像データを読み出し、所定の画像処理を施して処理済み画像データを生成し、前記入出力バッファに書き込む画像処理手段と、前記入出力バッファに書き込まれた処理済み画像データを読み出し、外部へ出力する画像出力手段とを有する画像処理装置において、前記画像処理手段による画像処理アプリケーション上に設けられたアプリケーションバッファを有し、前記画像処理手段は、前記入出力バッファに書き込まれた未処理画像データを前記アプリケーションバッファに書き込む第1のタスクと、前記アプリケーションバッファに書き込まれた未処理画像データを読み出し、所定の画像処理を施して前記アプリケーションバッファに書き込む第2のタスクと、前記アプリケーションバッファに書き込まれた処理済み画像データを読み出し、前記入出力バッファメモリに書き込む第3のタスクを所定の間隔で非同期かつ択一的に実行し、前記第1のタスク、第3のタスク、第2のタスクの順にそれらのタスクの実行優先順位が設定されており、前記第3のタスクの実行間隔がそれ以外のタスクの実行間隔よりも短く設定されていることを特徴とする画像処理装置である。
【発明の効果】
【0020】
本発明によれば、外部から未処理画像データを取り込み、入出力バッファに書き込む画像入力手段と、前記入出力バッファに書き込まれた未処理画像データを読み出し、所定の画像処理を施して処理済み画像データを生成し、前記入出力バッファに書き込む画像処理手段と、前記入出力バッファに書き込まれた処理済み画像データを読み出し、外部へ出力する画像出力手段とを有する画像処理装置において、前記画像処理手段による処理負荷が増大した場合のコマ落ちを防止することができる。
【図面の簡単な説明】
【0021】
【図1】本発明の実施形態の画像処理システムの概略動作を説明するための図である。
【図2】本発明の実施形態の画像処理システムにおけるタイマルーチンを示すフローチャートである。
【図3】本発明の実施形態の画像処理システムのタスク実行処理を示すフローチャートである。
【図4】図3の処理実行時のタイミングチャートの一例を示す図である。
【図5】図3の処理実行時のアプリケーションバッファの状態の一例を示す図である。
【図6】DSPを備えた画像処理システムの一例のブロック図である。
【図7】図6の画像処理システムの概略動作を説明するための図である。
【図8】図7に示す動作時のVPSSバッファの状態の一例を示す図である。
【図9】図7に追加したアプリケーションバッファの状態の一例を示す図である。
【発明を実施するための形態】
【0022】
以下、本発明の実施形態について図面を参照して詳細に説明する。
〈画像処理システムの概略動作〉
図1は、本実施形態の記画像処理システムの概略動作を説明するための図である。この図において、図7と同一又は対応する構成要素には図7と同一の参照符号を付した。なお、本実施形態の画像処理装置のハードウェアは従来装置(図6)と同じである。
【0023】
図1に示すように、本実施形態では、画像処理のアプリケーション上に100フレーム分のアプリケーションバッファ22を設けることで、VPSSバッファ21のコマ落ちを防止する。
【0024】
また、本実施形態では、アプリケーションバッファ22を領域毎に管理するデータフラグを登録するためのレジスタを各種レジスタ121に設けた。ここで、フラグ:“0”(データ無し)は未処理画像データが格納されていない状態、フラグ:“1”(リード許可)は未処理画像データが格納されアルゴリズム処理待ちの状態、フラグ:“2”(VPBE出力)はアルゴリズム処理済みの画像データが格納され、VPSSバッファ21への出力待ちの状態を表す。
【0025】
さらに、本実施形態では、アプリケーションバッファ22のアクセス位置を管理するためのバッファ管理ポイント情報を登録するためのレジスタを各種レジスタ121に設けた。ここで、ライトポイントはVPSSバッファ21から読み出した画像データをアプリケーションバッファ22に書き込むときの書き込み位置情報であり、リードポイントはアルゴリズム処理のためにアプリケーションバッファ22から読み出すときの読み出し位置情報であり、VPBE出力ポイントはアプリケーションバッファ22から処理済み画像データを読み出し、VPSSバッファ21へ出力するときの読み出し位置情報である。
【0026】
これらの構成は図9を参照して説明したものと同様である。本実施形態では、これらの構成に加えて、VPFEタスク、アルゴリズムタスク、VPBEタスクに優先順位を付けるとともに、アプリケーションバッファ22に格納された処理済み画像データをVPSSバッファ21に書き込む周期を短くすることで、図9を参照しながら説明した構成の問題点を解決している。
【0027】
まず図1を基に本実施形態の画像処理システムの概略動作を説明する。
VPFE131は、15fps(66.6ms)毎にCPU12に割り込みをかけ、デコーダ3からの未処理画像データを入出力バッファとしてのVPSSバッファ21に書き込む(ステップS101)。CPU12は、VPSSバッファ21に格納された未処理画像データを15fps(66.6ms)毎に読み出し、アプリケーションバッファ22に書き込む(ステップS201、VPFEタスク)。この時、書き込みを行った領域のデータフラグを“1”にする。
【0028】
CPU12は、データフラグが“1”の領域から未処理画像データを15fps(66.6ms)毎に読み出す(ステップS202)。この読み出しはVPFE131によるVPSSバッファ21への書き込みとは非同期である。CPU12は、読み出した画像データに対し、所定のアルゴリズムによる画像処理を施した後に、処理済みの画像データをアプリケーションバッファ22に書き込む(ステップS203)。これらの処理がアルゴリズムタスクである。この時、書き込みを行った領域のデータフラグを“2”にする。
【0029】
CPU12は、データフラグが“2”になっている領域から45ms毎に処理済み画像データを読み出し、VPSSバッファ21に書き込む(ステップS204)。この処理がVPBEタスクである。この時、書き込みを行った領域のデータフラグを“0”にする。
【0030】
VPBE132は、VPSSバッファ21に格納された処理済み画像データを15fps(66.6ms)毎にCPU12に割り込みをかけて読み出し(ステップS104)、モニタ4へ出力する。
【0031】
以上、本実施形態の画像処理システムの概略動作を説明した。この動作は、VPBEタスクを45ms毎に実行すること以外は図9を参照して説明したものと同様である。次に、VPFEタスク、アルゴリズムタスク、及びVPBEタスクの優先順位について説明する。本実施形態では、これら3つのタスクの優先順位を(1)VPFEタスク、(2)VPBEタスク、(3)アルゴリズムタスクとすることで、アルゴリズムタスクの負荷が増大したときにアプリケーションバッファが満杯となってしまう事態を防止する。これらのタスクの優先順位は、ユーザの操作に基づき、リアルタイムオペレーティングシステム(DSP/BIOS)により内部メモリ14に設定されている。
【0032】
まずVPFEタスクの優先順位を最高にすることで、VPSSバッファ21に空きを設け、VPSSバッファ21に未処理画像データが書き込めなくなることによるコマ落ちを防止する。また、VPBEタスクの優先順位をアルゴリズムタスクの優先順位よりも高くすることで、アプリケーションバッファ22に空きを設け、アプリケーションバッファ22が満杯になることを防止する。
【0033】
〈タスク実行のフロー〉
本実施形態では、以下の図2及び図3に示すフローを実行することにより、VPFEタスク、VPBEタスク、アルゴリズムタスクを前述した優先順位(VPFEタスク>VPBEタスク>アルゴリズムタスク)で実行する。ここで、図2はタイマルーチンであり、図3はタスク実行のフローである。また、図2における各タイマはタイマ16であり、各フラグは外部メモリ2に設定される。
【0034】
図2に示すように、タイマルーチンがスタートすると、最初に15fps(66.6ms)タイマ及び45msタイマをスタートさせる(ステップS1)。
【0035】
次に15fpsタイマがタイムアップしたか否か判定し(ステップS2)、タイムアップしていた場合は(S2:Yes)、VPFEタスクフラグ及びアルゴリズムタスクフラグを“1”にした後(ステップS3)にステップS2に戻る。
【0036】
一方、15fpsタイマがタイムアップしていない場合は(S2:No)、45msタイマがタイムアップしたか否か判定する(ステップS4)。判定の結果、タイムアップしていた場合は(S4:Yes)、VPBEタスクフラグを“1”にした後(ステップS5)にステップS2に戻り、タイムアップしていない場合は(S5:No)、そのままステップS2に戻る。
【0037】
このように、15fps(66.6ms)毎にVPFEタスクフラグ及びアルゴリズムタスクフラグを“1”にし、45ms毎にVPBEタスクフラグを“1”にする手順を繰り返す。これらのフラグは後述する図3のステップで参照され、書き換えられる。
【0038】
図3に示すように、まず優先順位が最高のタスクのフラグであるVPFEタスクフラグが“1”であるか否か判定する(ステップS11)。判定の結果、“1”であった場合(S11:Yes)、アプリケーションバッファ22に空き領域が有るか否かを判定する(ステップS12)。判定の結果、空き領域が有る場合は(S12:Yes)、VPFEタスクを実行し、VPFEタスクフラグを“0”にして(ステップS13)、ステップS11に戻る。空き領域が無い場合は(S12:No)、そのままステップS11に戻る。
【0039】
VPFEタスクフラグが“1”でなかった場合は(S11:No)、優先順位が二番目に高いタスクのフラグであるVPBEタスクフラグが“1”であるか否か判定する(ステップS14)。判定の結果、“1”であった場合(S14:Yes)、出力データが有るか否か、即ちアプリケーションバッファ22にデータフラグが“2”の領域が有るか否かを判定する(ステップS15)。判定の結果、出力データが有る場合は(S15:Yes)、VPBEタスクを実行し、VPBEタスクフラグを“0”にして(ステップS16)、ステップS11に戻る。出力データが無い場合は(S15:No)、そのままステップS11に戻る。
【0040】
VPBEタスクフラグが“1”でなかった場合は(S14:No)、優先順位が最低のタスクのフラグであるアルゴリズムタスクフラグが“1”であるか否か判定する(ステップS17)。判定の結果、“1”であった場合(S17:Yes)、未処理データが有るか否か、即ちアプリケーションバッファ22にデータフラグが“1”の領域が有るか否かを判定する(ステップS18)。判定の結果、未処理データが有る場合は(S18:Yes)、アルゴリズムタスクを実行し、アルゴリズムタスクフラグを“0”にして(ステップS19)、ステップS11に戻る。未処理データが無い場合は(S18:No)、そのままステップS11に戻る。
【0041】
〈各タスクの実行タイミングチャート〉
図4は、図2及び図3に示すフローの実行により行われる各タスクのタイミングチャートの一例である。ここで、各タスクの枠の内、点線の枠は前述した所定の周期、即ちVPFEタスク及びアルゴリズムタスクについては15fps(66.6ms)、VPBEタスクについては45msのタイミングを表し、実線の枠は所定の周期のタイミング以外のタイミングを表す。また、枠内に記載されている数字は画像データのフレーム番号であり、そのフレームの画像データに対するタスクがその枠のタイミングで実行されていることを意味する。また、内部に“×”が記載されている枠は、処理される前に次の周期がコールされたため消滅したタスクフラグを示す。さらに、VPBEタスクにおいて内部に“‐”が記載されている枠は、出力データが無いため、処理しないタイミングを示す。
【0042】
図より、アルゴリズムタスクは、VPFEタスク、VPBEタスクの空き時間に実行されることが分かる。また、第3フレームや第4フレームのように、アルゴリズムタスクに時間がかかると、VPFEタスク及びVPBEタスクが所定の周期毎に実行されない場合(内部に“×”が記載されている枠)が現れる。しかし、VPFEタスク及びVPBEタスクが終われば、直ちに優先順位の高いVPFEタスクを実行してVPSSバッファ21に空き領域を形成し、VPBEタスクを実行してアプリケーションバッファ22に空き領域を形成するので、VPSSバッファ21の満杯によるコマ落ち、及びアプリケーションバッファ22の満杯によるコマ落ちを防止することができる。図5は、VPBEタスクを実行してアプリケーションバッファ22に空き領域を形成する様子を示している。
【0043】
第5フレーム以降のように、アルゴリズムタスクの処理が軽くなると、VPFEタスク及びVPBEタスクが所定の周期毎に実行されない場合(内部に“×”が記載されている枠)は無くなり、ほぼリアルタイムで処理される。
【0044】
このように、本実施形態の画像処理システムによれば、VPFEタスク、VPBEタスク、アルゴリズムタスクの順に高い優先順位を与えるとともに、VPBEタスクフラグを“1”にする間隔をその他のタスクフラグを“1”にする間隔よりも短くしたので、アルゴリズムタスクの処理負荷が増大した場合に、VPSSバッファ21が満杯になることによるコマ落ち、及びアプリケーションバッファ22が満杯になることによるコマ落ちを防止することができる。
【0045】
なお、アプリケーションバッファ22を設けずにVPSSバッファ21を大容量化し、S101〜S102に優先順位を付けた構成の場合、図7のステップS101とS104とが非同期であるが同一周期でしか動作しないため、CPU12によるアルゴリズムの負荷が増大した場合、モニタ4への出力が遅れることで、VPSSバッファ21が満杯になる。一方、本実施形態では、アプリケーションバッファ22を設け、図2のS204の周期を短くすることで、VPSSバッファ21、及びアプリケーションバッファ22が満杯になることを防止できる。このため、アプリケーションバッファ22を設けずにVPSSバッファ21を大容量化した構成の場合と比べると、より低スペックのCPUで同等の処理が可能となる。
【0046】
なお、以上の実施形態では、アプリケーションバッファ22の容量を100フレームとしたが、この容量は任意でよい。容量が大きい程、アルゴリズムの負荷が重くなった場合に満杯になる可能性は低下するが、リアルタイム性も低下する。
【符号の説明】
【0047】
1・・・DSP、12・・・CPU、16・・・タイマ、21・・・VPSSバッファ、22・・・アプリケーションバッファ、121・・・各種レジスタ、131・・・VPFE、132・・・VPBE。


【特許請求の範囲】
【請求項1】
外部から前記未処理画像データを取り込み、入出力バッファに書き込む画像入力手段と、前記入出力バッファに書き込まれた未処理画像データを読み出し、所定の画像処理を施して処理済み画像データを生成し、前記入出力バッファに書き込む画像処理手段と、前記入出力バッファに書き込まれた処理済み画像データを読み出し、外部へ出力する画像出力手段とを有する画像処理装置において、
前記画像処理手段による画像処理アプリケーション上に設けられたアプリケーションバッファを有し、
前記画像処理手段は、
前記入出力バッファに書き込まれた未処理画像データを前記アプリケーションバッファに書き込む第1のタスクと、前記アプリケーションバッファに書き込まれた未処理画像データを読み出し、所定の画像処理を施して前記アプリケーションバッファに書き込む第2のタスクと、前記アプリケーションバッファに書き込まれた処理済み画像データを読み出し、前記入出力バッファメモリに書き込む第3のタスクを所定の間隔で非同期かつ択一的に実行し、
前記第1のタスク、第3のタスク、第2のタスクの順にそれらのタスクの実行優先順位が設定されており、
前記第3のタスクの実行間隔がそれ以外のタスクの実行間隔よりも短く設定されている
ことを特徴とする画像処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2011−70564(P2011−70564A)
【公開日】平成23年4月7日(2011.4.7)
【国際特許分類】
【出願番号】特願2009−223088(P2009−223088)
【出願日】平成21年9月28日(2009.9.28)
【出願人】(304020498)サクサ株式会社 (678)
【Fターム(参考)】