(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024112718
(43)【公開日】2024-08-21
(54)【発明の名称】画像処理装置及びプログラム
(51)【国際特許分類】
G06T 1/60 20060101AFI20240814BHJP
H04N 1/21 20060101ALI20240814BHJP
G06F 12/0875 20160101ALI20240814BHJP
G06F 12/0893 20160101ALI20240814BHJP
G03G 21/00 20060101ALI20240814BHJP
G03G 15/01 20060101ALI20240814BHJP
【FI】
G06T1/60 450D
G06T1/60 450G
H04N1/21
G06F12/0875 106
G06F12/0893 100
G03G21/00 370
G03G15/01 S
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2023017966
(22)【出願日】2023-02-08
(71)【出願人】
【識別番号】000005496
【氏名又は名称】富士フイルムビジネスイノベーション株式会社
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】橋本 貴之
(72)【発明者】
【氏名】高澤 大樹
(72)【発明者】
【氏名】ヌデ島 正起
【テーマコード(参考)】
2H270
2H300
5B047
5B205
【Fターム(参考)】
2H270MC18
2H270MC24
2H270MF14
2H270ZC04
2H300EH35
2H300GG24
2H300GG27
2H300SS07
2H300SS11
2H300TT04
5B047AA30
5B047CA21
5B047EA07
5B047EB15
5B205LL15
5B205MM03
(57)【要約】
【課題】画素ブロックが1行毎にラインバッファに記憶されて処理される場合に比べて、記憶部への転送効率を向上させた画像処理装置及びプログラムを提供する。
【解決手段】主走査方向に一行に並ぶ画素データを、複数行分第1のキャッシュメモリに格納し、第1のキャッシュメモリに記憶されている複数の画素データに対して、画素ブロック毎に画像形成時の副走査方向のずれが抑制されるようにシフト処理し、シフト処理の結果、第1のキャッシュメモリに記憶される複数行の画素データのうち、記憶部においては連続したアドレスで格納予定の画素データについては、纏めて記憶部に格納する格納処理を行う。
【選択図】
図1
【特許請求の範囲】
【請求項1】
記憶部と、
プロセッサと、
前記プロセッサが利用する第1のキャッシュメモリと、を備え、
前記プロセッサは、
主走査方向に一行に並ぶ画素データを、複数行分前記第1のキャッシュメモリに格納し、
前記第1のキャッシュメモリに記憶されている複数の画素データに対して、処理単位となる所定数の画素データからなる画素ブロック毎に画像形成時の副走査方向のずれが抑制されるようにシフト処理し、
シフト処理の結果、前記第1のキャッシュメモリに記憶される複数行の画素データのうち、前記記憶部においては連続したアドレスで格納予定の画素データについては、纏めて前記記憶部に格納する格納処理を行う
画像処理装置。
【請求項2】
前記プロセッサは、
格納処理において、前記第1のキャッシュメモリに記憶されている複数の行の画素データにおける原点位置から主走査方向に沿った順に、画素ブロック毎に、当該画素ブロックとアドレスが連続している画素ブロックとを纏めて、画素データを前記記憶部に格納する
請求項1に記載の画像処理装置。
【請求項3】
前記プロセッサは、
前記記憶部に格納済みの画素データに対して格納済みであることを示す識別情報を付与し、識別情報を付与された画素データは、格納処理の対象外とする
請求項2に記載の画像処理装置。
【請求項4】
前記第1のキャッシュメモリの容量は、画像全体のデータ量よりも小さい
請求項1に記載の画像処理装置。
【請求項5】
前記プロセッサは、
前記第1のキャッシュメモリに記憶されている複数行の画素データのうち、1つの行の全ての画素データの格納処理が終了した場合、格納処理が終了した行の画素データを格納していた前記第1のキャッシュメモリの領域に、1つの行の全ての画素データの格納処理が終了した時点で前記第1のキャッシュメモリに格納されている画素データの次の行の画素データを格納する
請求項4に記載の画像処理装置。
【請求項6】
前記記憶部は第2のキャッシュメモリを有し、
前記プロセッサは、
格納処理において、画素データを前記第2のキャッシュメモリに格納する
請求項1に記載の画像処理装置。
【請求項7】
記憶部と、
プロセッサと、
前記プロセッサが利用する第1のキャッシュメモリと、を備えた画像処理装置の制御を行うためのプログラムであって、
主走査方向に一行に並ぶ画素データを、複数行分前記第1のキャッシュメモリに格納するステップと、
前記第1のキャッシュメモリに記憶されている複数の画素データに対して、処理単位となる所定数の画素データからなる画素ブロック毎に画像形成時の副走査方向のずれが抑制されるようにシフト処理するステップと、
シフト処理の結果、前記第1のキャッシュメモリに記憶される複数行の画素データのうち、前記記憶部においては連続したアドレスで格納予定の画素データについては、纏めて前記記憶部に格納する格納処理を行うステップと、
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置及びプログラムに関する。
【背景技術】
【0002】
特許文献1及び特許文献2には、所定の解像度を有する画像データのレジストレーションずれを補正する画像形成装置において、メモリアクセスパフォーマンスを向上させる技術が記載されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2012-168372号公報
【特許文献2】特開2019-161338号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
処理単位となる所定数の画素データからなる画素ブロック毎に、画像形成時の副走査方向のずれが抑制されるように画素データをシフトさせるシフト処理を行った補正画像のデータを、記憶部に転送する処理が行われている。
【0005】
ここで、シフト処理前の画素データは、副走査方向の1行毎にラインバッファに記憶され、1行分が記憶部に転送されると、ラインバッファがクリアされ、次の1行分がラインバッファに記憶される。画素データは、ラインバッファ内においては連続したアドレスに格納されている一方、シフト処理により副走査方向にシフトされた場合、シフトされた分、格納先の記憶部ではアドレスがシフトされ、記憶部内では、連続したアドレスに格納されなくなる。記憶部において連続したアドレスに格納予定ではないラインバッファ内の画素ブロックは、一纏めに記憶部に転送できず、分けて順次転送する必要がある。一纏めに記憶部に転送できない画素ブロックが多くなる程、記憶部への転送処理の効率が悪くなる。
【0006】
本発明の目的は、画素ブロックが1行毎にラインバッファに記憶されて処理される場合に比べて、記憶部への転送効率を向上させた画像処理装置及びプログラムを提供することである。
【課題を解決するための手段】
【0007】
第1態様の画像処理装置は、記憶部と、プロセッサと、前記プロセッサが利用する第1のキャッシュメモリと、を備え、前記プロセッサは、主走査方向に一行に並ぶ画素データを、複数行分前記第1のキャッシュメモリに格納し、前記第1のキャッシュメモリに記憶されている複数の画素データに対して、処理単位となる所定数の画素データからなる画素ブロック毎に画像形成時の副走査方向のずれが抑制されるようにシフト処理し、シフト処理の結果、前記第1のキャッシュメモリに記憶される複数行の画素データのうち、前記記憶部においては連続したアドレスで格納予定の画素データについては、纏めて前記記憶部に格納する格納処理を行う。
【0008】
第2態様の画像処理装置は、第1態様の画像処理装置において、前記プロセッサは、格納処理において、前記第1のキャッシュメモリに記憶されている複数の行の画素データにおける原点位置から主走査方向に沿った順に、画素ブロック毎に、当該画素ブロックとアドレスが連続している画素ブロックとを纏めて、画素データを前記記憶部に格納する。
【0009】
第3態様の画像処理装置は、第2態様の画像処理装置において、前記プロセッサは、前記記憶部に格納済みの画素データに対して格納済みであることを示す識別情報を付与し、識別情報を付与された画素データは、格納処理の対象外とする。
【0010】
第4態様の画像処理装置は、第1態様の画像処理装置において、前記第1のキャッシュメモリの容量は、画像全体のデータ量よりも小さい。
【0011】
第5態様の画像処理装置は、第4態様の画像処理装置において、前記プロセッサは、前記第1のキャッシュメモリに記憶されている複数行の画素データのうち、1つの行の全ての画素データの格納処理が終了した場合、格納処理が終了した行の画素データを格納していた前記第1のキャッシュメモリの領域に、1つの行の全ての画素データの格納処理が終了した時点で前記第1のキャッシュメモリに格納されている画素データの次の行の画素データを格納する。
【0012】
第6態様の画像処理装置は、第1態様の画像処理装置において、前記記憶部は第2のキャッシュメモリを有し、前記プロセッサは、格納処理において、画素データを前記第2のキャッシュメモリに格納する。
【0013】
第7態様のプログラムは、記憶部と、プロセッサと、前記プロセッサが利用する第1のキャッシュメモリと、を備えた画像処理装置の制御を行うためのプログラムであって、主走査方向に一行に並ぶ画素データを、複数行分前記第1のキャッシュメモリに格納するステップと、前記第1のキャッシュメモリに記憶されている複数の画素データに対して、処理単位となる所定数の画素データからなる画素ブロック毎に画像形成時の副走査方向のずれが抑制されるようにシフト処理するステップと、シフト処理の結果、前記第1のキャッシュメモリに記憶される複数行の画素データのうち、前記記憶部においては連続したアドレスで格納予定の画素データについては、纏めて前記記憶部に格納する格納処理を行うステップと、をコンピュータに実行させる。
【発明の効果】
【0014】
第1態様の画像処理装置によれば、画素ブロックが1行毎にラインバッファに記憶されて処理される場合に比べて、記憶部への転送効率を向上させることができる。
【0015】
第2態様の画像処理装置によれば、画像を構成する全ての画素データを漏れなく記憶部に格納することができる。
【0016】
第3態様の画像処理装置によれば、格納済みの画素データについて格納処理を再度実行する場合と比較して、格納処理に要する時間を短くすることができる。
【0017】
第4態様の画像処理装置によれば、第1のキャッシュメモリの容量が画像全体のデータ量と同等以上の場合と比較して、第1のキャッシュメモリに要するコストを抑えることができる。
【0018】
第5態様の画像処理装置によれば、画像全体のデータ量よりも小さい第1のキャッシュメモリを用いて、格納処理を効率的に行うことができる。
【0019】
第6態様の画像処理装置によれば、キャッシュメモリを有していない記憶部と比較して、記憶部におけるデータの書き込み効率を向上させることができる。
【0020】
第7態様のプログラムによれば、画素ブロックが1行毎にラインバッファに記憶されて処理される場合に比べて、記憶部への転送効率を向上させることができる。
【図面の簡単な説明】
【0021】
【
図1】本発明の具体的な実施態様の一例である画像処理装置を示す構成図である。
【
図2】上記画像処理装置の一部を構成するコンピュータの構成図である。
【
図4】画像データのシフト処理前とシフト処理後のデータ構成の具体例を示す図である。
【
図5】上記画像処理装置におけるシフト処理の詳細について説明するための図である。
【
図6】上記画像処理装置におけるシフト処理の詳細について説明するための図である。
【
図7】上記画像処理装置におけるシフト処理の詳細について説明するための図である。
【
図8】上記画像処理装置におけるシフト処理の詳細について説明するための図である。
【
図9】上記画像処理装置におけるシフト処理の詳細について説明するための図である。
【
図10】上記画像処理装置におけるシフト処理の詳細について説明するための図である。
【発明を実施するための形態】
【0022】
以下、本発明に係る実施の形態について、図面を基に詳細に説明する。
図1は、本発明の具体的な実施態様の一例である画像処理装置1を示す構成図である。
【0023】
画像処理装置1は、画像データ(文字や数字や記号のみの画像に関する画像データを含む)に対して画像処理を実行する。例えば、コンピュータ等の外部装置から得られる画像データ又はスキャナ等により読み込まれた画像データが画像処理装置1によって画像処理される。そして、画像処理装置1による画像処理後の画像データは、画像形成処理により画像形成される。例えばLED(Light Emitting Diode:発光ダイオード)を利用した印刷処理により、画像処理後の画像データに対応した画像が紙等の媒体上に印刷される。
【0024】
画像処理装置1は、複数のモジュール10A~10Sと、DMAコントローラ20と、バスブリッジ30と、DRAM(Dynamic Random Access Memory)40と、制御部50と、を備えている。DRAM40は、本開示の技術における記憶部の一例である。
【0025】
複数のモジュール10A~10Sは、画像データに対して画像処理を実行する。例えば、モジュール10A,モジュール10B,モジュール10C,・・・の順に、各モジュールに応じた画像処理が次々に実行される。
【0026】
複数のモジュール10A~10Sの各モジュールは、DRAM40内に構成される画像処理用のラインバッファへのパスを備えている。つまり、DMAコントローラ20により制御されるDMA(Direct Memory Access)転送により、バスブリッジ30を介して、各モジュール(10A~10S)からDRAM40へのデータの書き込み(write)と、DRAM40から各モジュール(10A~10S)へのデータの読み取り(read)が行われる。
【0027】
複数のモジュール10A~10Sの中には、シフト処理モジュール10Sが含まれている。シフト処理モジュール10Sは、ラインバッファ11を利用可能に構成されている。ラインバッファ11は、本開示の技術における第1のキャッシュメモリの一例である。シフト処理モジュール10Sは、画像データに対してシフト処理を実行する。シフト処理については後に詳述する。
【0028】
図1の画像処理装置1が備える複数のモジュール10A~10Sは、例えば、画像処理プロセッサ等のハードウェアを利用して実現される。
【0029】
図1の画像処理装置1は、一例として、
図2に示すようなコンピュータ60を利用して実現される。コンピュータ60は、CPU(Central Processing Unit)等の演算デバイス61、メモリ及び/又はハードディスク等の記憶デバイス62、インターネット等の通信回線を利用する通信デバイス63、光ディスク及び/又は半導体メモリ等の記憶メディアからデータを送受信するメディアデバイス64、ディスプレイ等の表示デバイス65、ユーザから操作を受け付ける操作デバイス66等のハードウェア資源を備えている。演算デバイス61は、本開示の技術におけるプロセッサの一例である。
【0030】
そして、例えば、
図1に示す画像処理装置1が備える符号を付した複数部分のうちの少なくとも一部の機能に対応したプログラム(ソフトウェア)がコンピュータ60に読み込まれ、そのコンピュータ60が備えるハードウェア資源と読み込まれたソフトウェアとの協働により、画像処理装置1が備える少なくとも一部の機能がコンピュータにより実現される。そのプログラムは、例えば、インターネット等の通信回線を介してコンピュータ60に提供されてもよいし、光ディスクや半導体メモリ等の記憶媒体に記憶されてコンピュータ60に提供されてもよい。
【0031】
画像処理装置1の全体構成は以上の通りである。次に、画像処理装置1により実現される機能等について詳述する。
【0032】
図3は、シフト処理の具体例を示す図である。
図3に示す具体例において、紙等の媒体上に形成される二次元の出力画像は、主走査方向(各ラインの方向)の画像形成動作を副走査方向に移動させながら繰り返す画像形成処理により形成される。カラー画像であれば、例えば、Y(イエロー),M(マゼンタ),C(シアン),K(黒)の4色トナーの各々に対応したLEDプリントヘッドにより画像形成が行われる。例えば、YMCKの4色(4トナー)に対応した4本のラインの組により、カラー画像の1ラインが形成される。
【0033】
ところが、例えばLEDプリントヘッド等により媒体上に画像を形成すると、LEDプリントヘッドの製造上のばらつき等により、設計上の理想的な主走査方向からラインがずれてしまい、例えば主走査方向に対して傾斜したラインが形成されてしまう。このような画像形成時の副走査方向のずれ(例えば、傾き等)を抑制するために、副走査方向のシフト処理が実行される。
【0034】
図3(A)には、シフト処理を無効にした画像形成の具体例が図示されている。入力画像に対してシフト処理を行わずに画像形成処理が実行されると、画像形成処理において主走査方向に対して傾斜したラインが形成されてしまう。これにより例えば
図3(A)に示す具体例のように、YMCKの4色のトナーの各々に対応したラインが傾斜した出力画像が形成されてしまう。
【0035】
これに対し、
図3(B)には、シフト処理を有効にした画像形成の具体例が図示されている。シフト処理では、画像形成処理において副走査方向に生じるずれの反対方向に入力画像がシフトされる。例えば、YMCKの4色のトナーの各トナー毎に、入力画像を構成する画素のラインが副走査方向にシフト(すなわち、画素位置の移動)される。
【0036】
そして、シフト処理による意図的なずれと画像形成処理において生じてしまうずれが打ち消し合うことにより、副走査方向のずれが抑制される。これにより、例えば
図3(B)に示す具体例のように、ラインの傾斜が抑制された(例えば、ラインの傾斜が無い)出力画像が形成される。
【0037】
シフト処理モジュール10Sは、DRAM40に格納されている画像データに対して、上記のようなシフト処理を実行する。
【0038】
図4は、画像データのシフト処理前とシフト処理後のデータ構成の具体例を示す図である。画像データは複数のラインで構成されており、各ラインは複数の画素データで構成されている。
【0039】
図4に示す具体例では、シフト処理前の画像データとして、画像データ内における配列順で複数の画素データがDRAM40内に格納されている。そして、先頭ラインから順に、かつ、ライン毎に先頭画素から順に各画素データに対してアドレスが割り当てられる。
【0040】
シフト処理モジュール10Sにおけるシフト処理の過程では、先ず、DRAM40に格納されているシフト処理前の画像データが、一定のデータ量毎にラインバッファ11に転送される。
【0041】
次に、シフト処理モジュール10Sにおいてラインバッファ11上でシフト処理として、処理単位となる所定数の画素データからなる画素ブロック毎に画像形成処理における副走査方向のずれが抑制されるように、画像形成処理において生じるずれの反対方向に入力画像がシフトされる(
図3参照)。
【0042】
例えば、
図4に示す具体例において、シフト処理前の画素ブロック(1-1)、画素ブロック(1-2)、画素ブロック(1-3)、画素ブロック(1-4)等の各画素ブロックは、16画素分(16バイト)の画素データから構成されている。各画素ブロックは、シフト処理における最小補正単位となる。もちろん、16画素以外の複数画素で最小補正単位が構成されてもよいし、最小補正単位が1画素であってもよい。
【0043】
ここで、画素ブロックの符号(m-n)は、原点を基準として、mライン目n個目の画素ブロックであることを示している。
【0044】
シフト処理後の画像データは、ラインバッファ11からDRAM40に転送され、DRAM40に格納される。
【0045】
ラインバッファ11からDRAM40に画素データを転送する際には、通常は一定のデータ量毎に、転送開始、転送終了、及び、書き込み先アドレスの指定等の処理が必要である。ただし、DRAM40に書き込む際のアドレスが連続するデータの場合には、最初に一度所定の処理を行い、以降はデータを連続的に転送する、所謂バースト転送と呼ばれる方式でデータの転送を行うことにより、効率的にデータを転送できる。
【0046】
ここで、シフト処理モジュール10Sが利用するラインバッファ11は、例えばSRAM(Static Random Access Memory)等、DRAM40よりも高速動作が可能なメモリが用いられるが、コスト等の要因により、一般的にはDRAM40よりも小さい容量のものが用いられる。
【0047】
例えば、ラインバッファ11の容量が、シフト処理前の画像データにおける1ライン分のデータ量である場合、DRAM40に格納されているシフト処理前の画像データが、1ライン分のデータ量毎にラインバッファ11に転送され、シフト処理モジュール10Sにおいてラインバッファ11上でシフト処理が行われた後、ラインバッファ11からDRAM40に転送され、DRAM40に格納される。
【0048】
図4に示すように、シフト処理前の画像データ上では1ライン内で連続したアドレスの画素データであった画素ブロック(1-1)、画素ブロック(1-2)、画素ブロック(1-3)、及び、画素ブロック(1-4)が、シフト処理により、ラインを跨いだデータとなる場合がある。
【0049】
そのため、画素ブロック(1-1)と画素ブロック(1-2)は、ラインバッファ11からDRAM40に一纏めに転送できず、分けて順次転送する必要がある。
【0050】
同様に、画素ブロック(1-2)と画素ブロック(1-3)、画素ブロック(1-3)と画素ブロック(1-4)も、ラインバッファ11からDRAM40に一纏めに転送できず、分けて順次転送する必要がある。
【0051】
画素データをDRAM40に書き込む際のアドレスが画素ブロック毎に連続しない場合、画素データをDRAM40に書き込む際のアドレスが画素ブロック毎に連続する場合と比較して、DRAM40に対して1回のバースト転送で転送できるデータが短くなる。
【0052】
そのため、シフト処理後の画素データをラインバッファ11からDRAM40に転送する際に、バースト転送の回数が増加し、転送開始及び転送終了等のデータ転送以外の処理が増加して、データの転送効率が低下する。
【0053】
そこで、本実施形態の制御部50は、主走査方向に一行に並ぶ画素データを、複数ライン分ラインバッファ11に格納し、ラインバッファ11に記憶されている複数の画素データに対して、処理単位となる所定数の画素データからなる画素ブロック毎にシフト処理を行い、シフト処理の結果、ラインバッファ11に記憶される複数ラインの画素データのうち、DRAM40においては連続したアドレスで格納予定の画素データについては、纏めてDRAM40に格納する格納処理を行う。
【0054】
本実施形態において、制御部50は、格納処理において、ラインバッファ11に記憶されている複数のラインの画素データにおける原点位置から主走査方向に沿った順に、画素ブロック毎に、当該画素ブロックとアドレスが連続している画素ブロックとを纏めて、画素データをDRAM40に格納するようにしてもよい。
【0055】
また、制御部50は、ラインバッファ11に記憶されている画素データのうち、DRAM40に格納済みの画素データに対して格納済みであることを示す識別情報を付与し、識別情報を付与された画素データは、格納処理の対象外とするようにしてもよい。
【0056】
また、ラインバッファ11の容量は、画像データ全体のデータ量よりも小さいものとしてもよい。
【0057】
また、その場合には、制御部50は、ラインバッファ11に記憶されている複数ラインの画素データのうち、1つのラインの全ての画素データの格納処理が終了した場合、格納処理が終了したラインの画素データを格納していたラインバッファ11の領域に、1つのラインの全ての画素データの格納処理が終了した時点でラインバッファ11に格納されている画素データの次の行の画素データを格納するようにしてもよい。
【0058】
また、DRAM40がロウバッファ41を備えている場合には、制御部50は、格納処理において、画素データをロウバッファ41に格納するようにしてもよい。ロウバッファ41を介した格納処理により、DRAM40へのデータの書き込みの高速化が実現される。ロウバッファ41は、本開示の技術における第2のキャッシュメモリの一例である。
【0059】
以下、
図5から
図10を参照して、本実施形態の画像処理装置1におけるシフト処理について詳細に説明する。
【0060】
本説明では、説明の簡略化のために、1ラインが4つの画素ブロックで構成される場合を例として説明する。また、ラインバッファ11に格納する画素データのライン数を3ラインとした場合を例として説明する。
【0061】
図5に示すように、制御部50は、シフト処理前の画像における原点から順に注目画素ブロックを設定する。本例において画像の原点の位置は、一例として、左上位置とする。そのため、
図5中の画素ブロック(1-1)が最初の注目画素ブロックとなる。
図5から
図10においては、注目画素ブロックに設定された画素ブロックを太い実線の枠で表示している。
【0062】
次に、制御部50は、DRAM40に格納されているシフト処理前の画像データのうち、主走査方向に一行に並ぶ画素データを、注目画素ブロック(1-1)を含む3ライン分の画素データを取得して、ラインバッファ11に格納する。
【0063】
次に、制御部50は、シフト処理モジュール10Sに対して、ラインバッファ11に格納されている画素データに対して、副走査方向のシフト処理を実行させる。
【0064】
ここでは、シフト処理の具体例として、左端の画素ブロック(m-1)を基準とし、左から2個目の画素ブロック(m-2)のシフト量をマイナス1ライン、左から3個目の画素ブロック(m-3)のシフト量をプラス1ライン、左から4個目の画素ブロック(m-4)のシフト量をプラス2ラインとする。
【0065】
その結果、ラインバッファ11に格納されている画素データのシフト処理後の画像中での位置関係は、
図5中の補正後画像に示すような位置関係となる。
【0066】
次に、制御部50は、シフト処理後の画像において、同じ行の中で注目画素ブロック(1-1)の左右に連続して隣接する画素ブロックの有無を判定する。
図5に示す例では、注目画素ブロック(1-1)及び画素ブロック(2-2)が、連続する画素ブロックとなる。
図5から
図10においては、シフト処理後の画像において、注目画素ブロックに隣接し、注目画素ブロックとともにバースト転送により転送される画素ブロックを太い点線の枠で表示している。
【0067】
次に、制御部50は、注目画素ブロック(1-1)及び画素ブロック(2-2)の画素データを、バースト転送によりラインバッファ11からDRAM40に転送する。
【0068】
次に、制御部50は、
図6に示すように、DRAM40に格納済みの画素ブロックに対して、格納済みであることを示す識別情報を付与する。識別情報を付与された画素ブロックは、以降は格納処理の対象外とする。
図6から
図10においては、識別情報が付与された画素ブロックをグレーで表示している。これにより、1つの注目画素ブロックにおける格納処理が完了する。
【0069】
上記の通り、注目画素ブロック(1-1)における格納処理が完了したら、制御部50は、シフト処理前の画像データにおいて、画素ブロック(1-1)の右隣の画素ブロック(1-2)を、次の注目画素ブロック(1-2)として設定する。
【0070】
次に、制御部50は、シフト処理後の画像において、同じ行の中で注目画素ブロック(1-2)の左右に連続して隣接する画素ブロックの有無を判定する。
図6に示す例では、注目画素ブロック(1-2)に隣接する画素ブロックはない。
【0071】
次に、制御部50は、注目画素ブロック(1-2)の画素データのみを、バースト転送によりラインバッファ11からDRAM40に転送する。
【0072】
次に、制御部50は、
図7に示すように、DRAM40に格納済みの画素ブロックに対して、格納済みであることを示す識別情報を付与し、注目画素ブロック(1-2)における格納処理を完了する。
【0073】
上記の通り、注目画素ブロック(1-2)における格納処理が完了したら、制御部50は、シフト処理前の画像データにおいて、画素ブロック(1-2)の右隣の画素ブロック(1-3)を、次の注目画素ブロック(1-3)として設定する。
【0074】
次に、制御部50は、シフト処理後の画像において、同じ行の中で注目画素ブロック(1-3)の左右に連続して隣接する画素ブロックの有無を判定する。
図7に示す例では、画素ブロック(2-1)、画素ブロック(3-2)、及び、注目画素ブロック(1-3)が、連続する画素ブロックとなる。
【0075】
次に、制御部50は、画素ブロック(2-1)、画素ブロック(3-2)、及び、注目画素ブロック(1-3)の画素データを、バースト転送によりラインバッファ11からDRAM40に転送する。
【0076】
次に、制御部50は、
図8に示すように、DRAM40に格納済みの画素ブロックに対して、格納済みであることを示す識別情報を付与し、注目画素ブロック(1-3)における格納処理を完了する。
【0077】
上記の通り、注目画素ブロック(1-3)における格納処理が完了したら、制御部50は、シフト処理前の画像データにおいて、画素ブロック(1-3)の右隣の画素ブロック(1-4)を、次の注目画素ブロック(1-4)として設定する。
【0078】
次に、制御部50は、シフト処理後の画像において、同じ行の中で注目画素ブロック(1-4)の左右に連続して隣接する画素ブロックの有無を判定する。
図8に示す例では、画素ブロック(2-3)及び注目画素ブロック(1-4)が、連続する画素ブロックとなる。
【0079】
次に、制御部50は、画素ブロック(2-3)及び注目画素ブロック(1-4)の画素データを、バースト転送によりラインバッファ11からDRAM40に転送する。
【0080】
次に、制御部50は、
図9に示すように、DRAM40に格納済みの画素ブロックに対して、格納済みであることを示す識別情報を付与し、注目画素ブロック(1-4)における格納処理を完了する。
【0081】
注目画素ブロック(1-4)における格納処理の完了により、1ライン目の画素ブロックの格納処理が全て完了したため、制御部50は、シフト処理前の画像データにおいて、画素ブロック(1-4)の次のラインである2ライン目の左側から順に注目画素ブロックを設定する。
【0082】
ただし、本例では、2ライン目の画素ブロック(2-1)、画素ブロック(2-2)、及び、画素ブロック(2-3)に対して格納済みであることを示す識別情報が付与されているため、制御部50は、2ライン目の識別情報が付与されていない画素ブロックの中で最も左側の画素ブロック(2-4)を、次の注目画素ブロック(2-4)として設定する。
【0083】
また、制御部50は、1ライン目の画素ブロックの格納処理が全て完了したため、ラインバッファ11の1ライン目の画素データの格納領域に4ライン目の画素データを上書きする。なお、
図9及び後述の
図10中では、説明のために、ラインバッファ内のデータはシフト処理前の画像における配置順に表示している。
【0084】
次に、制御部50は、シフト処理後の画像において、同じ行の中で注目画素ブロック(2-4)の左右に連続して隣接する画素ブロックの有無を判定する。
図9に示す例では、画素ブロック(3-3)及び注目画素ブロック(2-4)が、連続する画素ブロックとなる。
【0085】
次に、制御部50は、画素ブロック(3-3)及び注目画素ブロック(3-4)の画素データを、バースト転送によりラインバッファ11からDRAM40に転送する。
【0086】
次に、制御部50は、
図10に示すように、DRAM40に格納済みの画素ブロックに対して、格納済みであることを示す識別情報を付与し、注目画素ブロック(2-4)における格納処理を完了する。
【0087】
注目画素ブロック(2-4)における格納処理の完了により、2ライン目の画素ブロックの格納処理が全て完了したため、制御部50は、シフト処理前の画像データにおいて、画素ブロック(2-4)の次のラインである3ライン目の左側から順に注目画素ブロックを設定する。
【0088】
制御部50は、3ライン目の識別情報が付与されていない画素ブロックの中で最も左側の画素ブロック(3-1)を、次の注目画素ブロック(3-1)として設定する。
【0089】
また、制御部50は、2ライン目の画素ブロックの格納処理が全て完了したため、ラインバッファ11の2ライン目の画素データの格納領域に5ライン目の画素データを上書きする。
【0090】
次に、制御部50は、シフト処理後の画像において、同じ行の中で注目画素ブロック(3-1)の左右に連続して隣接する画素ブロックの有無を判定する。
図10に示す例では、注目画素ブロック(3-1)、画素ブロック(4-2)、画素ブロック(2-3)、及び、画素ブロック(1-4)が、連続する画素ブロックとなる。
【0091】
ただし、これらの画素ブロックのうち、画素ブロック(2-3)及び画素ブロック(1-4)には識別情報が付与されているため、画素ブロック(2-3)及び画素ブロック(1-4)の格納処理は行わない。
【0092】
従って、制御部50は、注目画素ブロック(3-1)及び画素ブロック(4-2)の画素データを、バースト転送によりラインバッファ11からDRAM40に転送する。
【0093】
次に、制御部50は、DRAM40に格納済みの画素ブロックに対して、格納済みであることを示す識別情報を付与し、注目画素ブロック(3-1)における格納処理を完了する。
【0094】
以後、制御部50は、シフト処理前の画像データにおける全ての画素ブロックの格納処理が完了するまで、上記の処理を繰り返す。
【0095】
なお、上記実施形態において、ラインバッファ11の容量は、画像データ全体のデータ量よりも小さいものであるが、画像データ全体のデータ量と同等以上の容量としてもよい。
【0096】
また、DRAM40は、ロウバッファ41を備えていないものとしてもよく、その場合には、制御部50は、格納処理において、画素データをDRAM40に直接格納すればよい。
【0097】
[変形例]
以上、本発明の一実施形態の画像処理装置について説明してきたが、本発明は上記実施形態に限定されず、適宜変更することもできる。
【0098】
上記各実施形態において、プロセッサとは広義的なプロセッサを指し、汎用的なプロセッサ(例えばCPU:Central Processing Unit、等)や、専用のプロセッサ(例えばGPU:Graphics Processing Unit、ASIC:Application Specific Integrated Circuit、FPGA:Field Programmable Gate Array、プログラマブル論理デバイス等)を含むものである。
【0099】
また上記各実施形態におけるプロセッサの動作は、1つのプロセッサによって成すのみでなく、物理的に離れた位置に存在する複数のプロセッサが協働して成すものであってもよい。また、プロセッサの各動作の順序は上記各実施形態において記載した順序のみに限定されるものではなく、適宜変更してもよい。
【0100】
[付記]
以下に、本開示の好ましい形態について付記する。
【0101】
(((1)))
記憶部と、
プロセッサと、
前記プロセッサが利用する第1のキャッシュメモリと、を備え、
前記プロセッサは、
主走査方向に一行に並ぶ画素データを、複数行分前記第1のキャッシュメモリに格納し、
前記第1のキャッシュメモリに記憶されている複数の画素データに対して、処理単位となる所定数の画素データからなる画素ブロック毎に画像形成時の副走査方向のずれが抑制されるようにシフト処理し、
シフト処理の結果、前記第1のキャッシュメモリに記憶される複数行の画素データのうち、前記記憶部においては連続したアドレスで格納予定の画素データについては、纏めて前記記憶部に格納する格納処理を行う
画像処理装置。
【0102】
(((2)))
前記プロセッサは、
格納処理において、前記第1のキャッシュメモリに記憶されている複数の行の画素データにおける原点位置から主走査方向に沿った順に、画素ブロック毎に、当該画素ブロックとアドレスが連続している画素ブロックとを纏めて、画素データを前記記憶部に格納する
(((1)))に記載の画像処理装置。
【0103】
(((3)))
前記プロセッサは、
前記記憶部に格納済みの画素データに対して格納済みであることを示す識別情報を付与し、識別情報を付与された画素データは、格納処理の対象外とする
(((2)))に記載の画像処理装置。
【0104】
(((4)))
前記第1のキャッシュメモリの容量は、画像全体のデータ量よりも小さい
(((1)))から(((3)))のいずれか1項に記載の画像処理装置。
【0105】
(((5)))
前記プロセッサは、
前記第1のキャッシュメモリに記憶されている複数行の画素データのうち、1つの行の全ての画素データの格納処理が終了した場合、格納処理が終了した行の画素データを格納していた前記第1のキャッシュメモリの領域に、1つの行の全ての画素データの格納処理が終了した時点で前記第1のキャッシュメモリに格納されている画素データの次の行の画素データを格納する
(((4)))に記載の画像処理装置。
【0106】
(((6)))
前記記憶部は第2のキャッシュメモリを有し、
前記プロセッサは、
格納処理において、画素データを前記第2のキャッシュメモリに格納する
(((1)))から(((5)))のいずれか1項に記載の画像処理装置。
【0107】
(((7)))
記憶部と、
プロセッサと、
前記プロセッサが利用する第1のキャッシュメモリと、を備えた画像処理装置の制御を行うためのプログラムであって、
主走査方向に一行に並ぶ画素データを、複数行分前記第1のキャッシュメモリに格納するステップと、
前記第1のキャッシュメモリに記憶されている複数の画素データに対して、処理単位となる所定数の画素データからなる画素ブロック毎に画像形成時の副走査方向のずれが抑制されるようにシフト処理するステップと、
シフト処理の結果、前記第1のキャッシュメモリに記憶される複数行の画素データのうち、前記記憶部においては連続したアドレスで格納予定の画素データについては、纏めて前記記憶部に格納する格納処理を行うステップと、
をコンピュータに実行させるためのプログラム。
【0108】
以下に、付記の構成による効果について記載する。
【0109】
(((1)))の画像処理装置によれば、画素ブロックが1行毎にラインバッファに記憶されて処理される場合に比べて、記憶部への転送効率を向上させることができる。
【0110】
(((2)))の画像処理装置によれば、画像を構成する全ての画素データを漏れなく記憶部に格納することができる。
【0111】
(((3)))の画像処理装置によれば、格納済みの画素データについて格納処理を再度実行する場合と比較して、格納処理に要する時間を短くすることができる。
【0112】
(((4)))の画像処理装置によれば、第1のキャッシュメモリの容量が画像全体のデータ量と同等以上の場合と比較して、第1のキャッシュメモリに要するコストを抑えることができる。
【0113】
(((5)))の画像処理装置によれば、画像全体のデータ量よりも小さい第1のキャッシュメモリを用いて、格納処理を効率的に行うことができる。
【0114】
(((6)))の画像処理装置によれば、キャッシュメモリを有していない記憶部と比較して、記憶部におけるデータの書き込み効率を向上させることができる。
【0115】
(((7)))のプログラムによれば、画素ブロックが1行毎にラインバッファに記憶されて処理される場合に比べて、記憶部への転送効率を向上させることができる。
【符号の説明】
【0116】
1 画像処理装置
10A、10B、10C モジュール
10S シフト処理モジュール
11 ラインバッファ
20 DMAコントローラ
30 バスブリッジ
40 DRAM
41 ロウバッファ
50 制御部
60 コンピュータ
61 演算デバイス
62 記憶デバイス
63 通信デバイス
64 メディアデバイス
65 表示デバイス
66 操作デバイス