(57)【要約】【目的】連続したラスターデータとして配列変換を高速で行うことができる画像処理装置を提供すること。【構成】複数の要素プロセッサーに画像データをそれぞれ供給し、各要素プロセッサーに同種の演算を同時並行に実行させる画像処理装置において、各要素プロセッサーが有する複数バイトの連続するバイトデータを連続配列された複数の要素プロセッサーの相対的に同じアドレスのレジスターに移動するデータ移動手段と、該移動された複数バイトの連続するデータをラスター状に出力する出力手段を設ける。ここで、前記データ移動手段は、複数の要素プロセッサーの並列動作を伴うことを特徴とする。【選択図】　　　図１
2004070725.tif 000002
【特許請求の範囲】
【請求項１】
複数の要素プロセッサーに画像データをそれぞれ供給し、各要素プロセッサーに同種の演算を同時並行に実行させる画像処理装置において、
各要素プロセッサーが有する複数バイトの連続するバイトデータを連続配列された複数の要素プロセッサーの相対的に同じアドレスのレジスターに移動するデータ移動手段と、該移動された複数バイトの連続するデータをラスター状に出力する出力手段を有することを特徴とする画像処理装置。
【請求項２】
前記データ移動手段は、複数の要素プロセッサーの並列動作
を伴うことを特徴とする請求項１記載の画像処理装置。
【請求項３】
要素プロセッサーが有する複数バイトの連続するバイトデータに隣接する要素プロセッサーが有するバイトデータを連続させて結合する結合手段を有することを特徴とする請求項１記載の画像処理装置。
【請求項４】
前記移動手段が、各要素プロセッサーが有するバイトデータを含むＮ＊Ｎ（ＮはＰＥ数以下）のメモリー領域内のデータを９０度回転移動することを特徴とする請求項１記載の画像処理装置。
【請求項５】
前記出力手段は、連続配列された要素プロセッサーが有する複数バイトの連続するバイトデータを要素プロセッサーの配列順にラスター状に記憶手段に書き込むことを特徴とする請求項１記載の画像処理装置。
【請求項６】
要素プロセッサーが有する複数バイトの連続するバイトデータが各要素プロセッサーが処理して得られた符号語で有ることを特徴とする請求項１記載の画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ディジタル信号で表される画像データに基づいて形成された画像を出力する画像処理装置に関する。
【０００２】
【従来の技術】
現在、コピー機、ファクシミリ、プリンター、スキャナーといった画像処理装置の複合機として構成された、所謂ＭＦＰ（Ｍｕｌｔｉ　Ｆｕｎｃｔｉｏｎ　Ｐｒｉｎｔｅｒ）と呼ばれる画像処理装置がある。このようなＭＦＰの画像処理部に、ＳＩＭＤ（Ｓｉｎｇｌｅ　Ｉｎｓｔｒｕｃｔｉｏｎ　ｓｔｒｅａｍ　Ｍｕｌｔｉｐｌｅ　Ｄａｔａ　ｓｔｒｅａｍ）型のプロッセッサーを使用することにより、高速、且つ、プログラマブルに画像を処理する技術が例えば特開平８−３１５１２６号公報に記載されている。
【０００３】
【発明が解決しようとする課題】
しかし　　この種のプロセッサーは多数の画素信号に同じ処理を施す場合においては、その並列性が有効に作用して処理の高速化が図れるが、各プロセッサーエレメント（以降、ＰＥ）が不定長のデータを生成し、この各不定長のデータをＰＥの順に連続するラスターデータに変換する、所謂逐次処理は並列処理が不可能なために高速化できないとされている。
【０００４】
本発明は上記問題に鑑みてなされたもので、その目的とする処は、連続したラスターデータとして配列変換を高速で行うことができる画像処理装置を提供することにある。
【０００５】
【課題を解決するための手段】
上記目的を達成するため、本発明は、複数の要素プロセッサーに画像データをそれぞれ供給し、各要素プロセッサーに同種の演算を同時並行に実行させる画像処理装置において、各要素プロセッサーが有する複数バイトの連続するバイトデータを連続配列された複数の要素プロセッサーの相対的に同じアドレスのレジスターに移動するデータ移動手段と、該移動された複数バイトの連続するデータをラスター状に出力する出力手段を有することを特徴とする。
【０００６】
【発明の実施の形態】
＜実施の形態１＞
先ず、本実施の形態に係る画像処理装置の原理について説明する。
【０００７】
図１はこの発明の本実施の形態に係る画像処理装置の構成を機能的に示すブロック図である。図１において、画像処理装置は、以下に示す５つのユニットを含む構成である。
【０００８】
上記５つのユニットとは、画像データ制御ユニット１００と、画像データを入力する画像データ入力ユニット１０１と、画像を蓄積する画像メモリーを制御して画像データの書き込み／読み出しを行う画像メモリー制御ユニット１０２と、画像データに対し加工編集等の画像処理を施す画像処理ユニット１０３と、画像データを転写紙等に書き込む画像書込ユニット１０４とである。
【０００９】
上記各ユニットは、画像データ制御ユニット１００を中心に構成されている。即ち、画像データ入力ユニット１０１、画像メモリー制御ユニット１０２、画像処理ユニット１０３、画像書込ユニット１０４は、何れも画像データ制御ユニット１００に接続されている。以下、この各ユニットについてそれぞれ説明する。
【００１０】
画像データ制御ユニット１００により行われる処理は以下の通りである。
【００１１】
制御データバスインターフェース処理、全体システム制御、ローカルバス制御処理（システム・コントローラーを起動させるためのＲＯＭ、ＲＡＭ、アクセス制御処理）、画像データ入力ユニット１０１とのインターフェース処理、画像メモリ制御ユニット１０２とのインターフェース処理、画像処理ユニット１０３とのインターフェース処理、画像書込みユニット１０４とのインターフェース処理、ネットワーク制御処理等である。
【００１２】
画像データ入力ユニット１０１により行われる処理は以下の通りである。
【００１３】
システム・コントローラーとのインターフェース制御処理，光学系による原稿反射光の読み取り処理、ＣＣＤ（Ｃｈａｒｇｅ　　Ｃｏｕｐｌｅｄ　　Ｄｅｖｉｃｅ　：電荷結合素子）等
を用いた電気信号への変換処理、Ａ／Ｄ変換器でのディジタル化処理、シェーディング補正処理（光源の照度分布ムラを補正する処理）、読み取り系の濃度特性を補正する処理、ネットワークを介して入力されるＰＤＬ　画像データのラスタライズ処理等である。
【００１４】
画像メモリー制御ユニット１０２により行われる処理は以下の通りである。
【００１５】
システム・コントローラーとのインターフェース制御処理、メモリー部への書き込み・読み出し処理、メモリー・モジュールへのアクセス制御処理（複数のユニットからのメモリー・アクセス要求の調停処理）等である。
【００１６】
画像処理ユニット１０３により行われる処理は以下の通りである。
【００１７】
入力マスキング処理、出力マスキング処理、下色除去処理、空間フィルター処理、主走査方向の任意変倍処理、カラーバランス調整処理、濃度変換（γ変換処理：濃度調整キーに対応）、単純二値化処理、各種擬似中間調処理、ドット配置位相制御処理（ジャギー補正）、黒文字処理（色判定、属性判定、適応処理）、密度変換処理、画像データの圧縮／　伸張処理、等である。
【００１８】
画像書込ユニット１０４により行われる処理は以下の通りである。
【００１９】
画像信号のパルス制御処理、パラレルデータとシリアルデータのフォーマット変換処理等である。
［ディジタル複合機のハードウエア構成］
次に、本実施の形態に係る画像処理装置がディジタル複合機を構成する場合のハードウエア構成について説明する。
【００２０】
図２は本実施の形態に係る画像処理装置のハードウエア構成の一例を示すブロック図である。
【００２１】
図２のブロック図において、本実施の形態に係る画像処理装置は、読取ユニット２０１と、ＰＤＬ処理ユニット２０２と、画像データ制御部２０３と、本発明を実施する画像処理プロセッサー２０４と、作像ユニット２０５、メモリ制御部２０６、メモリモジュール２０７、ネットワーク制御部２１４、画像処理プロセッサーに接続されるワーキングメモリ２１６とを備える。又、本実施の形態に係る画像処理装置は、制御用データバス２０８介してシステムコントローラー２０９と、ＲＯＭ２１０と、ＲＡＭ２１１、操作パネル２１２とを備える。更に、ネットワーク２１３を介してパーソナルコンピュータ２１５に接続されている。
【００２２】
上記した構成のうち、画像処理プロセッサー２０４は、画像に基づいて作成されたディジタル信号である画像データを顕像として出力できるように処理し、複数の画像形成動作を実現できるプログラマブルな画像処理手段である。又、画像データ制御部２０３は、画像データを伝送するデータバスと画像処理プロセッサー２０４による画像処理に用いられる処理ユニット間の画像データ伝送を一括して管理する画像データ伝送管理手段であり、読取ユニット２０１、ＰＤＬ処理ユニット２０２、画像処理プロセッサー２０４、メモリ制御部２０６、作像ユニット２０５、ネットワーク制御部２１４間のデータ伝送管理を行う。尚、本発明は、画像処理プロセッサー２０４に係るもので、画像処理プロセッサー２０４の構成については、図３以降の図面を用いて詳細に説明するものとする。
【００２３】
又、本実施の形態に係る画像処理装置は、画像データ記憶管理手段として、画像メモリー制御部２０６に接続されるメモリー・モジュール２０７を備える。
【００２４】
ここで、上記各構成部と、図１に示した各ユニット１００〜１０４との関係について説明する。
【００２５】
即ち、読取ユニット２０１及びＰＤＬ処理ユニット２０２により、図１に示した画像データ入力ユニット１０１の機能を実現する。又同様に、画像データ制御部２０３、システムコントローラ２０９、ＲＯＭ２１０、ＲＡＭ２１１、操作パネル２１２、ネットワーク制御部２１４により、画像データ制御ユニット１００の機能を実現する。又同様に、画像処理プロセッサー２０４、ワーキングメモリ２１６により画像処理ユニット１０３の機能を実現する。
【００２６】
又同様に、作像ユニット２０５により画像書込ユニット１０４を実現する。又同様に、メモリー制御部２０６及びメモリー・モジュール２０７により画像メモリー制御ユニット１０２を実現する。
【００２７】
尚、システムコントローラ２０９は、制御用データバス２０８を介して接続されたＲＯＭ２１０に記憶された制御プログラムに基づき動作するものであり、ＲＡＭ２１１をワーク用メモリとして使用している。又、読取ユニット２０１、ＰＤＬ処理ユニット２０２、画像データ制御部２０３、画像処理プロセッサー部２０４、作像ユニット２０５、メモリ制御部２０６、ネットワーク制御部２１４、操作パネル２１２は、制御用データバス２０８を介してシステムコントローラ２０９に動作が制御されるものである。
【００２８】
各構成部の内容について説明する。
【００２９】
原稿を光学的に読み取る読取ユニット２０１は、ランプとミラーとレンズ、受光素子から構成され、原稿に対するランプ照射の反射光をミラー及びレンズにより受光素子に集光する。
【００３０】
受光素子、例えばＣＣＤにおいてＲＧＢに色分解され、電気信号に変換されたカラー画像データはディジタル信号に変換された後、読取ユニット２０１より出力（送信）される。
【００３１】
ＰＤＬ処理ユニット２０２は、ネットワーク２１３に接続されたパーソナルコンピュータ２１５より出力されたＰＤＬ画像データをビットマップ画像へラスタライズするユニットである。ネットワーク２１３を介して入力されたＰＤＬ画像データがネットワーク制御部２１４を介してＰＤＬ処理ユニット２０２に入力されると、ＰＤＬ処理ユニット２０２は、入力されたＰＤＬ画像データに基づいたラスタライズを行い、ビットマップ画像データを出力（送信）する。
【００３２】
以上のように、読取ユニット２０１、ＰＤＬ処理ユニット２０２より出力（送信）された画像データは画像データ制御部２０３に入力（受信）される。
【００３３】
読取ユニット２０１、ＰＤＬ処理ユニット２０２より画像データ制御部２０３が受信した画像データは、画像データ処理プロセッサー部２０４又はメモリ制御部２０６に出力される。
【００３４】
先ず、画像処理プロセッサー部２０４に出力される場合の動作について説明する。
【００３５】
画像処理プロセッサ部２０４に入力された画像データは、ワーキングメモリー２１６を用いながら画像処理プロセッサー部２０４にて処理が行われた後、再度画像データ制御部２０３に出力される。画像処理プロセッサー部２０４より画像データ処理部２０３に入力された画像データは、メモリ制御部２０６に出力され、メモリ制御部２０６を介してメモリモジュール２０７に記憶される。
【００３６】
画像処理プロセッサー部２０４による１画面分の画像データの処理が終了し、１画面分の処理済みデータがメモリモジュールに記憶された後、メモリー制御部２０６は、メモリーモジュール２０７に対する画像データの読み出しを行い、読み出された画像データを画像データ制御部２０３を介して作像ユニット２０５に出力し、プリント出力を得る。或は、メモリモジュール２０７より読み出された画像データを画像データ制御部２０３よりネットワーク制御部２１４に出力し、ネットワーク２１３を介してパーソナルコンピュータ２１５に出力するように動作する。
【００３７】
次に、読取ユニット２０１、ＰＤＬ処理ユニット２０２より画像データ制御部２０３が受信した画像データをメモリ制御部２０６に出力する場合の動作について説明する。
【００３８】
画像データ制御部２０３よりメモリ制御部２０６に入力された画像データは、メモリモジュール２０７に記憶される。次に、メモリ制御部２０６は、メモリモジュール２０７より記憶された画像データを読み出し、画像データ制御部２０３を介して画像処理プロセッサー部２０４に出力する。画像処理プロセッサー部２０４では、入力された画像データを処理し、処理後の画像データを再度画像データ制御部２０３、メモリ制御部２０６を介してメモリモジュール２０７に記憶する。
【００３９】
画像処理プロセッサー部２０４による１画面分の画像データの処理が終了し、１画面分の処理済みデータがメモリモジュール２０７に記憶された後、メモリー制御部２０６は、メモリーモジュール２０７に対する画像データの読み出しを行い読み出された画像データを画像データ制御部２０３を介して作像ユニット２０５に出力し、プリント出力を得る。或は、画像処理プロセッサー部２０４でデータ圧縮処理した画像データをメモリモジュール２０７より読み出し、画像データ制御部２０３よりネットワーク制御部２１４に出力し、ネットワーク２１３を介してパーソナルコンピュータ２１５に出力するように動作する。
【００４０】
上記動作例は、読取ユニット２０１、ＰＤＬ処理ユニット２０２より出力された画像データに対する処理を画像処理プロセッサー部２０４により行い、１画面分の処理済み画像データがメモリモジュール２０７に記憶された後、メモリモジュール２０７より処理済画像データの読み出しを行い、作像ユニット２０５或はネットワーク制御部２１４に出力する例を示したが、処理済み画像データの記憶が１画面分終了する前に、処理済みの画像データをメモリモジュール２０７より読み出しを開始するように制御しても良い。
【００４１】
更には、メモリモジュール２０７に画像データを記憶させない動作例について説明する。
【００４２】
読取ユニット２０１、ＰＤＬ処理ユニット２０２より画像データ制御部２０３が受信した画像データは、画像データ制御部２０３より画像処理プロセッサー部２０４に出力される。画像処理プロセッサー部２０４では、入力された画像データに所定の処理を行い、画像データ制御部２０３に出力する。画像処理プロセッサー部２０４より画像データ制御部２０３に入力された画像データは、画像データ制御部２０３を介して作像ユニット２０５、ネットワーク制御部２１４に出力される。
【００４３】
メモリー・モジュール２０７に処理済みの画像データ１面分を記憶する場合の動作例としては、１枚の原稿について複数枚を複写する場合に、読取ユニット２０１を１回だけ動作させ、読取ユニット２０１により読み取った画像データをメモリー・モジュール２０７に記憶し、記憶された画像データを複数回読み出すという方法がある。
【００４４】
メモリー・モジュール２０７に画像データを記憶させない動作例としては、１枚の原稿を１枚だけ複写する場合がある。読み取り画像データに対する処理済みデータを直接作像ユニット２０５に出力すれば良いので、メモリー・モジュール２０７へのアクセスを行う必要はない。
【００４５】
尚、本装置の全体の動作は、操作パネル２１２より入力された、画像処理装置が行うべき処理に基づいてシステムコントローラ２０９により制御される。操作パネル２１２からは処理の種類（複写、送信、画像読込、プリント等）及び処理の枚数等を入力することができる。
【００４６】
図３は図２に示した本発明の画像処理プロセッサー部２０４の構成を説明するための図である。図示した画像処理プロセッサー部２０４は、ＦＩＦＯメモリ３０１，３０７と、演算処理ユニット３００から構成され、演算処理ユニット３００は、入力レジスタ３０２、出力レジスタ３０４、ＳＩＭＤ型のデータ演算処理部３０３から成るＳＩＭＤプロセッサー３０８と、制御プロセッサー部３０５、外部メモリインターフェース３０６を有している。
【００４７】
尚、ＳＩＭＤとは、複数のデータに対し、単一の命令を並列に実行させるもので、本実施の形態では、１２８個のＰＥによりデータ演算処理部３０３が構成されている。
【００４８】
ＦＩＦＯメモリ３０１は、読取ユニット２０１又はＰＤＬ処理ユニット２０２より入力される画像データ１ライン分（７１６８画素）の容量を有するファーストイン、ファーストアウトのメモリであり、書込みと読み出しが独立に制御される。画像データ制御部２０３のデータバスＡ　より入力された画像データは、ＦＩＦＯメモリ３０１に入力され、データ演算処理部３０３が有するＰＥの数と等しいレジスタ数で構成された入力レジスタ３０２に１２８個分の画像データとして５６分割して入力される。
【００４９】
ＦＩＦＯメモリ３０１より、入力レジスタ３０２に入力された画像データは、データ演算処理部３０３、外部メモリインターフェース３０６に出力される。データ演算処理部３０３に入力された画像データは、データ演算処理部３０３にて所定の処理が行われ、処理後の画像データが出力レジスタ３０４、外部メモリインターフェース３０６に出力される。尚、外部メモリインターフェース３０６には、データ演算処理部３０３で処理された中間データを出力することも可能な構成となっている。出力レジスタ３０４は、入力レジスタ３０２と同様にデータ演算処理部３０３が有するＰＥ数と等しいレジスタ数で構成されている。
【００５０】
出力レジスタ３０４の出力画像データは、画像データ１ライン分の容量を有するＦＩＦＯメモリ３０７に入力される。ＦＩＦＯメモリ３０７は、書込みと読み出しが独立に制御されるファーストイン、ファーストアウトのメモリである。ＦＩＦＯメモリ３０７より出力される画像データ信号は、データバスＢを介して画像データ制御部２０３に出力され、異なる演算処理ユニットに入力される。
【００５１】
更に、ＳＩＭＤプロセッサー３０８及び外部メモリーインターフェイス３０６は、図２に示した制御用データバス２０８に接続された制御プロセッサ部３０５と接続されている。制御プロセッサ部３０５は、データ演算処理部３０３のＰＥに対する命令の供給、各ＰＥのステータスの判断、各ＰＥに接続されたメモリ、レジスタへのデータの入出力等の制御及び外部メモリーインターフェイス部３０６を制御し、ＳＩＭＤプロセッサー３０８の内部メモリーやレジスターとワーキングメモリー２１６間のデータ制御を行うものである。尚、制御プロセッサー３０５とＳＩＭＤプロセッサー３０８は互いに異なる処理を独立に実行することが可能である。
【００５２】
次に、ＳＩＭＤ型プロセッサーを構成するデータ演算処理部３０３を含む演算処理ユニット３００の概略ブロックを図４に示し、説明する。
【００５３】
図４中、３０５は図３に示した制御プロセッサー部を示し、制御プロセッサー４０１及び制御プロセッサ及びＳＩＭＤプロセッサーの動作を制御するプログラムが格納されたプログラムメモリ４０２、データメモリ４０３より構成される。４０４はＳＩＭＤプロセッサー３０８を構成する１つのＰＥを示し、前述したように、本実施の形態におけるＳＩＭＤプロセッサー３０８は１２８個のＰＥ（ＰＥ０〜ＰＥ１２７）により構成されている。
【００５４】
図４に示したように、それぞれのＰＥは、８ビットの演算ユニット（ＡＬＵ）４０５と、８ビットのレジスタ１６本から構成される汎用レジスタ４０６、ＡＬＵの演算動作を実施するか否かを制御するマスクレジスタ４０７、演算途中のデータを格納するＰＥレジスター４０８、出力レジスタ４０９、入力レジスタ４０８、２Ｋバイトの容量を有するメモリ４１１から構成される。ＡＬＵ４０５、ＰＥレジスタ４０８は、隣接するＰＥ間における同一構成要素との接続がなされており、データの入出力が可能な構成となっている。又、出力レジスタ４０９、入力レジスタ４１０も隣接するＰＥ間の同一構成要素との接続が行なわれており、１２８段のシフトレジスタとして動作する。尚、図３中の入力レジスタ３０２、出力レジスタ３０４に相当するブロックには同一符号を付して図４に示してある。
【００５５】
又、各ＰＥにおけるメモリ４１１は、外部メモリインターフェース３０６を介してデータバスＣより、ワーキングメモリー２１６に接続される。
【００５６】
尚、同一ＰＥを構成するＡＬＵ４０５、汎用レジスタ４０６、マスクレジスタ４０７、ＰＥレジスタ４０８、出力レジスタ４０９、入力レジスタ４１０、メモリ４１３は、任意のブロック間におけるデータの入出力が可能な構成となっており，例えば、メモリ４１１からＰＥレジスタ４０８へのデータ入出力、ＰＥレジスタ４０８から外部メモリインターフェース３０６へのデータ入出力が可能な構成となっている。
【００５７】
各ＰＥに対する命令の供給は、制御プロセッサー４０１より、命令供給バス４１３を介して各ＰＥに同一内容で与えられ、全てのＰＥが同一の命令に従った動作を行うように制御されるが、各ＰＥに与える処理対象のデータを異ならせることにより、各ＰＥが異なる処理対象データに対する演算処理を並列に行うように制御される。例えば、画像データ１ライン中の１２８画素の内容を各画素ごとにＰＥレジスタに配置し、同一の命令コードでＰＥレジスタに対する演算処理をさせれば、１画素ずつ逐次処理するよりも短時間で１２８画素分の処理結果が得られる。
【００５８】
各ＰＥのＡＬＵ４０５における演算結果及びＰＥレジスタ４０８の内容は、隣接するＰＥ間で入出力可能な構成となっていることにより、隣接ＰＥのＰＥレジスタ４０８及びＡＬＵ４０５の演算結果を参照した演算処理が各ＰＥで行うことも可能な構成となっている。更に、各ＰＥのメモリ４１１及び入力レジスタ４１０、出力レジスタ４０９、ＰＥレジスタ４０８、マスクレジスタ４０７、汎用レジスタ４０６は、メモリ／レジスタアクセスバス４１４を介して制御プロセッサ４０１に接続され、メモリ及び各レジスタデータの入出力が制御プロセッサ４０１により制御される。
【００５９】
又、制御プロセッサ４０１は、制御用データバス２０８を介して図２中のシステムコントローラ２０９と制御データの入出力が可能な構成となっている。更に、制御プロセッサ４０１の動作を制御するプログラムメモリ４０２及びデータメモリ４０３は、制御用データバス２０８を介してシステムコントローラ２０９よりアクセス可能な構成となっており、システムコントローラ２０９により、画像処理ユニット３００で行う処理内容に応じて制御プロセッサ４０１の動作を制御するプログラムメモリ４０２の書き換えが可能な構成となっている。
【００６０】
図５は本発明でＪＰＥＧ圧縮する画像ブロックの配列を示した図であり、各ブロックＢ（ｎ，ｍ）はそれぞれ図６に示す様に８＊８（＝６４）画素を１ブロックとし、Ａ４サイズ６００ＤＰＩの画像の場合、連続してラスタ入力される図上横方向に８９６ブロック縦方向に６３０ブロック配列される。
【００６１】
ラスター状の画像信号は図３においてＦＩＦＯメモリー３０１を介してＳＩＭＤプロセッサー３０８の入力レジスター３０２に１２８画素単位で入力し、外部メモリーインターフェイス３０６を使ってワーキングメモリー２１６に順次記憶保持する。ワーキングメモリー２１６で８ライン分保持された画像信号は、ＳＩＭＤプロセッサー３０８の各ＰＥが担当する内部メモリー４１１にそれぞれ８＊８画素で構成される符号化されるべき６４個の画像信号として入力する。
【００６２】
図７は各ＰＥ毎のメモリー４１１に格納された画素信号の配列を示す図であり、ＰＥ０はＢ（０．０）をＰＥ１はＢ（０，１）の画像信号の符号化を担当する。ここで、メモリーにはそれぞれ各ブロックの画像信号をＤ１１，Ｄ２１，Ｄ３１，Ｄ４１，…Ｄ８１の順に配列し、連続してＤ１２，Ｄ２２，Ｄ３２，Ｄ４２，…Ｄ８２、次にＤ１３の行、Ｄ１４の行の様に順にＤ８８の画素まで格納する。従って各ＰＥのメモリー４１１には担当する画像ブロック中の同じ位置の画像信号が相対的に同じアドレスに格納されていることになる。
【００６３】
図８は各ＰＥがこれら６４個の画像信号に対して実行するＪＰＥＧ圧縮処理の概要を示すフローチャートである。
【００６４】
先に説明した画像入力ステップ８０１が終了した後、６４個の画像信号に対して２次元離散コサイン変換（ＤＣＴと以降記載）を施し（８０２）量子化して６４個の空間周波数成分を示すＤＣＴ係数を得る。得られた６４個のＤＣＴ係数をジグザグ走査して符号化するために走査順に並べ替え（８０３）、ステップ６０４でこれら６４個のＤＣＴ係数のハフマン符号化を行う。各ＰＥではこれらの動作を異なるブロックの画像信号に対して並列に施し、各ＰＥ毎に異なる符号長のハフマン符号が得られる。得られた符号はステップ８０５で外部ワーキングメモリー２１６に出力し、連続した１２８個のブロックの符号としてシリアルに連続させる。以上の処理を１ブロックラインで７回繰り返し（ステップ８０６）、１ページ全体に対して処理する（ステップ８０７）。
【００６５】
ハフマン符号化は１２８組の各ＰＥそれぞれが並列に８＊８画素のブロックに対して処理を行うため、図９に示すようにそれぞれのＰＥは符号バッファーＣＢと符号長レジスターＣＬにそれぞれ異なる長さの符号長の符号語と符号長が保持されている。従って、これらの符号語を連続した１２８個のブロックの符号語としてシリアルに連続した所謂ラスターデータとするには、先ずＰＥ毎に生成した符号語を１バイト単位に再配列しなければならない。
［バイトデータへの再配列］
１バイト単位への再配列処理を図１０を用いて説明する。図１０に示す実施例は、隣り合うＰＥが保有する符号語を連続したビット列として結合するために、予め各ＰＥの担当する符号語のシフトすべきビット量を把握することで、シフト処理を各ＰＥが並列に同時に処理出来るので高速化が図れる。
【００６６】
先ず、各ＰＥで得られた符号長ＣＬはステップ１００１で各ＰＥが持つ積算レジスタＡに代入する。ステップ１００２からステップ１００５は各ＰＥが保有する符号語長ＣＬの値を順次右に隣接するＰＥにシフトしながら積算レジスタＡに加算して行くルーチンである。先ずｎが０の時ステップ１００２ではＰＥ０のみがステップ１００２に分岐する。ステップ１００２は積算値Ａを８で割った余りを８から差し引くことでＰＥ０が保有する符号語の最終バイトデータの端数ＯＦビットを求める。例ではＣＬ（０）が４４なので、ＯＦは４となる。
【００６７】
つまり、ＰＥＯの符号語に連続するＰＥ１の符号語の先頭からこのＯＦ（４）ビットだけＰＥ０の符号語の最終バイトデータにシフトして連続させる。従って、得られたシフト値ＯＦは右隣のＰＥ、即ちＰＥ１のＯＦ値として１ＰＥ分シフトする。ステップ１００４は各ＰＥが持つ符号語長レジスターの値ＣＬを右隣のＰＥにシフトするステップであり、自らのＰＥに左隣のＰＥからシフトされたＣＬ値を積算レジスターＡに加算し、ｎを１インクリメントしてステップ１００２に戻る。
【００６８】
次に、ｎが１となり、再びステップ１００２では、ＰＥ１のみがステップ１００３に分岐する。ＰＥ１の積算レジスターはＡには自らの符号語長ＣＬ（１）に今左からシフトされてきたＰＥ０のＣＬ（０）が加算されているためＰＥ０の符号バッファーがバイト単位に再配列された後の、ＰＥ１が保有する符号語の余りビット数が計算される。図９の例の場合、積算レジスターＡはＣＬ（１）５０にＣＬ（０）４４が加わり９４である。従って、ＯＦは２となる。
つまり、ＰＥ１の５０ビットの符号語のうち先頭の４ビットはＰＥ０の符号語に合成してＰＥ０の符号語を６　バイト（４４＋４）とするため、残った４６ビットデータ（５０−４）の６バイト目が２　ビット余ることを意味する。従って、このＯＦ値（２）はＰＥ２の符号語に対するシフト量として右隣（ＰＥ２）のＰＥにシフトする。
ステップ１００２からステップ１００４の処理を１２７回繰返せばＰＥ１からＰＥ１２７までの各ＰＥの符号語に対するシフト量ＯＦ値が求まり、ステップ１００６に分岐する。ステップ１００６は各ＰＥが保有する符号語に対して先に求めたシフト量ＯＦに従ってビットシフトする処理であり、最大７ビットのシフト処理を行う（ステップ１００７）。
【００６９】
シフト処理が終了してステップ１００８に分岐し、先頭のＯＦビット分を左のＰＥの符号語の最終バイトデータに付加して１バイトデータへの再配列処理が終了する。
【００７０】
図１１に図９で例として示した符号語をバイト単位に再配列した様子を示す。ＰＥ０，１，２の符号長がそれぞれ４４ビット、５０ビット、２９ビットであったのに対しＰＥ０は６バイト、ＰＥ１は６バイト、ＰＥ２は４バイトに再配列される。これらのバイトデータを次にラスター状に連続したデータ列に変換する処理について説明する。
［バイトデータのラスター化］
本発明で対象とするＳＩＭＤプロセッサーは基本的にＰＥの配列方向の相対的に同じアドレスのデータは同時に並列に処理出来るために、ラスターデータへの変換は容易であるが、各ＰＥが有する連続した複数バイトデータをラスター変換するのは困難である。例えば、図１２に各ＰＥのバイト単位の符号語を図示したが、これらを連続した符号語列にするには、先ずＰＥ０の１から６までの６バイトのデータにＰＥ１が持つ７から１２までの６バイトのデータを連続化させ、更にＰＥ２が有する１３から１６までの４バイトのデータをそれぞれ順次連続化しなければならない。
【００７１】
従って、図１２のような配列の状態では、各ＰＥが平均で６バイトのデータを有するなら、外部のワーキングメモリー２１６へは順次１バイトずつ順次連続したアドレスに１２８＊６＝７６８回転送処理を行なわねば、７６８バイトのラスターデータに変換できないが、これは所謂逐次処理であり、各ＰＥが並列に動作できないので高速化を阻害する。
そこで、本実施の形態では、図１２の符号語全体を図１３に示すように９０度回転処理して各ＰＥが有するＮバイトの符号語をＰＥ０からＰＥｎ−１の同じ行アドレスに配列変換する。即ち、本来ＰＥ０が持っていた６バイトのデータをそれぞれＰＥ０−ＰＥ５の１行目にＰＥ１が持っていた６バイトのデータを同様にＰＥ０−ＰＥ５の２行目にそれぞれ９０度回転して再配列すれば、外部のワーキングメモリー２１６にはそれぞれのＰＥが有する１行目の１２８バイトのデータは並列に同時に転送できるため、１２８回の転送処理に削減できるので６倍高速化が可能となる。
【００７２】
図１４を用いて、先ず４＊４＝１６個のデータを９０度回転する方法の原理を説明する。
【００７３】
図１４（ａ）に示すＤ１１，Ｄ１２，Ｄ１３，Ｄ１４をＰＥ０が持つ４バイトのデータとすれば、同図（ｅ）に変換すれば９０度回転したことになる。即ち、先ず図（ａ）においてＰＥ１が持つデータＤ２１，Ｄ２２，Ｄ２３，Ｄ２４を１行分上にシフトし、ＰＥ２が持つデータＤ３１，Ｄ３２，Ｄ３３，Ｄ３４を２行分上にシフトし、ＰＥ３が持つデータＤ４１，Ｄ４２，Ｄ４３，Ｄ４４を３行分上にシフトすれば、同図（ｂ）が得られる。尚、４＊４の領域からはみ出たデータはリング状に折り返した位置にシフトされるものとする。
【００７４】
次に、図１４（ｂ）の状態から各ＰＥの２行目のデータＤ１２，Ｄ２３，Ｄ３４，Ｄ４１のデータを右に１列し、各ＰＥの３行目のデータＤ１３，Ｄ２４，Ｄ３１，Ｄ４２のデータを右に２列シフトし、各ＰＥの４行目のデータＤ１４，Ｄ２１，Ｄ３２，Ｄ３１のデータを右に３列シフトすれば図１４（ｃ）が得られる。次に、図１４（ｃ）の状態からＰＥ２が持つデータＤ３３，Ｄ２３，Ｄ１３，Ｄ４８を１行分上にシフトし、ＰＥ１が持つデータＤ２２，Ｄ１２，Ｄ４２，Ｄ３２を２行分上にシフトし、ＰＥ０が持つデータＤ１１，Ｄ４１，Ｄ３１，Ｄ２１を３行分上にシフトすれば、図１４（ｄ）が得られる。次に、図１４（ｄ）の状態で各ＰＥの１行目のデータと４行目のでデータを交換し、各ＰＥの２行目のデータと３行目のでデータを交換すれば図１４（ｅ）が得られる。
【００７５】
以上の処理を本実施例では内部メモリ４１１上の各符号語が配置されている１２８＊１２８のメモリ領域に対して行う。
【００７６】
図１５は図１２に示すデータ配列から図１３に９０度回転し、その後、１２８回のデータ転送によって各ＰＥが保有する符号語をラスタ化する処理ルーチンを示す。
【００７７】
図１５において、ステップ１５０１からステップ１５０３は先に説明した図１４（ｂ）への変換処理を行うルーチンであり、ステップ１５０３は各ＰＥのｎ行目のデータをそれぞれＰＥの番号分上方向にシフト処理する。例えば、ｎ＝１０の場合ＰＥ３は１０行目のデータを上方向に３行、即ち７行目にシフトし、同時にＰＥ３０は同ＰＥが担当する内部メモリ４１１の１０行目データを上方向に３０行、即ち１０８行目にシフトする。つまり　ステップ１５０３は各プロセッサーが内部メモリー内の相対的に同じアドレスのデータをＰＥの番号分並列に異なるシフト量で独立にデータをシフトしていることになる。従って、各ＰＥはそれぞれ１２８バイト分のシフト処理を行ってステップ１５０４に分岐する。
【００７８】
ステップ１５０４からステップ１５０６は先に説明した図１４（ｃ）への変換処理を行うルーチンである。ステップ１５０６は各ＰＥが有するｎ行目のデータをそれぞれｎ−１列分右にシフトする処理であり、ｎ＝１０の場合、各ＰＥはそれぞれ１０行目のデータを右方向に９回シフトする。その結果、ＰＥ２が有するデータはＰＥ１１の１０行目までシフトされる。ｎを１から１２７回繰り返しで図１４（ｄ）に相当する変換が終了する。各列方向のシフト処理は１列シフトする度に１ステップ必要なため、合計で１２８＊６４＝８１９２ステップの処理となる。
【００７９】
図１５のステップ１５０７からステップ１５０９は先に説明した図１４（ｄ）への変換処理を行うルーチンであり、ステップ１５０８は各ＰＥのｎ行目のデータをそれぞれ（１２７−ＰＥ番号）行分上方向にシフト処理する。例えばｎ＝１００の場合ＰＥ３は１００行目データを上方向に１２４行、即ち１０３行目にシフトし、同時にＰＥ１２０は同ＰＥが担当する内部メモリ４１１の１００行目データを上方向に７行、即ち９３行目にシフトする。つまり、ステップ１５０８は各プロセッサーが内部メモリー内の相対的に同じアドレスのデータをＰＥの番号に依存した分並列に異なるシフト量で独立にデータをシフトしていることになる。従って、各ＰＥは１２８バイトのデータに対してシフト処理を行ってステップ１５１０に分岐する。
【００８０】
ステップ１５１０からステップ１５１２は先に説明した図１４（ｅ）への変換処理を行うルーチンである。ステップ１５１２は各ＰＥが有するｎ行目のデータと１２８−ｎ行目のデータをそれぞれ入れ替える処理であり、ｎ＝１０の場合、各ＰＥはそれぞれ１０行目のデータと１１８行目のデータを入れ替える。ｎを１から６４回繰り返しで図１３に示す９０度の回転処理が終了する。
【００８１】
ステップ１５１３からステップ１５１５は図１３に示すようにＰＥ０に先頭データが揃えられた１２８組の符号語をそれぞれ１２８回のデータ転送処理を行うことによって外部のワーキングメモリー２１６上でラスター化するルーチンであり図１６（ａ）に示す様に先ずは当初ＰＥ０が保有していた６バイトのデータを含む各ＰＥの１　行目のデータを転送し、次に図１６（ｂ）に示すように、当初ＰＥ１が保有していた６バイトのデータを含む各ＰＥの２行目のデータを外部ワーキングメモリー２１６上の７バイト目から上書きする形で転送する。
【００８２】
同様にｎ＝３の時同図（ｃ）に示すように、当初ＰＥ２が保有していた４バイトのデータを含む各ＰＥの３行目のデータを連続する位置から上書きを行う。以上の処理を１２８回行うことで当初各ＰＥが保有していた不定長の符号語全てを連続した符号列として変換できる図１６（ｄ）。
【００８３】
＜実施の形態２＞
先の実施の形態では１２８組の各ＰＥが有するデータが１０バイト以下であるにも拘らず、内部メモリー４１１の中の１２８＊１２８の領域全てのデータに対して９０度回転の処理を必要としたが、図１２で示す各ＰＥが有するデータが例えば１６バイト以下であるなら、１２８組のＰＥをそれぞれ１６ＰＥを１ブロックとした８ブロックに分け、各１６組のＰＥを単位とする各ブロックで内部メモリー４１１内の１６＊１６の領域で先に説明した９０度回転処理を行えば、より高速化できる。
図１７は１６＊１６のブロック単位で９０度回転処理を行ってデータの配列を変換した様子を示す図で、当初ＰＥ０からＰＥ１５のＰＥが有していたデータは夫々先頭からＰＥ０からＰＥ１５の１行目から１６行目に配が列変換され、同様に当初ＰＥ１６−ＰＥ３１のＰＥが有していたデータはそれぞれ先頭からＰＥ１６からＰＥ３１の１行目から１６行目に配列変換される。
【００８４】
このブロック毎の回転処理は全て並列に処理できるために先の実施例による１２８＊１２８領域の回転処理が約９０００ステップに相当する処理時間を要したのに比べて約１／５０のステップ数に高速化できる。
【００８５】
尚、図１７に配列変換したデータのラスター化は、図１８に示すように、先ずはＰＥ０に先頭のバイトデータが揃ったＰＥ０からＰＥ１５までの１６ＰＥ分のデータを１６回外部のワーキングメモリー２１６に順次上書きして連続化させて転送した後ＰＥ１６に先頭のバイトデータが揃えられた当初のＰＥ１６からＰＥ３１が保有していたデータを１６回転送して行く。従って、本実施の形態では回転処理は高速化できるが、ラスター化のためのデータ転送は図１８（ａ）に示すようにＰＥ０の符号語を転送した際にＰＥ１６，ＰＥ３２…が有する符号語も同時に転送できるが、連連続した配列にならないために無効なデータとして扱われ、結果として転送回数は１２８回で先の実施の形態に等しい。
【００８６】
＜実施の形態３＞
ラスター化のためのデータ転送回数を削減して高速化が図れる実施の形態を図１９を用いて説明する。図１９は図１２で示す各ＰＥが有するデータをそれぞれ奇数ＰＥが有するデータを偶数ＰＥが有するデータに結合して連続するバイトデータ数を増やすことが特徴である。即ち、ＰＥ０は保有する６バイトのデータの後にＰＥ１が有する６バイトのデータを結合して１２バイトとし、ＰＥ２は保有する４バイトのデータにＰＥ３が有する３バイトのデータを結合して７バイトとする。この処理は全ての奇数ＰＥが有するデータを左に隣接するＰＥのデータに結合する処理であるので、並列処理が可能で高速に行える。
【００８７】
図２０は図１９に示すデータを先に説明した１６＊１６の領域での９０度回転処理を行った結果を示す。先の実施の形態に対して同じ行に連続するバイトデータ群は半分に減少するため、ラスター化のための外部ワーキングメモリーへの転送回数は６４回に削減できる。
【００８８】
尚、本実施の形態は更に４ＰＥ分をＰＥ０，ＰＥ４，ＰＥ８，ＰＥ１２に終結させれば、更に外部ワーキングメモリーへの転送回数は３２回になり、より高速化が可能である。
【００８９】
＜実施の形態４＞
本実施の形態は更に高速に各ＰＥが有する符号語データの配列変換が行える形態を説明する。本実施の形態は図１２に示す各ＰＥが保有するデータを図２１に示すように９０度回転させる。図２２は処理フローを示す。
【００９０】
図２２において、ｎは各ＰＥが有するデータの最大バイト数を計数する変数であり、本実施の形態では最大１０バイトとする。ステップ２２０１でｎ＝１としステップ２２０３に分岐し、先ず、各ＰＥが保有する１行目のデータを移動する。即ち、ＰＥ０はデータ１、ＰＥ１はデータ７、ＰＥ２はデータ１３を対象にそれぞれｎ−１（０）回右にシフトし、ｎ−１−（ＰＥｎｏ％１６）行分上にシフトする。
ここで、ＰＥｎｏ％１６は各ＰＥの番号を１６で割った余り値とする。即ち、各ＰＥ０はデータ１はそのままの位置に、ＰＥ１はデータ７を上に−１行（下に１行）移動させ、ＰＥ２はデータ１３を２行下に移動させる。因みに、ＰＥ１６，ＰＥ３２，ＰＥ４８…の１行目データはそのままの位置で各ＰＥ１−ＰＥ１５，ＰＥ１７−ＰＥ３１，ＰＥ３３−ＰＥ４７…はこれらＰＥ０，ＰＥ１６，ＰＥ３２，ＰＥ４８…の位置から順次１行ずつ列方向にずれるので４５度の傾きを有するライン上に夫々の先頭のバイトデータが移動される。
【００９１】
次に、ｎが２となり、再びステップ２２０３では各ＰＥの２行目のデータを移動する。つまり、ＰＥ０はデータ２を右に１上に１行シフトし、ＰＥ１はデータ８を右に１列シフトし、ＰＥ２はデータ１４を右に１列下に１行シフトする。
これらのシフト処理はそれぞれのＰＥの位置を基点に相対的にＰＥ配列方向へは同じ位置へのシフトのため、全てのＰＥが並列に同時に動作できる。従って、以上の処理を最大データ数１０までｎを増加させて１２８個のＰＥが有する最大１０バイトのデータ全てを同じ行に連続するデータ列として配列変換が終了する。この処理は６３ステップの処理であり、別実施例１　に比べて約３倍高速な処理と言える。
【００９２】
尚、以上の説明では理解し易いために、図１２から図２１への変換等は略同じ位置に移動するように説明したが、実際は図２１へのデータ移動はそれぞれのデータが異動前のデータに上書きしないために全体に１０行以上離れたアドレスへの移動である。
【００９３】
又、図２１から外部ワーキングメモリー２１６へのデータ転送は本実施例同様に当初有していた各ＰＥのデータ単位に１２８回に分割した処理を必要とするが、実施の形態３で説明した様に複数のＰＥが有するデータを結合した後、本実施の形態を適用すれば、更にラスター化のためのデータ転送回数は削減できる。
【００９４】
尚、本発明は各ＰＥが並列にＪＰＥＧ圧縮処理で生成した符号語をラスター状に配列変換する実施例を示したが、ＪＰＥＧ圧縮処理に限定されることなく、一般的にＳＩＭＤ型の各ＰＥが処理して得た複数バイトのデータをラスター配列する場合全てにおいて適用できる。
【００９５】
【発明の効果】
以上の説明で明らかなように、本発明によれば、各ＰＥが有する連続した複数バイトのデータを各ＰＥを並列動作させて、連続する各ＰＥの相対的に同じ位置（同じ行）に配列変換し、この変換したデータを連続した複数ＰＥを並列動作させて外部メモリーへ転送することで、連続したラスターデータとして配列変換を高速に行うことができるという効果が得られる。
【図面の簡単な説明】
【図１】本発明に係る画像処理装置の構成を示すブロック図である。
【図２】本発明に係る画像処理装置のハートウエアの構成の一例を示すブロック図である。
【図３】本発明に係る画像処理装置の画像処理プロセッサー部の構成を説明するための図である。
【図４】本発明に係る画像処理装置の演算処理ユニットの構成を示すブロック図である。
【図５】ＪＰＥＧ圧縮する画像ブロックの配列を示す図である。
【図６】８＊８画素の１画像信号ブロックを示す図である。
【図７】各ＰＥが担当するブロックの画像信号の配列を示す図である。
【図８】ＪＰＥＧ全体の処理を示すフローチャートである。
【図９】各ＰＥが保有する符号長と符号語を示す図である。
【図１０】バイトデータへの再配列を示すフローチャートである。
【図１１】ビットシフトした符号語バッファーを示す図である。
【図１２】各ＰＥが有するデータを示す図である。
【図１３】１２８＊１２８回転によるデータ配列変換を示す図である。
【図１４】９０度回転処理を示す図である。
【図１５】１２８＊１２８回転によるデータのラスター化を示すフローチャートである。
【図１６】１２８＊１２８回転によるデータのラスター化を示す図である。
【図１７】１６＊１６回転によるデータ配列変換を示す図である。
【図１８】１６＊１６回転によるデータのラスター化を示す図である。
【図１９】奇数ＰＥのデータの偶数ＰＥのデータに結合を示す図である。
【図２０】１６＊１６回転によるデータ配列変換を示す図である。
【図２１】各ＰＥ位置から横倒しによるデータ配列変換を示す図である。
【図２２】横倒し回転処理手順を示すフローチャートである。
【符号の説明】
１００　　　画像データ制御ユニット
１０１　　　画像データ入力ユニット
１０２　　　画像メモリー制御ユニット
１０３　　　画像処理ユニット
１０４　　　画像書込ユニット
２０１　　　読取ユニット
２０２　　　ＰＤＬ処理ユニット
２０３　　　画像データ制御部
２０４　　　画像処理プロセッサー
２０５　　　作像ユニット
２０６　　　メモリ制御部
２０７　　　メモリモジュール
２０８　　　制御用データバス
２０９　　　システムコントローラー
２１０　　　ＲＯＭ
２１１　　　ＲＡＭ
２１２　　　操作パネル
２１３　　　ネットワーク
２１４　　　ネットワーク制御部
２１５　　　パーソナルコンピュータ
２１６　　　ワーキングメモリ
【図１】
2004070725.tif 000003
【図２】
2004070725.tif 000004
【図３】
2004070725.tif 000005
【図４】
2004070725.tif 000006
【図５】
2004070725.tif 000007
【図６】
2004070725.tif 000008
【図７】
2004070725.tif 000009
【図８】
2004070725.tif 000010
【図９】
2004070725.tif 000011
【図１０】
2004070725.tif 000012
【図１１】
2004070725.tif 000013
【図１２】
2004070725.tif 000014
【図１３】
2004070725.tif 000015
【図１４】
2004070725.tif 000016
【図１５】
2004070725.tif 000017
【図１６】
2004070725.tif 000018
【図１７】
2004070725.tif 000019
【図１８】
2004070725.tif 000020
【図１９】
2004070725.tif 000021
【図２０】
2004070725.tif 000022
【図２１】
2004070725.tif 000023
【図２２】
2004070725.tif 000024