(57)【特許請求の範囲】
【請求項１】
入力された画像データに対して、その画像データの単一画素ごとに処理を行うＧＰ命令と、一度に複数の画素の処理を行うＰＥ命令と、を選択して実行する画像処理方法において、
前記画像データに対して所定の処理を行う際に、原点から移動点に移るパラメータである変換位置情報に基づいて、前記ＧＰ命令と前記ＰＥ命令とのうちのいずれかの処理時間が短い命令に切り替えて実行することを特徴とする画像処理方法。
【請求項２】
前記ＧＰ命令と前記ＰＥ命令が、それぞれ同一の処理結果となる異なるアルゴリズムにより前記画像データの処理を行うことを特徴とする請求項１に記載の画像処理方法。
【請求項３】
前記画像データの前記ＰＥ命令で一度に処理を行える複数画素ごとに、前記ＧＰ命令と前記ＰＥ命令とを切り替えることを特徴とする請求項１または２に記載の画像処理方法。
【請求項４】
前記変換位置情報を、前記ＰＥ命令で一度に処理を行える複数画素ごとに算出することを特徴とする請求項１乃至３のうちいずれか一項に記載の画像処理方法。
【請求項５】
前記変換位置情報を、予め算出して保持することを特徴とする請求項４に記載の画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像の歪み補正などの画像処理方法に関する。
【背景技術】
【０００２】
入力画像に対して回転や歪み補正などの処理を行う画像処理方法としては、例えば特許文献１や２に記載の方法が提案されている。
【０００３】
特許文献１に記載の画像処理方法は、ライン単位で読み込んだｍラインの画像データを主走査方向にｎ画素毎のブロックに分割して各ブロックを符号化する手段と、（ｍ画素）×（ｎ画素）の画像データを９０°単位で回転される手段とで、画像データを回転することを特徴としている。
【０００４】
特許文献２に記載の画像処理方法は、複雑な演算を行わずラインデータ保持メモリの活用と補間処理とだけで画像データの回転処理を行うことを目的とし、ラインスキャンされた画像データを取り込み画像の回転を行う画像処理において、回転前のサンプリング点を副走査方向に接続する線と回転後の主走査方向のラインとが交差する位置を回転前の副走査方向の画像データより第１の補間処理で求めて、副走査補間画像データを配置し、回転後の主走査ラインと回転後のサンプリング点を副走査方向に接続する線とが交差する位置を回転後の主走査方向の副走査補間画像データより第２の補間演算で求めて、回転後の画像データを配置することを特徴としている。
【特許文献１】特開平１０−９３８０５号公報
【特許文献２】特開２００６−２９５３７９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１や２に記載の画像処理方法では、小容量メモリを用いて処理を行いシステムコストの低減化は可能であるが、アクセスされる特別の回路が必要となるので、アフィン変換等の複雑な演算が必要となる。更に、並列処理を行うプロセッサで複数画素を同時に処理をする場合、１つのラインデータを並列処理するのに必要な画像データを全て画像処理するメモリに保持しなければ処理が行えないので、画像データによっては、処理速度向上につながらないという問題があった。
【０００６】
例えば、図１２に示すような歪みを持った画像を補正する場合では、画素の移動距離が近い場合（図１２の場合画像の中央）と遠い場合（図１２の場合画像の左右端）とで処理の内容を変えなければならないという問題があった。
【０００７】
本発明はかかる問題を解決することを目的としている。
【課題を解決するための手段】
【０００８】
請求項１に記載された発明は、入力された画像データに対して、その画像データの単一画素ごとに処理を行うＧＰ命令と、一度に複数の画素の処理を行うＰＥ命令と、を選択して実行する画像処理方法において、前記画像データに対して所定の処理を行う際に、原点から移動点に移るパラメータである変換位置情報に基づいて、前記ＧＰ命令と前記ＰＥ命令とのうちのいずれかの処理時間が短い命令に切り替えて実行することを特徴とする画像処理方法である。
【０００９】
請求項２に記載された発明は、請求項１に記載された発明において、前記ＧＰ命令と前記ＰＥ命令が、それぞれ同一の処理結果となる異なるアルゴリズムにより前記画像データの処理を行うことを特徴とするものである。
【００１０】
請求項３に記載された発明は、請求項１または２に記載された発明において、前記画像データの前記ＰＥ命令で一度に処理を行える複数画素ごとに、前記ＧＰ命令と前記ＰＥ命令とを切り替えることを特徴とするものである。
【００１１】
請求項４に記載された発明は、請求項１乃至３のうちいずれか一項に記載された発明において、前記変換位置情報を、前記ＰＥ命令で一度に処理を行える複数画素ごとに算出することを特徴とするものである。
【００１２】
請求項５に記載された発明は、請求項４に記載された発明において、前記変換位置情報を、予め算出して保持することを特徴とするものである。
【発明の効果】
【００１３】
請求項１に記載の発明によれば、入力画素データの変換位置情報により、ＧＰ命令とＰＥ命令のうち、どちらか処理時間が短く行う処理に適した命令に切り替えて処理を行うことで、画像処理の速度、特に歪み補正や画像の回転の処理速度を向上することができる。
【００１４】
請求項２に記載の発明によれば、２種類の異なるアルゴリズムを使用する場合でも、結果として同じ処理結果を得る事が可能であるために適切な処理を選択することができる。
【００１５】
請求項３に記載の発明によれば、ＰＥ命令で一度に処理を行える複数画素ごとにＧＰ命令とＰＥ命令とを切り替えているので、ＰＥ命令とＧＰ命令の判定処理の頻度が削減され処理速度を向上することができる。また、ＰＥ命令で一度に処理を行える複数画素ごとにその処理に合った適切な命令を選択することができる。
【００１６】
請求項４に記載の発明によれば、ＰＥ命令で一度に処理を行える複数画素ごとに変換位置情報を算出しているので、ＰＥ命令で一度に処理を行える複数画素ごとに効率の良い方の命令を選択実行する事で画像の処理速度を向上することができる。
【００１７】
請求項５に記載の発明によれば、変換位置情報を予め算出して保持しているので、画素単位やＰＥ命令で一度に処理を行える複数画素単位の処理時の処理時間やステップ数を削減することができるので画像の処理速度を向上することができる。
【発明を実施するための最良の形態】
【００１８】
［第１実施形態］
以下、本発明の第１の実施形態を、図１ないし図８を参照して説明する。図１は、本実施形態において画像処理として歪み補正処理がなされる画像の構成を示す説明図である。図２は、ＳＩＭＤ単位を示す説明図である。図３は、図１に示された画像とＳＩＭＤ単位との関係を示す説明図である。図４は、本発明の第１の実施形態にかかる画像処理装置としてのＳＩＭＤ型マイクロプロセッサのブロック図である。図５は、図１に示した画像の一部分の拡大図である。図６は、ＳＩＭＤ単位で処理を実行する場合の説明図である。図７は、変換位置情報をＳＩＭＤ単位で予め算出してメモリ等に保存した場合のＧＰ命令とＰＥ命令との選択動作を示すフローチャートである。図８は、変換位置情報をＰＥ命令とＧＰ命令の切り替え判断時にＳＩＭＤ単位ごとに算出した場合のＧＰ命令とＰＥ命令との選択動作を示すフローチャートである。
【００１９】
図１は主走査方向に２１１２画素、副走査方向にＮラインの画像を示している。主走査方向の２１１２画素は３５２画素×６を意味し、これはＳＩＭＤ単位６つ分を示している。
【００２０】
ＳＩＭＤ単位とは後述するＳＩＭＤ型マイクロプロセッサにおいてＰＥ命令実行時に一度に処理可能な画素数（データ数）を意味し、本実施形態に用いるＳＩＭＤ型マイクロプロセッサでは図２に示すように３５２画素を一度に処理可能である。
【００２１】
従って、図３に示すように１ラインをＳＩＭＤ単位で処理を行うことで、１画素単位で処理を行うよりも処理回数を削減することができ、一定時間内ではより多くの画素の処理を行うことができる。
【００２２】
図４に本実施形態の歪み補正処理に用いるＳＩＭＤ型マイクロプロセッサを示す。ＳＩＭＤ型マイクロプロセッサ２は、グローバルプロセッサ３と、プロセッサエレメントブロック４と、を備えている。
【００２３】
グローバルプロセッサ３は、図４に示すようにグローバルプロセッサ３にて実行するプログラム格納用のプログラムＲＡＭ（Program-RAM）と演算データ格納用のデータＲＡＭ（Data-RAM）が内蔵されている。さらに、プログラムのアドレスを保持するプログラムカウンタ（ＰＣ）、演算処理のデータ格納のための汎用レジスタであるＧ０〜Ｇ１５レジスタ、レジスタ退避および復帰時に退避先データＲＡＭのアドレスを保持しているスタックポインタ（ＳＰ）、サブルーチンコール時にコール元のアドレスを保持するリンクレジスタ（ＬＳ）、同じくＩＲＱ（割り込み）時とＮＭＩ（マスク不可割り込み）時の分岐元アドレスを保持するＬＩ、ＬＮレジスタ、プロセッサの状態を保持しているプロセッサステータスレジスタ（Ｐ）が内蔵されている。これらのレジスタと図示していない命令デコーダ、ＡＬＵ、メモリ制御回路、割り込み制御回路、外部Ｉ／Ｏ制御回路、ＧＰ演算制御回路を使用してグローバルプロセッサ命令（ＧＰ命令）の実行が行われる。プロセッサエレメント命令（ＰＥ命令）実行時は命令デコーダ、図示していないレジスタファイル制御回路、ＰＥ演算制御回路を使用して、後述するレジスタファイルアレイ７の制御と演算アレイ８の制御を行う。即ち、ＧＰ命令とはグローバルプロセッサ３内の演算回路等を用いて実行される命令、ＰＥ命令とはプロセッサエレメントブロック４を用いて実行される命令である。
【００２４】
プロセッサエレメントブロック４は、レジスタファイルアレイ７と、演算アレイ８と、を備えている。
【００２５】
レジスタファイルアレイ７は、プロセッサエレメント数分のレジスタファイル７１から構成されている。レジスタファイル７１は、１６ビットのレジスタが３２本内蔵されており、レジスタはＰＥごとにＲ０〜Ｒ３１と呼ぶこととする。それぞれのレジスタは演算アレイ８に対してポートを備えており、１６ビットのリード／ライト兼用のバス（以下レジスタバス）で演算アレイ８からアクセスできる。図示しているレジスタは、紙面の関係で各ＰＥで６本としている。
【００２６】
演算アレイ８は、プロセッサエレメント数分の演算部８１から構成されている。演算部８１は、レジスタファイル７１との接続に１６ビット幅の７ｔｏ１のマルチプレクサ（７ｔｏ１ＭＵＸ）８１ａを備えており、ＰＥ方向で左に１、２および３つ離れたＰＥのレジスタバス、右に１、２および３つ離れたＰＥのレジスタバス、自ＰＥのレジスタバスに接続し、演算対象として７つのレジスタバスから選択することが可能である。選択の制御はグローバルプロセッサ３により行われる。
【００２７】
７ｔｏ１のマルチプレクサ８１ａの後段にはシフタ（Shift Expand）８１ｂを設けており、レジスタファイル７１から読み出されたデータのビットシフトとビット拡張を行う。シフトの制御はグローバルプロセッサ３により行われる。
【００２８】
シフタ８１ｂの後段には、上位用１６ビットＡＬＵ８１ｆ、上位用１６ビットＡレジスタ８１ｇ、上位用Ｆレジスタ８１ｈ、下位用１６ビットＡＬＵ８１ｃ、上位用１６ビットＡレジスタ８１ｄ、上位用Ｆレジスタ８１ｅを設けている。ＰＥ命令による演算は基本的にレジスタファイル７１から読み出されたデータを、例えば上位であれば上位用１６ビットＡＬＵ８１ｆの片側の入力として、もう片側には上位用１６ビットＡレジスタ８１ｇの内容を入力として、結果を上位用Ａレジスタ８１ｇに格納する。したがって、上位用Ａレジスタ８１ｇとＲ０〜Ｒ３１レジスタとの演算が行われることとなる。下位用１６ビットＡＬＵ８１ｃも同様である。
【００２９】
上位用１６ビットＡＬＵ８１ｆと下位用１６ビットＡＬＵ８１ｃは、それぞれ独立して１６ビットの演算が可能であり、また上位用１６ビットＡＬＵ８１ｆと下位用１６ビットＡＬＵ８１ｃは連動して動作し、合わせて３２ビットの演算も可能である。それぞれの動作はグローバルプロセッサ３からの制御による。上位用１６ビットＡＬＵ８１ｆと下位用１６ビットＡＬＵ８１ｃが連動する場合のため、両ＡＬＵ間にキャリーなどの情報伝達経路を備えている。
【００３０】
つまり、上述したレジスタファイル７１と、演算部８１と、でプロセッサエレメント（以降ＰＥ）を構成している。即ち、本実施形態のＳＩＭＤ型マイクロプロセッサ２は、レジスタファイル７１と演算部８１の組を３５２組備えている。
【００３１】
次に、上述した構成のＳＩＭＤ型マイクロプロセッサ２を用いて画像処理として歪み補正処理を行う場合におけるＧＰ命令とＰＥ命令の使い分け（切り替え）の方法を説明する。
【００３２】
図５は、図１に示した画像の一部分の拡大図である。ここで、補正をかける注目データ（画素）として、Ｓ００（ｘ，ｙ）、Ｓ１０（ｘ＋１，ｙ）、Ｓ２０（ｘ＋２，ｙ）、Ｓ３０（ｘ＋３，ｙ）、Ｓ４０（ｘ＋４，ｙ）の５点を例に説明する。この５点について補正する際に、各データの変換位置情報としてのオフセット値を、それぞれＳ００は（０，０）、Ｓ１０は（０，１）、Ｓ２０は（０，３）、Ｓ３０は（０，４）、Ｓ４０は（０，５）とする。このオフセット値は各画素ごとに予めレンズの収差値から求めておく。
【００３３】
図５の場合、このオフセット値が補正処理を行うために参照する画素の距離となり、Ｓ００は副走査方向に距離が０画素分、Ｓ１０は副走査方向に距離が１画素分、Ｓ２０は副走査方向に距離が２画素分、Ｓ３０は副走査方向に距離が３画素分、Ｓ４０は副走査方向に距離が５画素分あることになる。
【００３４】
図４に示したＳＩＭＤ型マイクロプロセッサ２の場合は、７ｔｏ１のマルチプレクサ８１ａが、上述したように、自身の前後３ＰＥ分のデータしか一度にアクセスできないので、一度にアクセスできる距離であるＳ３０まではＰＥ命令で実行し、Ｓ４０はＧＰ命令で実行することで効率良く歪み補正処理を行うことができる。つまり、Ｓ３０まではＰＥ命令で実行しＳ４０はＧＰ命令で実行することで歪み補正処理にかかるステップ数や演算数を減らすことができ処理時間を短くすることができる。
【００３５】
本実施形態ではＳＩＭＤ単位ごとに変換位置情報を算出しＰＥ命令とＧＰ命令とを切り替える。即ち、ＰＥ命令で一度に処理を行える複数画素ごとに、ＧＰ命令とＰＥ命令とを切り替えている。
【００３６】
図７は、変換位置情報をＳＩＭＤ単位で予め算出してメモリ等に保存した場合のＧＰ命令とＰＥ命令との選択動作を示すフローチャートである。なお、図７のフローチャートはＳＩＭＤ型マイクロプロセッサ２のグローパルプロセッサ３において実行される。
【００３７】
まず、ステップＳ４１において、処理前に変換位置情報（ＰＥ命令とＧＰ命令との切り替え条件）をＳＩＭＤ単位ごとに算出してメモリに保存し、ステップＳ４２において、１ＳＩＭＤ単位の画素を入力し、ステップＳ４３において、メモリに保存したＳＩＭＤ単位ごとの変換位置情報を参照してＰＥ命令とＧＰ命令の切り替えの判断を行い、ＰＥ命令に切り替えられた場合はステップＳ４４において、ＰＥ命令にて処理を行い、ステップＳ４３においてＧＰ命令に切り替えられた場合はステップＳ４５において、ＧＰ命令にて処理を行い、ステップＳ４６において全画素の処理が完了した場合は終了し、そうでない場合はステップＳ４３に戻る。
【００３８】
図８は、変換位置情報をＰＥ命令とＧＰ命令の切り替え判断時にＳＩＭＤ単位ごとに算出した場合のＧＰ命令とＰＥ命令との選択動作を示すフローチャートである。なお、図８のフローチャートはＳＩＭＤ型マイクロプロセッサ２のグローパルプロセッサ３において実行される。
【００３９】
まず、ステップＳ５１において、１ＳＩＭＤ単位の画素を入力し、ステップＳ５２において、入力したＳＩＭＤ単位において変換位置情報（ＰＥ命令とＧＰ命令との切り替え条件）を算出し、ステップＳ５３において、算出した変換位置情報によりＰＥ命令とＧＰ命令の切り替えの判断を行い、ＰＥ命令に切り替えられた場合はステップＳ５４において、ＰＥ命令にて処理を行い、ステップＳ５３においてＧＰ命令に切り替えられた場合はステップＳ５５において、ＧＰ命令にて処理を行い、ステップＳ５６において全画素の処理が完了した場合は終了し、そうでない場合はステップＳ５１に戻る。
【００４０】
本実施形態によれば、ＳＩＭＤ単位ごとに変換位置情報を算出しＰＥ命令とＧＰ命令とを切り替えているので、ＰＥ命令とＧＰ命令の判定処理の頻度が削減され処理速度を向上することができる。また、ＰＥ命令で一度に処理を行える複数画素ごとにその処理に合った適切な命令を選択することができる。
【００４１】
また、オフセット値を予めＳＩＭＤ単位ごとに算出してメモリに保存し、ＰＥ命令とＧＰ命令の切り替え判断時にそのオフセット値を参照しているので、ＳＩＭＤ単位ごとに効率の良い方の命令を選択実行する事で処理速度を向上することができる。
【００４２】
また、オフセット値をＰＥ命令とＧＰ命令の切り替え判断時にその都度算出しているので、メモリの使用量を抑えながら、画素ごとに効率の良い方の命令を選択実行する事で処理速度を向上することができる。
【００４３】
［第２実施形態］
次に、本発明の第２の実施形態を図９ないし図１１を参照して説明する。なお、前述した第１、第２の実施形態と同一部分には、同一符号を付して説明を省略する。図９は、ＧＰ命令を用いて歪み補正処理を行った場合の例を示す説明図である。図１０は、ＰＥ命令を用いて歪み補正処理を行った場合の例を示す説明図である。図１１は、ＧＰ命令とＰＥ命令の組み合わせパターンを示したフローチャートである。
【００４４】
図９のＧＰ命令を用いた場合、注目画素（ｘ＋Ｍ，ｙ＋Ｎ）では、予め各画素ごとに算出したオフセット値が（３，３）であった場合は、処理後の画素位置（ｘ＋Ｍ＋３，ｙ＋Ｎ＋３）の画素値を参照して処理後の注目画素（ｘ＋Ｍ，ｙ＋Ｎ）の画素値を決定していく。
【００４５】
次に、図１０のＰＥ命令を用いた場合、注目画素（ｘ＋Ｍ，ｙ＋Ｎ）を中心とするｍ×ｎのマトリクス内で探索することで処理後の画素位置を参照して処理後の注目画素（ｘ＋Ｍ，ｙ＋Ｎ）の画素値を決定していく。つまり、図４に示したＳＩＭＤ型マイクロプロセッサを用いる場合は最大７×７の範囲について探索することができる。
【００４６】
この図１０のアルゴリズムの場合、例えば１画素を移動するために１０命令かかり、ＰＥ命令では図４に示したＳＩＭＤ型マイクロプロセッサ２が３５２ＰＥであったとすると、７×７範囲の場合、４９×１０命令=４９０回で１ＳＩＭＤ単位分（３５２画素）の処理を完了することが出来るのに対して、ＧＰ命令では１画素単位処理のために、１ＳＩＭＤ単位分３５２画素を処理するためには、４９０×３５２＝１７２４８０回必要になる。
【００４７】
また、図９のＧＰ命令を用いた場合のアルゴリズムと、図１０のＰＥ命令を用いた場合のアルゴリズムは、それぞれ異なるが、同じ入力画像であれば同じ結果を得ることができる。従って、図１１に示すように複数の処理を連続して行う際に、ＰＥ命令とＧＰ命令とを組み合わせることができる。つまり、図１１の処理パターン１では、ＧＰ命令で補間処理を行った後にＧＰ命令で補正処理を行っている。処理パターン２では、ＧＰ命令で補間処理を行った後にＰＥ命令で補正処理を行っている。処理パターン３では、ＰＥ命令で補間処理を行った後にＰＥ命令で補正処理を行っている。処理パターン４では、ＰＥ命令で補間処理を行った後にＧＰ命令で補正処理を行っている。このような組み合わせを入力画像の画素やＳＩＭＤ単位ごとに組み合わせて行うことで、演算時間の短縮が図れる。
【００４８】
本実施形態によれば、ＧＰ命令とＰＥ命令とで、同じ結果が得られるがそれぞれ異なるアルゴリズムを用いて処理を行っているので、入力画像の特徴、つまり変換位置情報によって適切な処理を選択することができる。
【００４９】
なお、上述した実施形態は、図４に示したＳＩＭＤ型マイクロプロセッサ２を用いた場合であって、他のＳＩＭＤ型マイクロプロセッサなどＰＥ命令とＧＰ命令を実行可能なマイクロプロセッサであれば用いることができる。勿論その際は、ＰＥ命令とＧＰ命令との切り替え条件（４画素以上の距離や７×７の範囲等）もそのマイクロプロセッサに応じて変更すればよい。
【００５０】
また、本発明を適用する画像処理も歪み補正処理に限らず、画像の回転処理などの処理に用いてもよい。
【００５１】
また、本発明は上記実施形態に限定されるものではない。即ち、本発明の骨子を逸脱しない範囲で種々変形して実施することができる。
【図面の簡単な説明】
【００５２】
【図１】本実施形態において画像処理として歪み補正処理がなされる画像の構成を示す説明図である。
【図２】ＳＩＭＤ単位を示す説明図である。
【図３】図１に示された画像とＳＩＭＤ単位との関係を示す説明図である。
【図４】本発明の第１の実施形態にかかる画像処理装置としてのＳＩＭＤ型マイクロプロセッサのブロック図である。
【図５】図１に示した画像の一部分の拡大図である。
【図６】ＳＩＭＤ単位で処理を実行する場合の説明図である。
【図７】変換位置情報をＳＩＭＤ単位で予め算出してメモリ等に保存した場合のＧＰ命令とＰＥ命令との選択動作を示すフローチャートである。
【図８】変換位置情報をＰＥ命令とＧＰ命令の切り替え判断時にＳＩＭＤ単位ごとに算出した場合のＧＰ命令とＰＥ命令との選択動作を示すフローチャートである。
【図９】ＧＰ命令を用いて歪み補正処理を行った場合の例を示す説明図である。
【図１０】ＰＥ命令を用いて歪み補正処理を行った場合の例を示す説明図である。
【図１１】ＧＰ命令とＰＥ命令の組み合わせパターンを示したフローチャートである。
【図１２】レンズ歪みを持った画像とその補正例を示す説明図である。
【符号の説明】
【００５３】
２        ＳＩＭＤ型マイクロプロセッサ
３        グローバルプロセッサ
Ｓ４３    ＧＰ命令とＰＥ命令との切り替え判断
Ｓ４４    ＰＥ命令による処理
Ｓ４５    ＧＰ命令による処理
【図１】
0004933462.tif 000002
【図２】
0004933462.tif 000003
【図３】
0004933462.tif 000004
【図４】
0004933462.tif 000005
【図５】
0004933462.tif 000006
【図６】
0004933462.tif 000007
【図７】
0004933462.tif 000008
【図８】
0004933462.tif 000009
【図９】
0004933462.tif 000010
【図１０】
0004933462.tif 000011
【図１１】
0004933462.tif 000012
【図１２】
0004933462.tif 000013