专利汇可以提供Device and method for picture compression专利检索,专利查询,专利分析的服务。并且PURPOSE:To realize the compression method and device for a still picture in compliance with the JPEG standards with a simple arithmetic operation. CONSTITUTION:Picture element data are converted by a horizontal direction conversion section (adder array) 110 and rotated vertically by a rotation RAM 112 and then converted by a vertical direction conversion section (adder array) 116 and finally outputted via a single multiplier 120.,下面是Device and method for picture compression专利的具体信息内容。
【0001】
【産業上の利用分野】本発明は、画像を圧縮するための装置及び方法に係り、特にJPEG(JointPhotograph
ic Experts Group)の静止画像圧縮標準に適合した、
静止画像の圧縮のための装置及び方法に関する。
【0002】
【従来の技術】メモリや伝送費用を節約するため高品質画像を圧縮しなければならない場合、通常のやり方は、
画像をその情報をよりコンパクトに表現可能な別の空間に変換することである。 この変換は普通、1ブロックずつ線形変換(マトリクス乗算)により行なわれる。 すなわち、典型的手法は、8画素の行セグメントに対し8ポイント変換を行ない、次に、この行変換後の画像の8エレメント列セグメントに対し8ポイント変換を行なう方法である。 等価的に、8×8のブロックに配列した64
画素の画素ブロックに対し、1回の64ポイント変換を行なうことができる。
【0003】一次元変換のための良い方法は、次の離散的チェビシェフ変換である。
【数1】
【0004】この変換にはいくつかの利点がある。 これには、a)この圧縮はいくつかの尺度に関しては、ほぼ最適であること、b)この変換及び逆変換を実行するための高速演算アルゴリズムがあること、c)引用文献[1]に述べられているある仮定をおけば、鮮明化(初期画像の品質向上)を変換空間内で容易におこなうことができること、がある。
【0005】
【発明が解決しようとする課題】本発明の一つの目的は、静止画像の圧縮装置及び方法を提供することである。 本発明の特に目的とするところは、JPEGの変換と適合した静止画像の圧縮のための装置及びその方法を提供するにある。
【0006】本発明の他の目的、利点及び新規な特徴は、以下の記述において一部示されるが、また一部は、
以下の説明から当業者にとって明らかになるであろうし、あるいは本発明の実施により学習できるであろう。
本発明の目的及び利点は、特許請求の範囲に示された手段とその組み合わせによって実現、達成できる。
【0007】
【課題を解決するための手段】本発明の画像圧縮装置は、あるビット幅を持つ入力画素を受け取り、加算器アレイ手段のみを使用して該入力画素を水平方向に変換するための水平方向変換手段、水平方向に変換された画素を垂直に回転させるための転換メモリ手段、垂直画素を受け取り、別の加算器アレイ手段のみを使用して該垂直画素を垂直方向に変換するための垂直方向変換手段、及び、変換された垂直画素を受け取り、該垂直画素に対し単一の乗算関数を実行して該入力画素を表わす圧縮された画素データを提供する単一乗算器手段を有することを特徴とする。
【0008】
【作用】本発明によれば、あるビット幅を持つ入力画素は、加算器アレイ手段のみを使用して水平方向に変換され、この変換後の画素は垂直に回転させられる。 そして、この回転後の垂直画素は、別の加算器アレイ手段のみを使用して垂直方向に変換され、変換後画素に単一の乗算関数を実行することにより入力画素を表わす圧縮データが生成される。 このように、演算コスト並びにハードコストが高い乗算を殆ど使用せず、ほぼ加算操作のみによって画像圧縮が可能である。
【0009】
【実施例】以下、本発明の原理及び具体例について、必要に応じ関連する従来技術と対比しつつ詳細に説明する。
【0010】 発明の理論的説明 画像の圧縮と再構築のための完全なシステムは次の(表1)のように示すことができる。
【表1】
【0011】上記(表1)は本発明を説明しており、またオプションのステップ(L,Z)を除き現行技術をも説明している。
【0012】鮮明化ウエートによる乗算(ステップE)
も復号のステップとして(例えばステップIの後に)行なうことができる。 この鮮明化は、入力装置のポイント拡散関数(point-spread function)の補正のために行なわれるもので、入力装置に応じて調整されなければならず、あるいは入力画像が画質向上済みのときは省略しなければならない。 他により優れた画像鮮明化方法があるが、ここで示した方法は計算コストが小さいので、ある種のアプリケーションに、例えばカラー・コピアにふさわしい。
【0013】フォワード変換(ステップA,B)の計算を、最終の乗算ステージが計算負荷の大部分となるようにアレンジすることができる。 これらの乗数とステップC,Eの乗数の積を予め計算することにより、圧縮プロセスの高速化が可能である。
【0014】同様に、逆変換(ステップJ,R)の計算を、その計算負荷の大部分が予備乗算ステージとなるようにアレンジすることができる。 これもまた、積を予め計算することにより、ステップH,Iの計算量を効果的に削減できる。
【0015】また、2−D DCT変換を他の変換で置き換えることにより、演算をさらに単純化できる。
【0016】さらに、ステップB,Dのための結合した乗数の演算、例えば2のべき乗を効率化するように、心理的適応ウエートを選択的に変化させることができる。
低エネルギー出力変換要素の心理的適応ウエートの小変化は、画像の品質または圧縮率に殆ど影響を及ぼさない。
【0017】最後に、(表1)のステップL,Z、すなわち画像の複雑さ(Difficulty)の類別のステップとブロック境界の平滑化のステップに注目する。 これらはオプションであって、また基本発明とは無関係であるので、ここでは最小限の説明しかしない。
【0018】 チェン(Chen)のアルゴリズム 1次元チェン・アルゴリズムは次のように規定する。
【数2】
【0019】ここで、xはデータベクトル、Xは変換後ベクトル、またA Nは次の通りである。 A N =c(k) cos((2j + 1) kπ/2N) j,k = 0,1,2,....,N-1
【0020】さらに、A Nは次のように展開できる。
【数3】
【0021】ここでR N/2は次の通りである。
【数4】 R N/2 = c(2k+1) cos((2j+1)(2k+1)π/2N j,k=0,1,2,....,N/2-1
【0022】注意すべきは、行列Zがチェンの行列Pであることである。 本発明で、このように表記を変更したのは、行列Pとの混乱を避けるためである。
【0023】 8ポイント(N=8)1Dチェン変換の例 8ポイント変換を1回行なうために、チェン・アルゴリズム(数3)が再帰的に2回用いられる。 最初の繰り返しでは行列Z 8 ,R 4 ,B 8が用いられる。 2回目の繰り返しでA 4について解き、そして行列Z 4 ,R 2 ,A 2 ,B
4を用いる。 これらの行列は、前記各式またはチェンの論文から容易に導くことができる。
【数5】
【0024】ここで
【数6】
【数7】
【数8】
【数9】
【数10】
【数11】
【数12】
【0025】ここで、(数4)から Cn = cos(nπ/16)
【0026】 チェン−ウー(修正)変換または パラメタライズされた(parameterized)変換 ここまで行なったことは全てチェン変換である。 これを強引に推し進め演算量を減らし、強力なDCTを実現することもできない訳ではないが、これは本出願人の提案するところではない。 乗算回数をできるだけ減らすために、各行列は次のように改めてパラメタライズ(repara
meterize)される。 これは本出願人の考案であって、チェン−ウー(修正)変換と呼ぶ。
【数13】
【数14】
【数15】
【0027】ここで
【数16】 a = C1/C7 = cos(π/16) / cos(7π/16) = tan(7π/16) b = C2/C6 = tan(6π/16) c = C3/C5 = tan(5π/16) r = C4 = cos(4π/16)
【0028】注意すべきは、対角行列RF 4はパラメタライズされない行列RA 4の正規化因数を含んでおり、また対角行列はR 2及びA2中の定数によって作ることができる。 A 8行列の再構成の際、二つの行列は依然として別個である。 対角行列は主行列からは分離されている。 主行列はB N項と乗算される。 適当に並べ変えかつ定数項と乗算すると、(数2)は次のように簡略化される。 X = Q(a,b,c) P(a,b,c,r) x
【0029】ここで
【数17】
【数18】
【0030】 一般化した変換 一般化した8ポイントDCT変換は、4個のパラメータa,b,c及びrによって決定され、次のように記述できる。 T(a,b,c,r)=P(a,b,c,r)×Q
(a,b,c) ここでP( ),Q( )は前記の通りである。
【0031】この画像変換は、そのような画像を垂直方向及び水平方向にそれぞれれ変換するための二つの変換T、すなわちT vとThを必要とする。 完全な2次元変換は、
【数19】
により表わされる。 【0032】ここで、fは入力画像ブロックであり、F
は出力変換係数であり、添え字”t”は行列転置を意味する。 ここで全行列は8×8である。
【0033】対角行列(Qのような行列)はそれ自体が転置行列であって、全行列について
【数20】
【0034】これは次のように変形される。 F(i,j)=q(i,j)*g(i,j) ここで
【数21】
【数22】
【0035】ひとつの画像ブロックを変換する時に、チェン-ウー(Chen-Wu)のアルゴリズムを用いて[g]について解を求め、次に因数q(i,j)と掛け合わせる必要がある。
【0036】仮に P v =P(a,b,c,r v ) P h =P(a,b,c,r h ) とすれば、上記変換の逆変換は次のように表わされる。
【数23】
【0037】ここで、 P' v =P(a,b,c,1/2r v ) P' h =P(a,b,c,1/2r h )
【0038】再度、チェン−ウーのアルゴリズムにより解が求められる。
【0039】 チェン(Chen)のアルゴリズム 1−Dまたは2−Dのチェビシェフ変換とその逆変換の計算を高速化するために、いくつかの方法が考案されている。 16回の掛け算と、13回の加算、13回の減算のみによって、任意の8タプル(tuple)と上記行列T
とを乗算する周知のアルゴリズム(チェン)[2,3]
がある。 このアルゴリズムは、パラメータa,b,c,
rの格別の特性に何等依存しない。
【0040】 チェン−ウー(Chen-Wu)のアルゴリズム(修正) [T]=[P][Q]を上述の如く因数分解することにより、チェン−ウーのアルゴリズムは二つのステージに分かれ、[Q]による乗算に8回の掛け算が用いられ、
[P]による乗算に8回の掛け算とそれ以外の算術演算が用いられる。 これは我々の[Q]の選択の結果であって、[P]のいくつかの要素は1または−1になり、ひとつの乗算がなくなる。
【0041】上に指摘したように、同様の単純化は、その逆変換、2−D変換及び2−D逆変換にも当てはまる。 8×8のブロックの場合、フォワード2−D変換とその逆変換のいずれについても、128回の乗算が用いられる([q]による乗算を除く)。 チェンのアルゴリズムの内部的なデータの流れを見ると、これらの乗算は、8つの加算/減算ステージと4つの乗算ステージの組み合わせに組み込まれる。 強調すべきは、チェンのアルゴリズムはパラメータa,b,c,rのいかんにかかわらず動作することである。 しかしながら、従来用いられた8ポイントDCTは“真(true)コサイン変換”のパラメータすなわち a=tangent(7*pi/16) b=tangent(6*pi/16) c=tangent(5*pi/16) r=sqrt(1/2)=0.70710678・・・ を持ち、行列Tが直交行列となるに必要十分なrを選んでいる。 なお、“sqrt”は“√”を意味する。
【0042】 パラメータ値の選択 チェン変換はパラメータa,b,c,rに選ばれた値に関係なく働く。 これは、QPによって生成された変換が対角行列であることによる。 任意の数値を用いることと、圧縮のために必要な画像データの望ましい非関連付け(decorrelation)を行なうことができる変換を得ることが、完全に可能である。 この変換が離散的コサイン変換(DCT)でもDCTの近似でもないことに注意すべきである。 全く別の変換である。
【0043】しかしながら、入力画像の効率的な非関連付けのために、及び比較的有意の空間周波数係数への変換のために、DCTが非常に望ましいことは一般に認められることである。 DCTの利点を活かすため、そのパラメータは(数16)で与えられたDCTパラメータに近い値に設定される。 障害になる要因は、演算の効率である。 加算は乗算より安価であるので(ハードウエアの面ではシリコンの面積の節約、ソフトウエアの面ではサイクル数の減少)、パラメータは演算が効率的となるように選ばれる。
【0044】 代替アルゴリズム 離散的チェビシェフ変換(DCT)のための計算法は他にも考案されている。 例えば、リー(Lee)によるアルゴリズムは、8ポイントの1D変換と64ポイントの2
D変換を、それぞれ12回の乗算と144回の乗算によって実行する。
【0045】しかし、これらの“高速(faster)”アルゴリズムは、チェンのアルゴリズムに比べ、いくつか欠点がある。 すなわち a) T=P×Qの単純化(逆変換の場合と同様の因数分解)はもはや有効でない。 対角行列Qの分離は、以後の単純化のために不可欠である。 b) これらのアルゴリズムは、任意のパラメータa,
b,c,rで役立つのではなく、真コサイン・パラメーータに特に有効な様々な三角恒等式に依存している。 c) これらのアルゴリズムは、構造がより複雑である。 これが具体化の妨げとなったり、数値が不安定になる危険を増加させることがある。
【0046】 発明の説明 A]再び(表1)を参照すると、ステップC,D,Eは[Q]から導かれたフォワード変換の後乗数(post-mul
tipliers)に組み込ことができることに気付くであろう。 同様に、ステップH,Iは逆変換の前乗数(pre-mu
ltipliers)に組み込みできる。 これは、レート・スカラー(rate scalar )演算、心理的適応ウエート操作(普通、正規化値として知られてる)、及び鮮明化ウエート操作は全てポイント乗算操作であるからである。
b,c,d,eがそれぞれステップB,C,D,Eの出力であるとすると、 c(i,j) = b(i,j) * q(i,j) d(i,j) = c(i,j) * r(i,j) = b(i,j) * q(i,j) * r(i,
j) e(i,j) = d(i,j) * u(i,j) = b(i,j) * q(i,k) * r(i,
j) * u(i,j) または e(i,k) = b(i,j) * all(i,j) である。
【0047】ここで、
【数24】
であり、q(i,j)はレート・スカラー(rate scalar)
であり、r(i,j)は心理的適応的に選ばれた(あるいは同様のユーザーにより選ばれた)量子化ウエートであり、u(i,j)は鮮明化ウエートである。 同様にステップH,Iを結合できる。
【0048】これは結局、レート・スケーリング(rate
scaling)、適応的重み付け、及び鮮明化の関数に余分な計算オーバーヘッドがないことを意味する。 上記のように、この方法はリー(Lee)のアルゴリズムのような”
高速”アルゴリズムと一緒に適用できない。
【0049】B]チェンのアルゴリズムは任意のパラメータa,b,c,rで働くので、DCTと同様の品質と圧縮を得られ、かつ高速乗算を達成できるパラメータ値を選ぶことができる。
【0050】下記のパラメータは、DCTのパラメータに十分に近いが、計算効率はより高い。 a=5.0 b=2.5 c=1.5 r=0.75
【0051】ここで乗算は非常に簡単な計算に置き換えられる。 例えば5を掛ける計算は、複写,2桁左シフト,加算となる。 1.5を掛ける計算は、複写,1桁右シフト,加算となる。 また、有理乗数の分子の逆数は結合した乗数[q]に因数分解できる。 ゆえに、2.5を掛ける計算は、影響される項と影響されない項のそれぞれに対し、5を掛ける計算と2を掛ける計算とにすることができる。
【0052】この後者の考え方を用いると、単純なチェン・アルゴリズムにおけるパラメータr=0.75を扱うには、4を掛ける計算を96回、3を掛ける計算を3
2回、必要とする。 2D改良方法にウー-パオリーニ(Wu-Paolini)を用いると、一つの乗算ステージ全体が省かれるので、これは16を掛ける計算が36回、1
2を掛ける計算が24回、9を掛ける計算が4回となる。 (逆変換には9を掛ける計算を36回、6を掛ける計算を24回、4を掛ける計算を4回、用いる。)
【0053】演算速度のために、コサイン変換に極めて近いパラメータ値を選ぶことができる。 b=12/5及び/またはr=17/24の代入が可能である。 もうひとつの興味ある選択は rRow=0.708333(17/24) rCol=0.7(7/10) である。
【0054】ここでは、少し異なった変換(異なったパラメータ)が行と列に用いられる。 これは、ウー-パオリーニ法より導かれる乗数を単純にするためになされる。 ここで、その方法は、15との掛け算を36回、8
5/8との掛け算を12回、21/2との掛け算を12
回、119/16との掛け算を4回、生じる。 (逆変換は、119/16との掛け算を36回、85/16の掛け算を12回、21/4との掛け算を12回、15/4
との掛け算を4回、使用する。 )
【0055】ここで説明したやり方によれば、すべての乗算が高速化され費用も減少した。 ただし、圧縮装置における結合乗数[q]と伸長装置における結合乗数[q]に関しては別である。 これらはそれぞれ、1変換要素あたり1回の乗算が必要である。 伸長装置の結合乗数[q]は、変換係数の大半がゼロとなり、また非ゼロの係数の多くが特別扱いが可能なゼロに非常に近い整数になる、という点において簡単化される。
【0056】C]さらに別の技法が、圧縮装置において結合乗数[q]の計算コスト削減のために用いられる。
レート・スケーラは、実際上任意値であるから、[q]
行列要素の全てに計算が簡単な値、例えば2のべき数を与えるように1ポイント毎に調整されることになる。 これらの64個の調整を一度だけ行なう必要がある(レート・スケーラと鮮明化フィルタの決定後)。
【0057】例えば、結合乗数の一要素(C)及び対応した伸長乗数要素(D)が C=0.002773 D=0.009367 となったとすると、近似値C〜=3/1024=0.0
02930が見出され、また乗算の簡単化のために用いられることになろう。 その結果はC'=3/1024、
D'=D×C/C'〜=0.008866となる。
【0058】 プロセス(主要プロセス)の詳細な説明 初めに一般的な注釈を示す。 a) 量子化された変換空間においては、”AC”係数量子化の非ゼロ・ステップを一定幅(w)とし、ゼロ・
ステップを幅(w*q)とすることが便利かつ効率的である。 さらに、q=2が計算上都合がよく、また広範囲の圧縮率にわたり品質面でほぼ最適である。 ここでの説明では、q=2(2倍幅ゼロ:double-width zero)とする。 ただし本発明はそれに限るものではない。 b) 以下説明するアルゴリズムは、低精度の2の補数の2進整数演算用にデザインされている。 ただし、ステップ2,4,8における中間決定については例外で、それは高精度演算で行なわれる。 さらに、ステップ(9.
1)も例外的で、ここで説明した整数乗算はコスト及びスピードに関して最適化される。 例えば Nrr*Nrc=Drr'*Drc'=1.75*4.25=7.4375 による掛け算を考える。 恒等式 7.4375=(8-1)*(1+1/1
6)を選ぶことにより、この乗算はシフトと加算により効率的に行なわれる。 c) 鮮明化乗算は、ここではステップ8に示されるが、できることなら通常はステップ4で行なうべきである。 多くのアプリケーションにおいて、伸長装置は、どのような方法で画像を鮮明化するのか、あるいは画像を鮮明化かするか否かの“知識”がない。 注意すべきは、
Thr()の最適値は入力装置及び鮮明化法によって変わることである。 推奨される一方法は、m(i,j)の値(ステップ8参照)が圧縮時(ステップ4)に計算され、圧縮画像の一部として伝送され、あるいは蓄積されることである。 d) 連続する計算の並列化、タイムシーケンスまたはインタリーブには、いくつか明白な方法がある。 あるハードウエア・アーキテクチャにとって好ましい方法は、
簡単な方法である。
【0059】 擬似コードの具体化例 本明細書のこの部分は、本質的に本発明の一実施例で、
これは文章及び擬似コードにより説明される。 パラメタライゼーション(parameterization)、前記(数24)
のall(i,j)の計算、フォワードGCTの主要部の計算、all(i,j)の逆数の計算、逆GCTの主要部の計算を含むいくつかのセクションがある。
【0060】ステップ1. パラメータa,b,c,rは以上に示されている。 注意することは、rの値は行及び列のそれぞれ毎にあることである。 2D GCTは、分離可能な変換であって二つのパスで実行されるが、それが対称的でなければらないという制約はない。 したがって、スケーリング係数は、ここで示すように非対称とすることができる。
【0061】分子N及び分母Dの式が示すものは、分子と分母の可能な組み合わせであり、これは前記の値と一致することがある。 GCTを実施しようとする設計者は、加算器アレイに用いられる実際値について自由度を持っている。 この値の選択は、最終乗算ステージで修正される。
【0062】上述の一般化チェン変換のパラメータとして次のものを選ぶ。 tan 7*pi/16 〜= a = Na/Da tan 6*pi/16 〜= b = Nb/Db tan 5*pi/16 〜= c = Nc/Dc sqrt(0.5) 〜=rRow= Nrr/Drr sqrt(0.5) 〜= rCol = Nrc/Drc 0.5/rRow 〜= rRow' = Nrr'/Drr' 0.5/rCol 〜= rCol' = Nrc'/Drc'
【0063】“分子”N及び“分母”Dは整数である必要はないが、演算に都合のよいように選ばれる。 有効な可能値には次のものがある。 Na= 5 Da=1 Nb=3 Db=1.25 Nc=1.5 Dc=1 Nrr=1.75 Drr=2.5 Nrc=4.25 Drc=6 Nrr'=1.25 Drr'=1.75 Nrc'=3 Drc'=4.25 しかし、本発明は上記タンジェント値の合理的な近似値をすべて包含する。 これによって、必要な正規化スケーラが計算される。
【0064】ステップ2. また U(0)=U(4)=sqrt(0.5) U(1)=U(7)=1/sqrt(Na*Na+Da*Da) U(2)=U(6)=1/sqrt(Nb*Nb+Db*Db) U(3)=U(5)=1/sqrt(Nc*Nc+Dc*Dc) を書く。
【0065】ステップ3. 次のように設定する。 i 垂直方向位置(画像空間内)または垂直方向変化(変換空間内)のシーケンスを示す{0,1,2,
3,4,5,6,7}のインデックスとする。 j 水平方向位置(画像空間内)または水平方向変化(変換空間内)のシーケンスを示す{0,1,2,
3,4,5,6,7}のインデックスとする。 Debl(i,j) 鮮明化係数を示すものとし、鮮明化を行なわない時はDebl()=1とする。 Thr(i,j) 例えばCCITTにより推奨されたような逆心理的適応ウェートを示すものとする。 M レート・スケーラを示すものとする。 ここで典型的な圧縮率に対してはM=1(近似)とする。 V(i,j) 画像(spatial)空間内のいくつかの輝度値を示すものとする。 L(i,j) 変換(圧縮)空間内の変換後輝度値を示すものとする。 S 再構築(reconstruction)に用いられる演算精度を示す任意の小整数とする。
【0066】心理的適応ウェート1/Thr(i,j)は、一般化チェン変換のパラメータの各セット毎に再度最適化されるべきである。 しかし、上記ステップ(1)で与えられたパラメータはCCITTのパラメータに十分近く、
同行列Thr()は最適である。
【0067】ステップ4. ここではg(i,j)は全(i,j)に対して等しい。 64個の変換位置(i,
j)について、次式を満足させるk(i,j)及びs
(i,j)の解を求める。
【数25】
ここで、右辺はg(i,j)にできる限り近づけ、s(i,j)は整数とする。【0068】また、 g(i,j) = 1.0 、k(i,j) は {1,3,5,7,9} ( i+j < 4 のとき) g(i,j) = 0.9、 k(i,j) は{1,3,5} ( i+j = 4 のとき) g(i,j) = 0.7、 k(i,j) = 1 ( i+j > 4 のとき) Zr(i) = 1 (i=0,1,2 or 3 の時) Zr(i) = Drr (i= 4,5,6 or 7 の時) Zc(j) = 1 (j= 0,1,2 or 3 の時) Zc(j) = Drc (j= 4,5,6 or 7 の時) Zr'(i)= 1 (i= 0,1,2 or 3 の時) Zr'(i)= Drr'(i= 4,5,6 or 7 の時) Zc'(j)= 1 (i= 0,1,2 or 3 の時) Zc'(j)= Drc'(j= 4,5,6 or 7 の時) 因数 g(i,j) は量子化バイアスを選択サイズから無関係にするためのものである。
【0069】ステップ5. フォワードGCTの実行 このステップはフォワード変換の擬似コード実行である。 以下の各ステップはインターリーブ方式により2D
変換を行なう。 画像全体にわたり、8×8の各ブロックの輝度値V( , )につき以下の処理の実行を繰り返す。 すなわち、
【0070】ステップ5.1 i=0,1,2,...,7 について次の値を準備する。 M(i,0)=V(i,0) + V(i,7) M(i,1)=V(i,1) + V(i,6) M(i,2)=V(i,2) + V(i,5) M(i,3)=V(i,3) + V(i,4) M(i,4)=V(i,3) - V(i,4) M5(i)=V(i,2) - V(i,5) M6(i)=V(i,1) - V(i,6) M(i,5)=M6(i) + M5(i) M(i,6)=M6(i) - M5(i) M(i,7)=V(i,0) - V(i,7)
【0071】ステップ5.2 j=0,1,2,...,7 について次の値を用意する。 H(0,j)=M(0,j) + M(7,j) H(1,j)=M(1,j) + M(6,j) H(2,j)=M(2,j) + M(5,j) H(3,j)=M(3,j) + M(4,j) H(4,j)=M(3,j) - M(4,j) H5(j)=M(2,j) - M(5,j) H6(j)=M(1,j) - M(6,j) H(5,j)=H6(j) + H5(j) H(6,j)=H6(j) - H5(j) H(7,j)=M(0,j) - M(7,j)
【0072】ステップ5.3 各H(i,j)に次の値を掛ける。 (i=0,2,3 or 4 の場合) Nrc (j= 5 or 6 のとき) Drc (j=4 or 7 のとき) 1 (何もせず) (j=0,1,2 or 3 のとき) (i=4 or 7 の場合) Drr Nrc (j=5 or 6 のとき) Drr Drc (j=4 or 7 のとき) Drr (j=0,1,1 or 3 のとき) (i=5 or 6 の場合) Nrr Nrc (j=5 or 6 のとき) Nrr Drc (j=4 or 7 のとき) Nrr (j=0,1,2 or 3 のとき)
【0073】ステップ5.4 j =0,1,2,...,7に対し次の値を用意する。 E(0,j)=H(0,j) + H(3,j) E(1,j)=H(7,j) + H(5,j) E(2,j)=H(0,j) - H(3,j) E(3,j)=H(7,j) - H(5,j) E(4,j)=H(1,j) + H(2,j) E(5,j)=H(6,j) - H(4,j) E(6,j)=H(1,j) - H(2,j) E(7,j)=H(6,j) + H(4,j) F(0,j)=E(4,j) + E(0,j) F(4,j)=E(0,j) - E(4,j) F(2,j)=Db * E(6,j) + Nb * E(2,j) F(6,j)=Db * E(2,j) - Nb * E(6,j) F(1,j)=Da * E(7,j) + Na * E(1,j) F(7,j)=Da * E(1,j) - Na * E(7,j) F(3,j)=Dc * E(5,j) + Nc * E(3,j) F(5,j)=Dc * E(3,j) - Nc * E(5,j)
【0074】ステップ5.5 i=0,1,2,...,7 について次の値を用意する。 Z(i,0)=F(i,0) + F(i,3) Z(i,2)=F(i,0) - F(i,3) Z(i,4)=F(i,1) + F(i,2) Z(i,6)=F(i,1) + F(i,2) Z(i,1)=F(i,7) + F(i,5) Z(i,3)=F(i,7) - F(i,5) Z(i,5)=F(i,6) - F(i,4) Z(i,7)=F(i,6) + F(i,4) G(i,0)=Z(i,4) + Z(i,0) G(i,4)=Z(i,0) - Z(i,4) G(i,2)=Db * Z(i,6) + Nb * Z(i,2) G(i,6)=Db * Z(i,2) - Nb * Z(i,6) G(i,1)=Da * Z(i,7) + Na * Z(i,1) G(i,7)=Da * Z(i,1) - Na * Z(i,7) G(i,3)=Dc * Z(i,5) + Nc * Z(i,3) G(i,5)=Dc * Z(i,3) - Nc * Z(i,5)
【0075】また、この変換は二つの1次元変換のステージに分けることができる。 次のものは、1次元変換パスの一例である。 図8は、これらのステップを示す。 A1 = X0 + X7 B1 = A1 - A2 C1 = 1.25 B1 A2 = X3 + X4 B2 = A1 + A2 C2 = 3 B1 A3 = X2 + X5 B3 = A3 + A4 C3 = 1.25 B4 A4 = X1 + X6 B4 = A4 - A3 C4 = 3 B4 A5 = X0 - X7 B5 = A6 + A7 C5 = 1.5 A5 A6 = X1 - X6 B6 = A6 - A7 C6 = 1.0625 B5 A7 = X2 - X5 C7 = 1.0625 B6 A8 = X3 - X4 C8 = 1.5 A8 D1 = C5 + C6 E1 = 2.5 D1 Y0 = B2 + B3 D2 = C5 - C6 E2 = 1.25 D2 Y1 = E1 + (0.5 D3) D3 = C7 + C8 E3 = 2.5 D3 Y2 = C2 + C4 D4 = C7 - C8 E4 = 1.5 D4 Y3 = E2 + D4 Y4 = B2 - B3 Y5 = D2 - E3 Y6 = C1 - C4 Y7 = (0.5 D1) - E4
【0076】なお、これら式の乗算はシフト操作と加算操作で実行される。 これをGCTの行列形式に関連させるため、ベクトル・ポイントY6を一例として説明する。
【数26】
【0077】ここで b=2.4である。 これは式中の行列P
の第6行である。 注意すべきは、1.25による除算は、レート・スケーラ行列に集められるスケーリング係数である。 8×8画素ブロックの行データは、この加算器アレイを通される。 結果として得られる1次元周波数成分は、転送され同じアレイに再度通される。
【0078】ステップ6. ステップ(5.5)の後で、
各画像サブブロックにおいて64個の位置(i,j)のそれぞれについて、ステップ4より得られた k(i,j)とs(i,
j)を用い、次の値を用意する。
【数27】
しかし、この値が負になったときは(すなわちi=j=
0)、それに1を加える。 その結果が変換係数L(i,j)
である。
【0079】ステップ6に関するコメント:ここでの計算は簡単である。 なぜなら、K(i,j)は常に1,3,5,
7または9であって、普通は1であるからである。 また、2の−s(i,j)乗の乗算は単に右シフトであるからである(あるいは、Mが非常に大きな値に選ばれた場合には左シフトとなることもある)。
【0080】算術右シフトは常に下向きの丸めとなる。
ゼロに向かう丸めが実際に好ましい。 ゆえに、前記のように“負のときは1を加える”ということになる。 i=j=
0 のときに1を加えるのは、V(i,j)>=0 のためであり、
また後記のステップ(9.1)の記述を単純化するための工夫にすぎない。
【0081】ステップ7. 値 L(i,j)を符合化し、蓄積及び/または伝送を行なう。 結局は、後続のステップによって、この値は検索されて画像が再構築されることになる。
【0082】ステップ8. このステップは全(i,j)
に関する逆バージョンである。 64個の変換位置(i,j)
につき、m(i,j) を次の値に最も近い整数として求める。
【数28】
ここで、s(i,j)とK(i,j) は上記ステップ(4)で解かれ、“z”はステツプ(4)で定義される。【0083】また、A(i,j) を次の値に最も近い整数として選ぶ。
【数29】
( i = 0 または j = 0 の場合) 【0084】ステップ8についてのコメント:値m(i,j)
はステップ(4)で予め計算し圧縮画像と一緒に伝送しておいてもよい。 これは、定数及びm(i,j) のみに依存するA(i,j)に関しては必要ない。 レート・スケーラ及び鮮明化ウェートが固定されるアプリケーションにおいては、値 m(i,j),A(i,j) は一定となるであろう。 因数2Sは精度以上の余分なビットをもたらすが、このビットは最終的にはステップ(9.2)及びステップ(1
0)での算術右シフトによって除かれることになる。 A
(0,0)の調整により、丸めバイアスを修正し下記出力を丸め修正なしに利用できるようにする。 ここで仮定した如く、A(0,0)はステップ(6)で L(0,0) へ1が加算されることを前提としている。 挿入項”(25−i−
j)/64”はヒューリスティックであるが、平均二乗誤差の点でほぼ最適である。もう一度、20インターリーブ・バージョン(20 interleaved vwersion)
【0085】ステップ9. 変換後画像に対し、上記ステップ(5)で導かれた8×8の各ブロックの変換後輝度値 L(_ ,_ ) に以下のことを繰り返す。
【0086】ステップ9.1 各(i,j) に対し、つぎの値を用意する。 E(i,j) = L(i,j) * m(i,j) + A(i,j) ( L(i,j) > 0 のとき) E(i,j ) = L(i,j) * m(i,j) - A(i,j) ( L(i,j) < 0 のとき) E(i,j) = 0 ( L(i,j) = 0 のとき) ただし、 i=0,1,2,...,7、 j=0,1,2,...,7である。 A(0,
0) は常に加えられなければならない。 本発明は、L(0,
0)>0 の判定が成立せず、また上記ステップ(6,8)
(オプション)が簡略化される場合も包含する。 実際上、小さな乗算、例えば -11 < L(i,j) < 11 は乗算の演算費用を減らすための特殊ケースと理解すべきである。
【0087】ステップ9.2 (半導体装置のコスト削減に都合がよければ、E(i,j)
の数値を任意桁数S1だけ右シフトする。 ただし、これらのシフトは、本方法のある具体例では”自由”(fre
e)である。 このシフトが自由でない具体例では、E(i,
j)=0 の時に、そのシフトを省略してよい。 あるいは、S
1=0に設定することにより、全てのシフトを省いてよい。
【0088】ステップ9.3 再度、2次元形式でj=0,1,2,...,7 について次の値を用意する。 F(0,j) = E(4,j) + E(0,j) F(4,j) = E(0,j) - E(4,j) F(2,j) = Db * E(6,j) + Nb * E(2,j) F(6,j) = Db * E(2,j) - Nb * E(6,j) F(1,j) = Da * E(7,j) + Na * E(1,j) F(7,j) = Da * E(1,j) - Na * E(7,j) F(3,j) = Dc * E(5,j) + Nc * E(3,j) F(5,j) = Dc * E(3,j) - Nc * E(5,j) H(0,j) = F(0,j) + F(2,j) H(1,j) = F(4,j) + F(6,j) H(2,j) = F(4,j) - F(6,j) H(3,j) = F(0,j) - F(2,j) H(4,j) = F(7,j) - F(5,j) H5(j) = F(7,j) + F(5,j) H6(j) = F(1,j) - F(3,j) H(5,j) = H6(j) + H5(j) H(7,j) = F(1,j) + F(3,j)
【0089】ステップ9.4 i=0,1,2,...,7 につき、次の値を用意する。 G(i,0) = H(i,4) + H(i,0) G(i,4) = H(i,0) - H(i,4) G(i,2) = Db * H(i,6) + Nb * H(i,2) G(i,6) = Db * H(i,2) - Nb * H(i,6) G(i,1) = Da * H(i,7) + Na * H(i,1) G(i,7) = Da * H(i,1) - Na * H(i,7) G(i,3) = Dc * H(i,5) + Nc * H(i,3) G(i,5) = Dc * H(i,3) - Nc * H(i,5) M(i,0) = G(i,o) + G(i,2) M(i,1) = G(i,4) + G(i,6) M(i,2) = G(i,4) - G(i,6) M(i,3) = G(i,0) - G(i,2) M(i,4) = G(i,7) - G(i,5) M5(i) = G(i,7) + G(i,5) M6(i) = G(i,1) - G(i,3) M(i,5) = M6(i) - M5(i) M(i,6) = M6(i) + M5(i) M(i,7) = G(i,1) + G(i,3)
【0090】ステップ9.5 各M(i,j)に次の値を掛ける。 (i=0,2,3 or 4 の場合) Nrc' ( j= 5 or 6 のとき) Drc' ( j=4 or 7 のとき) 1 (何もせず) ( j=0,1,2 or 4 のとき) (i=4 or 7 の場合) Drr' Nrc' ( j=5 or 6 のとき) Drr' Drc' ( j=4 or 7 のとき) Drr' ( j=0,1,2 or 3 のとき) (i=5 or 6 の場合) Nrr' Nrc' ( j=5 or 6 のとき) Nrr' Drc' ( j=4 or 7 のとき) Nrr' ( j=0,1,2 or 3 のとき)
【0091】ステップ9.6 i=0,1,2,...,7 につき、次の値を用意する。 Z(i,0) = M(i,0) + M(i,7) Z(i,1) = M(i,1) + M(i,6) Z(i,2) = M(i,2) + M(i,5) Z(i,3) = M(i,3) + M(i,4) Z(i,4) = M(i,3) - M(i,4) Z(i,5) = M(i,2) - M(i,5) Z(i,6) = M(i,1) - M(i,6) z(i,7) = M(i,0) - M(i,7)
【0092】ステップ9.7 j=0,1,2,...,7 につき、次の値を用意する。 Y(0,j) = Z(0,j) + Z(7,j) Y(1,j) = Z(1,j) + Z(6,j) Y(2,j) = Z(2,j) + Z(5,j) Y(3,j) = Z(3,j) + Z(4,j) Y(4,j) = Z(3,j) - Z(4,j) Y(5,j) = Z(2,j) - Z(5,j) Y(6,j) = Z(1,j) - Z(6,j) Y(7,j) = Z(0,j) - Z(7,j)
【0093】ステップ10. ステップ(9.7)の後、
各画像サブブロックにおいて64個の位置(i,j)それぞれに対し、次の値を用意する。
【数30】
ここで、SとS1は、上記ステップ(7)及びステップ(9.2)において定義された任意の整数である。 再び、この乗算は実際的には右シフトである。 【0094】ステップ11. 具体的なシステム構成によっては、ここで範囲チェックが必要になることがある。
例えば、輝度の許容範囲が 0<=V(i,j) <=255 の場合、
0未満及び255より大きなV(i,j) 値は0及び255
にそれぞれ置き換えなければならない。 V(i,j) 値は、
ここで再構築された画像の輝度値である。
【0095】 二次的プロセスの説明 圧縮率または画像品質を向上するために、主要(一次的)プロセスに付加的手段を追加するのが普通である。
【0096】ステップ(10)の後で、全ての画素ペア
V(8I+7,j), V(8I+8,j) と全ての画素ペア V(i,8J+
7), V(i,8J+8) (すなわち、別の画像ブロックに分離された近傍画素)について繰り返し、またそれぞれに、その値を例えば(V2-V1) /max (2,11 sqrt(M)) ずつインクリメント及びデクリメントすることにより、画像の正確さを向上できる。 ここで、Mはステップ(4)で用いたレート・スケーラであり、また分母の式は最適値の便宜的近似にすぎない。
【0097】ステップ(6)の実施前に、局所的画像領域の内容の複雑さを3タイプすなわち単精度、2倍精度及び4倍精度のいずれかに選択的に分類し、それぞれ'
0','10','11'のコード前書き(preface)
を出力することができる。 そうすれば、ステップ(6)
の計算は次式で置き換えられる。
【数31】
【0098】ここで、単精度、2倍精度、4倍精度のそれぞれに対しPは0、1、2となる。 これは後にステップ(9.2)において補正される。 このステップ(9.
2)では、精度の増加分を(余分の)右シフトにより除去しなければならない。
【0099】残念なことに、非常に効果的で簡単な分類方法は見つかっていない。 そこで現時では次の4つのソースから複雑さの尺度Pを導き出す面倒な方法を用いる。 a) P_left とP_up 近傍画像領域の複雑さの尺度 b) sum((i+j)G(i,j)'2) /sum(G(i,j)'2)変換エネルギー・スキュー c) -G(0,0) 平均輝度の逆数 d) max(sum_over_fixed_width(ヒストグラム(V(i,
j)))) 均一性
【0100】ステップ(7)において、蓄積または伝送すべき変換データ L(,) は、エントロピー符号化法を用いさらに減らすことができる。 発明者らは、ビット・
レートに応じたいくつかの既定のハフマン・テーブルを用いるCCITTのジクザグ・ラン・テンプレート・コード(zigzag-run-and-template-code)の改良法を使用し、またこれを推奨する。 明確にするため、その例を以下に説明する。
【0101】 圧縮ファイル・フォーマットの例 圧縮された画像は 1)前書き(画像の幅,高さ,レート・スケーラM等) 2)画素ブロック 0 画素ブロック 1 画素ブロック 2 . . . 画素ブロック N−1 3)後書き(もし置くのであれば) により表現される。
【0102】ここで、各画素ブロックは 1)精度コード(オプションのステップZで決定される) 2)DC係数デルタ・コード 3)AC係数コード(0回以上繰り返される) 4)EOB(End-of-Block)コード により表現される。
【0103】ここで各AC係数コードは 1)9−0拡張(E回繰り返し,E 0) 2)(R,T)を示すラン−テンプレート・コード 3)係数値の符号(1ビット) 4)MSBを除去した係数の絶対値(Tビット) により示される。 ここで、R+9*E は、”ジクザグ”順(和i+jに基づいた順序)に先行する値が0の係数の個数である。 またTは、係数の絶対値の最上位ビット(MSB)
のビット位置であり、例えば 係数が11または−11 ビット位置:876543210 11=000001011 (二進数) -- 最上位ビット の時はT=3である。
【0104】DC係数デルタの選択あるいは符号化については詳述しないが、高ビット・レートでACラン・テンプレート・コードに有用なハフマン・コードの例を示す。 コード R T 0xx 0 w 100x 0 4+w 111110 0 6 1111110{0} 0 7+n 1010 1 0 10110 1 1 10111 2 0 1100xx 1+w max(0,2-w) 11010{0}1xx 1+w n+1+max(0,2-w) 11011xx 5+w 0 111100{0}>1xx 1+w n-1+max(0,2-w) 11011xx 5+w 0 111100{0}>1xx %+w 1+n 1111111 = 予約 111101 = 9−0拡張 1110 = EOBコード ここで、{0} は n個の連続した0 (n=0,1,2,3,...) xx は w=0,1,2 or 3 として解釈された2ビット x は w=0 or 1 として解釈された1ビット を示す。
【0105】 128ポイント変換と256ポイント変換 以上の方法は、より大きな8×16または16×16の一般化チェン変換で使用可能である。 チェン変換をさらに一般化するための方法は、1D−16ポイントGCT
が(行が”蝶状”(butterfly order)で、正規化のための後乗数が必要ないとして)
【数32】
により与えられることに注目した上で明らかにされるべきである。【0106】ここで
【数33】
【数34】
【0107】ここで、”真コサイン”パラメータは e = tangent 15pi/32〜= 10.1532 a = tangent 14pi/32〜= 5.0273 f = tangent 13pi/32〜= 3.2966 b = tangent 12pi/32〜= 2.4142 g = tangent 11pi/32〜= 1.8709 c = tangent 10pi/32〜= 1.4966 h = tangent 9pi/32〜= 1.2185 r = cosine 8pi/32〜= 0.7071 t = cosine 12pi/32〜= 0.3827 s = cosine 4pi/32 = t*b である。
【0108】発明者が使用するパラメータは e = 10 a = 5 f = 3.25 b = 2.4 g = 1.875 c = 1.5 h = 1.25 r = 17/240.708333 t = 5/13〜= 0.384615 s = t*b = 12/13 である。
【0109】GQ8(e,f,g,h,r,s,t) の逆行列は、GQ8(e,
f,g,h,1/2r,t',b,t') の転置行列である。 ここで、 b = s/tt' = 1/(t+t*b*b) である。
【0110】 行列の例 行列TPの転置行列 コサイン変換(a=5.02734 b=2.41421 c=1.49661 r=0.70
711) :
【数35】
【0111】関連したチェン変換(a=5.0 b=2.4 c=1.5
r=0.7):
【数36】
【0112】 装置の説明 さて、本発明を詳細に説明したが、ここで本発明の態様を実施する装置について説明する。 以下の説明中で、”
ポイント”(point)はスケーラ・レジスタあるいは任意精度(通常8から12ビット)のデータ・パスを示すために用いる。適当な精度を決める方法は知られている。
ソフトウエア方法において、変換ステージは結合され、
またウー−パオリーニ(Wu-Paolini)の改良方法が採用された。 半導体装置の場合、単純に二つの8ポイント変換ユニットすなわち、垂直方向と水平方向のためにそれぞれ1ユニットずつ用意すると好都合である。 垂直方向変換と水平方向変換の間に64ポイントのシフトアレイを設ける必要があり、また同様のバッファリングを変換セクションと符号化セクションとの間で行なう必要がある。
【0113】本発明は、圧縮及び伸長のための一つのモノクロ装置及び/または別々の複数の装置を包含するが、好ましい実施例は3色データに対して動作する圧縮装置(図1の(a))と伸長装置(図1の(b))の両方を含む。 データは8画素のベクトルの形で圧縮装置に入力して、辞書編集上の順番に64画素のブロックに配列される。 ブロックの処理はパイプライン処理による(図2(b))。
【0114】圧縮装置への1個の画素の入力は、”R”
(赤),”G”(緑),”B”(青)のスケーラ(scale
r) からなる。 これらは直ちに輝度−色差空間に変換される。 (かかる変換を行なう理由は周知である。)この変換は任意の固定した、またはプログラマブルの係数を使用可能であり(図3の(a))、または用途によっては単純な値に“ハードワイヤド(hard-wired)”することも可能である(図3の(b))。 変換空間はここではX
YZとして示されるが、どのような線形形式の3色入力を用いてよく、これはおそらくCCITT標準(Y,R
−Y,B−Y)ということになろう。 そして三つの値X,Y,Zは、実際的には、それぞれ別々のモノクロ圧縮装置に送られる。 伸長装置は、XYZベクトルがRG
Bベクトルに変換されることを除けば、図3と同一または同様の回路を用いる。
【0115】X,Y,Zの値は次に3つのシフトレジスタ(図5)に入力し、第1変換ユニットへの転送を待つ。 この変換ユニットは2.6画素時間で動作するので、データの一部は図示の如く遅延させなければならない。 ”XYZ”の表記は多少不適当で、最適化された符号化方法では輝度(”Y”)が最初に処理される必要がある。 伸長中は、XYZのスキュー問題は逆になる。 注目すべきは、好ましい実施例において、伸長中にY−レジスタとZ−レジスタの利用を逆にすることによって、
5ポイント分のレジスタが節約される。
【0116】図1(a)を参照すると、圧縮装置の主要部は入力をXYZ空間へ変換し、それを次に変換ユニット3へ転送するためにバッファする入力セクション(3
ポイント変換セクション1、シフトレジスタ2)を含む。 各8画素時間に、変換1ユニットは3回の周期的動作をしなければならない(X,Y,Zのそれぞれにつき1回ずつ)。 この変換1ユニットの出力はシフトアレイ4に入力し、そこで8×8画素ブロックが完全に読み込まれるまで保持される。 変換2ユニット5,6は予め読み込まれた画素ブロックに対して動作し、これもまた各8画素時間に3回、周期的動作をして、符合器入力バッファ7,8ヘデータを与える。 符合器9,10,11は三つの色座標に共用されるが、一つの輝度ブロック全体が中断なく符合化され、それに続けて色差ブロックが1
ブロックずつ符合化される。 これらの3つのブロックの処理を64画素時間内に完了できない場合、タイミング・コントロール論理が外部の入力回路に対する画素クロックを停止させる。
【0117】記憶エリア(入力シフトレジスタ2,シフトアレイ4,符合器入力バッファ7,8)は、3色用に三重化しなければならないが、計算ユニット3,5,
6,9,10,11はYデータ,Xデータ,Zデータで共用(時間多重化)される。
【0118】符合器9,10,11、符合器入力バッファ7,8、符合プログラミング12,13,14及びタイミング・コントロール論理(図示されていない)は、
在来技術によってよい。 同様に、3色を単一回路に時間多重化する方法は周知である。 3ポイント変換セクション1(図3)及びシフトレジスタ2(図5)もまた知られている。
【0119】スケーラ(scaler)6は、プログラムされたRAMまたはROMと、(当然存在するところの)シフト回路、マルチプレクサ及び加算器からなるシステムを用いる。 これは簡単に実現できる。 一般化チェン変換と適切なパラメータが与えられれば、8ポイント変換器(図8(a),図8(b))も簡単である。
【0120】シフトアレイ(図6(a))は特に説明する価値がある。 現入力画素ブロックからの垂直(変換後)ベクトルは、先行の画素ブロックからの水平ベクトルが水平方向変換器へ送られる間に組み立てられる。 特別な設計をしないと、このような処理は、128個のレジスタ(現ブロックと先行ブロックのそれぞれ毎に64
個)が必要である。 これは、ポイントが受信された順序と異なる順序で用いられるからである。 しかし、偶数番画素ブロックの期間にデータを左から右へシフトし、また奇数番画素ブロックの期間にデータをトップからボトムへシフトすることにより、そのようにする必要はなくなる。 説明したシフトアレイは双方向のものである。 実施例によっては、4方向シフトアレイが好ましい。
【0121】図6(b)は、図6(a)のシフトアレイの様態をより詳しく示す。 図6(b)において、ベクトルはシフトレジスタのボトムより一つ一つ取り出され、
図1(a)のDCT8セクションへ送られる。 この期間に、他のDCB8セクションから出力された垂直ベクトルがシフトアレイへトップより入力される。 徐々に古いベクトルはシフトアレイから出され、そして、このシフトアレイは次の画素ブロックからの垂直ベクトルによって満たされる。
【0122】次の画素ブロックについては、データの流れる向きが前画素ブロックのデータの流れる向きから9
0度変わる。 そのようにして、水平ベクトルはシフトアレイの右側より取り出されてDCT8セクションへ送られ、新しい垂直ベクトルがシフトアレイに左側より入力する。 ブロック N+1 まで進むと、さらに90度回転することにより最初の形に戻る。 以下同様である。
【0123】伸長装置(図1(b))は、データの流れる向きが逆であることを除き、圧縮装置(図1(a))
と非常に類似した構成である。 好ましい実施例では、単一の装置が二つのモードで、すなわち圧縮装置または伸長装置のいずれかとして動作する。
【0124】可能なVLSIのレイアウト(図4の(a),(b))によれば、圧縮の場合(図4の(c−
a),(c−b))と、伸長の場合(図4の(d−
a),(d−b))とでデータの流れる向きが異なる。
注意すべきは、変換及びシフトアレイのユニットは、一方のレイアイト(図4の(b))では圧縮と伸長の両方に同じ方向性を有するが、他方のレイアイト(図4の(a))ではそうでないことである。 これは、結合した圧縮装置/伸長装置データフロー(図7)を考えた時に、より明確になる。 二つの変換ユニットを、RGBデータ及び圧縮データのそれぞれに関与させた場合(図4
の(a))、4方向シフトアレイを用いない限りレイアイトが困難となる。 故に、シフトアレイの入力セクション及び出力セクションを用いて、二つの変換ユニットとやり取りする(図4の(b))。
【0125】一実施例において、圧縮装置(図8
(a))に用いられた変換ユニットは、38個の加算器を使用する。 1桁右シフト(”R1”)、2桁右シフト(”R2”)または4桁右シフト(”R4”)、あるいは1桁左シフト(”L1”)は容易になされる。 図示回路はパラメータ(a,b,c,r)=(5,2.4,1.5,17/24) を用いる。 別の実施例(図8(b))において、b=2.5 として実現するには加算器は36個だけで足りる。
【0126】伸長装置においては、逆変換ユニットのための関連回路が必要である。 ”出力イネーブル”信号の使い方に注意すれば、フォワード変換器内の加算器の大部分を再使用可能であり、それを具体化することは当業者であれば簡単である。
【0127】スケーラは、プログラムされたRAMまたはROMと、当然存在するシフティング回路、マルチプレクサ及び加算器のシステムを用いる。 その実現は容易である。
【0128】デスケーラ(descaler)は様々に具体化できるが、好ましくはRAM、アキュムレータ、タイミング・コントロール論理及び小さなタイムプレート・カットオフ(timeplate cutoff) を備えた小規模の布線論理乗算器である。 専用の低コストのアプリケーションでは、デスケーラは、鮮明化ウエートが広い範囲にわたりほぼ最適であることに注目することにより、簡略化でき、したがってスケーラにおけるように単純なスケーリング(scaling) を利用できる。 デスケーラは、図1と図7に示すように、符合器とその出力バッファとの間、あるいは、その出力バッファと変換器との間のいずれに置くこともできる。
【0129】符合器入力バッファは、様々に具体化できるが、例えばシフトアレイと類似のサイクル−シェアリング(cycle-sharing) によるレジスタ削減構成も可能である。 より単純な設計では、384×10ビットRAM
を、RAMアドレスを与えるための64×7ビットRO
Mとともに使用する。
【0130】ここで、図1(a)と図1(b)を参照し、1サイクル動作の例を説明する。 図1(a)において、データは3色情報すなわち赤、緑、青として圧縮装置に入力する。 このデータは直ちに、XYZと呼ぶ代替空間へ変換される。 X,Y,Zの3要素は、それぞれのシフトレジスタに入る。
【0131】このシフトレジスタから、データは8ポイントDCTユニットに送られる(ステップ2)。 X,
Y,Zの3色に多重化される一つの8ポイントDCTユニットが設けられることもあるし、各色毎にDCT8−
ユニットが設けられることもある。
【0132】情報は次に64ポイント・シフトアレイ4
に入力する。 各色別々のシフトアレイが存在する。 このシフトアレイ(ブロック4)から、情報はブロック3と同様のもう一つのDCTユニット(ブロック5)へ送られる。 この情報は次にスケーリングを行なわれなければならないが、これは加算シフトを余分に重ねることである。
【0133】情報は水平方向及び垂直方向の両方に変換されるだけである。 シフトアレイは実は概念上データを90度回転させるものであり、その結果、情報を他の方向へ変換可能である。 データは、スケーリングされた後、データ保持のための別のバッファ、すなわち図示のブロック7,8(Z1,Z2)へ入力し、その結果、データは最終的に符合化されてチップから出力される(Z
1,Z2はジグザクである)。
【0134】概念上、これは、データが90度回転されないことを除けば、シフトアレイすなわちブロック4と同様である。 その代わり、それはジグザク順に変換されるが、これは従来このような事に用いられてきており、
またCCITT標準に採用されている。 情報は次にラン・テンプレート(run and template)コントロールユニットのブロック9へ送られ、このユニットはゼロを検出してゼロのランを生成し、また非ゼロと値の対数の概算値(テンプレートと呼ばれる)を検出する。 このランとテンプレートの組(RTコードと呼ばれる)はRAMまたはROM内で検索され、次にチップより出力される。
【0135】仮数、すなわち変換係数の有効ビットもチップから出力される。 仮数とラン・テンプレート・コードは1ビット、2ビット等々の任意の長さであるが、チップの出力は常に16ビットあるいは8ビット、32ビット等々の同一ビット数であるので、ブロック11(整列)は簡単になる。
【0136】図1(a)に示す他のブロック(オプション)はプログラミング・ブロック12,13,14であり、これらはそれぞれに任意のRGB−XYZ変換、任意のレート・スケーラ及び心理的適応ウエート、ラン・
テンプレート用の任意のモデファイド・ハフマンコードを設定可能である。
【0137】図1(b)は、図1(a)と非常に似ている。 ラン・テンプレート・コードは、ランとテンプレートの組に復号されなければならず、また必要個数のゼロが省かれなければならない。
【0138】図1(a)において、スケーラは単なる加算器とシフター(shifter)のアレイである。 図1
(b)において、デスケーラはハードウエアにより非常に小さな乗算として実現されている。
【0139】図9は本発明による2次元の一般化チェン変換の説明図を示す。 画素は、トップから入力するが、
典型的には8ビット幅である。 この画素は、典型的には128ビットのデータ幅を持つ水平方向変換部110内の広い加算器アレイを通る。 水平方向変換部110の出力は、水平から垂直への情報回転のための転換RAM1
12を通過する。 次に、データは、これも加算器のみからなる垂直方向変換部116(典型的には128ビット幅)に入る。 その出力係数は最終的に約16ビット幅に縮小され、単一の乗算器120を通過するが、これは本発明によりJPEG互換である。
【0140】図10は、本発明によるVLSI装置のためのブロック図を示す。 図10において、データは構成部40より入力し入力ラッチ42にラッチされ、マルチプレクサ44を通ってGCT変換の前半部(first hal
f。 加算器ネットワークである)50に入る。 この加算器ネットワークの後半部(second half)60は中段ラッチ54の右側にある。 その出力はMUX62を通って転換RAM66に達し、ここで水平から垂直への変換がなされる。
【0141】タイムシェアリングまたはタイムスライス方式による垂直方向変換の前半部(first half)を構成するために、転換RAM66の出力はGCTの第1ステージ50にフィードバックされる。 GCT50の出力は垂直方向変換の第2ステージ60の入力に送られる。 最終的に、GCT60の出力は出力ラッチマルチプレクサ70を通過させられ、乗算器74及び丸め器(rounde
r)76を通ってジクザグ順アレンジャ(arranger)8
0に達する。 このアレンジャ80の出力は12ビットの係数84として出力される。
【0142】図10を再び参照して、本発明による逆変換プロセスについて以下に簡略に説明する。 図10において、12ビット係数はブロック84を介しジグザグ順アレンジャ80のY入力に入力される。 このジグザグ順アレンジャ80の出力は、フォワードプロセスで行なわれたと同様の逆量子化プロセスを行なう乗算器74及び丸め器76を通る。 乗算器74の出力は逆変換プロセスの第1ステージであるラッチ42へ入力される。
【0143】逆変換プロセスは、ラッチ42から、フォワード変換が辿ったと同じ2ステージ時間多重パスを辿る。 出力は出力ラッチ70に出るが、同ラッチの出力が丸め器76によって丸められる画素であって、丸め器7
6の出力はブロック40へ送られ、出力される。
【0144】本発明の好ましい実施例に関する以上の記述は、説明を目的としてなされたものであって、本発明を開示した態様そのものに限定することを意図するものではなく、以上の説明に照らし多くの修正や変形が可能である。 また、本発明は既存の標準、例えばJPEG標準に適合する。 前記好適実施例は、本発明の原理及び実際的な応用を最もよく説明することによって、当業者が本発明及び様々な態様を最善に、また特定用途に適するよう様々に修正して利用できるようにすることを目的として、選び説明したものである。 本発明の範囲は、添付のクレームによってのみ定義されるものである。
【0145】
【発明の効果】以上説明したように、本発明によれば、
ほとんど加算操作のみを使用する非常に単純でかつコストも小さい処理によって画像圧縮を行ない、またJPE
G画像圧縮標準と互換性を維持できる画像圧縮装置及びその方法を実現できる。
【図1】本発明による圧縮装置および伸長装置の一実施例のブロック図である。
【図2】(a)は入力画素順の説明図、(b)はデータのブロックタイミングの説明図、(c)ベクトルタイミングの説明図である。
【図3】(a)はRGBデータからXYZデータへの3
ポイント変換の一構成例を示す図、(b)はRGBからXYZデータへの3ポイント変換の他の構成例を示す図である。
【図4】(a)は可能なVLSIレイアウトの一例の説明図、(b)は可能なVLSIレイアウトの他の例の説明図、(c−a)は(a)のレイアウトでの圧縮時のデータフローの説明図、(d−a)は(a)のレイアウトでの伸張時のデータフローの説明図、(c−b)は(b)のレイアウトでの圧縮時のデータフローの説明図、(d−b)は(b)のレイアウトでの伸張時のデータフローの説明図である。
【図5】シフトレジスタの説明図である。
【図6】(a)はシフトアレイの説明図、(b)は(a)のシフトアレイの一例を示す図である。
【図7】結合されたデータフローの説明図である。
【図8】(a)はフォワード加算アレイの一例を示す図、(b)はフォワード加算アレイの他の例を示す図である。
【図9】本発明による2次元一般化チェン変換の説明図である。
【図10】本発明の好適な一実施例のブロック図である。
42 入力ラッチ 44 マルチプレクサ 50 GCT変換の前半部(第1ステージ、加算器ネットワーク) 54 中段ラッチ 60 GCT変換の後半部(第2ステージ、加算器ネットワーク) 62 マルチプレクサ(MUX) 66 転換RAM 70 マルチプレクサ(MUX) 74 乗算器 76 丸め器 80 ジグザグ順アレンジャ 110 水平方向変換部 112 転換RAM 116 垂直方向変換部 120 単一乗算器
标题 | 发布/更新时间 | 阅读量 |
---|---|---|
一种城市路网机动车尾气排放遥感监控系统 | 2020-05-13 | 752 |
一种驾驶人实车考试扣分取证方法与装置 | 2020-05-18 | 813 |
一种基于FPGA的畜舍图像采集分析和传输系统 | 2020-05-19 | 953 |
汽车爆胎安全稳定控制系统 | 2020-05-21 | 585 |
基于高清智能摄像机的人脸检测与识别系统 | 2020-05-24 | 334 |
一种自动化检测恶意代码核心特征方法 | 2020-05-25 | 358 |
山火诱发钢结构杆塔结构失效的仿真模拟和安全预警方法 | 2020-05-18 | 232 |
一种针对变电站的基于机器学习的语义标注方法 | 2020-05-25 | 944 |
一种多模式复合式馈能型悬架作动器及其控制方法 | 2020-05-12 | 374 |
一种智能综合考试管理系统 | 2020-05-23 | 706 |
高效检索全球专利专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。
我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。
专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。