(58)【調査した分野】(Int.Cl.,DB名)
N個(Nは2以上の整数)の要素の要素値から成るN次元データが配列したN次元データ列から生成された符号化データ列を復号化して上記N次元データ列を生成するデータ復元装置であって、
上記符号化データ列は、N次元データの各要素値から成る要素毎の要素値列を逆算可能であり、かつ、当該要素値列に含まれる要素値間の相関を示す各相関値を、上記要素値列毎に可変長符号化およびランレングス符号化を用いて符号化した符号化データが、上記N次元データ列に配列されたN次元データの配列順に、かつN次元データの各要素値の配列順に、N個単位に1次元に連続して配列されており、
上記符号化データ列に含まれる上記符号化データを復号化して上記相関値を生成する復号化手段と、
上記生成された相関値を逆算して得た上記要素値を、N次元データの配列順に、かつN次元データの各要素値の配列順に、N個単位に配列して上記N次元データ列を生成するデータ生成手段とを備え、
上記復号化手段による上記復号化、上記データ生成手段による上記逆算、および上記データ生成手段による上記配列を、並列に実行することを特徴とするデータ復元装置。
上記相関値は、上記要素値列上の隣り合う3つの要素値のうちの1つ目と2つ目との差分値と、2つ目と3つ目との差分値との差分値を含むことを特徴とする請求項1または2に記載のデータ復元装置。
上記相関値は、上記要素値列上の隣り合う3つの要素値のうちの1つ目と2つ目との差分値と、2つ目と3つ目との差分値との差分値を含むことを特徴とする請求項4または5に記載のデータ生成方法。
【発明を実施するための形態】
【0016】
本発明の一実施形態について、
図1〜
図8に基づいて説明すると以下のとおりである。
【0017】
〔補正データAD〕
本実施形態において、N(Nは2以上の整数)次元データとは、N個の要素の要素値から成るN個組のデータセットを表すものとする。また、N次元データ列とはN次元データが配列したデータ列を表すものとする。
【0018】
N次元データの具体例として、本実施形態では、平面表示用の画像を非平面表示面に投影するときに生じる画像の歪みを補正するために各画素に予め与えられる補正データ(以下では「補正データAD」と表記する)を用いる。補正データADは、画像の水平方向(主走査方向、X方向)の補正係数と、垂直方向(副走査方向、Y方向)の補正係数とを要素値として成る2次元データである。補正係数は、画素の平面表示面における表示位置を、非平面表示面における表示位置に補正するための係数である。
【0019】
以下では、垂直方向の補正係数を「Y補正係数」と表記する。また、水平方向の補正係数を「X補正係数」と表記する。なお、両者を区別しないときは、単に「補正係数」と表記する。また、補正データADの1番目の要素の要素値がY補正係数であり、2番目の要素の要素値がX補正係数であるものとする。
【0020】
また、画素の走査順がP番目である画素の補正データADを[Y
P,X
P]と表記する。Pは0以上かつi未満の整数であり、iは走査領域において走査される総画素数を表すものとする。また、各補正データADが走査順に配列したデータ列を「補正データ列AS」と表記する。つまり、補正データ列ASは、[Y
0,X
0]、[Y
1,X
1]、・・・、[Y
i-1,X
i-1]がこの順に配列したデータ列である。本実施形態では、補正データADの配列順は、画素の「走査順」であるものとして説明するが、補正データADの配列順がこれに限定されるものではない。また、補正データ列ASを構成するデータを、本実施形態に係るデータ生成方法により圧縮符号化して配列したデータ列を「符号化データ列ES」と表記する。
【0021】
〔画像処理装置1の構成例〕
図2を参照しながら、本実施形態に係るデータ復元装置30を含む画像処理装置1の概略構成について説明する。
図2は、画像処理装置1の概略構成を示すブロック図である。画像処理装置1は、表示装置(図示省略)に表示させる画像に画像処理を施す装置であり、特に、非平面表示面に画像を投影するシステム(例えばHUDシステムなど)に適した装置である。同図に示すとおり、画像処理装置1は、符号化データ列記憶部2、データ復元装置30、アドレス生成部3、映像キャプチャバッファ4、フィルタ部5、および表示制御部6を含んでいる。
【0022】
符号化データ列記憶部2は、符号化データ列ESを記憶するROMなどの記憶部である。データ復元装置30は、符号化データ列記憶部2から符号化データ列ESを読み取り、読み取った符号化データ列ESから補正データ列ASを復元する装置である。データ復元装置30の詳細については後述する。アドレス生成部3は、復元された補正データ列ASに含まれる補正係数を用いて、画素毎に補正後の表示位置を決定する。
【0023】
そして、画像処理装置1は、外部から入力されたRGBデータが一時的に格納される映像キャプチャバッファ4から、アドレス生成部3にて決定した表示位置に従ってRGBデータを読み出し、フィルタ部5にてエッジ強調などのフィルタ処理を施した上で、表示制御部6から表示装置にRGBデータを出力する。
【0024】
〔補正データ列ASから符号化データ列ESを生成する処理の流れ〕
次に、
図3の(a)に示すフローチャートを参照しながら、符号化データ列記憶部2に記憶される符号化データ列ESを生成する処理の一例について説明する。なお、この処理は、
図4の(a)に示す補正データ列ASから
図4の(d)に示す符号化データ列ESを生成する処理となる。この処理は、
図3の(a)に示す工程S11〜S13から成る。
【0025】
工程S11(符号化工程の一部)では、各補正データADに含まれる補正係数間の相関を示す相関値を算出する。相関値は、相関が強い傾向にあるY補正係数同士およびX補正係数同士から算出することが好ましい。好ましい相関値は、(i)隣り合う2つの画素のY補正係数(またはX補正係数)の差分値、および、(ii)隣り合う3つの画素のY補正係数(またはX補正係数)のうちの1つ目と2つ目との差分値と、2つ目と3つ目との差分値との差分値、である。
【0026】
具体的には、まず、各補正データADに含まれるY補正係数Y
0〜Y
i-1をこの順に整列させて成るデータ列M1から、データ列M1を逆算可能なY
0、dY
1、ddY
2、ddY
3、・・・、ddY
i-1をこの順に整列させたデータ列C1を算出する(
図4の(b)参照)。dY
PはY
PとY
P-1との相関を示す相関値であり、ここでは、dY
P=Y
P−Y
P-1とする。また、ddY
PはdY
PとdY
P-1との相関を示す相関値であり、ここでは、ddY
P=dY
P−dY
P-1とする。この場合、データ列C1の先頭のY
0を開始値(いわゆるシード)として、データ列C1からデータ列M1を逆算可能である。なお、データ列C1の先頭のY
0は補正係数そのものであるが相関値とみなしてもよい。
【0027】
さらに、各補正データADに含まれるX補正係数X
0〜X
i-1をこの順に整列させて成るデータ列M2から、データ列M2を逆算可能なX
0、dX
1、ddX
2、ddX
3、・・・、ddX
i-1をこの順に整列させたデータ列C2を算出する(
図4の(c)参照)。dX
PはX
PとX
P-1との相関を示す相関値であり、ここでは、dX
P=X
P−X
P-1とする。また、ddX
PはdX
PとdX
P-1との相関を示す相関値であり、ここでは、ddX
P=dX
P−dX
P-1とする。この場合、データ列C2の先頭のX
0を開始値として、データ列C2からデータ列M2を逆算可能である。なお、データ列C2の先頭のX
0は補正係数そのものであるが相関値とみなしてもよい。
【0028】
次に、
図3の(a)に示す工程S12(符号化工程の一部)にて、工程S11で算出されたデータ列C1に含まれる相関値の各々、及び、データ列C2に含まれる相関値の各々を符号化した符号化データを生成する。具体的には、データ列C1に含まれるY
0、dY
1、ddY
2、ddY
3、・・・、ddY
i-1の各々を符号化した符号化データであるEY
0、EdY
1、EddY
2、EddY
3、・・・、EddY
i-1から成る符号化データ群E1を生成する(
図4の(b)参照)。同様に、データ列C2に含まれるX
0、dX
1、ddX
2、ddX
3、・・・、ddX
i-1の各々を符号化した符号化データであるEX
0、EdX
1、EddX
2、EddX
3、・・・、EddX
i-1から成る符号化データ群E2を生成する(
図4の(c)参照)。
【0029】
なお、符号化方式として、可逆圧縮符号化方式であるハフマン符号化を用いることが好ましいが、これに限定されるものではない。ハフマン符号化を用いる場合、符号化データは可変長データとなる。なお、ハフマン符号化を用いる場合の符号化フォーマットの一例について後述する。
【0030】
最後に、
図3の(a)に示す工程S13(生成工程)にて、工程S12で生成した符号化データ群E1に含まれる符号化データ、および、符号化データ群E2に含まれる符号化データを、符号化データの導出元の補正データADの配列順に、かつ、補正データADにおける補正係数の配列順に、2個単位に1次元に配列する処理を行うことにより、符号化データ列ESを生成する(
図4の(d)参照)。具体的には、まず、符号化データ群E1の先頭のEY
0および符号化データ群E2の先頭のEX
0を、この順に並べた2個組のデータセットDS
0を、符号化データ列ESの先頭に配列する。なお、EY
0およびEX
0は、
図4の(a)に示す補正データAD
0から得られた符号化データであることに留意されたい。続いて、符号化データ群E1の2番目のEdY
1および符号化データ群E2の2番目のEdX
1を、この順で並べた2個組のデータセットDS
1を、配列済みのデータセットDS
0の後に続けて1次元に配列する。なお、EdY
1およびEdX
1は、
図4の(a)に示す補正データAD
0およびAD
1から得られた符号化データであることに留意されたい。この処理を符号化データ群E1の最後のEddY
i−1および符号化データ群E2の最後のEddX
i−1まで繰り返すことにより、データセットDS
0〜DS
i-1が1次元に配列した符号化データ列ESを生成する。
【0031】
この結果、符号化データ列ESは、同じ補正データADに対応する2個の符号化データを、補正係数の並び順に並べた2個組を単位として、補正データADの配列順に1次元に配列させたデータストリームとなる。なお、この2個組を「データセットDS」とも表記する。
【0032】
〔ランレングス符号化時の調整〕
ところで、工程S12では、通常、1個の相関値から1個の符号化データを生成しているが、圧縮率を高めるためにランレングス符号化を用いてもよい。ランレングス符号化を用いる場合、値が「D」である符号化対象データが連続してR個出現すると、これらの連続する符号化対象データを、値DがR回連続して出現することを示す1つの符号化データ(以下では「連長コード」と表記する)に符号化する。なお、ランレングス符号化を用いると、ランレングス符号化を用いない場合と比べて、連長コードを生成する毎にR−1個の符号化データが削減される。
【0033】
このように、ランレングス符号化を用いると、連続する符号化対象データが1個の連長コードに符号化されるため、符号化データ列ESを生成するにあたり、上述したデータセットDSの調整が必要となる。具体的には、符号化データ列ESの生成過程において、あるデータセットDSに含めた符号化コードが連長コードであった場合、当該連長コードを含むデータセットDSに続く、連続回数Rから1を減じた個数のデータセットDSについて、当該連長コードの要素を除いた要素の符号化データのみを含める。この調整方法の具体例について、
図4の(e)および(f)を参照しながら説明する。
【0034】
前提として、
図4の(e)に示すように、データ列C1におけるddY
2、ddY
3、およびddY
4の連続する3個の相関値が全て「0」であるものと仮定する。この場合、工程S13にて、ddY
2、ddY
3、およびddY
4の3個を、「0」が3回連続して出現することを示す1個の連長コードに符号化するものとする。
図4の(e)では、当該連長コードを「0*3」と表記した。なお、当該連長コードの次の符号化データはEddY
5であることに留意されたい。
【0035】
この場合において、工程S13では、
図4の(f)に示す符号化データ列ESを生成することを説明する。まず、データセットDS
0およびDS
1の配列に続いて、符号化データ群E1の3番目にある連長コード「0*3」および符号化データ群E2の3番目のEddX
2をこの順で並べたデータセットDS
2を配列する。そして、調整の要点は、データセットDS
2に続くデータセットDS
3およびデータセットDS
4に、符号化データ群E1の符号化データを含めないことである。具体的には、データセットDS
3には、符号化データ群E2の4番目のEddX
3のみを含める。同様に、データセットDS
4には、符号化データ群E2の5番目のEddX
4のみを含める。そして、符号化データ群E1において連長コード「0*3」の次のEddY
5を、当該連長コードが示す連続回数である3つ後に登場するデータセットDS
5に含める。なお、この場合、データセットDS
3およびデータセットDS
4は1個の符号化データのみを含むが、1個の空データを含む2個組とみなしてもよい。
【0036】
〔変形例(相関値の省略)〕
上述では、各補正データADに含まれる補正係数から相関値を算出した上で、該算出した相関値を符号化する手順を説明した。しかしながら、符号化による圧縮率を高める必要が無い場合、各補正データADに含まれる補正係数をそのまま符号化してもよい。この場合、
図3の(a)に示した工程S11を省略すればよい。そして、工程S12では、各補正データADに含まれる補正係数を符号化対象として符号化データを生成する。具体的には、
図4の(b)に示したデータ列M1に含まれるY
0〜Y
i-1の各々を符号化した符号化データから成る符号化データ群E1を生成する。同様に、
図4の(c)に示したデータ列M2に含まれるX
0〜X
i-1の各々を符号化した符号化データから成る符号化データ群E2を生成する。
【0037】
〔データ生成装置10の構成例〕
次に、
図1の(a)を参照しながら、
図3の(a)に示した工程S11〜S13を実行するデータ生成装置10の構成例について説明する。
図1の(a)はデータ生成装置10の概略構成を示すブロック図である。同図に示すように、データ生成装置10は、相関値算出部13、符号化処理部15、およびデータ配列部17を備えている。ただし、相関値を算出しない場合は、相関値算出部13は不要である。
【0038】
相関値算出部13は、工程S11を実行するものである。つまり、相関値算出部13は、各N次元データに含まれる各要素値から成る要素毎の要素値列を逆算可能であり、かつ、当該要素値列に含まれる要素値間の相関を示す各相関値を算出する処理を、要素値列毎に行う。
【0039】
符号化処理部15は、工程S12を実行するものである。つまり、符号化処理部15は、相関値算出部13が算出した各相関値を符号化して符号化データを生成する処理を、要素値列毎行う。また、符号化処理部15は、ランレングス符号化を用いて連長コードを生成する場合、配列順に同一値が連続する連続数個の符号化対象から、当該同一値および当該連続数個を表す1個の連長コードを符号化データとして生成する。なお、符号化処理部15は必ずしもデータ生成装置10に備えられる必要はなく、データ生成装置10と通信可能に接続された外部装置として備えられてもよい。
【0040】
データ配列部17は、工程S13を実行するものである。つまり、データ配列部17は、符号化処理部15が符号化して得た符号化データを、N次元データ列に配列されたN次元データの配列順に、かつN次元データの各要素値の配列順に、N個単位に1次元に配列する。言い換えれば、データ配列部17は、N次元データに含まれる各要素の相関値を符号化処理部15が符号化して得た符号化データを、N次元データの要素の配列順に配列したN個組のデータセットを単位として、1次元に配列する処理を、N次元データの配列順で行うことにより、符号化データ列ESを生成する。また、データ配列部17は、ランレングス符号化を用いて連長コードを生成する場合、符号化データ列ESの生成過程において、連長コードを含むデータセットDSに続く、連続回数Rから1を減じた個数のデータセットDSについて、当該連長コードの要素を除く要素の符号化データのみを含める。なお、データ配列部17は、符号化データ列ESを符号化データ列記憶部2に格納してもよいし、外部装置に出力してもよい。
【0041】
最後に、データ生成装置10は、相関値、符号化データ、およびこれらの生成過程で得た中間データを一時保持するためのメモリやレジスタ等の記憶部を備えていてもよい。
【0042】
〔符号化フォーマットの一例〕
図5を参照しながら、
図3の(a)に示した工程S12で行う符号化としてハフマン符号化を用いる場合の符号化フォーマットの一例について説明する。
図5は、符号化フォーマットの一例を示した模式図である。なお、前提として、1個の符号化対象のデータ長が16ビットであるものとする。
【0043】
フォーマット0〜3は、それぞれ、1個の符号化対象データを、出現確率に応じて、20ビット長、14ビット長、8ビット長、および6ビット長の1個の符号化データに符号化することを示す。上位3ビットはフォーマット識別情報である。「s」は符号ビットを表し、「I」は整数部を表し、「F」は小数部を表す。次に、フォーマット4は、ランレングス符号化を行なうフォーマットであり、連続するN個の「0」値を、10ビット長データに符号化することを示す。上位2ビットはフォーマット識別情報である。最大で255個の連続を表現することができる。最後に、フォーマット5は、1個の「0」値を2ビット長データに符号化することを示す。
【0044】
〔符号化データ列ESから補正データ列ASを復元する処理の流れ〕
次に、
図3の(b)に示すフローチャートを参照しながら、符号化データ列記憶部2に記憶される符号化データ列ESから補正データ列ASを復元する処理の流れの一例について説明する。なお、この処理は、
図6の(a)に示す符号化データ列ESから
図6の(d)に示す補正データ列ASを復元する処理となる。この処理は、
図3の(b)に示す工程S21〜S23から成る。
【0045】
まず、工程S21にて、符号化データ列ESに含まれる符号化データを、その符号化データの符号化フォーマットに従って復号化して相関値を生成する処理を、符号化データ列ESの先頭から順次行う(
図6の(a)参照)。具体的には、まず、符号化データ列ESの先頭のEY
0およびEX
0をこの順に復号化してY
0およびX
0を生成する(処理F1)。引き続きEdY
1およびEdX
1をこの順に復号化してdY
1およびdX
1を生成する(処理F2)。この処理を符号化データ列ESの最後まで繰り返す。これにより、次々と相関値が生成される。
【0046】
次に、
図3の(b)に示す工程S22にて、工程S21で相関値が生成される毎に、Y補正係数を逆算する(
図6の(b)参照)。具体的には、工程S21でdY
1が生成されると、Y
0および生成されたdY
1に基づいてY
1を逆算する(処理F5)。次に、工程S21でddY
2が生成されると、dY
1とddY
2とに基づいてdY
2を逆算するとともに、逆算済みのY
1とdY
2とに基づいてY
2を逆算する(処理F9)。なお、逆算式は、Y
1=Y
0+dY
1、dY
P=dY
P-1+ddY
P、および、Y
P=Y
P-1+dY
Pである。同様の手順で、
図6の(c)に示すとおりX補正係数を逆算する。逆算式は、X
1=X
0+dX
1、dX
P=dX
P-1+ddX
P、および、X
P=X
P-1+dX
Pである。
【0047】
最後に、
図3の(b)に示す工程S23にて、工程S22でY補正係数およびX補正係数が生成される毎に補正データADを生成する(
図6の(d)参照)。具体的には、まず、配列における位置が先頭であるY
0およびX
0をこの順に並べた補正データAD
0([Y
0,X
0])を生成する(処理F3)。続いて、配列における位置が2番目であるY
1およびX
1をこの順に並べた補正データAD
1([Y
1,X
1])を生成し、補正データAD
0の次に配列する(処理F7)。この処理を、最後のY
i-1およびX
i-1まで繰り返すことにより、[Y
0,X
0]、[Y
1,X
1]、・・・、[Y
i-1,X
i-1]を次々と生成する。この結果、補正データ列ASが、その先頭から順に復元される。
【0048】
ここで、注目すべき点は、工程S21、工程S22、工程S23を、並列に実行することである。これにより、生成された補正係数をバッファ等に保持することなく、次々と、補正データADを生成していく。例えば、処理F1を終えると続いて処理F2を行うとともに、処理F3にて[Y
0,X
0]を生成する。また、処理F2を終えると続いて処理F4を行うとともに、処理F5および処理F6を行い、続いて処理F7にて[Y
1,X
1]を生成する。また、処理F4を終えると続いて処理F8を行うとともに、処理F9および処理F10を行い、続いて処理F11で[Y
2,X
2]を生成する。
【0049】
〔ランレングス符号化時の調整〕
ところで、符号化データ列ESが、上述したランレングス符号化を用いて符号化された連長コードを含む場合、1個の連長コードを復号化することによって、連続する連続数個の相関値が生成されるため、これら相関値を生成するにあたり、調整が必要となる。具体的には、復号化過程において、連長コードを含むデータセットDSから連続回数R個のデータセットDSのそれぞれについて、当該連長コードの要素の復号結果として値Dを生成する。この調整方法の具体例について、工程S21で
図4の(f)に示す符号化データ列ESを復号化し、
図4の(e)に示すデータ列C1を生成する場合を例に挙げて説明する。この場合、連長コード「0*3」を1番目に含むデータセットDS
2を復号化するとき、当該連長コードの符号化前データである「0」値を生成するとともに、当該「0」値をレジスタ等に保持する。そして、続く2つのデータセットDS
3およびDS
4を復号化するときに、保持した「0」値を、データセットDS内の第1番目のデータから復号化したものとして出力する。このように調整することにより、連長コードを適切に復号化する。
【0050】
図7を参照しながら、上述した調整処理の流れの一例について説明する。
図7は、上述した調整処理を含む工程S21の流れの一例を示すフローチャートである。なお、このフローチャートでは、上述した調整処理の要否を判別するための変数R1およびR2を登場させた。変数R1が1より大きければデータセットDS内の第1番目のデータについて調整処理が必要である。また、変数R2が1より大きければデータセットDS内の第2番目のデータについて調整処理が必要である。なお、ステップS32〜S39までがデータセットDS内の第1番目のデータに対する復号化処理であり、ステップS40〜S47までがデータセットDS内の第2番目のデータに対する復号化処理である。
【0051】
まず、復号化の開始時に、R1およびR2の値を0に設定する(S31)。次に、R1が1より大きいか否かを判定する(S32)。R1が1以下である場合(S32にてNo)、次に復号化すべき符号化データが連長コードであるか否かを判定する(S33)。連長コードでなければ(S33にてNo)、通常どおりに符号化データを復号化して相関値を生成する(S34)。一方、連長コードであれば(S33にてYes)、まず、連長コードを復号化して値Dの相関値を1個生成する(S35)。そして、該生成した相関値をレジスタ等に保持する(S36)。そして、連長コードが示す連続回数RをR1に代入する(S37)。一方、ステップS32にて、R1が1より大きい場合(S32にてYes)、レジスタ等に保持している相関値を復号化データとして出力し(S38)、変数R1の値を1つ減じる(S39)。
【0052】
次に、ステップS40〜S47では、ステップS32〜S39と同様の処理をデータセットDS内の2番目のデータに対して行う。最後に、次に復号化すべき符号化データが無ければ復号化を終了し(S48にてYes)、有ればステップS32に戻る(S48にてNo)。
【0053】
〔変形例(相関値の省略)〕
符号化処理において、各補正データADに含まれる補正係数をそのまま符号化し、相関値を符号化していない場合、
図3の(b)に示した工程S21では復号化により補正係数が直接得られるため、工程S22での逆算処理は不要となる。この場合、工程S23では、工程S21でY補正係数およびX補正係数が生成される毎に補正データADを生成する。
【0054】
〔データ復元装置30の構成例〕
次に、
図1の(b)を参照しながら、
図3の(b)に示した工程S21〜S23を実行するデータ復元装置30の構成について説明する。
図1の(b)は、データ復元装置30の概略構成を示すブロック図である。同図に示すように、データ復元装置30は、復号化処理部(復号化手段)33、逆算部(データ生成手段の一部)35、およびデータ配列部(データ生成手段)37を備えている。
【0055】
復号化処理部33は、工程S21を実行するものである。つまり、復号化処理部33は、符号化データ列ESに含まれる符号化データを復号化して相関値を生成する。この復号化は、データ生成装置10の符号化処理部15が行う符号化に対応する復号化である。復号化処理部33は必ずしもデータ復元装置30が備える必要はなく、データ復元装置30と通信可能に接続された外部装置として備えられてもよい。
【0056】
また、復号化処理部33は、符号化データ列ESに連長コードが含まれている場合、復号化過程において、連長コードを含むデータセットDSから連続回数R個のデータセットDSのそれぞれについて、当該連長コードの要素の復号結果として連長コードが示す値Dを生成する。
【0057】
逆算部35は、工程S22を実行するものである。つまり、逆算部35は、復号化処理部33が生成した相関値から要素値を逆算する。
【0058】
データ配列部37は、工程S23を実行するものである。つまり、データ配列部37は、逆算部35が逆算した要素値を、N次元データ列に配列されたN次元データの配列順に、かつN次元データの各要素値の配列順に、N個単位に配列してN次元データ列(補正データ列AS)を生成する。言い換えれば、データ配列部37は、逆算部35が逆算した要素値を、配列の位置が同一の要素値を要素の並び順に並べて成るN次元データを、配列順に配列してN次元データ列(補正データ列AS)を生成する。
【0059】
なお、データ配列部37は、画像処理装置1が出力する映像を表示する表示装置の走査周期に同期して、生成した補正データADをアドレス生成部3に逐次出力するようにクロック速度等が調整されていることが好ましい。これにより、表示処理を遅延させることなく、リアルタイムに映像の歪みを補正することが可能となる。
【0060】
最後に、データ復元装置30は、相関値、要素値、およびこれらの生成過程で得た中間データを一時保持するためのメモリやレジスタ等の記憶部を備えていてもよい。
【0061】
〔回路構成例〕
次に、
図8を参照しながら、データ復元装置30を実現する回路構成例を説明する。
図8は、データ復元装置30を実現する回路構成例を示す模式図である。なお、前提として、1個の補正係数のデータ長は16ビットであるものとする。また、符号化データ列ESは、
図5に示した符号化フォーマットに従って符号化されたものとする。
【0062】
まず、記憶部(同図では例としてROM)に記憶された符号化データ列ESを、8ビットずつ読み取り、ReadDataBuffer51に保持する。ReadDataBuffer51の役割は、Temporary Buffer53に空きが生じないようにするために、次に読み込むデータを保持しておくことにある。
【0063】
Shift/Select部52は、Temporary Buffer53に保持されたデータを左シフトするとともに、16ビットを超える空きが生じた場合に、ReadDataBuffer51に保持されているデータを読み込む。シフト量は、後述するSelect部54がDecode部55に渡したデータのビット長である。Temporary Buffer53は、Shift/Select部52から得られる48ビット分のデータを保持する。Select部54では、Temporary Buffer53に保持されたデータの上位2〜3ビット(フォーマット識別情報)を参照し、符号化フォーマットがフォーマット0〜5のいずれであるかを判定する。そして、判定した符号化フォーマットに応じたビット長のデータをDecode部55に渡す。
【0064】
Decode部55では、符号化フォーマットに従って復号化を行い、復号化によって得られた相関値をレジスタ群56および57に格納する。なお、レジスタ群56は、Y補正係数を逆算可能な相関値を格納する。レジスタ群57は、X補正係数を逆算可能な相関値を格納する。なお、連長コードの復号化に必要な構成は図示を省略している。Adder58では、レジスタ群56に保持された相関値を加算演算することによってY補正係数(Y Address)を逆算する。同様に、Adder59では、レジスタ群57に保持された相関値を加算演算することによってX補正係数(X Address)を逆算する。
【0065】
なお、ReadDataBuffer51、Shift/Select部52、Temporary Buffer53、Select部54、およびDecode部55は、データ復元装置30の復号化処理部33の一部に相当する構成である。また、Adder58は、データ復元装置30の逆算部35の一部に相当する構成である。
【0066】
〔効果〕
(効果1)符号化データ列ESは、符号化データが1次元に連続した1つの圧縮データストリームであるため、メモリ等の記憶部における連続した記憶領域に記憶させることができる。そのため、アドレスの切り替え時にオーバーヘッドが発生する記憶部に符号化データ列ESを格納する場合であっても、符号化データ列ESの読み出し時に生じるオーバーヘッドを抑制でき、その結果として、読み出し遅延を低減することができる。なお、アドレスの切り替え時にオーバーヘッドが発生する記憶部とは、SPIのROMや、プリチャージを行うDRAMなどである。
【0067】
(効果2)符号化データ列ESは、符号化データが1次元に連続した1つの圧縮データストリームであるため、符号化データ列ESを記憶させるROM等の記憶部を飛び飛びに読み出すことがないので、帯域ロスを低減することができる。
【0068】
(効果3)符号化データ列ESを先頭から順に復号化すると、補正データADが配列順に次々と復号化される。さらに、補正係数の逆算処理は簡易な演算器で実現可能であるため、逆算処理がボトルネックになることはない。また、復号化処理、逆算処理、および配列処理は並列化が可能である。したがって、各補正データADを高速に復元することができる。
【0069】
(効果4)符号化データ列ESを先頭から順に復号化すると、復号化された相関値から補正係数が並列処理で順々に生成されるため、同期を取るためのバッファ等を設ける必要がない。よって、データ復元装置30の構成要素の削減が可能となる。また、補正データADが生成される毎に、生成された補正データADを外部に出力するようにすれば、生成された補正データADを保持するためのバッファ等を設ける必要もない。
【0070】
〔3次元データおよび4次元データの一例〕
本発明は、次元数および要素の種類にかかわらず、様々なN次元データに対して適用可能である。次元数に応じて上述した各処理を増減するだけで適用できるためである。例えば、画像データを構成する画素のR値、G値、およびB値の3つの要素値から成る3次元データを配列した3次元データ列に対しても本発明は適用可能である。具体的には、当該3次元データの各々に含まれるR値から得られる相関値を符号化した符号化データ、G値から得られる相関値を符号化した符号化データ、および、B値から得られる相関値を符号化した符号化データを、上述と同様のデータ生成手順により配列することによって、1次元の符号化データ列ESを生成することができる。そして、この符号化データ列ESから、上述と同様のデータ復元手順により、元の3次元データ列を復元することができる。また、画像データにアルファブレンディング処理を施す場合、各画素は、R値、G値、B値、および、透過情報用のα値の4つの要素値から成る4次元データとして表現される。この4次元データを配列した4次元データ列に対しても本発明は適用可能であり、R値、G値、およびB値から得られる符号化データに加えて、さらにα値から得られる相関値を符号化した符号化データを、上述と同様のデータ生成手順により配列することによって、1次元の符号化データ列ESを生成することができる。そして、この符号化データ列ESから、上述と同様のデータ復元手順により、元の4次元データ列を復元することができる。
【0071】
〔付記事項〕
データ生成装置10およびデータ復元装置30の各ブロックは、集積回路(ICチップ)等に形成された論理回路(ハードウェア)によって実現してもよいし、CPU(Central Processing Unit)を用いてソフトウェアによって実現してもよい。CPUを用いて実現する場合、データ生成装置10およびデータ復元装置30は、各機能を実現するソフトウェアであるプログラムの命令を実行するCPU、上記プログラムおよび各種データがコンピュータ(またはCPU)で読み取り可能に記録されたROMまたは記憶装置(これらを「記録媒体」と称する)、上記プログラムを展開するRAM(Random Access Memory)などを備えている。そして、コンピュータ(またはCPU)が上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体(通信ネットワークや放送波等)を介して上記コンピュータに供給されてもよい。なお、本発明は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
【0072】
本発明は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。