(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-13
(45)【発行日】2024-12-23
(54)【発明の名称】装置、装置の制御方法、およびプログラム
(51)【国際特許分類】
H04N 1/40 20060101AFI20241216BHJP
G06T 1/00 20060101ALI20241216BHJP
【FI】
H04N1/40
G06T1/00 510
(21)【出願番号】P 2020156377
(22)【出願日】2020-09-17
【審査請求日】2023-09-14
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110001243
【氏名又は名称】弁理士法人谷・阿部特許事務所
(72)【発明者】
【氏名】鈴木 高志
【審査官】鈴木 肇
(56)【参考文献】
【文献】特開2015-115837(JP,A)
【文献】特開2018-196156(JP,A)
【文献】特開2016-068460(JP,A)
【文献】特開2004-310746(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 1/00-1/40
G06T 3/00-5/50
H04N 1/40-1/409
(57)【特許請求の範囲】
【請求項1】
画像データとして、モノクロ
画像データまたは
カラー画像データを格納する記憶領域
が設けられる中間バッファ制御部と、
前記記憶領域に関するレジスタ設定値を参照して、前記画像データのうち最大でN個(Nは整数)の画素データに対する画像処理を同時に実行することが可能な画像処理手段
と、
を有する装置であって、
前記画像データがモノクロ画像データの場合、該画像データにおける画素データに対する並列処理を行う際の並列数として、仮想的な色数を決定する決定手段と、
前記レジスタ設定値を、前記仮想的な色数に基づいて算出する算出手段と、
前記画像データの領域を複数のバンド領域に分割する分割手段と、
を更に有し、
前記レジスタ設定値には、前記画像処理手段に入力される入力画像データを構成する複数の入力バンドのうち、所定の入力バンドの先頭アドレスと、前記画像処理手段から出力される出力画像データを構成する複数の出力バンドのうち、所定の出力バンドの先頭アドレスと、前記複数の入力バンドそれぞれに関する第1オフセット量と、が含まれ、
前記算出手段は、以下の式(1)に従って、前記第1オフセット量を算出する、
ことを特徴とする装置。
【数1】
【請求項2】
前記画像データがモノクロ画像データの場合、前記決定手段は、前記仮想的な色数を、以下の
式(2)を満たすように決定する、
ことを特徴とする請求項1に記載の装置。
【数2】
【請求項3】
前記画像データがモノクロ画像データの場合、前記決定手段は、前記仮想的な色数を、以下の
式(3)を満たすように決定する、
ことを特徴とする請求項1または2に記載の装置。
【数3】
尚、Mは、
前記カラー画像データにおける1画素あたりの色数としてのチャンネル数を示す。
【請求項4】
前記画像データがモノクロ画像データの場合、前記決定手段は、前記仮想的な色数がMの整数倍となるように決定する、
ことを特徴とする請求項3に記載の装置。
【請求項5】
前記画像データがカラー画像データの場合、前記決定手段は、
前記並列数として1を決定する、
ことを特徴とする請求項1乃至4の何れか1項に記載の装置。
【請求項6】
前記所定の入力バンドは、前記画像データがカラー画像データの場合、先頭から1番目の入力バンドである一方、前記画像データがモノクロ画像データの場合、先頭から前記仮想的な色数に等しい数の入力バンドであり、
前記所定の出力バンドは、前記画像データがカラー画像データの場合、先頭から1番目の出力バンドである一方、前記画像データがモノクロ画像データの場合、先頭から前記仮想的な色数に等しい数の出力バンドである、
ことを特徴とする
請求項5に記載の装置。
【請求項7】
前記レジスタ設定値には、前記出力バンドに関する第2オフセット量が含まれ、
前記算出手段は、以下の式(4)に従って、前記第2オフセット量を算出する、
ことを特徴とする
請求項6に記載の装置。
【数4】
【請求項8】
サイズが異なる複数の画像データを出力し、
前記算出手段は、前記出力する複数の画像データのそれぞれに対して、前記レジスタ設定値を算出する、
ことを特徴とする
請求項1乃至7の何れか1項に記載の装置。
【請求項9】
前記仮想的な色数を、外部の情報機器に通知する通知手段を更に有する、
ことを特徴とする
請求項1乃至8の何れか1項に記載の装置。
【請求項10】
モノクロ画像を1画素単位で処理するためのレジスタ設定値の算出方法と、モノクロ画像を複数の画素単位で並列処理するためのレジスタ設定値の算出方法と、カラー画像を並列処理するためのレジスタ設定値の算出方法とが同一である、
ことを特徴とする
請求項1乃至9の何れか1項に記載の装置。
【請求項11】
前記算出手段により算出された前記レジスタ設定値をレジスタに設定する設定手段を更に有する、
ことを特徴とする
請求項1乃至10の何れか1項に記載の装置。
【請求項12】
前記画像処理手段は、それぞれが同じ動作をするN個の画像処理回路を有する、
ことを特徴とする
請求項1乃至11の何れか1項に記載の装置。
【請求項13】
画像データとして、モノクロ画像データまたはカラー画像データを格納する記憶領域が設けられる中間バッファ制御部と、
前記記憶領域に関するレジスタ設定値を参照して、前記画像データのうち最大でN個(Nは整数)の画素データに対する画像処理を同時に実行することが可能な画像処理手段と、
を有する装置であって、
前記画像データがモノクロ画像データの場合、該画像データにおける画素データに対する並列処理を行う際の並列数として、仮想的な色数を決定する決定手段と、
前記レジスタ設定値を、前記仮想的な色数に基づいて算出する算出手段と、
前記画像データの領域を複数のバンド領域に分割する分割手段と、
を更に有し、
前記レジスタ設定値には、前記画像処理手段に入力される入力画像データを構成する複数の入力バンドのうち、所定の入力バンドの先頭アドレスと、前記画像処理手段から出力される出力画像データを構成する複数の出力バンドのうち、所定の出力バンドの先頭アドレスと、前記複数の出力バンドそれぞれに関する第2オフセット量と、が含まれ、
前記算出手段は、以下の式(5)に従って、前記第2オフセット量を算出する、
ことを特徴とする装置。
【数5】
【請求項14】
画像データとして、モノクロ画像データまたはカラー画像データを格納する記憶領域が設けられる中間バッファ制御部と、
前記記憶領域に関するレジスタ設定値を参照して、前記画像データのうち最大でN個(Nは整数)の画素データに対する画像処理を同時に実行することが可能な画像処理手段と、
を有する装置であって、
前記画像データがモノクロ画像データの場合、該画像データにおける画素データに対する並列処理を行う際の並列数として、仮想的な色数を決定する決定手段と、
前記レジスタ設定値を、前記仮想的な色数に基づいて算出する算出手段と、
前記画像データの領域を複数のバンド領域に分割する分割手段と、
を更に有し、
前記レジスタ設定値には、前記画像処理手段に入力される入力画像データを構成する複数の入力バンドのうち、所定の入力バンドの先頭アドレスと、前記画像処理手段から出力される出力画像データを構成する複数の出力バンドのうち、所定の出力バンドの先頭アドレスと、が含まれ、
サイズが異なる複数の画像データを出力し、
前記算出手段は、前記出力する複数の画像データのそれぞれに対して、前記レジスタ設定値を算出する、
ことを特徴とする装置。
【請求項15】
画像データとして、モノクロ画像データまたはカラー画像データを格納する記憶領域が設けられる中間バッファ制御部と、
前記記憶領域に関するレジスタ設定値を参照して、前記画像データのうち最大でN個(Nは整数)の画素データに対する画像処理を同時に実行することが可能な画像処理手段と、
を有する装置であって、
前記画像データがモノクロ画像データの場合、該画像データにおける画素データに対する並列処理を行う際の並列数として、仮想的な色数を決定する決定手段と、
前記レジスタ設定値を、前記仮想的な色数に基づいて算出する算出手段と、
前記画像データの領域を複数のバンド領域に分割する分割手段と、
を更に有し、
前記レジスタ設定値には、前記画像処理手段に入力される入力画像データを構成する複数の入力バンドのうち、所定の入力バンドの先頭アドレスと、前記画像処理手段から出力される出力画像データを構成する複数の出力バンドのうち、所定の出力バンドの先頭アドレスと、が含まれ、
前記仮想的な色数を、外部の情報機器に通知する通知手段を更に有する、
ことを特徴とする装置。
【請求項16】
画像データとして、モノクロ画像データまたはカラー画像データを格納する記憶領域が設けられる中間バッファ制御部と、
前記記憶領域に関するレジスタ設定値を参照して、前記画像データのうち最大でN個(Nは整数)の画素データに対する画像処理を同時に実行することが可能な画像処理手段と、
を有する装置であって、
前記画像データがモノクロ画像データの場合、該画像データにおける画素データに対する並列処理を行う際の並列数として、仮想的な色数を決定する決定手段と、
前記レジスタ設定値を、前記仮想的な色数に基づいて算出する算出手段と、
前記画像データの領域を複数のバンド領域に分割する分割手段と、
を更に有し、
前記レジスタ設定値には、前記画像処理手段に入力される入力画像データを構成する複数の入力バンドのうち、所定の入力バンドの先頭アドレスと、前記画像処理手段から出力される出力画像データを構成する複数の出力バンドのうち、所定の出力バンドの先頭アドレスと、が含まれ、
モノクロ画像を1画素単位で処理するためのレジスタ設定値の算出方法と、モノクロ画像を複数の画素単位で並列処理するためのレジスタ設定値の算出方法と、カラー画像を並列処理するためのレジスタ設定値の算出方法とが同一である、
ことを特徴とする装置。
【請求項17】
画像データとして、モノクロ
画像データまたは
カラー画像データを格納する記憶領域
が設けられる中間バッファ制御部と、
前記記憶領域に関するレジスタ設定値を参照して、前記画像データのうち最大でN個(Nは整数)の画素データに対する画像処理を同時に実行することが可能な画像処理手段
と、
を有する装置の制御方法であって、
前記画像データがモノクロ画像データの場合、該画像データにおける画素データに対する並列処理を行う際の並列数として、仮想的な色数を決定するステップと、
前記レジスタ設定値を、前記仮想的な色数に基づいて算出するステップと、
前記画像データの領域を複数のバンド領域に分割する分割するステップと、
を
有し、
前記レジスタ設定値には、前記画像処理手段に入力される入力画像データを構成する複数の入力バンドのうち、所定の入力バンドの先頭アドレスと、前記画像処理手段から出力される出力画像データを構成する複数の出力バンドのうち、所定の出力バンドの先頭アドレスと、
前記複数の入力バンドそれぞれに関する第1オフセット量と、が含まれ、
前記算出するステップにおいて、以下の式(6)に従って、前記第1オフセット量が算出されることを特徴とする方法。
【数6】
【請求項18】
コンピュータに
請求項17に記載の方法を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、装置、装置の制御方法、およびプログラムに関する。
【背景技術】
【0002】
一般的に、スキャナ等の読取り機器、プリンタ等の印刷機器、ディスプレイ等の表示機器の多くは、カラー画像およびカラー原稿(例えばRGBカラー画像、CMYKカラー画像などの複数色を有する画像)に対応可能である。このため、このような機器の多くに搭載される画像処理装置は、基本的にカラー処理を行う装置として構成されることが多い。画像処理装置は、例えば、RGBカラー画像に対しては3色を、CMYKカラー画像に対しては4色を、処理する画像処理回路を有する。一般的な画像処理回路は、その回路を1つの処理のみでなく他の処理にも使用できるように、例えば、フィルタ処理で使用するフィルタ係数はレジスタ設定などで任意に設定変更できるように設計されることが多い。そのため、各色に対応するフィルタ回路は同一回路でありうる。画像処理装置は、例えば、RGBカラー画像に対しては3基、CMYKカラー画像に対しては4基のように、対応する色の数だけフィルタ回路を並列に備えることができる。また、機器が、複数の色のそれぞれに対応する複数の画像処理装置を有してよい。例えば、画像処理装置が1色分のフィルタ回路を備えるのみである場合であっても、対応する色の数だけ画像処理装置を有することにより、機器全体ではカラー処理に対応することができる。このようにカラー処理を基本とする処理装置において、色数に応じた並列化の処理単位(粒度)は、小さくは回路レベルから、大きくは処理装置等のシステムレベルに至るまで多岐に渡る。
【0003】
このようなカラー処理を基本とした処理装置に、モノクロ(単色)画像データが入力される場合、上述のように並列化された処理単位(粒度)を効率的に利用することが考えられる。処理単位を効率的に利用することにより、カラー画像の処理速度に比べて単色画像の処理速度を向上できる。
【0004】
特許文献1には、入力画像データがモノクロ画像データの場合、矩形画像入力部がそのモノクロ画像データの領域を所定サイズの矩形領域に分割して、疑似的に複数の座標の異なる画素を矩形画像処理部に入力して同時に画像処理を行うことが記載されている。
【0005】
特許文献1の画像処理装置は、CPU経由で入出力画像データを読み書きするためのDMAコントローラ(DMAC)を有し、モノクロの入力画像を所定のブロックに分割しておき、複数の異なる入力ブロックをカラー画像と同様の制御方法により同時に入力する。その上で、これら複数の入力ブロックに対して画像処理を並列に行い、画素データを複数の異なる出力ブロックに出力することにより、性能の高速化を実現している。
【0006】
また、特許文献2には、画像処理装置が複数の画像処理回路を有し、複数の色成分を格納することができる複数のフィールドに単色画像の複数の部分画像を格納し、該複数の画像処理回路が複数の部分画像に対して同時に画像処理を行うことが記載されている。
【先行技術文献】
【特許文献】
【0007】
【文献】特開2007-221343号公報
【文献】特開2015-115837号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、これらの特許文献には、DMACに対してCPU経由でモノクロ画像をカラー画像と同様の制御方法により並列処理するためのレジスタ設定値の算出手法については記載されていない。また、カラー画像を複数の処理単位で並列処理するためのレジスタ設定値の算出手法、カラー画像を1並列で処理するためのレジスタ設定値の算出手法、モノクロ画像を1並列で処理するためのレジスタ設定値の算出手法についても記載されていない。
【0009】
そこで本発明の一実施形態は、モノクロ画像またはカラー画像に対する画像処理を実行する際、単一画素を1並列で処理するためのレジスタ設定値と、複数画素を並列処理するためのレジスタ設定値とを、同一手法で算出できるようにすることを目的とする。
【課題を解決するための手段】
【0010】
本発明の一実施形態は、画像データとして、モノクロ画像データまたはカラー画像データを格納する記憶領域が設けられる中間バッファ制御部と、前記記憶領域に関するレジスタ設定値を参照して、前記画像データのうち最大でN個(Nは整数)の画素データに対する画像処理を同時に実行することが可能な画像処理手段と、を有する装置であって、前記画像データがモノクロ画像データの場合、該画像データにおける画素データに対する並列処理を行う際の並列数として、仮想的な色数を決定する決定手段と、前記レジスタ設定値を、前記仮想的な色数に基づいて算出する算出手段と、前記画像データの領域を複数のバンド領域に分割する分割手段と、を更に有し、前記レジスタ設定値には、前記画像処理手段に入力される入力画像データを構成する複数の入力バンドのうち、所定の入力バンドの先頭アドレスと、前記画像処理手段から出力される出力画像データを構成する複数の出力バンドのうち、所定の出力バンドの先頭アドレスと、前記複数の入力バンドそれぞれに関する第1オフセット量と、が含まれ、前記算出手段は、次の式、すなわち第1オフセット量=入力バンドのバンドサイズ×仮想的な色数に従って、前記第1オフセット量を算出する、ことを特徴とする装置である。
【発明の効果】
【0011】
本発明の一実施形態によれば、モノクロ画像またはカラー画像に対する画像処理を実行する際、単一画素を1並列で処理するためのレジスタ設定値と、複数画素を並列処理するためのレジスタ設定値とを、同一手法で算出できる。よって、ソフトウェアがレジスタ設定を効率的に行うことが可能になる。
【図面の簡単な説明】
【0012】
【
図6】モノクロ画像を1並列で処理する場合の画像処理を説明する図
【
図7】モノクロ画像を3並列で処理する場合の画像処理を説明する図
【
図8】モノクロ画像を3並列で処理して、サイズの異なる2つの画像を出力する場合の画像処理を説明する図
【
図10】レジスタ設定値を計算する処理のフローチャート
【
図12】情報機器と、第1~第3記録装置とによる一連の処理のシーケンス図
【発明を実施するための形態】
【0013】
以下、図面を参照して、本発明の実施形態を詳細に説明する。
【0014】
[第1の実施形態]
<画像処理装置の構成>
図1は、本実施形態における画像処理装置の全体構成を示すブロック図である。画像処理装置は、CPU100と、RAM101と、ROM102と、画像処理部103と、I/F部104とを有する。これらの各構成要素は、システムバス105を介して接続されている。
【0015】
CPU100は、画像処理装置全体を制御する中央演算ユニットであり、各種の制御プログラムを実行する。ROM102には、制御ブログラムや固定データが格納される。RAM101は、データの一時保存やプログラムのロードに利用される。CPU100は、RAM101にロードされた制御プログラムを実行することで、I/F部104を通して受信した入力画像データをRAM101に一時的に保存し、該入力画像データに対する画像処理部103による画像処理を実行する。
【0016】
画像処理部103は、RAM101に配置された入力画像データに対する画像処理を行い、出力画像データを得る。この出力画像データは、RAM101に一時保存され、I/F部104を通して外部の情報機器106に送信される。
【0017】
<画像処理部の構成>
図2は、画像処理部103の構成を示すブロック図である。画像処理部103は、入力画像データを入力し、出力画像データを出力する入出力制御部200と、入出力制御部200から入力された画像処理コマンド(入力)単位で画像処理を行う画像処理実行部201とを有する。
【0018】
まず、入出力制御部200の構成について説明する。入出力制御部200は、画像データ入力部202と、中間バッファ制御部203と、レジスタブロック219と、コマンド生成部204と、コマンド送信部205と、コマンド受信部216と、コマンド解析部217と、画像データ出力部218とを有する。
【0019】
画像データ入力部202は、レジスタブロック219から複数のレジスタ設定値を読み込み、そのレジスタ設定値に基づいてRAM101から所定のブロック単位で入力画像データを読み出し、中間バッファ制御部203の記憶領域に格納する。続いて、画像データ入力部202は、中間バッファ制御部203の記憶領域に格納された入力画像データを1画素単位で読み出し、該読み出した入力画像データをコマンド生成部204に出力する。コマンド生成部204は、1画素単位の入力画像データを含む画像処理コマンド(入力)を生成し、該生成した画像処理コマンド(入力)をコマンド送信部205に出力する。コマンド送信部205は、画像処理コマンド(入力)を画像処理実行部201に出力する。
【0020】
コマンド受信部216は、画像処理実行部201から画像処理コマンド(出力)を受信し、該受信した画像処理コマンド(出力)をコマンド解析部217に出力する。コマンド解析部217は、画像処理コマンド(出力)から1画素単位の出力画像データを取り出し、該取り出した出力画像データを画像データ出力部218に出力する。画像データ出力部218は、中間バッファ制御部203の記憶領域に1画素単位の出力画像データを格納する。そして、画像データ出力部218は、レジスタブロック219から複数のレジスタ設定値を読み込み、そのレジスタ設定値に基づいて中間バッファ制御部203の記憶領域に格納された出力画像データを所定のブロック単位で読み出す。そして、画像データ出力部218は、読み出した出力画像データをRAM101に出力する。
【0021】
次に、画像処理実行部201の構成について説明する。画像処理実行部201は、画像処理回路(1)209から画像処理回路(P)215のP個の画像処理回路と、インターコネクト206とを有する。P個の画像処理回路のそれぞれとインターコネクト206とは、入力ポート207、210、213、および、出力ポート208、211、214等のポートを介して互いに接続される。画像処理回路は、例えば、入力色補正処理、色空間変換、濃度補正処理、中間調処理、空間フィルタ処理、解像度変換、トリミング処理、端部拡張処理、IP変換、クロマ・アップサンプリングの1つ以上を含む処理を行う。これらの画像処理回路は、パイプライン回路等のハードウェアで実現されてもよいし、プロセッサとプログラム(ソフトウェア)等で実現されてもよい。画像処理回路は、例えば、入力ポート207、210、213等を介して画像処理コマンド(入力)を受け取り、画像処理を施した後に、出力ポート208、211、214を介して画像処理後の画像処理コマンド(出力)を出力する。
【0022】
インターコネクト206は、クロスバーやリングバス等の接続機能で実現されており、入力ポートと出力ポートの接続先を任意に切り替えることができる。従って、CPU100がこれらポートの接続先を設定することで、インターコネクト206は、例えばP個の画像処理回路の実行順序を変更し、または一部の処理をバイパスすることができる。このように、画像処理実行部201は、アプリケーションに応じて、各種の処理を取捨選択して組み合わせることにより、所望の画像処理を実現することができる。
【0023】
<画像処理コマンドの構成>
図3は、画像処理コマンドの構成を示す図である。
図3(a)の符号300に示すように画像処理コマンドは、ヘッダとデータとを含んで構成され、データ領域には点順次形式の画素値が格納される。本実施形態における画像処理装置は、この画像処理コマンドを利用することで、点順次形式の画像データを1画素単位で同期しながら、画像処理実行部201の画像処理回路(1)209~画像処理回路(P)215をパイプライン的に動作させ、画像処理を行う。
【0024】
また、
図3(b)に示すように、画像処理コマンドは、カラーの点順次形式の1画素分の画素データを格納する形式に対応可能である。
図3(b)の例では、ヘッダの内容を切り替えることで、符号301に示すR(Red)、G(Green)、B(Blue)形式や符号302に示すC(Cyan)、M(Magenta)、Y(Yellow)、K(Black)形式に対応できる。尚、カラーの点順次形式の画素データを格納する画像処理コマンドは、5個以上のデータ領域を含んでもよいし、複数の画像処理コマンドから構成されてもよい。
【0025】
また、
図3(c)に示すように、画像処理コマンドは、モノクロ(単色)の1画素分の画素データを格納する形式に対応可能である。
図3(c)の例では、ヘッダの内容を切り替えることで、符号303に示すように、3個の画素データ領域のうち1個の画素データ領域にK(Black)の画素データを格納する形式に対応することができる。また、符号304に示すように、4個の画素データ領域のうち1個の画素データ領域にK(Black)の画素データを格納する形式に対応することもできる。尚、モノクロの1画素の画素データを格納する画像処理コマンドは、5個以上のデータ領域を含んでもよいし、複数の画像処理コマンドから構成されてもよい。
【0026】
また、
図3(d)に示すように、画像処理コマンドは、モノクロの複数画素の画素データを格納する形式に対応可能である。
図3(d)の例では、ヘッダの内容を切り替えることで、符号305に示すように、3個の画素データ領域のそれぞれにK(Black)の画素データを格納する形式に対応することができる。また、符号306に示すように、4個の画素データ領域のそれぞれにK(Black)の画素データを格納する形式に対応することもできる。尚、モノクロの複数画素の画素データを格納する画像処理コマンドは、5個以上のデータ領域を含んでもよいし、複数の画像処理コマンドから構成されてもよい。
【0027】
<画像データの領域分割>
次に、以下で説明する各実施形態において用いられる、画像データの領域分割について説明する。本実施形態では、領域分割手法の1つであるバンド処理を用いるものとする。以下、バンド処理について
図4を用いて説明する。
【0028】
バンド処理では、例えば、
図4(a)~(g)に示すように、1枚の画像データ400を、高さBdh、長さBdlの領域401~406に分割する。領域401~406それぞれの副走査方向における位置は、異なる。画像処理実行部201にて、この分割された領域毎に各種の画像処理を逐次的に実行する。
【0029】
以下では、この分割された部分画像の領域401~406を「バンド領域」と呼び、バンド領域に含まれるデータが展開される記憶領域を「バンドメモリ」と呼び、画像データを分割する処理を「バンド分割」と呼ぶ。バンドメモリはRAM101に確保されてもよいし、システム上の適当な記憶装置内の領域として確保されてもよい。尚、ここでは、説明を簡潔にするために、バンドメモリがRAM101に確保されるものとして説明する。また、
図4(g)に示すように、画像データの座標系(主走査方向-副走査方向)を長さ方向、高さ方向という新たな座標系(バンド領域座標系)によって定義し、バンド領域を長さ×高さで表現する。バンド領域の長さBdlは、画像データの主走査方向の長さとし、バンド領域の高さBdhは、画像データの副走査方向の長さとする。
【0030】
バンド処理では、
図4におけるバンド領域401~406がRAM101上のバンドメモリに展開され、画像処理実行部201にてバンド領域401の画像処理が行われる。バンド領域401の画像処理が完了すると、次にバンド領域402の画像処理が行われ、バンド領域406まで画像処理が行われる。
【0031】
尚、バンド処理では、各バンド領域間で隙間なく空間フィルタ処理などの局所(近傍)画像処理を行なうため、
図4(h)~(n)に示すように、各バンド領域が、それぞれ隣接する領域との境界で一部分が互いに重なり合うように構成されてもよい。この場合、例えば、各領域の高さの方向に1画素ずつ画素を走査することとして、局所(近傍)画像処理に必要な処理画素を保持する遅延メモリの容量が、各領域の高さで規定される。これにより、局所(近傍)画像処理で必要となる遅延メモリの省メモリ化を実現できる。
【0032】
<カラー画像に対する画像処理>
以下、RGB3チャンネルの入力画像データに対する画像処理の例について、
図5を用いて説明する。
【0033】
画像処理部103に入力する画像は、RGB点順次のカラー画像である。入力画像501は、符号500に示す入力バンド領域の長さBdl_in、高さBdh_inの大きさの3つの連続した入力バンド領域A1、A2、A3から構成される。入力バンド領域のそれぞれが格納されるバンドメモリの先頭アドレスは、C1、C2、C3である。入力画像のオフセット量502は、アドレスC1からアドレスC2、アドレスC2からアドレスC3までの同一のオフセット量(バイト数)である。画像処理部103から出力する画像は、RGB点順次のカラー画像である。出力画像504は、符号503に示す出力バンド領域の長さBdl_out1、高さBdh_out1の大きさの3つの連続した出力バンド領域B1、B2、B3から構成される。出力バンド領域のそれぞれが格納されるバンドメモリの先頭アドレスは、D1、D2、D3である。出力画像504におけるオフセット量505は、アドレスD1からアドレスD2、アドレスD2からアドレスD3までの同一のオフセット量(バイト数)である。
【0034】
ここで、入出力制御部200は、レジスタブロック219に以下の4個のレジスタを備える。
・入力アドレスレジスタ:入力画像501の先頭アドレスC1
・入力オフセットレジスタ:入力画像501の入力バンド領域間のオフセット量502
・出力アドレスレジスタ:出力画像504の先頭アドレスD1
・出力オフセットレジスタ:出力画像504の出力バンド領域間のオフセット量505
【0035】
これら4個のレジスタは、CPU100によって実現されるソフトウェアモジュールがレジスタブロック219にレジスタ設定値を設定する構成となっている。入出力制御部200内の画像処理コマンドのフォーマットは、ヘッダと、3個のデータ領域P0、P1、P2とから構成され、画像処理コマンドのフォーマット301(
図3(b)参照)に該当する。コマンド生成部204で生成する画像処理コマンド(入力)と、コマンド解析部217で解析する画像処理コマンド(出力)とは、画像処理コマンド301のフォーマットに基づいて処理する。
【0036】
次に、画像処理部103における処理について説明する。画像データ入力部202は、入力バンド領域A1から入力画像データを32バイト単位で入力バンド領域のオフセット量502(バイト数)読み込み、中間バッファ制御部203の記憶領域に書き込む。さらに、画像データ入力部202は、中間バッファ制御部203の記憶領域からR、G、Bそれぞれ1画素分のデータ16bitを読み込み、該読みこんだ1画素分のデータをコマンド生成部204に出力する。その後、コマンド生成部204は、1画素分のデータを画像処理コマンド301(入力)のデータ領域P0、P1、P2に格納することで、画像処理コマンド301(入力)を生成し、該生成した画像処理コマンド301(入力)をコマンド送信部205に出力する。コマンド送信部205は、画像処理コマンド301(入力)を画像処理実行部201に出力する。画像処理実行部201が画像処理コマンド301(入力)に格納された画素データに基づく画像処理を完了すると、コマンド受信部216は、画像処理コマンド301(出力)を受信する。コマンド受信部216は、受信した画像処理コマンド301(出力)をコマンド解析部217に出力する。コマンド解析部217は、画像処理コマンド301(出力)のデータ領域P0、P1、P2に格納されたR、G、Bの画素データを取り出し、該取り出した画素データを画像データ出力部218に出力する。画像データ出力部218は、そのR、G、Bの画素データを中間バッファ制御部203の記憶領域に書き込む。さらに、画像データ出力部218は、中間バッファ制御部203の記憶領域からRGB点順次の出力画像データを32バイト単位で読み込み、出力画像504のうち1番目の出力バンド領域B1を構成する出力画像データとして、出力バンドメモリに書き込む。
【0037】
以上の処理フローに基づき、入出力制御部200は、入力画像データのうちオフセット量502(バイト数)の入力バンド領域A1を読み込む。続いて、画像処理実行部201は、画像処理を行い、画像データ出力部218は、出力バンドメモリ(先頭アドレスD1)にオフセット量505(バイト数)の出力画像データを書き込む。
【0038】
その次に、入力画像501の2番目の入力バンド領域A2の画像処理を行う。具体的には、画像データ入力部202は、レジスタブロック219から入力アドレスレジスタの値(入力画像501の先頭アドレスC1)と、入力オフセットレジスタの値(入力画像501におけるオフセット量502(バイト数))とを取得する。その上で、画像データ入力部202は、入力アドレスレジスタの値に入力オフセットレジスタの値を加算することで、2番目の入力バンドメモリの先頭アドレスC2を算出し、内部カウンタに保持する。同じく、画像データ出力部218は、レジスタブロック219から出力アドレスレジスタの値(出力画像504の先頭アドレスD1)と、出力オフセットレジスタの値(出力画像504におけるオフセット量505(バイト数))とを取得する。その上で、画像データ出力部218は、出力アドレスレジスタの値に出力オフセットレジスタの値を加算することで、2番目の出力バンドメモリの先頭アドレスD2を算出し、内部カウンタに保持する。画像データ入力部202は、入力画像データのうちオフセット量502(バイト数)の入力バンド領域A2を読み込み、画像処理実行部201が画像処理を行う。その後、画像データ出力部218は、オフセット量505(バイト数)の出力バンド領域B2を出力バンドメモリに書き込む。
【0039】
その次に、入力画像501の3番目の入力バンド領域A3の画像処理を行う。具体的には、画像データ入力部202は、内部カウンタに保持された2番目の入力バンドメモリの先頭アドレスC2にオフセット量502(バイト数)を加算することで、3番目の入力バンドメモリの先頭アドレスC3を算出し、内部カウンタを更新する。同じく、画像データ出力部218は、内部カウンタに保持された2番目の出力バンド領域の先頭アドレスD2にオフセット量505(バイト数)を加算することで、3番目の出力バンドメモリの先頭アドレスD3を算出し、内部カウンタを更新する。画像データ入力部202は、入力画像データのうちオフセット量502(バイト数)の入力バンド領域A3を読み込み、画像処理実行部201が画像処理を行う。その後、画像データ出力部218は、オフセット量505(バイト数)の出力バンド領域B3を出力バンドメモリに書き込む。
【0040】
次に、
図5のRGB点順次の入力画像に対する画像処理において、CPU100によって実現されるソフトウェアモジュールが、画像処理部103を駆動させるために必要なレジスタ設定値を算出する処理について、
図9および
図10を用いて説明する。
【0041】
まず、仮想的色数を決定するフローについて、
図9を用いて説明する。ここで、「仮想的色数」とは、画像処理部103でモノクロ画像データを処理する際に画像処理コマンド301(出力)のデータ領域を複数利用して内部的に並列処理する色数(並列数)のことである。尚、カラー画像データを処理する際には、画像処理コマンド301(出力)のデータ領域に並列処理するための十分な空き領域がないため、仮想的色数は1に固定される。尚、以降では、一連の処理のける各ステップを「S~」と表記する。
【0042】
S900では、CPU100は、入力画像がモノクロ画像か判定する。本ステップの判定結果が真の場合、S901に進む一方、該判定結果が偽の場合(つまり、入力画像がカラー画像の場合)、S904に進む。
図5のケースでは、入力画像501がカラー画像のため、S900の判定結果が偽となり、S904に処理を進める。S904では、CPU100は、仮想的色数Vnを1に設定する。
【0043】
次に、
図9で求めた仮想的色数Vnに基づいて
図5における以下のレジスタ設定値を算出する方法について、
図10を用いて説明する。
・入力アドレスレジスタ:入力画像501のうち1番目の入力バンド領域に対応する先頭アドレスC1
・入力オフセットレジスタ:入力画像501におけるオフセット量502
・出力アドレスレジスタ:出力画像504のうち1番目の出力バンド領域に対応する先頭アドレスD1
・出力オフセットレジスタ:出力画像504におけるオフセット量505
【0044】
S1000では、CPU100は、入力画像501の色数Cn_in(ここでは3)を取得する。
【0045】
S1001では、CPU100は、入力画像501の1色あたりのビット数Bps_inを取得する。
【0046】
S1002では、CPU100は、入力バンド領域500の長さBdl_inと高さBdh_inを取得する。
【0047】
S1003では、CPU100は、入力画像501の先頭アドレスAdr_in_topとして、
図5のアドレスC1を取得する。
【0048】
S1004では、CPU100は、S1000~S1002で取得したCn_in、Bps_in、Bdl_in、およびBdh_inを用いて、式(1)に従って、入力バンドのサイズBds_inを算出する。
【0049】
【0050】
S1005では、CPU100は、S1004で取得した入力バンドのサイズBds_inと、
図9のフローで取得した仮想的色数Vn(ここでは1)とを用いて、式(2)に従って、入力バンド領域のオフセット量Bdo_inを算出する。
【0051】
【0052】
S1006では、CPU100は、第1出力画像(ここでは出力画像504)の色数Cn_out1(ここでは3)を取得する。
【0053】
S1007では、CPU100は、第1出力画像(ここでは出力画像504)の1色あたりのビット数Bps_out1を取得する。
【0054】
S1008では、CPU100は、第1出力バンド領域503の長さBdl_out1と高さBdh_out1を取得する。
【0055】
S1009では、CPU100は、第1出力画像(ここでは出力画像504)の先頭アドレスAdr_out1_topとして、
図5のアドレスD1を取得する。
【0056】
S1010では、CPU100は、S1006~S1008で取得したCn_out1、Bps_out1、Bdl_out1、およびBdh_out1を用いて、式(3)に従って、第1出力バンドのサイズBds_out1を算出する。
【0057】
【0058】
S1011では、CPU100は、S1010で取得した第1出力バンドのサイズBds_out1と、
図9のフローで取得した仮想的色数Vn(ここでは1)とを用いて、式(4)に従って、第1出力バンド領域のオフセット量Bdo_out1を算出する。
【0059】
【0060】
S1012では、CPU100は、画像データ出力部218が2つの異なる画像を出力するか判定する。本ステップの判定結果が真の場合、S1013に進む一方、該判定結果が偽の場合、S1019に進む。尚、
図5のケースでは、出力画像が1つのため、S1019に処理を進める。
【0061】
S1019では、CPU100は、ソフトウェアの内部カウンタである仮想的インデックスViを初期化して0に設定する。
【0062】
S1020では、CPU100は、S1001で取得したBps_in、S1003で取得したAdr_in_top、およびS1019で取得したVi(ここでは0)を用いて、式(5)に従って、入力バンドの先頭アドレスAdr_in[Vi]を算出する。
【0063】
【0064】
尚、以降では、Vi=nの場合のAdr_in[Vi]を、Adr_in[n]と記載する。例えば、本例(Vi=0の場合)のAdr_in[Vi]を、Adr_in[0]と記載する。
【0065】
S1021では、CPU100は、S1007、S1009、S1019で取得したBps_out1、Adr_out1_top、Vi(ここでは0)を用いて式(6)に従い、第1出力バンドの先頭アドレスAdr_out1[Vi]を求める。
【0066】
【0067】
尚、以降では、Vi=nの場合のAdr_out1[Vi]を、Adr_out1[n]と記載する。
【0068】
S1022では、CPU100は、画像データ出力部218が2つの異なる画像を出力するか判定する。本ステップの判定結果が真の場合、S1023に進む一方、該判定結果が偽の場合、S1024に進む。尚、
図5のケースでは、出力画像が1つのため、S1024に処理を進める。
【0069】
S1024では、CPU100は、S1019で0に初期化した仮想的インデックスViに1を加算する。
【0070】
S1025では、CPU100は、
図9で取得した仮想的色数VnとS1024で取得した仮想的インデックスViとを比較し、式(7)を満たすか判定する。
図5のケースでは、Vi=1、Vn=1であり、式(7)を満たさないため、S1026に処理を進める。
【0071】
【0072】
S1026では、CPU100は、以下の4つの値をレジスタに設定する。
・S1005で算出した入力バンド領域のオフセット量Bdo_in
・S1011で算出した第1出力バンド領域のオフセット量Bdo_out1
・S1020で算出した入力バンドの先頭アドレスAdr_in[0]
・S1021で算出した第1出力バンドの先頭アドレスAdr_out1[0]
【0073】
S1027では、CPU100は、画像データ出力部218が2つの異なる画像を出力するか判定する。本ステップの判定結果が真の場合、S1028に進む一方、該判定結果が偽の場合、一連の処理を終了する。尚、
図5のケースでは、出力画像が1つのため、一連の処理を終了する。
【0074】
<モノクロ画像に対する1並列での画像処理>
以下、モノクロ(単色)の入力画像に対する1並列での画像処理の例について、
図6を用いて説明する。
【0075】
画像処理部103に入力する画像は、モノクロ画像である。入力画像601は、符号600に示す入力バンド領域の長さBdl_in、高さBdh_inの大きさの3つの連続した入力バンド領域A1、A2、A3から構成される。入力バンド領域のそれぞれが格納されるバンドメモリの先頭アドレスは、C1、C2、C3である。入力画像のオフセット量602は、アドレスC1からアドレスC2、アドレスC2からアドレスC3までの同一のオフセット量(バイト数)である。画像処理部103から出力する画像は、モノクロ画像である。出力画像604は、符号603に示す出力バンド領域の長さBdl_out1、高さBdh_out1の大きさの3つの連続した出力バンド領域B1、B2、B3から構成される。出力バンド領域のそれぞれが格納されるバンドメモリの先頭アドレスは、D1、D2、D3である。出力画像604におけるオフセット量605は、アドレスD1からアドレスD2、アドレスD2からアドレスD3までの同一のオフセット量(バイト数)である。
【0076】
ここで、入出力制御部200は、レジスタブロック219に以下の4つのレジスタを備える。
・入力アドレスレジスタ:入力画像601の先頭アドレスC1
・入力オフセットレジスタ:入力画像601の入力バンド領域間のオフセット量602
・出力アドレスレジスタ:出力画像604の先頭アドレスD1
・出力オフセットレジスタ:出力画像604の出力バンド領域間のオフセット量605
【0077】
これら4つのレジスタは、CPU100によって実現されるソフトウェアモジュールがレジスタブロック219にレジスタ設定値を設定する構成となっている。また、これら4つのレジスタについては、
図5のRGB点順次の入力画像に対する画像処理の例におけるレジスタ構成と同等である。
【0078】
入出力制御部200内の画像処理コマンドのフォーマットは、ヘッダと、3つのデータ領域とから構成され、1つのデータ領域P0のみを使用する画像処理コマンド303(
図3(c)参照)のフォーマットに該当する。コマンド生成部204で生成する画像処理コマンド(入力)と、コマンド解析部217で解析する画像処理コマンド(出力)とは、画像処理コマンド303のフォーマットに基づいて処理する。
【0079】
次に、画像処理部103における処理について説明する。画像データ入力部202は、入力画像601の1番目の入力バンド領域A1をバンドメモリから読み込む。具体的には、画像データ入力部202は、入力バンド領域A1について先頭アドレスC1から32バイト単位でオフセット量602(バイト数)読み込み、中間バッファ制御部203の記憶領域に書き込む。さらに、画像データ入力部202は、中間バッファ制御部203の記憶領域からモノクロの1画素分のデータ16bitを読み込み、該読みこんだ1画素分のデータをコマンド生成部204に出力する。その後、コマンド生成部204は、1画素分のデータを画像処理コマンド303(入力)のデータ領域P0に格納することで、画像処理コマンド303(入力)を生成し、該生成した画像処理コマンド303(入力)をコマンド送信部205に出力する。コマンド送信部205は、画像処理コマンド303(入力)を画像処理実行部201に出力する。画像処理実行部201が画像処理コマンド303(入力)に格納された画素データに基づく画像処理を完了すると、コマンド受信部216は、画像処理コマンド303(出力)を受信する。コマンド受信部216は、受信した画像処理コマンド303(出力)をコマンド解析部217に出力する。コマンド解析部217は、画像処理コマンド303(出力)のデータ領域P0に格納されたモノクロの画素データを取り出し、該取り出した画素データを画像データ出力部218に出力する。画像データ出力部218は、そのモノクロの画素データを中間バッファ制御部203の記憶領域に書き込む。さらに、画像データ出力部218は、中間バッファ制御部203の記憶領域からモノクロの出力画像データを32バイト単位で読み込み、出力画像604のうち1番目の出力バンド領域B1を構成する出力画像データとして出力バンドメモリに書き込む。
【0080】
以上の処理フローに基づき、入出力制御部200は、入力画像データとしてオフセット量602(バイト数)の入力バンド領域A1を読み込む。続いて、画像処理実行部201は、画像処理を行い、画像データ出力部218は、出力バンドメモリ(先頭アドレスD1)にオフセット量605(バイト数)の出力画像データを書き込む。
【0081】
その次に、入力画像601の2番目の入力バンド領域A2の画像処理を行う。具体的には、画像データ入力部202は、レジスタブロック219から入力アドレスレジスタの値(入力画像601の先頭アドレスC1)と、入力オフセットレジスタの値(入力画像601におけるオフセット量602(バイト数))とを取得する。その上で、画像データ入力部202は、入力アドレスレジスタの値に入力オフセットレジスタの値を加算することで、2番目の入力バンドメモリの先頭アドレスC2を算出し、内部カウンタに保持する。同じく、画像データ出力部218は、レジスタブロック219から出力アドレスレジスタの値(出力画像604の先頭アドレスD1)と、出力オフセットレジスタの値(出力画像604におけるオフセット量605(バイト数))とを取得する。その上で、画像データ出力部218は、出力アドレスレジスタの値に出力オフセットレジスタの値を加算することで、2番目の出力バンドメモリの先頭アドレスD2を算出し、内部カウンタに保持する。画像データ入力部202は、入力画像データのうちオフセット量602(バイト数)の入力バンド領域A2を読み込み、画像処理実行部201が画像処理を行う。その後、画像データ出力部218は、オフセット量605(バイト数)の出力バンド領域B2を出力バンドメモリに書き込む。
【0082】
その次に、入力画像601の3番目の入力バンド領域A3の画像処理を行う。具体的には、画像データ入力部202は、内部カウンタに保持された2番目の入力バンドメモリの先頭アドレスC2にオフセット量602(バイト数)を加算することで、3番目の入力バンドメモリの先頭アドレスC3を算出し、内部カウンタを更新する。同じく、画像データ出力部218は、内部カウンタに保持された2番目の出力バンド領域の先頭アドレスD2にオフセット量605(バイト数)を加算することで、3番目の出力バンドメモリの先頭アドレスD3を算出し、内部カウンタを更新する。画像データ入力部202は、入力画像データのうちオフセット量602(バイト数)の入力バンド領域A3を読み込み、画像処理実行部201が画像処理を行う。その後、画像データ出力部218は、オフセット量605(バイト数)出力バンド領域B3を出力バンドメモリに書き込む。
【0083】
次に、
図6のモノクロ(単色)データの入力画像に対する画像処理において、CPU100によって実現されるソフトウェアモジュールが、画像処理部103を駆動させるために必要なレジスタ設定値を算出する処理について、
図9および
図10を用いて説明する。
【0084】
まず、仮想的色数を決定するフローについて、
図9を用いて説明する。S900では、CPU100は、入力画像がモノクロ画像か判定する。
図6のケースでは、入力画像601がモノクロ画像のため、S900の判定結果が真となり、S901に処理を進める。
【0085】
S901では、CPU100は、モノクロ画像に対する画像処理を高速化するか、つまりN並列(Nは2以上の整数)で画像処理するか判定する。本ステップの判定結果が真の場合、S902に進む一方、該判定結果が偽の場合(つまり、1並列で画像処理を行う場合)、S903に進む。
図6のケースでは、1並列で画像処理を行うため、S903に処理を進める。S903では、CPU100は、仮想的色数Vnを1に設定する。
【0086】
次に、
図9のフローで求めた仮想的色数Vnに基づいて
図6における以下のレジスタ設定値を算出する方法について、
図10を用いて説明する。
・入力アドレスレジスタ:1番目の入力バンドメモリの先頭アドレスC1
・入力オフセットレジスタ:入力画像601におけるオフセット量602
・出力アドレスレジスタ:1番目の出力バンドメモリの先頭アドレスD1
・出力オフセットレジスタ:出力画像604におけるオフセット量605
【0087】
S1000では、CPU100は、入力画像601の色数Cn_in(ここでは1)を取得する。
【0088】
S1001では、CPU100は、入力画像601の1色あたりのビット数Bps_inを取得する。
【0089】
S1002では、CPU100は、入力バンド領域600の長さBdl_inと高さBdh_inを取得する。
【0090】
S1003では、CPU100は、入力画像601の先頭アドレスAdr_in_topとして、
図6のアドレスC1を取得する。
【0091】
ステップS1004では、CPU100は、S1000~S1002で取得したCn_in、Bps_in、Bdl_in、およびBdh_inを用いて、式(1)に従って、入力バンドのサイズBds_inを算出する。
【0092】
S1005では、CPU100は、S1004で取得した入力バンドのサイズBds_inと、
図9のフローで取得した仮想的色数Vn(ここでは1)とを用いて、式(2)に従って、入力バンド領域のオフセット量Bdo_inを算出する。
【0093】
S1006では、CPU100は、第1出力画像(ここでは出力画像604)の色数Cn_out1(ここでは1)を取得する。
【0094】
S1007では、CPU100は、第1出力画像(ここでは出力画像604)の1色あたりのビット数Bps_out1を取得する。
【0095】
S1008では、CPU100は、第1出力バンド領域603の長さBdl_out1と高さBdh_out1を取得する。
【0096】
S1009では、CPU100は、第1出力画像(ここでは出力画像604)の先頭アドレスAdr_out1_topとして、
図6のアドレスD1を取得する。
【0097】
S1010では、CPU100は、S1006~S1008で取得したCn_out1、Bps_out1、Bdl_out1、およびBdh_out1を用いて、式(3)に従って、第1出力バンドのサイズBds_out1を算出する。
【0098】
S1011では、CPU100は、S1010で取得した出力バンドのサイズBds_out1と、
図9のフローで取得した仮想的色数Vn(ここでは1)とを用いて、式(4)に従って、第1出力バンド領域のオフセット量Bdo_out1を算出する。
【0099】
S1012では、CPU100は、画像データ出力部218が2つの異なる画像を出力するか判定する。
図6のケースでは、出力画像が1つのため、S1019に処理を進める。
【0100】
S1019では、CPU100は、ソフトウェアの内部カウンタである仮想的インデックスViを初期化して0に設定する。
【0101】
S1020では、CPU100は、S1001で取得したBps_in、S1003で取得したAdr_in_top、およびS1019で取得したVi(ここでは0)を用いて、式(5)に従って、入力バンドの先頭アドレスAdr_in[0]を算出する。
【0102】
S1021では、CPU100は、S1007で取得したBps_out1、S1009で取得したAdr_out1_top、及びS1019で取得したVi(ここでは0)を用いて式(6)に従い第1出力バンドの先頭アドレスAdr_out1[0]を求める。
【0103】
S1022では、CPU100は、画像データ出力部218が2つの異なる画像を出力するか判定する。尚、
図6のケースでは、出力画像が1つのため、S1024に処理を進める。
【0104】
S1024では、CPU100は、S1019で0に初期化した仮想的インデックスViに1を加算する。
【0105】
S1025では、CPU100は、
図9で取得した仮想的色数VnとS1024で取得した仮想的インデックスViとを比較し、式(7)を満たすか判定する。
図6のケースでは、Vi=1、Vn=1であり、式(7)を満たさないため、S1026に処理を進める。
【0106】
ステップS1026では、CPU100は、以下の4つの値をレジスタに設定する。
・S1005で算出した入力バンド領域のオフセット量Bdo_in
・S1011で算出した出力バンド領域のオフセット量Bdo_out1
・S1020で算出した入力バンドの先頭アドレスAdr_in[0)]
・S1021で算出した出力バンドの先頭アドレスAdr_out1[0]
【0107】
S1027では、CPU100は、画像データ出力部218が2つの異なる画像を出力するか判定する。尚、
図6のケースでは、出力画像が1つのため、一連の処理を終了する。
【0108】
<モノクロ画像に対する3並列での画像処理>
以下、モノクロ(単色)の入力画像に対して3並列で画像処理を行う例について、
図7を用いて説明する。
【0109】
画像処理部103に入力する画像はモノクロ画像である。入力画像701は、符号700に示す入力バンド領域の長さBdl_in、高さBdh_inの大きさの9つの連続した入力バンド領域A1-0、A1-1、A1-2、A2-0、A2-1、A2-2、A3-0、A3-1、A3-2から構成される。入力バンド領域のそれぞれが格納されるバンドメモリの先頭アドレスは、B1-0、B1-1、B1-2、B2-0、B2-1、B2-2、B3-0、B3-1、B3-2である。入力画像におけるオフセット量702は、入力バンド領域700のバイト数を3倍したものである。具体的には、アドレスB1-0からB2-0、B1-1からB2-1、B1-2からB2-2、B2-0からB3-0、B2-1からB3-1、B2-2からB3-2までの同一のオフセット量(バイト数)である。画像処理部103から出力される画像は、モノクロ画像である。出力画像704は、符号703に示す出力バンド領域の長さBdl_out1、高さBdh_out1の大きさの9つの連続した出力バンド領域C1-0、C1-1、C1-2,C2-0、C2-1、C2-2、C3-0、C3-1、C3-2から構成される。出力バンド領域のそれぞれが格納されるバンドメモリの先頭アドレスは、D1-0、D1-1、D1-2、D2-0、D2-1、D2-2、D3-0、D3-1、D3-2である。出力画像704におけるオフセット量705は、出力バンド領域703のバイト数を3倍したものである。具体的には、アドレスD1-0からD2-0、D1-1からD2-1、D1-2からD2-2、D2-0からD3-0、D2-1からD3-1、D2-2からD3-2までの同一のオフセット量(バイト数)である。
【0110】
ここで、入出力制御部200は、モノクロの入力画像701を仮想的にRの入力バンド領域、Gの入力バンド領域、Bの入力バンド領域にバンド分割して、仮想的なRGBの3つの入力バンド領域の並列処理を行う。そのため、入出力制御部200は、レジスタブロック219に以下の8つのレジスタを備える。
・入力アドレスレジスタ:仮想的な色RGB各色の入力バンドメモリの先頭アドレスB1-0、B1-1、B1-2
・入力オフセットレジスタ:仮想的な色RGB各色における入力バンド領域間のオフセット量702
・出力アドレスレジスタ:仮想的な色RGB各色の出力バンドメモリの先頭アドレスD1-0、D1-1、D1-2
・出力オフセットレジスタ:仮想的な色RGB各色における出力バンド領域間のオフセット量705
【0111】
これら8つのレジスタは、CPU100によって実現されるソフトウェアモジュールがレジスタブロック219にレジスタ設定値を設定する構成となっている。また、これら8つのレジスタについては、
図5のRGB点順次の入力画像に対する画像処理の例、および、
図6のモノクロ(単色)の入力画像に対する1並列での画像処理の例におけるレジスタ構成と同等である。但し、
図5や
図6のケースでは、入力アドレスレジスタと出力アドレスレジスタとをそれぞれ1つのみ使用する形態を示したが、ここでは、入力アドレスレジスタ3個と出力アドレスレジスタ3個とを使用する形態を示す。
【0112】
入出力制御部200内の画像処理コマンドのフォーマットは、ヘッダと、3つのデータ領域P0、P1、P2とから構成され、画像処理コマンド305(
図3(d)参照)のフォーマットに該当する。コマンド生成部204で生成する画像処理コマンド(入力)と、コマンド解析部217で解析する画像処理コマンド(出力)とは、画像処理コマンド305のフォーマットに基づいて処理する。
【0113】
次に、画像処理部103における処理について説明する。画像データ入力部202は、入力画像701のうち1番~3番目の入力バンド領域A1-0、A1-1、A1-2について、それぞれ32バイト単位で読み込み、中間バッファ制御部203の記憶領域にRGBの面順次のデータとして書き込む。このとき、画像データ入力部202が読み込む各入力バンド領域の画像サイズは、入力バンド領域700のバイト数である。さらに、画像データ入力部202は、中間バッファ制御部203の記憶領域から仮想的なRGB各色の1画素分のデータ16bitを読み込み、該読みこんだ1画素分のデータをコマンド生成部204に出力する。その後、コマンド生成部204は、1画素分のデータを画像処理コマンド305(入力)のデータ領域P0、P1、P2に格納することで、画像処理コマンド305(入力)を生成し、該生成した画像処理コマンド305(入力)をコマンド送信部205に出力する。コマンド送信部205は、画像処理コマンド305(入力)を画像処理実行部201に出力する。画像処理実行部201が画像処理コマンド305(入力)に格納された画素データに基づく画像処理を完了すると、コマンド受信部216は、画像処理コマンド305(出力)を受信する。コマンド受信部216は、受信した画像処理コマンド305(出力)をコマンド解析部217に出力する。コマンド解析部217は、画像処理コマンド305(出力)のデータ領域P0、P1、P2に格納された仮想的なRGB各色の画素データを取り出し、該取り出した画素データを画像データ出力部218に出力する。画像データ出力部218は、その仮想的なRGB各色の画素データを中間バッファ制御部203の記憶領域に書き込む。さらに、画像データ出力部218は、中間バッファ制御部203の記憶領域から仮想的なRGB各色の出力画像データを32バイト単位で読み込み、出力バンド領域C1-0、C1-1、C1-2として出力バンドメモリに書き込む。
【0114】
以上の処理フローに基づき、入出力制御部200は、入力バンド領域A1-0、A1-1、A1-2のそれぞれについて、入力バンド領域700のバイト数の入力画像データを読み込む。続いて、画像処理実行部201は、画像処理を行い、画像データ出力部218は、出力バンドメモリ(先頭アドレスD1-0、D1-1、D1-2)それぞれに出力バンド領域703のバイト数の出力画像データを書き込む。
【0115】
入力バンド領域A1-0、A1-1、A1-2に対する画像処理が完了したら、入力画像701の4番目の入力バンド領域A2-0、5番目の入力バンド領域A2-1、6番目の入力バンド領域A2-2に対する画像処理を行う。具体的には、画像データ入力部202は、レジスタブロック219から入力アドレスレジスタの値(入力画像701に対する1~3番目のアドレスB1-0、B1-1、B1-2)と、入力オフセットレジスタの値(オフセット量702(バイト数))とを取得する。その上で、それぞれの入力アドレスレジスタの値に入力オフセットレジスタの値を加算することで、4~6番目のアドレスB2-0、B2-1、B2-2を算出し、該算出したアドレスを内部カウンタに保持する。同じく、画像データ出力部218は、レジスタブロック219から出力アドレスレジスタの値(出力画像704に対する1~3番目のアドレスD1-0、D1-1、D1-2)と、出力オフセットレジスタの値(オフセット量705(バイト数))とを取得する。その上で、それぞれの出力アドレスレジスタの値に出力オフセットレジスタの値を加算することで、4~6番目のアドレスD2-0、D2-1、D2-2を算出し、該算出したアドレスを内部カウンタに保持する。
【0116】
入出力制御部200は、入力バンド領域A2-0、A2-1、A2-2のそれぞれについて、入力バンド領域700のバイト数の入力画像データを読み込む。続いて、画像処理実行部201は、画像処理を行い、入出力制御部200は、出力バンドメモリ(先頭アドレスD2-0、D2-1、D2-2)にそれぞれ出力バンド領域703のバイト数の出力画像データを書き込む。
【0117】
入力バンド領域A2-0、A2-1、A2-2に対する画像処理が完了したら、入力画像701の7番目の入力バンド領域A3-0、8番目の入力バンド領域A3-1、9番目の入力バンド領域A3-2に対する画像処理を行う。具体的には、画像データ入力部202は、内部カウンタに保持された入力画像701に対するアドレスB2-0、B2-1、B2-2にオフセット量702(バイト数)を加算する。これにより、7~9番目のアドレスB3-0、B3-1、B3-2を算出し、該算出したアドレスで内部カウンタを更新する。同じく、画像データ出力部218は、内部カウンタに保持された出力画像704のアドレスD2-1、D2-2、D2-2にオフセット量705(バイト数)を加算する。これにより、7~9番目のアドレスD3-0、D3-1、D3-2を算出し、該算出したアドレスで内部カウンタを更新する。
【0118】
入出力制御部200は、入力バンド領域A3-0、A3-1、A3-2のそれぞれについて、入力バンド領域700のバイト数の入力画像データを読み込む。続いて、画像処理実行部201は、画像処理を行い、入出力制御部200は、出力バンドメモリ(先頭アドレスD3-0、D3-1、D3-2)に出力バンド領域703のバイト数の出力画像データを書き込む。
【0119】
次に、
図7のモノクロ(単色)の入力画像に対する3並列での画像処理において、CPU100によって実現されるソフトウェアモジュールが、画像処理部103を駆動させるために必要なレジスタ設定値を算出する処理について、
図9及び
図10を用いて説明する。
【0120】
まず、仮想的色数を決定するフローについて、
図9を用いて説明する。S900では、CPU100は、入力画像がモノクロ画像か判定する。
図7のケースでは、入力画像701がモノクロ画像のため、S900の判定結果が真となり、S901に処理を進める。
【0121】
S901では、CPU100は、モノクロ画像に対する画像処理を高速化するか、つまりN並列(Nは2以上の整数)で画像処理するか判定する。
図7のケースでは、N並列で画像処理を行うため、S902に処理を進める。S902では、CPU100は、
図7の画像処理コマンド305(入力)のデータ領域が3つであることから、仮想的色数Vnを3に設定する。
【0122】
次に、
図9で求めた仮想的色数Vnに基づいて
図7における以下のレジスタ設定値を算出する方法について、
図10を用いて説明する。
・入力アドレスレジスタ:入力画像701の仮想的なRGB各色の1番目の入力バンドメモリの先頭アドレスB1-0、B1-1、B1-2
・入力オフセットレジスタ:入力画像701における仮想的なRGB各色のオフセット量702
・出力アドレスレジスタ:第1出力画像704の仮想的なRGB各色の1番目の出力バンドメモリの先頭アドレスD1-0、D1-1、D1-2
・出力オフセットレジスタ:第1出力画像704における仮想的なRGB各色のオフセット量705
【0123】
S1000では、CPU100は、入力画像701の色数Cn_in(ここでは1)を取得する。
【0124】
S1001では、CPU100は、入力画像701の1色あたりのビット数Bps_inを取得する。
【0125】
S1002では、CPU100は、入力バンド領域700の長さBdl_inと高さBdh_inを取得する。
【0126】
S1003では、CPU100は、入力画像701の先頭アドレスAdr_in_topとして、
図7のアドレスB1-0を取得する。
【0127】
S1004では、CPU100は、S1000~S1002で取得したCn_in、Bps_in、Bdl_in、およびBdh_inを用いて、式(1)に従って、入力バンドのサイズBds_inを算出する。
【0128】
S1005では、CPU100は、S1004で取得した入力バンドのサイズBds_inと、
図9のフローで取得した仮想的色数Vn(ここでは3)とを用いて、式(2)に従って、入力バンド領域のオフセット量Bdo_inを算出する。
【0129】
S1006では、CPU100は、第1出力画像(ここでは出力画像704)の色数Cn_out1(ここでは1)を取得する。
【0130】
S1007では、CPU100は、第1出力画像(ここでは出力画像704)の1色あたりのビット数Bps_out1を取得する。
【0131】
S1008では、CPU100は、第1出力バンド領域703の長さBdl_out1と高さBdh_out1を取得する。
【0132】
S1009では、CPU100は、第1出力画像(ここでは出力画像704)の先頭アドレスAdr_out1_topとして、
図7のアドレスD1-0を取得する。
【0133】
S1010では、CPU100は、S1006~S1008で取得したCn_out1、Bps_out1、Bdl_out1、およびBdh_out1を用いて、式(3)に従って、第1出力バンドのサイズBds_out1を算出する。
【0134】
S1011では、CPU100は、S1010で取得した出力バンドのサイズBds_out1と、
図9のフローで取得した仮想的色数Vn(ここでは3)とを用いて、式(4)に従って、第1出力バンド領域のオフセット量Bdo_out1を算出する。
【0135】
S1012では、CPU100は、画像データ出力部218が2つの異なる画像を出力するか判定する。
図7のケースでは、出力画像が1つのため、S1019に処理を進める。
【0136】
S1019では、CPU100は、ソフトウェアの内部カウンタである仮想的インデックスViを初期化して0に設定する。尚、本例のVnは3のため、Viは0、1、2とインクリメントされ、これらの値それぞれは、仮想的な色RGBに関するレジスタ設定値を求めることを意味する。
【0137】
まず、Viが0、つまり仮想的な色Rに関するレジスタ設定値を求める計算フローについて説明する。
【0138】
S1020では、CPU100は、式(5)に従って、仮想的な色Rの先頭入力バンド領域のアドレスAdr_in[0]を算出する。本ステップの算出では、S1001で取得したBps_in、S1003で取得したAdr_in_top、及びS1019で取得されたVi(ここでは0)を用いる。
【0139】
S1021では、CPU100は、式(6)に従い、仮想的な色Rの先頭出力バンド領域のアドレスAdr_out1[0]を算出する。本ステップの算出では、S1007で取得したBps_out1、S1009で取得したAdr_out1_top、及びS1019で取得したVi(ここでは0)を用いる。
【0140】
S1022では、CPU100は、画像データ出力部218が2つの異なる画像を出力するか判定する。尚、
図7のケースでは、出力画像が1つのため、S1024に処理を進める。
【0141】
S1024では、CPU100は、S1019で0に初期化した仮想的インデックスViに1を加算する。
【0142】
S1025では、CPU100は、
図9のフローで取得した仮想的色数VnとS1024で取得した仮想的インデックスViとを比較し、式(7)を満たすか判定する。ここでは、Vi=1、Vn=3であり、式(7)を満たすため、S1020に処理を進める。
【0143】
次に、Viが1、つまり仮想的な色Gに関するレジスタ設定値を求める計算フローについて説明する。
【0144】
S1020では、CPU100は、式(5)に従って、仮想的な色Gの先頭入力バンド領域のアドレスAdr_in[1]を算出する。本ステップの算出では、S1001で取得したBps_in、S1003で取得したAdr_in_top、及びS1024で更新されたVi(ここでは1)を用いる。
【0145】
S1021では、CPU100は、式(6)に従い、仮想的な色Gの先頭出力バンド領域のアドレスAdr_out1[1]を算出する。本ステップの算出では、S1007で取得したBps_out1、S1009で取得したAdr_out1_top、及びS1024で更新されたVi(ここでは1)を用いる。
【0146】
S1022では、CPU100は、画像データ出力部218が2つの異なる画像を出力するか判定する。尚、
図7のケースでは、出力画像が1つのため、S1024に処理を進める。
【0147】
S1024では、CPU100は、現在の仮想的インデックスVi(つまり1)に1を加算してVi=2に設定する。
【0148】
S1025では、CPU100は、
図9のフローで取得した仮想的色数Vnと現在の仮想的インデックスViとを比較し、式(7)を満たすか判定する。ここでは、Vi=2、Vn=3であり、式(7)を満たすため、S1020に処理を進める。
【0149】
最後に、Viが2、つまり仮想的な色Bに関するレジスタ設定値を求める計算フローについて説明する。
【0150】
S1020では、CPU100は、式(5)に従って、仮想的な色Bの先頭入力バンド領域のアドレスAdr_in[2]を算出する。本ステップの算出では、S1001で取得したBps_in、S1003で取得したAdr_in_top、及びS1024で更新されたVi(ここでは2)を用いる。
【0151】
S1021では、CPU100は、式(6)に従い、仮想的な色Bの先頭出力バンド領域のアドレスAdr_out1[2]を算出する。本ステップの算出では、S1007で取得したBps_out1、S1009で取得したAdr_out1_top、及びS1024で更新されたVi(ここでは2)を用いる。
【0152】
S1022では、CPU100は、画像データ出力部218が2つの異なる画像を出力するか判定する。尚、
図7のケースでは、出力画像が1つのため、S1024に処理を進める。
【0153】
S1024では、CPU100は、現在の仮想的インデックスVi(つまり2)に1を加算してVi=3に設定する。
【0154】
S1025では、CPU100は、
図9のフローで取得した仮想的色数Vnと現在の仮想的インデックスViとを比較し、式(7)を満たすか判定する。ここでは、Vi=3、Vn=3であり、式(7)を満たさないため、S1026に処理を進める。
【0155】
S1026では、CPU100は、以下の8つの値をレジスタに設定する。
・S1005で算出した入力バンド領域のオフセット量Bdo_in
・S1011で算出した出力バンド領域のオフセット量Bdo_out1
・仮想的な色Rの入力バンドの先頭アドレスAdr_in[0]
・仮想的な色Gの入力バンドの先頭アドレスAdr_in[1]
・仮想的な色Bの入力バンドの先頭アドレスAdr_in[2]
・仮想的な色Rの出力バンドの先頭アドレスAdr_out1[0]
・仮想的な色Gの出力バンドの先頭アドレスAdr_out1[1]
・仮想的な色Bの出力バンドの先頭アドレスAdr_out1[2]
【0156】
S1027では、CPU100は、画像データ出力部218が2つの異なる画像を出力するか判定する。尚、
図7のケースでは、出力画像が1つのため、一連の処理を終了する。
【0157】
<本実施形態の効果>
以上説明したように本実施形態によれば、ソフトウェアは入力画像であるモノクロ画像を3並列で画像処理する際にソフトウェアが並列処理する数として仮想的色数を決定する。その上で、その仮想的色数に基づいて、ハードウェアがモノクロ画像の複数画素を並列処理するためのレジスタ設定値を計算することができる。このレジスタ設定値の計算手法は、モノクロ画像を1並列で画像処理する場合、カラー画像を画像処理する場合にも適用できる。
【0158】
[第2の実施形態]
以下、モノクロ(単色)の入力画像に対して2つの異なる画像処理を3並列で行い、サイズの異なる2つのモノクロ画像を出力する例について、
図8を用いて説明する。尚、以降の説明では、前述の実施形態と同様の内容については適宜省略する。具体的には、本実施形態で採用する、画像処理装置、画像処理部103、画像処理コマンド、バンド処理等は第1の実施形態と同様である(
図1~
図4参照)。
【0159】
画像処理部103に入力する画像は、モノクロ画像である。入力画像801は、符号800に示す入力バンド領域の長さBdl_in、高さBdh_inの大きさの9つの連続した入力バンド領域A1-0、A1-1、A1-2、A2-0、A2-1、A2-2、A3-0、A3-1、A3-2から構成される。入力バンド領域のそれぞれが格納されるバンドメモリの先頭アドレスは、B1-0、B1-1、B1-2、B2-0、B2-1、B2-2、B3-0、B3-1、B3-2である。入力画像のオフセット量802は、入力バンド領域800のバイト数を3倍したものである。具体的には、アドレスB1-0からB2-0、B1-1からB2-1、B1-2からB2-2、B2-0からB3-0、B2-1からB3-1、B2-2からB3-2までの同一のオフセット量(バイト数)である。
【0160】
画像処理部103から出力する画像は、モノクロ等倍画像の出力画像804と、出力画像804を主走査方向・副走査方向ともに1/2に縮小した出力画像807(縮小画像)との2つである。出力画像804は、符号803に示す第1出力バンド領域の長さBdl_out1、高さBdh_out1の大きさの9つの連続した出力バンド領域C1-0、C1-1、C1-2,C2-0、C2-1、C2-2、C3-0、C3-1、C3-2から構成される。これらの出力バンド領域が格納されるバンドメモリの先頭アドレスは、D1-0、D1-1、D1-2、D2-0、D2-1、D2-2、D3-0、D3-1、D3-2である。出力画像804のオフセット量805は、第1出力バンド領域803のバイト数を3倍したものである。具体的には、アドレスD1-0からD2-0、D1-1からD2-1、D1-2からD2-2、D2-0からD3-0、D2-1からD3-1、D2-2からD3-2までの同一のオフセット量(バイト数)である。出力画像807は、符号806に示す第2出力バンド領域の長さBdl_out2(Bdl_out1の1/2の長さ)、高さBdh_out2(Bdh_out1の1/2の高さ)の大きさの9つの連続した出力バンド領域から構成される。具体的には、出力バンド領域は、E1-0、E1-1、E1-2,E2-0、E2-1、E2-2、E3-0、E3-1、E3-2である。これらの出力バンド領域が格納される出力バンドメモリの先頭アドレスは、F1-0、F1-1、F1-2、F2-0、F2-1、F2-2、F3-0、F3-1、F3-2である。オフセット量808は、第2出力バンド領域806のバイト数を3倍したものである。具体的には、アドレスF1-0からF2-0、F1-1からF2-1、F1-2からF2-2、F2-0からF3-0、F2-1からF3-1、F2-2からF3-2までの同一のオフセット量(バイト数)である。
【0161】
ここで、入出力制御部200は、モノクロの入力画像801を仮想的にRの入力バンド領域、Gの入力バンド領域、Bの入力バンド領域にバンド分割して、仮想的なRGBの3つの入力バンド領域に対して並列処理を行う。そのため、入出力制御部200は、レジスタブロック219に以下の12個のレジスタを備える。
・入力アドレスレジスタ:仮想的なRGB各色の入力バンド領域に対応する先頭アドレスB1-0、B1-1、B1-2
・入力オフセットレジスタ:仮想的なRGB各色における入力バンド領域間のオフセット量802
・第1出力アドレスレジスタ:仮想的なRGB各色の出力バンド領域に対応する先頭アドレスD1-0、D1-1、D1-2
・第1出力オフセットレジスタ:仮想的なRGB各色における出力バンド領域間のオフセット量805
・第2出力アドレスレジスタ:仮想的なRGB各色の出力バンド領域に対応する先頭アドレスF1-0、F1-1、F1-2
・第2出力オフセットレジスタ:仮想的なRGB各色における出力バンド領域間のオフセット量808
【0162】
これら12個のレジスタは、CPU100によって実現されるソフトウェアモジュールがレジスタブロック219にレジスタ設定値を設定する構成となっている。また、これら12個のレジスタについては、
図7のモノクロ(単色)の入力画像に対して3並列で画像処理を行う例におけるレジスタ構成と同等である。つまり、
図7を用いて前述した第1の実施形態では、第2出力画像用のアドレスレジスタ3個とオフセットレジスタ1個とを使用しない例を示したが、本実施形態では、これらのレジスタを追加で使用する制御方法を示す。
【0163】
入出力制御部200内の画像処理コマンドのフォーマットは、ヘッダと、3つのデータ領域P0、P1、P2とから構成され、画像処理コマンド305(
図3(d)参照)のフォーマットに該当する。コマンド生成部204で生成する画像処理コマンド(入力)と、コマンド解析部217で解析する画像処理コマンド(出力)とは、画像処理コマンド305のフォーマットに基づいて処理する。
【0164】
次に、画像処理部103における処理について説明する。入出力制御部200は入力バンド領域A1-0、A1-1、A1-2それぞれに対して、入力バンド領域800のバイト数の入力画像データを読み込み、画像処理実行部201で画像処理を行う。入出力制御部200は、出力バンドメモリの先頭アドレスD1-0、D1-1、D1-2から32バイト単位で書き込むことで、第1出力バンド領域803のバイト数の出力バンド領域C1-0、C1-1、C1-2を出力する。さらに、入出力制御部200は、出力バンドメモリの先頭アドレスF1-0、F1-1、F1-2から32バイト単位で書き込むことで、第2出力バンド領域806のバイト数の出力バンド領域E1-0、E1-1、E1-2を出力する。
【0165】
具体的には、画像データ入力部202は、入力画像801の1~3番目の入力バンド領域A1-0、A1-1、A1-2からそれぞれ32バイト単位で入力画像データを読み込み、中間バッファ制御部203の記憶領域にRGBの面順次のデータとして書き込む。このとき、画像データ入力部202が各入力バンド領域から読み込む画像サイズは、入力バンド領域800のバイト数である。さらに、画像データ入力部202は、中間バッファ制御部203の記憶領域から仮想的なRGB各色の1画素分のデータ16bitを読み込み、該読み込んだ1画素分のデータをコマンド生成部204に出力する。その後、コマンド生成部204は、1画素分のデータを画像処理コマンド305(入力)のデータ領域P0、P1、P2に格納することで、画像処理コマンド305(入力)を生成し、該生成した画像処理コマンド305(入力)をコマンド送信部205に出力する。コマンド送信部205は、画像処理コマンド305(入力)を画像処理実行部201に出力する。ここで、CPU100によって実現されるソフトウェアモジュールは、画像処理の実行前に、インターコネクト206を用いることで、P個の画像処理回路における、等倍画像の出力回路の為の組み合わせと、縮小画像の出力回路の為の組み合わせをと構成しておく。これらの2つの組み合わせ回路による1画素単位の画像処理が完了した場合、画像処理実行部201は、それぞれの組み合わせ回路に対応した画像処理コマンド305(出力)をコマンド受信部216に出力する。コマンド受信部216は、画像処理コマンド305(出力)を受信した場合、該受信した画像処理コマンド305(出力)をコマンド解析部217に出力する。コマンド解析部217は、画像処理コマンド305(出力)のヘッダを解析し、データ領域に格納されている画素データが等倍画像である出力画像804の画素データか、それとも縮小画像である出力画像807の画素データかを判別する。その上で、コマンド解析部217は、画像処理コマンド305(出力)のデータ領域P0、P1、P2に格納された仮想的なRGB各色の画素データを取り出し、該取り出した画素データを画像データ出力部218に出力する。画像データ出力部218は、その仮想的なRGB各色の画素データを中間バッファ制御部203の記憶領域に書き込む。この時、中間バッファ制御部203の記憶領域は、出力画像804の画素データをバッファリングするための領域と、出力画像807の画素データをバッファリングするための領域とに分かれており、ヘッダの内容に応じて何れかの領域に書き込む。さらに、画像データ出力部218は、出力画像804または出力画像807の何れか一方に対応する仮想的なRGB各色に関して、中間バッファ制御部203の記憶領域から32バイト単位で出力画像データを読み込む。つまり、出力画像804のデータを読み込んだ場合は、出力バンドメモリの先頭アドレスD1-0、D1-1、D1-2からそれぞれ32バイト単位で出力画像データを書き込む。または、出力画像807のデータを読み込んだ場合は、出力バンドメモリの先頭アドレスF1-0、F1-1、F1-2からそれぞれ32バイト単位で出力画像データを書き込む。
【0166】
以上の処理フローに基づき、入出力制御部200は、入力バンド領域A1-0、A1-1、A1-2のそれぞれについて、入力バンド領域800のバイト数の入力画像データを読み込む。続いて、画像処理実行部201は、画像処理を行い、画像データ出力部218は、出力バンドメモリ(先頭アドレスD1-0、D1-1、D1-2)それぞれに第1出力バンド領域803のバイト数の出力画像データを出力する。同時に、画像データ出力部218は、出力バンドメモリ(先頭アドレスF1-0、F1-1、F1-2)それぞれに第2出力バンド領域806のバイト数の出力画像データを出力する。
【0167】
入力バンド領域A1-0、A1-1、A1-2に対する画像処理が完了したら、入力画像801の4番目の入力バンド領域A2-0、5番目の入力バンド領域A2-1、6番目の入力バンド領域A2-2に対する画像処理を行う。具体的には、画像データ入力部202は、レジスタブロック219から入力アドレスレジスタの値(入力画像801に対する1~3番目のアドレスB1-0、B1-1、B1-2)と、入力オフセットレジスタの値(オフセット量802(バイト数))とを取得する。その上で、それぞれの入力アドレスレジスタの値に入力オフセットレジスタの値を加算することで、4~6番目のアドレスB2-0、B2-1、B2-2を算出し、該算出したアドレスを内部カウンタに保持する。同じく、画像データ出力部218は、レジスタブロック219から第1出力アドレスレジスタの値(第1出力画像804に対する1~3番目のアドレスD1-0、D1-1、D1-2)と、第1出力オフセットレジスタの値(オフセット量805)とを取得する。その上で、それぞれの第1出力アドレスレジスタの値に第1出力オフセットレジスタの値を加算することで、4~6番目のアドレスD2-0、D2-1、D2-2を算出し、該算出したアドレスを内部カウンタに保持する。また、画像データ出力部218は、レジスタブロック219から第2出力アドレスレジスタの値(第2出力画像807に対する1~3番目のアドレスF1-0、F1-1、F1-2)と、第2出力オフセットレジスタの値(オフセット量808)とを取得する。その上で、それぞれの第2出力アドレスレジスタの値に第2出力オフセットレジスタの値を加算することで、4~6番目のアドレスF2-0、F2-1、F2-2を算出し、該算出したアドレスを内部カウンタに保持する。
【0168】
入出力制御部200は、入力バンド領域A2-0、A2-1、A2-2のそれぞれについて、入力バンド領域800のバイト数の入力画像データを読み込む。続いて、画像処理実行部201は、画像処理を行い、入出力制御部200は、出力バンドメモリ(先頭アドレスD2-0、D2-1、D2-2)に第1出力バンド領域803のバイト数の出力画像データを出力する。同時に、入出力制御部200は、出力バンドメモリ(先頭アドレスF2-0、F2-1、F2-2)に第2出力バンド領域806のバイト数の出力画像データを出力する。
【0169】
入力バンド領域A2-0、A2-1、A2-2に対する画像処理が完了したら、入力画像801の7番目の入力バンド領域A3-0、8番目の入力バンド領域A3-1、9番目の入力バンド領域A3-2に対する画像処理を行う。具体的には、画像データ入力部202は、内部カウンタに保持された入力画像801に対するアドレスA2-0、A2-1、A2-2にオフセット量802(バイト数)を加算する。これにより、7~9番目のアドレスA3-0、A3-1、A3-2を算出し、該算出したアドレスで内部カウンタを更新する。同じく、画像データ出力部218は、内部カウンタに保持された出力画像804に対するアドレスD2-1、D2-2、D2-2にオフセット量805(バイト数)を加算する。これにより、7~9番目のアドレスD3-0、D3-1、D3-2を算出し、該算出したアドレスで内部カウンタを更新する。また、画像データ出力部218は、内部カウンタに保持された出力画像807に対するアドレスF2-1、F2-2、F2-2にオフセット量808(バイト数)を加算する。これにより、7~9番目のアドレスF3-0、F3-1、F3-2を算出し、該算出したアドレスで内部カウンタを更新する。
【0170】
入出力制御部200は、入力バンド領域A3-0、A3-1、A3-2のそれぞれについて、入力バンド領域800のバイト数の入力画像データを読み込む。続いて、画像処理実行部201は、画像処理を行い、入出力制御部200は、出力バンドメモリ(先頭アドレスD3-0、D3-1、D3-2)に第1出力バンド領域803のバイト数の出力画像データを出力する。同時に、入出力制御部200は、出力バンドメモリ(先頭アドレスF3-0、F3-1、F3-2)に第2出力バンド領域806のバイト数の出力画像データを出力する。
【0171】
次に、
図8の画像処理において、CPU100によって実現されるソフトウェアモジュールが、画像処理部103を駆動させるために必要なレジスタ設定値を算出する処理について、
図9および
図10を用いて説明する。
【0172】
まず、仮想的色数を決定するフローについて、
図9を用いて説明する。S900では、CPU100は、入力画像がモノクロ画像か判定する。
図8のケースでは、入力画像801がモノクロ画像のため、S900の判定結果が真となり、S901に処理を進める。
【0173】
S901では、CPU100は、モノクロ画像に対する画像処理を高速化するか、つまりN並列(Nは2以上の整数)で画像処理するか判定する。
図8のケースでは、3並列で画像処理を行うため、S902に処理を進める。S902では、CPU100は、
図8の画像処理コマンド305(入力)のデータ領域が3つであることから、仮想的色数Vnを3に設定する。
【0174】
次に、
図9のフローで求めた仮想的色数Vnに基づいて
図7における以下のレジスタ設定値を算出する方法について、
図10を用いて説明する。
・入力アドレスレジスタ:入力画像801の仮想的なRGB各色に対応する1番目の入力バンドメモリの先頭アドレスB1-0、B1-1、B1-2
・入力オフセットレジスタ:入力画像801における仮想的なRGB各色のオフセット量802
・第1出力アドレスレジスタ:第1出力画像804の仮想的なRGB各色に対応する1番目の出力バンドメモリの先頭アドレスD1-0、D1-1、D1-2
・第1出力オフセットレジスタ:第1出力画像804における仮想的なRGB各色のオフセット量805
・第2出力アドレスレジスタ:第2出力画像807の仮想的なRGB各色に対応する1番目の出力バンドメモリの先頭アドレスF1-0、F1-1、F1-2
・第2出力オフセットレジスタ:第2出力画像807における仮想的なRGB各色のオフセット量808
【0175】
S1000では、CPU100は、入力画像801の色数Cn_in(ここでは1)を取得する。
【0176】
S1001では、CPU100は、入力画像801の1色あたりのビット数Bps_inを取得する。
【0177】
S1002では、CPU100は、入力バンド領域800の長さBdl_inと高さBdh_inを取得する。
【0178】
S1003では、CPU100は、入力画像801の先頭アドレスAdr_in_topとして、
図8のアドレスB1-0を取得する。
【0179】
S1004では、CPU100は、S1000~S1002で取得したCn_in、Bps_in、Bdl_in、およびBdh_inを用いて、式(1)に従って、入力バンドのサイズBds_inを算出する。
【0180】
S1005では、CPU100は、S1004で取得した入力バンドのサイズBds_inと、
図9のフローで取得した仮想的色数Vn(ここでは3)とを用いて、式(2)に従って、入力バンド領域のオフセット量Bdo_inを算出する。
【0181】
S1006では、CPU100は、第1出力画像(ここでは出力画像804)の色数Cn_out1(ここでは1)を取得する。
【0182】
S1007では、CPU100は、第1出力画像(ここでは出力画像804)の1色あたりのビット数Bps_out1を取得する。
【0183】
S1008では、CPU100は、第1出力バンド領域803の長さBdl_out1と高さBdh_out1を取得する。
【0184】
S1009では、CPU100は、第1出力画像(ここでは出力画像804)の先頭アドレスAdr_out1_topとして、
図8のアドレスD1-0を取得する。
【0185】
S1010では、CPU100は、S1006~S1008で取得したCn_out1、Bps_out1、Bdl_out1、およびBdh_out1を用いて、式(3)に従って、第1出力バンドのサイズBds_out1を算出する。
【0186】
S1011では、CPU100は、S1010で取得した第1出力バンドのサイズBds_out1と、
図9のフローで取得した仮想的色数Vn(ここでは3)とを用いて、式(4)に従って、第1出力バンド領域のオフセット量Bdo_out1を算出する。
【0187】
S1012では、CPU100は、画像データ出力部218が2つの異なる画像を出力するか判定する。
図8のケースでは、出力画像が2つのため、S1013に処理を進める。
【0188】
S1013では、CPU100は、第2出力画像(ここでは出力画像807)の色数Cn_out2(ここでは1)を取得する。
【0189】
S1014では、CPU100は、第2出力画像(ここでは出力画像807)の1色あたりのビット数Bps_out2を取得する。
【0190】
S1015では、CPU100は、第2出力バンド領域806の長さBdl_out2と高さBdh_out2を取得する。
【0191】
S1016では、CPU100は、第2出力画像(ここでは出力画像807)の先頭アドレスAdr_out2_topとして、
図8のアドレスF1-0を取得する。
【0192】
S1017では、CPU100は、S1013~S1015で取得したCn_out2、Bps_out2、Bdl_out2、およびBdh_out2を用いて、式(8)に従って、第2出力バンドのサイズBds_out2を算出する。
【0193】
【0194】
S1018では、CPU100は、S1017で取得した第2出力バンドのサイズBds_out2と、
図9のフローで取得した仮想的色数Vn(ここでは3)とを用いて、式(9)に従って、第2出力バンド領域のオフセット量Bdo_out2を算出する。
【0195】
【0196】
S1019では、CPU100は、ソフトウェアの内部カウンタである仮想的インデックスViを初期化して0に設定する。本例のVnは3のため、Viは0、1、2とインクリメントされ、これらの値それぞれは、仮想的な色RGBに関するレジスタ設定値を求めることを意味する。
【0197】
まず、Viが0、つまり仮想的な色Rに関するレジスタ設定値を求める計算フローについて説明する。
【0198】
S1020では、CPU100は、式(5)に従って、仮想的な色Rの先頭入力バンド領域のアドレスAdr_in[0]を算出する。本ステップの算出では、S1001で取得したBps_in、S1003で取得したAdr_in_top、及びS1019で取得されたVi(ここでは0)を用いる。
【0199】
S1021では、CPU100は、式(6)に従い、仮想的な色Rの先頭出力バンド領域のアドレスAdr_out1[0]を算出する。本ステップの算出では、S1007で取得したBps_out1、S1009で取得したAdr_out1_top、及びS1019で取得したVi(ここでは0)を用いる。
【0200】
S1022では、CPU100は、画像データ出力部218が2つの異なる画像を出力するか判定する。
図8のケースでは、出力画像が2つのため、S1023に処理を進める。
【0201】
S1023では、CPU100は、S1014で取得したBps_out2、S1016で取得したAdr_out2_top、及びS1019で取得したVi(ここでは0)を用いて式(10)に従い、Adr_out2[0]を求める。
【0202】
【0203】
尚、Adr_out2[0]は、仮想的な色Rの出力バンド領域に対応する先頭アドレスである。
【0204】
S1024では、CPU100は、S1019で0に初期化した仮想的インデックスViに1を加算する。
【0205】
S1025では、CPU100は、
図9のフローで取得した仮想的色数VnとS1024で取得した仮想的インデックスViとを比較し、式(7)を満たすか判定する。ここでは、Vi=1、Vn=3であり、式(7)を満たすため、S1020に処理を進める。
【0206】
次に、Viが1、つまり仮想的な色Gに関するレジスタ設定値を求める計算フローについて説明する。
【0207】
S1020では、CPU100は、式(5)に従って、仮想的な色Gの先頭入力バンド領域のアドレスAdr_in[1]を算出する。本ステップの算出では、S1001で取得したBps_in、S1003で取得したAdr_in_top、及びS1024で取得されたVi(ここでは1)を用いる。
【0208】
S1021では、CPU100は、式(6)に従い、仮想的な色Gの先頭出力バンド領域のアドレスAdr_out1[1]を算出する。本ステップの算出では、S1007で取得したBps_out1、S1009で取得したAdr_out1_top、及びS1024で取得したVi(ここでは1)を用いる。
【0209】
S1022では、CPU100は、画像データ出力部218が2つの異なる画像を出力するか判定する。尚、
図8のケースでは、出力画像が2つのため、S1023に処理を進める。
【0210】
S1023では、CPU100は、S1014で取得したBps_out2、S1016で取得したAdr_out2_top、及びS1024で取得したVi(ここでは1)を用いて式(10)に従い、Adr_out2[1]を求める。尚、Adr_out2[1]は、仮想的な色Gの出力バンド領域に対応する先頭アドレスである。
【0211】
S1024では、CPU100は、現在の仮想的インデックスViの値(つまり1)に1を加算する。
【0212】
S1025では、CPU100は、
図9のフローで取得した仮想的色数Vnと現在の仮想的インデックスViとを比較し、式(7)を満たすか判定する。ここでは、Vi=2、Vn=3であり、式(7)を満たすため、S1020に処理を進める。
【0213】
最後に、Viが2、つまり仮想的な色Bに関するレジスタ設定値を求める計算フローについて説明する。
【0214】
S1020では、CPU100は、式(5)に従って、仮想的な色Bの先頭入力バンド領域のアドレスAdr_in[2]を算出する。本ステップの算出では、S1001で取得したBps_in、S1003で取得したAdr_in_top、及びS1024で取得されたVi(ここでは2)を用いる。
【0215】
S1021では、CPU100は、式(6)に従い、仮想的な色Bの先頭出力バンド領域のアドレスAdr_out1[2]を算出する。本ステップの算出では、S1007で取得したBps_out1、S1009で取得したAdr_out1_top、及びS1024で取得したVi(ここでは2)を用いる。
【0216】
S1022では、CPU100は、画像データ出力部218が2つの異なる画像を出力するか判定する。尚、
図8のケースでは、出力画像が2つのため、S1023に処理を進める。
【0217】
S1023では、CPU100は、S1014で取得したBps_out2、S1016で取得したAdr_out2_top、及びS1024で取得したVi(ここでは2)を用いて式(10)に従い、Adr_out2[2]を求める。尚、Adr_out2[2]は、仮想的な色Bの出力バンド領域に対応する先頭アドレスである。
【0218】
S1024では、CPU100は、現在の仮想的インデックスViの値(つまり2)に1を加算する。
【0219】
S1025では、CPU100は、
図9のフローで取得した仮想的色数Vnと現在の仮想的インデックスViとを比較し、式(7)を満たすか判定する。ここでは、Vi=3、Vn=3であり、式(7)を満たさないため、S1026に処理を進める。
【0220】
S1026では、CPU100は、以下の8つの値をレジスタに設定する。
・S1005で算出した入力バンド領域のオフセット量Bdo_in
・S1011で算出した第1出力バンド領域のオフセット量Bdo_out1
・仮想的な色Rの入力バンドの先頭アドレスAdr_in[0]
・仮想的な色Gの入力バンドの先頭アドレスAdr_in[1]
・仮想的な色Bの入力バンドの先頭アドレスAdr_in[2]
・仮想的な色Rの第1出力バンドの先頭アドレスAdr_out1[0]
・仮想的な色Gの第1出力バンドの先頭アドレスAdr_out1[1]
・仮想的な色Bの第1出力バンドの先頭アドレスAdr_out1[2]
【0221】
S1027では、CPU100は、画像データ出力部218が2つの異なる画像を出力するか判定する。尚、
図8のケースでは、出力画像が2つのため、S1028に処理を進める。
【0222】
S1028では、CPU100は、以下の4つの値をレジスタに設定する。
・第2出力バンド領域のオフセット量Bdo_out2
・仮想的な色Rの第2出力バンドの先頭アドレスAdr_out2[0]
・仮想的な色Gの第2出力バンドの先頭アドレスAdr_out2[1]
・仮想的な色Bの第2出力バンドの先頭アドレスAdr_out2[2]
【0223】
<本実施形態の効果>
以上説明したように本実施形態によれば、ソフトウェアは入力画像であるモノクロ画像を3並列で画像処理し、等倍の画像と1/2倍の縮小画像とを出力する際に、並列処理する数として仮想的色数をソフトウェアが決定する。その上で、その仮想的色数に基づいて、ハードウェアがモノクロ画像の複数画素を並列処理し、2つの画像を並行して出力するためのレジスタ設定値を計算することができる。このレジスタ設定値の計算手法は、モノクロ画像を1並列で画像処理する場合、モノクロ画像をM並列で画像処理する場合、カラー画像を1並列で画像処理する場合、カラー画像をM並列で画像処理する場合に適用できる。
【0224】
[第3の実施形態]
以下、モノクロ画像をN倍の速度で印刷するための印刷指示を情報機器106が画像処理装置(具体的には記録装置)に送る場合の形態を示す。情報機器106にインストールされているプリンタドライバのモジュールが情報機器106に接続されている画像処理装置に対して仮想的色数を問い合わる。そして、情報機器106は、その仮想的色数をモノクロ画像の印刷能力としてユーザに提示する。尚、本本実施形態で採用する、画像処理装置、画像処理部103、画像処理コマンド、バンド処理等は第1の実施形態と同様である(
図1~
図4参照)。
【0225】
<画像処理コマンドの構成>
図11は、本実施形態における画像処理部103で用いられる画像処理コマンドの構成を示す図である。
【0226】
画像処理コマンド1101は、3つのデータ領域を持ち、カラー画像を処理する場合は、最大3色のカラー画像の画像処理を行うことができる。また、この画像処理コマンド1101を用いてモノクロ画像を処理する場合は、
図9のフローにより、仮想的色数として3を導出し、3並列で画像処理を行うことができる。
【0227】
画像処理コマンド1102は、4つのデータ領域を持ち、カラー画像を処理する場合は、最大4色のカラー画像の画像処理を行うことができる。また、この画像処理コマンド1102を用いてモノクロ画像を処理する場合は、
図9のフローにより、仮想的色数として4を導出し、4並列で画像処理を行うことができる。
【0228】
画像処理コマンド1103は、4つのデータ領域を持つ画像処理コマンド2つから成り、カラー画像を処理する場合は、最大8色のカラー画像の画像処理を行うことができる。
【0229】
<情報機器と、記録装置とによる一連の処理>
図12は、本実施形態における情報機器と、第1~第3記録装置とによる一連の処理を示すシーケンス図である。
【0230】
プリンタドライバ122は、情報機器121にインストールされたアプリケーションプログラムである。
図12の第1記録装置123は、
図11の画像処理コマンド1101に対応している。また、第2記録装置124は、画像処理コマンド1102に対応し、第3記録装置125は、画像処理コマンド1103に対応している。
【0231】
S1200では、ユーザ120は、情報機器121にインストールされているプリンタドライバ122のグラフィカルユーザインターフェース(以降GUI)を介して、モノクロ画像の印刷を指示する。
【0232】
S1201では、情報機器121は、第1記録装置123に対して、使用可能な画像処理コマンド1101におけるデータ領域数の取得要求を送信する。
【0233】
S1202では、第1記録装置123は、S1201で送信されたデータ領域数の取得要求に対する応答としてデータ領域数3を、情報機器121に通知する。
【0234】
S1203では、情報機器121は、第2記録装置124に対して、使用可能な画像処理コマンド1102におけるデータ領域数の取得要求を送信する。
【0235】
S1204では、第2記録装置124は、S1203で送信されたデータ領域数の取得要求に対する応答としてデータ領域数4を、情報機器121に通知する。
【0236】
S1205では、情報機器121は、第3記録装置125に対して、使用可能な画像処理コマンド1103におけるデータ領域数の取得要求を送信する。
【0237】
S1206では、第3記録装置125は、S1205で送信されたデータ領域数の取得要求に対する応答としてデータ領域数4を、情報機器121に通知する。
【0238】
S1207では、情報機器121のCPUは、
図9のフローを用いて、S1202、S1204、S1206で取得したデータ領域数に基づく仮想的色数を導出する。ここで、情報機器121のCPUが、第1記録装置123~第3記録装置125のそれぞれに対する仮想的色数を導出する処理について、
図9を用いて説明する。
【0239】
まず、第1記録装置123に対する仮想的色数を求めるために、S900では、入力画像がモノクロ画像か判定する。本例では、入力画像がモノクロ画像のため、S901に処理を進める。S901では、モノクロ画像に対する画像処理を高速化するか、つまりN並列(Nは2以上の整数)で画像処理するか判定する。本例では、N並列で画像処理を行うため、S902に処理を進める。S902では、仮想的色数Vnをステップ1202で取得されたデータ領域数(つまり3)に設定する。
【0240】
次に、第2記録装置124に対する仮想的色数を求めるために、S900では、入力画像がモノクロ画像か判定する。本例では、入力画像がモノクロ画像のため、S901に処理を進める。S901では、モノクロ画像に対する画像処理を高速化するか、つまりN並列(Nは2以上の整数)で画像処理するか判定する。本例では、N並列で画像処理を行うため、S902に処理を進める。S902では、仮想的色数Vnをステップ1204で取得されたデータ領域数(つまり4)に設定する。
【0241】
最後に、第3記録装置125に対する仮想的色数を求めるために、S900では、入力画像がモノクロ画像か判定する。本例では、入力画像がモノクロ画像のため、S901に処理を進める。S901では、モノクロ画像に対する画像処理を高速化するか、つまりN並列(Nは2以上の整数)で画像処理するか判定する。本例では、N並列で画像処理を行うため、S902に処理を進める。S902では、仮想的色数Vnをステップ1206で取得されたデータ領域数(つまり8)に設定する。
【0242】
S1208では、情報機器121のCPUは、プリンタドライバ122のGUIを介して、S1207で導出した仮想的色数(つまり3,4,8)を並列処理可能な数として、対応する記録装置名とともに表示する表示処理を行う。
【0243】
S1209では、ユーザ120は、プリンタドライバ122のGUIを介して、モノクロ画像の印刷性能が最も高い記録装置として、第3記録装置125を選択し、該選択した第3記録装置125に印刷実行を指示する。
【0244】
S1210では、情報機器121は、第3記録装置125に対して印刷データを送信する。
【0245】
<本実施形態の効果>
以上説明したように本実施形態では、情報機器にインストールされているプリンタドライバが該情報機器に接続されている複数の画像処理装置から取得したデータ領域の数に基づいて仮想的色数を算出し、それを印刷性能として表示する。これにより、ユーザは、最も印刷性能が高い画像処理装置を選択して印刷することができる。
【0246】
[その他の実施形態]
尚、前述の実施形態では、複数(最大でN個)の画素データに対する画像処理を同時に実行可能な画像処理実行部を挙げて、入力カラー画像がRGB3チャンネルの画像であり、画像処理コマンドにおけるデータ領域の数が3の場合について説明した。しかしながら、入力カラー画像がCMYK4チャンネルの画像の場合はデータ領域の数を4としてもよい。また、入力カラー画像の色数(チャンネル数)Mが4以上の場合は、そのM以上の数のデータ領域の数を定義してもよい。さらに、データ領域の数が4である画像処理コマンドをサポートする画像処理装置においてモノクロ画像を高速処理する場合は、仮想的色数を4色として4並列で画像処理を行う構成としてもよい。さらに、仮想的色数を同時処理可能なデータ領域の数の値とする必要はなく、この数未満となるように仮想的色数を決定してもよい。
【0247】
また、前述の実施形態では、画像処理コマンドが、1つのヘッダと3つのデータ領域とから構成される1つのコマンドの場合について説明した。しかしながら、4色以上の入力画像や出力画像を扱う場合は、データ領域の全体のビット数とデータ領域の数を増やしてもよいし、2個以上のコマンドで1画素のデータを表現してもよい。
【0248】
また、前述の実施形態では、モノクロの入力画像に対して、バンド分割して並列処理するためのソフトウェアの制御方法について説明した。しかしながら、必ずしも入力画像がモノクロ画像である必要はなく、入力画像がカラー画像であってもよい。具体的には、RGBの3色の入力画像に対して、画像処理コマンドのデータ領域が10個存在する場合、入力画像の色数が3の整数倍である9つの画素データを並列処理するための制御方法としてもよい。ここで、仮想的色数(=9)を画像データの1画素あたりの色数M(=3)の整数倍としているのは、ソフトウェアの制御をし易くするためである。但し、仮想的色数を10として、例えば1つ目の画像処理コマンドに1~3画素目の画素データ9個と4画素目のRデータを設定する。その次に、2つ目の画像処理コマンドに5~7画素目の画素データ9個と4画素目のGデータを設定する、といったようにソフトウェアで制御してもよい。
【0249】
また、前述の実施形態では、入力画像の色数と出力画像の色数とが同じ場合について説明した。しかしながら、入力画像がRGBの3色に対して画像処理を行い、CMYKの4色の出力画像を出力する等、入力画像の色数と出力画像の色数とが異なってもよい。
【0250】
また、前述の実施形態では、入出力制御部200による画像データの読み書きが32バイト単位で行われる形態を説明した。しかしながら、画像データの読み書きの単位は32バイトに限定されず、画像処理装置上でのRAM101の構成の仕方やRAM101を実現する記憶装置の種類、そして実行する画像処理の種類等に応じて、画像データの読み書きの単位を変更してよい。尚、読み書きの単位が変わった場合、画像データを記憶する203中間バッファ制御部の記憶領域の容量が変わるだけで、モノクロ画像を含む画像処理コマンドの生成手法は変化しない。
【0251】
また、前述の実施形態では、バンド領域のそれぞれが隣接する領域との境界で互いに重ならない場合について説明した。しかしながら、画像処理実行部201にて各バンド領域間で隙間なく空間フィルタ処理などの局所(近傍)画像処理を行なう場合は、
図4(h)~(m)に示すように各バンド領域が互いに重なり合うように構成されてもよい。各バンド領域が重なり合う場合でも、
図4(h)に示すように、Bdhは重なり合う領域を除く高さとして、
図10に示すフローに従ってレジスタ設定値を計算すればよい。
【0252】
また、前述の実施形態では、画像データ出力部218が複数の出力画像を出力する一例として、等倍画像と、1/2倍に縮小された縮小画像とを出力する形態を説明した(
図8参照)。但し、2つの出力画像を出力する場合、各出力画像は、等倍画像、拡大画像、縮小画像の何れでもよい。さらに、画像データ出力部218が出力する出力画像の数は3つ以上であってもよい。
【0253】
また、前述の実施形態では、
図1に示すような画像処理装置の構成におけるソフトウェアの制御方法について説明した。しかしながら、ソフトウェアが分割領域の開始アドレスと、オフセット量とを指定して並列処理する構成であれば、ソフトウェアの制御対象は画像処理装置である必要はない。さらに、ソフトウェアが制御する対象が必ずしも入力の分割領域と出力の分割領域である必要はなく、どちらか一方でよい。例えば、映像データを分割し、分割領域ごとに別々のCPUに送信してそのCPU上で分割領域のデータに重畳表示するための加工処理を行う構成としてもよい。
【0254】
また、本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【符号の説明】
【0255】
100 CPU
103 画像処理部