JP5671635B2 - 画像処理装置及びその制御方法 - Google Patents

画像処理装置及びその制御方法 Download PDF

Info

Publication number
JP5671635B2
JP5671635B2 JP2014001226A JP2014001226A JP5671635B2 JP 5671635 B2 JP5671635 B2 JP 5671635B2 JP 2014001226 A JP2014001226 A JP 2014001226A JP 2014001226 A JP2014001226 A JP 2014001226A JP 5671635 B2 JP5671635 B2 JP 5671635B2
Authority
JP
Japan
Prior art keywords
data
command
processing
image processing
image
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014001226A
Other languages
English (en)
Other versions
JP2014112396A (ja
Inventor
伊藤 忠幸
忠幸 伊藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2014001226A priority Critical patent/JP5671635B2/ja
Publication of JP2014112396A publication Critical patent/JP2014112396A/ja
Application granted granted Critical
Publication of JP5671635B2 publication Critical patent/JP5671635B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、画像処理方法および画像処理装置に関する。特に、画像処理のためにメインメモリの複数の画像データや補正データなどを分割して取り扱い、必要なデータを逐次的に読み出して画像処理や補正処理を行う場合に用いて好適なものである。
一般に、画像形成を行って出力するに際し、空間フィルタ処理などの局所(近傍)画像処理が行われている。この局所画像処理は、処理対象となる画素(以下、処理画素と略称する)を含む空間フィルタ領域に含まれる画素を用いて何らかの演算を行う画像処理のことである。
例えば、図3のデジタル画像データ300に対してエッジ強調処理やぼかし処理といった空間フィルタ処理が施される。特許文献1〜4は、デジタル画像データを領域ごとに分割し、別々の領域ごとに局所画像処理を行うという技術である。この技術では、図3の(a)〜(d)に示されるように、1枚のデジタル画像データ全体が帯状(短冊状)に分割され、逐次的に領域毎に各種の画像処理が行なわれる。
この分割された細長い領域をバンド領域と呼び、バンド領域が展開される記憶領域をバンドメモリと呼ぶ。バンドメモリは、例えばメインメモリ内に記憶領域として確保される。かかるバンド処理では、各バンド領域間で隙間なく局所画像処理を行うために、各バンド領域が、夫々隣接する領域との境界で一部分が互いに重なり合うようにしている。また、特許文献4では、各バンド領域の高さと同一の方向に1画素ずつ画素を走査することで、局所画像処理に必要な処理画素を保持する遅延メモリの容量を各バンド領域の高さの大きさで規定し、遅延メモリの省メモリ化を実現している。
一方、特許文献1〜4記載の技術のように局所画像処理を考慮するだけでは、対応できない画像処理が多く存在する。
まず、スキャナなどの画像読み取り装置による読み取り画像に対して、センサデバイスの読み取り素子の個体差を補正するような補正処理があげられる。このような補正処理では、読み取り最小値データ、読み取り最大値データを基に補正対象である読み取り画像を画素データ(画素値)ごとに補正する。
他に、複数のレンダリング画像を合成データ(α値)に応じて画像合成するような画像処理がある。この種の画像処理では、例えば2枚の合成対象のレンダリング画像を、画素毎に設定された合成比率(合成データ)で合成する。
また、例えば動画像のインターレース/プログレッシブ変換(以下、I/P変換と略称する)のように時間軸方向に連続した複数フィールド画像を参照して適応的な空間フィルタ処理を施す場合がある。ここで、I/P変換のように複数フィールド画像を参照するような画像処理では、より多くのフィールド画像を用いて適応処理した方が高品位な画像処理を施せる。従って、解像度や参照フィールド数に応じて柔軟に画像処理方法を切り替えることが重要となる。
上述の画像処理に共通することは、画素データが2次元に配置された画像データを1枚だけ考慮して画像処理するだけでは不十分ということである。例えば、上述の画像処理に必要な画像データや補正データや合成データは、
・センサ形状に依存して外部メモリからの読み出し回数が異なる。
・ユーザの指定する数で、外部メモリから読み出すレンダリング画像の枚数が異なる。
・放送波の入力解像度で、外部メモリから読み出すフィールド画像の枚数が異なる。
このように画像処理の際に必要となるデータは多岐にわたり、一般的に外部メモリに記憶される。そのため、画像処理の種類に応じて多岐のデータを外部メモリから読み出して画像処理回路に転送することが必要となる。
一般に画像処理装置の分野では、CPUがダイレクトメモリアクセスコントローラ(Direct Memory Access Controller、以下DMAC)に対して読み出しアドレスを設定しDMACを起動する。起動されたDMACは、読み出しアドレスに従ってメモリコントローラを介して外部メモリから画像処理に必要なデータを取得し、画像処理回路に取得データを転送する。画像処理回路は入力データをもとに画像処理を行う。
上記のデータは、補正処理のようにデータの種類が異なったり、I/P変換のように放送波によって時間軸がずれて外部機器から入力されるため、外部メモリの別領域に格納される。このような別領域に格納されたデータを、前述バンド領域毎にさらに分割して逐次的に画像処理を行うためには、別領域にある各データをバンド領域に相当する領域だけ部分的に外部メモリから読み出して画像処理回路に転送する必要がある。このようなデータ読み出しを実現するためには特許文献5〜6のような複数チャネルDMACを用いて実現することが考えられる。
しかしながら、たとえ複数チャネルDMACを用いたとしても、前述したバンド領域ごとの逐次的な画像処理では、DMACを制御するCPUは、
(1)次のバンド領域の画像処理に必要となる種々のデータの先頭アドレスと転送サイズをDMACに設定し、
(2)画像処理回路のレジスタを設定し、
(3)DMACを起動し、
(4)DMACにより外部メモリから画像処理回路へ画像データを転送する、
といった一連の制御を画像処理回路からの画像処理終了割り込みを検知するたびに行う必要がある。すなわち、CPUは、(1)〜(4)の制御を、データの種類ごとに、バンド処理の回数だけ繰り返さなければならない。
また特許文献2〜4のようにバンド領域の高さ方向に1画素を走査するためには、後述の画像処理入力回路にてHV変換(水平方向から垂直方向への走査変換)を行う必要がある。このHV変換のためにCPUは、後述の小容量の転送ブロック単位に非常に多くの回数にわたってDMACを起動する事となり、CPUの制御回数は増大する。
一方、汎用CPUは、どのような演算であっても1サイクルの処理時間を消費し、また画像処理に必要なパラメータや中間演算データなどのレジスタへの書き込みやレジスタからの読み出しにも1サイクルの処理時間を消費するように設計される。それ故、演算処理をパイプライン構成で並列実行できるように設計されている画像処理回路の方が、動作周波数あたりの処理性能は格段に高い。
米国特許第6,587,158号公報 特開2000−312327号公報 特許第3733826号公報 特開2006−139606号公報 特開平7−320066号公報 特開2002−366507号公報
近年、限られたコスト制約の中で種々の画像処理の要求に対応することが望まれている。つまり、メモリ帯域や回路規模を一定に保ったままで、前述の種々の画像処理を柔軟に実現する装置や手法が望まれている。
特許文献1〜4の従来技術では、1枚の画像データに対する複数の補正データや複数の画像データや連続した複数フィールド画像に対して、数量に応じて外部メモリから柔軟に種々のデータを取得するという観点からの検討は行われていない。ここで、データの数量とは、補正データ数、レンダリング画像数、参照フィールド数などが挙げられる。
また特許文献5〜6においても、前述の多岐にわたる画像処理に必要な前述の種々のデータを外部メモリからバンド領域ごとに柔軟に取得するという観点で、CPUとDMACと画像処理部の連携のし方は検討されていない。また、画像処理専用CPUが画像処理部の演算リソースを一時的に使用することで動作周波数(消費電力)あたりの処理性能を向上させるという観点での検討も行われていない。
本発明は、上述した課題に鑑みてなされたもので、画像処理部が種々のデータを外部メモリからバンド領域毎に柔軟に読み出して自律的に画像処理を実行可能としCPUのDMAC制御のための処理負荷を軽減することを目的とする。
上記の課題を解決するための本発明の一態様による画像処理装置は以下の構成を備える。すなわち、
メモリからコマンドリストを取得し、当該コマンドリストに基づいてコマンドを送出する入力手段と、
前記入力手段から送出されたコマンドに基づいて処理を実行する処理手段と、
を有し、
前記入力手段は、
レジスタへの指示を示すレジスタ制御コマンドを前記コマンドリストから取得すると、当該レジスタ制御コマンドを前記処理手段へ送出し、
データ取得を指示するデータ取得コマンドを前記コマンドリストから取得すると、レジスタ制御コマンドに基づいて前記メモリからダイレクトメモリアクセスによって画像データを取得し、取得した画像データから所定画素数ずつを取り出してデータ処理を示す特定の識別情報と結合することにより複数のデータ処理コマンドを生成して前記複数のデータ処理コマンドを順次に前記処理手段へ送出する。
本発明によれば、CPUのDMAC制御のための処理負荷を軽減しつつ、画像処理部が種々のデータを外部メモリからバンド領域毎に柔軟に読み出して自律的に画像処理を実行することが可能となる。
画像処理装置の全体構成の一例を示すブロック図。 画像処理部の回路構成の一例を示すブロック図。 バンド処理の動作の一例を説明する図。 画像処理に必要なデータのRAMへの格納例を説明する図。 ディスプレイリストのRAMへの格納例を説明する図。 画像データの画素値の格納例を説明する図。 コマンドのデータ構成例を説明する図。 ディスプレイリストおよび画像データの一例を示す図。 画像処理回路に取り込まれるコマンドを説明する図。 画像処理出力回路から取り出されるデータを説明する図。 画素データを出力するまでの動作例を説明する図。 画素データを出力するまでの動作例を説明する図。 画像処理部による画像処理の一例を説明するフロー図。 画像処理回路の動作を説明するフロー図。 画像処理入力回路が有するコマンドレジスタを説明する図。 画像処理CPUの動作を説明するフロー図。 コマンドの生成動作を説明するフロー図。 画像処理の一例を説明するフロー図。 画像処理回路の動作を説明する図。 画像処理装置の構成と動作を説明する図。 画像処理の一例を説明する図。
以下、添付の図面を参照して本発明の好適な実施例を説明する。
(第1実施例)
図1は、第1実施例の画像処理装置の全体構成の一例を示すブロック図である。図1において、画像読み取り部120は、レンズ124、CCDセンサ126、及びアナログ信号処理部127等を有する。画像読み取り部120において、レンズ124を介しCCDセンサ126に結像された原稿110の画像情報が、CCDセンサ126によりR(Red),G(Green),B(Blue)のアナログ電気信号に変換される。アナログ電気信号に変換された画像情報は、アナログ信号処理部127に入力され、R,G,Bの各色毎に補正等が行われた後にアナログ/デジタル変換(A/D変換)される。こうして、デジタル化されたフルカラー信号(デジタル画像信号という)が生成される。生成されたデジタル画像信号は、CPU102によって予め動作を設定されたダイレクトメモリアクセスコントローラ(DMAC)192により、共有バス190を介してCPU回路部100のRAM106にデジタル画像データとして格納される。
次にCPU102は、画像処理部150の起動レジスタに所定の値をセットして画像処理部150を起動する。画像処理部150は、コマンドリストをROM104やRAM106(メインメモリ)や外部記憶装置108から取得する。本実施例では、後述のディスプレイリストがコマンドリストとして用いられる。そして、画像処理部150は、取得したディスプレイリストに従って画像処理部150内部の画像処理回路等のレジスタ設定を行い、デジタル画像データをRAM106(メインメモリ)や外部記憶装置108から読み込む。そして入力されたデジタル画像信号に対し、スキャナなどのセンサデバイスの読み取り素子の個体差の補正と入力ガンマ補正などの色補正を行い、読み取り画像を正規化して一定水準のデジタル画像データを作成する。画像処理部150は、これら処理が施されたデジタル画像信号を、上述のディスプレイリストに従ったレジスタ設定値に応じてRAM106(メインメモリ)に格納させる。
また、例えば、画像処理部150は入力されたデジタル画像信号に対し、入力色補正処理、空間フィルタ処理、色空間変換、濃度補正処理、及び中間調処理などの印刷のための画像処理を施し、印刷可能なデジタル画像データを作成する。そして、上述と同様に、画像処理部150は、作成したデジタル画像データをRAM106に格納する。最後にCPU102は、DMAC198を用いて、RAM106に格納された画像処理済みのデジタル画像データを読み出して画像印刷部170(プリンタ)へ出力する。この画像印刷部170は、たとえば、インクジェットヘッドやサーマルヘッド等を使用したラスタプロッタ等の印刷出力部(図示せず)を備えて構成され、入力されたデジタル画像信号により紙上に画像を記録する。
CPU回路部100は、演算制御用のCPU102、固定データやプログラムを格納するROM104、データの一時保存やプログラムのロードに使用されるRAM106、及び外部記憶装置108等を備える。CPU回路部100は、画像読み取り部120、画像処理部150、及び画像印刷部170等を制御し、本実施例の画像処理装置のシーケンスを統括的に制御する。外部記憶装置108は、本実施例の画像処理装置が使用するパラメータやプログラムや補正データを記憶するディスク等の記憶媒体であり、RAM106のデータやプログラム等は、外部記憶装置108からロードされる構成としても構わない。
まず、図1の画像読み取り部120による読み取り画像に対して、センサデバイスの読み取り素子の個体差を補正する補正処理をバンド領域を単位としたバンド処理を用いて行う場合について説明する。バンド処理では、デジタル画像データの座標系(主走査方向−副走査方向)として、図3の(e)に示すように、長さ方向、高さ方向という新たな座標系(バンド領域座標系)を定義し、バンド領域を長さ×高さで表現する。また、バンド領域の長さは、デジタル画像データの主走査方向の幅、もしくは副走査方向の高さの何れかの値となり、バンドの高さは任意の値となる。例えば、主走査方向に複数のバンド領域を確保した場合のバンド領域の長さは、デジタル画像データの副走査方向の高さとなる。
バンド処理では、図3の(a)に示す第1のバンド領域301を、メインメモリ上のバンドメモリに展開して画像処理を行う。次に、図3の(b)に示す第2のバンド領域302を第1のバンド領域301が展開されたバンドメモリに上書き展開して画像処理を行う。さらに、図3の(c)に示す第3のバンド領域303を第2のバンド領域302が展開されたバンドメモリに上書き展開して画像処理を行う。最後に、図3の(d)に示す第4のバンド領域304を第3のバンド領域303が展開されたバンドメモリに上書き展開して画像処理を行う。図3の(a)〜(d)で明らかなように、バンド領域301〜304の長さは同じであるが、高さは同じである必要性は無い。メインメモリに確保される記憶領域であるところのバンドメモリの高さは、高さ方向のサイズが最も大きいバンド領域(図3の場合、第1〜第3のバンド領域301〜303)によって決定される。
図19の(a)は、スキャナなどの画像読み取り装置による読み取り画像に対して、センサデバイスの読み取り素子の個体差を補正する補正処理を説明する図である。この補正処理に必要な情報は、センサデバイスの読み取り素子ごとの読み取り最小値データ(補正データ1002)と読み取り最大値データ(補正データ1001)である。補正画像処理1006では、これらの情報を元に補正対象である読み取り画像1003を画素データ(画素値)ごとに、例えば下記(式1)を用いた演算により補正し、補正部分画像1007を得る。
(式1) X=(P−MIN)/(MAX−MIN)×1023
ここで、読み取り画素値 :P,読み取り最小値 :MIN,読み取り最大値 :MAX,補正画素値 :X(Xは10bitのデジタル信号)とする。
そして、この処理を読み取り画像1003について繰り返すことにより、補正画像1005を得る。つまり補正処理に必要なデータは、画素ごとに異なる補正データ1001,1002と読み取り画像の画素データ(入力部分画像1004)という3種の異なる情報である。スキャナのセンサデバイスが、画素ごとの読み取り素子を1ラインにまとめたものであるラインセンサの場合には、このセンサが副走査方向に移動することで2次元画像の読み取りを行う。このような読み取り方式の場合、主走査方向に対しては、画素ごとに異なる最小値データと最大値データが並び、副走査方向に対しては、主走査位置が同一の画素の場合、同一の最小値データと最大値データとなる。
上記の画像処理の場合、センサデバイスの読み取り素子ごとの読み取り最小値データと読み取り最大値データが必要であり、これらの種々のデータは一時的に前述のRAM106に格納されている。図4を用いてRAM106への画像データの格納のし方を説明する。
図4中のIMG_AREA_STR_ADDRからIMG_AREA_END_ADDRまでが画像処理に必要な種々のデータを格納する領域である。図示の一例では、この領域にS0_IMGからS5_IMGまで6種のデータが格納されている状態である。DRAMの性能を落とさずにデータをアクセスできるように、各々格納されるデータの容量の最小単位は、408に示すように32bit×8wordの32Byteとなっている。当然ながら、S0_IMGからS5_IMGまでの画像データの格納容量は、32Byteの整数倍となる。たとえば、2次元の画像データの場合、最大画像領域(window'sarea)440に相当する領域がメモリ上の420(422,424,426)で示される。また、そこに収まるS0_IMG(image's area)430の領域がメモリ上の410で示される領域に格納されている。スキャナのラインセンサデバイス450が原稿490に対して副走査方向(v)に移動しながら原稿を読み取る場合にラインセンサデバイス450の主走査方向(h)に補正データ(MAX)470と補正データ(MIN)475が分布している。図4の例では、RAM106上のS4_IMG460とS5_IMG465に補正データ(MAX)470と補正データ(MIN)475がそれぞれ格納されている。
さらに図6を用いてバンド単位の画像データのデータ構造を詳しく説明する。500は前述のS0_IMG(image’sarea)430の領域のデジタル画像データを示している。510の領域は前述の32Byte単位のデータであり、その中に520で示す8画素のデータがパッキングされている。また1つの画素データは、530で示すように10bitのR(Red),G(Green),B(Blue)データがパッキングされている。なお、図示の例では、残りの2bitは、DRAMによるデータアクセスを簡単にするために確保されているものであり、無効データとして処理には使用されない。図の太枠500の範囲は、8M×Nの大きさの画像を意味する。また前述のS4_IMG460とS5_IMG465に格納されている、スキャナ・センサデバイスの補正データの場合、1ラインのラインセンサであるため、座標(0,0)から(8M,0)の範囲のデータとなる。
次に図5を用いてRAM106へのディスプレイリストの格納のし方を説明する。図5中のDPL_AREA_STR_ADDRからDPL_AREA_END_ADDRまでが画像処理に必要な種々の描画コマンドを格納する領域である。図示の例では、この領域にDPL(1)からDPL(3)まで3種のディスプレイリストが格納されている状態が示されている。DRAMの性能を落とさずにデータをアクセスできるように、各々格納されるデータの容量の最小単位は、406に示すように32bit×8wordの32Byteとなっている。当然ながら、DPL(1)からDPL(3)までのディスプレイリストの格納容量は、32Byteの整数倍となる。CPU102は、選択されたアプリケーションやユーザ操作などによって使用するディスプレイリストをDPL(1)からDPL(3)の中から選択して、異なる画像処理を実行する。
さらに図7を用いてメインメモリとしてのRAM106へ格納されているディスプレイリストに含まれるコマンドのデータ構成例について詳しく説明する。本実施例では、ディスプレイリストを構成するコマンドは、64bit長のコマンドとなっており、32Byte単位のデータ520に4つのコマンドが格納される。またディスプレイリストを構成するコマンドは、レジスタ制御コマンド540、データ取得コマンド542、終了コマンド546のように少なくとも3種存在する。なお、データ取得コマンド542は画像処理入力回路220により生成され、画像処理回路へ送出されるコマンド(詳細は後述する)である。各コマンドは上位8bitのオペコード(opcode)により識別され、下位56bitは各コマンドにより用途が異なる。これらのコマンドは図1に記載の画像処理部150で機能する。以下、画像処理部150の構成例である図2の(a)を用いて各コマンドの動作について説明する。
まずディスプレイリストを構成する各コマンドは、画像処理部150の各種画像処理回路(画像処理入力回路220、画像処理回路(1)230、画像処理回路(2)240〜画像処理回路(P)270、画像処理出力回路280)で機能する。画像処理回路(1)230、画像処理回路(2)240〜画像処理回路(P)270は、内部バスによりシリーズに接続されている。各コマンドは、その入力順に内部バス225、235、245、・・・、265、275を介して画像処理入力回路220、画像処理回路(1)230、画像処理回路(2)240〜画像処理回路(P)270、画像処理出力回路280へと送出される。各コマンドは各画像処理回路により、内部情報を書き換えられることはあるが、コマンド自体が途中で削除されることはない。
レジスタ制御コマンド540は、画像処理部150の各種画像処理回路のレジスタに対して値を読み書きするためのコマンドであり、1bit情報“rw”が“0”のときはレジスタリードコマンド、“rw”が“1”のときはレジスタライトコマンドとなる。7bitの回路識別情報“ip_id”は、上記の各種画像処理回路を区別、特定する情報である。例えば画像処理入力回路220は“0”、画像処理回路(1)230は“1”、画像処理回路(2)240は“2”、画像処理回路(P)270は“P”、画像処理出力回路280は“30”であるとする。また16bit情報“address”は、上記の各種画像処理回路ごとの所有するレジスタの番地を示す情報である。例えば、“rw=1、ip_id=1、address=0x0、data=0xF”であるレジスタ制御コマンドの場合を考える。このレジスタ制御コマンドは、画像処理入力回路220では、回路識別情報“ip_id”が異なるので無視され、内部バス225を通って画像処理回路(1)230に入力される。画像処理回路(1)230では、回路識別情報“ip_id”が同一であるので、同レジスタライトコマンドが有効となり、画像処理回路(1)230の“address=0x0”番地のレジスタに、“data=0xF”が書き込まれる。画像処理回路(1)230は同レジスタ・ライト・コマンドを削除せず、そのまま内部バス235を介して次の画像処理回路(2)240へ入力される。画像処理回路(2)240以降の回路では回路識別情報“ip_id”が異なるため、同レジスタライトコマンドは無視され、最後に画像処理出力回路280で無視された後、同レジスタライトコマンドは画像処理出力回路280により削除される。また“rw=0、ip_id=2、address=0x4、data=0x0”であるレジスタリードコマンドの場合、前述のレジスタライトコマンド同様、回路識別情報“ip_id=2”である画像処理回路(2)240以外では無視される。同レジスタリードコマンドは回路識別情報“ip_id”が同一である画像処理回路(2)240で有効となる。そして、“address=0x4”番地のレジスタ値が読み出され、同レジスタリードコマンドの“data”領域がこの読み出された値に置き換わり、内部バス245を介して後段の画像処理回路に送られる。画像処理出力回路280では、前述のレジスタライトコマンドと異なり、“data”だけが抜き取られるか、同レジスタリードコマンドそのものが、CPU102がアクセス可能なメモリ領域に出力(記憶)される。
データ取得コマンド542は、画像処理入力回路220と画像処理出力回路280の動作を制御するコマンドである。画像処理入力回路220は、データ取得コマンドを受け取り、前述のレジスタ制御コマンドにて予め設定されたレジスタ値に従い、DMAC(Read)210を起動してメインメモリからデジタル画像データや補正データを取得する。ここで、DMACに予め設定されたレジスタ値とは、例えば、レジスタ制御コマンドにより設定された読出し開始アドレスと読出し回数である。次に、画像処理入力回路220は、このデータ取得コマンドを画像処理回路(1)230、画像処理回路(2)240〜画像処理回路(P)270、画像処理出力回路280へ内部バスを介して送る。このように、データ取得コマンドを下流へ送ることにより、例えば、レジスタ制御とデータ処理を時分割で動作を切り換えるときに、切り替え制御を容易に実現することが可能となる。そして、画像処理入力回路220は、DMAC210を用いて取得したデジタル画像データや補正データをデータ処理コマンド544の形式に変換する。そして、画像処理入力回路220は、データ処理コマンド544を画像処理回路(1)230、画像処理回路(2)240〜画像処理回路(P)270、画像処理出力回路280へ内部バスを介して送る。
また画像処理出力回路280は、データ取得コマンドを受け取り、その後に続くデータ処理コマンドのRGB領域から情報を抜き出し、所定のパッキングを行い、32Byte単位のデータに変換する。そして、画像処理出力回路280は、レジスタ制御コマンドにて予め設定されたレジスタ値にしたがってDMAC(Write)290を起動して32Byte単位の処理後のデジタル画像データをRAM106へ書き出す。
データ処理コマンド544は、画像処理回路(1)230、画像処理回路(2)240〜画像処理回路(P)270を用いて画像処理を実行するためのコマンドである。画像処理を実行する前に予め画像処理回路(1)230、画像処理回路(2)240〜画像処理回路(P)270には、前述のレジスタライトコマンドにより所定のレジスタ値が設定されている。データ処理コマンド544は、8bitのデータ処理識別情報“step”を含む。また、画像処理回路(1)230、画像処理回路(2)240〜画像処理回路(P)270には、処理すべきデータ処理コマンドを識別するためのデータ処理識別情報“step”が設定されている。そして、各画像処理回路は、入力されたデータ処理コマンドのデータ処理識別情報“step”が自身の同一のデータ処理識別情報と同一のデータ処理コマンドのみ画像処理を行い、それ以外のデータ処理コマンドは無視する。各画像処理回路は、データ処理コマンドの各16bitのR、G、B領域の画像データを抜き出し、所定の画像処理を行い、処理結果をデータ処理コマンドの各16bitのR、G、B領域に格納して内部バスを介して後段の画像処理回路に送る。各画像処理回路(1)230、画像処理回路(2)240〜画像処理回路(P)270が一連の画像処理を行うことで、パイプライン的に並列処理を行う。終了コマンド546は、ディスプレイリストの終了を示すコマンドであり、画像処理出力回路280は、このコマンドを受け取った後、CPU102に対して終了割り込みを出力する。
次に、図2の(a)と図8A、図8B、図8C、図9、図10、図11A、図11Bを用いて画像処理部150の動作とディスプレイリストの関係についてさらに詳しく説明する。前述の画像読み取り部120により読み取られた読み取り画像(デジタル画像データ)と補正データは図4および図6で説明したようにRAM106に格納されている。まずCPU102は、RAM106に格納されたデジタル画像データを画像処理するために、図8Aに示すようなディスプレイリストを作成する(S710)。そして、CPU102は、作成したディスプレイリストを、RAM106の図5に記載のディスプレイリスト格納領域DPL(2)に書き込む(S712)。次にCPU102は、図2の(a)の画像処理部150を制御するための専用バス202を介して、ディスプレイリストの先頭アドレスであるDPL_STR_ADDRと連続転送量であるDPL_DMA_LENGTHとを設定する(S714)。さらに、CPU102は、専用バス202を介してディスプレイリストの読み出し動作を起動するレジスタ(Kickレジスタ)に“0x1”を書き込む(S716)。なお、本明細書では、前述のようなディスプレイリストに従った画像処理を画像処理部150のPULL型動作と呼ぶこととする。その後、CPU102は、画像処理出力回路280から画像処理の終了割り込みが入力されるまで解放される(S718、S719)。
画像処理入力回路220は、DMAC(Read)210の設定と起動を行う(S720,S722)ことにより、ダイレクトメモリアクセスによりディスプレイリストを取得する。すなわち、画像処理入力回路220は、DMAC210を用いてRAM106のDPL_STR_ADDR番地を先頭アドレスとして連続するDPL_DMA_LENGTH(例えが1KByte)分のディスプレイリストを読み出す(S780)。画像処理入力回路220は、DMAC210からの入力を受けて、読み出したディスプレイリストを画像処理入力回路220内のバッファ660に一旦記憶する。画像処理入力回路220はバッファ660に記憶されたディスプレイリストを先頭から1コマンドずつ取り出して解析する(S724)。そして、取り出したコマンドがレジスタ制御コマンドであり回路識別情報“ip_id”が“0”の場合、画像処理入力回路220は当該レジスタ制御コマンドを処理した後に後段の画像処理回路へ送出する(S726,S730)。また、取り出したコマンドがレジスタ制御コマンドであり回路識別情報“ip_id”が“0”でない場合、画像処理入力回路220は何も処理せずに当該レジスタ制御コマンドを後段の画像処理回路へ送出する(S726,S730)。後段の画像処理回路(1)230から画像処理回路(P)270においても、回路識別情報“ip_id”によりレジスタ制御コマンドに対応した処理(レジスタライト、レジスタリード)が行われる(S740)。そして、画像処理出力回路280も同様のレジスタ設定処理を行った後(S750)に、レジスタリードコマンドに記述されている、読み出されたレジスタ値のみをDMAC(Write)290を用いてRAM106へ書き込む(S790)。
図8Aのディスプレイリスト例の550、552、554はレジスタライトコマンド(rw=1)である。すなわち、画像処理入力回路220、画像処理回路(1)230〜画像処理回路(P)270、画像処理出力回路280の画像処理時のレジスタ値を設定するためのレジスタライトコマンドがディスプレイリスト冒頭に並ぶ。このレジスタライトコマンドですべての回路の所望のレジスタ設定が完了すると、データ取得コマンド556が画像入力回路に取り込まれる。画像処理入力回路220は解析したコマンドがデータ取得コマンドであった場合は、当該コマンドをそのまま後段の画像処理回路(1)へ送る(S728、S732)。また、このとき、画像処理入力回路220は、データ取得コマンドが記憶されていたバッファ660のアドレスを内部のテンポラリレジスタに退避して、ディスプレイリスト解析を一旦中断する。そして、先に設定されたレジスタ値にしたがってDMAC(Read)210の設定と起動を行い(S732)、ダイレクトメモリアクセスにより画像データを取得する。すなわち、DMAC210は、RAM106の先頭アドレスS0_IMG_STR_ADDR番地から後述する所定の連続数で所定の繰り返し回数だけデジタル画像データを読み出す(S782)。
画像処理入力回路220は、DMAC(Read)210からの入力を受けて、読み出したデジタル画像データを画像処理入力回路220のバッファ660に一時的に記憶する。そして、画像処理入力回路220は、バッファに記憶されたデジタル画像データを、先頭から所定画素数ずつ取り出して、データ処理コマンド544に変換して後段の画像処理回路へ送出する(S734)。画像処理入力回路220にディスプレイリストが入力されたときの図8Aと、画像処理入力回路220から出力されたコマンド例である図8Bを比べてみると以下のことがわかる。すなわち、図8Bではデータ取得コマンド570の後にデータ処理コマンド572や574が挿入されており、これらのコマンドはメモリから読み出されたデジタル画像データ559がコマンドに変換されたものである。なお、図8Bにおいて、step=0,1,2はそれぞれ「補正データ(MAX)」「補正データ(MIN)」「画像データ」を表している。また、データ処理コマンド574のstep=Mは、補正処理には関係ない別種の画像処理のデータコマンドを表しており、Mとして0,1,2以外の数値が用いられる。また、図8Bにおいて、データ処理コマンド572はstep=0,1,2,0,1,2,…の繰り返しとなっているが、補正データ(MAX)と補正データ(MIN)を最初に転送した後、画像データを繰り返すようにしてもよい。この場合、step=0,1,2,2,2,2…のようになる。
後段の画像処理回路(1)230から画像処理回路(P)270は、先に設定されたレジスタ値に従い画像処理を行い、R,G,Bデータを変更して(S744)画像処理出力回路280へ送出する。画像処理出力回路280は、R,G,Bデータをデータ処理コマンドから抜き出し(S754)、所定の形式でパッキングする(S754)。そして、パッキングを完了したら、画像処理出力回路280は、先に設定されたレジスタ値に従いDMAC(write)290にレジスタ設定と起動を行う(S756,S758)。この結果、DMAC290により、画像処理後のデジタル画像データ598(図8C)がRAM106に書き込まれる(S792)。
以上のように、ディスプレイリストのデータ取得コマンドをトリガとして、CPU102の介在なしに、画像処理入力回路220によって必要な種々のデータがRAM106から取得される。そして、画像処理回路によって処理され、画像処理出力回路280により処理結果がRAM106へ書き出される。なお、図11A,図11Bでは記載を簡潔にするため、1つのデータ取得コマンドに対して1回のDMAC(Read)と1回のDMAC(Write)の起動となっているが、本発明はこれに限られるものではない。例えば、画像処理入力回路220と画像処理出力回路280のレジスタ設定により、一度に取得するデジタル画像データの画素数を少なく指定することができる。このような設定によれば、1つのデータ取得コマンドに対してDMAC210,295を複数回起動し、少量のデジタル画像データずつ、分割してデータ処理を行うことが可能である。このような場合、後述に詳細説明する画像処理入力回路220と画像処理出力回路280のバッファ容量を小さくできるという利点がある。
データ取得コマンドに対する種々のデータの取得が終了したら(S736)、中断していたディスプレイリストの解析を再開する(S736、S724)。図8Aのディスプレイリスト例では、データ取得コマンド556の後に、レジスタリードコマンド558が続いている。これらのコマンドは、画像処理後の画像処理回路(1)230から(P)270のステイタス値を読み出すためにある。レジスタリードコマンドに対しては、画像処理出力回路280において、レジスタリードコマンド590の形式のままRAM106へ退避してもよいし、読み出されたレジスタ値だけ抜き出した形式のデータ592をRAM106へ退避してもよい(図8C)。CPU102はRAM106のこれらのデータを参照して画像処理部150の動作状況を知ることができる。
図8Aのディスプレイリスト例の最後に終了コマンド(不図示)があり、画像処理入力回路220はこの終了コマンドを後段の画像処理回路へ送出する(S739)。各画像処理回路も終了コマンドを後段に送出し(S749)、画像処理出力回路280は終了コマンドを受け取ると、CPU102へ画像処理の終了割り込みを通知する(S759)。CPU102は終了割り込みを受け付けると、本処理を終了する(S719)。そして、画像処理部150は、これまで説明したディスプレイリストに応じた一連の自律的な動作を行った後、再びCPU102から起動されるまで待機する。
1つのディスプレイリストにデータ取得コマンドが複数回、挿入されている場合、前述のデータ取得コマンドの動作をその回数分繰り返すことで複数バンド領域に対する画像処理を実現できることは言うまでもない。図18は、本実施例によるCPU102の、画像処理時の処理を説明する図である。CPU102は、RAM106に対してディスプレイリスト(DPL)を書き込み(S901)、画像処理部150のkickレジスタに起動を指示する値を書き込む(S902)。以降、画像処理部150は、RAM106からDPLや画像データを自立的に読み出し、画像処理を遂行する。したがって、CPU102は、画像処理部150に起動を指示した後は、当該画像処理から解放され、CPU102の処理負荷は軽減される。
また画像処理回路(1)230から画像処理回路(P)270の動作をまとめたものを図12と図17に記載すると共に、画像処理について簡単に説明する。画像処理回路では、図11BのS740、S742、S744において図12に示す処理が実行される。すなわち、画像処理回路の制御部8001は、上段の回路よりコマンドを入力すると、当該コマンドを解析し、それがレジスタ制御コマンドかデータ処理コマンドかを判定する(S7001,S7002,S7003)。レジスタ制御コマンドの場合、当該コマンドのip_idが自身のIP_IDレジスタに登録されている値と一致するかを判定し、一致していなければ、当該コマンドをそのまま下流へ送出する(S7004、S7007)。コマンドのip_idが自身のIP_IDレジスタに登録されている値と一致した場合は、当該コマンドのrwによりレジスタリードコマンドかレジスタライトコマンドかを判定する(S7005)。レジスタライトコマンドであった場合はコマンドにしたがって指定されたデータを指定されたドレスへ書き込み、コマンドを下流へ送出する(S7006、S7007)。レジスタリードコマンドであった場合は、指定されたアドレスから読み出したデータを当該コマンドのdata領域に書き込み、下流へ送出する(S7008,S7009,S7007)。
一方、データ処理コマンドであった場合は、当該コマンドのstepが自身のSTEP_REGと一致するかを判断し、一致しなければそのまま当該コマンドを下流へ送出する(S7010でNO、S7007)。一致した場合は、制御部8001は当該コマンドのR,G,Bデータ(或いは補正データ)を演算部8002に投入し、演算部8002は所定のデータ処理を実行する(S7011)。そして、制御部8001は、処理後のデータを当該データ処理コマンドのデータに置き換えて、下流へ送出する(S7012)。なお、データ取得コマンドの場合は、そのままコマンドを下流へ送出するのみなので、図示を省略している。例えば上記補正処理の場合、画像処理入力回路220は前述のデータ取得コマンドをトリガとして、読み取り画像と補正データを、DMAC(read)210を起動してRAM106から読み出す。そして、図6で説明したパッキングされた読み取り画像と補正データ(MAX)と補正データ(MIN)から1画素単位の画素データ(画素値)として取り出し、データ処理識別情報“step”を付加する。そして、画像処理入力回路220は、読み取り画像、補正データ(MAX)、補正データ(MIN)の順でデータ処理コマンドに変換して内部バス225を介して出力する。なお、図17において、A(1)_REG、A(2)_REG、B(1)_REG等は、それぞれの演算部が演算をするときに必要となる、画像処理に固有の設定値である。
画像処理回路(1)230から画像処理回路(P)270のうちのいずれかにおいて、上記(式1)で示したセンサデバイスの読み取り素子の個体差の補正が行われる。また、画像処理回路(1)230から画像処理回路(P)270のうちのいずれかにおいて、入力色補正処理、空間フィルタ処理、色空間変換、濃度補正処理、及び中間調処理のような画像処理が行われる。例えば、画像処理回路(1)230が(式1)で示したセンサデバイスの読み取り素子の個体差の補正を行う回路であるとする。この場合、画像処理回路(1)230は、異なるデータ処理識別情報“step”が付加された読み取り画像と補正データ(MAX)と補正データ(MIN)を順番に受け取り、データ処理識別情報“step”によりデータの意味を区別して(式1)の演算を行う。そして、補正後のR,G,Bをデータ処理コマンドのR,G,Bに置き換えて後段の画像処理回路へ送る。このときデータ処理識別情報“step”を別の値に置き換えてもよい。画像処理回路の制御部8001には、予め設定されたSTEP_REGレジスタにより、受け取るべきデータ処理コマンドが設定されている。上記補正の例では、読み取り画像と補正データ(MAX)と補正データ(MIN)に指定された3つのデータ処理識別情報“step”がSTEP_REGレジスタに設定されている。また画像処理後に置き換えるデータ処理識別情報“step”も同レジスタにより指定されている。
本実施例では、バンド処理に特化した画像処理を行うことで、空間フィルタ処理などの局所(近傍)画像処理における遅延メモリの省容量化を実現し手いる。更に、複数の画像データ、もしくは、および補正データを参照した画像データの補正処理や画像処理を実現する。このような目的を達成するために、本実施例ではデジタル画像データの座標系(主走査方向−副走査方向)とは異なるバンド領域座標系で画像処理が行なわれる。
図9、図10は、本実施例の画像処理装置を用いた場合にRAM106から画像処理入力回路220に前述のディスプレイリストや画像データや補正データを入力する方法について詳細に説明している。ディスプレイリスト605や画像データ600がRAM106に格納されている。600は画像データの全体像であり、そのうちバンド領域610を抜き出し、画像処理を行う。処理対象となるバンド領域610は、620と630で示されるようにバンド領域座標系でバンド領域の高さBdhが16ライン(16画素)であり、バンド領域の長さBdlが8×M画素である。まず、図10の(a)のCPU102は制御バス685を介してRAM106のディスプレイリスト605の先頭アドレスと連続読み出し量(32Byte単位のデータを連続何回読み出すか)、インクリメントアドレスと繰り返し回数を設定する。図示の例では、先頭アドレスは図5のDPL(2)領域のDPL_STR_ADDRとなり、連続読み出し量はDPL_DMA_LENGTH回(32Byte)、繰り返し数は1回である(繰り返し数が1回なのでインクリメントアドレスは、0でよい)。なお、図9では、補正データの取得に関して記載を省略したが、図19(a)で示したように、補正データも画像データと同様にRAM106から読み出される。
また図10の(a)のようにDMAC210と画像処理入力回路220の間には、両モジュールからデータアクセス可能な共有バッファ660が存在する。そこでCPU102は、制御バス685を介してDMAC210に取得データのディスプレイリストの書き込み先である、共有バッファの書き込み先頭アドレスも指示する。図示の例では、661に一時保存するため、DPL_BUF_STR_ADDRが書き込み先頭アドレスとして設定されるアドレスとなる。DMAC210は画像処理入力回路220からの指示を受け、RAM106のディスプレイリスト605を読み出し(650)、共有バス694を介して共有バッファ660の領域661に格納する。その後、画像処理入力回路220はディスプレイリスト605の解析を実行する。
ディスプレイリスト605のレジスタ制御コマンドにより、RAM106のバンド領域610の先頭アドレスと連続読み出し量(32Byte単位のデータを連続何回読み出すか)、インクリメントアドレスと繰り返し回数が設定される。図示の例では、先頭アドレスは図4のS0_IMG_STR_ADDRとなり、連続読み出し量は1回(32Byte)、インクリメントアドレスは、1ラインのデータ量である、32Byte×Mとなり、繰り返し数は16回である。またレジスタ制御コマンドにより取得するデジタル画像データの書き込み先である、共有バッファの書き込み先頭アドレスも指示する。図示の例では、共有バッファ660の領域662にデータを一時保存するため、S0_BUF_STR_ADDRが設定される。DMAC210は画像処理入力回路220からの指示を受け、RAM106に格納されている画像データのバンド領域630の領域(1)640から領域(M)645のいずれかを読み出す(650)。そして、共有バス694を介して共有バッファ660の領域662に取得データを格納する。
画像処理入力回路220は、共有バッファ660に対して、チップセレクト信号、アドレス信号などの制御信号674を介してリードアクセスしリードデータ672を取得する。そして、1画素単位の画素データ(画素値)を選び出し、前述したデータ処理コマンドに変換して画像処理部の内部バス676(図2の(a)記載の225に相当)に出力する。なお、共有バッファ660は、図10の(b)の665に示すように、2つ以上のバッファ666と667で構成しても良い。前述の図10の(a)の例では、DMAC210と画像処理入力回路220で1つのバッファを共有しているため、共有バッファ660への書き込みと、共有バッファ660からの読み出しを時分割で動作させていた。これに対して、図10の(b)の6共有バッファ665のような構成にすると、画像処理入力回路220が共有バッファ667から画素データの取得処理をしている間に、DMAC210は共有バッファ666にRAM106から所望のデータを転送できる。すなわち、ダブルバンク方式のバッファが構成されるため、DMAC210と画像処理入力回路220の処理を並列的に実行できる。なお、画像データのバンド領域610を画像処理するためには、領域(1)640から領域(M)645まで同様の動作をM回繰り返せばよい。
以上のようにディスプレイリストに従い、所定のレジスタ設定が行われ、RAM106から共有バッファへの画像データの取得が実行される。また、あと2つの補正データに関してもDMAC210に設定する繰り返し回数が1回(つまり、バンド領域の高さが1ライン)として画像データと同様の動作で順次必要なデータを取得するようにディスプレイリストを作成する。なお、上記では、1画素ラインを有するラインセンサに関して行われる1次元の補正処理を説明したが、本発明はこれに限られるものではない。例えば、上記に類似した補正処理として薄型テレビで使用される2次元表示デバイスに対する補正処理がある。2次元表示デバイスの場合、2次元に敷き詰められた表示素子の個体差が異なるため、2次元の補正データを用いて補正処理を施すことになるが、本発明が適用可能であることは明らかである。
(第2実施例)
実施例1と同一機能を有する構成や工程には同一符号を付すとともに、構成的、機能的にかわらないものについてはその説明を省略する。
まず、図19の(b)、図19の(c)に示す合成処理1020やI/P変換1030について考える。図19の(b)は、複数のレンダリング画像を合成データ(α値)に応じて画像合成する画像処理を示している。合成対象のレンダリング画像が2枚のとき、例えば下記(式2)のような合成式を用いて各画素ごとに合成処理を施す。ここで合成データ(α値)は、レンダリング画像の画素すべてにおいて同一の場合もあれば、レンダリング画像の画素ごとに異なる2次元の合成データ(α値)の場合もある。後者のような合成データ(α値)の場合は、
(式2) X=P2×A+P1×(1024−A)/1024
ここで、第1レンダリング画像の画素値 :P1,第2レンダリング画像の画素値 :P2,合成データの画素毎のα値 :A,合成後の画素値 :X,(α値が10bitのデジタル信号の場合)とする。なお、図19の(b)は、後者の合成処理の一例を示している。また、上記のような合成処理では、合成対象のレンダリング画像の枚数がNの場合、処理に必要な画素データと合成データ(α値)の枚数が上述の例と異なることは言うまでもない。図19の(b)では、2枚の画像1051,1052と合成データ1053を用いて合成画像1054が生成される様子が示されている。
また、図19の(c)は、動画像のインターレース/プログレッシブ変換(以下、I/P変換と略称する)のように、時間軸方向に連続した複数フィールド画像を参照して適応的な空間フィルタ処理を施す処理を示す。一般的にI/P変換のように複数フィールド画像を参照するような画像処理では、より多くのフィールド画像を用いて適応処理した方が高品位な画像処理を施せる。しかしながら複数フィールド画像は、画像処理回路が実装される半導体チップ(ASICなど)と接続された安価なDRAMなどの外部メモリに記憶されていることが一般的である。したがって、I/P変換のために外部メモリから毎回複数フィールド画像を読み出し、I/P変換回路に入力する必要がある。
ここで、フルハイビジョン解像度のフィールド画像を3枚までI/P変換のために読み出せるメモリ帯域の画像処理装置を仮定する。この画像処理装置においてNTSC(720×480i)のような低解像度の動画像をI/P変換するのであれば、前述のフルハイビジョン解像度の動画像より多くのフィールド画像を参照して高品位なI/P変換ができることは明らかである。なお、図19の(c)は、3フィールド対応もしくは5フィールド対応のI/P変換の一例を示している。以上のようなI/P変換では、使用可能なメモリ帯域が一定の場合、できるだけ高品位な画像処理を行うために、解像度や参照フィールド数に応じて柔軟に画像処理方法を切り替えることが重要となる。
以上のような補正処理の第1実施例との違いは、図1の映像入力部130を介して種々のデータが入力されること、および映像表示部160によりディスプレイなどの表示装置に処理後のデータが出力されることである。本実施例では、画像データを画像処理する場合に必要となる複数の画像データや合成データは、第1実施例と違い、2次元のデータとなっている。また第1実施例の補正データ(MAXおよびMIN)のように副走査方向に同一のデータ値を繰り返すことはない。そのため図4のS1_IMGやS2_IMGやS3_IMGのように処理対象であるS0_IMGと同様に座標系440と同じ格納のし方となる。説明を簡潔にするために第2実施形でも種々の画像データおよび合成データは図6のデータフォーマットであると仮定する。
上記条件にあるディスプレイリストを作成することで、上記画像処理が実現される。CPU102は、画像処理に必要となる種々のデータの個数をデータ取得数Sとして設定する。レンダリング画像2枚の合成処理のときは、必要なデータは、処理対象の画像データ1枚に合成対象の画像データと合成データ2枚の計3種のデータであり、S=3である。また、フィールド画像3枚に対するI/P変換の場合は、処理対象の時間のフィールド画像に対し、過去、未来の1フィールドずつの画像データが必要となり、計3種のデータとなり、S=3である。また、フィールド画像5枚に対するI/P変換の場合は、処理対象の時間のフィールド画像に対し、過去、未来の2フィールドずつの画像データが必要となり、計5種のデータとなり、S=5である。
次にバンド領域の高さおよび共有バッファの読み出し先頭アドレスを算出する。前述のフォーマットにより32Byte単位のデータが画像データの1ラインを表し、本実施例の場合、この1ラインの画像データを処理するためにその他の画像データおよび合成データも32Byte(1ライン)となる。そこで共有バッファの容量が256bit(32Byte)×BLワードであり、BLラインの種々のデータを保持できると仮定して以下の算出を説明する。画像データの最小転送単位は32Byte(共有バッファの1ワード(1ライン)に相当)であり、この画像データを処理するための種々のデータの最小転送単位は32Byte(共有バッファの1ワード(1ライン)に相当)である。つまり、画像データの最小転送単位32Byteを処理するために、レンダリング画像2枚の合成処理のときは32Byte×3の種々のデータが必要となる。フィールド画像3枚に対するI/P変換の場合も同様である。フィールド画像5枚に対するI/P変換のときは、32Byte×5の種々のデータが必要となる。そこでバンド領域の高さ(ライン数)は以下の結果となる。
レンダリング画像2枚の合成処理
BLライン/(1ライン+2ライン)=BL/3
フィールド画像3枚に対するI/P変換
BLライン/(1ライン+2ライン)=BL/3
フィールド画像5枚に対するI/P変換
BLライン/(1ライン+4ライン)=BL/5
すなわち、バッファライン数BLを画像データの最小転送単位32Byte(共有バッファの1ワード(1ライン)に相当)とそれを処理するために必要なデータの最小転送単位との合計値で除算した値がバンド領域の高さとなる。
共有バッファの先頭アドレスは、上記バンド領域の高さ(ライン数)ずつ等間隔に配置されたアドレスとなる。上記バンド高さの設定に従い、ディスプレイリストのレジスタ制御コマンドを生成してRAM106のディスプレイリスト格納領域にディスプレイリストを保存する。
以上のように、第1、第2実施例によれば、DMACの転送終了割り込みと画像処理部の画像処理終了割り込みの度にDMACのレジスタ設定と起動と画像処理のレジスタ設定を行う処理からCPUが解放される。そのため、CPUのDMAC制御のための処理負荷が軽減される。また、遅延メモリの省容量化を実現しつつ、局所画像処理の回路規模の削減と、処理の高速化を達成できる。
(第3実施例)
次に第3実施例について説明する。実施例1、2と同一機能を有する構成や工程には同一符号を付すとともに、構成的、機能的にかわらないものについてはその説明を省略する。図2(b)は、第3実施例による画像処理部150の構成例を示すブロック図である。第3実施例の画像処理部150では、画像処理CPU250と、画像処理入力回路220、画像処理出力回路280及び画像処理CPU250からアクセス可能なRAM252及びROM254が、がブリッジを介して接続されている。画像処理入力回路220は、図13に記載のレジスタ群を有するコマンドレジスタがあり、画像処理入力回路220は画像処理CPU250から専用バスを介したレジスタ設定により、レジスタ制御コマンドやデータ処理コマンドを生成する。そして、画像処理入力回路220の後段にある画像処理回路(1)230から(P)270に送り、画像処理CPU250が所望する画像処理演算を画像処理回路(1)230から(P)270のいずれかを用いて実現することができる。これから説明する画像処理は、画像処理部150とは別の画像処理をしている画像処理CPU250によって生成されたコマンドが画像処理部150の演算リソースを一時的に使用するという特徴を持つ。前述のディスプレイリストに従った画像処理部150の自律的な動作であるPULL型動作の画像処理と区別して、画像処理CPU250のPUSH型動作の画像処理と呼称する。
画像処理入力回路220のコマンドレジスタ2100は、図13に示すようなコマンドレジスタ群を有する。CMD_REPEATレジスタには、画像処理CPU250により1回に生成されるレジスタ制御コマンドもしくはデータ処理コマンドの数が指定される。CMD_UPPERレジスタは64bit長のコマンドの上位32bitを表し、CMD_LOWERレジスタは下位32bitを表し、2つを連結して1つの64bit長のコマンドとなる。CMD_OFS_ADDRレジスタはアドレスの増分を示し、CMD_BUF_STR_ADDRはデータテーブル2101の先頭アドレスを示す。
次に、画像処理CPU250の基本的な動作を図14のフローチャートにより説明する。また、画像処理入力回路220によるコマンドの生成処理を図15のフローチャートにより説明する。更に、画像処理CPU250と画像処理部150の連係動作について図16A、図16Bにより説明する。
まず、画像処理CPU250は、図13に示したCMD_REPEAT、CMD_UPPER、CMD_LOWER、CMD_OFS_ADDR、CMD_BUF_STR_ADDR等の各種レジスタの設定をおこなう(S7101、S7301)。また、このとき、必要であればコマンド生成に使用するデータテーブルの設定を行う(S7102)。データテーブルには、レジスタライトコマンドに対応したデータ値やデータ処理コマンドの処理対象データが保持される。その後、画像処理CPU250がCMD_ORDERレジスタに“0x1”を書き込むと(S7103,S7302)、画像処理入力回路220(“PushCMD Order”シーケンサ)が動作する。そして、画像処理入力回路220は、CMD_REPEATレジスタにおいて指定された回数分、所望のコマンドを生成し、後段の画像処理回路(1)230から(P)270へ出力する(S7320、S7322)。コマンド生成完了時には、画像処理入力回路220は終了コマンドを自動的に生成して、後段の画像処理回路(1)230へ送出する(S7324)。S7400〜S7424の処理は上記S7301〜S7324と同様である。但し、S7420ではデータ処理コマンドが生成され、画像処理回路へ送出される。
画像処理回路(1)230から画像処理回路(P)270はオペコード“opcode”、回路識別情報“ip_id”、データ処理識別情報“step”に基づき、必要な処理を行い、後段に送出する(S7340、S7344、S7440、S7444)。画像処理回路の動作は第1実施例で説明したとおりである。そして、画像処理出力回路280は、コマンドがレジスタ制御コマンドのリードコマンドであれば、レジスタリード値を画像処理CPU250からアクセスできるRAM106(メインメモリ)やRAM252へ格納する(S7360)。また画像処理出力回路280は、コマンドがデータ処理コマンドであれば、画像処理済みのデータを画像処理CPU250からアクセスできるRAM252へ格納する(S7460)。或いは、DMAC290を用いてRAM106(メインメモリ)に画像処理済みのデータを格納するようにしてもよい。また画像処理出力回路280は、コマンドが終了コマンドの場合、画像処理CPU250へ終了割り込みを通知する(S7354,S7464)。
通常、図16A,図16Bの処理7300のように、所望の画像処理に必要な画像処理回路(1)230から画像処理回路(P)270にいずれかにレジスタ制御コマンドを送出してレジスタ設定を行う。そして次に、処理7400のように所望の画像処理に必要な画像処理回路(1)230から画像処理回路(P)270のいずれかにデータ処理コマンドを送出して画像処理を実行する。画像処理回路(1)230から画像処理回路(P)270はパイプライン回路であり、生成するデータ処理コマンド数が多い場合は画像処理CPU250で行うより、処理性能が高い。画像処理CPU250は画像処理出力回路280によってRAM252に格納された演算結果を使用してソフトウェア実装された適応処理を行う。
図15に、第3実施例の画像処理入力回路220によるコマンドの生成のし方の詳細をフローチャートで示す。CMD_UPPERレジスタの上位8bitは“opcode”を示すため、画像処理CPU250がどの種類のコマンドを生成したいのかを画像処理入力回路220は判別できる(S7203,S7204)。所望のコマンドがレジスタ制御コマンドの場合、処理はS7205に進む。S7205において、さらに当該コマンドがレジスタライトコマンドの場合は、CMD_UPPERレジスタの下位16bitの“address”にCMD_OFS_ADDRレジスタで指定するアドレスを加算してコマンドの上位32bitとする。また、下位32bitはデータ領域であるため、予め設定されたデータテーブルからデータを取得して下位32bitとする。そして、上位32bitと下位32bitを連結してレジスタ制御コマンド(レジスタライトコマンド)とする。一方、S7205において当該コマンドがレジスタリードコマンドの場合は、下位32bitを0x0に固定する。また所望のコマンドがデータ処理コマンドの場合(S7206)、上位32bitと下位32bitを連結し、R,G,Bにデータテーブル2101からデータを取得して置き換えて、データ処理コマンドとする。その他のコマンドのときはCMD_UPPERレジスタとCMD_LOWERレジスタを連結してコマンドとする(S7207)。以上のようにして生成されたコマンドは、下位の画像処理回路へ出力される(S7208)。以上の処理は、CMD_REPEATに登録されている回数だけ、繰り返される(S7201,S7202,S7209)。また前述のデータテーブルからのデータ取得は必ず必要というわけではなく、レジスタ制御コマンドがレジスタリードコマンドの場合は、データ領域はどのような値でもよく、データテーブルを使う必要はない。そのためデータテーブルからのデータ取得は別途レジスタを設けて有効と無効を切り替えられるようにしてもよい。
また画像処理回路(1)230から画像処理回路(P)270は、前述のデータ処理識別情報“step”を判別して画像処理を実行する。そのため、PULL型画像処理の最中にPUSH型の画像処理を実行できることは言うまでもない。すなわち、前述のディスプレイリストによるPULL型の画像処理と画像処理CPU250によるPUSH型画像処理で画像処理回路(1)230から画像処理回路(P)270を互いに排他的に使用するようにデータ処理識別情報“step”を設定すればよい。
以上のように、第3実施例によれば、画像処理出力回路が画像処理CPUとの共有メモリへ演算結果を出力し、画像処理CPUはその演算結果を利用することで、CPUの処理性能を向上できる。このように、画像処理CPUが画像処理部の演算リソースを部分的に使用することができるので、CPUの動作周波数(消費電力)あたりの処理性能を向上させることができる。
また、バンド領域の長さ方向を画像データの副走査方向に合わせて設定することもできる。すなわち、図4の画像データフォーマットの32Byte単位に含まれる画素のデータ520を主走査方向に1画素、副走査方向に8画素と設定しても本発明を適用できる。
また、前述の各実施例の処理は、複数のハードウェアとソフトウエアの協同によって実現するようにしてもよい。また、本発明は前述した実施例の機能をコンピュータに実現させるプログラムを記憶した記憶媒体を、システム或いは装置に供給することによって実現してもよい。

Claims (9)

  1. メモリからコマンドリストを取得し、当該コマンドリストに基づいてコマンドを送出する入力手段と、
    前記入力手段から送出されたコマンドに基づいて処理を実行する処理手段と、
    を有し、
    前記入力手段は、
    レジスタへの指示を示すレジスタ制御コマンドを前記コマンドリストから取得すると、当該レジスタ制御コマンドを前記処理手段へ送出し、
    データ取得を指示するデータ取得コマンドを前記コマンドリストから取得すると、レジスタ制御コマンドに基づいて前記メモリからダイレクトメモリアクセスによって画像データを取得し、取得した画像データから所定画素数ずつを取り出してデータ処理を示す特定の識別情報と結合することにより複数のデータ処理コマンドを生成して前記複数のデータ処理コマンドを順次に前記処理手段へ送出することを特徴とする画像処理装置。
  2. 前記処理手段に接続され、前記処理手段が前記データ処理コマンドを処理することにより得られた処理済の画像データを所定の形式にパッキングし、前記入力手段より送出されたレジスタ制御コマンドにより指示されたアドレスを用いたダイレクトメモリアクセスを実行することにより前記処理済の画像データを前記メモリに転送する出力手段を更に備えることを特徴とする請求項1に記載の画像処理装置。
  3. 前記処理手段は、各々異なる回路識別情報を有する複数の画像処理回路を有し、前記入力手段より送出されるレジスタ制御コマンドは、当該コマンドを実行するべき画像処理回路を特定する回路識別情報を含み、前記複数の処理回路の各々は、自身の識別情報に一致する回路識別情報を含むレジスタ制御コマンドを入力すると当該コマンドを実行してから後段の回路へ送出し、自身の識別情報に一致しない回路識別情報を含むレジスタ制御コマンドを入力するとそのまま当該コマンドを後段の回路へ送出することを特徴とする請求項1に記載の画像処理装置。
  4. 前記入力手段より送出されるデータ処理コマンドは、当該コマンドに含まれるデータに対する処理を識別するためのデータ処理識別情報を含み、
    前記複数の画像処理回路の各々は、自身に登録されたデータ処理識別情報と入力されたデータ処理コマンドに含まれるデータ処理識別情報が一致する場合に、データ処理識別情報を有するデータ処理コマンドに含まれるデータを用いて、当該データ処理識別情報に対応した処理を実行することを特徴とする請求項3に記載の画像処理装置。
  5. 前記入力手段において読み出したデータを一時的に格納するバッファをダブルバンク方式で構成し、前記メモリから読出しと、前記バッファからのコマンド生成を並列的に実行することを特徴とする請求項1に記載の画像処理装置。
  6. 少なくともコマンド生成する回数を設定したデータを保持するコマンドレジスタと、
    RAMからダイレクトメモリアクセスによって読み出した処理対象データを保持するバッファと、
    前記コマンドレジスタに設定されたデータに従ってコマンドを生成し、送出する入力手段と、
    前記入力手段から送出されたコマンドにしたがって画像データを処理する処理手段とを備え、
    前記入力手段は、
    前記コマンドレジスタから取得したデータと前記バッファから取得した処理対象データに基づいて、前記コマンドレジスタに保持されたデータに設定された回数の、前記処理手段のレジスタを制御するためのレジスタ制御コマンド、或いは、処理対象データの処理を指示するためのデータ処理コマンドを生成して前記処理手段へ送出するPUSH型のコマンド生成手段を有することを特徴とする画像処理装置。
  7. 前記入力手段は、メモリからコマンドリストを取得し、前記コマンドリストにしたがってコマンドを生成し、前記処理手段へ送出するPULL型のコマンド生成手段を更に有し、
    前記PULL型のコマンド生成手段は、前記コマンドリストからレジスタへのデータの書き込み或いは読出しを指示するレジスタ制御コマンドを取得すると、当該レジスタ制御コマンドを前記処理手段へ送出し、
    前記コマンドリストからデータ取得を指示するデータ取得コマンドを取得すると、レジスタ制御コマンドにより指示されたアドレスを用いて前記メモリからダイレクトメモリアクセスによって画像データを取得し、取得した画像データのデータ処理コマンドを生成して前記データ処理コマンドと前記取得した画像データとを前記処理手段へ送出し、
    前記処理手段は、複数の画像処理回路を有し、
    前記PUSH型のコマンド生成手段と前記PULL型の生成手段は、前記複数の画像処理回路を互いに排他的に利用するようにコマンドを生成することを特徴とする請求項6に記載の画像処理装置。
  8. コマンドリストに基づいてコマンドを送出する入力手段と、前記入力手段に接続され、前記入力手段から送出されたコマンドにしたがってレジスタの設定或いは画像データの処理を実行する処理手段とを備え、メモリから読み出した処理対象データに処理を施す処理装置の制御方法であって、
    前記入力手段が、前記メモリからコマンドリストを取得する工程と、
    前記入力手段が、前記コマンドリストからレジスタへのデータの書き込み或いは読出しを指示するレジスタ制御コマンドを取得すると、当該レジスタ制御コマンドを前記処理手段へ送出する工程と、
    前記入力手段が、前記コマンドリストからデータ取得を指示するデータ取得コマンドを取得すると、レジスタ制御コマンドに基づいて前記メモリからダイレクトメモリアクセスによって画像データを取得し、取得した画像データから所定画素数ずつを取り出してデータ処理を示す特定の識別情報と結合することにより複数のデータ処理コマンドを生成して前記複数のデータ処理コマンドを順次に前記処理手段へ送出する工程とを有することを特徴とする画像処理装置の制御方法。
  9. 少なくともコマンド生成する回数を設定したデータを保持するコマンドレジスタと、RAMからダイレクトメモリアクセスによって取得した処理対象データを保持するバッファとを有する入力手段と、前記入力手段に接続され、前記入力手段から送出されたコマンドにしたがって処理対象データを処理する処理手段とを備え、処理対象データに処理を施す処理装置の制御方法であって、
    前記バッファへのコマンド生成のためのデータの書き込み、及び前記バッファへの処理対象データの書き込みを受け付ける工程と、
    前記入力手段が、前記コマンドレジスタから取得したデータと前記バッファから取得した処理対象データに基づいて、前記コマンドレジスタに保持されたデータに設定された回数の、前記処理手段のレジスタを制御するためのレジスタ制御コマンド、或いは、処理対象データの処理を指示するためのデータ処理コマンドを生成して前記処理手段へ送出する工程とを有することを特徴とする画像処理装置の制御方法。
JP2014001226A 2014-01-07 2014-01-07 画像処理装置及びその制御方法 Active JP5671635B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014001226A JP5671635B2 (ja) 2014-01-07 2014-01-07 画像処理装置及びその制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014001226A JP5671635B2 (ja) 2014-01-07 2014-01-07 画像処理装置及びその制御方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2009135354A Division JP2010282429A (ja) 2009-06-04 2009-06-04 画像処理装置及びその制御方法

Publications (2)

Publication Number Publication Date
JP2014112396A JP2014112396A (ja) 2014-06-19
JP5671635B2 true JP5671635B2 (ja) 2015-02-18

Family

ID=51169445

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014001226A Active JP5671635B2 (ja) 2014-01-07 2014-01-07 画像処理装置及びその制御方法

Country Status (1)

Country Link
JP (1) JP5671635B2 (ja)

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01282642A (ja) * 1988-05-10 1989-11-14 Mitsubishi Electric Corp データ駆動形計算機
JPH0567222A (ja) * 1991-09-06 1993-03-19 Nec Corp 関数呼出し処理方式
JP2772604B2 (ja) * 1992-10-27 1998-07-02 シャープ株式会社 データ処理システム
JP3696625B2 (ja) * 1992-07-27 2005-09-21 シャープ株式会社 データ駆動型情報処理装置
JP3442192B2 (ja) * 1995-05-31 2003-09-02 シャープ株式会社 データ駆動型情報処理装置
JP2000168171A (ja) * 1998-12-10 2000-06-20 Canon Inc 印刷装置及びその制御方法
JP2001277613A (ja) * 2000-03-31 2001-10-09 Canon Inc 画像処理装置および方法
JP3983455B2 (ja) * 2000-04-13 2007-09-26 シャープ株式会社 データ駆動型情報処理装置の実行制御装置
JP4093741B2 (ja) * 2001-10-03 2008-06-04 シャープ株式会社 外部メモリ制御装置およびそれを含んだデータ駆動型情報処理装置
JP3834318B2 (ja) * 2004-03-17 2006-10-18 シャープ株式会社 データ駆動プロセッサ用のデータ入力装置、データ出力装置およびそれらの方法
US20050262311A1 (en) * 2004-05-20 2005-11-24 Lippincott Louis A Hierarchical processor architecture for video processing
JP4255475B2 (ja) * 2006-01-04 2009-04-15 シャープ株式会社 データ駆動型情報処理装置
JP5111020B2 (ja) * 2007-08-29 2012-12-26 キヤノン株式会社 画像処理装置及びその制御方法

Also Published As

Publication number Publication date
JP2014112396A (ja) 2014-06-19

Similar Documents

Publication Publication Date Title
JP2010282429A (ja) 画像処理装置及びその制御方法
JP5886583B2 (ja) データ処理装置、処理方法、制御方法、及びプログラム
US9569703B2 (en) Data transfer apparatus and method thereof
JP2008193529A (ja) 走査変換装置及び走査変換方法
US9055253B2 (en) Method, apparatus, and medium acquiring band-area height on the basis of transfer amount and transfer unit of partial image data of the band area
US9786250B2 (en) Control apparatus, image processing apparatus, control method, and non-transitory computer-readable storage medium
JP4594042B2 (ja) 画像処理方法、画像処理装置、及びコンピュータプログラム
JP5671635B2 (ja) 画像処理装置及びその制御方法
JP6238510B2 (ja) バッファ、バッファの制御方法、同期制御装置、同期制御方法、画像処理装置および画像処理方法
JP6544905B2 (ja) 画像処理装置、画像処理方法、プログラム
JP6463437B2 (ja) 画像処理装置及びその制御方法、並びに、プログラム
JP5567790B2 (ja) 画像処理装置及びその制御方法、並びに、プログラム
JP5597272B2 (ja) 演算方法、演算装置、画像処理装置およびプログラム
JP6808712B2 (ja) 画像処理装置及びその制御方法、並びに、プログラム
JP6779263B2 (ja) データ処理装置及び方法及びプログラム
JP5885780B2 (ja) 画像処理装置及びその制御方法、並びに、プログラム
JP6225202B2 (ja) 画像処理装置及びその制御方法、並びに、プログラム
JPH11168610A (ja) 画像処理装置
JP6562756B2 (ja) 画像処理装置およびその制御方法
JP2009071756A (ja) 画像処理回路、画像処理装置
JP2006014378A (ja) 画像処理装置、画像処理方法およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2012034104A (ja) 画像処理装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140829

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140905

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141031

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20141121

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141219

R151 Written notification of patent or utility model registration

Ref document number: 5671635

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151