演算方法、演算装置、画像処理装置およびプログラム
【課題】 遅延メモリの省容量化を実現しつつも、ある一定のメモリ帯域の中でさまざまな形態の画像処理を実現するため、データの解像度と参照枚数が変化しても柔軟に対処できる画像処理方法及びその装置を提供する。
【解決手段】 画像データの転送単位を設定し、該転送単位の画像データを処理するために必要な参照用データの転送単位を取得する。バッファの容量に収まるように、画像データの転送単位と参照用データの転送単位とから、画像データの転送量を取得する。画像データの転送量と画像データの転送単位とに基づいて、バンド領域の高さを取得する。
【解決手段】 画像データの転送単位を設定し、該転送単位の画像データを処理するために必要な参照用データの転送単位を取得する。バッファの容量に収まるように、画像データの転送単位と参照用データの転送単位とから、画像データの転送量を取得する。画像データの転送量と画像データの転送単位とに基づいて、バンド領域の高さを取得する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、演算方法、演算装置、画像処理装置およびプログラムに関するものである。特に、本発明は、画像処理のためにメインメモリの複数の画像データや補正データなどを分割して取り扱い、必要なデータを逐次的に読み出して画像処理や補正処理を行なう場合に、好適に用いられるものである。
【背景技術】
【0002】
従来から、画像形成を行うに際し、空間フィルタ処理などの局所(近傍)画像処理が行なわれている。この局所画像処理は、処理対象となる画素を含む空間フィルタ領域に含まれるすべての画素を用いて、何らかの演算を行なう画像処理のことである。なお、以下の説明では、処理対象となる画素を注目画素と略称する。
【0003】
例えば、図11のデジタル画像データ300に対して、エッジ強調処理やぼかし処理といった空間フィルタ処理が施される。このような局所画像処理の従来技術として、デジタル画像データを領域ごとに分割し、分割された別々の領域ごとに局所画像処理を行なうという技術がある(特許文献1〜4を参照)。一般に、かかる技術では、図11の(a)〜(d)に示されるように、1枚のデジタル画像データ300の全体が帯状(短冊状)に分割され、逐次的に領域毎に各種の画像処理が行なわれる。この分割された細長い領域をバンド領域と呼び、バンド領域が展開される記憶領域をバンドメモリと呼び、画像を分割する行為をバンド分割と呼ぶ。バンドメモリは、メインメモリ内に記憶領域として確保されると決まっているわけではなく、システム上のどの記憶領域に確保してもよいが、ここでは、説明を簡潔にするためにバンドメモリをメインメモリ内に確保する場合を例に挙げて説明する。
【0004】
なお、デジタル画像データの座標系(主走査方向−副走査方向)は、長さ方向と高さ方向という新たな座標系(バンド領域座標系)を定義し、バンド領域を(長さBdl×高さBdh)で表現する。副走査方向に画像をバンド分割する場合は、図11の(e)に示すように、バンド領域を(長さBdl×高さBdh)で表現する。一方、主走査方向に画像をバンド分割する場合は、図12の(a)〜(d)に示すように、バンド領域を(長さBdl×高さBdh)で表現する。
【0005】
すなわち、バンド領域の長さBdlは、必ずデジタル画像データの主走査方向の幅もしくは副走査方向の高さの何れかの値となり、バンドの高さは任意の値となる。
【0006】
バンド処理について、図11の例でもう少し詳しく説明する。なお、図12においても基本的に同様であるので、重複した説明はさける。
【0007】
まず、図11の(a)に示す第1のバンド領域301を、メインメモリ上のバンドメモリに展開して画像処理を行なう。次に、図11の(b)に示す第2のバンド領域302を第1のバンド領域301が展開されたバンドメモリに上書き展開して画像処理を行なう。さらに、図11の(c)に示す第3のバンド領域303を第2のバンド領域302が展開されたバンドメモリに上書き展開して画像処理を行なう。最後に、図11の(d)に示す第4のバンド領域304を第3のバンド領域303が展開されたバンドメモリに上書き展開して画像処理を行なう。 図11の(a)〜(d)で明らかなように、バンド領域301〜304の長さは同じであるが、高さは同じである必要性は無い。メインメモリに確保される記憶領域であるところのバンドメモリの高さは、高さ方向のサイズが最も大きいバンド領域(図11の場合、第1〜第3のバンド領域301〜303)によって決定される。図12の場合も、バンド分割が3つであるのみで、図11と同様である。
【0008】
かかる技術では、各バンド領域間で隙間なく局所画像処理を行なうために、各バンド領域が、夫々隣接する領域との境界で一部分が互いに重なり合うように工夫している。また、特許文献4では、各バンド領域の高さと同一の方向に1画素ずつ余分に画素を走査して、局所画像処理に必要な注目画素を保持する遅延メモリの容量を各バンド領域の高さの大きさで規定することで、この遅延メモリの省メモリ化を実現している。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】米国特許第6,587,158号公報
【特許文献2】特開2000−312327公報
【特許文献3】特許第3733826号公報
【特許文献4】特開2006−139606公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、画像処理方法および装置の分野を見渡すと、前述の特許文献1〜4で示される空間フィルタ処理などの局所(近傍)画像処理を考慮するだけは、対応できない画像処理が多く存在する。以下に、図13を参照しながらその例を示す。
【0011】
まず、図13の上段に示す、スキャナなどの画像読み取り装置による読み取り画像に対して、センサ・デバイスの読み取り素子の個体差を補正するような補正処理1010があげられる。このような補正処理1010に必要な情報は、例えばセンサ・デバイスの読み取り素子ごとの読み取り最小値データと読み取り最大値データとである。これらの情報を基に、補正対象である読み取り画像を画素データ(画素値)ごとに、例えば下記(式1)を用いた演算により補正する。
【0012】
X=(P−MIN)/(MAX−MIN)×1023 ...(式1)
ここで、X:補正画素値(Xは10bitのデジタル信号の場合)、P:読み取り画素値、MIN:読み取り最小値、MAX:読み取り最大値である。
【0013】
つまり、補正処理1010に必要なデータは、画素ごとに異なる最小値データ、最大値データと読み取り画像の画素データという3種の異なる情報である。スキャナのセンサー・デバイスが、画素ごとの読み取り素子を1ラインにまとめたラインセンサの場合には、このセンサが副走査方向に移動することで2次元画像の読み取りを行う。このような読み取り方式の場合、主走査方向に対しては、画素ごとに異なる最小値データと最大値データが並び、副走査方向に対しては、主走査方向の位置が同一の画素の場合、同一の最小値データと最大値データとなる。
【0014】
また上記に類似した補正処理として液晶テレビ、プラズマテレビなどの薄型テレビで使用される2次元表示デバイスに対する補正処理がある。2次元表示デバイスの場合、2次元に敷き詰められた表示素子の個体差が異なるため、上記補正処理1010のように1次元の補正データではなく、2次元の補正データを用いて補正処理を施すことになる。上記のような補正処理では、デバイス形状(素子の敷き詰められ方)に依存して補正データの繰り返し方が異なるので注意が必要となる。
【0015】
また、図13の中段に示す、例えば複数のレンダリング画像を合成データ(α値)に応じて画像合成するような合成処理1020がある。合成対象のレンダリング画像が2枚のとき、例えば下記(式2)のような合成式を用いて各画素ごとに合成処理1020を施す。
【0016】
X=P2×A+P1×(1024−A) ...(式2)
ここで、X:合成後の画素値(α値が10bitのデジタル信号の場合)、P1:第1レンダリング画像の画素値、P2:第2レンダリング画像の画素値、A:合成データの画素毎のα値である。なお、合成データ(α値)は、レンダリング画像の画素すべてにおいて同一である場合もあれば、レンダリング画像の画素ごとに異なる2次元の合成データ(α値)である場合もある。
【0017】
後者のような合成データ(α値)の場合、上記のような合成処理1020では、合成対象のレンダリング画像の枚数Nの場合、処理に必要な画素データと合成データ(α値)の数が上述の例と異なることは言うまでもない。
【0018】
また、図13の下段に示すような、例えば、動画像のインタレース/プログレッシブ変換(以下、I/P変換1030と略称する)のように、時間軸方向に連続した複数のフィールド画像を参照して適応的な空間フィルタ処理を施す場合がある。一般的に、I/P変換1030のように複数のフィールド画像を参照するような画像処理では、より多くのフィールド画像を用いて適応処理した方が高品位な画像処理を施せる。
【0019】
しかしながら、複数のフィールド画像は、画像処理回路が実装される半導体チップ(ASICなど)と接続された安価なDRAMなどの外部メモリに記憶されていることが一般的である。そのため、I/P変換のために外部メモリから毎回複数のフィールド画像を読み出し、I/P変換回路に入力する必要がある。多くは、製品のコスト制約から外部メモリから複数フィールド画像を読み出すときに許容されるメモリ帯域には当然ながら限りがある。従って、例えば、フルハイビジョン(1920×1080i)のような高解像度のフィールド画像を際限なく読み出してI/P変換を施すわけにはいかない。
【0020】
一方、前述フルハイビジョン解像度のフィールド画像を例えば3枚までI/P変換のために読み出せるメモリ帯域の画像処理装置があったと仮定する。この画像処理装置において、NTSC(720×480i)のような低解像度の動画像をI/P変換するのであれば、前述フルハイビジョン解像度の動画像より多くのフィールド画像を参照して高品位なI/P変換ができることは自明である。
【0021】
上記のようなI/P変換1030では、使用可能なメモリ帯域が一定の場合、できるだけ高品位な画像処理を行うために、解像度や参照フィールド数に応じて柔軟に画像処理方法を切り替えることが重要となる。
【0022】
前述の図13に示した画像処理に共通することは、画素データが2次元に配置された画像データを1枚だけ考慮して画像処理を行うだけでは不十分であるということである。あるときは補正データが必要であったり、合成データが必要であったり、また、あるときは使用する画像データの枚数が任意であったりする。また、上記画像処理に必要な画像データや補正データや合成データは、センサ形状に依存して取得方法が異なる。例えば、繰り返し外部メモリなどの記憶装置から読み出すことが必要であったり、ユーザの指定する数によって読み出すレンダリング画像の枚数が異なったり、放送波の入力解像度によって読み出すフィールド画像の枚数が異なったりする。
【0023】
ところで、近年、機器の差別化を目的とした高画質化を実現するために、デジタル画像データの解像度は増大しており、画像処理におけるデータ処理量もそれに応じて増大している。また、製品の高画質化や機能強化のために必要とされる情報も多岐にわたる。しかし、製品開発においては、限られたコスト制約の中で種々の画像処理の要求に対応することが望まれている。つまり、メモリ帯域や回路規模を一定に保ったままで、前述の種々の画像処理を柔軟に実現する装置や手法が望まれているのである。
【0024】
しかしながら、上記従来技術は、局所画像処理を行なうに際し、バンド領域毎に外部メモリから1枚の画像データを読み出して空間フィルタ処理のための遅延メモリの省容量化については言及する。しかし、1枚の画像データに対する複数の補正データや複数の画像データや連続した複数フィールド画像に対して、各データの解像度とその数量に応じて柔軟にバンド領域を変更するという観点からの検討は行われていない。ここで、データの数量とは、参照フィールド数、レンダリング画像数、補正データ数である。
【0025】
本発明は、従来技術と同様に遅延メモリの省容量化を実現しつつも、ある一定のメモリ帯域の中でさまざまな形態の画像処理を実現するため、データの解像度と参照枚数が変化しても柔軟に対処できる演算方法、演算装置、画像処理装置を提供する。
【課題を解決するための手段】
【0026】
上記の課題を解決するための本発明の演算方法は、入力される画像データを複数のバンド領域に分割し、該分割したバンド領域をバッファ経由で画像処理手段へ供給し、該バンド領域ごとに参照用データを参照して画像処理を実施する画像処理装置のための演算方法であって、前記画像データの転送単位を設定する工程と、前記転送単位の画像データを処理するために必要な参照用データの転送単位を取得する第1取得工程と、前記バッファの容量に収まるように、前記画像データの転送単位と前記参照用データの転送単位とから、前記画像データの転送量を取得する第2取得工程と、前記画像データの転送量と前記画像データの転送単位とに基づいて、前記バンド領域の高さを取得する第3取得工程とを有することを特徴とする。
【発明の効果】
【0027】
本発明によれば、小さい回路規模で処理対象の画像データを複数バンド領域に分割し、分割したバンド領域毎に逐次的に画像処理を行うことができる。また、従来技術では実現していない多種多様な画像処理についてバンド領域の高さを柔軟に変更し、任意の解像度に対応した画像処理を小さい回路規模で実現できる。
【図面の簡単な説明】
【0028】
【図1】画像処理装置の全体構成の一例を示すブロック図である。
【図2】種々のデータのRAMへの格納例を説明する図である。
【図3】画像データの画素値の格納例を説明する図である。
【図4】画像処理部の回路構成の一例を示すブロック図である。
【図5】画像処理に必要なデータをRAMからバッファに格納し、画像処理入力回路から画素データを出力するまでの動作例を示す図である。
【図6】画像処理工程の一例を示すフローチャートである。
【図7】画像処理装置の画像処理入力回路の構成の一例を示す図である。
【図8A】画像処理装置の画像処理入力回路の動作の一例を示す図である。
【図8B】画像処理装置の画像処理入力回路の動作の一例を示す図である。
【図9】画素データの出力例を示すフローチャートである。
【図10】画像データ・フォーマットの一例を説明する図である。
【図11】バンド処理の動作の一例を説明する図である。
【図12】バンド処理の動作の一例を説明する図である。
【図13】従来の画像処理の例を説明する図である。
【発明を実施するための形態】
【0029】
以下、添付の図面を参照して本発明の好適な実施例を説明する。
【0030】
[実施例1]
実施例1では、バンド処理に特化した画像処理を行なう。これにより、特許文献1〜4記載の空間フィルタ処理などの局所(近傍)画像処理における遅延メモリの省容量化や特許文献4記載の複数画素を1つの処理単位とすることによる回路規模削減や高速化を実現する。それと共に、1枚の画像データに対する処理ではなく、複数の画像データと補正データの少なくとも一方を参照した画像データの補正処理や画像処理を実現する。このような目的を達成するために、実施例1では、デジタル画像データの座標系(主走査方向−副走査方向)とは異なるバンド領域座標系で画像処理が行なわれる。
【0031】
<画像処理装置の全体構成>
図1は、実施例1による画像処理装置の全体構成の一例を示すブロック図である。
【0032】
図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変換)される。こうして、デジタル化されたフルカラー信号(デジタル画像データという)が生成される。
【0033】
生成されたデジタル画像データは、CPU102により予め動作を設定されたDMAC(Direct Memory Access Controller)192により、共有バス190を介して、CPU回路部100のRAM106に格納される。次に、CPU102は、DMAC194に設定してRAM106に格納されたデジタル画像データを読み出して、画像処理部150に入力する。
【0034】
画像処理部150は、入力されたデジタル画像データに対し、ある時はスキャナなどのセンサ・デバイスの読み取り素子の個体差の補正と入力ガンマ補正などの色補正を行い、読み取り画像を正規化して一定水準の画像データを作成する。そして、これら処理が施されたデジタル画像データを予め書き込み動作の設定が成されたDMAC196により、RAM106に再度、格納させる。また、あるとき画像処理部150は、入力されたデジタル画像データに対し、入力色補正処理、空間フィルタ処理、色空間変換、濃度補正処理、及び中間調処理などの印刷のための画像処理を施して印刷可能な画像データを作成する。そして、上述同様DMAC196によりRAM106に格納させる。
【0035】
最後にCPU102は、DMAC198に設定してRAM106に格納された画像処理済みのデジタル画像データを読み出して、画像印刷部(プリンタ)170へ出力する。この画像印刷部(プリンタ)170は、たとえば、インクジェットヘッドやサーマルヘッド等を使用したラスタプロッタ等の印刷出力部(図示せず)を備えて構成され、入力されたデジタル画像信号により紙上に画像を記録する。あるいは、後述の実施例2では、ディスプレイなどの映像表示部160により表示出力される。
【0036】
なお、CPU回路部100は、演算制御用のCPU102、固定データやプログラムを格納するROM104、データの一時保存やプログラムのロードに使用されるRAM106、及び外部記憶装置108等を備える。CPU回路部100は、画像読み取り部120、画像処理部150、及び画像印刷部(プリンタ)170等を制御し、本実施例の画像処理装置のシーケンスを統括的に制御する。外部記憶部108は、本実施例の画像処理装置が使用するパラメータやプログラムや補正データを記憶するディスク等の記憶媒体であり、RAM106のデータやプログラム等は、外部記憶部108からロードされる構成としても構わない。
【0037】
<補正処理>
まず、図1の画像読み取り部120による読み取り画像に対して、センサ・デバイスの読み取り素子の個体差を補正するような補正処理を行う場合について説明する。このような画像処理の場合、前述のようにセンサ・デバイスの読み取り素子ごとの読み取り最小値データと読み取り最大値データが必要になる。これらの種々のデータは一時的に前述RAM106に格納されているが、一般的にRAM106は安価なDRAMで構成されることが多い。従って、前述のようにDMACを介してこのような種々のデータを読み書きするには、DRAMが性能を落とさずに読み書きできるような単位でデータをアクセスすることが望ましい。
【0038】
(RAM106のデータ構成例)
図2を用いて、RAM106へのデータ格納のし方を説明する。
【0039】
図2のIMG_AREA_STR_ADDRからIMG_AREA_END_ADDRまでが、画像処理に必要な種々のデータを格納する領域である。図2の一例では、この領域にS0_IMGからS5_IMGまで6種のデータが格納されている状態である。DRAMの性能を落とさずにデータをアクセスできるように、各々格納されるデータの容量の最小単位は、参照番号408で示すように32bit×8wordの32Byteとなっている。当然ながら、S0_IMGからS5_IMGまでのデータの格納容量は、32Byteの整数倍となる。
【0040】
たとえば、2次元の画像データの場合、最大画像領域(window's area)440に相当する領域がメモリ上に420で示される。そして、そこに収まるS0_IMG(image's area)430の領域がメモリ上に410で示される領域に格納されている。422,424,426は、S1_IMG〜S3_IMGが収まる最大画像領域に相当するメモリ上の領域を示す。
【0041】
スキャナのライン・センサ・デバイス450が原稿490に対して副走査方向(v)に移動しながら原稿を読み取る場合には、ライン・センサ・デバイス450の主走査方向(h)に補正データ(MAX)470と補正データ(MIN)475が分布している。そのデータは、図2の例では、RAM106上のS4_IMG460とS5_IMG465に格納されている。
【0042】
さらに、図3を用いてデータ構造を詳しく説明する。
【0043】
500は、前述のS0_IMG(image's area)430の領域の画像データを示している。510の領域は、前述の32Byte単位のデータであり、その中に520で示す8画素のデータがパッキングされている。また、1つの画素データには、530で示すように、それぞれ10bitのR(Red),G(Green),B(Blue)データがパッキングされている。図3の例では、残りの2bitは、DRAMのデータアクセスを簡単にするために無効データとして使用しない。図3の太枠500の範囲は、8M×Nの大きさの画像を意味する。また、前述のS4_IMG460とS5_IMG465に格納されているスキャナ・センサ・デバイスの補正データの場合、1ラインのライン・センサであるため座標(0,0)から(8M,0)の範囲のデータとなる。
【0044】
前述の画像読み取り部120により読み取られた読み取り画像の画像データと補正データは、図2および図3に基づいて説明したように、RAM106に格納されている。
【0045】
(画像処理部150の構成例)
図4は、実施例1の画像処理部150の構成例を示すブロック図である。
【0046】
CPU102がDMAC194を起動し、RAM106から上記のように格納された読み取り画像データと補正データとを読み出し、本実施例の画像処理装置が有する主要な回路構成の一例である、図4の画像処理部150に入力する。
【0047】
読み取り画像データと補正データとは、DMAC194を介しバス205を経由して画像処理部150に入力される。後述に詳細説明を行うが、画像処理入力回路220は、各種データを受け取り、図3で説明したパッキングされた読み取り画像データと補正データ(MAX)と補正データ(MIN)から、1画素単位の画素データ(画素値)を後述の順番で抜き出す。そして、後段の画像処理回路(1)230、画像処理回路(2)240、...、画像処理回路(P)280に送り、各種の補正処理(もしくは画像処理)を行う。そして、画像処理出力回路290にて、図3の32Byte単位のデータに再度パッキングしたデータを作成し、DMAC196を介しバス295を経由してRAM106に補正処理(画像処理)済みの画像データを書き戻す。画像処理回路(1)220から画像処理回路(P)290のうちのいずれかにて、上記(式1)で示したセンサ・デバイスの読み取り素子の個体差の補正を行う。もちろん、入力色補正処理、空間フィルタ処理、色空間変換、濃度補正処理、及び中間調処理のような画像処理も行っている。
【0048】
<RAM106から画像処理入力回路220へのデータ転送>
図5は、実施例1の画像処理方法を用いた場合に、RAM106から画像処理入力回路220に前述の画像データや補正データを入力する方法についての詳細を説明する図である。
【0049】
点線605で囲まれた画像データが、RAM106に格納されている。図5の(a)の600は画像データの全体像であり、そのうちバンド領域610を抜き出し、実施例1の画像処理方法を行う。処理対象となるバンド領域610は、図5の(b)と(c)で示されるようにバンド領域座標系でバンド領域の高さBdhが16ライン(16画素)であり、バンド領域の長さBdlが8×M画素である。まず、図5の(d)記載のCPU102は、DMAC194に対して、共有バス190を介してRAM106のバンド領域610の先頭アドレスと連続読み出し量、インクリメント・アドレスと繰り返し回数を設定する。ここで、連続読み出し量とは、32Byte単位のデータを連続して何回読み出すかを表す。図示の例では、先頭アドレスは図2のS0_IMG_STR_ADDRとなり、連続読み出し量は1回(32Byte)、インクリメント・アドレスは1ラインのデータ量である(32Byte×M)となり、繰り返し数は16回である。
【0050】
また、図5の(d)のように、DMAC194と画像処理入力回路220の間には、両モジュールからデータ・アクセス可能な共有バッファ660が存在する。そこで、CPU102は共有バス190を介してDMAC194に取得データの書き込み先である共有バッファの書き込み先頭アドレスも指示する。図5の一例では、バッファ662にデータを一時保存するため、S0_BUF_STR_ADDRが設定されるアドレスとなる。DMAC194はCPU102からの指示を受け、RAM106の画像データの図5の(c)に記載のバンド領域630の領域(1)640から領域(M)645のいずれかを読み出す(650として記載)。そして、バス694を介して共有バッファ660の領域662に取得データを格納後、割り込み信号692を介して転送終了を通知する。
【0051】
次に、CPU102は、共有バス190を介して後述の画像処理用のパラメータを設定する。画像処理用のパラメータとしては、処理データ数、データ識別子(番号)、バンド領域の高さ、画像データ・フォーマット、左端削除画素数と右端削除画素数、上端糊代画素数と下端糊代画素数と左端糊代画素数と右端糊代画素数を含む。更に、バンド領域の長さ方向の連続するN画素(画素群:Nは1以上の整数)を示す並列度、走査モード、共有バッファの読み出し先頭アドレスS0_BUF_STR_ADDRなどを含む。そして、CPU102は画像処理入力回路220を起動する。画像処理入力回路220は、共有バッファ660に対して、チップセレクト信号、アドレス信号などの制御信号672を介してリード・アクセスしてリード・データ674を取得する。そして、後述の動作を行い、1画素単位の画素データ(画素値)を選び出し、画像処理部150の内部バス225に画素データを出力した後、割り込み信号678を介して入力動作の終了を通知する。
【0052】
なお、共有バッファは、図5の(e)に660'で示すように、2つ以上のバッファ666と667で構成しても良い。前述の図5の(d)の例では、DMAC194と画像処理入力回路220で1つのバッファを共有しているため、時分割で動作していた。しかし、図5の(e)の共有バッファ660'の構成にすると、画像処理入力回路220が共有バッファ660'から画素データの取得処理をしている間に、DMAC194は共有バッファ660'にRAM106から次ぎの画像データを転送できる。そのため、DMAC194と画像処理入力回路220の処理を並列化できる。
【0053】
画像データのバンド領域を画像処理するためには、図5の(d)に記載の領域(1)640から領域(M)645まで、同様の動作をM回繰り返せばよい。以上のように、RAM106から共有バッファへの画像データの取得を行う。そして、その後の2つの補正データに関しても、DMAC194に設定する繰り返し回数を1回(つまり、バンド領域の高さが1ライン)として、画像データと同様の動作で順次必要なデータを取得する。
【0054】
なお、Nが2以上の整数のときには、N個の処理対象画素を同時に取得し、N個の前記画像処理回路へ同時に提供する。
【0055】
<バンド領域の高さの決定手順>
次に、実施例1のバンド領域の高さの決め方について、図6を用いて説明する。図6は、CPU102が実行するプログラムの処理手順例を示すフローチャートである。
【0056】
CPU102は、処理を開始し(S705)、補正処理に必要となる種々のデータの個数を、処理データ数Sとして設定する(S710)。本実施例の場合、処理データ数は"3"となる。第1の処理データに対しては、補正対象の読み取り画像データとしてそのデータを識別するために、データ識別子(番号)をとして0"を付加する。次に、第2の処理データに対しては、センサ・デバイスの補正データ(MAX)としてそのデータを識別するために、データ識別子(番号)として"1"を付加する。さらに、第3の処理データに対しては、センサ・デバイスの補正データ(MIN)としてそのデータを識別するために、データ識別子(番号)として"2"を付加する。さらに、図3で説明した画像データ・フォーマットの設定により、32Byteデータに何画素が含まれるかが規定される。本実施例では、説明を簡潔にするために、処理対象の画像データと補正データ(MAXおよびMIN)のデータ・フォーマットは、図3に図示のものと同一フォーマットとする。
【0057】
次に、処理データ数Sの数だけ、後述の処理のために以下のパラメータを設定する(S720)。例えば、入力画像処理回路の動作に必要な左端削除画素数と右端削除画素数、上端糊代画素数と下端糊代画素数と左端糊代画素数と右端糊代画素数、バンド領域の長さ方向の連続するN画素(画素群)を示す並列度、走査モードを含む。すなわち、変数lpを初期化し(S721)、変数lpがSに成るまで(S722)、各種パラメータの設定(S723)と変数lp+1(S724)を繰り返す。
【0058】
パラメータの設定が終わると(S722のYes)、次に、バンド領域の高さおよび共有バッファの読み出し先頭アドレスを算出する(S730)。まず、処理対象の画像データのフォーマットを設定する(S731)。前述のデータ・フォーマットの例では、32Byte単位のデータが画像データの1ラインを表す。本実施例の補正処理の場合、この1ラインの画像データを処理するために補正データ(MAXおよびMIN)が必要となる。ただし、本実施例ではライン・センサであり、1ラインの補正データが読み取り原稿の副走査方向に繰り返されるため、図3の画像データのA列(A−AからA−N)のすべての画像データに関して同一の補正データとなる。このA列の領域の画素データ(8×Nライン)を処理するための補正データ(MAX)は、1ライン×8画素分の32Byteあればよく、補正データ(MIN)に関しても同様である。
【0059】
そこで、共有バッファの容量が{256bit(=32Byte)×BLワード}であり、BLラインの種々のデータを保持できると仮定して、以下の算出を説明する。
【0060】
処理対象の画像データの最小転送単位と、この画像データを補正するための補正データ(MAXおよびMIN)の最小転送単位とが算出される(S732,S733)。本例では、画像データの最小転送単位は32Byte(共有バッファの1ワード(1ライン)に相当)であり、この画像データを補正するための補正データ(MAXおよびMIN)の最小転送単位も32Byteである。本実施例の場合、画像データA列については同一の補正データが繰り返される(S740の有)。この場合に、画像データの最小転送単位32Byteを処理するために(32Byte×2)の補正データが必要となる(S741)。そして、画像データの処理ライン数が増えても補正データのライン数は増えない。そこで、バッファライン数BLから"2"を減算した値を画像データの転送量として得て(S742)、参照データの最小転送単位を"0"とする(S750)。そして、バッファライン数BLから"2"を減算した値を画像データの最小転送単位である32Byteで除算した値がバンド領域の高さとなる(S751)。
【0061】
最後に共有バッファの先頭アドレスS0_BUF_STR_ADDR、S1_BUF_STR_ADDR、S2_BUF_STR_ADDRを設定する(S760)。上述の例では、
画像データ :S0_BUF_STR_ADDR=0
補正データ(MAX):S1_BUF_STR_ADDR=BL−2
補正データ(MIN):S2_BUF_STR_ADDR=BL−1
となる。
【0062】
なお、上記例では、補正データによる補正処理に限定して示したが、参照用画像データによる他の画像処理についても同様に実現される(S733参照)。
【0063】
<画像処理入力回路220の構成例と処理例>
(画像処理入力回路220の構成例)
本実施例の画像処理入力回路220の内部構成を、図7に示す。なお、図7で、図6と同じ機能要素や信号は同じ参照番号で示している。
【0064】
図7で、CPU102から動作パラメータ810が設定され、この値は内部レジスタに記憶され、シーケンサ820が動作する。動作については図8Aおよび図8Bと図9により後述する。シーケンサ820により共有バッファ660のアドレス672が算出され、32Byteのデータ674を共有バッファ660から取得する。そして、画素データ生成回路830にて1画素のデータ、もしくはバンド領域の長さ方向に連続するN画素のデータを生成し、画像処理部150の内部バス225へ出力される。
【0065】
(画像処理入力回路220の処理例)
画像データのバンド領域を画像処理するためには、図8Aの領域(1)640から領域(M)645まで32Byte×ライン数分(以下、転送ブロックと呼ぶ)のデータ処理をM回繰り返せばよい。また、画像データと参照する複数の画像データと補正データの少なくとも一方についてデータ処理をM回繰り返すので、本実施例の補正処理の場合は合計3M回繰り返すこととなる。また、各々のデータについてバンド領域の長さ方向にトリミング処理(不必要な端部画素を切り捨てる処理)を行うために、各々のデータ毎に左端削除画素数と右端削除画素数を設定する。
【0066】
この削除画素数は、画像データ・フォーマットの32Byte単位の画素領域を超えては設定することはできない。つまり、本実施例のデータ・フォーマットは8画素/32Byteであるため、左端削除画素数と右端削除画素数は7までの値となる。それ以上のトリミング処理を行う場合には、そもそも転送するブロックをRAM106からの読み出し時に転送しなければよい。また、この左端削除画素数と右端削除画素数の設定は、最初の転送ブロック640と最後の転送ブロック645でしか意味がない。そのため、左端削除画素数の設定は最初の転送ブロック640に影響を与え、斜線領域856(画素3〜7)が有効となり、画素0〜2は削除される。同様に右端削除画素数の設定は最後の転送ブロック645に影響を与え、斜線領域858(画素0から1)が有効となり画素2〜7は削除される。そしてトリミング処理後の画像データ領域860が生成される。
【0067】
次に、上記トリミング処理後の画像860に対して端部画素を指定画素数分(上端糊代画素数と下端糊代画素数と左端糊代画素数と右端糊代画素数)の画素コピー拡張を行い、糊代領域を生成して画像データの領域870にようにする。画像処理回路の中には空間フィルタなどの局所画像処理があり、画像データの上端、下端、左端、右端で局所画像処理を行うためには、上記糊代領域の生成機能があることが望ましい。
【0068】
本実施例では、スキャナ補正であるため、スキャナの読み取り領域を予め広く設定しておけば、糊代領域の生成機能がなくとも、所望の出力画像を得ることができる。しかし、後述の実施例2の場合では、入力が放送波などの規格化された映像信号であるため、所望の出力画像を得るためには上記糊代領域の生成機能が必要となる。上端糊代画素数と下端糊代画素数と左端糊代画素数と右端糊代画素数の設定により、シーケンサ820が糊代領域を考慮して共有バッファ660をアクセスする。
【0069】
具体的には転送ブロック(1)640のときには、上端糊代画素数と下端糊代画素数と左端糊代画素数を考慮し、上端糊代画素もしくは下端糊代画素を生成する間、共有バッファのアドレスをインクリメントしない。また、読み出した32Byteの画素データを872のように左端を拡張して画素があると考える。また、転送フロック(2)から(M−1)に関しては、前述同様に上端糊代画素もしくは下端糊代画素を生成する間、共有バッファのアドレスをインクリメントしない。左端、右端共に32Byteの画素領域を拡張して考える必要はない。また、最後の転送ブロック(M)645では、前述同様に上端糊代画素もしくは下端糊代画素を生成する間、共有バッファのアドレスをインクリメントしない。また、読み出した32Byteの画素データを874のように右端を拡張して画素があると考える。
【0070】
図8Bは、前述トリミング処理および糊代領域の生成機能による端部拡張処理によって作成された画像データ870がどのように内部バス225を介して出力されるかを説明している。図8Bでは、転送ブロック(1)640を例にしている。
【0071】
出力ライン数Lは上端糊代画素と下端糊代画素とバンド高さを示すライン数の合計である。CPU102から設定されたバンド領域の長さ方向の連続するN画素(画素群)を示す並列度および走査モードにより画素データの出力のし方が変わる。前記並列度の設定だけ、バンド領域長さ方向に連続して画素を出力する。走査モードの設定によりN画素を1画素/サイクルで出力するか、N画素/サイクルで同時(並列)に出力するかを定める。N画素/サイクルでの同時(並列)出力の場合、画像処理150の内部バス225は同時に出力できるだけの帯域を持っている必要があり、後段の画像処理回路もN画素並列で動作する必要がある。また、画像データ・フォーマットの32Byte単位の画素数と左端削除画素数と左端糊代画素数と前述の並列度により定まる画素群の数PNとは整数でなければならないという制限がある。
【0072】
<画像処理入力回路の内部バス225への画素データの出力手順例>
図9のフローチャートに、画像処理入力回路220の内部バス225への画素データの出力の手順例をまとめる。かかる図9のフローチャート
ステップS960のループ(S961,S962,S970,S963)から分かるように、画像データもしくは種々の参照データ(複数の補正データと画像データの少なくとも一方)の画素群を順番に出力して画像処理回路に提供する。図4の画像処理回路230、240、...、280は、N画素の画像データ、補正データMAX、補正データMINを順次受け取り、データが揃ったところで補正処理を行い、N画素の補正処理後のデータを出力する。各種データの区別は、前述のデータ識別子(番号)により判定される。これらの処理を、ステップS950のループ(S951,S952,S960,S953)が示すようにバンド領域の高さ方向に毎ライン繰り返す。ただし、補正データの場合は、バンド高さが1ラインであり、常に同じラインの共有バッファアドレスを繰り返し読むこととなる。出力ライン数(L×N)の画素の領域が出力された後、ステップS940のループ(S941,S942,S950,S943)が示すようにバンド領域の長さ方向に画素群(N画素)だけ走査し、次に画素分の処理へ移る。これらの処理を繰り返して画素群の数PNだけ処理が移行し、(PN×N×L)の画素数すべてが処理されると、1つの転送ブロック(1)が終了し、次の転送ブロック(2)〜(M)を繰り返すこととなる。
【0073】
[実施例2]
実施例1と同一機能を有する構成や工程には同一符号を付すとともに、構成的、機能的にかわらないものについてはその説明を省略する。
【0074】
次に、本発明を図13に示した合成処理1020やI/P変換1030に適用した実施例2ついて考える。
【0075】
実施例1との違いは、図1の映像入力部130を介して種々のデータが入力されること、および映像表示部160によりディスプレイなどの表示装置に処理後のデータが出力されることであり、図1のその他の構成部品の動作は実施例1と同じである。また、図4の画像処理部の構成は実施例1と同じである。
【0076】
本実施例2では、画像データを画像処理する場合に必要となる複数の画像データや合成データは、実施例1と違って2次元のデータとなっている。また実施例1の補正データ(MAXおよびMIN)のように副走査方向に同一のデータ値を繰り返すことはない。そのため、図2のS1_IMGやS2_IMGやS3_IMGのように処理対象であるS0_IMGと同様に、座標系440と同じ格納のし方となる。説明を簡潔にするために実施例2でも種々の画像データおよび合成データは、図3のデータ・フォーマットであると仮定する。また、RAM106から共有バッファ660への各種データ取得動作も、実施例1と同様である。
【0077】
<バンド領域の高さの決め方>
実施例2のバンド領域の高さの決め方については、実施例1と異なる。以下、その違いを説明する。
【0078】
CPU102は、画像処理に必要となる種々のデータの個数を処理データ数Sとして設定する。レンダリング画像2枚の合成処理のときは、必要なデータは、処理対象の画像データ1枚に合成対象の画像データと合成データ2枚の計3種のデータであり、S=3である。また、フィールド画像3枚に対するI/P変換の場合は、処理対象の時間のフィールド画像に対し、過去、未来の1フィールドづつの画像データが必要となり、計3種のデータとなり、S=3である。また、フィールド画像5枚に対するI/P変換の場合は、処理対象の時間のフィールド画像に対し、過去、未来の2フィールドづつの画像データが必要となり、計5種のデータとなり、S=5である。なお、処理データ数Sの数だけデータ識別子(番号)、左端削除画素数と右端削除画素数、上端糊代画素数と下端糊代画素数と左端糊代画素数と右端糊代画素数、バンド領域の長さ方向の連続するN画素(画素群)を示す並列度、走査モードの設定を行う。しかし、実施例1と同様のため説明を割愛する。
【0079】
次に、バンド領域の高さおよび共有バッファの読み出し先頭アドレスを算出する。前述フォーマットにより32Byte単位のデータが画像データの1ラインを表す。本実施例の場合、この1ラインの画像データを処理するためにその他の画像データおよび合成データも32Byte(1ライン)となる。そこで、共有バッファ660の容量が{256bit(=32Byte)×BL}ワードであり、BLラインの種々のデータを保持できると仮定して、以下の算出を説明する。
【0080】
画像データの最小転送単位は32Byte(共有バッファの1ワード(1ライン)に相当)であり、この画像データを処理するための種々のデータの最小転送単位も32Byteである。つまり、画像データの最小転送単位32Byteを処理するために、レンダリング画像2枚の合成処理のときは(32Byte×2)の種々のデータが必要となる。フィールド画像3枚に対するI/P変換の場合も同様である。フィールド画像5枚に対するI/P変換のときは、(32Byte×4)の種々のデータが必要となる。そこで、バンド領域の高さ(ライン数)は以下の結果となる。
・レンダリング画像2枚の合成処理
BLライン/(1ライン+2ライン)=BL/3
・フィールド画像3枚に対するI/P変換
BLライン/(1ライン+2ライン)=BL/3
・フィールド画像5枚に対するI/P変換
BLライン/(1ライン+4ライン)=BL/5
バッファライン数BLを、画像データの最小転送単位32Byteとそれを処理するために必要なデータの最小転送単位との合計値で除算した値が、バンド領域の高さとなる。
【0081】
共有バッファ660の先頭アドレスは、上記バンド領域の高さ(ライン数)づつ等間隔に配置されたアドレスとなる。図6の参照データの繰り返しの有無(S740)が"無"の場合の算出フローを参照されたい。
【0082】
上記バンド高さの設定に従い、所望の画像データおよび種々の参照データを共有バッファに書き込んだ後の画像処理回路への画素データの出力のし方は、実施例1と同様である。
【0083】
[他の実施例]
図12に示すように、特許文献1と同様にバンド領域の長さ方向を画像データの副走査方向に合わせて設定する。そして、図3の画像データ・フォーマットの32Byte単位に含まれる画素の領域520を主走査方向に1画素、副走査方向に8画素と設定しても、前述の実施例1及び2が成立することは言うまでもない。
【0084】
また、図10に示すように、32Byte単位に含まれる画素の領域1282が主走査方向に4画素、副走査方向に2画素と設定した場合を考える。この場合には、CPU102とDMAC194による共有バッファ660への画像データ転送は、最小転送単位が2ラインとなり無駄に転送することになる。しかし、図7の画像処理入力回路220のシーケンサ820が1ライン単位に共有バッファ660へのアクセス処理を行うことができるのであれば、前述の実施例1乃至3が成立することは言うまでもない。
【0085】
また、前述の各実施例の処理は、複数のハードウェアとソフトウエアの協同によって実現するようにしてもよい。この場合、ネットワーク又は各種記憶媒体を介して取得したソフトウエア(プログラム)をコンピュータ等の処理装置(CPU、プロセッサ)にて実行することで実現できる。
【0086】
また、本発明は前述した実施例の機能をコンピュータに実現させるプログラムを記憶した記憶媒体を、システム或いは装置に供給することによって実現してもよい。
【技術分野】
【0001】
本発明は、演算方法、演算装置、画像処理装置およびプログラムに関するものである。特に、本発明は、画像処理のためにメインメモリの複数の画像データや補正データなどを分割して取り扱い、必要なデータを逐次的に読み出して画像処理や補正処理を行なう場合に、好適に用いられるものである。
【背景技術】
【0002】
従来から、画像形成を行うに際し、空間フィルタ処理などの局所(近傍)画像処理が行なわれている。この局所画像処理は、処理対象となる画素を含む空間フィルタ領域に含まれるすべての画素を用いて、何らかの演算を行なう画像処理のことである。なお、以下の説明では、処理対象となる画素を注目画素と略称する。
【0003】
例えば、図11のデジタル画像データ300に対して、エッジ強調処理やぼかし処理といった空間フィルタ処理が施される。このような局所画像処理の従来技術として、デジタル画像データを領域ごとに分割し、分割された別々の領域ごとに局所画像処理を行なうという技術がある(特許文献1〜4を参照)。一般に、かかる技術では、図11の(a)〜(d)に示されるように、1枚のデジタル画像データ300の全体が帯状(短冊状)に分割され、逐次的に領域毎に各種の画像処理が行なわれる。この分割された細長い領域をバンド領域と呼び、バンド領域が展開される記憶領域をバンドメモリと呼び、画像を分割する行為をバンド分割と呼ぶ。バンドメモリは、メインメモリ内に記憶領域として確保されると決まっているわけではなく、システム上のどの記憶領域に確保してもよいが、ここでは、説明を簡潔にするためにバンドメモリをメインメモリ内に確保する場合を例に挙げて説明する。
【0004】
なお、デジタル画像データの座標系(主走査方向−副走査方向)は、長さ方向と高さ方向という新たな座標系(バンド領域座標系)を定義し、バンド領域を(長さBdl×高さBdh)で表現する。副走査方向に画像をバンド分割する場合は、図11の(e)に示すように、バンド領域を(長さBdl×高さBdh)で表現する。一方、主走査方向に画像をバンド分割する場合は、図12の(a)〜(d)に示すように、バンド領域を(長さBdl×高さBdh)で表現する。
【0005】
すなわち、バンド領域の長さBdlは、必ずデジタル画像データの主走査方向の幅もしくは副走査方向の高さの何れかの値となり、バンドの高さは任意の値となる。
【0006】
バンド処理について、図11の例でもう少し詳しく説明する。なお、図12においても基本的に同様であるので、重複した説明はさける。
【0007】
まず、図11の(a)に示す第1のバンド領域301を、メインメモリ上のバンドメモリに展開して画像処理を行なう。次に、図11の(b)に示す第2のバンド領域302を第1のバンド領域301が展開されたバンドメモリに上書き展開して画像処理を行なう。さらに、図11の(c)に示す第3のバンド領域303を第2のバンド領域302が展開されたバンドメモリに上書き展開して画像処理を行なう。最後に、図11の(d)に示す第4のバンド領域304を第3のバンド領域303が展開されたバンドメモリに上書き展開して画像処理を行なう。 図11の(a)〜(d)で明らかなように、バンド領域301〜304の長さは同じであるが、高さは同じである必要性は無い。メインメモリに確保される記憶領域であるところのバンドメモリの高さは、高さ方向のサイズが最も大きいバンド領域(図11の場合、第1〜第3のバンド領域301〜303)によって決定される。図12の場合も、バンド分割が3つであるのみで、図11と同様である。
【0008】
かかる技術では、各バンド領域間で隙間なく局所画像処理を行なうために、各バンド領域が、夫々隣接する領域との境界で一部分が互いに重なり合うように工夫している。また、特許文献4では、各バンド領域の高さと同一の方向に1画素ずつ余分に画素を走査して、局所画像処理に必要な注目画素を保持する遅延メモリの容量を各バンド領域の高さの大きさで規定することで、この遅延メモリの省メモリ化を実現している。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】米国特許第6,587,158号公報
【特許文献2】特開2000−312327公報
【特許文献3】特許第3733826号公報
【特許文献4】特開2006−139606公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、画像処理方法および装置の分野を見渡すと、前述の特許文献1〜4で示される空間フィルタ処理などの局所(近傍)画像処理を考慮するだけは、対応できない画像処理が多く存在する。以下に、図13を参照しながらその例を示す。
【0011】
まず、図13の上段に示す、スキャナなどの画像読み取り装置による読み取り画像に対して、センサ・デバイスの読み取り素子の個体差を補正するような補正処理1010があげられる。このような補正処理1010に必要な情報は、例えばセンサ・デバイスの読み取り素子ごとの読み取り最小値データと読み取り最大値データとである。これらの情報を基に、補正対象である読み取り画像を画素データ(画素値)ごとに、例えば下記(式1)を用いた演算により補正する。
【0012】
X=(P−MIN)/(MAX−MIN)×1023 ...(式1)
ここで、X:補正画素値(Xは10bitのデジタル信号の場合)、P:読み取り画素値、MIN:読み取り最小値、MAX:読み取り最大値である。
【0013】
つまり、補正処理1010に必要なデータは、画素ごとに異なる最小値データ、最大値データと読み取り画像の画素データという3種の異なる情報である。スキャナのセンサー・デバイスが、画素ごとの読み取り素子を1ラインにまとめたラインセンサの場合には、このセンサが副走査方向に移動することで2次元画像の読み取りを行う。このような読み取り方式の場合、主走査方向に対しては、画素ごとに異なる最小値データと最大値データが並び、副走査方向に対しては、主走査方向の位置が同一の画素の場合、同一の最小値データと最大値データとなる。
【0014】
また上記に類似した補正処理として液晶テレビ、プラズマテレビなどの薄型テレビで使用される2次元表示デバイスに対する補正処理がある。2次元表示デバイスの場合、2次元に敷き詰められた表示素子の個体差が異なるため、上記補正処理1010のように1次元の補正データではなく、2次元の補正データを用いて補正処理を施すことになる。上記のような補正処理では、デバイス形状(素子の敷き詰められ方)に依存して補正データの繰り返し方が異なるので注意が必要となる。
【0015】
また、図13の中段に示す、例えば複数のレンダリング画像を合成データ(α値)に応じて画像合成するような合成処理1020がある。合成対象のレンダリング画像が2枚のとき、例えば下記(式2)のような合成式を用いて各画素ごとに合成処理1020を施す。
【0016】
X=P2×A+P1×(1024−A) ...(式2)
ここで、X:合成後の画素値(α値が10bitのデジタル信号の場合)、P1:第1レンダリング画像の画素値、P2:第2レンダリング画像の画素値、A:合成データの画素毎のα値である。なお、合成データ(α値)は、レンダリング画像の画素すべてにおいて同一である場合もあれば、レンダリング画像の画素ごとに異なる2次元の合成データ(α値)である場合もある。
【0017】
後者のような合成データ(α値)の場合、上記のような合成処理1020では、合成対象のレンダリング画像の枚数Nの場合、処理に必要な画素データと合成データ(α値)の数が上述の例と異なることは言うまでもない。
【0018】
また、図13の下段に示すような、例えば、動画像のインタレース/プログレッシブ変換(以下、I/P変換1030と略称する)のように、時間軸方向に連続した複数のフィールド画像を参照して適応的な空間フィルタ処理を施す場合がある。一般的に、I/P変換1030のように複数のフィールド画像を参照するような画像処理では、より多くのフィールド画像を用いて適応処理した方が高品位な画像処理を施せる。
【0019】
しかしながら、複数のフィールド画像は、画像処理回路が実装される半導体チップ(ASICなど)と接続された安価なDRAMなどの外部メモリに記憶されていることが一般的である。そのため、I/P変換のために外部メモリから毎回複数のフィールド画像を読み出し、I/P変換回路に入力する必要がある。多くは、製品のコスト制約から外部メモリから複数フィールド画像を読み出すときに許容されるメモリ帯域には当然ながら限りがある。従って、例えば、フルハイビジョン(1920×1080i)のような高解像度のフィールド画像を際限なく読み出してI/P変換を施すわけにはいかない。
【0020】
一方、前述フルハイビジョン解像度のフィールド画像を例えば3枚までI/P変換のために読み出せるメモリ帯域の画像処理装置があったと仮定する。この画像処理装置において、NTSC(720×480i)のような低解像度の動画像をI/P変換するのであれば、前述フルハイビジョン解像度の動画像より多くのフィールド画像を参照して高品位なI/P変換ができることは自明である。
【0021】
上記のようなI/P変換1030では、使用可能なメモリ帯域が一定の場合、できるだけ高品位な画像処理を行うために、解像度や参照フィールド数に応じて柔軟に画像処理方法を切り替えることが重要となる。
【0022】
前述の図13に示した画像処理に共通することは、画素データが2次元に配置された画像データを1枚だけ考慮して画像処理を行うだけでは不十分であるということである。あるときは補正データが必要であったり、合成データが必要であったり、また、あるときは使用する画像データの枚数が任意であったりする。また、上記画像処理に必要な画像データや補正データや合成データは、センサ形状に依存して取得方法が異なる。例えば、繰り返し外部メモリなどの記憶装置から読み出すことが必要であったり、ユーザの指定する数によって読み出すレンダリング画像の枚数が異なったり、放送波の入力解像度によって読み出すフィールド画像の枚数が異なったりする。
【0023】
ところで、近年、機器の差別化を目的とした高画質化を実現するために、デジタル画像データの解像度は増大しており、画像処理におけるデータ処理量もそれに応じて増大している。また、製品の高画質化や機能強化のために必要とされる情報も多岐にわたる。しかし、製品開発においては、限られたコスト制約の中で種々の画像処理の要求に対応することが望まれている。つまり、メモリ帯域や回路規模を一定に保ったままで、前述の種々の画像処理を柔軟に実現する装置や手法が望まれているのである。
【0024】
しかしながら、上記従来技術は、局所画像処理を行なうに際し、バンド領域毎に外部メモリから1枚の画像データを読み出して空間フィルタ処理のための遅延メモリの省容量化については言及する。しかし、1枚の画像データに対する複数の補正データや複数の画像データや連続した複数フィールド画像に対して、各データの解像度とその数量に応じて柔軟にバンド領域を変更するという観点からの検討は行われていない。ここで、データの数量とは、参照フィールド数、レンダリング画像数、補正データ数である。
【0025】
本発明は、従来技術と同様に遅延メモリの省容量化を実現しつつも、ある一定のメモリ帯域の中でさまざまな形態の画像処理を実現するため、データの解像度と参照枚数が変化しても柔軟に対処できる演算方法、演算装置、画像処理装置を提供する。
【課題を解決するための手段】
【0026】
上記の課題を解決するための本発明の演算方法は、入力される画像データを複数のバンド領域に分割し、該分割したバンド領域をバッファ経由で画像処理手段へ供給し、該バンド領域ごとに参照用データを参照して画像処理を実施する画像処理装置のための演算方法であって、前記画像データの転送単位を設定する工程と、前記転送単位の画像データを処理するために必要な参照用データの転送単位を取得する第1取得工程と、前記バッファの容量に収まるように、前記画像データの転送単位と前記参照用データの転送単位とから、前記画像データの転送量を取得する第2取得工程と、前記画像データの転送量と前記画像データの転送単位とに基づいて、前記バンド領域の高さを取得する第3取得工程とを有することを特徴とする。
【発明の効果】
【0027】
本発明によれば、小さい回路規模で処理対象の画像データを複数バンド領域に分割し、分割したバンド領域毎に逐次的に画像処理を行うことができる。また、従来技術では実現していない多種多様な画像処理についてバンド領域の高さを柔軟に変更し、任意の解像度に対応した画像処理を小さい回路規模で実現できる。
【図面の簡単な説明】
【0028】
【図1】画像処理装置の全体構成の一例を示すブロック図である。
【図2】種々のデータのRAMへの格納例を説明する図である。
【図3】画像データの画素値の格納例を説明する図である。
【図4】画像処理部の回路構成の一例を示すブロック図である。
【図5】画像処理に必要なデータをRAMからバッファに格納し、画像処理入力回路から画素データを出力するまでの動作例を示す図である。
【図6】画像処理工程の一例を示すフローチャートである。
【図7】画像処理装置の画像処理入力回路の構成の一例を示す図である。
【図8A】画像処理装置の画像処理入力回路の動作の一例を示す図である。
【図8B】画像処理装置の画像処理入力回路の動作の一例を示す図である。
【図9】画素データの出力例を示すフローチャートである。
【図10】画像データ・フォーマットの一例を説明する図である。
【図11】バンド処理の動作の一例を説明する図である。
【図12】バンド処理の動作の一例を説明する図である。
【図13】従来の画像処理の例を説明する図である。
【発明を実施するための形態】
【0029】
以下、添付の図面を参照して本発明の好適な実施例を説明する。
【0030】
[実施例1]
実施例1では、バンド処理に特化した画像処理を行なう。これにより、特許文献1〜4記載の空間フィルタ処理などの局所(近傍)画像処理における遅延メモリの省容量化や特許文献4記載の複数画素を1つの処理単位とすることによる回路規模削減や高速化を実現する。それと共に、1枚の画像データに対する処理ではなく、複数の画像データと補正データの少なくとも一方を参照した画像データの補正処理や画像処理を実現する。このような目的を達成するために、実施例1では、デジタル画像データの座標系(主走査方向−副走査方向)とは異なるバンド領域座標系で画像処理が行なわれる。
【0031】
<画像処理装置の全体構成>
図1は、実施例1による画像処理装置の全体構成の一例を示すブロック図である。
【0032】
図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変換)される。こうして、デジタル化されたフルカラー信号(デジタル画像データという)が生成される。
【0033】
生成されたデジタル画像データは、CPU102により予め動作を設定されたDMAC(Direct Memory Access Controller)192により、共有バス190を介して、CPU回路部100のRAM106に格納される。次に、CPU102は、DMAC194に設定してRAM106に格納されたデジタル画像データを読み出して、画像処理部150に入力する。
【0034】
画像処理部150は、入力されたデジタル画像データに対し、ある時はスキャナなどのセンサ・デバイスの読み取り素子の個体差の補正と入力ガンマ補正などの色補正を行い、読み取り画像を正規化して一定水準の画像データを作成する。そして、これら処理が施されたデジタル画像データを予め書き込み動作の設定が成されたDMAC196により、RAM106に再度、格納させる。また、あるとき画像処理部150は、入力されたデジタル画像データに対し、入力色補正処理、空間フィルタ処理、色空間変換、濃度補正処理、及び中間調処理などの印刷のための画像処理を施して印刷可能な画像データを作成する。そして、上述同様DMAC196によりRAM106に格納させる。
【0035】
最後にCPU102は、DMAC198に設定してRAM106に格納された画像処理済みのデジタル画像データを読み出して、画像印刷部(プリンタ)170へ出力する。この画像印刷部(プリンタ)170は、たとえば、インクジェットヘッドやサーマルヘッド等を使用したラスタプロッタ等の印刷出力部(図示せず)を備えて構成され、入力されたデジタル画像信号により紙上に画像を記録する。あるいは、後述の実施例2では、ディスプレイなどの映像表示部160により表示出力される。
【0036】
なお、CPU回路部100は、演算制御用のCPU102、固定データやプログラムを格納するROM104、データの一時保存やプログラムのロードに使用されるRAM106、及び外部記憶装置108等を備える。CPU回路部100は、画像読み取り部120、画像処理部150、及び画像印刷部(プリンタ)170等を制御し、本実施例の画像処理装置のシーケンスを統括的に制御する。外部記憶部108は、本実施例の画像処理装置が使用するパラメータやプログラムや補正データを記憶するディスク等の記憶媒体であり、RAM106のデータやプログラム等は、外部記憶部108からロードされる構成としても構わない。
【0037】
<補正処理>
まず、図1の画像読み取り部120による読み取り画像に対して、センサ・デバイスの読み取り素子の個体差を補正するような補正処理を行う場合について説明する。このような画像処理の場合、前述のようにセンサ・デバイスの読み取り素子ごとの読み取り最小値データと読み取り最大値データが必要になる。これらの種々のデータは一時的に前述RAM106に格納されているが、一般的にRAM106は安価なDRAMで構成されることが多い。従って、前述のようにDMACを介してこのような種々のデータを読み書きするには、DRAMが性能を落とさずに読み書きできるような単位でデータをアクセスすることが望ましい。
【0038】
(RAM106のデータ構成例)
図2を用いて、RAM106へのデータ格納のし方を説明する。
【0039】
図2のIMG_AREA_STR_ADDRからIMG_AREA_END_ADDRまでが、画像処理に必要な種々のデータを格納する領域である。図2の一例では、この領域にS0_IMGからS5_IMGまで6種のデータが格納されている状態である。DRAMの性能を落とさずにデータをアクセスできるように、各々格納されるデータの容量の最小単位は、参照番号408で示すように32bit×8wordの32Byteとなっている。当然ながら、S0_IMGからS5_IMGまでのデータの格納容量は、32Byteの整数倍となる。
【0040】
たとえば、2次元の画像データの場合、最大画像領域(window's area)440に相当する領域がメモリ上に420で示される。そして、そこに収まるS0_IMG(image's area)430の領域がメモリ上に410で示される領域に格納されている。422,424,426は、S1_IMG〜S3_IMGが収まる最大画像領域に相当するメモリ上の領域を示す。
【0041】
スキャナのライン・センサ・デバイス450が原稿490に対して副走査方向(v)に移動しながら原稿を読み取る場合には、ライン・センサ・デバイス450の主走査方向(h)に補正データ(MAX)470と補正データ(MIN)475が分布している。そのデータは、図2の例では、RAM106上のS4_IMG460とS5_IMG465に格納されている。
【0042】
さらに、図3を用いてデータ構造を詳しく説明する。
【0043】
500は、前述のS0_IMG(image's area)430の領域の画像データを示している。510の領域は、前述の32Byte単位のデータであり、その中に520で示す8画素のデータがパッキングされている。また、1つの画素データには、530で示すように、それぞれ10bitのR(Red),G(Green),B(Blue)データがパッキングされている。図3の例では、残りの2bitは、DRAMのデータアクセスを簡単にするために無効データとして使用しない。図3の太枠500の範囲は、8M×Nの大きさの画像を意味する。また、前述のS4_IMG460とS5_IMG465に格納されているスキャナ・センサ・デバイスの補正データの場合、1ラインのライン・センサであるため座標(0,0)から(8M,0)の範囲のデータとなる。
【0044】
前述の画像読み取り部120により読み取られた読み取り画像の画像データと補正データは、図2および図3に基づいて説明したように、RAM106に格納されている。
【0045】
(画像処理部150の構成例)
図4は、実施例1の画像処理部150の構成例を示すブロック図である。
【0046】
CPU102がDMAC194を起動し、RAM106から上記のように格納された読み取り画像データと補正データとを読み出し、本実施例の画像処理装置が有する主要な回路構成の一例である、図4の画像処理部150に入力する。
【0047】
読み取り画像データと補正データとは、DMAC194を介しバス205を経由して画像処理部150に入力される。後述に詳細説明を行うが、画像処理入力回路220は、各種データを受け取り、図3で説明したパッキングされた読み取り画像データと補正データ(MAX)と補正データ(MIN)から、1画素単位の画素データ(画素値)を後述の順番で抜き出す。そして、後段の画像処理回路(1)230、画像処理回路(2)240、...、画像処理回路(P)280に送り、各種の補正処理(もしくは画像処理)を行う。そして、画像処理出力回路290にて、図3の32Byte単位のデータに再度パッキングしたデータを作成し、DMAC196を介しバス295を経由してRAM106に補正処理(画像処理)済みの画像データを書き戻す。画像処理回路(1)220から画像処理回路(P)290のうちのいずれかにて、上記(式1)で示したセンサ・デバイスの読み取り素子の個体差の補正を行う。もちろん、入力色補正処理、空間フィルタ処理、色空間変換、濃度補正処理、及び中間調処理のような画像処理も行っている。
【0048】
<RAM106から画像処理入力回路220へのデータ転送>
図5は、実施例1の画像処理方法を用いた場合に、RAM106から画像処理入力回路220に前述の画像データや補正データを入力する方法についての詳細を説明する図である。
【0049】
点線605で囲まれた画像データが、RAM106に格納されている。図5の(a)の600は画像データの全体像であり、そのうちバンド領域610を抜き出し、実施例1の画像処理方法を行う。処理対象となるバンド領域610は、図5の(b)と(c)で示されるようにバンド領域座標系でバンド領域の高さBdhが16ライン(16画素)であり、バンド領域の長さBdlが8×M画素である。まず、図5の(d)記載のCPU102は、DMAC194に対して、共有バス190を介してRAM106のバンド領域610の先頭アドレスと連続読み出し量、インクリメント・アドレスと繰り返し回数を設定する。ここで、連続読み出し量とは、32Byte単位のデータを連続して何回読み出すかを表す。図示の例では、先頭アドレスは図2のS0_IMG_STR_ADDRとなり、連続読み出し量は1回(32Byte)、インクリメント・アドレスは1ラインのデータ量である(32Byte×M)となり、繰り返し数は16回である。
【0050】
また、図5の(d)のように、DMAC194と画像処理入力回路220の間には、両モジュールからデータ・アクセス可能な共有バッファ660が存在する。そこで、CPU102は共有バス190を介してDMAC194に取得データの書き込み先である共有バッファの書き込み先頭アドレスも指示する。図5の一例では、バッファ662にデータを一時保存するため、S0_BUF_STR_ADDRが設定されるアドレスとなる。DMAC194はCPU102からの指示を受け、RAM106の画像データの図5の(c)に記載のバンド領域630の領域(1)640から領域(M)645のいずれかを読み出す(650として記載)。そして、バス694を介して共有バッファ660の領域662に取得データを格納後、割り込み信号692を介して転送終了を通知する。
【0051】
次に、CPU102は、共有バス190を介して後述の画像処理用のパラメータを設定する。画像処理用のパラメータとしては、処理データ数、データ識別子(番号)、バンド領域の高さ、画像データ・フォーマット、左端削除画素数と右端削除画素数、上端糊代画素数と下端糊代画素数と左端糊代画素数と右端糊代画素数を含む。更に、バンド領域の長さ方向の連続するN画素(画素群:Nは1以上の整数)を示す並列度、走査モード、共有バッファの読み出し先頭アドレスS0_BUF_STR_ADDRなどを含む。そして、CPU102は画像処理入力回路220を起動する。画像処理入力回路220は、共有バッファ660に対して、チップセレクト信号、アドレス信号などの制御信号672を介してリード・アクセスしてリード・データ674を取得する。そして、後述の動作を行い、1画素単位の画素データ(画素値)を選び出し、画像処理部150の内部バス225に画素データを出力した後、割り込み信号678を介して入力動作の終了を通知する。
【0052】
なお、共有バッファは、図5の(e)に660'で示すように、2つ以上のバッファ666と667で構成しても良い。前述の図5の(d)の例では、DMAC194と画像処理入力回路220で1つのバッファを共有しているため、時分割で動作していた。しかし、図5の(e)の共有バッファ660'の構成にすると、画像処理入力回路220が共有バッファ660'から画素データの取得処理をしている間に、DMAC194は共有バッファ660'にRAM106から次ぎの画像データを転送できる。そのため、DMAC194と画像処理入力回路220の処理を並列化できる。
【0053】
画像データのバンド領域を画像処理するためには、図5の(d)に記載の領域(1)640から領域(M)645まで、同様の動作をM回繰り返せばよい。以上のように、RAM106から共有バッファへの画像データの取得を行う。そして、その後の2つの補正データに関しても、DMAC194に設定する繰り返し回数を1回(つまり、バンド領域の高さが1ライン)として、画像データと同様の動作で順次必要なデータを取得する。
【0054】
なお、Nが2以上の整数のときには、N個の処理対象画素を同時に取得し、N個の前記画像処理回路へ同時に提供する。
【0055】
<バンド領域の高さの決定手順>
次に、実施例1のバンド領域の高さの決め方について、図6を用いて説明する。図6は、CPU102が実行するプログラムの処理手順例を示すフローチャートである。
【0056】
CPU102は、処理を開始し(S705)、補正処理に必要となる種々のデータの個数を、処理データ数Sとして設定する(S710)。本実施例の場合、処理データ数は"3"となる。第1の処理データに対しては、補正対象の読み取り画像データとしてそのデータを識別するために、データ識別子(番号)をとして0"を付加する。次に、第2の処理データに対しては、センサ・デバイスの補正データ(MAX)としてそのデータを識別するために、データ識別子(番号)として"1"を付加する。さらに、第3の処理データに対しては、センサ・デバイスの補正データ(MIN)としてそのデータを識別するために、データ識別子(番号)として"2"を付加する。さらに、図3で説明した画像データ・フォーマットの設定により、32Byteデータに何画素が含まれるかが規定される。本実施例では、説明を簡潔にするために、処理対象の画像データと補正データ(MAXおよびMIN)のデータ・フォーマットは、図3に図示のものと同一フォーマットとする。
【0057】
次に、処理データ数Sの数だけ、後述の処理のために以下のパラメータを設定する(S720)。例えば、入力画像処理回路の動作に必要な左端削除画素数と右端削除画素数、上端糊代画素数と下端糊代画素数と左端糊代画素数と右端糊代画素数、バンド領域の長さ方向の連続するN画素(画素群)を示す並列度、走査モードを含む。すなわち、変数lpを初期化し(S721)、変数lpがSに成るまで(S722)、各種パラメータの設定(S723)と変数lp+1(S724)を繰り返す。
【0058】
パラメータの設定が終わると(S722のYes)、次に、バンド領域の高さおよび共有バッファの読み出し先頭アドレスを算出する(S730)。まず、処理対象の画像データのフォーマットを設定する(S731)。前述のデータ・フォーマットの例では、32Byte単位のデータが画像データの1ラインを表す。本実施例の補正処理の場合、この1ラインの画像データを処理するために補正データ(MAXおよびMIN)が必要となる。ただし、本実施例ではライン・センサであり、1ラインの補正データが読み取り原稿の副走査方向に繰り返されるため、図3の画像データのA列(A−AからA−N)のすべての画像データに関して同一の補正データとなる。このA列の領域の画素データ(8×Nライン)を処理するための補正データ(MAX)は、1ライン×8画素分の32Byteあればよく、補正データ(MIN)に関しても同様である。
【0059】
そこで、共有バッファの容量が{256bit(=32Byte)×BLワード}であり、BLラインの種々のデータを保持できると仮定して、以下の算出を説明する。
【0060】
処理対象の画像データの最小転送単位と、この画像データを補正するための補正データ(MAXおよびMIN)の最小転送単位とが算出される(S732,S733)。本例では、画像データの最小転送単位は32Byte(共有バッファの1ワード(1ライン)に相当)であり、この画像データを補正するための補正データ(MAXおよびMIN)の最小転送単位も32Byteである。本実施例の場合、画像データA列については同一の補正データが繰り返される(S740の有)。この場合に、画像データの最小転送単位32Byteを処理するために(32Byte×2)の補正データが必要となる(S741)。そして、画像データの処理ライン数が増えても補正データのライン数は増えない。そこで、バッファライン数BLから"2"を減算した値を画像データの転送量として得て(S742)、参照データの最小転送単位を"0"とする(S750)。そして、バッファライン数BLから"2"を減算した値を画像データの最小転送単位である32Byteで除算した値がバンド領域の高さとなる(S751)。
【0061】
最後に共有バッファの先頭アドレスS0_BUF_STR_ADDR、S1_BUF_STR_ADDR、S2_BUF_STR_ADDRを設定する(S760)。上述の例では、
画像データ :S0_BUF_STR_ADDR=0
補正データ(MAX):S1_BUF_STR_ADDR=BL−2
補正データ(MIN):S2_BUF_STR_ADDR=BL−1
となる。
【0062】
なお、上記例では、補正データによる補正処理に限定して示したが、参照用画像データによる他の画像処理についても同様に実現される(S733参照)。
【0063】
<画像処理入力回路220の構成例と処理例>
(画像処理入力回路220の構成例)
本実施例の画像処理入力回路220の内部構成を、図7に示す。なお、図7で、図6と同じ機能要素や信号は同じ参照番号で示している。
【0064】
図7で、CPU102から動作パラメータ810が設定され、この値は内部レジスタに記憶され、シーケンサ820が動作する。動作については図8Aおよび図8Bと図9により後述する。シーケンサ820により共有バッファ660のアドレス672が算出され、32Byteのデータ674を共有バッファ660から取得する。そして、画素データ生成回路830にて1画素のデータ、もしくはバンド領域の長さ方向に連続するN画素のデータを生成し、画像処理部150の内部バス225へ出力される。
【0065】
(画像処理入力回路220の処理例)
画像データのバンド領域を画像処理するためには、図8Aの領域(1)640から領域(M)645まで32Byte×ライン数分(以下、転送ブロックと呼ぶ)のデータ処理をM回繰り返せばよい。また、画像データと参照する複数の画像データと補正データの少なくとも一方についてデータ処理をM回繰り返すので、本実施例の補正処理の場合は合計3M回繰り返すこととなる。また、各々のデータについてバンド領域の長さ方向にトリミング処理(不必要な端部画素を切り捨てる処理)を行うために、各々のデータ毎に左端削除画素数と右端削除画素数を設定する。
【0066】
この削除画素数は、画像データ・フォーマットの32Byte単位の画素領域を超えては設定することはできない。つまり、本実施例のデータ・フォーマットは8画素/32Byteであるため、左端削除画素数と右端削除画素数は7までの値となる。それ以上のトリミング処理を行う場合には、そもそも転送するブロックをRAM106からの読み出し時に転送しなければよい。また、この左端削除画素数と右端削除画素数の設定は、最初の転送ブロック640と最後の転送ブロック645でしか意味がない。そのため、左端削除画素数の設定は最初の転送ブロック640に影響を与え、斜線領域856(画素3〜7)が有効となり、画素0〜2は削除される。同様に右端削除画素数の設定は最後の転送ブロック645に影響を与え、斜線領域858(画素0から1)が有効となり画素2〜7は削除される。そしてトリミング処理後の画像データ領域860が生成される。
【0067】
次に、上記トリミング処理後の画像860に対して端部画素を指定画素数分(上端糊代画素数と下端糊代画素数と左端糊代画素数と右端糊代画素数)の画素コピー拡張を行い、糊代領域を生成して画像データの領域870にようにする。画像処理回路の中には空間フィルタなどの局所画像処理があり、画像データの上端、下端、左端、右端で局所画像処理を行うためには、上記糊代領域の生成機能があることが望ましい。
【0068】
本実施例では、スキャナ補正であるため、スキャナの読み取り領域を予め広く設定しておけば、糊代領域の生成機能がなくとも、所望の出力画像を得ることができる。しかし、後述の実施例2の場合では、入力が放送波などの規格化された映像信号であるため、所望の出力画像を得るためには上記糊代領域の生成機能が必要となる。上端糊代画素数と下端糊代画素数と左端糊代画素数と右端糊代画素数の設定により、シーケンサ820が糊代領域を考慮して共有バッファ660をアクセスする。
【0069】
具体的には転送ブロック(1)640のときには、上端糊代画素数と下端糊代画素数と左端糊代画素数を考慮し、上端糊代画素もしくは下端糊代画素を生成する間、共有バッファのアドレスをインクリメントしない。また、読み出した32Byteの画素データを872のように左端を拡張して画素があると考える。また、転送フロック(2)から(M−1)に関しては、前述同様に上端糊代画素もしくは下端糊代画素を生成する間、共有バッファのアドレスをインクリメントしない。左端、右端共に32Byteの画素領域を拡張して考える必要はない。また、最後の転送ブロック(M)645では、前述同様に上端糊代画素もしくは下端糊代画素を生成する間、共有バッファのアドレスをインクリメントしない。また、読み出した32Byteの画素データを874のように右端を拡張して画素があると考える。
【0070】
図8Bは、前述トリミング処理および糊代領域の生成機能による端部拡張処理によって作成された画像データ870がどのように内部バス225を介して出力されるかを説明している。図8Bでは、転送ブロック(1)640を例にしている。
【0071】
出力ライン数Lは上端糊代画素と下端糊代画素とバンド高さを示すライン数の合計である。CPU102から設定されたバンド領域の長さ方向の連続するN画素(画素群)を示す並列度および走査モードにより画素データの出力のし方が変わる。前記並列度の設定だけ、バンド領域長さ方向に連続して画素を出力する。走査モードの設定によりN画素を1画素/サイクルで出力するか、N画素/サイクルで同時(並列)に出力するかを定める。N画素/サイクルでの同時(並列)出力の場合、画像処理150の内部バス225は同時に出力できるだけの帯域を持っている必要があり、後段の画像処理回路もN画素並列で動作する必要がある。また、画像データ・フォーマットの32Byte単位の画素数と左端削除画素数と左端糊代画素数と前述の並列度により定まる画素群の数PNとは整数でなければならないという制限がある。
【0072】
<画像処理入力回路の内部バス225への画素データの出力手順例>
図9のフローチャートに、画像処理入力回路220の内部バス225への画素データの出力の手順例をまとめる。かかる図9のフローチャート
ステップS960のループ(S961,S962,S970,S963)から分かるように、画像データもしくは種々の参照データ(複数の補正データと画像データの少なくとも一方)の画素群を順番に出力して画像処理回路に提供する。図4の画像処理回路230、240、...、280は、N画素の画像データ、補正データMAX、補正データMINを順次受け取り、データが揃ったところで補正処理を行い、N画素の補正処理後のデータを出力する。各種データの区別は、前述のデータ識別子(番号)により判定される。これらの処理を、ステップS950のループ(S951,S952,S960,S953)が示すようにバンド領域の高さ方向に毎ライン繰り返す。ただし、補正データの場合は、バンド高さが1ラインであり、常に同じラインの共有バッファアドレスを繰り返し読むこととなる。出力ライン数(L×N)の画素の領域が出力された後、ステップS940のループ(S941,S942,S950,S943)が示すようにバンド領域の長さ方向に画素群(N画素)だけ走査し、次に画素分の処理へ移る。これらの処理を繰り返して画素群の数PNだけ処理が移行し、(PN×N×L)の画素数すべてが処理されると、1つの転送ブロック(1)が終了し、次の転送ブロック(2)〜(M)を繰り返すこととなる。
【0073】
[実施例2]
実施例1と同一機能を有する構成や工程には同一符号を付すとともに、構成的、機能的にかわらないものについてはその説明を省略する。
【0074】
次に、本発明を図13に示した合成処理1020やI/P変換1030に適用した実施例2ついて考える。
【0075】
実施例1との違いは、図1の映像入力部130を介して種々のデータが入力されること、および映像表示部160によりディスプレイなどの表示装置に処理後のデータが出力されることであり、図1のその他の構成部品の動作は実施例1と同じである。また、図4の画像処理部の構成は実施例1と同じである。
【0076】
本実施例2では、画像データを画像処理する場合に必要となる複数の画像データや合成データは、実施例1と違って2次元のデータとなっている。また実施例1の補正データ(MAXおよびMIN)のように副走査方向に同一のデータ値を繰り返すことはない。そのため、図2のS1_IMGやS2_IMGやS3_IMGのように処理対象であるS0_IMGと同様に、座標系440と同じ格納のし方となる。説明を簡潔にするために実施例2でも種々の画像データおよび合成データは、図3のデータ・フォーマットであると仮定する。また、RAM106から共有バッファ660への各種データ取得動作も、実施例1と同様である。
【0077】
<バンド領域の高さの決め方>
実施例2のバンド領域の高さの決め方については、実施例1と異なる。以下、その違いを説明する。
【0078】
CPU102は、画像処理に必要となる種々のデータの個数を処理データ数Sとして設定する。レンダリング画像2枚の合成処理のときは、必要なデータは、処理対象の画像データ1枚に合成対象の画像データと合成データ2枚の計3種のデータであり、S=3である。また、フィールド画像3枚に対するI/P変換の場合は、処理対象の時間のフィールド画像に対し、過去、未来の1フィールドづつの画像データが必要となり、計3種のデータとなり、S=3である。また、フィールド画像5枚に対するI/P変換の場合は、処理対象の時間のフィールド画像に対し、過去、未来の2フィールドづつの画像データが必要となり、計5種のデータとなり、S=5である。なお、処理データ数Sの数だけデータ識別子(番号)、左端削除画素数と右端削除画素数、上端糊代画素数と下端糊代画素数と左端糊代画素数と右端糊代画素数、バンド領域の長さ方向の連続するN画素(画素群)を示す並列度、走査モードの設定を行う。しかし、実施例1と同様のため説明を割愛する。
【0079】
次に、バンド領域の高さおよび共有バッファの読み出し先頭アドレスを算出する。前述フォーマットにより32Byte単位のデータが画像データの1ラインを表す。本実施例の場合、この1ラインの画像データを処理するためにその他の画像データおよび合成データも32Byte(1ライン)となる。そこで、共有バッファ660の容量が{256bit(=32Byte)×BL}ワードであり、BLラインの種々のデータを保持できると仮定して、以下の算出を説明する。
【0080】
画像データの最小転送単位は32Byte(共有バッファの1ワード(1ライン)に相当)であり、この画像データを処理するための種々のデータの最小転送単位も32Byteである。つまり、画像データの最小転送単位32Byteを処理するために、レンダリング画像2枚の合成処理のときは(32Byte×2)の種々のデータが必要となる。フィールド画像3枚に対するI/P変換の場合も同様である。フィールド画像5枚に対するI/P変換のときは、(32Byte×4)の種々のデータが必要となる。そこで、バンド領域の高さ(ライン数)は以下の結果となる。
・レンダリング画像2枚の合成処理
BLライン/(1ライン+2ライン)=BL/3
・フィールド画像3枚に対するI/P変換
BLライン/(1ライン+2ライン)=BL/3
・フィールド画像5枚に対するI/P変換
BLライン/(1ライン+4ライン)=BL/5
バッファライン数BLを、画像データの最小転送単位32Byteとそれを処理するために必要なデータの最小転送単位との合計値で除算した値が、バンド領域の高さとなる。
【0081】
共有バッファ660の先頭アドレスは、上記バンド領域の高さ(ライン数)づつ等間隔に配置されたアドレスとなる。図6の参照データの繰り返しの有無(S740)が"無"の場合の算出フローを参照されたい。
【0082】
上記バンド高さの設定に従い、所望の画像データおよび種々の参照データを共有バッファに書き込んだ後の画像処理回路への画素データの出力のし方は、実施例1と同様である。
【0083】
[他の実施例]
図12に示すように、特許文献1と同様にバンド領域の長さ方向を画像データの副走査方向に合わせて設定する。そして、図3の画像データ・フォーマットの32Byte単位に含まれる画素の領域520を主走査方向に1画素、副走査方向に8画素と設定しても、前述の実施例1及び2が成立することは言うまでもない。
【0084】
また、図10に示すように、32Byte単位に含まれる画素の領域1282が主走査方向に4画素、副走査方向に2画素と設定した場合を考える。この場合には、CPU102とDMAC194による共有バッファ660への画像データ転送は、最小転送単位が2ラインとなり無駄に転送することになる。しかし、図7の画像処理入力回路220のシーケンサ820が1ライン単位に共有バッファ660へのアクセス処理を行うことができるのであれば、前述の実施例1乃至3が成立することは言うまでもない。
【0085】
また、前述の各実施例の処理は、複数のハードウェアとソフトウエアの協同によって実現するようにしてもよい。この場合、ネットワーク又は各種記憶媒体を介して取得したソフトウエア(プログラム)をコンピュータ等の処理装置(CPU、プロセッサ)にて実行することで実現できる。
【0086】
また、本発明は前述した実施例の機能をコンピュータに実現させるプログラムを記憶した記憶媒体を、システム或いは装置に供給することによって実現してもよい。
【特許請求の範囲】
【請求項1】
入力される画像データを複数のバンド領域に分割し、該分割したバンド領域をバッファ経由で画像処理手段へ供給し、該バンド領域ごとに参照用データを参照して画像処理を実施する画像処理装置のための演算方法であって、
前記画像データの転送単位を設定する工程と、
前記転送単位の画像データを処理するために必要な参照用データの転送単位を取得する第1取得工程と、
前記バッファの容量に収まるように、前記画像データの転送単位と前記参照用データの転送単位とから、前記画像データの転送量を取得する第2取得工程と、
前記画像データの転送量と前記画像データの転送単位とに基づいて、前記バンド領域の高さを取得する第3取得工程と
を有することを特徴とする演算方法。
【請求項2】
前記第2の取得工程では、前記参照用データを参照して前記バンド領域の画像データを処理するときに繰り返しがある場合、該繰り返しを考慮して前記参照用データの転送単位が算出されてから前記画像データの転送量を定めることを特徴とする請求項1に記載の演算方法。
【請求項3】
前記画像データの転送量と前記参照用データの転送量とに従い、前記バッファに前記画像データおよび前記参照用データを格納する工程を更に有することを特徴とする請求項1に記載の演算方法。
【請求項4】
前記バッファに格納されたバンド領域の高さに相当する前記画像データおよび前記参照用データから、バンド領域の長さ方向に連続するN画素(ここで、Nは1以上の整数)からなる各々の画素群を各々の格納されたデータから読み出す工程と、
前記画像データおよび前記参照用データを区別するための識別子を付加して、画像処理に必要な順番で前記各々の画素群を画像処理手段に提供する提供工程とを更に有することを特徴とする請求項3に記載の演算方法。
【請求項5】
前記読み出す工程では、バンド領域の高さ方向に1画素ずつ走査することを特徴とする請求項4に記載の演算方法。
【請求項6】
前記読み出す工程では、左端削除画素数と右端削除画素数の指定に従い、前記画像データおよび前記参照用データに対してバンド領域の長さ方向にトリミング処理を行うことを特徴とする請求項4に記載の演算方法。
【請求項7】
前記読み出す工程では、バンド領域の長さ方向のトリミング処理後の前記画像データおよび前記参照用データに対して、上端糊代画素数、下端糊代画素数、左端糊代画素数、右端糊代画素数の指定に従い、端部を拡張することを特徴とする請求項6に記載の演算方法。
【請求項8】
前記Nが2以上の整数のときの前記提供工程では、N個の処理対象の画素から順次1画素ずつを前記画像処理手段に提供することを特徴とする請求項4に記載の演算方法。
【請求項9】
前記Nが2以上の整数のときの前記提供工程では、N個の処理対象の画素を同時に取得し、N個の前記画像処理手段へ同時に提供することを特徴とする請求項4に記載の演算方法。
【請求項10】
前記画像処理手段は、画素に付加された前記識別子に従い、処理対象の画像データ、参照用データのいずれであるかを区別して受け取り、画像処理を行うことを特徴とする請求項4に記載の演算方法。
【請求項11】
画像処理装置であって、
該画像処理装置のバッファの容量に収まるように画像データの転送単位と参照用データの転送単位とに基づいてバンド領域の高さを取得する演算装置、により求められた該バンド領域の高さを保持する保持手段と、
入力される画像データを複数のバンド領域に分割する分割手段と、
該分割したバンド領域をバッファ経由で取得し、該バンド領域ごとに参照用データを参照して画像処理を実施する画像処理手段と
を有することを特徴とする画像処理装置。
【請求項12】
前記画像処理手段は、前記バッファに格納されたバンド領域の高さに相当する画像データおよび前記参照用データについて、バンド領域の長さ方向に連続するN画素(ここで、Nは1以上の整数)の各々の画素群を読み出し、前記画像データと前記参照用データとを区別するための識別子を付加して、画像処理に必要な順番で前記各々の画素群を該画像処理手段に入力する入力手段を有することを特徴とする請求項11に記載の画像処理装置。
【請求項13】
前記入力手段は、バンド領域の高さ方向に1画素ずつ走査することを特徴とする請求項12に記載の画像処理装置。
【請求項14】
前記入力手段は、左端削除画素数と右端削除画素数の指定に従い、前記画像データと前記参照用データの少なくとも一方に対してバンド領域の長さ方向にトリミング処理を行うことを特徴とする請求項12に記載の画像処理装置。
【請求項15】
前記入力手段では、バンド領域の長さ方向のトリミング処理後の前記画像データと前記参照用データの少なくとも一方に対して、上端糊代画素数、下端糊代画素数、左端糊代画素数、右端糊代画素数の指定に従い、端部を拡張することを特徴とする請求項14に記載の画像処理装置。
【請求項16】
前記入力手段は、前記Nが2以上の整数の場合に、N個の処理対象の画素から順次1画素ずつを前記画像処理手段に入力することを特徴とする請求項12に記載の画像処理装置。
【請求項17】
前記入力手段は、前記Nが2以上の整数の場合に、N個の処理対象の画素を同時に取得し、N個の前記画像処理手段へ同時に入力することを特徴とする請求項12に記載の画像処理装置。
【請求項18】
前記画像処理手段は、画素に付加された識別子に基づいて処理対象の画像データと参照用データとのいずれであるかを判別して、前記画像処理を行うことを特徴とする請求項12に記載の画像処理装置。
【請求項19】
入力される画像データを複数のバンド領域に分割し、該分割したバンド領域をバッファ経由で画像処理手段へ供給し、該バンド領域ごとに参照用データを参照して画像処理を実施する画像処理装置に対して設定する、バンド領域の高さを取得する演算装置であって、 前記画像データの転送単位を設定する設定手段と、
前記転送単位の画像データを処理するために必要な参照用データの転送単位を取得する第1取得手段と、
前記バッファの容量に収まるように、前記画像データの転送単位と前記参照用データの転送単位とから、前記画像データの転送量を取得する第2取得手段と、
前記画像データの転送量と前記画像データの転送単位とに基づいて、前記バンド領域の高さを取得する第3取得手段と
を有することを特徴とする演算装置。
【請求項20】
画像処理装置のバッファの容量に収まるように画像データの転送単位と参照用データの転送単位とに基づいてバンド領域の高さを取得する演算装置、により求められた該バンド領域の高さを保持する保持手段を有する該画像処理装置を、
入力される画像データを複数のバンド領域に分割する分割手段、
該分割したバンド領域をバッファ経由で取得し、該バンド領域ごとに参照用データを参照して画像処理を実施する画像処理手段
として機能させるためのコンピュータプログラム。
【請求項21】
入力される画像データを複数のバンド領域に分割し、該分割したバンド領域をバッファ経由で画像処理手段へ供給し、該バンド領域ごとに参照用データを参照して画像処理を実施する画像処理装置に対して設定する、バンド領域の高さを取得する演算装置を、
前記画像データの転送単位を設定する設定手段、
前記転送単位の画像データを処理するために必要な参照用データの転送単位を取得する第1取得手段、
前記バッファの容量に収まるように、前記画像データの転送単位と前記参照用データの転送単位とから、前記画像データの転送量を取得する第2取得手段、
前記画像データの転送量と前記画像データの転送単位とに基づいて、前記バンド領域の高さを取得する第3取得手段
として機能させるためのコンピュータプログラム。
【請求項1】
入力される画像データを複数のバンド領域に分割し、該分割したバンド領域をバッファ経由で画像処理手段へ供給し、該バンド領域ごとに参照用データを参照して画像処理を実施する画像処理装置のための演算方法であって、
前記画像データの転送単位を設定する工程と、
前記転送単位の画像データを処理するために必要な参照用データの転送単位を取得する第1取得工程と、
前記バッファの容量に収まるように、前記画像データの転送単位と前記参照用データの転送単位とから、前記画像データの転送量を取得する第2取得工程と、
前記画像データの転送量と前記画像データの転送単位とに基づいて、前記バンド領域の高さを取得する第3取得工程と
を有することを特徴とする演算方法。
【請求項2】
前記第2の取得工程では、前記参照用データを参照して前記バンド領域の画像データを処理するときに繰り返しがある場合、該繰り返しを考慮して前記参照用データの転送単位が算出されてから前記画像データの転送量を定めることを特徴とする請求項1に記載の演算方法。
【請求項3】
前記画像データの転送量と前記参照用データの転送量とに従い、前記バッファに前記画像データおよび前記参照用データを格納する工程を更に有することを特徴とする請求項1に記載の演算方法。
【請求項4】
前記バッファに格納されたバンド領域の高さに相当する前記画像データおよび前記参照用データから、バンド領域の長さ方向に連続するN画素(ここで、Nは1以上の整数)からなる各々の画素群を各々の格納されたデータから読み出す工程と、
前記画像データおよび前記参照用データを区別するための識別子を付加して、画像処理に必要な順番で前記各々の画素群を画像処理手段に提供する提供工程とを更に有することを特徴とする請求項3に記載の演算方法。
【請求項5】
前記読み出す工程では、バンド領域の高さ方向に1画素ずつ走査することを特徴とする請求項4に記載の演算方法。
【請求項6】
前記読み出す工程では、左端削除画素数と右端削除画素数の指定に従い、前記画像データおよび前記参照用データに対してバンド領域の長さ方向にトリミング処理を行うことを特徴とする請求項4に記載の演算方法。
【請求項7】
前記読み出す工程では、バンド領域の長さ方向のトリミング処理後の前記画像データおよび前記参照用データに対して、上端糊代画素数、下端糊代画素数、左端糊代画素数、右端糊代画素数の指定に従い、端部を拡張することを特徴とする請求項6に記載の演算方法。
【請求項8】
前記Nが2以上の整数のときの前記提供工程では、N個の処理対象の画素から順次1画素ずつを前記画像処理手段に提供することを特徴とする請求項4に記載の演算方法。
【請求項9】
前記Nが2以上の整数のときの前記提供工程では、N個の処理対象の画素を同時に取得し、N個の前記画像処理手段へ同時に提供することを特徴とする請求項4に記載の演算方法。
【請求項10】
前記画像処理手段は、画素に付加された前記識別子に従い、処理対象の画像データ、参照用データのいずれであるかを区別して受け取り、画像処理を行うことを特徴とする請求項4に記載の演算方法。
【請求項11】
画像処理装置であって、
該画像処理装置のバッファの容量に収まるように画像データの転送単位と参照用データの転送単位とに基づいてバンド領域の高さを取得する演算装置、により求められた該バンド領域の高さを保持する保持手段と、
入力される画像データを複数のバンド領域に分割する分割手段と、
該分割したバンド領域をバッファ経由で取得し、該バンド領域ごとに参照用データを参照して画像処理を実施する画像処理手段と
を有することを特徴とする画像処理装置。
【請求項12】
前記画像処理手段は、前記バッファに格納されたバンド領域の高さに相当する画像データおよび前記参照用データについて、バンド領域の長さ方向に連続するN画素(ここで、Nは1以上の整数)の各々の画素群を読み出し、前記画像データと前記参照用データとを区別するための識別子を付加して、画像処理に必要な順番で前記各々の画素群を該画像処理手段に入力する入力手段を有することを特徴とする請求項11に記載の画像処理装置。
【請求項13】
前記入力手段は、バンド領域の高さ方向に1画素ずつ走査することを特徴とする請求項12に記載の画像処理装置。
【請求項14】
前記入力手段は、左端削除画素数と右端削除画素数の指定に従い、前記画像データと前記参照用データの少なくとも一方に対してバンド領域の長さ方向にトリミング処理を行うことを特徴とする請求項12に記載の画像処理装置。
【請求項15】
前記入力手段では、バンド領域の長さ方向のトリミング処理後の前記画像データと前記参照用データの少なくとも一方に対して、上端糊代画素数、下端糊代画素数、左端糊代画素数、右端糊代画素数の指定に従い、端部を拡張することを特徴とする請求項14に記載の画像処理装置。
【請求項16】
前記入力手段は、前記Nが2以上の整数の場合に、N個の処理対象の画素から順次1画素ずつを前記画像処理手段に入力することを特徴とする請求項12に記載の画像処理装置。
【請求項17】
前記入力手段は、前記Nが2以上の整数の場合に、N個の処理対象の画素を同時に取得し、N個の前記画像処理手段へ同時に入力することを特徴とする請求項12に記載の画像処理装置。
【請求項18】
前記画像処理手段は、画素に付加された識別子に基づいて処理対象の画像データと参照用データとのいずれであるかを判別して、前記画像処理を行うことを特徴とする請求項12に記載の画像処理装置。
【請求項19】
入力される画像データを複数のバンド領域に分割し、該分割したバンド領域をバッファ経由で画像処理手段へ供給し、該バンド領域ごとに参照用データを参照して画像処理を実施する画像処理装置に対して設定する、バンド領域の高さを取得する演算装置であって、 前記画像データの転送単位を設定する設定手段と、
前記転送単位の画像データを処理するために必要な参照用データの転送単位を取得する第1取得手段と、
前記バッファの容量に収まるように、前記画像データの転送単位と前記参照用データの転送単位とから、前記画像データの転送量を取得する第2取得手段と、
前記画像データの転送量と前記画像データの転送単位とに基づいて、前記バンド領域の高さを取得する第3取得手段と
を有することを特徴とする演算装置。
【請求項20】
画像処理装置のバッファの容量に収まるように画像データの転送単位と参照用データの転送単位とに基づいてバンド領域の高さを取得する演算装置、により求められた該バンド領域の高さを保持する保持手段を有する該画像処理装置を、
入力される画像データを複数のバンド領域に分割する分割手段、
該分割したバンド領域をバッファ経由で取得し、該バンド領域ごとに参照用データを参照して画像処理を実施する画像処理手段
として機能させるためのコンピュータプログラム。
【請求項21】
入力される画像データを複数のバンド領域に分割し、該分割したバンド領域をバッファ経由で画像処理手段へ供給し、該バンド領域ごとに参照用データを参照して画像処理を実施する画像処理装置に対して設定する、バンド領域の高さを取得する演算装置を、
前記画像データの転送単位を設定する設定手段、
前記転送単位の画像データを処理するために必要な参照用データの転送単位を取得する第1取得手段、
前記バッファの容量に収まるように、前記画像データの転送単位と前記参照用データの転送単位とから、前記画像データの転送量を取得する第2取得手段、
前記画像データの転送量と前記画像データの転送単位とに基づいて、前記バンド領域の高さを取得する第3取得手段
として機能させるためのコンピュータプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8A】
【図8B】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8A】
【図8B】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2013−109784(P2013−109784A)
【公開日】平成25年6月6日(2013.6.6)
【国際特許分類】
【出願番号】特願2013−48475(P2013−48475)
【出願日】平成25年3月11日(2013.3.11)
【分割の表示】特願2009−124720(P2009−124720)の分割
【原出願日】平成21年5月22日(2009.5.22)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成25年6月6日(2013.6.6)
【国際特許分類】
【出願日】平成25年3月11日(2013.3.11)
【分割の表示】特願2009−124720(P2009−124720)の分割
【原出願日】平成21年5月22日(2009.5.22)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]