アフィン変換装置
【課題】アフィン変換を高速で行うことができる装置を提供する。
【解決手段】生成装置50は、第1の画像を出力するための第1のデータから原走査線データを取得する第1の入力ユニット61と、原走査線データから、第2の画像の複数の画素を出力するための画素データを生成する補間演算ユニット65とを有する。画素データには、第2の画像の複数の走査線の線分データが含まれている。生成装置50は、それぞれの線分データを含むブロックデータをメモリ59に格納する第1の出力ユニット62と、メモリ59から、第2の画像の第3の走査線を出力する複数の線分データを含む複数のブロックデータを取得する第2の入力ユニット71と、第3の走査線に含まれる複数の画素を出力する走査線データを第2のデータとしてメモリ59に格納する第2の出力ユニット72とを有する。
【解決手段】生成装置50は、第1の画像を出力するための第1のデータから原走査線データを取得する第1の入力ユニット61と、原走査線データから、第2の画像の複数の画素を出力するための画素データを生成する補間演算ユニット65とを有する。画素データには、第2の画像の複数の走査線の線分データが含まれている。生成装置50は、それぞれの線分データを含むブロックデータをメモリ59に格納する第1の出力ユニット62と、メモリ59から、第2の画像の第3の走査線を出力する複数の線分データを含む複数のブロックデータを取得する第2の入力ユニット71と、第3の走査線に含まれる複数の画素を出力する走査線データを第2のデータとしてメモリ59に格納する第2の出力ユニット72とを有する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、アフィン変換された画像を出力するためのデータを生成する装置に関するものである。
【背景技術】
【0002】
平面図形(立体図形の投影も含む)から平面図形への変換の1つとしてアフィン変換が知られている。アフィン変換は、平行線が平行線に変換される変換であり、図形を所定の角度回転させたり、スキュー補正を施すためなどに用いられる。
【0003】
アフィン変換においては、x−y座標系により生成された画像データ(輝度データなどを含む)を、x−y座標系をθ回転したw−z座標系における画像データに変換する。回転座標系は、以下の式(A)で表わされる。R(θ)はアフィン変換行列である。
(w,z)=R(θ)(x,y) ・・・(A)
【0004】
画像データはライン(走査線)上に記憶されているRGBの輝度データであり、回転座標系における第Z番目のラインデータを形成するには、以下の式(B)により、メモリに記憶されるとびとびのアドレスへアクセスしなければならず、処理速度を向上することが難しい。
x=R^(-1)(θ)(w,Z)
y=R^(-1)(θ)(w,Z) ・・・(B)
【0005】
特許文献1では、画像データは大容量低速メモリからブロック単位で読みだされ、小容量高速メモリに格納される。アドレス生成部で生成されたアドレスにしたがってさらに読み出され、補間演算を行う演算部でスキュー補正がおこなわれる。アドレス生成部は、入力画像の傾きに応じた角度でメモリから斜め方向にブロック単位で読みだすべく、その少数部を所定の精度で近似してアドレスを順次生成し、かつ、アドレスを精度に応じた周期で所定量だけ増減することで近似によるアドレスの累積誤差を抑制する。一方、小容量高速メモリからは、補正後の画素に隣接する4点の画像データの座標を、アフィン逆行列を用いて演算し、取得している。
【特許文献1】特開2005−352703
【発明の開示】
【発明が解決しようとする課題】
【0006】
特許文献1に記載された技術では、大容量低速メモリから小容量高速メモリにブロック単位で読みだされる。しかしながら、小容量高速メモリからは、補正する画素毎に、補正に必要なデータを読み出す必要があり、ランダムアクセスを必要とする。したがって、データを入出力する処理時間が、画像データを変換するための処理時間のクリティカルパスおよび/またはボトルネックとなり、画像処理に要する時間をさらに短縮することが難しい。
【0007】
コピー機や画像を編集するアプリケーションにおいて、画像の微小な傾きを補正する処理(スキュー補正処理)の頻度は高く、この処理を高速で行えることは重要である。2度以下あるいは1度以下の画像の傾きであっても、直線部分が斜めに表示されることは、特にデジタル化された画像では目立つことが多い。また、微小な傾きを補正した画像を繰り返し表示することにより、ユーザは適切に傾きが補正された画像を選択することが可能となる。
【課題を解決するための手段】
【0008】
本発明の一態様は、第1の画像を出力するための第1のデータから、第1の画像がアフィン変換された第2の画像を出力するための第2のデータを生成する装置である。この装置は、第1のデータが格納された第1の記録媒体から、第1の画像の隣接する第1の原走査線および第2の原走査線に含まれる複数の画素を出力するための原走査線データを取得する第1の入力ユニットと、原走査線データから、第2の画像の複数の画素を出力するための画素データを生成する補間演算ユニットとを有する。画素データには、第2の画像の複数の走査線の線分に含まれる複数の画素を出力するための線分データが含まれている。この装置は、さらに、それぞれの線分データを含むブロックデータを入出力単位として第2の記録媒体に格納する第1の出力ユニットと、第2の記録媒体から、第2の画像の第3の走査線を出力するための複数の線分データを含む複数のブロックデータを取得する第2の入力ユニットと、第3の走査線に含まれる複数の画素を出力するための走査線データを第2のデータとして第3の記録媒体に格納する第2の出力ユニットとを有する。
【0009】
第1の画像の第1の走査線と第2の走査線とに含まれる画素を用いて生成(補間)された複数の画素(アフィン変換後の画素)は、第1の走査線と第2の走査線との間に存在する画素であり、第2の画像の複数の走査線の一部(線分)に含まれる画素となる。アフィン変換は平行線を平行線に変換する処理であり、基本的にはそれらの線分が重なることはなく、変換する角度が適当な範囲内であれば、1つの線分に、走査方向(主走査方向)に隣接する複数の画素が含まれる。すなわち、原走査線データから生成される画素データには、複数の線分データが含まれ、それぞれの線分データには複数の画素を出力するためのデータが含まれる。したがって、線分単位で、複数の画素を出力するためのデータ(線分データ)をメモリなどの記録媒体にいったん格納し、第2の画像の走査線の順番に線分データを読み出して第2の画像の走査線データを生成することにより、画素を出力するためのデータを、画素毎にランダムに読み出す処理を省くことができる。このため、アフィン変換を含めた画像処理におけるデータの入出力時間を短縮できる。
【0010】
走査方向は、画像を出力するための走査方向に限らず、この装置において、画像データを入力するための方向であっても良い。それぞれの線分データを含むブロックデータを入出力単位とすることは、1つの線分データを1つのブロックデータに含めて格納しても良く、1つの線分データを複数のブロックデータに分けて格納しても良い。
【0011】
第1の出力ユニットは、ブロックデータを固定長で第2の記録媒体に格納することが望ましい。データの入出力時間をさらに短縮できる可能性がある。第1の出力ユニットは、ブロックデータをバースト長で第2の記録媒体に格納することが望ましい。データの入出力時間をさらに短縮できる可能性がある。線分データが圧縮などの処理により可変長であっても、パディングデータを付加するなどの処理により、固定長で入出力することが可能である。
【0012】
第1の出力ユニットは、ブロックデータを、第2の画像の走査線の順番で読みだされるようにアドレスを変えて、第2の記録媒体に格納することが望ましい。第2の入力ユニットは、シーケンシャルにブロックデータを読み込み、第2の出力ユニットは、第2の画像の走査線データを出力できる。
【0013】
第2の入力ユニットは、ブロックデータを、第2の画像の走査線の順番で読みだすようにアドレスを変えて、第2の記録媒体から取得することも可能である。第1の出力ユニットは、ブロックデータをシーケンシャルに出力できる。
【0014】
補間演算ユニットは、副走査方向の補間により、それぞれの線分データに含まれる複数の画素を出力するためのデータを並列に生成する第1の演算回路を含むことが望ましい。並列処理により、演算処理に要する時間を短縮できる。補間演算ユニットは、走査方向の補間により、それぞれの線分データに含まれる複数の画素を出力するためのデータを並列に生成する第2の演算回路を、さらに含むことが望ましい。
【0015】
第1の出力ユニットは、第1の演算回路から出力された線分データを含むブロックデータを第2の記録媒体に格納し、第2の演算回路は、第2の入力ユニットにより取得された線分データを走査方向に補正して、補正後の線分データを生成することが可能である。この装置では、ブロックデータを第2の記録媒体に入出力することを要するので、補間演算を2段階に分けて実行しても良く、回路を再構成可能なデバイスに実装する場合に、演算に要するハードウェアリソースの専有量を削減できる。
【0016】
すなわち、本装置は、回路を再構成可能な再構成可能ユニットと、再構成可能ユニットに回路を構成する制御ユニットとを有することが望ましい。制御ユニットは、再構成可能ユニットに、第1の入力ユニット、第1の演算回路、および第1の出力ユニットを含む第1段階の回路を構成し、第2段階として、第2の入力ユニット、および第2の出力ユニットを含む第2段階の回路を構成する。第2の演算回路は、この処理のために使用可能な再構成可能ユニットのハードウェアリソースの量により、第1段階の回路に含めても良く、第2段階の回路に含めても良い。
【0017】
本発明の他の態様の1つは、回路を再構成可能な再構成可能ユニットと、再構成可能ユニットに回路を構成する制御ユニットとを有する装置を、制御ユニットにより制御する方法である。この方法は、第1の画像を出力するための第1のデータから、第1の画像がアフィン変換された第2の画像を出力するための第2のデータを生成することを有する。さらに、生成することは、再構成可能ユニットに第1段階の回路を構成することと、再構成可能ユニットに第2段階の回路を構成することとを含む。
【0018】
第1段階の回路は、第1のデータが格納された第1の記録媒体から、第1の画像の隣接する第1の原走査線および第2の原走査線に含まれる複数の画素を出力するための原走査線データを取得する第1の入力ユニットと、原走査線データから、第2の画像の複数の画素を出力するための画素データを生成する補間演算ユニットとを含む。画素データには、第2の画像の複数の走査線の線分に含まれる複数の画素を出力するための線分データが含まれている。さらに、第1段階の回路は、それぞれの線分データを含むブロックデータを入出力単位として第2の記録媒体に格納する第1の出力ユニットを含む。
【0019】
第2段階の回路は、第2の記録媒体から、第2の画像の第3の走査線を出力するための複数の線分データを含む複数のブロックデータを取得する第2の入力ユニットと、第3の走査線に含まれる複数の画素を出力するための走査線データを第3の記録媒体に格納する第2の出力ユニットと含む。
【0020】
本発明のさらなる態様の1つは、第1の画像を出力するための第1のデータから、第1の画像がアフィン変換された第2の画像を出力するための第2のデータを生成する方法であって、以下の工程を含む。
1. 第1のデータが格納された第1の記録媒体から、第1の画像の隣接する第1の原走査線および第2の原走査線に含まれる複数の画素を出力するための原走査線データを取得すること。
2. 原走査線データから、第2の画像の複数の画素を出力するための画素データを生成すること。画素データには、第2の画像の複数の走査線の線分に含まれる複数の画素を出力するための線分データが含まれている。
3. それぞれの線分データを含むブロックデータを入出力単位として第2の記録媒体に格納すること。
4. 第2の記録媒体から、第2の画像の第3の走査線を出力するための複数の線分データを含む複数のブロックデータを取得すること。
5. 第3の走査線に含まれる複数の画素を出力するための走査線データを第3の記録媒体に格納すること。
【0021】
第2の記録媒体には、ブロックデータを固定長で格納することが望ましく、バースト長で格納することがさらに望ましい。
【0022】
第2の記録媒体には、ブロックデータを、第2の画像の走査線の順番で読みだされるようにアドレスを変えて格納しても良い。第2の記録媒体から、ブロックデータを、第2の画像の走査線の順番で読みだすようにアドレスを変えて取得してもよい。
【発明を実施するための最良の形態】
【0023】
図1は、本発明の一実施形態である、画像データを生成する装置の基本構成ブロック図である。この画像処理装置あるいは生成装置50は、回路を再構成可能なデバイス(処理装置)1を用いて実現されている。生成装置50としての機能は、第1段階の回路51と、第2段階の回路52とに分けて、処理装置1の再構成可能領域10に構成される。この装置50は、第1の画像G1を出力するための第1のデータD1から、第1の画像G1がアフィン変換された第2の画像G2を出力するための第2のデータD2を生成する装置である。装置50は、記録媒体であるメモリ59を有し、メモリ59には、第1のデータD1と、第2のデータD2と、さらに、中間段階のデータMDが格納されるようになっている。再構成可能領域10に構成される第1段階の回路51は、メモリ59からデータを読み取る第1の入力ユニット61と、補間演算を行う第1の補間演算ユニット63と、第1の補間演算ユニットにより生成されたデータを複数のブロックに分ける(ブロック化する)ブロックデータ生成部66と、それらのブロックをメモリ59の所定のアドレスに書き込む第1の出力ユニット62と、第1段階の制御情報生成ユニット69とを含む。
【0024】
第1の入力ユニット61は、メモリ59の第1のデータD1から、第1の画像G1の隣接する第1の原走査線および第2の原走査線(以降では、第1のラインL1および第2のラインL2)に含まれる複数の画素を出力するための原走査線データE1を取得する。第1の補間演算ユニット63は、原走査線データE1から、第2の画像G2の複数の画素を出力するための画素データP1を生成するためのユニットである。本例の第1の補間演算ユニット63は、特に、原走査線データE1に含まれる第1および第2のラインのデータから副走査方向の補間を行い、第2の画像G2の画素データP1を生成する。後述するように、第1の画像G1の、第1および第2のラインのデータを補間して生成される画素データP1には、第2の画像G2の複数の走査線の線分LSに含まれる複数の画素を出力するための線分データLSDが含まれている。第1の出力ユニット62は、それぞれの線分データLSDを含むブロックデータを入出力単位とし、中間段階のデータMDの一部としてメモリ59に格納する。
【0025】
再構成可能領域10に構成される第2段階の回路52は、メモリ59から線分データLSDを読み込む第2の入力ユニット71と、第2の補間演算ユニット73と、読み出された線分データLSDから第2の画像G2を出力するため走査線データを生成するラインデータ生成ユニット76と、第2のデータD2をメモリ59に格納する第2の出力ユニット72と、第2段階の制御情報生成ユニット79とを含む。
【0026】
第2の入力ユニット71は、メモリ59から、第2の画像G2の第3の走査線L3を出力するための複数の線分データLSDを含む複数のブロックデータを順番に取得する。第2の補間演算ユニット73は、走査方向の補間を行い、線分データLSDを補正または再生成する。第2の出力ユニット72は、第3の走査線L3に含まれる複数の画素を出力するための走査線データを第2のデータD2の一部としてメモリ59に格納する。
【0027】
制御情報生成ユニット69および79は、ユーザあるいはアプリケーションプログラムなどにより与えられる回転角度によりメモリ59に対して入出力するためのブロックサイズを適切に決め、入出力のアドレスを生成あるいは管理するための情報を各ユニットに提供する。
【0028】
図2ないし図4を参照して、この生成装置50において、座標x−yで示される原画像(第1の画像)をアフィン変換して、座標w−zで示される第2の画像を生成する基本的なアルゴリズムを説明する。この生成装置50は、微小角回転、たとえば、回転角θが±2度程度以内のアフィン変換(微小角アフィン変換)を高速に行うことを目的としたものである。たとえば、A4版(210mm×297mm)の原画像(第1の画像)G1を解像度300DPIでスキャナーにより読み込んだ場合、画素数2520×3560(合計9M画素)の画像データ(第1のデータ)D1が得られる。また、各々の画素を表示する輝度データは8ビットとする。ここで、第1の画像G1の短辺(X方向)をスキャン方向として、ある角度θだけ回転させ、W方向をスキャン方向(走査方向、Z方向を副走査方向)とする第2の画像G2を得る。
【0029】
図2に示すように、第1の画像G1の副走査方向Yに隣接し、走査方向Xに延びた2つの走査線(ライン)OL1およびOL2に含まれる複数の画素のデータを補間して、第2の画像G2の画素を生成する。この場合、第1の画像G1の2つの走査線(以降では原ライン)OL1およびOL2の間には、第2の画像G2の複数の走査線(以降では、ラインまたはニューライン)L(n)からL(n+i)の線分LS(n(1))から線分LS(n+i(i+1))(iおよびnは整数)に含まれる画素が生成される。図2には、原ラインOL1およびOL2の間に、3つのラインLn〜Ln+2の線分LS(n(1))、LS(n+1(2))およびLS(n+2(3))が含まれる場合を模式的に示している。300DPIの第1のデータD1においては、第1の画像G1の隣接する原走査線OL1およびOL2の間には、回転角θが1度の場合は、第2の画像G2の44個の走査線の線分LSが含まれ、回転角θが2度の場合は、88個の走査線の線分LSが含まれる。
【0030】
生成装置50は、回転角θが2度の場合には、第1の画像G1の画像データD1の原ラインOL1およびOL2に含まれる画素の輝度データを含む原走査線データE1を読み込む。次に、88個の変換後の走査線の線分LSを演算し、それぞれの線分データLSDを固定長8ワードのブロックデータとしてメモリ59に格納する。すなわち、1つの線分LSには29個または28個の画素の輝度データが含まれ、1つの線分データLSDは232ビットまたは224ビットのデータとなる。このため、生成装置50は、8ワード(256ビット)に足らない部分はパディングし、8ワードの固定長のブロックデータとしてメモリ59に格納する。8ワードのブロックデータは、メモリ59のバースト単位の1つであり、高速で入出力することができる。
【0031】
図3に示すように、生成装置50は、メモリ59の画像データ(データファイル)D1から、副走査方向Yの原走査線データE1を連続して読み込み、走査方向(主走査方向、走査線方向)Xに補間を行って線分データを生成してブロックデータ化し、メモリ59に、中間データ(データファイル)MDとして格納する。画像データD1から、2ライン分の原画像データE1を読み込んでも良い。また、生成装置50にラインバッファを用意し、1ライン分の原画像データE1を読み込み、ラインバッファに残された前のライン分の原画像データと合わせて、実質的に2ライン分の原画像データを取得するようにしても良い。生成装置50は、第1の画像G1の1画像分のデータD1について、この処理を繰り返し、第2の画像G2に含まれる線分データを生成して、中間データファイルMDに格納する。線分データLSDが生成され、中間データファイルMDに格納される順番は、例えば、LSD(n(1))、LSD(n+1(2))、LSD(n+2(3))、LSD(n+1(1)、LSD(n+2(2))、LSD(n+3(3))というようになる。
【0032】
図4に示すように、生成装置50は、メモリ59の中間データファイルMDから、線分データを含むブロックデータを、第2の画像G2の走査線L3に従って読みだす。たとえば、中間データファイルMDから読みだされる順番は、LSD(n(1))、LSD(n(2))、LSD(n(3))、LSD(n+1(1))、LSD(n+1(2))、LSD(n+1(3))というようになる。生成装置50は、さらに、読みだした複数の線分データLSDから1つの走査線データを生成し、メモリ59の画像データファイルD2に格納し、第2の画像G2を出力するための画像データD2を生成する。
【0033】
図5に示すように、線分データLSDn(1)は、パディングデータpdが加えられて、固定長のバーストサイズ(8ワード)のブロックデータBD(n(1))として、中間データファイルMDに格納される。他の線分データLSについても同様である。したがって、個々のブロックデータBDのメモリ59に対する入出力は高速に行われる。それとともに、入出力アドレスを指定することにより所望のブロックデータBDをメモリ59の適当なアドレスにランダムに格納でき、また、所望のブロックデータBDをランダムに取得できる。この入出力は、メモリ59に対するランダムアクセスではなく、ブロック単位のバーストアクセスであり、メモリ59に対する入出力は最速で行われる。
【0034】
図6(a)および(b)に、中間データファイルMDにブロックデータBDを格納する2つの例を示している。図6(a)は、第2の画像G2の走査線データを生成するときにブロックデータBDを中間データファイルMDからシーケンシャルに読み出せるようにしたものである。図6(b)は、第1の画像G1の走査線データから線分データLSDを生成した順番でシーケンシャルにブロックデータBDを中間データファイルMDに格納するようにしたものである。
【0035】
A4版(210mm×297mm)の原画像(第1の画像)G1を解像度300DPIでスキャナーにより読み込んだ場合、回転角θが±2度であれば、上述したように、1つの線分データLSDは232ビットまたは224ビットなので、8ワードをバーストサイズとする固定長のブロックデータBDにパッキングすることが望ましい。回転角θが±1度であれば、1つの線分データLSDのデータ量は倍になるので、16ワードをバーストサイズする固定長のブロックデータBDにパッキンすることが望ましい。メモリ59の使用効率も、アクセス効率も高い。16ワード固定長のブロックデータBDの代わりに、2つの8ワード固定長のブロックデータBDを用いて線分データLSDを格納しても良い。
【0036】
回転角θが±2度から±1度の間は、1つの線分データLDSを16ワード固定長のブロックデータBDにパッキングしても良く、2つの8ワード固定長のブロックデータBDに分けてパッキングしても良い。回転角θが±1度から0度の間は、1つの線分データLDSを2またはそれ以上の16ワード固定長のブロックデータBDに分けてパッキングすることが望ましい。回転角θが±2度を超える場合は、1つの線分データLSDを8ワード固定長のブロックデータBDにパッキンすることができる。ただし、回転角θが大きくなると、パディングデータdpが増加し、ブロックデータBDの利用効率が減少する。この明細書では、1つのブロックデータBDに複数の線分データLSDを含まないことをベースとして説明している。すなわち、1つの線分データLSDは、それに関連づけられた1つまたは複数(通常は2つ)のブロックデータBDに含まれている。1つのブロックデータBDに複数の線分データLSDをパッキングすることを除外しないが、1つの線分データLSDを入出力するためにメモリにアクセスする回数が増加傾向になるので、本明細書に記載の方法および装置は、回転角θが微小、例えば±2度以下の画像処理に適している。
【0037】
図7に、生成装置50における処理をフローチャートにより示している。まず、ステップ81において、再構成可能な処理装置1の再構成可能領域(再構成可能ユニット)10に、第1段階の回路51を再構成する。第1段階の回路51は、第1の入力ユニット61と、第1の補間演算ユニット63と、ブロックデータ生成ユニット66と、第1の出力ユニット62と、制御情報生成ユニット69とを含む。この例では、第1画像G1の走査線データから、第2の画像G2の複数の画素を出力するための画素データを生成する処理は、第1段階と、第2段階とに分かれて実行される。したがって、画素データを生成するための補間演算ユニットは、第1の補間演算ユニット63と、第2の補間演算ユニット73とに分けて、再構成される。
【0038】
ステップ81において、第1の入力ユニット61が、メモリ59の第1のデータファイルD1から原走査線データE1を取得する。ステップ82において、第1の補間演算ユニット63が、原走査線データE1に含まれている原走査線の画素データから第2の画像G2を出力するための走査線の線分データLSDを生成する。
【0039】
図8から図10に、ステップ82において行われる第1の補間処理の概要を示している。図8に示すように、第1の補間処理は、副走査方向Yに隣り合う第1の画像G1の2つの画素データ(輝度データ)P(n−1、i)およびP(n、i)を重みづけ補間し、第2の画像G2の画素データP´(n、i)を生成する。補間式は、図9に示す式(1)である。パラメータWeightは、回転角θにより決まる。また、ブロック先頭のオフセットaは、図10に示すように、原走査線OLの左端の画素を中心に旋回角θを定義した場合は、左端の線分LSについてはゼロである。原走査線OLの中心の画素を中心に旋回させたり、右端の画素を中心に旋回させても良い。その場合は、回転の中心となる画素についてオフセットaはゼロになる。
【0040】
この例では、4つの画素P´(n、0)からP´(n、3)により左端の線分LS(1)が構成される。したがって、線分データLSDは、4つの画素データを含み、これらは再構成可能領域10の演算エレメントを用いて並列に計算される。制御情報生成ユニット69は、回転角θ、解像度、画像のサイズなどの条件により、原走査線の間に生成される第2の画像G2の線分の数、1つの線分に含まれる画素数(ドット数)など、補間計算と、ブロック化に必要な情報を提供する。ステップ83において、ブロックデータ生成ユニット66は、画素データのみで所定の長さのブロックデータBDが構成できれば、そのまま処理の数の画素の画素データP´を纏めてブロックデータBDとする。画素データのみでは不足する場合は、パディングデータを加えて、固定長(バーストサイズ)のブロックデータBDを生成する。ステップ83において、さらに、第1の出力ユニット62は、制御情報生成ユニット69からの指示(アドレス)により、ブロックデータBDをメモリ59の中間データファイルMDの中で、所定の順番となるように格納する。格納する順番の例は、図6(a)および(b)で説明した方法である。また、第1の出力ユニット62は、メモリ59とバーストモードでアクセスし、高速でデータを出力する。
【0041】
ステップ84において、第1の画像G1の画像データD1に含まれる原走査線データが終了するまで、ステップ81から83の処理を繰り返す。画像データD1に含まれる原走査線データを用いて重みづけ補間する処理が終了すると、ステップ85において、再構成可能な処理装置1の再構成可能領域10に、第2段階の回路52を再構成する。この生成装置50が搭載(実装)されている再構成可能デバイス1は、ダイナミックリコンフィグラブルデバイスであり、再構成可能領域10の回路構成を、第1段階の回路51から第2段階の回路52に1クロック(サイクル)で変更できる。第2段階の回路52は、第2の入力ユニット71と、第2の補間演算ユニット73と、ラインデータ生成ユニット76と、第2の出力ユニット72と、制御情報生成ユニット79とを含む。
【0042】
ステップ85において、第2の入力ユニット71が、メモリ59の中間データファイルMDから、制御情報生成ユニット79が生成するアドレスに基づき、線分データLSDを含むブロックデータBDを、回転後の走査線に含まれる順番で読み込む。第2の入力ユニット71は、メモリ59とバーストモードでアクセスし、高速でブロックデータBDを読み込む(取得する)。第2の入力ユニット71は、ブロックデータBDにパディングデータpdが含まれていれば、ブロックデータBDから線分データLSDを抜き出して、あるいはパディングデータpdを除いて、第2の補間演算ユニット73に供給する。ステップ87において、第2の補間演算ユニット73は、走査方向(走査線方向)Wの補間演算(第2の補間)を行う。
【0043】
図11および図12に、ステップ87において行われる第1の補間処理の概要を示している。図11に示すように、第2の補間処理は、回転後の走査方向Wに隣り合う画素データP´n(i)と、P´n(i+1)を重みづけ補間して、第2の画像G2を出力するための画素データP´´n(i)を生成する。補間式は、図12に示す式(2)である。300DPI、回転角θが2度の場合、原走査線のX方向の画素位置と、回転後の走査線のW方向の画素位置との差は1ライン当たり1画素未満(0.1%未満)なので、ほとんど無視できる程度である。したがって、この第2の補間処理は省いても良い。省いた場合、第2の画像G2は、走査方向Wに0.1%程度膨らんだ位置の輝度が表示されるので、第2の画像G2は走査方向Wに0.1%程度収縮した画像になる。第2の補間処理は走査方向Wの画素位置に合わせて輝度データ(画素データ)を補間し、回転した第2の画像G2の膨張収縮を抑制する。
【0044】
ステップ88において、ラインデータ生成ユニット76が、第2の補間処理が行われた画素データP´´を走査方向Wの順番で組み合わせ、回転後の走査線データ(ラインデータ)を生成する。さらに、ステップ88において、第2の出力ユニット72は、メモリ59の第2のデータファイルD2に走査線データを順番に格納する。ステップ89において、中間データファイルMDに格納されたブロックデータBDが終了するまで、ステップ86から88を繰り返す。このようにして、生成装置50は、第1の画像G1を角度θだけ回転させた第2の画像G2を出力するための画像データD2を生成する。この例では、画像データなどを格納する記録媒体として共通のメモリ59が用いられているが、異なる記録媒体であっても良い。たとえば、再構成可能領域10に含まれるRAMエレメントを中間データファイルMDの格納先としても良い。
【0045】
図13(a)に、再構成可能な処理装置(再構成可能デバイス)1の一例を示している。このデバイス1は、本願の出願人が開発したDAPDNAと称する半導体集積回路装置である。このデバイス1は、DAPと呼ばれるRISCコアモジュール2と、DNAと呼ばれるダイナミックリコンフィグラブルデータフローアクセレレータ3とを含む。デバイス1は、DAP2およびDNA3に加え、DNA3のダイレクト入出力用のインターフェイス4と、PCIインターフェイス5と、SDRAMインターフェイス6と、DMAコントローラ7と、その他の周辺デバイス8と、これらを接続するための高速スイッチングバス(内部バス)9とを含む。PCIインターフェイス5および/またはSDRAMインターフェイス6には、大容量記録媒体、例えば、RAMディスク59b、フラッシュメモリ59aなどを接続し、画像データなどを格納できる。
【0046】
DAP2は、デバッグインターフェイス42aと、RISCコア42bと、命令キャッシュ42cと、データキャッシュ42dとを含む。DNA3は、376個のPE(PEs、処理エレメント)が2次元に配置されたPEマトリクス10と、このPEマトリクス10に含まれるPEsの機能および/または接続を変えてPEマトリクス10を再構成するためのコンフィグレーションデータ18が格納されるコンフィグレーションメモリ19とを含む。PEマトリクス10は、回路を再構成可能なユニット、すなわち、再構成可能領域に相当する。また、このPEマトリクス10の構成は、DAP2により制御され、DAP2は制御ユニットに相当する。
【0047】
コンフィグレーションメモリ19は、複数バンクの構成になっている。例えば、図13(b)に示すように、PEマトリクス10には、フォアグラウンドバンクに格納されるコンフィグレーションデータ18により第1の機能(データフロー、回路デザイン)17aが構成される。また、異なるバックグラウンドバンクにそれぞれ格納されるコンフィグレーションデータにより、第2の機能17bおよび第3の機能17cがそれぞれ構成される。メモリ19のバンクを切り替えることにより、PEマトリクス10には、第1の機能17aに変わって第2の機能17bまたは第3の機能17cが再構成される。PEマトリクス10の再構成は、例えば、1サイクル(クロックサイクル)でダイナミックに行なわれる。このようにPEマトリクス10は、回路を構成するための複数のエレメントと、これらのエレメントを接続するための内部配線とを含む再構成ユニットであり、内部配線によりエレメントの接続を変えることによりPEマトリクス10に含まれる回路を再構成できる。
【0048】
図13(c)は、PEマトリクス10に回路を再構成する一例である。あるアプリケーション、例えばMPEGデコーダを時分割した複数の機能(サブファンクション)を、PEマトリクス10に時分割で再構成し、MPEGデコーダの機能を専用回路(専用ハードウェア)で提供する。このような使用により、再構成可能なデータ処理装置であるデバイス1を用いて、多くのハードウエア資源を必要とするアプリケーションを、少ないハードウエア資源で実行できる。
【0049】
図13(d)は、PEマトリクス10に回路を構成する他の例の一つである。再生方式が異なるアプリケーションを実行するために、複数の機能がそれぞれ実現されるようにPEマトリクス10を再構成できる。このような使用により、多くのアプリケーションを共通のハードウエア(デバイス)1を用いて実行できる。このデバイス1は、プログラムレベル(命令レベル)ではなく、データフローレベル(データパスレベル、ハードウエアレベル)で多数の機能を切り換えて実装できるので、専用のハードウエアに匹敵する速度で処理を行うことができる。
【0050】
図14に、PEマトリクス10の配列を拡大して示している。処理エレメントPEは、全体として、16×24のマトリクスを構成するように配置されている。なお、PEのいくつかは、2個分のPEのスペースを占め、全体として376個のPEがPEマトリクス10に配置されている。これらのPEは、さらに、それぞれ8×8のPEからなる6つのグループに区分けされている。これらのグループをセグメントSと称し、PEマトリクス10の左上から右下に向かって順番にセグメントS0からセグメントS5が配置されている。各々のセグメントS0〜S5に含まれるPEは、1サイクルの遅延の範囲内でデータを送受信可能なイントラセグメントコネクションで接続されている。また、セグメントS0〜S5の内、隣接するセグメントは、後述するディレイエレメントを介してインターセグメントコネクションにより接続されている。
【0051】
図14に示したPEのうち、「EX」で始まるPEは、EXEエレメントと呼ばれ、算術演算、論理演算および2入力の比較機能を含む演算用のエレメントである。「EXC」は、CMPSB命令を搭載し、「EXF」は、FF1命令を搭載し、「EXM」は、乗算命令を搭載し、「EXR」はBREV命令を搭載し、「EXS」は、BSWAP命令を搭載するというように、タイプ毎に固有の演算機能も含んでいる。
【0052】
「DL」で始まるPEは、ディレイエレメントであり、1−8クロックの間の遅延をそれぞれ設定できる。「DLE」は、セグメント内のデータ遅延用であり、「DLV」は縦方向のセグメント間のデータ送受信用であり、「DLH」は横方向のセグメント間のデータ送受信用であり、「DLX」は縦横方向のセグメント間のデータ送受信用のエレメントである。
【0053】
「RAM」と表示されたPEは、DNAの内部メモリとして使用されるエレメント(メモリエレメント)である。「LDB」と表示されたPEは、データ入力用のDNA内部バッファであり、入力インターフェイスあるいは入力ユニットを構成するために用いられる。「STB」と表示されたPEは、データ出力用のDNA内部バッファであり、出力インターフェイスあるいは出力ユニットを構成するために用いられる。「C16E」と表示されたPEは、DNA内部バッファに対するアドレス生成エレメントである。「C32E」と表示されたPEは、外部メモリ空間に対するアドレス生成エレメントである。「LDX」と表示されたPEは、DNAダイレクトI/Oからのデータ入力用エレメントである。「STX」と表示されたPEは、DNAダイレクトI/Oへのデータ出力用エレメントである。PEマトリクス10において、LDBおよびLDXは、外部からデータを入力するための入力インターフェイスとして使用でき、STBおよびSTXは、外部へデータを出力するための出力インターフェイスとして使用できる。
【0054】
図15に、PEの一例として、EXMエレメント(「EXM」)の概略構成をブロック図により示している。EXMエレメントは、ALU11aと、MUL(16×16)11bと、FF11cなどを含む。このEXMエレメントは、DNA3のコンフィグレーションメモリ19に格納されたコンフィグレーションデータ18により、算術演算、論理演算、2入力の比較機能、さらには、乗算のいずれか、または複合した命令を実行するように構成できる。また、複数のFF11cを内蔵しているので、エレメントPEに対するデータの入力から出力までのレイテンシを制御することが可能であり、ディレイエレメント(DLE)の数が不足する構成では、ディレイエレメントとしての機能をセットすることも可能である。
【0055】
図16に、PEの他の例として、RAMエレメント(「RAM」)の概略構成をブロック図により示している。このRAMエレメントは、データ格納用メモリエレメントであり、16KB(32ビット×4096ワード)のRAMモジュール12aと、アドレス入力用のアドレスレジスタ(FF)12b、ラッチ12c、データ入力用のライトデータレジスタ(FF)12d、ラッチ12e、データ出力用のリードデータレジスタ(FF)12fを含む。RAMモジュール12aのリードとライトの制御は、アドレスデータおよび/またはリードデータとともに入力されるトークンの値により行なわれる。アドレス入力からリードデータの出力までは、EXEエレメントと同様に3クロックサイクル程度で可能になっており、PEマトリクス10に含まれる他のタイプのPEと同様のレイテンシで、データの入出力が可能である。このRAMエレメントは、DNA3のコンフィグレーションメモリ19に格納されたコンフィグレーションデータ18により、32ビットモード、デュアルポート32ビットモード、FIFOモード、16ビットモード、8ビットモード、さらに、FSM(フィードバックステートモード)でデータ入力および/または出力するように構成できる。
【0056】
RAMエレメントのアクセスアドレスの生成には、EXEエレメント、カウンタエレメントであるC16Eおよび/またはC32Eを使用することができ、PEマトリクス10のルーティングマトリクス(マトリクスバス)を通じて、RAMエレメントに入力できる。したがって、RAMエレメントへの入出力は、PEマトリクス10に再構成される回路により制御できる。
【0057】
PEマトリクス10は、複数のPEと、それらを接続するためのルーティングマトリクス(配線群)20を含む。ルーティングマトリクス20は、セグメントS内のPEを接続するための第1レベルの配線群(第1レベルのルーティングマトリクス、イントラコネクト)21と、ディレイエレメントを介して隣接するセグメントSの間を接続するための第2レベルの配線群(第2レベルのルーティングマトリクス、インターコネクト)とを含む。ルーティングマトリクス20によるPEsの接続はコンフィグレーションデータ18により制御できる。したがって、PEマトリクス10には、コンフィグレーションデータ18により、複数のPEのそれぞれの機能を変更すること、および/または、ルーティングマトリクス20の少なくとも一部の接続を変更することにより、異なる回路(データパス、データフロー)を再構成できる。
【0058】
図17に、セグメントSの内部のPEsを接続するための第1レベルの配線群21の構成の一例を示している。第1レベルのルーティングマトリクス21は、セグメントS0に含まれる8×8個のPEsを接続するために、128の縦方向のバス23と、64の横方向のバス24とを含む。縦方向のバス23は、16のグループに分けられ、それぞれ8のバスを含む2つのV−バス23xおよび23yがペアとなり、PEsの縦の列(コラム)に沿って、その列の両側に配置されている。横方向のバス24は8のグループに分けられ、それぞれ8のバスを含むH−バス24がPEの横方向の行(ライン)に沿って配置されている。V−バス23xおよび23yには、8−1のバスセレクタ(マルチプレクサ、MUX)25がそれぞれのPEに対応して設けられており、それぞれのPEに対してデータの入力を可能としている。
【0059】
H−バス24には、H−バス24とV−バス23xおよび23yのそれぞれの交差に対応して、8−1のバスセレクタ(マルチプレクサ、MUX)26が設けられている。したがって、1つのH−バス24から1つのデータセットを、そのH−バス24と交差している1つのV−バス23xまたは23yに出力できる。逆も可能である。H−バス24に含まれるバスのそれぞれには、そのラインのPEsの出力が接続される。したがって、V−バス23xおよび23yと、H−バス24とを介することにより、セグメントSに含まれるPEsを接続できる。これらのV−バス23xおよび23y、およびH−バス24を含む第1レベルのバス21により接続できる範囲、すなわち、各セグメントS0〜S5内のPEの間では1サイクル(1クロック)以内にデータを送受信できる。したがって、タイミング的には、例えば、セグメントS0に含まれるPEsは、いずれも等価である。このため、同一セグメント内であれば、回路を構成するために、いずれのPEを選択して機能を割り付けても、タイミングの検討は不要であり、タイミング的には、セグメント内のPEsを用いて、所定の回路を自由に配置および配線できる。
【0060】
第2レベルのルーティングマトリクスにより、隣接するセグメント同士、例えば、セグメントS1およびS2にそれぞれ含まれている接続用のエレメントDLHが接続される。それぞれのDLHは、それぞれのセグメント内部の第1レベルのルーティングマトリクス21に接続している。したがって、異なるセグメントに含まれるPEは、第2レベルのルーティングマトリクスを介して接続することができる。接続用のディレイエレメントDLHは、第1レベルのルーティングマトリクス21に含まれるバスのインターフェイスとして機能する。したがって、第1レベルのルーティングマトリクス21に含まれるバスを、セグメント毎に独立して使用できる。一方、セグメント間でデータを入出力する必要があるときは、接続用のディレイエレメントDLHに含まれる複数のFFを介してデータを入出力する必要があり、クロックに同期した2サイクル以上の遅延が新たに加わる。
【0061】
このように、第1レベルのルーティングマトリクス21のみを用いてPEを接続する場合、PEsの間は1サイクル(第1の遅延)の範囲内で接続されることが保証され、タイミングの検証は不用である。これに対し、第2レベルのルーティングマトリクスを介してPEを接続する場合は、2サイクル以上の遅延が加わる。第2レベルのルーティングマトリクスを介して接続する場合の遅延は、ディレイエレメントDLHの設定に依存する。例えば、DLHの遅延量を制御することにより、第2のルーティングマトリクスを2回使用する信号と、1回使用する信号とをシンクロナイズできる。他の接続用のディレイエレメントDLVおよびDLXを介して隣接するときも同様である。
【0062】
図18に、再構成領域であるPEマトリクス10に構成される第1段階の回路51の一例を示している。この例では、第1の入力ユニット61は、入力バッファLDBを用いてライン単位の原走査線データE1を取得し、さらに、RAMエレメントをラインバッファとして使用して第1の補間演算ユニット63に2ライン分のデータを供給するように構成される。第1の補間演算ユニット63では、EXエレメントを用いて掛け算および足し算を含む演算回路が構成される。第1の補間演算ユニット63では、ブロックデータBDに含まれる線分データLSDの複数の画素のデータを生成する処理がパイプラインで行われるように回路が構成されている。このため、原走査線データE1の読み込みに続いて、線分データLSDが連続的に、パイプライン方式で、例えば、1サイクル毎に出力される。
【0063】
ブロックデータ生成ユニット66では、EXエレメントを用いてセレクタを含む回路が構成される。第1の出力ユニット62では、出力バッファSTBを用いて回路が構成される。ブロックデータ生成ユニット66および第1の出力ユニット62では、2系統のブロックデータBDをハンドリングする回路が並列に用意されている。線分データSLDをブロックデータBDにするときにパディングデータpdを追加する処理に時間を要するので、パイプラインが破綻する可能性があるからである。しかしながら、第1の出力ユニット62よりブロックデータBDをメモリ59にバーストライトすることにより、待ち時間なく、ブロックデータBDをメモリ59に格納できる。
【0064】
制御情報生成ユニット69では、EXエレメントを用いて座標をカウントするためのカウンタが構成され、RAMエレメントを用いて定数テーブルが構成されている。定数データには、解像度、回転角θにより決まる線分の情報と、補間計算のための各種パラメータと、線分データをブロック化するための情報などが含まれる。
【0065】
図19に、第1段階の回路51の主なポイントにおいてデータが転送される様子を模式的に示している。第1の入力ユニット61は、第1の画像データD1から連続的に原走査線データを取得し(ポイントA)、バッファを用いて2ライン分のデータLD1およびLD2を出力する(ポイントB)。ブロックデータ生成ユニット66においては、第1の補間演算ユニット63から連続的に出力される線分データLSDにパディングデータpdを付加してブロックデータBDを出力する(ポイントC)。第1の出力ユニット62は、それらのブロックデータBDをメモリ59の所定のアドレスにバーストライトする。
【0066】
図20に、PEマトリクス10に構成される第2段階の回路52の一例を示している。この例では、第2の入力ユニット71は、入力バッファLDBを用いてブロックデータBDを走査線の順番で取得し、さらに、DELエレメントにより、走査方向Wに隣接する2つの画素のデータを第2の補間演算ユニット73に供給されるようにしている。第2の補間演算ユニット73では、EXエレメントを用いて掛け算および足し算を含む演算回路が構成される。第2の補間演算ユニット73では、ブロックデータBDに含まれる線分データLSDの複数の画素のデータを生成する処理がパイプライン方式で行われるように回路が構成されている。このため、第2の補間処理がされた線分データSLDが連続的に、パイプライン方式で、例えば、1サイクル毎に出力される。
【0067】
ラインデータ生成ユニット76では、EXエレメントを用いてセレクタを含む回路が構成され、ゲーティングすることによりブロックデータBDに含まれているパディングデータpdを取り除けるようになっている。DELエレメントは、制御情報と待ち合わせのためのものである。第2の出力ユニット72では、出力バッファSTBを用いて回路が構成される。
【0068】
制御情報生成ユニット79には、EXエレメントを用いて座標をカウントするためのカウンタが構成され、RAMエレメントを用いて定数テーブルが構成されている。第1段階の回路51と同様に、定数データには、解像度、回転角θにより決まる線分の情報と、補間計算のための各種パラメータと、ブロックデータBDから線分データLSDを抽出するための情報などが含まれる。
【0069】
図21に、第2段階の回路52の主なポイントにおいてデータが転送される様子を模式的に示している。第2の入力ユニット71は、メモリ59の所定のアドレスから取得したブロックデータBDと、そのブロックデータBDを1または複数クロックだけシフトした2系統のブロックデータBDを出力する(ポイントB)。ラインデータ生成ユニット76においては、第2の補間演算ユニット73から出力されるブロックデータからパディングデータpdを取り除き、線分データLSDのみを出力する。第2の出力ユニット72は、それらの線分データLSDを順番にメモリ59に格納し、第2の画像データD2を生成する。
【0070】
図22に示したように、第1の画像G1を単純に回転すると見栄えが悪くなる。このため、ラインデータ生成ユニット76は、回転画像調整部としての機能を備えている。すなわち、図22における領域R1〜R4の部分は回転後の表示では見栄えを悪くし、不要と考えられる。このため、ラインデータ生成ユニット76は、パディングデータPdをカットするゲーティングの機能を用いて領域R1〜R4のデータを出力しない(削除する)。この処理は制御情報生成ユニット79により出力される制御情報をもとに行う。
【0071】
図23は、生成装置50の他の例を示す基本構成ブロック図である。この生成装置50も、回路を再構成可能な処理装置(再構成可能デバイス)1を用いて実現されている。再構成可能領域であるPEマトリクス10に構成される第1段階の回路51は、第1の入力ユニット61と、補間演算ユニット65と、第1の出力ユニット62と、制御情報生成ユニット69とを含む。補間演算ユニット65は、第1の補間演算ユニット63と、第2の補間演算ユニット73と、特異点処理部64とを含む。第1の補間演算ユニット63と、第2の補間演算ユニット73とは、線分LS毎に、上述したように、走査方向に補間処理を行っても良い。また、2次元的に隣合う4画素に囲まれる長方形の領域内に属する回転後の画素の輝度データ(画素データ)を4画素の距離を重みづけパラメータとして補間により求めることができる。この長方形領域に回転後の画素が1つしか含まれない場合だけではなく、回転後の画素が0個ないし2個含まれる場合も起こりうる。0個ないし2個含まれる場合を特異点と呼ぶ。回転後の画素が1つしか含まれない場合は、上述してきた処理のみで対応できる。しかしながら、回転後の画素が0個または2個の場合は特異点処理が必要となる。
【0072】
第2段階の回路52は、第2の入力ユニット71と、ラインデータ生成ユニット76と、第2の出力ユニット72と、制御情報生成ユニット79とを含む。回転後の画素データを生成する補間演算は、第1段階の回路51ですべて行っているので、この第2段階の回路52は、回転後の走査方向Wの順番でブロックデータBDを読み込み、ラインデータ化して出力するだけになる。この例では、ブロックデータBDを走査方向Wに読み出すためのアドレス生成機能を第2段階の回路52に含めて、第1段階の回路51のハードウェア的な負荷を減らしている。すなわち、第1の出力ユニット62は、回転前の走査方向Xの順番でブロックデータBDをメモリ59の中間データファイルMDに格納する。第2の入力ユニット71は、アドレス生成を行い、ブロックデータBDを飛び飛びに取得し、回転後の走査方向Wの順番でブロックデータBDをメモリ59から取得する。
【0073】
以上に説明したように、これらの生成装置50においては、アフィン変換された画像を生成するために、メモリ59に対してバーストアクセスおよびシリアルアクセスするだけで良い。個々の画素データを取得するためにメモリ59に対してランダムアクセスする必要がない。したがって、データを入出力する処理時間が、画像データを変換するための処理時間のクリティカルパスおよび/またはボトルネックとなることを抑制できる。たとえば、図19に示すように、ブロックデータBDをメモリ59に書き込むために補間演算処理を止める必要はなく、メモリに対する入出力がクリティカルパスになるのが避けられている。したがって、アフィン変換を要する画像処理の時間を短縮できる。
【0074】
上記にて開示した画像処理方法は、メモリの利用効率などの点から、300DPI程度の解像度の画像であれば±数度以下の微小回転を含む画像処理に適している。この程度の微小回転を伴う画像処理は、スキュー角の補正などに多用されており、画像処理を高速化できることは有効である。また、上記にて開示した画像処理を、±数度以上の大きな回転を伴う画像処理に適用することも可能である。また、微小回転をなんどか繰り返すことにより、所望の角度だけ画像を回転することも可能である。
【0075】
また、上記の生成装置は、メモリにブロックデータを書き込む第1段階の回路と、メモリからブロックデータを読み込む第2段階の回路とに分けて、再構成可能なデバイス、特に、ダイナミックリコンフィグラブルデバイスを用いて実現している。しかしながら、第1段階の回路と、第2段階の回路とを同時に構成しても良く、また、FPGAあるいはASICを用いて、これらの回路を固定的に実装しても良い。また、メモリに対するブロックデータへの入出力は、ダブルポートメモリなどを用いることにより、適当な処理間隔をおいて、並列に実行することも可能である。
【図面の簡単な説明】
【0076】
【図1】本発明の実施形態の生成装置のブロック図。
【図2】アフィン変換することにより線分が生成されることを示す図。
【図3】変換前の走査線のデータを補間して変換後の線分のデータを生成することを示す図。
【図4】変換後の線分のデータを組み合わせて、変換後の走査線のデータを生成することを示す図。
【図5】線分のデータをブロックデータ化することを示す図。
【図6】図6(a)および(b)は、ブロックデータをメモリに格納する異なる例を示す図。
【図7】生成装置の処理を示すフローチャート。
【図8】副走査方向に補間して線分のデータを生成する様子を示す図。
【図9】副走査方向の補間式を示す図。
【図10】走査線の左端を中心に回転したときの左端の線分のデータを生成する様子を示す図。
【図11】走査方向にさらに補間して線分のデータを生成する様子を示す図。
【図12】走査方向の補間式を示す図。
【図13】図13(a)は、再構成可能なデバイスの一例の概略構成を示し、図13(b)は、PEマトリクス(再構成可能領域)の概略を示し、図13(c)および図13(d)は、PEマトリクスを動的に再構成する様子を示す。
【図14】PEマトリクスに配置されたPEのタイプを示す図。
【図15】PEの1つのタイプのEXMの構成を示すブロック図。
【図16】PEの1つのタイプのRAMの構成を示すブロック図。
【図17】セグメント内の配線(イントラセグメント配線)を示す図。
【図18】第1段階の回路の一例を示すブロック図。
【図19】第1段階の回路においてデータが転送される様子を示す図。
【図20】第2段階の回路の一例を示すブロック図。
【図21】第2段階の回路においてデータが転送される様子を示す図。
【図22】画像を回転したときに、はみ出た部分の削除を行うことを示す図。
【図23】本発明の実施形態の生成装置の異なる例を示すブロック図。
【符号の説明】
【0077】
1 ダイナミックリコンフィグラブルデバイス
10 PEマトリクス(再構成ユニット)
50 生成装置(画像処理装置)
51 第1段階の回路
52 第2段階の回路
【技術分野】
【0001】
本発明は、アフィン変換された画像を出力するためのデータを生成する装置に関するものである。
【背景技術】
【0002】
平面図形(立体図形の投影も含む)から平面図形への変換の1つとしてアフィン変換が知られている。アフィン変換は、平行線が平行線に変換される変換であり、図形を所定の角度回転させたり、スキュー補正を施すためなどに用いられる。
【0003】
アフィン変換においては、x−y座標系により生成された画像データ(輝度データなどを含む)を、x−y座標系をθ回転したw−z座標系における画像データに変換する。回転座標系は、以下の式(A)で表わされる。R(θ)はアフィン変換行列である。
(w,z)=R(θ)(x,y) ・・・(A)
【0004】
画像データはライン(走査線)上に記憶されているRGBの輝度データであり、回転座標系における第Z番目のラインデータを形成するには、以下の式(B)により、メモリに記憶されるとびとびのアドレスへアクセスしなければならず、処理速度を向上することが難しい。
x=R^(-1)(θ)(w,Z)
y=R^(-1)(θ)(w,Z) ・・・(B)
【0005】
特許文献1では、画像データは大容量低速メモリからブロック単位で読みだされ、小容量高速メモリに格納される。アドレス生成部で生成されたアドレスにしたがってさらに読み出され、補間演算を行う演算部でスキュー補正がおこなわれる。アドレス生成部は、入力画像の傾きに応じた角度でメモリから斜め方向にブロック単位で読みだすべく、その少数部を所定の精度で近似してアドレスを順次生成し、かつ、アドレスを精度に応じた周期で所定量だけ増減することで近似によるアドレスの累積誤差を抑制する。一方、小容量高速メモリからは、補正後の画素に隣接する4点の画像データの座標を、アフィン逆行列を用いて演算し、取得している。
【特許文献1】特開2005−352703
【発明の開示】
【発明が解決しようとする課題】
【0006】
特許文献1に記載された技術では、大容量低速メモリから小容量高速メモリにブロック単位で読みだされる。しかしながら、小容量高速メモリからは、補正する画素毎に、補正に必要なデータを読み出す必要があり、ランダムアクセスを必要とする。したがって、データを入出力する処理時間が、画像データを変換するための処理時間のクリティカルパスおよび/またはボトルネックとなり、画像処理に要する時間をさらに短縮することが難しい。
【0007】
コピー機や画像を編集するアプリケーションにおいて、画像の微小な傾きを補正する処理(スキュー補正処理)の頻度は高く、この処理を高速で行えることは重要である。2度以下あるいは1度以下の画像の傾きであっても、直線部分が斜めに表示されることは、特にデジタル化された画像では目立つことが多い。また、微小な傾きを補正した画像を繰り返し表示することにより、ユーザは適切に傾きが補正された画像を選択することが可能となる。
【課題を解決するための手段】
【0008】
本発明の一態様は、第1の画像を出力するための第1のデータから、第1の画像がアフィン変換された第2の画像を出力するための第2のデータを生成する装置である。この装置は、第1のデータが格納された第1の記録媒体から、第1の画像の隣接する第1の原走査線および第2の原走査線に含まれる複数の画素を出力するための原走査線データを取得する第1の入力ユニットと、原走査線データから、第2の画像の複数の画素を出力するための画素データを生成する補間演算ユニットとを有する。画素データには、第2の画像の複数の走査線の線分に含まれる複数の画素を出力するための線分データが含まれている。この装置は、さらに、それぞれの線分データを含むブロックデータを入出力単位として第2の記録媒体に格納する第1の出力ユニットと、第2の記録媒体から、第2の画像の第3の走査線を出力するための複数の線分データを含む複数のブロックデータを取得する第2の入力ユニットと、第3の走査線に含まれる複数の画素を出力するための走査線データを第2のデータとして第3の記録媒体に格納する第2の出力ユニットとを有する。
【0009】
第1の画像の第1の走査線と第2の走査線とに含まれる画素を用いて生成(補間)された複数の画素(アフィン変換後の画素)は、第1の走査線と第2の走査線との間に存在する画素であり、第2の画像の複数の走査線の一部(線分)に含まれる画素となる。アフィン変換は平行線を平行線に変換する処理であり、基本的にはそれらの線分が重なることはなく、変換する角度が適当な範囲内であれば、1つの線分に、走査方向(主走査方向)に隣接する複数の画素が含まれる。すなわち、原走査線データから生成される画素データには、複数の線分データが含まれ、それぞれの線分データには複数の画素を出力するためのデータが含まれる。したがって、線分単位で、複数の画素を出力するためのデータ(線分データ)をメモリなどの記録媒体にいったん格納し、第2の画像の走査線の順番に線分データを読み出して第2の画像の走査線データを生成することにより、画素を出力するためのデータを、画素毎にランダムに読み出す処理を省くことができる。このため、アフィン変換を含めた画像処理におけるデータの入出力時間を短縮できる。
【0010】
走査方向は、画像を出力するための走査方向に限らず、この装置において、画像データを入力するための方向であっても良い。それぞれの線分データを含むブロックデータを入出力単位とすることは、1つの線分データを1つのブロックデータに含めて格納しても良く、1つの線分データを複数のブロックデータに分けて格納しても良い。
【0011】
第1の出力ユニットは、ブロックデータを固定長で第2の記録媒体に格納することが望ましい。データの入出力時間をさらに短縮できる可能性がある。第1の出力ユニットは、ブロックデータをバースト長で第2の記録媒体に格納することが望ましい。データの入出力時間をさらに短縮できる可能性がある。線分データが圧縮などの処理により可変長であっても、パディングデータを付加するなどの処理により、固定長で入出力することが可能である。
【0012】
第1の出力ユニットは、ブロックデータを、第2の画像の走査線の順番で読みだされるようにアドレスを変えて、第2の記録媒体に格納することが望ましい。第2の入力ユニットは、シーケンシャルにブロックデータを読み込み、第2の出力ユニットは、第2の画像の走査線データを出力できる。
【0013】
第2の入力ユニットは、ブロックデータを、第2の画像の走査線の順番で読みだすようにアドレスを変えて、第2の記録媒体から取得することも可能である。第1の出力ユニットは、ブロックデータをシーケンシャルに出力できる。
【0014】
補間演算ユニットは、副走査方向の補間により、それぞれの線分データに含まれる複数の画素を出力するためのデータを並列に生成する第1の演算回路を含むことが望ましい。並列処理により、演算処理に要する時間を短縮できる。補間演算ユニットは、走査方向の補間により、それぞれの線分データに含まれる複数の画素を出力するためのデータを並列に生成する第2の演算回路を、さらに含むことが望ましい。
【0015】
第1の出力ユニットは、第1の演算回路から出力された線分データを含むブロックデータを第2の記録媒体に格納し、第2の演算回路は、第2の入力ユニットにより取得された線分データを走査方向に補正して、補正後の線分データを生成することが可能である。この装置では、ブロックデータを第2の記録媒体に入出力することを要するので、補間演算を2段階に分けて実行しても良く、回路を再構成可能なデバイスに実装する場合に、演算に要するハードウェアリソースの専有量を削減できる。
【0016】
すなわち、本装置は、回路を再構成可能な再構成可能ユニットと、再構成可能ユニットに回路を構成する制御ユニットとを有することが望ましい。制御ユニットは、再構成可能ユニットに、第1の入力ユニット、第1の演算回路、および第1の出力ユニットを含む第1段階の回路を構成し、第2段階として、第2の入力ユニット、および第2の出力ユニットを含む第2段階の回路を構成する。第2の演算回路は、この処理のために使用可能な再構成可能ユニットのハードウェアリソースの量により、第1段階の回路に含めても良く、第2段階の回路に含めても良い。
【0017】
本発明の他の態様の1つは、回路を再構成可能な再構成可能ユニットと、再構成可能ユニットに回路を構成する制御ユニットとを有する装置を、制御ユニットにより制御する方法である。この方法は、第1の画像を出力するための第1のデータから、第1の画像がアフィン変換された第2の画像を出力するための第2のデータを生成することを有する。さらに、生成することは、再構成可能ユニットに第1段階の回路を構成することと、再構成可能ユニットに第2段階の回路を構成することとを含む。
【0018】
第1段階の回路は、第1のデータが格納された第1の記録媒体から、第1の画像の隣接する第1の原走査線および第2の原走査線に含まれる複数の画素を出力するための原走査線データを取得する第1の入力ユニットと、原走査線データから、第2の画像の複数の画素を出力するための画素データを生成する補間演算ユニットとを含む。画素データには、第2の画像の複数の走査線の線分に含まれる複数の画素を出力するための線分データが含まれている。さらに、第1段階の回路は、それぞれの線分データを含むブロックデータを入出力単位として第2の記録媒体に格納する第1の出力ユニットを含む。
【0019】
第2段階の回路は、第2の記録媒体から、第2の画像の第3の走査線を出力するための複数の線分データを含む複数のブロックデータを取得する第2の入力ユニットと、第3の走査線に含まれる複数の画素を出力するための走査線データを第3の記録媒体に格納する第2の出力ユニットと含む。
【0020】
本発明のさらなる態様の1つは、第1の画像を出力するための第1のデータから、第1の画像がアフィン変換された第2の画像を出力するための第2のデータを生成する方法であって、以下の工程を含む。
1. 第1のデータが格納された第1の記録媒体から、第1の画像の隣接する第1の原走査線および第2の原走査線に含まれる複数の画素を出力するための原走査線データを取得すること。
2. 原走査線データから、第2の画像の複数の画素を出力するための画素データを生成すること。画素データには、第2の画像の複数の走査線の線分に含まれる複数の画素を出力するための線分データが含まれている。
3. それぞれの線分データを含むブロックデータを入出力単位として第2の記録媒体に格納すること。
4. 第2の記録媒体から、第2の画像の第3の走査線を出力するための複数の線分データを含む複数のブロックデータを取得すること。
5. 第3の走査線に含まれる複数の画素を出力するための走査線データを第3の記録媒体に格納すること。
【0021】
第2の記録媒体には、ブロックデータを固定長で格納することが望ましく、バースト長で格納することがさらに望ましい。
【0022】
第2の記録媒体には、ブロックデータを、第2の画像の走査線の順番で読みだされるようにアドレスを変えて格納しても良い。第2の記録媒体から、ブロックデータを、第2の画像の走査線の順番で読みだすようにアドレスを変えて取得してもよい。
【発明を実施するための最良の形態】
【0023】
図1は、本発明の一実施形態である、画像データを生成する装置の基本構成ブロック図である。この画像処理装置あるいは生成装置50は、回路を再構成可能なデバイス(処理装置)1を用いて実現されている。生成装置50としての機能は、第1段階の回路51と、第2段階の回路52とに分けて、処理装置1の再構成可能領域10に構成される。この装置50は、第1の画像G1を出力するための第1のデータD1から、第1の画像G1がアフィン変換された第2の画像G2を出力するための第2のデータD2を生成する装置である。装置50は、記録媒体であるメモリ59を有し、メモリ59には、第1のデータD1と、第2のデータD2と、さらに、中間段階のデータMDが格納されるようになっている。再構成可能領域10に構成される第1段階の回路51は、メモリ59からデータを読み取る第1の入力ユニット61と、補間演算を行う第1の補間演算ユニット63と、第1の補間演算ユニットにより生成されたデータを複数のブロックに分ける(ブロック化する)ブロックデータ生成部66と、それらのブロックをメモリ59の所定のアドレスに書き込む第1の出力ユニット62と、第1段階の制御情報生成ユニット69とを含む。
【0024】
第1の入力ユニット61は、メモリ59の第1のデータD1から、第1の画像G1の隣接する第1の原走査線および第2の原走査線(以降では、第1のラインL1および第2のラインL2)に含まれる複数の画素を出力するための原走査線データE1を取得する。第1の補間演算ユニット63は、原走査線データE1から、第2の画像G2の複数の画素を出力するための画素データP1を生成するためのユニットである。本例の第1の補間演算ユニット63は、特に、原走査線データE1に含まれる第1および第2のラインのデータから副走査方向の補間を行い、第2の画像G2の画素データP1を生成する。後述するように、第1の画像G1の、第1および第2のラインのデータを補間して生成される画素データP1には、第2の画像G2の複数の走査線の線分LSに含まれる複数の画素を出力するための線分データLSDが含まれている。第1の出力ユニット62は、それぞれの線分データLSDを含むブロックデータを入出力単位とし、中間段階のデータMDの一部としてメモリ59に格納する。
【0025】
再構成可能領域10に構成される第2段階の回路52は、メモリ59から線分データLSDを読み込む第2の入力ユニット71と、第2の補間演算ユニット73と、読み出された線分データLSDから第2の画像G2を出力するため走査線データを生成するラインデータ生成ユニット76と、第2のデータD2をメモリ59に格納する第2の出力ユニット72と、第2段階の制御情報生成ユニット79とを含む。
【0026】
第2の入力ユニット71は、メモリ59から、第2の画像G2の第3の走査線L3を出力するための複数の線分データLSDを含む複数のブロックデータを順番に取得する。第2の補間演算ユニット73は、走査方向の補間を行い、線分データLSDを補正または再生成する。第2の出力ユニット72は、第3の走査線L3に含まれる複数の画素を出力するための走査線データを第2のデータD2の一部としてメモリ59に格納する。
【0027】
制御情報生成ユニット69および79は、ユーザあるいはアプリケーションプログラムなどにより与えられる回転角度によりメモリ59に対して入出力するためのブロックサイズを適切に決め、入出力のアドレスを生成あるいは管理するための情報を各ユニットに提供する。
【0028】
図2ないし図4を参照して、この生成装置50において、座標x−yで示される原画像(第1の画像)をアフィン変換して、座標w−zで示される第2の画像を生成する基本的なアルゴリズムを説明する。この生成装置50は、微小角回転、たとえば、回転角θが±2度程度以内のアフィン変換(微小角アフィン変換)を高速に行うことを目的としたものである。たとえば、A4版(210mm×297mm)の原画像(第1の画像)G1を解像度300DPIでスキャナーにより読み込んだ場合、画素数2520×3560(合計9M画素)の画像データ(第1のデータ)D1が得られる。また、各々の画素を表示する輝度データは8ビットとする。ここで、第1の画像G1の短辺(X方向)をスキャン方向として、ある角度θだけ回転させ、W方向をスキャン方向(走査方向、Z方向を副走査方向)とする第2の画像G2を得る。
【0029】
図2に示すように、第1の画像G1の副走査方向Yに隣接し、走査方向Xに延びた2つの走査線(ライン)OL1およびOL2に含まれる複数の画素のデータを補間して、第2の画像G2の画素を生成する。この場合、第1の画像G1の2つの走査線(以降では原ライン)OL1およびOL2の間には、第2の画像G2の複数の走査線(以降では、ラインまたはニューライン)L(n)からL(n+i)の線分LS(n(1))から線分LS(n+i(i+1))(iおよびnは整数)に含まれる画素が生成される。図2には、原ラインOL1およびOL2の間に、3つのラインLn〜Ln+2の線分LS(n(1))、LS(n+1(2))およびLS(n+2(3))が含まれる場合を模式的に示している。300DPIの第1のデータD1においては、第1の画像G1の隣接する原走査線OL1およびOL2の間には、回転角θが1度の場合は、第2の画像G2の44個の走査線の線分LSが含まれ、回転角θが2度の場合は、88個の走査線の線分LSが含まれる。
【0030】
生成装置50は、回転角θが2度の場合には、第1の画像G1の画像データD1の原ラインOL1およびOL2に含まれる画素の輝度データを含む原走査線データE1を読み込む。次に、88個の変換後の走査線の線分LSを演算し、それぞれの線分データLSDを固定長8ワードのブロックデータとしてメモリ59に格納する。すなわち、1つの線分LSには29個または28個の画素の輝度データが含まれ、1つの線分データLSDは232ビットまたは224ビットのデータとなる。このため、生成装置50は、8ワード(256ビット)に足らない部分はパディングし、8ワードの固定長のブロックデータとしてメモリ59に格納する。8ワードのブロックデータは、メモリ59のバースト単位の1つであり、高速で入出力することができる。
【0031】
図3に示すように、生成装置50は、メモリ59の画像データ(データファイル)D1から、副走査方向Yの原走査線データE1を連続して読み込み、走査方向(主走査方向、走査線方向)Xに補間を行って線分データを生成してブロックデータ化し、メモリ59に、中間データ(データファイル)MDとして格納する。画像データD1から、2ライン分の原画像データE1を読み込んでも良い。また、生成装置50にラインバッファを用意し、1ライン分の原画像データE1を読み込み、ラインバッファに残された前のライン分の原画像データと合わせて、実質的に2ライン分の原画像データを取得するようにしても良い。生成装置50は、第1の画像G1の1画像分のデータD1について、この処理を繰り返し、第2の画像G2に含まれる線分データを生成して、中間データファイルMDに格納する。線分データLSDが生成され、中間データファイルMDに格納される順番は、例えば、LSD(n(1))、LSD(n+1(2))、LSD(n+2(3))、LSD(n+1(1)、LSD(n+2(2))、LSD(n+3(3))というようになる。
【0032】
図4に示すように、生成装置50は、メモリ59の中間データファイルMDから、線分データを含むブロックデータを、第2の画像G2の走査線L3に従って読みだす。たとえば、中間データファイルMDから読みだされる順番は、LSD(n(1))、LSD(n(2))、LSD(n(3))、LSD(n+1(1))、LSD(n+1(2))、LSD(n+1(3))というようになる。生成装置50は、さらに、読みだした複数の線分データLSDから1つの走査線データを生成し、メモリ59の画像データファイルD2に格納し、第2の画像G2を出力するための画像データD2を生成する。
【0033】
図5に示すように、線分データLSDn(1)は、パディングデータpdが加えられて、固定長のバーストサイズ(8ワード)のブロックデータBD(n(1))として、中間データファイルMDに格納される。他の線分データLSについても同様である。したがって、個々のブロックデータBDのメモリ59に対する入出力は高速に行われる。それとともに、入出力アドレスを指定することにより所望のブロックデータBDをメモリ59の適当なアドレスにランダムに格納でき、また、所望のブロックデータBDをランダムに取得できる。この入出力は、メモリ59に対するランダムアクセスではなく、ブロック単位のバーストアクセスであり、メモリ59に対する入出力は最速で行われる。
【0034】
図6(a)および(b)に、中間データファイルMDにブロックデータBDを格納する2つの例を示している。図6(a)は、第2の画像G2の走査線データを生成するときにブロックデータBDを中間データファイルMDからシーケンシャルに読み出せるようにしたものである。図6(b)は、第1の画像G1の走査線データから線分データLSDを生成した順番でシーケンシャルにブロックデータBDを中間データファイルMDに格納するようにしたものである。
【0035】
A4版(210mm×297mm)の原画像(第1の画像)G1を解像度300DPIでスキャナーにより読み込んだ場合、回転角θが±2度であれば、上述したように、1つの線分データLSDは232ビットまたは224ビットなので、8ワードをバーストサイズとする固定長のブロックデータBDにパッキングすることが望ましい。回転角θが±1度であれば、1つの線分データLSDのデータ量は倍になるので、16ワードをバーストサイズする固定長のブロックデータBDにパッキンすることが望ましい。メモリ59の使用効率も、アクセス効率も高い。16ワード固定長のブロックデータBDの代わりに、2つの8ワード固定長のブロックデータBDを用いて線分データLSDを格納しても良い。
【0036】
回転角θが±2度から±1度の間は、1つの線分データLDSを16ワード固定長のブロックデータBDにパッキングしても良く、2つの8ワード固定長のブロックデータBDに分けてパッキングしても良い。回転角θが±1度から0度の間は、1つの線分データLDSを2またはそれ以上の16ワード固定長のブロックデータBDに分けてパッキングすることが望ましい。回転角θが±2度を超える場合は、1つの線分データLSDを8ワード固定長のブロックデータBDにパッキンすることができる。ただし、回転角θが大きくなると、パディングデータdpが増加し、ブロックデータBDの利用効率が減少する。この明細書では、1つのブロックデータBDに複数の線分データLSDを含まないことをベースとして説明している。すなわち、1つの線分データLSDは、それに関連づけられた1つまたは複数(通常は2つ)のブロックデータBDに含まれている。1つのブロックデータBDに複数の線分データLSDをパッキングすることを除外しないが、1つの線分データLSDを入出力するためにメモリにアクセスする回数が増加傾向になるので、本明細書に記載の方法および装置は、回転角θが微小、例えば±2度以下の画像処理に適している。
【0037】
図7に、生成装置50における処理をフローチャートにより示している。まず、ステップ81において、再構成可能な処理装置1の再構成可能領域(再構成可能ユニット)10に、第1段階の回路51を再構成する。第1段階の回路51は、第1の入力ユニット61と、第1の補間演算ユニット63と、ブロックデータ生成ユニット66と、第1の出力ユニット62と、制御情報生成ユニット69とを含む。この例では、第1画像G1の走査線データから、第2の画像G2の複数の画素を出力するための画素データを生成する処理は、第1段階と、第2段階とに分かれて実行される。したがって、画素データを生成するための補間演算ユニットは、第1の補間演算ユニット63と、第2の補間演算ユニット73とに分けて、再構成される。
【0038】
ステップ81において、第1の入力ユニット61が、メモリ59の第1のデータファイルD1から原走査線データE1を取得する。ステップ82において、第1の補間演算ユニット63が、原走査線データE1に含まれている原走査線の画素データから第2の画像G2を出力するための走査線の線分データLSDを生成する。
【0039】
図8から図10に、ステップ82において行われる第1の補間処理の概要を示している。図8に示すように、第1の補間処理は、副走査方向Yに隣り合う第1の画像G1の2つの画素データ(輝度データ)P(n−1、i)およびP(n、i)を重みづけ補間し、第2の画像G2の画素データP´(n、i)を生成する。補間式は、図9に示す式(1)である。パラメータWeightは、回転角θにより決まる。また、ブロック先頭のオフセットaは、図10に示すように、原走査線OLの左端の画素を中心に旋回角θを定義した場合は、左端の線分LSについてはゼロである。原走査線OLの中心の画素を中心に旋回させたり、右端の画素を中心に旋回させても良い。その場合は、回転の中心となる画素についてオフセットaはゼロになる。
【0040】
この例では、4つの画素P´(n、0)からP´(n、3)により左端の線分LS(1)が構成される。したがって、線分データLSDは、4つの画素データを含み、これらは再構成可能領域10の演算エレメントを用いて並列に計算される。制御情報生成ユニット69は、回転角θ、解像度、画像のサイズなどの条件により、原走査線の間に生成される第2の画像G2の線分の数、1つの線分に含まれる画素数(ドット数)など、補間計算と、ブロック化に必要な情報を提供する。ステップ83において、ブロックデータ生成ユニット66は、画素データのみで所定の長さのブロックデータBDが構成できれば、そのまま処理の数の画素の画素データP´を纏めてブロックデータBDとする。画素データのみでは不足する場合は、パディングデータを加えて、固定長(バーストサイズ)のブロックデータBDを生成する。ステップ83において、さらに、第1の出力ユニット62は、制御情報生成ユニット69からの指示(アドレス)により、ブロックデータBDをメモリ59の中間データファイルMDの中で、所定の順番となるように格納する。格納する順番の例は、図6(a)および(b)で説明した方法である。また、第1の出力ユニット62は、メモリ59とバーストモードでアクセスし、高速でデータを出力する。
【0041】
ステップ84において、第1の画像G1の画像データD1に含まれる原走査線データが終了するまで、ステップ81から83の処理を繰り返す。画像データD1に含まれる原走査線データを用いて重みづけ補間する処理が終了すると、ステップ85において、再構成可能な処理装置1の再構成可能領域10に、第2段階の回路52を再構成する。この生成装置50が搭載(実装)されている再構成可能デバイス1は、ダイナミックリコンフィグラブルデバイスであり、再構成可能領域10の回路構成を、第1段階の回路51から第2段階の回路52に1クロック(サイクル)で変更できる。第2段階の回路52は、第2の入力ユニット71と、第2の補間演算ユニット73と、ラインデータ生成ユニット76と、第2の出力ユニット72と、制御情報生成ユニット79とを含む。
【0042】
ステップ85において、第2の入力ユニット71が、メモリ59の中間データファイルMDから、制御情報生成ユニット79が生成するアドレスに基づき、線分データLSDを含むブロックデータBDを、回転後の走査線に含まれる順番で読み込む。第2の入力ユニット71は、メモリ59とバーストモードでアクセスし、高速でブロックデータBDを読み込む(取得する)。第2の入力ユニット71は、ブロックデータBDにパディングデータpdが含まれていれば、ブロックデータBDから線分データLSDを抜き出して、あるいはパディングデータpdを除いて、第2の補間演算ユニット73に供給する。ステップ87において、第2の補間演算ユニット73は、走査方向(走査線方向)Wの補間演算(第2の補間)を行う。
【0043】
図11および図12に、ステップ87において行われる第1の補間処理の概要を示している。図11に示すように、第2の補間処理は、回転後の走査方向Wに隣り合う画素データP´n(i)と、P´n(i+1)を重みづけ補間して、第2の画像G2を出力するための画素データP´´n(i)を生成する。補間式は、図12に示す式(2)である。300DPI、回転角θが2度の場合、原走査線のX方向の画素位置と、回転後の走査線のW方向の画素位置との差は1ライン当たり1画素未満(0.1%未満)なので、ほとんど無視できる程度である。したがって、この第2の補間処理は省いても良い。省いた場合、第2の画像G2は、走査方向Wに0.1%程度膨らんだ位置の輝度が表示されるので、第2の画像G2は走査方向Wに0.1%程度収縮した画像になる。第2の補間処理は走査方向Wの画素位置に合わせて輝度データ(画素データ)を補間し、回転した第2の画像G2の膨張収縮を抑制する。
【0044】
ステップ88において、ラインデータ生成ユニット76が、第2の補間処理が行われた画素データP´´を走査方向Wの順番で組み合わせ、回転後の走査線データ(ラインデータ)を生成する。さらに、ステップ88において、第2の出力ユニット72は、メモリ59の第2のデータファイルD2に走査線データを順番に格納する。ステップ89において、中間データファイルMDに格納されたブロックデータBDが終了するまで、ステップ86から88を繰り返す。このようにして、生成装置50は、第1の画像G1を角度θだけ回転させた第2の画像G2を出力するための画像データD2を生成する。この例では、画像データなどを格納する記録媒体として共通のメモリ59が用いられているが、異なる記録媒体であっても良い。たとえば、再構成可能領域10に含まれるRAMエレメントを中間データファイルMDの格納先としても良い。
【0045】
図13(a)に、再構成可能な処理装置(再構成可能デバイス)1の一例を示している。このデバイス1は、本願の出願人が開発したDAPDNAと称する半導体集積回路装置である。このデバイス1は、DAPと呼ばれるRISCコアモジュール2と、DNAと呼ばれるダイナミックリコンフィグラブルデータフローアクセレレータ3とを含む。デバイス1は、DAP2およびDNA3に加え、DNA3のダイレクト入出力用のインターフェイス4と、PCIインターフェイス5と、SDRAMインターフェイス6と、DMAコントローラ7と、その他の周辺デバイス8と、これらを接続するための高速スイッチングバス(内部バス)9とを含む。PCIインターフェイス5および/またはSDRAMインターフェイス6には、大容量記録媒体、例えば、RAMディスク59b、フラッシュメモリ59aなどを接続し、画像データなどを格納できる。
【0046】
DAP2は、デバッグインターフェイス42aと、RISCコア42bと、命令キャッシュ42cと、データキャッシュ42dとを含む。DNA3は、376個のPE(PEs、処理エレメント)が2次元に配置されたPEマトリクス10と、このPEマトリクス10に含まれるPEsの機能および/または接続を変えてPEマトリクス10を再構成するためのコンフィグレーションデータ18が格納されるコンフィグレーションメモリ19とを含む。PEマトリクス10は、回路を再構成可能なユニット、すなわち、再構成可能領域に相当する。また、このPEマトリクス10の構成は、DAP2により制御され、DAP2は制御ユニットに相当する。
【0047】
コンフィグレーションメモリ19は、複数バンクの構成になっている。例えば、図13(b)に示すように、PEマトリクス10には、フォアグラウンドバンクに格納されるコンフィグレーションデータ18により第1の機能(データフロー、回路デザイン)17aが構成される。また、異なるバックグラウンドバンクにそれぞれ格納されるコンフィグレーションデータにより、第2の機能17bおよび第3の機能17cがそれぞれ構成される。メモリ19のバンクを切り替えることにより、PEマトリクス10には、第1の機能17aに変わって第2の機能17bまたは第3の機能17cが再構成される。PEマトリクス10の再構成は、例えば、1サイクル(クロックサイクル)でダイナミックに行なわれる。このようにPEマトリクス10は、回路を構成するための複数のエレメントと、これらのエレメントを接続するための内部配線とを含む再構成ユニットであり、内部配線によりエレメントの接続を変えることによりPEマトリクス10に含まれる回路を再構成できる。
【0048】
図13(c)は、PEマトリクス10に回路を再構成する一例である。あるアプリケーション、例えばMPEGデコーダを時分割した複数の機能(サブファンクション)を、PEマトリクス10に時分割で再構成し、MPEGデコーダの機能を専用回路(専用ハードウェア)で提供する。このような使用により、再構成可能なデータ処理装置であるデバイス1を用いて、多くのハードウエア資源を必要とするアプリケーションを、少ないハードウエア資源で実行できる。
【0049】
図13(d)は、PEマトリクス10に回路を構成する他の例の一つである。再生方式が異なるアプリケーションを実行するために、複数の機能がそれぞれ実現されるようにPEマトリクス10を再構成できる。このような使用により、多くのアプリケーションを共通のハードウエア(デバイス)1を用いて実行できる。このデバイス1は、プログラムレベル(命令レベル)ではなく、データフローレベル(データパスレベル、ハードウエアレベル)で多数の機能を切り換えて実装できるので、専用のハードウエアに匹敵する速度で処理を行うことができる。
【0050】
図14に、PEマトリクス10の配列を拡大して示している。処理エレメントPEは、全体として、16×24のマトリクスを構成するように配置されている。なお、PEのいくつかは、2個分のPEのスペースを占め、全体として376個のPEがPEマトリクス10に配置されている。これらのPEは、さらに、それぞれ8×8のPEからなる6つのグループに区分けされている。これらのグループをセグメントSと称し、PEマトリクス10の左上から右下に向かって順番にセグメントS0からセグメントS5が配置されている。各々のセグメントS0〜S5に含まれるPEは、1サイクルの遅延の範囲内でデータを送受信可能なイントラセグメントコネクションで接続されている。また、セグメントS0〜S5の内、隣接するセグメントは、後述するディレイエレメントを介してインターセグメントコネクションにより接続されている。
【0051】
図14に示したPEのうち、「EX」で始まるPEは、EXEエレメントと呼ばれ、算術演算、論理演算および2入力の比較機能を含む演算用のエレメントである。「EXC」は、CMPSB命令を搭載し、「EXF」は、FF1命令を搭載し、「EXM」は、乗算命令を搭載し、「EXR」はBREV命令を搭載し、「EXS」は、BSWAP命令を搭載するというように、タイプ毎に固有の演算機能も含んでいる。
【0052】
「DL」で始まるPEは、ディレイエレメントであり、1−8クロックの間の遅延をそれぞれ設定できる。「DLE」は、セグメント内のデータ遅延用であり、「DLV」は縦方向のセグメント間のデータ送受信用であり、「DLH」は横方向のセグメント間のデータ送受信用であり、「DLX」は縦横方向のセグメント間のデータ送受信用のエレメントである。
【0053】
「RAM」と表示されたPEは、DNAの内部メモリとして使用されるエレメント(メモリエレメント)である。「LDB」と表示されたPEは、データ入力用のDNA内部バッファであり、入力インターフェイスあるいは入力ユニットを構成するために用いられる。「STB」と表示されたPEは、データ出力用のDNA内部バッファであり、出力インターフェイスあるいは出力ユニットを構成するために用いられる。「C16E」と表示されたPEは、DNA内部バッファに対するアドレス生成エレメントである。「C32E」と表示されたPEは、外部メモリ空間に対するアドレス生成エレメントである。「LDX」と表示されたPEは、DNAダイレクトI/Oからのデータ入力用エレメントである。「STX」と表示されたPEは、DNAダイレクトI/Oへのデータ出力用エレメントである。PEマトリクス10において、LDBおよびLDXは、外部からデータを入力するための入力インターフェイスとして使用でき、STBおよびSTXは、外部へデータを出力するための出力インターフェイスとして使用できる。
【0054】
図15に、PEの一例として、EXMエレメント(「EXM」)の概略構成をブロック図により示している。EXMエレメントは、ALU11aと、MUL(16×16)11bと、FF11cなどを含む。このEXMエレメントは、DNA3のコンフィグレーションメモリ19に格納されたコンフィグレーションデータ18により、算術演算、論理演算、2入力の比較機能、さらには、乗算のいずれか、または複合した命令を実行するように構成できる。また、複数のFF11cを内蔵しているので、エレメントPEに対するデータの入力から出力までのレイテンシを制御することが可能であり、ディレイエレメント(DLE)の数が不足する構成では、ディレイエレメントとしての機能をセットすることも可能である。
【0055】
図16に、PEの他の例として、RAMエレメント(「RAM」)の概略構成をブロック図により示している。このRAMエレメントは、データ格納用メモリエレメントであり、16KB(32ビット×4096ワード)のRAMモジュール12aと、アドレス入力用のアドレスレジスタ(FF)12b、ラッチ12c、データ入力用のライトデータレジスタ(FF)12d、ラッチ12e、データ出力用のリードデータレジスタ(FF)12fを含む。RAMモジュール12aのリードとライトの制御は、アドレスデータおよび/またはリードデータとともに入力されるトークンの値により行なわれる。アドレス入力からリードデータの出力までは、EXEエレメントと同様に3クロックサイクル程度で可能になっており、PEマトリクス10に含まれる他のタイプのPEと同様のレイテンシで、データの入出力が可能である。このRAMエレメントは、DNA3のコンフィグレーションメモリ19に格納されたコンフィグレーションデータ18により、32ビットモード、デュアルポート32ビットモード、FIFOモード、16ビットモード、8ビットモード、さらに、FSM(フィードバックステートモード)でデータ入力および/または出力するように構成できる。
【0056】
RAMエレメントのアクセスアドレスの生成には、EXEエレメント、カウンタエレメントであるC16Eおよび/またはC32Eを使用することができ、PEマトリクス10のルーティングマトリクス(マトリクスバス)を通じて、RAMエレメントに入力できる。したがって、RAMエレメントへの入出力は、PEマトリクス10に再構成される回路により制御できる。
【0057】
PEマトリクス10は、複数のPEと、それらを接続するためのルーティングマトリクス(配線群)20を含む。ルーティングマトリクス20は、セグメントS内のPEを接続するための第1レベルの配線群(第1レベルのルーティングマトリクス、イントラコネクト)21と、ディレイエレメントを介して隣接するセグメントSの間を接続するための第2レベルの配線群(第2レベルのルーティングマトリクス、インターコネクト)とを含む。ルーティングマトリクス20によるPEsの接続はコンフィグレーションデータ18により制御できる。したがって、PEマトリクス10には、コンフィグレーションデータ18により、複数のPEのそれぞれの機能を変更すること、および/または、ルーティングマトリクス20の少なくとも一部の接続を変更することにより、異なる回路(データパス、データフロー)を再構成できる。
【0058】
図17に、セグメントSの内部のPEsを接続するための第1レベルの配線群21の構成の一例を示している。第1レベルのルーティングマトリクス21は、セグメントS0に含まれる8×8個のPEsを接続するために、128の縦方向のバス23と、64の横方向のバス24とを含む。縦方向のバス23は、16のグループに分けられ、それぞれ8のバスを含む2つのV−バス23xおよび23yがペアとなり、PEsの縦の列(コラム)に沿って、その列の両側に配置されている。横方向のバス24は8のグループに分けられ、それぞれ8のバスを含むH−バス24がPEの横方向の行(ライン)に沿って配置されている。V−バス23xおよび23yには、8−1のバスセレクタ(マルチプレクサ、MUX)25がそれぞれのPEに対応して設けられており、それぞれのPEに対してデータの入力を可能としている。
【0059】
H−バス24には、H−バス24とV−バス23xおよび23yのそれぞれの交差に対応して、8−1のバスセレクタ(マルチプレクサ、MUX)26が設けられている。したがって、1つのH−バス24から1つのデータセットを、そのH−バス24と交差している1つのV−バス23xまたは23yに出力できる。逆も可能である。H−バス24に含まれるバスのそれぞれには、そのラインのPEsの出力が接続される。したがって、V−バス23xおよび23yと、H−バス24とを介することにより、セグメントSに含まれるPEsを接続できる。これらのV−バス23xおよび23y、およびH−バス24を含む第1レベルのバス21により接続できる範囲、すなわち、各セグメントS0〜S5内のPEの間では1サイクル(1クロック)以内にデータを送受信できる。したがって、タイミング的には、例えば、セグメントS0に含まれるPEsは、いずれも等価である。このため、同一セグメント内であれば、回路を構成するために、いずれのPEを選択して機能を割り付けても、タイミングの検討は不要であり、タイミング的には、セグメント内のPEsを用いて、所定の回路を自由に配置および配線できる。
【0060】
第2レベルのルーティングマトリクスにより、隣接するセグメント同士、例えば、セグメントS1およびS2にそれぞれ含まれている接続用のエレメントDLHが接続される。それぞれのDLHは、それぞれのセグメント内部の第1レベルのルーティングマトリクス21に接続している。したがって、異なるセグメントに含まれるPEは、第2レベルのルーティングマトリクスを介して接続することができる。接続用のディレイエレメントDLHは、第1レベルのルーティングマトリクス21に含まれるバスのインターフェイスとして機能する。したがって、第1レベルのルーティングマトリクス21に含まれるバスを、セグメント毎に独立して使用できる。一方、セグメント間でデータを入出力する必要があるときは、接続用のディレイエレメントDLHに含まれる複数のFFを介してデータを入出力する必要があり、クロックに同期した2サイクル以上の遅延が新たに加わる。
【0061】
このように、第1レベルのルーティングマトリクス21のみを用いてPEを接続する場合、PEsの間は1サイクル(第1の遅延)の範囲内で接続されることが保証され、タイミングの検証は不用である。これに対し、第2レベルのルーティングマトリクスを介してPEを接続する場合は、2サイクル以上の遅延が加わる。第2レベルのルーティングマトリクスを介して接続する場合の遅延は、ディレイエレメントDLHの設定に依存する。例えば、DLHの遅延量を制御することにより、第2のルーティングマトリクスを2回使用する信号と、1回使用する信号とをシンクロナイズできる。他の接続用のディレイエレメントDLVおよびDLXを介して隣接するときも同様である。
【0062】
図18に、再構成領域であるPEマトリクス10に構成される第1段階の回路51の一例を示している。この例では、第1の入力ユニット61は、入力バッファLDBを用いてライン単位の原走査線データE1を取得し、さらに、RAMエレメントをラインバッファとして使用して第1の補間演算ユニット63に2ライン分のデータを供給するように構成される。第1の補間演算ユニット63では、EXエレメントを用いて掛け算および足し算を含む演算回路が構成される。第1の補間演算ユニット63では、ブロックデータBDに含まれる線分データLSDの複数の画素のデータを生成する処理がパイプラインで行われるように回路が構成されている。このため、原走査線データE1の読み込みに続いて、線分データLSDが連続的に、パイプライン方式で、例えば、1サイクル毎に出力される。
【0063】
ブロックデータ生成ユニット66では、EXエレメントを用いてセレクタを含む回路が構成される。第1の出力ユニット62では、出力バッファSTBを用いて回路が構成される。ブロックデータ生成ユニット66および第1の出力ユニット62では、2系統のブロックデータBDをハンドリングする回路が並列に用意されている。線分データSLDをブロックデータBDにするときにパディングデータpdを追加する処理に時間を要するので、パイプラインが破綻する可能性があるからである。しかしながら、第1の出力ユニット62よりブロックデータBDをメモリ59にバーストライトすることにより、待ち時間なく、ブロックデータBDをメモリ59に格納できる。
【0064】
制御情報生成ユニット69では、EXエレメントを用いて座標をカウントするためのカウンタが構成され、RAMエレメントを用いて定数テーブルが構成されている。定数データには、解像度、回転角θにより決まる線分の情報と、補間計算のための各種パラメータと、線分データをブロック化するための情報などが含まれる。
【0065】
図19に、第1段階の回路51の主なポイントにおいてデータが転送される様子を模式的に示している。第1の入力ユニット61は、第1の画像データD1から連続的に原走査線データを取得し(ポイントA)、バッファを用いて2ライン分のデータLD1およびLD2を出力する(ポイントB)。ブロックデータ生成ユニット66においては、第1の補間演算ユニット63から連続的に出力される線分データLSDにパディングデータpdを付加してブロックデータBDを出力する(ポイントC)。第1の出力ユニット62は、それらのブロックデータBDをメモリ59の所定のアドレスにバーストライトする。
【0066】
図20に、PEマトリクス10に構成される第2段階の回路52の一例を示している。この例では、第2の入力ユニット71は、入力バッファLDBを用いてブロックデータBDを走査線の順番で取得し、さらに、DELエレメントにより、走査方向Wに隣接する2つの画素のデータを第2の補間演算ユニット73に供給されるようにしている。第2の補間演算ユニット73では、EXエレメントを用いて掛け算および足し算を含む演算回路が構成される。第2の補間演算ユニット73では、ブロックデータBDに含まれる線分データLSDの複数の画素のデータを生成する処理がパイプライン方式で行われるように回路が構成されている。このため、第2の補間処理がされた線分データSLDが連続的に、パイプライン方式で、例えば、1サイクル毎に出力される。
【0067】
ラインデータ生成ユニット76では、EXエレメントを用いてセレクタを含む回路が構成され、ゲーティングすることによりブロックデータBDに含まれているパディングデータpdを取り除けるようになっている。DELエレメントは、制御情報と待ち合わせのためのものである。第2の出力ユニット72では、出力バッファSTBを用いて回路が構成される。
【0068】
制御情報生成ユニット79には、EXエレメントを用いて座標をカウントするためのカウンタが構成され、RAMエレメントを用いて定数テーブルが構成されている。第1段階の回路51と同様に、定数データには、解像度、回転角θにより決まる線分の情報と、補間計算のための各種パラメータと、ブロックデータBDから線分データLSDを抽出するための情報などが含まれる。
【0069】
図21に、第2段階の回路52の主なポイントにおいてデータが転送される様子を模式的に示している。第2の入力ユニット71は、メモリ59の所定のアドレスから取得したブロックデータBDと、そのブロックデータBDを1または複数クロックだけシフトした2系統のブロックデータBDを出力する(ポイントB)。ラインデータ生成ユニット76においては、第2の補間演算ユニット73から出力されるブロックデータからパディングデータpdを取り除き、線分データLSDのみを出力する。第2の出力ユニット72は、それらの線分データLSDを順番にメモリ59に格納し、第2の画像データD2を生成する。
【0070】
図22に示したように、第1の画像G1を単純に回転すると見栄えが悪くなる。このため、ラインデータ生成ユニット76は、回転画像調整部としての機能を備えている。すなわち、図22における領域R1〜R4の部分は回転後の表示では見栄えを悪くし、不要と考えられる。このため、ラインデータ生成ユニット76は、パディングデータPdをカットするゲーティングの機能を用いて領域R1〜R4のデータを出力しない(削除する)。この処理は制御情報生成ユニット79により出力される制御情報をもとに行う。
【0071】
図23は、生成装置50の他の例を示す基本構成ブロック図である。この生成装置50も、回路を再構成可能な処理装置(再構成可能デバイス)1を用いて実現されている。再構成可能領域であるPEマトリクス10に構成される第1段階の回路51は、第1の入力ユニット61と、補間演算ユニット65と、第1の出力ユニット62と、制御情報生成ユニット69とを含む。補間演算ユニット65は、第1の補間演算ユニット63と、第2の補間演算ユニット73と、特異点処理部64とを含む。第1の補間演算ユニット63と、第2の補間演算ユニット73とは、線分LS毎に、上述したように、走査方向に補間処理を行っても良い。また、2次元的に隣合う4画素に囲まれる長方形の領域内に属する回転後の画素の輝度データ(画素データ)を4画素の距離を重みづけパラメータとして補間により求めることができる。この長方形領域に回転後の画素が1つしか含まれない場合だけではなく、回転後の画素が0個ないし2個含まれる場合も起こりうる。0個ないし2個含まれる場合を特異点と呼ぶ。回転後の画素が1つしか含まれない場合は、上述してきた処理のみで対応できる。しかしながら、回転後の画素が0個または2個の場合は特異点処理が必要となる。
【0072】
第2段階の回路52は、第2の入力ユニット71と、ラインデータ生成ユニット76と、第2の出力ユニット72と、制御情報生成ユニット79とを含む。回転後の画素データを生成する補間演算は、第1段階の回路51ですべて行っているので、この第2段階の回路52は、回転後の走査方向Wの順番でブロックデータBDを読み込み、ラインデータ化して出力するだけになる。この例では、ブロックデータBDを走査方向Wに読み出すためのアドレス生成機能を第2段階の回路52に含めて、第1段階の回路51のハードウェア的な負荷を減らしている。すなわち、第1の出力ユニット62は、回転前の走査方向Xの順番でブロックデータBDをメモリ59の中間データファイルMDに格納する。第2の入力ユニット71は、アドレス生成を行い、ブロックデータBDを飛び飛びに取得し、回転後の走査方向Wの順番でブロックデータBDをメモリ59から取得する。
【0073】
以上に説明したように、これらの生成装置50においては、アフィン変換された画像を生成するために、メモリ59に対してバーストアクセスおよびシリアルアクセスするだけで良い。個々の画素データを取得するためにメモリ59に対してランダムアクセスする必要がない。したがって、データを入出力する処理時間が、画像データを変換するための処理時間のクリティカルパスおよび/またはボトルネックとなることを抑制できる。たとえば、図19に示すように、ブロックデータBDをメモリ59に書き込むために補間演算処理を止める必要はなく、メモリに対する入出力がクリティカルパスになるのが避けられている。したがって、アフィン変換を要する画像処理の時間を短縮できる。
【0074】
上記にて開示した画像処理方法は、メモリの利用効率などの点から、300DPI程度の解像度の画像であれば±数度以下の微小回転を含む画像処理に適している。この程度の微小回転を伴う画像処理は、スキュー角の補正などに多用されており、画像処理を高速化できることは有効である。また、上記にて開示した画像処理を、±数度以上の大きな回転を伴う画像処理に適用することも可能である。また、微小回転をなんどか繰り返すことにより、所望の角度だけ画像を回転することも可能である。
【0075】
また、上記の生成装置は、メモリにブロックデータを書き込む第1段階の回路と、メモリからブロックデータを読み込む第2段階の回路とに分けて、再構成可能なデバイス、特に、ダイナミックリコンフィグラブルデバイスを用いて実現している。しかしながら、第1段階の回路と、第2段階の回路とを同時に構成しても良く、また、FPGAあるいはASICを用いて、これらの回路を固定的に実装しても良い。また、メモリに対するブロックデータへの入出力は、ダブルポートメモリなどを用いることにより、適当な処理間隔をおいて、並列に実行することも可能である。
【図面の簡単な説明】
【0076】
【図1】本発明の実施形態の生成装置のブロック図。
【図2】アフィン変換することにより線分が生成されることを示す図。
【図3】変換前の走査線のデータを補間して変換後の線分のデータを生成することを示す図。
【図4】変換後の線分のデータを組み合わせて、変換後の走査線のデータを生成することを示す図。
【図5】線分のデータをブロックデータ化することを示す図。
【図6】図6(a)および(b)は、ブロックデータをメモリに格納する異なる例を示す図。
【図7】生成装置の処理を示すフローチャート。
【図8】副走査方向に補間して線分のデータを生成する様子を示す図。
【図9】副走査方向の補間式を示す図。
【図10】走査線の左端を中心に回転したときの左端の線分のデータを生成する様子を示す図。
【図11】走査方向にさらに補間して線分のデータを生成する様子を示す図。
【図12】走査方向の補間式を示す図。
【図13】図13(a)は、再構成可能なデバイスの一例の概略構成を示し、図13(b)は、PEマトリクス(再構成可能領域)の概略を示し、図13(c)および図13(d)は、PEマトリクスを動的に再構成する様子を示す。
【図14】PEマトリクスに配置されたPEのタイプを示す図。
【図15】PEの1つのタイプのEXMの構成を示すブロック図。
【図16】PEの1つのタイプのRAMの構成を示すブロック図。
【図17】セグメント内の配線(イントラセグメント配線)を示す図。
【図18】第1段階の回路の一例を示すブロック図。
【図19】第1段階の回路においてデータが転送される様子を示す図。
【図20】第2段階の回路の一例を示すブロック図。
【図21】第2段階の回路においてデータが転送される様子を示す図。
【図22】画像を回転したときに、はみ出た部分の削除を行うことを示す図。
【図23】本発明の実施形態の生成装置の異なる例を示すブロック図。
【符号の説明】
【0077】
1 ダイナミックリコンフィグラブルデバイス
10 PEマトリクス(再構成ユニット)
50 生成装置(画像処理装置)
51 第1段階の回路
52 第2段階の回路
【特許請求の範囲】
【請求項1】
第1の画像を出力するための第1のデータから、前記第1の画像がアフィン変換された第2の画像を出力するための第2のデータを生成する装置であって、
前記第1のデータが格納された第1の記録媒体から、前記第1の画像の隣接する第1の原走査線および第2の原走査線に含まれる複数の画素を出力するための原走査線データを取得する第1の入力ユニットと、
前記原走査線データから、前記第2の画像の複数の画素を出力するための画素データを生成する補間演算ユニットとを有し、
前記画素データには、前記第2の画像の複数の走査線の線分に含まれる複数の画素を出力するための線分データが含まれており、
さらに、それぞれの線分データを含むブロックデータを入出力単位として第2の記録媒体に格納する第1の出力ユニットと、
前記第2の記録媒体から、前記第2の画像の第3の走査線を出力するための複数の線分データを含む複数のブロックデータを取得する第2の入力ユニットと、
前記第3の走査線に含まれる複数の画素を出力するための走査線データを前記第2のデータとして第3の記録媒体に格納する第2の出力ユニットとを有する、装置。
【請求項2】
請求項1において、前記第1の出力ユニットは、前記ブロックデータを固定長で前記第2の記録媒体に格納する、装置。
【請求項3】
請求項2において、前記第1の出力ユニットは、前記ブロックデータをバースト長で前記第2の記録媒体に格納する、装置。
【請求項4】
請求項1において、前記第1の出力ユニットは、前記ブロックデータを、前記第2の画像の走査線の順番で読みだされるようにアドレスを変えて、前記第2の記録媒体に格納する、装置。
【請求項5】
請求項1において、前記第2の入力ユニットは、前記ブロックデータを、前記第2の画像の走査線の順番で読みだすようにアドレスを変えて、前記第2の記録媒体から取得する、装置。
【請求項6】
請求項1において、前記補間演算ユニットは、副走査方向の補間により、それぞれの線分データに含まれる複数の画素を出力するためのデータを並列に生成する第1の演算回路を含む、装置。
【請求項7】
請求項6において、前記補間演算ユニットは、走査方向の補間により、それぞれの線分データに含まれる複数の画素を出力するためのデータを並列に生成する第2の演算回路を、さらに含む、装置。
【請求項8】
請求項7において、前記第1の出力ユニットは、前記第1の演算回路から出力された線分データを含むブロックデータを前記第2の記録媒体に格納し、
前記第2の演算回路は、前記第2の入力ユニットにより取得された線分データを走査方向に補正して、補正後の線分データを生成する、装置。
【請求項9】
請求項6において、さらに、回路を再構成可能な再構成可能ユニットと、前記再構成可能ユニットに回路を構成する制御ユニットとを有し、
前記制御ユニットは、前記再構成可能ユニットに、前記第1の入力ユニット、前記第1の演算回路、および前記第1の出力ユニットを含む第1段階の回路を構成し、第2段階として、前記第2の入力ユニット、および前記第2の出力ユニットを含む第2段階の回路を構成する、装置。
【請求項10】
回路を再構成可能な再構成可能ユニットと、前記再構成可能ユニットに回路を構成する制御ユニットとを有する装置を、前記制御ユニットにより制御する方法であって、
第1の画像を出力するための第1のデータから、前記第1の画像がアフィン変換された第2の画像を出力するための第2のデータを生成することを有し、
前記生成することは、
前記再構成可能ユニットに第1段階の回路を構成することと、
前記再構成可能ユニットに第2段階の回路を構成することとを含み、
前記第1段階の回路は、
前記第1のデータが格納された第1の記録媒体から、前記第1の画像の隣接する第1の原走査線および第2の原走査線に含まれる複数の画素を出力するための原走査線データを取得する第1の入力ユニットと、
前記原走査線データから、前記第2の画像の複数の画素を出力するための画素データを生成する補間演算ユニットとを含み、
前記画素データには、前記第2の画像の複数の走査線の線分に含まれる複数の画素を出力するための線分データが含まれており、
さらに、前記第1段階の回路は、それぞれの線分データを含むブロックデータを入出力単位として第2の記録媒体に格納する第1の出力ユニットを含み、
前記第2段階の回路は、
前記第2の記録媒体から、前記第2の画像の第3の走査線を出力するための複数の線分データを含む複数のブロックデータを取得する第2の入力ユニットと、
前記第3の走査線に含まれる複数の画素を出力するための走査線データを前記第2のデータとして第3の記録媒体に格納する第2の出力ユニットと含む、方法。
【請求項11】
第1の画像を出力するための第1のデータから、前記第1の画像がアフィン変換された第2の画像を出力するための第2のデータを生成する方法であって、
前記第1のデータが格納された第1の記録媒体から、前記第1の画像の隣接する第1の原走査線および第2の原走査線に含まれる複数の画素を出力するための原走査線データを取得することと、
前記原走査線データから、前記第2の画像の複数の画素を出力するための画素データを生成することとを有し、
前記画素データには、前記第2の画像の複数の走査線の線分に含まれる複数の画素を出力するための線分データが含まれており、
さらに、それぞれの線分データを含むブロックデータを入出力単位として第2の記録媒体に格納することと、
前記第2の記録媒体から、前記第2の画像の第3の走査線を出力するための複数の線分データを含む複数のブロックデータを取得することと、
前記第3の走査線に含まれる複数の画素を出力するための走査線データを前記第2のデータとして第3の記録媒体に格納することとを有する、方法。
【請求項12】
請求項11において、前記第2の記録媒体には、前記ブロックデータを固定長で格納する、方法。
【請求項13】
請求項12において、前記第2の記録媒体には、前記ブロックデータをバースト長で格納する、方法。
【請求項14】
請求項11において、前記第2の記録媒体には、前記ブロックデータを、前記第2の画像の走査線の順番で読みだされるようにアドレスを変えて格納する、方法。
【請求項15】
請求項11において、前記第2の記録媒体から、前記ブロックデータを、前記第2の画像の走査線の順番で読みだすようにアドレスを変えて取得する、方法。
【請求項1】
第1の画像を出力するための第1のデータから、前記第1の画像がアフィン変換された第2の画像を出力するための第2のデータを生成する装置であって、
前記第1のデータが格納された第1の記録媒体から、前記第1の画像の隣接する第1の原走査線および第2の原走査線に含まれる複数の画素を出力するための原走査線データを取得する第1の入力ユニットと、
前記原走査線データから、前記第2の画像の複数の画素を出力するための画素データを生成する補間演算ユニットとを有し、
前記画素データには、前記第2の画像の複数の走査線の線分に含まれる複数の画素を出力するための線分データが含まれており、
さらに、それぞれの線分データを含むブロックデータを入出力単位として第2の記録媒体に格納する第1の出力ユニットと、
前記第2の記録媒体から、前記第2の画像の第3の走査線を出力するための複数の線分データを含む複数のブロックデータを取得する第2の入力ユニットと、
前記第3の走査線に含まれる複数の画素を出力するための走査線データを前記第2のデータとして第3の記録媒体に格納する第2の出力ユニットとを有する、装置。
【請求項2】
請求項1において、前記第1の出力ユニットは、前記ブロックデータを固定長で前記第2の記録媒体に格納する、装置。
【請求項3】
請求項2において、前記第1の出力ユニットは、前記ブロックデータをバースト長で前記第2の記録媒体に格納する、装置。
【請求項4】
請求項1において、前記第1の出力ユニットは、前記ブロックデータを、前記第2の画像の走査線の順番で読みだされるようにアドレスを変えて、前記第2の記録媒体に格納する、装置。
【請求項5】
請求項1において、前記第2の入力ユニットは、前記ブロックデータを、前記第2の画像の走査線の順番で読みだすようにアドレスを変えて、前記第2の記録媒体から取得する、装置。
【請求項6】
請求項1において、前記補間演算ユニットは、副走査方向の補間により、それぞれの線分データに含まれる複数の画素を出力するためのデータを並列に生成する第1の演算回路を含む、装置。
【請求項7】
請求項6において、前記補間演算ユニットは、走査方向の補間により、それぞれの線分データに含まれる複数の画素を出力するためのデータを並列に生成する第2の演算回路を、さらに含む、装置。
【請求項8】
請求項7において、前記第1の出力ユニットは、前記第1の演算回路から出力された線分データを含むブロックデータを前記第2の記録媒体に格納し、
前記第2の演算回路は、前記第2の入力ユニットにより取得された線分データを走査方向に補正して、補正後の線分データを生成する、装置。
【請求項9】
請求項6において、さらに、回路を再構成可能な再構成可能ユニットと、前記再構成可能ユニットに回路を構成する制御ユニットとを有し、
前記制御ユニットは、前記再構成可能ユニットに、前記第1の入力ユニット、前記第1の演算回路、および前記第1の出力ユニットを含む第1段階の回路を構成し、第2段階として、前記第2の入力ユニット、および前記第2の出力ユニットを含む第2段階の回路を構成する、装置。
【請求項10】
回路を再構成可能な再構成可能ユニットと、前記再構成可能ユニットに回路を構成する制御ユニットとを有する装置を、前記制御ユニットにより制御する方法であって、
第1の画像を出力するための第1のデータから、前記第1の画像がアフィン変換された第2の画像を出力するための第2のデータを生成することを有し、
前記生成することは、
前記再構成可能ユニットに第1段階の回路を構成することと、
前記再構成可能ユニットに第2段階の回路を構成することとを含み、
前記第1段階の回路は、
前記第1のデータが格納された第1の記録媒体から、前記第1の画像の隣接する第1の原走査線および第2の原走査線に含まれる複数の画素を出力するための原走査線データを取得する第1の入力ユニットと、
前記原走査線データから、前記第2の画像の複数の画素を出力するための画素データを生成する補間演算ユニットとを含み、
前記画素データには、前記第2の画像の複数の走査線の線分に含まれる複数の画素を出力するための線分データが含まれており、
さらに、前記第1段階の回路は、それぞれの線分データを含むブロックデータを入出力単位として第2の記録媒体に格納する第1の出力ユニットを含み、
前記第2段階の回路は、
前記第2の記録媒体から、前記第2の画像の第3の走査線を出力するための複数の線分データを含む複数のブロックデータを取得する第2の入力ユニットと、
前記第3の走査線に含まれる複数の画素を出力するための走査線データを前記第2のデータとして第3の記録媒体に格納する第2の出力ユニットと含む、方法。
【請求項11】
第1の画像を出力するための第1のデータから、前記第1の画像がアフィン変換された第2の画像を出力するための第2のデータを生成する方法であって、
前記第1のデータが格納された第1の記録媒体から、前記第1の画像の隣接する第1の原走査線および第2の原走査線に含まれる複数の画素を出力するための原走査線データを取得することと、
前記原走査線データから、前記第2の画像の複数の画素を出力するための画素データを生成することとを有し、
前記画素データには、前記第2の画像の複数の走査線の線分に含まれる複数の画素を出力するための線分データが含まれており、
さらに、それぞれの線分データを含むブロックデータを入出力単位として第2の記録媒体に格納することと、
前記第2の記録媒体から、前記第2の画像の第3の走査線を出力するための複数の線分データを含む複数のブロックデータを取得することと、
前記第3の走査線に含まれる複数の画素を出力するための走査線データを前記第2のデータとして第3の記録媒体に格納することとを有する、方法。
【請求項12】
請求項11において、前記第2の記録媒体には、前記ブロックデータを固定長で格納する、方法。
【請求項13】
請求項12において、前記第2の記録媒体には、前記ブロックデータをバースト長で格納する、方法。
【請求項14】
請求項11において、前記第2の記録媒体には、前記ブロックデータを、前記第2の画像の走査線の順番で読みだされるようにアドレスを変えて格納する、方法。
【請求項15】
請求項11において、前記第2の記録媒体から、前記ブロックデータを、前記第2の画像の走査線の順番で読みだすようにアドレスを変えて取得する、方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【公開番号】特開2009−44654(P2009−44654A)
【公開日】平成21年2月26日(2009.2.26)
【国際特許分類】
【出願番号】特願2007−209925(P2007−209925)
【出願日】平成19年8月10日(2007.8.10)
【出願人】(500238789)アイピーフレックス株式会社 (15)
【Fターム(参考)】
【公開日】平成21年2月26日(2009.2.26)
【国際特許分類】
【出願日】平成19年8月10日(2007.8.10)
【出願人】(500238789)アイピーフレックス株式会社 (15)
【Fターム(参考)】
[ Back to top ]