(57)【要約】【課題】  SIMDタイプのDSPを用いて高速演算を行うために処理単位を大きくすると、莫大なメモリ容量が必要になってしまい、また、単純に画素順でSIMD演算を行っていたのではSIMD演算処理がスムーズに行われないこともある。【解決手段】  ラインセンサ1で読み取った画像データをA/D変換器2でA/D変換し、画素選択回路9で画像データの画素順を並び変える。SIMDタイプのDSP3は、該並び替えられた画像データに対して画像処理を施すことにより、少ないメモリ容量でも高速なSIMD演算処理を可能とする。【選択図】  図15
2008226190.tif 000002
【特許請求の範囲】
【請求項１】
1命令で複数データに対する処理を実行可能なプロセッサによって画像処理を行う画像処理装置であって、
画素単位の画像データが入力される画像入力手段と、
前記画像データの画素順を並び変える並び替え手段を有し、
該並び替えられた画像データに対し、前記プロセッサによる画像処理を施すことを特徴とする画像処理装置。
【請求項２】
前記プロセッサは、プログラムを変更することによって処理内容を修正可能とするDigital Signal Processorであることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記並び替え手段は、前記プロセッサによる画像処理内容に応じて、前記画像データの並び変えを行うことを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
前記プロセッサにおいては、間引きまたは平均化による解像度変換処理が行われ、
前記並び替え手段は、前記プロセッサによる解像度変換処理が間引きによるものであれば前記画像データの並び変えを行い、平均化によるものあれば並び替えを行わないことを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記画像入力手段は、
画像データを読み取ってアナログ信号を生成する読み取り手段と、
該アナログ信号をデジタル信号に変換するA/D変換手段と、
を有することを特徴とする請求項１に記載の画像処理装置。
【請求項６】
前記並び替え手段は、前記画像データに対するシェーディング補正と同時に並び替えを行うことを特徴とする請求項５に記載の画像処理装置。
【請求項７】
前記画像入力手段は、
画像データを読み取ってアナログ信号を生成する、複数の読み取り手段と、
該複数の読み取り手段から出力された複数のアナログ信号を単一の信号に合成する合成手段と、
該合成された単一の信号をデジタル信号に変換するA/D変換手段と、
を有することを特徴とする請求項１または２に記載の画像処理装置。
【請求項８】
前記プロセッサにおいては、前記並び替え手段によって並び替えられた画像データについて、前記読み取り手段毎の画像データへの分離が行われることを特徴とする請求項７に記載の画像処理装置。
【請求項９】
前記プロセッサはnビット処理を行い、
前記画像データは1画素がn/2ビット以下のデジタルデータである
ことを特徴とする請求項１乃至８のいずれか１項に記載の画像処理装置。
【請求項１０】
前記プロセッサは、前記画像データの2画素分をパックしたデータ単位で画像処理を行うことを特徴とする請求項９に記載の画像処理装置。
【請求項１１】
前記プロセッサは32ビット処理を行うことを特徴とする請求項９に記載の画像処理装置。
【請求項１２】
1命令で複数データに対する処理を実行可能なプロセッサによって画像処理を行う画像処理装置における画像処理方法であって、
画像入力手段が、画素単位の画像データを入力する画像入力ステップと、
並び替え手段が、前記画像データの画素順を並び変える並び替えステップを有し、
該並び替えられた画像データに対し、前記プロセッサによる画像処理を施すことを特徴とする画像処理方法。
【請求項１３】
前記並び替えステップにおいては、前記プロセッサによる画像処理内容に応じて、前記画像データの並び変えを行うことを特徴とする請求項１２に記載の画像処理方法。
【請求項１４】
前記プロセッサにおいては、間引きまたは平均化による解像度変換処理が行われ、
前記並び替えステップにおいては、前記プロセッサによる解像度変換処理が間引きによるものであれば前記画像データの並び変えを行い、平均化によるものあれば並び替えを行わないことを特徴とする請求項１３に記載の画像処理方法。
【請求項１５】
複数のラインセンサと、1命令で複数データに対する処理を実行可能なプロセッサによって画像処理を行う画像処理装置における画像処理方法であって、
読取手段が、複数のラインセンサにより画像データを読み取って複数のアナログ信号を生成する読み取りステップと、
合成手段が、該読み取りステップにおいて出力された複数のアナログ信号を単一の信号に合成する合成ステップと、
A/D変換手段が、該合成された単一の信号を、A/D変換器によって画素単位のデジタル信号に変換するA/D変換ステップと、
並び替え手段が、該デジタル信号として出力された画像データの画素順を並び変える並び替えステップと、を有し、
前記プロセッサにおいては、前記並び替えステップで並び替えられた画像データについて、前記ラインセンサ毎の画像データへの分離が行われることを特徴とする画像処理方法。
【請求項１６】
コンピュータで実行されることにより、該コンピュータに請求項１２乃至１５のいずれか１項に記載の画像処理方法を実現させることを特徴とするコンピュータプログラム。
【請求項１７】
請求項１６に記載のプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理装置およびその方法に関し、特に、SIMDタイプのDSPによる画像処理を行う画像処理装置およびその方法に関する。
【背景技術】
【０００２】
今日では10ビットや12ビットのデータサイズによるA/D変換を行う変換器も安価で提供されるため、1画素を12ビット階調で表現可能とする画像処理装置も多く販売され、普及しつつある。このような画像処理装置においては、16ビットの演算処理を行う必要があるが、このような画像処理を高速に実行させるためには、専用のICやゲートアレーを用いることが一般的である。
【０００３】
しかし、専用のICを用いた場合、後に処理内容を変更することは不可能となってしまう。そこで、プログラムを変更することによって処理内容を修正可能とするDSP（Digital Signal Processor）を用いた画像処理装置が提案されている（例えば、特許文献１参照）。
【特許文献１】特開平08-331378号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来のDSPを用いた画像処理装置においては、例えば16ビットDSPでは処理速度が不足してしまうのが現状である。そこで高速な32ビットDSPを用いて、1画素32ビット単位で内部メモリへ格納するように画像処理を行うのが高速処理を実現するうえで望ましいが、莫大なメモリ容量が必要になってしまう。
【０００５】
また、SIMD（Single Instruction / Multiple Data）タイプのDSPを用いることによって、１命令で複数のデータを処理することができる。しかしながら、演算処理を単純に画素順で行っていたのでは、SIMD演算処理がスムーズに行われない場合があり、余計な処理時間がかかってしまう。
【０００６】
本発明は上述した問題を解決するためになされたものであり、少ないメモリ容量でも高速なSIMD演算処理を可能とする画像処理装置およびその方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、上記目的を達成するための一手段として、以下の構成を備える。
【０００８】
すなわち、1命令で複数データに対する処理を実行可能なプロセッサによって画像処理を行う画像処理装置であって、画素単位の画像データが入力される画像入力手段と、前記画像データの画素順を並び変える並び替え手段を有し、該並び替えられた画像データに対し、前記プロセッサによる画像処理を施すことを特徴とする。
【０００９】
例えば、前記プロセッサは、プログラムを変更することによって処理内容を修正可能とするDigital Signal Processorであることを特徴とする。
【００１０】
例えば、前記並び替え手段は、前記プロセッサによる画像処理内容に応じて、前記画像データの並び変えを行うことを特徴とする。
【発明の効果】
【００１１】
本発明によれば、1命令で複数データに対する処理を実行可能なプロセッサを備えた画像処理装置において、該プロセッサの前段で画像データを並び替えることにより、プロセッサにおいて少ないメモリ容量でも高速な演算処理が可能となる。
【発明を実施するための最良の形態】
【００１２】
以下、添付の図面を参照して、本発明をその好適な実施形態に基づいて詳細に説明する。
【００１３】
＜第１実施形態＞
●装置構成
図1は、本発明に係る一実施形態として、DSPを用いた画像処理装置の概要構成を示すブロック図である。同図に示すように本実施形態の画像処理装置では、読み取り用にラインセンサ1（画像入力手段）が用いられている。ラインセンサ1から読み取って生成されたアナログ画像（アナログ信号）はA/D変換器2を通して12ビットのデジタルデータ（デジタル信号）に変換される。該デジタル信号は、SIMDタイプとして構成されたDSP(Digital Signal Processor)3へと出力され、外部インターフェース6を介して内部メモリ7へ格納される。このとき、デジタルデータは16ビットデータに変換されて格納される。
【００１４】
●解像度変換処理
図2は、本実施形態のSIMDタイプDSP3において実行される解像度変換処理を示すフローチャートである。また図3は、図2に示す本実施形態の処理に対応する、一般的な解像度変換処理を示すフローチャートである。
【００１５】
図3に示す一般的な解像度変換処理によれば、まず画像全体にシェーディング補正が施された後(S301)、解像度変換方法の指示に応じて(S302)、間引きまたは平均化による解像度変換が行われる（S303,S304,S305）。一方、図2に示す本実施形態の解像度変換処理によれば、図3に示す一般例と同様に、解像度変換方法の指示に応じて間引きまたは平均化による解像度変換を行う（S203,S206,S207）。このとき、解像度変換方法（画像処理内容）に応じて画素並びが変更される（S204,S205）ことを特徴とする。なお本実施形態における画素の並び変えは、シェーディング補正に伴って行われる。
【００１６】
●DSPの構成
次に、DSP3の内部構成および内部データの流れについて説明する。図4は、DSP3の内部構成を示すブロック図である。同図に示すようにSIMDタイプのDSP3は、外部インターフェース6とデータを格納する内部メモリ7に加えて、2つの演算器（X演算器4とY演算機5）から構成される。DSP3の内部データバス8は、Xレジスタ4a及びYレジスタ5aの2倍の幅を持っている。ここではDSP3が32ビットタイプであるため、レジスタ4a,5aがそれぞれ32ビット、内部データバス8は64ビット構成となる。外部インターフェース6は、外部からの画像データを内部データバス8を介して内部メモリ7へ入力または出力することができる。
【００１７】
ここで図5に、内部メモリ7において、1画素16ビット階調の画像データが2画素分の32ビット単位でパックされている様子を示している。すなわち内部メモリ7内では、画像データの1画素目から順に画素数分が、16ビット毎にパックされて格納されている。
【００１８】
図6は、内部メモリ7とX,Yの各レジスタ4a,5a間におけるデータの流れを示す図である。同図に示されるように本実施形態のDSP3においては、1つの命令によって、内部メモリ7における64ビットデータの上位32ビットをYレジスタ4aへ、下位32ビットをXレジスタ5aへ各々転送できる。図6では、内部メモリ7の32ビットワード0が内部データバス8を介してXレジスタ4aへ転送され、同じく32ビットワード1がYレジスタ5aへ転送された様子を示している。
【００１９】
また図7は、内部メモリ7とXレジスタ5a間におけるデータの流れを示す図である。同図に示されるように本実施形態のDSP3においては、1つの命令によって、Xレジスタ4aにおけるX0レジスタとX1レジスタの対のデータを、内部メモリ7へ転送できる。図7では、内部メモリ7の32ビットワード0が内部データバス8を介してX0レジスタへ転送され、同じく32ビットワード1がX1レジスタへ転送された様子を示している。
【００２０】
ここで図8に、SIMDタイプのDSP3における命令動作の一例を示す。Xレジスタ4aとYレジスタ5aはそれぞれ、X0〜X15，Y0〜Y15等の複数個のレジスタで構成されており、1命令に対し、Xレジスタ4aとYレジスタ5aで同時に別の処理を実行することができる。例えば図8に示すように、DSP3がX0＝X1+X2という命令を実行すると、同時にY0=Y1+Y2が暗黙の操作として実行される。
【００２１】
このように、本実施形態のSIMDタイプのDSP3においては、X0とY0またはX1とY1という対のレジスタにおいて同時に別のデータを処理することができる。しかし、Xレジスタ4aとYレジスタ5aでは、混在した演算を行うことはできない。また、Xレジスタ4aとYレジスタ5aでは、データの入れ替えはできるものの、そのためには1命令が必要であり、1命令で交換できるレジスタは1種類に限られる。
【００２２】
●DSPによる解像度変換処理
上述したように本実施形態では、SIMDタイプのDSP3で解像度変換処理を行うに先だって、画素並びを変更することを特徴とする。以下、画素並びを変更することによって得られる効果について、画素並びを変更しない場合と比較して説明する。
【００２３】
●間引き処理
ここで図9を参照して、本実施形態における解像度変換処理として、SIMDタイプのDSP3において1/2間引き処理を行う際の演算方法を説明する。このとき内部メモリ7は、処理前の画素データを格納するための入力用メモリと、処理後の画素データを格納するための出力用メモリとして別々に確保されている。ここで処理時間とは、入力用メモリに格納されている画素データをレジスタへ読み込んで処理した後に出力用メモリに書き込むまで、に要する時間である。また、ここでは便宜状、1画素めのデータを(1)、2画素目のデータを(2)、という記号で示しており、それ以降の(3)、(4)・・・についても同様である。
【００２４】
ここで説明する間引き処理とは、図9において(1)(2)(3)(4)(5)(6)(7)(8)・・・と並んでいるデータを、(1)(3)(5)(7)．．．となるように間引きすることによって、全体としての解像度を変換前の1/2にする処理である。以下、このような間引き処理を行うために、DSP3で実行される命令を順次説明する。
【００２５】
命令1：入力用メモリからレジスタ1へデータを転送する。このとき、図6で説明したように1命令で64ビットのデータがレジスタへと転送されるので、X1レジスタへは(1)(2)が入り、Y1レジスタへは(3)(4)が入力される。
【００２６】
命令2：上位16ビットのデータをレジスタ2へ移動する。このとき、図8で説明したように、この1命令によってX2=(1)とY2=(3)が同時に実行される。
【００２７】
命令3：下位16ビットのデータをレジスタ3へ移動する。このとき命令2と同様に、X3=(2)とY3=(4)が同時に実行される。
【００２８】
命令4：X3とY2を交換する。これにより、X3=(3)，Y2=(2)となる。
【００２９】
命令5：X2とX3を32ビットへパックする。これにより、X0=(1)(3)となる。
【００３０】
命令6〜命令10：(5)(6)(7)(8)画素についても、上記命令1〜5と同様の処理を行う。これにより、X1=(5)(7)となる。
【００３１】
命令11：X0とX1のレジスタ内容を出力用メモリへ書き込む。このとき図7で説明したように、1命令でレジスタ対のデータを64ビット単位で内部メモリ7へ転送できるため、出力用メモリにはX0X1=(1)(3)(5)(7)が書き込まれる。これにより、入力用メモリから読み込まれたデータ(1)(2)(3)(4)(5)(6)(7)(8)に対し、出力用メモリにはデータ(1)(3)(5)(7)が書き込まれ、1/2に間引きされていることが分かる。
【００３２】
上述した命令1〜命令11の操作を画素数の1/4回繰り返して行うことにより、全画素についての間引き処理が完了する。
【００３３】
次に図10を参照して、上記図9において(1)(2)(3)(4)(5)(6)(7)(8)・・・であった入力画素の並びを、(1)(3)(2)(4)(5)(7)(6)(8)・・・に変更した際の1/2間引き処理について、DSP3で実行される命令を順次説明する。以降、前者の画素並びを画素並びA、後者の画素並びを画素並びBとして説明する。
【００３４】
命令1：入力用メモリからレジスタ0へデータを転送する。このとき、X0レジスタへは(1)(3)が入り、Y0レジスタへは(2)(4)が入力される。
【００３５】
命令2：入力用メモリからレジスタ1へデータを転送する。このとき、X1レジスタへは(5)(7)が入り、Y0レジスタへは(6)(8)のデータが入力される。
【００３６】
命令3：X0とX1のレジスタ内容を出力用メモリへ書き込む。このとき、出力用メモリには上記図9に示した命令11の場合と同様、X0X1=(1)(3)(5)(7)が書き込まれる。
【００３７】
上述した命令1〜命令3の操作を画素数の1/4回繰り返して行うことにより、全画素についての間引き処理が完了する。
【００３８】
このように、画素並びAを画素並びBに変えることによって、同様の1/2間引き処理を実行する際の命令数が格段に少なくて済むことが分かる。具体的には、総画素数をNとしたときの命令数が画素並びAでは11×1/4N、画素並びBでは3×1/4Nとなり、画素並びBの方が短時間で処理できる。
【００３９】
以上説明した間引き処理はすなわち、図2のステップS206に示す処理に相当する。したがってステップS206においては、前段のステップS204で画素並びBへ変更するのが望ましいことが分かる。
【００４０】
●平均化処理
以上は1/2間引き処理について説明したが、次に1/2平均化による解像度処理について説明する。
【００４１】
まず図11を参照して、画素並びAにおける1/2平均化処理について説明する。ここで平均化処理とは、図11において(1)(2)(3)(4)(5)(6)(7)(8)・・・で示される画素並びAのデータを、((1)+(2))/2，((3)+(4))/2，((5)+(6))/2，・・・のように、隣接する2画素を平均化して1画素とする。これにより、全体としての解像度を変換前の1/2にする。以下、このような平均化処理を行うために、DSP3で実行される命令を順次説明する。
【００４２】
命令1：入力用メモリからレジスタ1へデータを転送する。このとき、X1レジスタへは(1)(2)が入り、Y1レジスタへは(3)(4)が入力される。
【００４３】
命令2：上位16ビットのデータをレジスタ2へ移動。このとき、X2=(1)とY2=(3)が同時に実行される。
【００４４】
命令3：下位16ビットのデータをレジスタ3へ移動。このとき命令2と同様に、X3=(2)，Y3=(4)が同時に実行される。
【００４５】
命令4：X2とX3、およびY2とY3を平均化する。これにより、X0=((1)+(2))/2，Y0=((3)+(4))/2となる。
【００４６】
命令5〜命令8：(5)(6)(7)(8)画素についても、上記命令1〜4と同様の処理を行う。これにより、X1=((5)+(6))/2，Y1=((7)+(8))/2となる。
【００４７】
命令9：X1とY0を交換する。これにより、X1=((3)+(4))/2，Y0=((5)+(6))/2となる。
【００４８】
命令10：X0とX1，Y0とY1を32ビットへパックする。これにより、X0=((1)+(2))/2 ((3)+(4))/2，Y0=((5)+(6))/2 ((7)+(8))/2 となる。
【００４９】
命令11：X0,Y0のレジスタ内容を出力用メモリへ書き込む。このとき、X0を偶数アドレスへ、Y0を奇数アドレスへ書き込む。
【００５０】
これにより、入力用メモリから読み込まれたデータ(1)(2)(3)(4)(5)(6)(7)(8)に対し、出力用メモリにはデータ((1)+(2))/2，((3)+(4))/2，Y0=((5)+(6))/2，((7)+(8))/2が書き込まれ、1/2に平均化処理されていることが分かる。
【００５１】
上述した命令1〜命令11の操作を画素数の1/4回繰り返して行うことにより、全画素についての間引き処理が完了する。
【００５２】
次に、上記図11において画素並びAであった入力を、画素並びBに変更した際の1/2平均化処理を、図12に示す。この場合、画素並びAの場合とほぼ同様の処理が行われため、ここでは逐一の命令による説明を省略するが、命令4と命令9で示されるように、途中にXレジスタとYレジスタの交換処理を増やす必要がある。したがって1/2平均化による解像度変換処理においては、画素並びBよりも画素並びAのほうが処理時間が短くなることが分かる。
【００５３】
以上説明した平均化処理はすなわち、図2のステップS207に示す処理に相当する。したがってステップS207においては、前段のステップS205で画素並びAへ変更する（すなわち入力時の画素並びAのまま変更しない）のが望ましいことが分かる。
【００５４】
●画素並び替え処理
以上説明したように本実施形態においては、解像度変換の方法（間引き，平均化）によって画素並びを制御することが望ましいため、DSP3でシェーディング補正を行う際に、画素の並び替え処理を行う。以下、本実施形態におけるシェーディング補正に伴う画素並び替え処理について説明する。
【００５５】
まず図13を参照して、画素並びAへの並び替え命令について説明する。この処理は図2のステップS205に相当し、内部メモリ7の入力用メモリにおいて(1)(2)(3)(4)・・・の順に並んでいる画素データを、シェーディング補正後に出力用メモリへ(1)(2)(3)(4)・・・の順に格納する処理であって、実質的には画素順は変更されない。
【００５６】
命令1〜命令3までは上述した解像度変換の場合と同様に、入力メモリからレジスタへ画像データを転送した後に上位下位16ビットを移動する。これにより、X2=(1),X3=(2)、Y2=(3),Y3=(4)となる。このタイミングでシェーディング補正処理が行われるため、すなわち、(1)(2)画素に対するシェーディング補正はXレジスタ4aで行われ、(3)(4)画素に対するシェーディング補正はYレジスタ5aで行われる。なおここでは、シェーディング補正処理の処理内容についての詳細説明は割愛する。シェーディング補正処理後のデータはX2=(1)，X3=(2)とY2=(3)，Y3=(4)として各レジスタに格納される。
【００５７】
次に命令4によって、X2とX3，Y2とY3を32ビットへパックすることにより、X0=(1)(2)，Y0=(3)(4)となる。そして命令5によって、X0,Y0のレジスタ内容を出力用メモリの偶数アドレス、奇数アドレスへそれぞれ書き込む。これにより、入力用メモリから読み込まれた画素並びAのデータ(1)(2)(3)(4)に対してシェーディング補正が施された後、出力用メモリにはやはり画素並びAのデータ(1)(2)(3)(4)が書き込まれることになる。
【００５８】
上述した命令1〜命令5の操作を画素数の1/4回繰り返して行うことにより、全画素についてのシェーディング補正処理が完了する。
【００５９】
次に図14を参照して、画素並びBへの並び替え命令について説明する。この処理は図2のステップS204に相当し、内部メモリ7の入力用メモリにおいて(1)(2)(3)(4)・・・の順に並んでいる画素データを、シェーディング補正後に出力用メモリへ(1)(3)(2)(4)・・・の順に格納する処理である。図14に示すように本実施形態における画素並び変え処理としては、画素並びA（(1)(2)(3)(4)(5)(6)(7)(8)・・・）を画素並びB（(1)(3)(2)(4)(5)(7)(6)(8)・・）に変更する。すなわち、画像データにおけるn画素目について、n+1画素目と、n画素目から少なくとも2画素以上離れた画素とを並び替える（この場合、n=1,5,・・・）。
【００６０】
図14に示す画素並びBへの並び替え命令群によれば、図13に示した画素並びAの場合とほぼ同様の処理が行われる。したがって、ここでは逐一の命令による説明を省略するが、命令4で示されるように、途中にXレジスタ4aとYレジスタ5aの交換処理を増やす必要がある。
【００６１】
したがって、本実施形態におけるシェーディング補正に伴う画素並び変え処理を、画素並びAの場合と画素並びBの場合とでその命令数を比較すると、画素並びAでは5×1/4N命令、画素並びBでは6×1/4N命令となる。すなわち、画素並びBよりも画素並びAのほうが処理時間が短くなることが分かる。
【００６２】
ここで本実施形態においては図2のステップS204,S206で示すように、画素並びBへの並び替えを行った後、間引きによる解像度変換を行う。このとき、画素並びBへの変換に時間を要してしまうものの、画素並びAへの変換時との差（(6-5)×1/4N命令）よりも、間引き処理による短縮効果（(11-3)×1/4N命令）の方がはるかに大きいため、十分に効果的である。
【００６３】
以上説明したように本実施形態によれば、SIMDタイプのDSP3による解像度変換処理の際に、1/2間引き処理を行う場合には画素並びBを、1/2平均化処理を行う場合には画素並びAを選択する。これにより、シェーディング補正および解像度変換にかかる処理時間を短縮することができる。
【００６４】
＜第２実施形態＞
以下、本発明に係る第2実施形態について説明する。第2実施形態においては、上述した第1実施形態においてDSP3でのソフトウェア処理として示した画素並び替えを、DSP3前段に設けたハードウェアによって実行することにより、さらなる高速化を実現することを特徴とする。
【００６５】
図15は、第2実施形態における画像処理装置の概要構成を示すブロック図である。同図に示すように第2実施形態の画像処理装置は、上述した第1実施形態で図1に示した画像処理装置の構成に対し、A/D変換器2とSIMDタイプDSP3の間に画素選択回路9を設けたことを特徴とする。これにより、DSP3前段に設けた画素選択回路9において、A/D変換器2から出力された12ビットデータをDSP3で処理しやすいように16ビットデータに変換すると同時に、第1実施形態で示した画素の並べ替えを行うことができる。なお、図15において上述した図1と同様の構成については、説明を省略する。
【００６６】
図16および図17を参照して、DSP3前段に設置された画素選択回路9において読み取り画素を並び替える処理について説明する。図16は、画素選択回路9における主要信号を示すタイミングチャート、図17は画素選択回路9の構成を示すブロック図である。画素選択回路9においては、上述した第1実施形態ではDSP3内部でのソフトウェア処理として実現された画素の並び替えを、DPS3前段でのハードウェア処理として実行する。
【００６７】
図16に示すタイミングチャートにおいて、画素転送クロックVCLKは立ち上がりから次の立ち上がりまでが1画素分を示し、ラッチ1，ラッチ2で夫々1画素づつ遅延される。選択回路1は、選択信号1が"H"の時はAに入力される信号を，"L"の時はBに入力される信号を、それぞれ出力する。選択回路2も同様に、選択信号2が"H"の時はAに入力される信号を、"L"の時はBに入力される信号を出力する。なお、画素選択回路9への選択信号1,2は、不図示の制御部から入力される。
【００６８】
図16に示すタイミングで、選択信号1が1画素ごとに切り替わり、同様に選択信号2が2画素ごとに切り替わるように制御されることによって、画素並びが以下のようになる。すなわち、A/D変換器2より(1)(2)(3)(4)・・・の画素並びAで入力された画素データが、ラッチ1,ラッチ2および選択回路1を介して、最終的に選択回路2から(1)(3)(2)(4)・・・の画素並びBによって出力される。
【００６９】
このように本実施形態の画素選択回路9においては、簡単な構成で、上述した第1実施形態に示したソフトウェア処理と同様に画素並びAから画素並びBへの並び替えを行うことができる。なお、入力時の画素並びAを保つ場合、すなわち並び替えを行わない場合には、選択信号2が常に"H"状態となるように制御する。これにより、選択回路2において常にA入力、すなわちラッチ1の信号が選択され、画素並びAがそのまま出力される。
【００７０】
以上説明したように第2実施形態によれば、DSP3前段の画素選択回路9において画素並びが制御可能となるように構成し、第1実施形態と同様に、1/2間引きか1/2平均化かに応じて、画素並びA/Bを選択する。これにより、処理時間を短縮することができる。
【００７１】
＜第３実施形態＞
以下、本発明にかかる第3実施形態について説明する。第3実施形態においては、複数のラインセンサからの入力がある場合でも、画素並び替え処理を適用することによって、ラインセンサ毎の入力データを安価な構成によって得る例について説明する。
【００７２】
図18は、第3実施形態における画像処理装置の概要構成を示すブロック図である。同図に示すように第3実施形態の画像処理装置は、上述した第2実施形態で図15に示した構成に対してラインセンサを増設し、このいずれかを選択するためのセレクタを備えたことを特徴とする。すなわち、ラインセンサ1aとラインセンサ1bから読み取ったアナログ画像は、セレクタ10で選択信号3に基づいてそれぞれが交互に選択され、A/D変換器2へ入力される。
【００７３】
図19に、セレクタ10におけるタイミングチャートを示す。同図によれば、2つのラインセンサ1a,1bからの入力a1 a2 a3 a4 ・・・aN と、b1 b2 b3 b4・・・bNは、選択信号3に応じてそれぞれが1画素ごとに交互に選択される。これにより、a1 b1 a2 b2 a3 b3 a4 b4・・・aN bN の画素並び順でA/D変換器2へ入力される。
【００７４】
ここで一般に、複数のラインセンサを備えた構成であれば、単純にラインセンサ毎にA/D変換器を備えることによってラインセンサ毎の入力データを得ることができる。しかしながら第3実施形態では、セレクタ10を用いて複数のラインセンサからの入力を合成することにより、必要となるA/D変換機2を1つで済ませることができる。すなわち、A/D変換器の数を減らすことができるため、比較的安価な構成が実現する。
【００７５】
なお図19において、A/D変換器2以降の構成は上述した第2実施形態に示した図15と同様であるため、説明を省略する。
【００７６】
第3実施形態の画素選択回路9においては、第2実施形態における画素並びAから画素並びBへの変換と同様に、A/D変換器2へ入力された上記画素並びa1 b1 a2 b2・・・を、a1 a2 b1 b2・・・となるように並び替えることができる。
【００７７】
第3実施形態においては、2つのラインセンサ1a,1bから1画素おきに入力される画像信号を並び替えることによって、ラインセンサ毎に取得された画素データを得る。
すなわち、2つのラインセンサ1a,1bからの入力がセレクタ10によって合成されてa1 b1 a2 b2・・・と入力された画像信号について、以下のような並び替え処理を短時間で行うことを特徴とする。すなわち、ラインセンサ1aによって入力されたa1 a2 a3 a4 ・・・aN と、ラインセンサ1bによって入力されたb1 b2 b3 b4・・・bN に並び替える。
【００７８】
以下、図20，図21を参照して、第3実施形態の画素選択回路9において画素並び変えを行うことによって処理速度が向上することを、画素並び変えを行わない場合と比較して説明する。
【００７９】
図20は画素並び変えを行わない場合に実行される命令群を説明する図である。すなわちA/D変換器2から出力された混在データa1 b1 a2 b2・・・aN bNが直接DSP3へ入力された場合に、DSP3でラインセンサ毎の入力データを得るために実行される命令群である。以下、これらの命令を順次説明する。なお、このときDSP3の内部メモリ7には、以下にのメモリが別々に確保されている。すなわち、処理前の画素データを格納するための入力用メモリと、処理後の画素データを格納するためのラインセンサ1a用の出力用メモリ、およびラインセンサ1b用の出力用メモリである。
【００８０】
命令1：入力用メモリからレジスタ1へデータを転送する。このとき、X1レジスタへはa1 b1が入り、Y1レジスタへはa2 b2が入力される。
【００８１】
命令2：上位16ビットのデータをレジスタ2へ移動する。このとき、X2=a1とY2=a2が同時に実行される。
【００８２】
命令3：下位16ビットのデータをレジスタ3へ移動する。このとき、X3=b1とY3=b2が同時に実行される。
【００８３】
命令4：X3とY2を交換する。これにより、X3=a2，Y2=b1となる。
【００８４】
命令5：X2とX3，Y2とY3を32ビットへパックする。これにより、X0=a1 a2，Y0=b1 b2 となる。
【００８５】
命令6〜命令10：a3 b3 a4 b4についても、上記命令1〜5と同様の処理を行う。これにより、X1=a3 a4 ，Y1=b3 b4 となる。
【００８６】
命令11：X0とX1、およびY0とY1のレジスタ内容を出力用メモリへ書き込む。このとき、ラインセンサ1a用の出力用メモリにはX0X1=a1 a2 a3 a4が書き込まれ、ラインセンサ1b用の出力用メモリにはY0Y1=b1 b2 b3 b4が書き込まれる。すなわち、入力された混在データが、ラインセンサ毎のデータに分離されていることが分かる。
【００８７】
なお、上述した命令1〜命令11の操作を画素数の1/4回繰り返して行うことにより、全画素についての分離処理が完了する。
【００８８】
図21は画素並び変えを行う場合、すなわち画素選択回路9にて並び替えられた画素データa1 a2 b1 b2・・・aN bNがDSP3へ入力された場合に、DSP3でラインセンサ毎の入力データを得るために実行される命令群を説明する図である。以下、これらの命令を順次説明する。
【００８９】
命令1：入力用メモリからレジスタ0へデータを転送する。このとき、X0レジスタへはa1 a2が入り、Y0レジスタへはb1 b2が入力される。
【００９０】
命令2：入力用メモリからレジスタ1へデータを転送する。このとき、X1レジスタへはa3 a4が入り、Y0レジスタへはb3 b4のデータが入力される。
【００９１】
命令3：X0とX1、およびY0とY1のレジスタ内容を出力用メモリへ書き込む。このとき、上記図20に示した命令11の場合と同様に、ラインセンサ1a用の出力用メモリにはX0X1=a1 a2 a3 a4が書き込まれ、ラインセンサ1b用の出力用メモリにはY0Y1=b1 b2 b3 b4が書き込まれる。すなわち、入力された混在データが、ラインセンサ毎のデータに分離されていることが分かる。
【００９２】
上述した命令1〜命令3の操作を画素数の1/4回繰り返して行うことにより、全画素についての分離処理が完了する。
【００９３】
以上説明した図20および図21から明らかなように、図21に示す場合、すなわち画素選択回路9において画素並び替えが行われた場合のほうが、処理時間が短くなることが分かる。
【００９４】
なお第3実施形態の画素選択回路9においても、DSP3で実行する解像度変換処理が1/2間引きであるのか1/2平均化であるのかに応じて、画素並びAと画素並びBのいずれへの並び替えを行うべきかを選択することも可能である。
【００９５】
以上説明したように第3実施形態によれば、複数のラインセンサからの入力がある場合でも、画素並び替え処理を適用することによって、ラインセンサ毎の入力データをより安価な構成によって得ることができる。
【００９６】
なお、第3実施形態で示した2つのラインセンサを備える画像処理装置としては、表裏用の各ラインセンサを備えることによって両面読み取りを可能とする画像処理装置や、2チップ構成のイメージセンサを備える画像処理装置等が考えられる。
【００９７】
また、第3実施形態では2つのラインセンサを備える例について説明したが、ラインセンサの数がさらに増えた場合にも同様の効果が得られる。例えば、4つのラインセンサa,b,c,dを備える場合では、各ラインセンサのデータをA/D変換前にa1 b1 c1 d1 a2 b2 c2 d2・・・のように合成する。そして、A/D変換後に画素選択回路9でa1 a2 b1 b2 c1 c2 d1 d2・・・となるように並び替えれば良い。
【００９８】
＜変形例＞
上述した第1〜第3実施形態においては、DSP3が32ビット単位での処理（32ビット処理）を行い、画像データの1画素のビット数が16ビットである場合を例として説明を行ったが、本発明はこの例に限定されない。DSP3がｎビット単位での処理（nビット処理）を行い、画像データの１画素のビット数がｎ/2ビットである場合、以下のような場合にもSIMD演算が可能である。例えば、DSP3が16ビットで1画素が8ビットである場合や、DSP3が64ビットで1画素が32ビットである場合である。すなわち、SIMDタイプのDSP3においては、DSP3のビット数に対し1画素のビット数が1/2以下（つまり、DSP3のビット数がnビットに対し1画素のビット数がn/2ビット以下）であればよい。これにより、上記各実施形態と同様にDSP3の前段に並び替え手段（実施形態では画素選択回路9）を備えることによってSIMD演算を短時間で行うことができる。
【００９９】
また、上述した第1〜第3実施形態においては、ラインセンサによって読み取られたアナログ画像データをAD変換した画素単位のデジタルデータに対して、画素並び替えを施す例を説明した。本発明はこの例に限定されず、処理対象データとして画素単位のデジタルデータが入力されるのであれば、どのような構成であっても良い。
【０１００】
＜他の実施形態＞
以上、実施形態例を詳述したが、本発明は例えば、システム、装置、方法、プログラム若しくは記憶媒体(記録媒体)等としての実施態様をとることが可能である。具体的には、複数の機器（例えば、ホストコンピュータ、インタフェース機器、撮像装置、webアプリケーション等）から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【０１０１】
尚本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システムあるいは装置に直接あるいは遠隔から供給し、そのシステムあるいは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される。なお、この場合のプログラムとは、実施形態において図に示したフローチャートに対応したプログラムである。
【０１０２】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【０１０３】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であっても良い。
【０１０４】
プログラムを供給するための記録媒体としては、以下に示す媒体がある。例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD-ROM、CD-R、CD-RW、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD-ROM，DVD-R)などである。
【０１０５】
プログラムの供給方法としては、以下に示す方法も可能である。すなわち、クライアントコンピュータのブラウザからインターネットのホームページに接続し、そこから本発明のコンピュータプログラムそのもの(又は圧縮され自動インストール機能を含むファイル)をハードディスク等の記録媒体にダウンロードする。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
【０１０６】
また、本発明のプログラムを暗号化してCD-ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせることも可能である。すなわち該ユーザは、その鍵情報を使用することによって暗号化されたプログラムを実行し、コンピュータにインストールさせることができる。
【０１０７】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。さらに、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【０１０８】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、実行されることによっても、前述した実施形態の機能が実現される。すなわち、該プログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行うことが可能である。
【図面の簡単な説明】
【０１０９】
【図１】本発明に係る一実施形態における画像処理装置の構成を示すブロック図である。
【図２】本実施形態におけるSIMDタイプDSP3で実行される解像度変換処理を示すフローチャートである。
【図３】一般的な解像度変換処理を示すフローチャートである。
【図４】SIMDタイプDSPの内部構成を示すブロック図である。
【図５】画像データが2画素単位で内部メモリに格納される様子を示す図である。
【図６】SIMDタイプDSPの内部メモリとレジスタ間におけるデータの流れを示す図である。
【図７】SIMDタイプDSPの内部メモリとレジスタ間におけるデータの流れを示す図である。
【図８】SIMDタイプDSPにおける命令動作の一例を示す。
【図９】画素並びAに対する、間引きによる解像度変換処理を説明する図である。
【図１０】画素並びBに対する、間引きによる解像度変換処理を説明する図である。
【図１１】画素並びAに対する、平均化による解像度変換処理を説明する図である。
【図１２】画素並びBに対する、平均化による解像度変換処理を説明する図である。
【図１３】画素並びAへの並び替え処理を説明する図である。
【図１４】画素並びBへの並び替え処理を説明する図である。
【図１５】第2実施形態における画像処理装置の概要構成を示すブロック図である。
【図１６】第2実施形態における画素選択回路の主要信号を示すタイミングチャートである。
【図１７】第2実施形態における画素選択回路の構成を示すブロック図である。
【図１８】第3実施形態における画像処理装置の概要構成を示すブロック図である。
【図１９】第3実施形態におけるセレクタのタイミングチャートである。
【図２０】第3実施形態において画素並び変えを行わない場合に、DSPでラインセンサ毎の入力データを得るために実行される命令群を説明する図である。
【図２１】第3実施形態において画素並び変えを行う場合に、DSPでラインセンサ毎の入力データを得るために実行される命令群を説明する図である。
【図１】
2008226190.tif 000003
【図２】
2008226190.tif 000004
【図３】
2008226190.tif 000005
【図４】
2008226190.tif 000006
【図５】
2008226190.tif 000007
【図６】
2008226190.tif 000008
【図７】
2008226190.tif 000009
【図８】
2008226190.tif 000010
【図９】
2008226190.tif 000011
【図１０】
2008226190.tif 000012
【図１１】
2008226190.tif 000013
【図１２】
2008226190.tif 000014
【図１３】
2008226190.tif 000015
【図１４】
2008226190.tif 000016
【図１５】
2008226190.tif 000017
【図１６】
2008226190.tif 000018
【図１７】
2008226190.tif 000019
【図１８】
2008226190.tif 000020
【図１９】
2008226190.tif 000021
【図２０】
2008226190.tif 000022
【図２１】
2008226190.tif 000023