(57)【特許請求の範囲】
【請求項１】
複数の要素プロセッサの夫々に画像データを分割して供給し、前記複数の要素プロセッサに前記分割して供給される画像データに対して同種の演算を並行して実行させる画像処理装置であって、
前記複数の要素プロセッサは夫々、共通する手順で、周期性を有する擬似乱数列を発生する擬似乱数列発生処理を行う演算部および前記擬似乱数列発生処理のための初期値を保持するレジスタを有し、
前記複数の要素プロセッサが有する複数の前記レジスタに、前記演算部により発生された擬似乱数列の一周期内における異なる位置のビット列を、前記擬似乱数列発生処理の初期値として設定する設定手段を有し、
前記設定手段は、前記複数の要素プロセッサの各々が、各要素プロセッサが有する前記演算部が発生する擬似乱数列を用いて前記画像データを処理する際に、前記複数の要素プロセッサが有する複数の前記演算部の各々が、異なる擬似乱数列を発生するように前記初期値を設定することを特徴とする画像処理装置。
【請求項２】
前記複数の要素プロセッサは夫々、前記擬似乱数列発生処理によって発生した乱数列を用いて、夫々供給された画像データに対して複数種類の画像処理を施すことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記複数の要素プロセッサ内のレジスタに対する前記初期値の設定は、前記画像処理装置への電源投入時または前記画像処理装置がスタンバイ中に行われることを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
前記演算部は、Ｍ系列の擬似乱数列を発生させる擬似乱数列発生処理を行うことを特徴とする請求項１乃至３のいずれか１項に記載の画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、擬似乱数を発生する画像処理装置及びその方法に関する。
【０００２】
【従来の技術】
現在、コピー機、ファクシミリ、プリンタ、スキャナといった、それぞれ異なる機能を有する画像処理装置の複合機として構成された、いわゆるMFP（Multi Function Printer）と呼ばれる画像処理装置が知られている。このようなMFPにおいては、その画像処理部にSIMD（Single Instruction stream Multiple Data stream）型のプロッセッサを使用することにより、高速、かつプログラマブルに画像を処理する技術が、例えば特開平8-315126号公報に記載されている。
【０００３】
このようなMFPにおいては、擬似乱数を用いた画像処理が行われる。例えば擬似中間調処理の様に中間調を擬似的に表現する場合、人間の目に目障りな周波数成分を持ち、さらに規則性を有するテクスチャを軽減するために、より不規則で高い周波数成分を持つ擬似的な乱数を用いて、該目障りなテクスチャを乱す処理が知られている。このような擬似乱数を用いた処理は、例えば図5に示す乱数発生器等、簡単なハードウエアによって実現されていた。
【０００４】
【発明が解決しようとする課題】
しかしながら上記従来のMFPにおいて、SIMD型のプロセッサを用いたソフトウエアによって多数の画素を並列に処理する場合、上記擬似乱数を発生させる方法としては、以下のような方法が考えられる。
【０００５】
a) 図5に示すような乱数発生器を外部ハードウエアとして並列に用意するか、または他のCPUで擬似乱数を生成し、画像信号と同様にラスタ状に入力する。
【０００６】
b) SIMD型プロセッサを構成する各PE（プロセッサエレメント）で独立に擬似乱数を発生させる。
【０００７】
通常のSIMD型プロセッサにおいては、外部からのデータ入力を行う際には、PE数分のシフトレジスタによる転送を伴う。したがって、上記方法a)では、SIMDプロセッサへの入力のために多くの転送時間を必要としてしまう。
【０００８】
また上記方法b)では、SIMD型プロッセッサにおける全てのPEは同一のプログラムによって動作するため、PE毎に異なる乱数を発生することはできない。したがってこの方法では、隣接するプロセッサが隣接する画像信号に処理を行う場合に同一の乱数が発生してしまうため、通常の乱数処理は行えない。
【０００９】
本発明は上記問題を解決するためになされたものであり、SIMD型プロセッサによる高速な擬似乱数処理を可能とする画像処理装置及びその方法を提供することを目的とする。
【００１０】
【課題を解決するための手段】
上記目的を達成する一手段として、本発明は以下の構成を備える。
【００１１】
本画像処理装置は、複数の要素プロセッサの夫々に画像データを分割して供給し、前記複数の要素プロセッサに前記分割して供給される画像データに対して同種の演算を並行して実行させる画像処理装置であって、
前記複数の要素プロセッサは夫々、共通する手順で、周期性を有する擬似乱数列を発生する擬似乱数列発生処理を行う演算部および前記擬似乱数列発生処理のための初期値を保持するレジスタを有し、
前記複数の要素プロセッサが有する複数の前記レジスタに、前記演算部により発生された擬似乱数列の一周期内における異なる位置のビット列を、前記擬似乱数列発生処理の初期値として設定する設定手段を有し、
前記設定手段は、前記複数の要素プロセッサの各々が、各要素プロセッサが有する前記演算部が発生する擬似乱数列を用いて前記画像データを処理する際に、前記複数の要素プロセッサが有する複数の前記演算部の各々が、異なる擬似乱数列を発生するように前記初期値を設定することを特徴とする。
【００１５】
【発明の実施の形態】
以下、本発明に係る一実施形態について、図面を参照して詳細に説明する。
【００１６】
＜第１実施形態＞
●画像処理装置の基本機能構成
まず、本実施形態にかかる画像処理装置の基本機能構成を図1のブロック図に示し、説明する。同図によれば本画像処理装置は、主制御を行う画像データ制御ユニット100と、画像データを入力する画像データ入力ユニット101と、画像を蓄積する画像メモリを制御して画像データの書き込み／読み出しをおこなう画像メモリ制御ユニット102と、画像データに対して加工編集等の画像処理を施す画像処理ユニット103と、画像データを転写紙等に書き込む画像書込ユニット104、の5つのユニットからなる。
【００１７】
上記各ユニットは、画像データ制御ユニット100を中心に構成されている。すなわち、画像データ入力ユニット101、画像メモリ制御ユニット102、画像処理ユニット103、画像書込ユニット104は、いずれも画像データ制御ユニット100に接続されている。以下、この各ユニットについて、それぞれ説明する。
【００１８】
まず、画像データ制御ユニット100による処理を以下に示す。
【００１９】
制御データバスインターフェース処理、全体システム制御、ローカルバス制御処理（システム・コントローラーを起動させるためのＲＯＭ、ＲＡＭ、アクセス制御処理）、画像データ入力ユニット101とのインターフェース処理、画像メモリ制御ユニット102とのインターフェース処理、画像処理ユニット103とのインターフェース処理、画像書込みユニット104とのインターフェース処理、ネットワーク制御処理、等である。
【００２０】
画像データ入力ユニット101においては、システム・コントローラとのインタフェース制御処理、光学系による原稿反射光の読み取り処理、CCD（Charge Coupled Device：電荷結合素子）等を用いた電気信号への変換処理、A/D変換器でのディジタル化処理、シェーディング補正処理（光源の照度分布ムラを補正する処理）、読み取り系の濃度特性を補正する処理、ネットワークを介して入力されるPDL画像データのラスタライズ処理、等が行われる。
【００２１】
画像メモリ制御ユニット102においては、システム・コントローラとのインタフェース制御処理、メモリ部への書き込み・読み出し処理、メモリ・モジュールへのアクセス制御処理（複数のユニットからのメモリ・アクセス要求の調停処理）、等が行われる。
【００２２】
画像処理ユニット103においては、色変換処理、色補正処理、ＭＴＦ補正処理、平滑化処理、主走査方向の任意変倍処理、濃度変換（γ変換処理：濃度調整キーに対応）、単純二値化処理、各種擬似中間調処理、ドット配置位相制御処理（ジャギー補正）、像域分離処理（色判定、属性判定、適応処理）、密度変換処理、等が行われる。
【００２３】
画像書込ユニット104においては、画像信号のパルス制御処理、パラレルデータとシリアルデータのフォーマット変換処理、等が行われる。
【００２４】
●ディジタル複合機のハードウェア構成
上述した本実施形態に係る画像処理装置はディジタル複合機を構成する。以下、本ディジタル複合機のハードウェア構成の一例を図2のブロック図に示し、説明する。同図によれば本ディジタル複合機は、読取ユニット201、PDL処理ユニット202、画像データ制御部203、画像処理プロセッサ204、作像ユニット205、メモリ制御部206、メモリモジュール207、ネットワーク制御部214、ワーキングメモリ216、を備える。さらに制御用データバス208を介して、システムコントローラ209、ROM210、RAM211、操作パネル212を備える。また、ネットワーク213を介して、パーソナルコンピュータ215に接続されている。
【００２５】
上記図2に示す構成のうち、画像処理プロセッサ204は、画像に基づいて作成されたディジタル信号である画像データを顕像として出力できるように処理し、複数の画像形成動作を実現できるプログラマブルな画像処理手段である。また、画像データ制御部203は、画像データを伝送するデータバスと画像処理プロセッサ204による画像処理に用いられる処理ユニット間の画像データ伝送を一括して管理する画像データ伝送管理手段であり、読取ユニット201、PDL処理ユニット202、画像処理プロセッサ204、メモリ制御部206、作像ユニット205、ネットワーク制御部214間のデータ伝送管理を行なう。なお、本実施形態は画像処理プロセッサ204における処理を特徴とするものであり、画像処理プロセッサ204の詳細な構成については、図3以降の図面を用いて詳細に説明するものとする。
【００２６】
また、本ディジタル複合機は、画像データ記憶管理手段として、画像メモリ制御部206に接続されるメモリ・モジュール207を備える。
【００２７】
ここで、図2に示す各構成と、図1に示した各ユニット100〜104との関係について説明する。すなわち、読取ユニット201およびPDL処理ユニット202により、図1に示した画像データ入力ユニット101の機能を実現する。また同様に、画像データ制御部203、システムコントローラ209、ROM210、RAM211、操作パネル212、ネットワーク制御部214により、画像データ制御ユニット100の機能を実現する。また同様に、画像処理プロセッサ204、ワーキングメモリ216により画像処理ユニット103の機能を実現する。
【００２８】
また同様に、作像ユニット205により画像書込ユニット104を実現し、メモリ制御部206およびメモリ・モジュール207により画像メモリ制御ユニット102を実現する。
【００２９】
尚、図2に示すシステムコントローラ209は、制御用データバス208を介して接続されたROM210に記憶された制御プログラムに基づいて動作し、RAM211をワーク用メモリとして使用する。また、読取ユニット201、PDL処理ユニット202、画像データ制御部203、画像処理プロセッサ部204、作像ユニット205、メモリ制御部206、ネットワーク制御部214、操作パネル212は、制御用データバス208を介して、システムコントローラ209によりそれぞれの動作が制御される。
【００３０】
以下、図2に示す各構成の動作について詳細に説明する。原稿を光学的に読み取る読取ユニット201は、ランプとミラーとレンズ、および受光素子から構成され、原稿に対するランプ照射の反射光をミラーおよびレンズにより受光素子に集光する。CCD等の受光素子において電気信号に変換された画像データはディジタル信号に変換された後、読取ユニット201より出力（送信）される。
【００３１】
PDL処理ユニット202は、ネットワーク213に接続されたパーソナルコンピュータ215より入力されたPDL画像データを、ビットマップ画像へラスタライズするユニットである。ネットワーク213を介して入力されたPDL画像データがネットワーク制御部214を介してPDL処理ユニット202に入力されると、PDL処理ユニット202は、入力されたPDL画像データに基づいたラスタライズを行ない、ビットマップ画像データを出力（送信）する。以上のように、読取ユニット201、PDL処理ユニット202より出力（送信）された画像データは、画像データ制御部203に入力（受信）される。
【００３２】
読取ユニット201、PDL処理ユニット202より画像データ制御部203が受信した画像データは、画像データ処理プロセッサ部204、または、メモリ制御部206に出力される。
【００３３】
まず、画像処理プロセッサ部204に出力される場合の動作について説明する。
【００３４】
画像処理プロセッサ部204に入力された画像データは、ワーキングメモリ216を用いながら画像処理プロセッサ部204にて処理された後、再度画像データ制御部203に出力され、メモリ制御部206を介してメモリモジュール207に記憶される。
【００３５】
画像処理プロセッサ部204による1画面分の画像データの処理が終了し、該1画面分の処理済みデータがメモリモジュール207に記憶された後、メモリ制御部206は、メモリモジュール207に対する画像データの読み出しを行ない、該読み出した画像データを画像データ制御部203を介して作像ユニット205に出力し、プリント出力を得る。あるいは、メモリモジュール207より読み出された画像データを画像データ制御部203を介してネットワーク制御部214に出力し、さらにネットワーク213を介してパーソナルコンピュータ215に出力するように動作する。
【００３６】
次に、読取ユニット201、PDL処理ユニット202より画像データ制御部203が受信した画像データを、メモリ制御部206に出力する場合の動作について説明する。
【００３７】
画像データ制御部203よりメモリ制御部206に入力された画像データは、メモリモジュール207に記憶される。次にメモリ制御部206はメモリモジュール207より、記憶された画像データを読み出し、画像データ制御部203を介して画像処理プロセッサ部204に出力する。画像処理プロセッサ部204では、入力された画像データを処理し、処理後の画像データを、再度画像データ制御部203、メモリ制御部206を介して、メモリモジュール207に記憶する。そして、画像処理プロセッサ部204による1画面分の画像データの処理が終了し、1画面分の処理済みデータがメモリモジュール207に記憶された後、メモリ制御部206は、メモリモジュール207に対する画像データの読み出しを行ない、読み出された画像データを画像データ制御部203を介して作像ユニット205に出力し、プリント出力を得る。あるいは、メモリモジュール207より読み出された画像データを、画像データ制御部203を介してネットワーク制御部214に出力し、さらにネットワーク213を介してパーソナルコンピュータ215に出力するように動作する。
【００３８】
なお上記においては、読取ユニット201、PDL処理ユニット202より出力された画像データに対する処理を画像処理プロセッサ部204において行ない、1画面分の処理済み画像データがメモリモジュール207に記憶された後、該処理済画像データの読み出しを行ない、作像ユニット205、あるいは、ネットワーク制御部214に出力する例を示した。しかしながら本実施形態はこの例に限らず、処理済み画像データのメモリモジュール207に対する記憶が1画面分終了する前に、メモリモジュール207から処理済みの画像データの読み出しを開始するように制御してもよい。
【００３９】
また、メモリモジュール207に画像データを記憶させないように制御することも可能である。以下、この場合の動作例について説明する。
【００４０】
読取ユニット201、PDL処理ユニット202より画像データ制御部203が受信した画像データは、画像処理プロセッサ部204に出力される。画像処理プロセッサ部204では、入力された画像データに対して所定の処理を行ない、画像データ制御部203に出力する。画像処理プロセッサ部204より画像データ制御部203に入力された画像データはその後、作像ユニット205、ネットワーク制御部214に出力される。
【００４１】
メモリ・モジュール207に処理済みの画像データ1画面分を記憶する場合の操作例としては、1枚の原稿について複数枚を複写する場合がある。この場合、読取ユニット201を1回だけ動作させ、読取ユニット201により読み取った画像データをメモリ・モジュール207に記憶し、記憶された画像データを複数回読み出す。
【００４２】
また、メモリ・モジュール207に画像データを記憶させない操作例としては、1枚の原稿を1枚だけ複写する場合がある。この場合、読み取り画像データに対する処理済みデータを直接作像ユニット205に出力すればよいので、メモリ・モジュール207へのアクセスを行う必要はない。
【００４３】
尚、本ディジタル複合装置の全体の動作は、操作パネル212より入力された、処理命令に基づいてシステムコントローラ209により制御される。操作パネル212からは、処理の種類（複写、送信、画像読込、プリント等）および処理の枚数等を入力することができる。
【００４４】
●画像処理プロセッサ構成
図3は、図2に示した画像処理プロセッサ204の詳細構成を示すブロック図である。同図によれば画像処理プロセッサ204は、FIFOメモリ301，307と、演算処理ユニット300から構成される。さらに演算処理ユニット300は、入力レジスタ302、出力レジスタ304、SIMD型のデータ演算処理部303からなるSIMDプロセッサ308と、制御プロセッサ部305、および外部メモリインタフェース306を有している。
【００４５】
ここでSIMDとは、複数のデータに対し、単一の命令を並列に実行させることを示し、本実施形態においては、データ演算処理部303が128個のPEにより構成されている。
【００４６】
FIFOメモリ301は、読取ユニット201、または、PDL処理ユニット202より入力される画像データ1ライン分(7168画素)の容量を有するファーストイン・ファーストアウトのメモリであり、書込みと読み出しが独立に制御される。画像データ制御部203のデータバスAより入力された画像データは、FIFOメモリ301に入力され、データ演算処理部303が有するPEの数と等しいレジスタ数で構成された入力レジスタ302に、128個分の画像データとして56分割して入力される。
【００４７】
入力レジスタ302に入力された画像データは、データ演算処理部303および外部メモリインタフェース306に出力される。データ演算処理部303に入力された画像データは、そこで所定の処理が施された後、出力レジスタ304、外部メモリインタフェース306に出力される。尚、外部メモリインタフェース306には、データ演算処理部303で処理された中間データを出力することも可能である。
【００４８】
出力レジスタ304は、入力レジスタ302と同様に、データ演算処理部303が有するPE数と等しいレジスタ数で構成されている。出力レジスタ304の出力画像データは、画像データ1ライン分の容量を有するFIFOメモリ307に入力される。FIFOメモリ307は、書込みと読み出しが独立に制御されるファーストイン・ファーストアウトのメモリである。FIFOメモリ307より出力される画像データ信号は、データバスBを介して画像データ制御部203に出力される。
【００４９】
さらに、SIMDプロセッサ308及び外部メモリインターフェイス306は、図2に示す制御用データバス208に接続された制御プロセッサ部305と接続されている。制御プロセッサ部305は、データ演算処理部303のPEに対する命令の供給、各PEのステータスの判断、各PEに接続されたメモリ、レジスタへのデータの入出力等の制御及び外部メモリインターフェイス部306を制御し、SIMDプロセッサ308の内部メモリやレジスタとワーキングメモリ216間のデータ制御を行なう。尚、制御プロセッサ305とSIMDプロセッサ308は、互いに異なる処理を独立に実行することが可能である。
【００５０】
●演算処理ユニット構成
図4は、上記図3に示したSIMD型プロセッサ308を含んだ演算処理ユニット300の概略構成を示すブロック図である。
【００５１】
図4によれば制御プロセッサ部305は、制御プロセッサ401および、制御プロセッサ及びSIMD型プロセッサの動作を制御するプログラムが格納されたプログラムメモリ402、データメモリ403より構成される。
【００５２】
404はSIMD型プロセッサ308を構成するひとつのPEを示し、上述したように、本実施形態におけるSIMDプロセッサ308は128個のPE（PE0〜PE127）により構成されている。
【００５３】
図4に示すように、それぞれのPEは、8ビットの演算ユニット（ALU）405と、8ビットのレジスタ16本から構成される汎用レジスタ406、ALU405の演算動作を実施するか否かを制御するマスクレジスタ407、演算途中のデータを格納するPEレジスタ408、出力レジスタ409、入力レジスタ408、2Kバイトの容量を有するメモリ411、から構成される。ALU405、PEレジスタ408は、隣接するPE間における同一構成要素との接続がなされており、データの入出力が可能な構成となっている。また、出力レジスタ409、入力レジスタ410も隣接するPE間の同一構成要素との接続が行なわれており、128段のシフトレジスタとして動作する。尚、図4において、図3に示す入力レジスタ302、出力レジスタ304に相当するブロックには同一符号を付してある。
【００５４】
また、各PEにおけるメモリ411は、外部メモリインタフェース306及びデータバスCを介して、ワーキングメモリ216に接続される。
【００５５】
尚、同一PEを構成するALU405、汎用レジスタ406、マスクレジスタ407、PEレジスタ408、出力レジスタ409、入力レジスタ410、メモリ413は、任意のブロック間におけるデータの入出力が可能な構成となっており、例えば、メモリ411からPEレジスタ408へのデータ入出力、PEレジスタ408から外部メモリインタフェース306へのデータ入出力、等を可能とする。
【００５６】
各PEに対する命令は、制御プロセッサ401により命令供給バス413を介して同一内容で供給され、全てのPEが同一の命令に従った動作を行なうように制御されるが、各PEに与える処理対象のデータを異ならせることにより、各PEが異なる処理対象データに対する演算処理を並列に行なうように制御される。例えば、画像データ1ライン中の128画素の内容を各画素ごとにPEレジスタに配置し、同一の命令コードによって各PEレジスタに対する演算処理を行わせれば、1画素ずつ逐次処理するよりも短時間で、128画素分の処理結果が得られる。
【００５７】
各PEのALU405における演算結果、および、PEレジスタ408の内容は、隣接するPE間で入出力可能な構成となっていることにより、隣接PEのPEレジスタ408、および、ALU405の演算結果を参照した演算処理を各PEで行なうことも可能である。さらに、各PEのメモリ411および、入力レジスタ410、出力レジスタ409、PEレジスタ408、マスクレジスタ407、汎用レジスタ406は、メモリ／レジスタアクセスバス414を介して制御プロセッサ401に接続され、メモリおよび各レジスタデータの入出力が、制御プロセッサ401により制御される。
【００５８】
また、制御プロセッサ401は、制御用データバス208を介して、図2中のシステムコントローラ209との制御データの入出力が可能な構成となっている。さらに、制御プロセッサ401の動作を制御するプログラムメモリ402、および、データメモリ403は、制御用データバス208を介してシステムコントローラ209よりアクセス可能な構成となっており、システムコントローラ209により、画像処理ユニット300で行なわれる処理内容に応じて、制御プロセッサ401の動作を制御するプログラムメモリ402の書き換えが可能である。
【００５９】
●乱数発生の原理（従来装置）
以下、本実施形態における擬似乱数発生の原理について、理解を容易とするために図5に示す従来のハードウェア構成を例として説明する。
【００６０】
乱数発生法としては例えば、文献「現代信号理論」（池野、小山著、昭和61年発行、電子情報通信学会）に示されているように、最大長周期系列（M系列）を発生する線形フィードバックシフトレジスタ（LFSR）を用いる方法が知られている。
【００６１】
LFSR方式による従来の乱数発生装置は図5に示すように、1ビットn段のDフリップフロップ(以下、単にF/Fと記載)501、502、・・・、525と、特定のF/Fからの出力信号を演算する排他的論和演算器526、527、528から成る。図5に示す例においては1ビット25段のシフトレジスタを構成しており、22段目のF/F522と、23段目のF/F523と、24段目のF/F524と、25段目のF/F525からの出力値を、夫々排他的論和演算器526、527、528を用いて演算し、その結果を初段のF/F501入力する。したがって、全てのF/Fにクロック534を与えてデータを一段ずつシフトすれば、クロックが入る度に1個の乱数が発生され、その結果、225-1個を一周期とするM系列の1ビットの擬似乱数列が、F/F525の出力529として得られる。尚、4ビットの擬似乱数が必要な場合は例えば、各F/Fの出力530、531、532、533を出力すれば良い。このLFSR方式における各F/Fの出力は、その状態が全て0である場合を除く225-1通りの初期状態から、擬似乱数を発生させることができる。
【００６２】
ところで、A4サイズの画像を600DPIで処理する場合、長手方向が7168画素、短手方向が4960画素であるとすれば、全画素数は約1.06×225であるため、図5に示すLFSR方式によれば、A4サイズ600DPIの画像信号の総数に略等しい個数の乱数を生成することができる。
【００６３】
●本実施形態の擬似乱数生成処理
以下、本実施形態における擬似乱数生成処理について説明する。本実施形態においては、上述したように従来は図5に示すハードウェアによって実現していた擬似乱数発生処理を、SIMDプロセッサ308を用いたソフトウェア処理によって実現することを特徴とする。
【００６４】
図6A及び図6Bは、上述したLFSR方式による擬似乱数を、本実施形態におけるSIMDプロセッサ308を用いてソフトウェアで生成する処理を示すフローチャートである。
【００６５】
図6Aは乱数レジスタの初期化ルーチンを示し、すなわち、各PEが担当する2KBのメモリ411の内4バイト分を乱数レジスタPとして設定し、その0ビット目P(0)から24ビット目P(24)までの25ビットのデータを初期設定する。
【００６６】
本実施形態におけるSIMDプロセッサ308は、128個の各PEが同時に擬似乱数を発生するため、図5で説明したF/Fの初期値を全て同じ値にすると、全ての乱数が同じ値として発生されてしまい、実質的な乱数は得られない。そこで本実施形態においては、各PEが処理する乱数レジスタの初期値を互いに異なる値とすることを特徴とする。そこで、128個の互いに異なる初期化データを制御プロッセッサ305が実行するプログラムに予め保持しておき、該制御プロッセッサ305からSIMDプロッセッサ308の各乱数レジスタPに順次初期値を転送し、初期化を行う。
【００６７】
具体的には図6Aにおいて、まずステップS601でPE0のレジスタに初期設定し、ステップS602でPE127のレジスタへの初期設定が終了するまで、ステップS601の初期設定処理を128回繰返す。
【００６８】
ここで、各PEが担当する乱数レジスタPに設定される初期値について説明する。図5で説明したLFSR方式の擬似乱数発生器においては、発生する擬似乱数の1周期は225-1（33554431）であり、A4サイズを600DPIで分解した画素数に略等しい。本実施形態においてこのA4サイズ全面を128個のPEで分担して画像処理する場合、各PEが発生する乱数がA4サイズの1面で重複しないためには、上記1周期を略128等分した位相に従うように初期値を設定すればよい。すなわち、PE0の初期値を0でない任意の値Sとし、1周期の1/128（33554431/128）をDとすれば、PE0に隣接するPE1の初期値は、図5において初期値SからD回クロックが入力された時の25ビットのレジスタの値[S+D]とする。各PEについての初期値を表1に示す。
【００６９】
【表１】
0004125025.tif 000002
同表に示されるように、PE1に隣接するPE2の初期値は[S+2D]となり、以降のPEにおける初期値は順次Dづつ増加しており、すなわち、隣接するPE間において設定される初期値はD個のクロック入力に相当する位相差を有していることが分かる。
【００７０】
なお、これらの初期値は、以下に説明する乱数発生用のルーチンを予め所定回数実行させることによって得られる。すなわち各PEに設定される初期値としては、発生する擬似乱数の一周期内における、それぞれ異なる値が設定される。
【００７１】
また、該擬似乱数の1画面内での重複を避けるために、発生する擬似乱数の周期を全PE数に対して十分に長い値、例えばPE数の所定倍以上の値に設定すべきであることは言うまでもない。
【００７２】
次に、本実施形態における乱数発生ルーチンを図6Bを用いて説明する。
【００７３】
まず、各汎用レジスタ406の内4バイト分をレジスタBSとして設定し、25ビット分の乱数レジスタPの値（P(0)〜P(24)）をレジスタBS（BS(0)〜BS(24)）に書き込む（S603）。そして、レジスタBSの各ビットを右に1ビットずつシフトする（S604）ことによって、レジスタBSの25ビットにより表される値を2倍にする。この操作は、図5に示す構成においてクロックが1個入力されることによるビットシフト動作に相当する。
【００７４】
そして、シフトされたレジスタBS中の24，23ビット目であるBS(24)，BS(23)の値について、その排他的論理和（図6Bにおいては「＃」で表記）の結果をPEレジスタ408内のレジスタPERに入れる。更に、22ビット目のレジスタBS(22)とレジスタPERとの排他的論理和の結果で該レジスタPERを書き換え、更に、21ビット目のレジスタBS(21)とレジスタPERとの排他的論理和の結果を、0ビット目のレジスタBS(0)に格納する（S605）。
【００７５】
その後、レジスタBS(0)〜BS(24)の25ビットデータを乱数レジスタP(0)〜P(24)に格納して（S606）、乱数発生処理を終了する。図6Bの処理を行った結果、乱数レジスタP(24)の値が1ビットの乱数として得られる。
【００７６】
本実施形態においては、この乱数を各PEが担当する夫々の画素データに適用する度に、図6Bの処理を実行する。尚、本実施形態における128個のPEは、上述したルーチンを同時に（並列に）実行することは言うまでもない。
【００７７】
なお、図6Aに示した乱数レジスタPの初期化は、本装置への電源投入時やシステム立ち上げ時、またはスタンバイ中に実行されることが望ましい。本実施形態においては、SIMDプロッセッサのレジスタ値が保持されている間は、発生する乱数の位相差は保証されるため、乱数レジスタPの初期化動作を予め行っておくことにより、乱数レジスタPの初期化に要する時間を考慮する必要がなくなる。例えば、1ページの画像を処理する度に初期設定するよりも、処理時間が短縮される。
【００７８】
●乱数ディザによる2値化処理
以下、上述したように各PEにおいて発生した乱数を用いた画像処理について説明する。図7は、本実施形態における乱数ディザによる画像信号の2値化処理を示すフローチャートである。
【００７９】
図2に示す読取ユニット201によりCCDにて読み取られた画像信号は、8ビットの画像信号として、画像データ制御部203を介して画像処理プロセッサ部204中のFIFOメモリ301に入力され、入力レジスタ302、外部メモリインタフェース306を介して、ワーキングメモリ216に記憶される。
【００８０】
図7に示す2値化処理においては、上記のように画像信号が記憶されたワーキングメモリ216から、各PEの汎用レジスタ406内の8ビットレジスタBに8ビットの画像信号を転送する（S701）。SIMDプロセッサ308では128個のPEが同時に動作するため、このステップS701においては、ワーキングメモリ216に格納された連続する128個の画像信号が、SIMDプロセッサ308の各PEが担当する汎用レジスタBに同時に転送されていることになる。該128個の画像信号は、CCDで読み取られ前処理された1ラスタ分（7168個）のデータ中の連続した128画素データである。即ち、本実施形態では1ラスタを56（=7168/128）に分割することによって、1ラスタの画像信号を56回に分けて入力し、各入力ごとに128画素を同時処理する。
【００８１】
次に、図6Bで説明した乱数発生ルーチンを実行して乱数を発生させた後（S702）、乱数レジスタPの上位8ビット分であるP(17)〜P(24)の2値データを、8ビットの乱数としてPEレジスタ408内のレジスタPERに格納する（S703）。
【００８２】
そして、汎用レジスタ406内の2値化レジスタCに2値化結果0を初期値として格納し（S704）、次にステップS702で得られた乱数を閾値として、レジスタBに格納された画像信号を2値化する。すなわち、レジスタBの値がレジスタPERよりも大きければ（S705）2値化レジスタCを1に書き換えた後（S706）、2値レジスタCの値をワーキングメモリ216に出力する（S707）。このとき、画像入力時と同様に128画素分の2値化結果が同時に得られ、また、ワーキングメモリ216への画像転送は128ビット分が同時に行われている。
【００８３】
以上の処理により1ラスタの1/56分が終了するため、上記ステップS701〜S707の処理回数を係数し、1ラスタ分が終了するまで、すなわち56回繰返す（S708）。A4サイズの画像の場合、上記処理を4960ラスタ分繰り返すことによって、1ページ分の2値化が終了する（S709）。
【００８４】
●PE毎の処理画素位置、及び乱数の位相差
図8は、本実施形態においてA4サイズの画像信号を処理する場合に、各PEが担当する画像信号の位置（画素位置）を示す図である。同図によれば、PE0は1ラスタ目の0番目、128番目、256番目......、PE1は1ラスタ目の1番目、129番目、257番目......の画像信号を担当している。各PEが生成する乱数はシフトされて連続するが、この乱数が適用される画素位置は、同図によれば離散的となっていることが分かる。
【００８５】
ここで図9に、各PEが乱数レジスタPの表1に示した初期化に従って発生する乱数について、そのA4全面に対する位相の分布を示す。
【００８６】
図9から明らかなように本実施形態によれば、128個の各PEが同じ25段のLFSRを用いたM系列の擬似乱数を発生しているにもかかわらず、隣接するPE間では少なくとも1周期の1/128（図中Dに相当）の位相差を有し、又ライン方向、すなわち隣接するライン間においても56の位相差を保っていることが分かる。従って、本実施形態において発生する擬似乱数は、乱数としての条件を十分に満足していることが分かる。
【００８７】
以上説明したように本実施形態によれば、単一プログラムに従って並列に演算処理を実行する複数のPEで構成されるSIMD型プロセッサにおいて、各PEから発生される乱数が、隣り合う画像信号に対して異なる位相となるため、2次元の画像データに対して通常の乱数として用いることができる。
【００８８】
また、発生した擬似乱数を用いた画像処理を、効率よく行うことができる。
【００８９】
＜変形例＞
上述した実施形態は本発明の一形態に過ぎず、本発明は以下のような変形も可能である。
【００９０】
・画像信号の処理順
本発明においては、もちろん画像信号の処理順を変えることにも対応可能であり、たとえば図10に示すように、まず1ラスタの先頭の128画素×4960ライン分を処理し、次いで128〜255画素×4960ライン...の順に処理を行うこともできる。図10においても、上述した図9の場合と同様に、隣接するPE間で発生する乱数は夫々少なくとも1周期の1/128（図中Dに相当）分の位相差を有しており、やはり乱数として良好に用いることができる。
【００９１】
・適用可能な乱数処理
本発明の乱数発生方法によって得られた乱数は、上述した実施形態で示した乱数ディザに限らず、例えば1ビットの乱数出力を誤差拡散法を実施する際の誤差の分配率の切り替えに用いたり、多ビットの乱数として画像信号に加算する等、一般的な乱数処理の全てに適用可能である。
【００９２】
・複数箇所での乱数使用
上述した実施形態では、乱数ディザ法を1ページ連続して行う例を示したが、例えば1ラスタ毎に異なる画像処理を連続して施し、その内の複数箇所で乱数を用いる場合には、その都度乱数発生ルーチンを実行するのでなく、乱数レジスタの適用位置を変えるようにすれば良い。例えば、第1の処理では乱数レジスタP(24)による1ビット乱数、第2の処理では乱数レジスタP(0)〜P(3)による4ビット乱数として用いる等、使用するビット位置を変えることによって、乱数発生ルーチンを複数回実行することによる処理速度の低下を防止することができる。
【００９３】
同様に、例えば1画素をRGBに色分解し、連続して1画素のRGBデータを処理する際にも、乱数レジスタP(24)はRデータ用に、P(18)はGデータ用に、P(12)はBデータ用に使用すれば、処理の高速化が図れる。
【００９４】
・設定初期値
上述した実施形態では、隣接するPE間における乱数レジスタの初期値を、1周期の1/128（D）間隔に設定する例を示したが、初期値の間隔はこの値に限らず、十分に離れた値であれば実用上問題ないし、又、常に等しい間隔を保つ必要もない。
【００９５】
・LFSR
また、上述した実施形態では25段のLFSRを例として示したが、他の周期性を有する擬似乱数発生方式でも適用可能であり、同様の効果が得られることは言うまでもない。
【００９６】
＜他の実施形態＞
なお、本発明は、複数の機器(例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機、ファクシミリ装置など)に適用しても良い。
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUまたはMPU)が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成されることは言うまでもない。
【００９７】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００９８】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピーディスク、ハードディスク、光ディスク、光磁気ディスク、CD-ROM、CD-R、磁気テープ、不揮発性のメモリカード、ROMなどを用いることが出来る。
【００９９】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)などが実際の処理の一部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１００】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１０１】
【発明の効果】
以上説明したように本発明によれば、SIMD型プロセッサによる高速な擬似乱数処理が可能となる。
【図面の簡単な説明】
【図１】本発明に係る一実施形態における画像処理装置の基本機能構成を示すブロック図である。
【図２】本実施形態における画像処理装置のハードウェア構成を示すブロック図である。
【図３】画像処理プロセッサの詳細構成を示すブロック図である。
【図４】  SIMD型プロセッサを含んだ演算処理ユニット300の概略構成を示すブロック図である。
【図５】  LFSR方式による従来の乱数発生装置のハードウェア構成を示す図である。
【図６Ａ】本実施形態における擬似乱数発生処理を示すフローチャートである。
【図６Ｂ】本実施形態における擬似乱数発生処理を示すフローチャートである。
【図７】乱数ディザによる2値化処理を示すフローチャートである。
【図８】本実施形態において各PEが担当する画素位置を示す図である。
【図９】本実施形態において各PEが発生する乱数の位相分布を示す図である。
【図１０】画像信号の他の処理順において各PEが発生する乱数の位相分布を示す図である。
【符号の説明】
204  画像処理プロセッサ部
300  演算処理ユニット
301，307  FIFOメモリ
302  入力レジスタ
303  データ演算処理部
304  出力レジスタ
305  制御プロセッサ部
306  外部メモリインタフェース
【図１】
0004125025.tif 000003
【図２】
0004125025.tif 000004
【図３】
0004125025.tif 000005
【図４】
0004125025.tif 000006
【図５】
0004125025.tif 000007
【図６Ａ】
0004125025.tif 000008
【図６Ｂ】
0004125025.tif 000009
【図７】
0004125025.tif 000010
【図８】
0004125025.tif 000011
【図９】
0004125025.tif 000012
【図１０】
0004125025.tif 000013