多値画像の圧縮技術として、従来より原画像を複数の画素からなるブロック単位に分割して2次元DCT変換を施し、指定された量子化閾値で量子化してハフマン符号化する方法がある。
こうした符号化処理の2次元DCT変換をハードウェアで実現しようとした場合、n×n単位に矩形分割された画像入力に対し1次元DCT変換を施した後、n×n個の係数を格納する容量を持つ記憶手段に書き込み、転置変換して読み出し、もう一度1次元DCT変換を施して結果的に2次元DCT変換処理を実現する提案がなされている。
図5は、このような従来の2次元DCT変換装置の構成例を示すブロック図である。
5001は、画像供給システム(不図示)より入力されたn個の入力を伝達するためのn本の信号線を含み、これらは選択器500に接続されている。選択器500は、選択信号線5005を通じて入力される制御信号に従って、信号線5001を通じて送られてくるn個の入力と、n本の信号線5004を通して送られてくるn個の入力のいずれかを選択し、その選択したn個の入力をn本の信号線5002へ出力する。n本の信号線5002は、選択器500より1次元DCT変換器501へと接続される。1次元DCT変換器501は、信号線5007を通して入力されるクロック信号、及び信号線5006を通じて入力される出力タイミング制御信号に応じて、信号線5002を通じて入力されるn個の入力に対して1次元DCT変換を行なう。そして、その1次元DCT変換したn個の係数を、n本の信号線を含む信号線5003に出力する。
ここで信号線5003は2系統に分岐されており、一方は図示されない符号化器(量子化器)へ、他方は転置変換器502に接続されている。転置変換器502は、内部に信号線5003を通じて入力される係数をn×n個分格納する容量を有するブロックメモリを有し、信号線5003を通じて入力されるDCT変換係数を、n×n個分、そのブロックメモリに書き込み、転置変換をして読み出し、ロック信号(5007)及び制御信号(5008)に応じてn個ずつ信号線5004に出力している。
次に、この図5及び図6のタイミングチャートを用いて従来の2次元DCT変換装置全体の動作を説明する。
この例では、n=8の場合の例を示す。ここでは説明のために、8×8に矩形分割された64個の各位置と、各位置に対応する番号を図3(a)に示す。
また図4(a)は、以下説明で使用する水平方向のラスタスキャンのスキャン順を示し、図4(b)は垂直方向のラスタスキャンのスキャン順をそれぞれ示している。
図6(a)のタイミングチャートの期間601の先頭において、図5における信号線5001を通じて最初の8個のデータが入力される。これら最初の8個のデータは、図6では「h0」で表されており、この「h0」と図3(a)に示した8×8矩形内における位置番号との対応は、図3(b)のようになる。この図3(b)に示すように、「h0」〜「h7」は、水平方向ラスタスキャン順に、それぞれ8個ずつ選んだデータで構成される。また期間601においては、選択器500の制御信号(5005)は「1」を示している。この例では、選択器500の制御信号(5005)が「0」の場合は信号線5004側を選択し、「1」の場合は信号線5001側を選択するものとする。従って、期間601においては、信号線5002には、信号線5001のデータ、即ち「h0」が出力される。
同様に、期間602〜期間607の各先頭において、信号線5001を通じて「h1」〜「h7」のデータが選択器500に入力され、制御信号(5005)は「1」であるため、「h1」〜「h7」が信号線5002に出力される。選択器500の制御信号(5005)は、期間601〜期間608においては「1」を表している。従って、期間601〜期間608においては、選択器500は信号線5001の値を選択して信号線5002に出力する。
この期間601において、選択器500より出力された「h0」は、信号線5002を通じて1次元DCT変換器501に入力される。この例では、1次元DCT変換器501は、制御信号(5006)の値が「1」のときに、クロック信号(5007)の立ち上がりに同期して、変換された係数を出力するものとする。
図6(a)に示されるように、制御信号(5006)の値は、期間601〜期間608及び期間609〜期間619の各期間の終わりにおいて「1」になる。従って、期間601において、1次元DCT変換器501に入力されたデータ「h0」に対して1次元DCT変換が施され、制御信号(5006)及びクロック信号(5007)に応じて、期間602の先頭において、その変換係数が信号線5003に出力される。
以下同様に、期間602〜期間608の期間の各先頭において、1次元DCT変換器501に入力されたデータ「h1」〜「h7」は、1次元DCT変換されて、それぞれ期間603〜期間609の各期間の先頭において信号線5003に出力される。
期間602〜期間609の各期間の先頭において、1次元DCT変換器501より信号線5003に出力されたデータ「h0」〜「h7」は、転置変換するべく転置変換器502に入力され、64個分のデータを格納する容量を持つ内部ブロックメモリに順次書き込まれていく。この内部ブロックメモリは、クロック信号(5007)に同期して、書き込み又は読み出しが行なわれるものとする。また転置変換器502は、制御信号(5008)の値が「1」の時にクロック信号(5007)の立ち上がりに同期して出力する。
こうして、データ「h0」〜「h7」が転置変換器502の内部ブロックメモリに全て書き込まれた後、垂直方向のラスタスキャン順に読み出しが行なわれ、制御信号(5008)及びクロック信号(5007)に応じて8個ずつ出力される。こうして出力される8個のデータは、図6(a)において、「v0」〜「v7」で表わされている。これら「v0」〜「v7」と、図3(a)に示した8×8矩形内における位置番号との対応は図3(c)のようになる。この図3(c)に示されるように、「v0」〜「v7」は、垂直方向ラスタスキャン順に8個ずつ選んだデータで構成される。
また、制御信号(5008)は、図6(a)のように期間609〜期間616の各期間の最後において「1」になる。従って、データ「v0」〜「v7」は、期間610〜期間617の各期間の先頭において順次信号線5004に出力されて選択器500に送られる。
ここで、期間609の先頭において、1次元DCT変換器501より転置変換器502へ、信号線5003を通じて入力された「h7」に含まれる8個のデータと、図3(a)に示した8×8矩形内における位置番号との対応は、図3(c)に示されるように、「56,57,58,59,60,61,62,63」である。
一方、期間610の先頭において、転置変換器502より選択器500へ信号線5004を通じて出力される「v0」に含まれる8個のデータと、図3(a)に示した、8×8矩形内における位置番号との対応は、図3(c)に示されるように、「0,8,16,24,32,40,48,56」である。つまり、「h7」と「v0」とを構成するデータにおいては、図3(a)に示した8×8矩形内における位置番号56が重複している。期間609の先頭において1次元DCT変換器501より出力された「h7」の要素である位置番号56のデータを、RAMに入力して同一クロックサイクルで読み出すためには、該RAMにいくつかの機能が備わっていることが条件として要求される。該条件とは、アドレス入力に対して該アドレスに対応する読み出し値が同一クロックサイクル内に出力されること、即ち非同期式RAMであること、かつ、あるアドレスにデータの書き込みを行ない、更に該書き込んだデータを同一クロックサイクル内に読み出すことが可能なRAMであること、である。しかしながら、近年のLSIにおけるクロック周波数はますます増加する傾向にあり、非同期式RAMはそうしたシステムの中で使用するには不利であることから、同期式RAMを使用するのが一般的になってきている。また、上記したように書き込んだ値を同一クロックサイクル内に読み出すことが可能なRAMは特殊であり、全てのRAMがこの機能を備えているわけではない。特に、様々なプロセス上で実装可能な回路を構成するためには、こうした特殊なRAMを使用するべきではないといえる。従って、使用するRAMとしては一般的な同期式RAMを想定することが必要になってきている。このことは、上記条件を満たしたRAMを使用しない限り、「h7」の転置変換器502への入力と、「v0」の転置変換器502からの出力とを同一クロックサイクル内に行なうことができないことを示している。
そのため、「v0」の転置変換器502からの出力は、本例に示したように、「h7」の転置変換器502への入力から1クロックサイクルずらさなければならない。期間608〜期間610の更なる詳細な動きを図6(b)に示した。
図6(b)では、図6(a)では図示していないクロック信号(5007)も合わせて示している。
この図において、転置変換が施されたデータ「v0」〜「v7」は、信号線5004を通じて選択器500へ入力される。また制御信号(5005)は、2回目の1次元DCT変換を施すべく、期間610の先頭において信号線5004側を選択するように「0」に切り替わる。従って、期間610〜期間617の各期間の先頭において、データ「v0」〜「v7」が順次、選択器500より信号線5002へ出力されて1次元DCT変換器501へ入力される。
こうして1次元DCT変換器501へ入力されたデータ「v0」〜「v7」に対して、1次元DCT変換器501によって2回目の1次元DCT変換が施され、制御信号(5006)に従って、期間611〜期間618の各期間の先頭において順次、信号線5003へ出力される。これら期間611〜期間618の各期間の先頭において順次出力されたデータは、既に説明したように、1次元DCT変換が転置変換を挟んで2回行なわれたものであり、結果的に2次元DCT変換された結果と等価となる。
続いて、次の8×8矩形ブロックのデータを受け取るため、制御信号(5005)は信号線5001側を選択すべく期間618の先頭において「1」に切り替わる。この期間618の先頭において、次の8×8矩形ブロックの最初の8個のデータ「h0」が、不図示の画像供給システムより信号線5001を通じて選択器500に入力される。以下、同様にして順次8×8矩形ブロックの単位でDCT変換を施していく。
また従来、複数画素で構成されるブロック単位に分割された画像データを、分割されたブロック単位に直交変換処理を施し、この直交変換処理によって得られた変換係数を所定のスキャン順に並べ替え、並べ替えられた変換係数を所定の量子化閾値を用いて量子化処理を施し、符号化する符号化装置において、回路規模の増大を抑えつつ処理の高速化を図るためにいくつかの提案がなされている。特に、量子化処理部の回路構成において、回路規模の大きい除算器の使用効率を高めるために、量子化処理に先んじて、直交変換された係数と、この係数に対応する量子化閾値とをそれぞれ複数組同時に比較し、量子化結果が0(無意係数)になるか否(有意係数)かを判定し、0にならない係数を優先的に除算器に投入する方法が知られている。
図16に、従来の符号化装置の構成を示す。
直交変換器9801は、複数画素で構成されるブロック単位に分割された画像データを、分割されたブロック単位に直交変換処理を施し、順次ブロックメモリ9802へ出力する。この直交変換器9801は例えば図5に示した上記2次元DCT変換装置である。直交変換器9801より出力された直交変換係数は、ブロックメモリ9802へと書き込まれ、1ブロック分の直交変換係数が書き込まれた時点で制御装置9810の出力する制御信号に従って、2個ずつジグザグスキャン順に読み出される。図13に、直交変換の単位となるブロックが8×8個の要素で構成される場合におけるジグザグスキャンの順序を示す。
ブロックメモリ9802より読み出された2個の係数は、比較器9803及び比較器9804へとそれぞれ入力される。また同時に、ブロックメモリ9802より読み出された2個の係数は、選択器9807へも入力される。一方、読み出された2個の係数に対応する2個の量子化閾値が量子化閾値テーブル9805より読み出され、それぞれ対応する比較器9803及び比較器9804へとそれぞれ入力される。また同時に、量子化閾値テーブル9805より読み出された2個の量子化閾値は、選択器9808へも入力される。比較器9803及び比較器9804は、それぞれに入力された係数と対応する量子化閾値とを比較し、量子化結果が0になるか否かをそれぞれ判定し、判定結果を出力する。
比較器9803及び比較器9804より出力された判定結果は、選択信号生成装置9806、制御装置9810、及びエントロピー符号化部9811へとそれぞれ入力される。選択信号生成装置9806は、比較器9803及び比較器9804の出力する判定結果を基に、選択信号を生成する。この選択信号は、比較器9803及び比較器9804より出力される2つの判定結果より、量子化対象となる2個の係数のうち量子化結果が0にならない方を選択するように生成される信号である。この2個の係数の量子化結果がいずれも0にならないと判定された場合は、この2個の係数をそれぞれ一つずつ時分割で選択するように選択信号が生成される。また、この2個の係数の量子化結果がいずれも0になると判定された場合は、いずれの係数が選択されても結果に変わりはないので、どちらか一方を選択するように選択信号が生成される。
制御装置9810は、比較器9803及び比較器9804の出力する判定結果を基に、ブロックメモリ9802からの読み出し制御信号を生成する。該制御信号は、比較器9803及び比較器9804より出力される2つの判定結果より、量子化対象となる2個の係数の量子化結果のうち少なくともいずれか一方が0になると判定された場合は、次なる2個の係数の読み出しを指示し、いずれも0にならないと判定された場合は、該2個の係数の値を1サイクル保持してその次のサイクルにおいて次なる2個の係数の読み出しを行なうよう、指示する。選択器9807はブロックメモリ9802より出力された2個の係数のうちいずれか一方を、選択信号生成装置9806より出力された選択信号に従って選択し、出力する。同様に、選択器9808は量子化閾値テーブル9805より出力された2個の量子化閾値のうちいずれか一方を、選択信号生成装置9806より出力された選択信号に従って選択し、出力する。選択器9807より出力された係数及び選択器808より出力された量子化閾値は、除算器9809へと入力される。
除算器9809は入力された量子化閾値を用いて入力された係数を量子化し、量子化結果を出力する。この量子化結果はエントロピー符号化部9811へと入力される。エントロピー符号化部9811は、除算器9809より出力される量子化係数及び比較器9803、比較器9804より出力される判定結果を基に、ブロック内における位置情報を得てゼロラン長を計数し、エントロピー符号化を行い、符号化データを出力する。
次に上述の符号化装置の動作の説明を行う。以下、例としてブロックメモリ9802より出力される2個の直交変換係数の量子化結果が以下に示すようになる場合について説明する。ここで、()でくくられた部分がブロックメモリ9802より出力される2個の係数のペアを表し、これらがブロックメモリ9802より出力される順に並べて表してある。また、「0」は量子化結果が0(無意係数)、「有」は量子化結果が0でない(有意係数)ことを示す。
量子化結果:(有、0)、(有、有)、(0、有)、(有、0)
直交変換器9801より出力された直交変換係数が1ブロック分ブロックメモリ9802に書き込まれると、制御装置9810から読み出し制御信号が出力され、ブロックメモリ9802から順次2個ずつ係数の読み出しが開始される。
図17に、上述の各部における動作のタイミングチャートを示す。期間9901で制御装置9810より読み出し指示が出力される。ここで、制御装置9810の出力する読み出し制御信号は、1が読み出し指示、0が出力ホールド指示を表している。期間9902では、ブロックメモリ9802より、期間9901における読み出し指示信号に従って、最初の2個の係数(有、0)が読み出される。該2個の係数は、量子化閾値テーブル9805より読み出された対応する2個の量子化閾値と共に、比較器9803及び比較器9804へ入力される。比較器9803及び比較器9804は、入力された2個の係数の量子化結果がそれぞれ有意係数、無意係数になるという判定結果を出力する。ここで、該判定結果は0が無意係数、1が有意係数を表す。
該判定結果は、同じく期間9902において選択信号生成装置9806及び制御装置9810及びエントロピー符号化部9811へ入力される。制御装置810においては入力された判定結果が、少なくともいずれか一方の係数は0であるという条件にあてはまるので、ブロックメモリ9802に対して次なる読み出し指示、つまり1を出力する。同じく期間9902において、選択信号生成装置9806は2個の係数のうち有意係数の方を選択するよう、選択器9807及び選択器9808に対して選択信号を出力する。ここでは、該選択信号は、(有、0)の場合1を、(0、有)の場合0を示すものとする。同じく期間9902において、選択器9807はブロックメモリ9802より出力された2個の係数のうち、有意係数の方を選択して出力し、同じく選択器9808は選択器9807で選択された係数に対応する量子化閾値を選択して出力する。同じく期間9902において、選択器9807より出力された係数は、選択器9808より出力された量子化閾値を用いて除算器9809で量子化され、量子化結果が出力される。量子化結果はエントロピー符号化部9811へ入力され、エントロピー符号化処理される。
期間9903では、制御装置9810より期間9902に出力された読み出し指示信号に従って、ブロックメモリ9802より、次なる2個の係数(有、有)が読み出される。該2個の係数は、量子化閾値テーブル9805より読み出された対応する2個の量子化閾値と共に、比較器9803及び比較器9804へ入力される。比較器9803及び比較器9804は、該2個の係数の量子化結果がいずれも有意係数になるという判定結果を出力する。該判定結果は、同じく期間9903において選択信号生成装置9806及び制御装置9810及びエントロピー符号化部9811へ入力される。制御装置9810においては入力された判定結果が、いずれの係数も0でないという条件にあてはまるので、ブロックメモリ9802に対して出力ホールド指示、つまり0を出力する。
同じく期間9903において、選択信号生成装置9806は2個の係数のうちジグザグスキャン順で先の方を選択するよう、選択器9807及び選択器9808に対して選択信号を出力する。同じく期間9903において、選択器9807はブロックメモリ9802より出力された2個の係数のうち、ジグザグスキャン順で先の方を選択して出力し、同じく選択器9808は選択器9807で選択された係数に対応する量子化閾値を選択して出力する。同じく期間9903において、選択器9807より出力された係数は、選択器9808より出力された量子化閾値を用いて除算器9809で量子化され、量子化結果が出力される。また、該量子化結果はエントロピー符号化部9811へ入力され、エントロピー符号化処理される。
期間9904では、制御装置9810より期間9903に出力された出力ホールド指示信号に従って、ブロックメモリ9802は期間9903において出力した2個の係数(有、有)をそのままホールドして出力する。該2個の係数は、量子化閾値テーブル9805より読み出された対応する2個の量子化閾値と共に、比較器9803及び比較器9804へ入力される。比較器9803及び比較器9804は、該2個の係数の量子化結果がいずれも有意係数になるという判定結果を出力する。該判定結果は、同じく期間9904において選択信号生成装置9806及び制御装置9810及びエントロピー符号化部9811へ入力される。制御装置9810においては入力された判定結果が、いずれの係数も0でないという条件にあてはまり、かつ該条件が2サイクル続いたので、ブロックメモリ9802に対して次なる読み出し指示、つまり1を出力する。一方同じく期間9904において、選択信号生成装置9806は2個の係数のうちジグザグスキャン順で後の方を選択するよう、選択器9807及び選択器9808に対して選択信号を出力する。同じく期間9904において、選択器9807はブロックメモリ9802より出力された2個の係数のうち、ジグザグスキャン順で後の方を選択して出力し、同じく選択器9808は選択器9807で選択された係数に対応する量子化閾値を選択して出力する。同じく期間9904において、選択器9807より出力された係数は、選択器9808より出力された量子化閾値を用いて除算器9809で量子化され、量子化結果が出力される。また、該量子化結果はエントロピー符号化部9811へ入力され、エントロピー符号化処理される。
期間9905では、期間9904における読み出し指示信号に従ってブロックメモリ9802より、次なる2個の係数(0、有)が読み出される。該2個の係数は、量子化閾値テーブル9805より読み出された対応する2個の量子化閾値と共に、比較器9803及び比較器9804へ入力される。比較器9803及び比較器9804は、該2個の係数の量子化結果がそれぞれ無意係数、有意係数になるという判定結果を出力する。該判定結果は、同じく期間9905において選択信号生成装置9806及び制御装置9810及びエントロピー符号化部9811へ入力される。制御装置9810においては入力された判定結果が、少なくともいずれか一方の係数は0であるという条件にあてはまるので、ブロックメモリ9802に対して次なる読み出し指示、つまり1を出力する。
同じく期間905では、選択信号生成装置9806は選択器9807及び選択器9808に対して、該2個の係数が(0、有)であるので0を出力する。同じく期間9905において、選択器9807はブロックメモリ9802より出力された2個の係数のうち、有意係数の方を選択して出力し、同じく選択器9808は選択器9807で選択された係数に対応する量子化閾値を選択して出力する。同じく期間9905では、選択器9807より出力された係数は、選択器9808より出力された量子化閾値を用いて除算器9809で量子化され、量子化結果が出力される。また、該量子化結果はエントロピー符号化部9811へ入力され、エントロピー符号化処理される。
期間9906では、期間9905における読み出し指示信号に従ってブロックメモリ9802より、次なる2個の係数(有、0)が読み出される。該2個の係数は、量子化閾値テーブル9805より読み出された対応する2個の量子化閾値と共に、比較器9803及び比較器9804へ入力される。比較器9803及び比較器9804は、該2個の係数の量子化結果がそれぞれ有意係数、無意係数になるという判定結果を出力する。該判定結果は、同じく期間9905において選択信号生成装置9806及び制御装置9810及びエントロピー符号化部9811へ入力される。制御装置9810においては入力された判定結果が、少なくともいずれか一方の係数は0であるという条件にあてはまるので、ブロックメモリ9802に対して次なる読み出し指示、つまり1を出力する。
同じく期間9906では、選択信号生成装置9806は選択器9807及び選択器9808に対して、該2個の係数が(有、0)であるので1を出力する。同じく期間9906において、選択器9807はブロックメモリ9802より出力された2個の係数のうち、有意係数の方を選択して出力し、同じく選択器9808は選択器9807で選択された係数に対応する量子化閾値を選択して出力する。同じく期間9906では、選択器9807より出力された係数は、選択器9808より出力された量子化閾値を用いて除算器9809で量子化され、量子化結果が出力される。また、該量子化結果はエントロピー符号化部9811へ入力され、エントロピー符号化処理される。以下、同様にして符号化処理が行われる。
また、符号化されたデータを復号する復号装置において、ある定義域を有するデータをある定義域を有する量子化閾値を用いて量子化した量子化データを、元の定義域のデータに逆量子化する技術として、従来では乗算器及びクランプ回路を用いて実現する方法が知られている。以下、この乗算器及びクランプ回路について説明する。尚、以下の説明では0〜1024の定義域を有するデータを1〜255の定義域を有する量子化閾値を用いて量子化した量子化データを、該量子化閾値を用いて0〜1024の定義域を有するデータに逆量子化する例を示す。図21に、従来の逆量子化装置の構成例を示す。以下、図21を参照して従来の逆量子化装置について説明する。
91301は乗算器であり、入力される量子化データに量子化閾値を乗じて乗算結果を得、出力する。入力される量子化データの定義域は0〜1024であるので11ビットで表される。また、量子化閾値の定義域は0〜255であるので8ビットで表される。従って乗算器91301のサイズは11ビット×8ビットとなる。91302はクランプ回路であり、乗算器91301の出力を本来の定義域である1024を超えた場合には1024にして出力し、超えない場合はそのままの値を出力する。クランプ回路91302の出力が求める逆量子化値となる。
以下、添付図面を参照し、本発明の好適な実施形態について詳細に説明する。
[第1の実施形態]
図1は、本実施形態に係る符号化装置の2次元DCT変換装置の構成を示すブロック図である。尚、本実施形態では、入力データの個数を示すnをn=8とし,n個のうちの選択する所定数mの値を「1」とした場合で説明する。
図において、1001は、不図示の画像供給システムより入力された8個の入力を伝達する8本の信号線を示し、選択器100へ接続されている。この選択器100は、信号線1005を通じて入力される制御信号に従って、信号供給線1001を通じて送られてくる8個の入力と、8本の信号線より成る信号線1010を通じて送られてくる8個の入力(選択器103の出力)のいずれかを選択し、その選択した8本の入力信号線よりのデータを信号線1002に供給している。この信号線1002は、選択器100の出力を1次元DCT変換器101に接続している。
1次元DCT変換器101は、信号線1007を通じて入力されるクロック信号及び、信号線1006を通じて入力される出力タイミング制御信号に応じて、信号線1002を通じて入力される8個の入力に対して1次元DCT変換を行ない、その1次元DCT変換した8個の係数を信号線1003へ出力する。ここで、信号線1003の8個の信号のうち、最低周波成分のデータが現れる信号線を特に信号線1003aとする。
この信号線1003aを除く信号線1003は2系統に分岐され、一方は量子化器(図8の81)へ、他方は転置変換器102に接続されている。信号線1003aは、更に3系統に分岐され、一つは量子化器(図8の81)へ、一つは転置変換器102へ、もう一つは選択器103へ接続されている。
転置変換器102は、信号線1003を通じて入力される係数を8×8個分格納する容量を持つブロックメモリを内部に有し、その信号線1003を通じて入力される係数を(8×8−1)個分、そのブロックメモリに書き込む。その後、そのデータに対して転置変換を施して読み出し、クロック信号(1007)及び信号線1008を通して入力される制御信号に応じて、8個ずつ8本の信号線1004へ出力する。この信号線1004のうち、最高周波成分のデータが現れる信号線を、特に信号線1004aとする。
選択器103は、信号線1009を通じて入力される制御信号に従って、信号線1004を通じて転置変換器102から送られてくる8個のデータ及び、信号線1003aを通じて送られてくる最低周波成分のデータのうち8個を選択して、8本の信号線1010へ出力する。この信号線1010のうち、最高周波成分のデータが現れる信号線を、特に信号線1010aとする。
本実施形態では、選択器103は、内部にマルチプレクサ103aを有し、このマルチプレクサ103aは、制御信号(1009)に従って、信号線1004aを通じて送られてくる最高周波成分のデータと、信号線1003aを通じて送られてくる最低周波成分のデータのいずれかを選択し、その選択したデータを信号線1010aへ出力する。また選択器103は、信号線1004のうち信号線1004aを除く信号をそのまま、信号線1010aを除く7本の信号線1010に対して出力する。
次に、この図1、及び図2(a),(b)のタイミングチャートを用いて全体の動作を説明する。
図2(a),(b)における、「h0」〜「h7」,「v0」〜「v7」の表す意味は、従来例における説明で使用した図3(a)〜(c)を参照されたい。また、図2(a),(b)における、1003a,1004a及び1010aの欄に示された各数字は、図3(a)に示された8×8矩形ブロック内における位置番号に対応している。
図2(a)のタイミングチャートの期間201の先頭において、信号線1001を通じて最初の8個のデータが入力される。この最初の8個のデータは、図2(a)では「h0」で表されており、この「h0」と図3(a)に示した8×8矩形ブロック内における位置番号との対応は、図3(b)のようになる。
図3(b)に示されるように、「h0」〜「h7」のそれぞれは、水平方向ラスタスキャン順に8個ずつ選んだデータで構成される。また同じく期間201においては、選択器100の制御信号(1005)は、図2(a)で、1005において「1」を示している。
本実施形態では、選択器100の制御信号(1005)が「0」の場合は転置結果である信号線1010の信号を選択し、「1」の場合は、信号線1001の信号を選択するものとする。従って期間201においては、信号線1002には、信号線1001のデータ、即ち「h0」が現れる。
同様に、期間202〜期間208の各先頭において、信号線1001を通じて「h1」〜「h7」のデータが選択器100に入力され、制御信号(1005)に従って、このデータ「h1」〜「h7」が信号線1002に出力され、1次元DCT変換器101に供給される。この時、制御信号(1005)は期間201〜期間208においては「1」を表している。従って、期間201〜期間208においては、選択器100は信号線1001のデータを選択して信号線1002に出力する。
この期間201において、選択器100より出力された「h0」は、信号線1002を通じて1次元DCT変換器101へ入力される。本実施形態では、1次元DCT変換器101は、制御信号(1006)の値が「1」のときに、クロック信号(1007)の立ち上がりに同期して、その変換した係数を出力するものとする。
図2(a)に示されるように、制御信号(1006)の値は、期間201〜期間218の各期間の終わりにおいて「1」になる。こうして期間201において、1次元DCT変換器101に入力されたデータ「h0」に対して1次元DCT変換が施され、制御信号(1006)及びクロック信号(1007)に応じて、期間202の先頭において変換係数が信号線1003に出力される。
以下同様に、期間202〜期間208の期間の各先頭において、1次元DCT変換器101に入力されたデータ「h1」〜「h7」は、1次元DCT変換されて、それぞれ期間203〜期間209の各期間の先頭において、信号線1003へ出力される。また、特に信号線1003aへ出力される値(最低周波数)は、期間202〜期間209の各期間の先頭において図2(a)に示したようになる。
これら期間202〜期間209の各期間の先頭において、1次元DCT変換器101より信号線1003に出力されたデータ「h0」〜「h7」は、転置変換するべく転置変換器102に入力され、64個分のデータを格納する容量を持つ転置変換器102内のブロックメモリに順次書き込まれていく。但し、図3(a)で示される8×8矩形ブロック内の位置番号56に対応するデータ(以下、単に位置番号56に対応するデータとする)に関しては、書き込みは行われないように制御される。この内部ブロックメモリは、クロック信号(1007)に同期して書き込み又は読み出しが行なわれるものとする。また、転置変換器102は、制御信号(1008)の値が「1」のときにクロック信号(1007)の立ち上がりに同期して出力が行われるものとする。
こうして、位置番号56に対応するデータを除くデータ「h0」〜「h7」が転置変換器102の内部ブロックメモリに書き込まれ、垂直方向のラスタスキャン順に読み出しが行なわれ、制御信号(1008)及びクロック信号(1007)に応じて8個ずつ出力される。こうして出力される8個のデータは、図2(a)においては、「v0'」,「v1」〜「v7」で表される。ここで「v0'」は、図3(a)で示される8×8矩形ブロック内の位置番号に対応して表すと、「0,8,16,24,32,40,48,xx」のデータを含む。ここで、位置番号56に対応するデータが除かれており、ドント・ケア、即ち、何であってもよい値を表す「xx」で示されている。
このとき制御信号(1008)は、図2(a)のように、期間208〜期間215の各期間の最後において「1」になる。従って、データ「v0'」,「v1
」〜「v7」は、期間209〜期間216の各期間の先頭において順次、転置変換器102から信号線1004に出力される。また特に、信号線1004aへ出力される値は、期間209〜期間216の各期間の先頭において、図2(a)に示したようになる。特に、期間209の先頭において出力される値(xx)は、ドント・ケア(xx)となる。これは図3(a)で示される、8×8矩形ブロック内の位置番号56に対応する値のブロックメモリへの書き込み及び読み出しを行なった場合、その値を期間209の先頭において出力することができないことに起因する。
転置変換器102から出力される8本の信号線から成る信号線1004は、選択器103に入力されている。とりわけ、信号線1004aは、選択器103が内部に有するマルチプレクサ103aに入力される。このマルチプレクサ103aは、制御信号(1009)に応じて、信号線1004aを通じて入力される値(最高周波成分)と、信号線1003aを通じて入力される値(最低周波成分)とのいずれかを選択し、信号線1010aへ出力する。
本実施形態では、このマルチプレクサ103aは、制御信号(1009)が「0」のときは信号線1004aの値(最高周波成分)を、「1」のときは信号線1003aの値(最低周波成分)をそれぞれ信号線1010aに出力するものとする。図2(a)に示すように、制御信号(1009)は期間209において「1」となる。従って、期間209においては、信号線1010aの値は信号線1003aの値、即ち、図3(a)で示される8×8矩形ブロック内の位置番号56に対応する値となる。
その結果、信号線1010aには、期間209〜期間216の各期間の先頭において、図2(a)に示したような値が出力される。また、8個の信号線より成る信号線1010のうち、信号線1010aを除く他の7個の信号線は、選択器103内で、8個の信号線より成る信号線1004のうち信号線1004aを除く他の7個の信号線に接続されるので、結果的に、信号線1010には期間209〜期間216の各期間の先頭において、図2(a)に示したようにそれぞれ「v0」〜「v7」が出力される。
期間208〜期間209の更なる詳細な動きを図2(b)に示す。図2(b)では、図2(a)では図示していない、クロック信号(1007)も合わせて示している。
こうして、転置変換が施されたデータ「v0」〜「v7」は、信号線1010を通じて選択器100へ入力される。また制御信号(1005)は、2回目の1次元DCT変換を施すべく、期間209の先頭において、信号線1010側を選択するように「0」に切り替わる。従って、期間209〜期間216の各期間の先頭において、データ「v0」〜「v7」が順次、選択器100より信号線1002へ出力されて1次元DCT変換器101へ入力される。こうして1次元DCT変換器101に入力されたデータ「v0」〜「v7」に対して、1次元DCT変換器101によって2回目の1次元DCT変換が施される。この結果は、制御信号(1006)に従って、期間210〜期間217の各期間の先頭において順次、信号線1003へ出力される。これら期間210〜期間217の各期間の先頭において順次出力されたデータは、既に説明したように、1次元DCT変換を、転置変換を挟んで2回実行したものであり、結果的に2次元DCT変換された結果と等価となる。
続いて、次なる8×8矩形ブロックのデータを受け取るため、制御信号(1005)は信号線1001側を選択すべく、期間217の先頭において「1」に切り替わる。
期間217の先頭において、次なる8×8の矩形ブロックの最初の8個のデータ「h0」が、画像供給システム(不図示)より信号線1001を通じて選択器100へ入力される。以下、同様にして、順次8×8矩形ブロックの単位でDCT変換を実行していく。
図7は、本実施形態に係る符号化装置における2次元のDCT変換を説明するフローチャートである。
まずステップS1で、n×n個のデータからなる画像データを入力し、それを1次元DCT変換器101に出力して1次元のDCT変換を実行する(ステップS2)。次に、この1次元DCT変換の結果を転置変換器102に出力して、その内部メモリに記憶する(ステップS3)。そして転置変換器102により、n×nのブロックを転置変換する(ステップS4)。次にステップS5に進み、1次元DCTのm個のデータと、転置した(n−m)個のデータとを組合わせ、それに対して1次元DCTを実行する。これにより、2次元DCTの演算結果が得られ、その結果をステップS6で出力する。
図8は本実施形態に係る符号化装置の構成を示すブロック図である。
図において、80は2次元DCT変換器で、これは前述した図1のような構成を備えている。81は量子化器で、2次元DCT変換器80で変換された係数のそれぞれを、予め定められた量子化ステップに従って量子化している。82はエントロピー符号化器で、量子化器81で量子化された値を基にエントロピー符号化を実行している。
前述した従来例の構成によれば、8×8の矩形ブロックを2次元DCT変換処理するのに必要なクロックサイクル数は65サイクルである。これに対し前述した実施の形態の構成によれば、8×8の矩形ブロックを2次元DCT変換処理するのに必要なクロックサイクル数は64サイクルとなり、従来と比べて、8×8の矩形ブロック毎に、1サイクルだけ処理時間を短縮することができる。
尚、本実施形態では、直交変換の一例として2次元のDCT(離散コサイン変換)を行う場合を例にして説明したが、これに限定されるものでなく、例えば2次元の離散ウエーブレット変換、アダマール変換等の場合にも適用できる。
[第2の実施形態]
上述の通り、画像の圧縮符号化を行うためには、画像データに対して直交変換を行った後、直交変換による変換係数に対して量子化を行う必要がある。この圧縮符号化処理を従来のものよりもより高速に行うためには、各処理の高速化を行う必要があるが、直交変換に関しては上述の通り、第1の実施形態により従来のものよりもより高速に行うことができる。そこで本実施形態では、この直交変換の後段の処理である量子化処理を従来のものよりもより高速に行う量子化方法について説明する。なお本実施形態に係る量子化を行う装置は第1の実施形態に係る2次元DCT変換装置と共に用いることに限定されるものではない。
図9に本実施形態における符号化装置の構成を示す。また、直交変換の単位ブロックは8×8の要素により構成されているものとする。
直交変換器9101は、複数画素で構成されるブロック単位に分割された画像データを、分割されたブロック単位に直交変換処理を施し、直交変換された係数を順次2個ずつ出力する。この直交変換として例えばDCT(離散コサイン変換)等が挙げられ、この場合、直交変換器9101として第1の実施形態に係る2次元DCT変換装置を用いてもよい。
直交変換器9101から出力された2個の係数は、ブロックメモリ9103、比較器9104、及び比較器9105へ入力される。直交変換器9101より出力された直交変換係数は、ブロックメモリ9103へと2個ずつ1ブロック分を単位として書き込まれ、1ブロック分の直交変換係数が書き込まれた時点でアドレス生成装置9107の出力する読み出しアドレスに従って、1個ずつジグザグスキャン順に読み出される。ブロックメモリ9103より読み出された係数は、除算器9109へ入力される。また同時に、直交変換器9101より出力された2個の係数は比較器9104及び比較器9105にそれぞれ入力され、比較器9104及び比較器9105は量子化閾値テーブル9102より読み出された2個の量子化閾値とを比較し、量子化結果が0になるか否かをそれぞれ判定し、該判定結果を出力する。
量子化閾値テーブル9102は、同時にアクセス可能な2つのRAMを含み、一方のRAM(アドレス)からは、比較器9104及び比較器9105へ入力される係数に対応する2個の量子化閾値が読み出され、他方のRAM(アドレス)からは、除算器9109へ入力される係数に対応する量子化閾値が読み出される。判定結果保持装置9106は、比較器9104及び比較器9105より出力される判定結果を順次受け取り、1ブロック分の判定結果を保持する。判定結果は例えば、判定された係数の量子化結果が0(無意係数)になるのであれば0、0にならない(有意係数)のであれば1で表す。判定結果保持装置9106に保持された1ブロック分の判定結果は、アドレス生成装置9107及びデコーダ9108へと出力される。
アドレス生成装置9107は、判定結果保持装置9106に保持された1ブロック分の判定結果をもとに、ブロックメモリ9103からの読み出しアドレスを生成する。読み出しアドレスの生成方法は例えば、1ブロックの係数のうち有意係数が格納されているアドレスのみを1サイクルずつ順次ジグザグスキャン順に生成する。生成した読み出しアドレスはブロックメモリ9103に出力し、ブロックメモリ9103は入力した読み出しアドレスに格納された係数、即ち有意係数を出力する。そして、ブロックメモリ9303が最後の有意係数を出力した時点で当該ブロックの読み出し処理を終了させる。但し直流成分については有意係数であるなしにかかわらず常に読み出すようにする。
デコーダ9108は、判定結果保持装置9106に保持された1ブロック分の判定結果をもとに、ブロックメモリ9103から読み出される係数の、ブロック内における位置情報を生成し、出力する。該位置情報は例えば、アドレス生成装置9107に対応して、1ブロックの係数のうち有意係数のみを1サイクルずつ順次ジグザグスキャン順に生成させるようにする。但し直流成分については有意係数であるなしにかかわらず常に生成させるようにする。また、該位置情報の内容として好適な例としては、直流成分については直交変換器9101が直交変換処理を行なう単位ブロックの画素数から1を減じた値、即ち本実施形態においては単位ブロックの画素数が8×8=64であるので、63なる値を位置情報とする。交流成分については、ジグザグスキャン順で一つ前の有意係数と注目している有意係数との間にある無意係数の個数を位置情報とする。但し、ジグザグスキャン順で直流成分の次の最初の有意係数については、該直流成分との間にある無意係数の個数を位置情報とする。
このように位置情報を生成させた場合に、交流成分の有意係数に対応する位置情報は、単位ブロックの画素数から2を減じた値、即ち本実施形態においては62なる値が最大値となる。直流成分に対応する位置情報に63を割り当てているのはこのためであり、交流成分に対応する位置情報のとりうる値の範囲外の値を割り当てることにより、それが直流成分であることの識別が可能となり、また、位置情報を表現するのに要するビット数を最小限に抑えることが可能となる。もちろん、63以外の値を割り当てても他の交流成分に対応する位置情報の取りうる値の範囲外であれば差し支えない。直流成分であることを識別することは、直交変換の単位ブロックの境界を知るために必要である。後段のエントロピー符号化部9110においては、直流成分を受け取ることによって直前に受け取った係数が、直交変換の単位ブロック内における最後の有意係数であったことが判別できる。また、このように位置情報を生成することによって、ゼロランレングス符号化を行なうために有効な情報となる。
以下、図14を用いて該位置情報生成の例を示す。図14は、直交変換の単位ブロックが8×8の要素から構成される場合の、単位ブロック内の係数の量子化結果の分布の例を表したものである。ここで、”有”は有意係数を、”0”は無意係数を表す。まず、最初に処理されるべき直流成分に対応する位置情報は、63となる。次にジグザグスキャン順に数えて2番目の有意係数に対応する位置情報は、直流成分との間に無意係数が存在しないので、0となる。次にジグザグスキャン順に数えて3番目の有意係数に対応する位置情報は、一つ前の有意係数との間に無意係数が存在しないので、0となる。以下、ジグザグスキャン順に数えて10個目までの有意係数に対応する位置情報は、それぞれ直前の有意係数との間に無意係数が存在しないので、それぞれ0となる。ジグザグスキャン順に数えて11個目の有意係数に対応する位置情報は、一つ前の有意係数との間に2個の無意係数が存在するので、2となる。以下、同様に位置情報を生成させると、ジグザグスキャン順に数えて12個目以降の有意係数に対応する位置情報はそれぞれ、0,1,2,5,0,0,10,13となる。
デコーダ9108より出力される位置情報は、エントロピー符号化部9110へ入力される。除算器9109は、ブロックメモリ9103より出力される係数を、量子化閾値テーブル9102より出力される対応する量子化閾値を用いて順次量子化し、エントロピー符号化部9110へと出力する。エントロピー符号化部9110は、除算器9109の出力及びデコーダ9108の出力をもとに、順次エントロピー符号化を行なう。
次に、本実施形態における符号化装置の動作について以下説明する。図10は本実施形態における符号化装置の各部の動作のタイミングチャートである。尚、図中の”有”は有意係数を表し、”0”は無意係数を表している。
期間9201において、直交変換器9101より直交変換された係数の出力が開始される。期間9201における直交変換器9101から出力される2個の係数の量子化結果がそれぞれ有意係数、無意係数であるとすると、同じく期間2201において比較器2104は1を出力し、比較器9105は0を出力する。本実施形態では、量子化結果の判定が有意係数ならば判定結果として1、無意係数ならば判定結果として0で示すものとしている。これらの判定結果は判定結果保持装置9106へ入力され、保持される。また同じく期間9201において直交変換器9101より出力された2個の係数は、ブロックメモリ9103へと書き込まれる。
次に期間9202において次なる2個の係数が直交変換器9101より出力される。期間9202における直交変換器9101から出力される2個の係数の量子化結果がそれぞれ無意係数、無意係数であるとすると、同じく期間9202において比較器9104、比較器9105は共に0を出力する。これらの判定結果は判定結果保持装置9106へ入力され、保持される。また同じく期間9202において直交変換器9101より出力された2個の係数は、ブロックメモリ9103へと書き込まれる。以下同様にして1ブロック分の係数が2個ずつ直交変換器9101より出力され、ブロックメモリ9103へ順次書き込まれる一方、比較器9104及び比較器9105において判定がなされ、その判定結果が判定結果保持装置9106へ出力され、保持される。
期間9232において1ブロック分の書き込み期間が終了すると、期間9233からブロックメモリ9103からの読み出し期間が開始される。期間9233において、1ブロック分の判定結果が保持されている判定結果保持装置9106の判定結果をもとに、アドレス生成装置9107は、ブロックメモリ9103に対して読み出しアドレスを生成する。この読み出しアドレスとは、ブロックメモリ9103において直流成分、もしくは直流成分以外の有意係数が格納されたアドレスをジグザグスキャン順に列挙したものである。よって期間9233において、ブロックメモリ9103からアドレス生成装置9107により生成された読み出しアドレスを参照して、読み出しアドレスに格納された係数が1個読み出される。
また同じく期間9233において、デコーダ9108は、判定結果保持装置9106の判定結果をもとに、対応する係数の単位ブロック内における位置情報を出力する。また同じく期間9233において、除算器9109はブロックメモリ9103より出力された係数を、量子化閾値テーブル9102より出力された対応する量子化閾値を用いて量子化し、量子化結果を出力する。また、エントロピー符号化部9110はデコーダ9108の出力及び除算器9109の出力をもとに符号化を行なう。以下、同様にして単位ブロック内の最後の有意係数の処理が終了するまで、アドレスの生成、読み出し、ブロック内位置情報の生成、除算、エントロピー符号化が行われる。
期間9250において最初のブロックの最後の有意係数の処理が終了すると、期間9251において、次なるブロックの処理が開始される。すなわち、期間9251において直交変換器9101より次なるブロックの最初の2個の係数が出力される。
以下、同様にして直交変換のブロックを単位として処理が繰り返される。ここで注目すべきなのは、ブロック毎におけるブロックメモリからの読み出しの回数が、
1(直流成分の数)+処理該当単位ブロック内における直流成分以外の有意係数の数
で表されるということである。つまり、有意係数のみ(直流成分は除く)を除算器に投入することができ、除算器の非常に効率的な使用が可能となると共に、量子化処理を従来よりも高速に行うことができる。
[第3の実施形態]
本実施形態では、第2の実施形態とは異なる構成を備える符号化装置における符号化処理について以下説明する。図11に本実施形態における符号化装置の構成を示す。図11に示した符号化装置と図9に示した符号化装置との相違点は、量子化閾値テーブル9302から読み出される量子化閾値がブロックメモリ9303に出力されるようになった点である。なお、本実施形態においても直交変換器9301が行う直交変換として例えばDCT(離散コサイン変換)等が挙げられ、この場合、直交変換器9301として第1の実施形態に係る2次元DCT変換装置を用いてもよい。
図12に、図11に示した各部における動作のタイミングチャートを示す。尚、図中の”有”は有意係数を表し、”0”は無意係数を表している。
期間9401において、直交変換器9301より直交変換された係数の出力が開始される。期間9401における直交変換器9301から出力される2個の係数の量子化結果がそれぞれ有意係数、無意係数であるとすると、同じく期間9401において比較器9304は1を出力し、比較器9305は0を出力する。本実施形態でも第2の実施形態と同様に、量子化結果の判定が有意係数ならば判定結果として1、無意係数ならば判定結果として0で示すものとしている。これらの判定結果は判定結果保持装置9306へ入力され、保持される。また同じく期間9401において直交変換器9301より出力された2個の係数は、量子化閾値テーブル9302より読み出された対応する2個の量子化閾値と共に、ブロックメモリ9303へと書き込まれる。
次に期間9402において次なる2個の係数が直交変換器9301より出力される。期間9402における直交変換器9301から出力される2個の係数の量子化結果がそれぞれ無意係数、無意係数であるとすると、同じく期間9402において比較器9304、比較器9305は共に0を出力する。これらの判定結果は判定結果保持装置9306へ入力され、保持される。また同じく期間9402において直交変換器9301より出力された2個の係数は、量子化閾値テーブル9302より読み出された対応する2個の量子化閾値と共に、ブロックメモリ9303へと書き込まれる。
以下同様にして、1ブロック分の係数が2個ずつ直交変換器9301より出力され、ブロックメモリ9303へ順次書き込まれると共に、対応する量子化閾値が量子化閾値テーブル9302より読み込まれ、ブロックメモリ9303に順次書き込まれる。一方、比較器9304及び比較器9305において判定がなされ、その判定結果が判定結果保持装置9306へ出力され、保持される。
期間9432において1ブロック分の書き込み期間が終了すると、期間9433から読み出し期間が開始される。期間9433において、1ブロック分の判定結果が保持されている判定結果保持装置9306の判定結果をもとに、アドレス生成装置9307は、ブロックメモリに対して読み出しアドレスを生成する。この読み出しアドレスとは、ブロックメモリ9303において直流成分、もしくは直流成分以外の有意係数が格納されたアドレス、及び対応する量子化閾値が格納されたアドレスをジグザグスキャン順に列挙したものである。
同じく期間9433において、ブロックメモリ9303から、アドレス生成装置9307より出力されたアドレスに格納された係数が対応する量子化閾値と共に1ペア読み出される。また同じく期間9433において、デコーダ9308より、判定結果保持装置9306の判定結果をもとに、対応する係数の単位ブロック内における位置情報を出力する。また同じく期間9433において、除算器9309はブロックメモリ9303より出力された係数を、対応する量子化閾値を用いて量子化し、量子化結果を出力する。また、エントロピー符号化部9310はデコーダ9308の出力及び除算器9309の出力をもとに符号化を行なう。以下、同様にして単位ブロック内の最後の有意係数の処理が終了するまで、アドレスの生成、読み出し、ブロック内位置情報の生成、除算、エントロピー符号化が行われる。
期間9450において最初のブロックの最後の有意係数の処理が終了すると、期間9451において、次なるブロックの処理が開始される。すなわち、期間9451において直交変換器9301より次なるブロックの最初の2個の係数が出力される。以下、同様にして直交変換のブロックを単位として処理が繰り返される。
本実施形態によれば、量子化閾値テーブル9302からの量子化閾値の読み出しは1回(比較器9104,9105による読み出しのみ)だけなので、第2の実施形態(比較器9104,9105による読み出しと、除算器9109による読み出しの2回)よりも符号化処理全体をより高速に行うことができる。
以上の第2,3の実施形態によれば、回路規模の大きい除算器の数を増やすことなく、符号化処理の高速化が可能となる。例として、上記従来の符号化装置と上記第2,3の実施形態における符号化装置との処理サイクル数の比較について図14,15を用いて説明する。
図15は、図14に示す例においてジグザグスキャン順に2個ずつ係数を並べた図である。
まず、上記従来の符号化装置において、必要とされる処理サイクル数を示す(但し、ブロックメモリに書き込むサイクル数については省略する)。ここで、”有”は有意係数を、”0”は無意係数を表す。判定結果保持装置に同時に投入される2個の係数のペアのうち、(有、有)の数は7、(有、0)もしくは(0、有)の数は5、(0、0)の数は20であるので、処理サイクル数は以下のようになる。
7×2+5+20=39サイクル
一方、上記第2,3の実施形態における符号化装置では、直流成分以外の有効係数の数が18であるので、処理サイクル数は以下のようになる。
1+18=19サイクル
よって、上記第2、3の実施形態における符号化装置によって、上記例では20サイクルもの処理時間の低減が可能となる
なお、上記第2,3の実施形態の符号化装置による符号化方法を実行するプログラムは、情報処理装置、例えばパーソナルコンピュータやワークステーションなどに読み込ませることで、この情報処理装置が上記符号化装置として機能することから、上記符号化方法を実行するプログラムも本発明の範疇に含まれることは明らかである。また、このプログラムを格納し、上記情報処理装置に読み込ませるための記憶媒体、例えばCD−ROMやDVD−ROMなども同様である。
また、第2の実施形態、もしくは第3の実施形態に係る符号化装置(量子化装置)と第1の実施形態に係る符号化装置(2次元DCT変換装置)とを1つの装置(これを改めて符号化装置)としてもよい。この場合、この符号化装置は2次元DCT変換装置の出力結果である変換係数群に対して量子化装置が量子化を行い、更にエントロピ符号化を行う装置となる。上述の通り、2次元DCT変換装置、量子化装置の夫々が従来の夫々よりも高速に処理を行うことができるわけであるから、この符号化装置は、従来の符号化装置よりもより高速に符号化処理を行うことができる。
[第4の実施形態]
本実施形態では、符号化されたデータを復号する復号装置において、逆量子化処理を行う逆量子化装置について以下、説明する。なお、本実施形態では、0〜1024の定義域を有するデータを1〜255の定義域を有する量子化閾値を用いて量子化した量子化データを、この量子化閾値を用いて0〜1024の定義域を有するデータに逆量子化する例を示す。
図19は、量子化閾値の各値に対応する、乗算結果が1024を超えない量子化データの最大値と、対応するビット数と、逆量子化に使用する手段を表に表したものである。図19によると、量子化閾値が5〜16の範囲にある場合は、(量子化閾値5〜16が表現可能なビット数)×(1024/(5〜16)が表現可能なビット数)、すなわち、5ビット×8ビットのサイズの乗算器で逆量子化値を得ることができ、量子化閾値が17〜64の範囲にある場合は同様に7ビット×6ビットのサイズの乗算器で逆量子化値を得ることができ、量子化閾値が65〜255の範囲にある場合は8ビット×4ビットのサイズの乗算器で逆量子化値を得ることができることがわかる。従って、量子化閾値が5〜255の範囲にある場合は高々6ビット×8ビットのサイズの乗算器で逆量子化値を得ることができる。
また、量子化閾値が1の場合は乗算器を用いずに量子化データがそのまま逆量子化値となる。また、量子化閾値が2及び4の場合は量子化データを2倍、もしくは4倍することで逆量子化値を求めることができるので、量子化データを左に1ビット、もしくは2ビットビットシフトする。すなわち、このビットシフトを行う係数器を用いる。また、量子化閾値が3の場合は量子化データの3倍が逆量子化値となるので、量子化データの値と量子化データの2倍値との和を求める。すなわち、上記係数器(量子化データを左へ1ビットシフトする(2倍にする)係数器)と、この係数器の出力と量子化データとの加算を行う加算器とを用いる。
図18に本実施形態における逆量子化装置の構成を示す。同図において91001は係数器であり、量子化データを入力とし、出力として量子化データ値の4倍値を出力する。実際にはこの係数器91001は2ビット左シフトを実現するための配線接続により構成されるので、回路素子を必要としない。91002は係数器であり、量子化データを入力とし、出力として量子化データ値の2倍値を出力する。実際にはこの係数器91002は1ビット左シフトを実現するための配線接続により構成されるので、回路素子を必要としない。91003は加算器であり、量子化データと係数器91002の出力との和を出力する。すなわち、結果として加算器91003の出力は量子化データの3倍値と等価である。また、量子化データの下位8ビットは接続切り替え装置91004の入力1へと入力され、量子化閾値は接続切り替え装置91004の入力2へと入力される。
接続切り替え装置91004は、量子化閾値が17〜255の範囲にある場合は入力1の値を出力2へ、入力2の値を出力1へとそれぞれ出力し、量子化閾値がそれ以外の範囲にある場合は入力1の値を出力1へ、入力2の値を出力2へとそれぞれ出力する。91005は8ビット×6ビットのサイズの乗算器であり、8ビットの入力1と6ビットの入力2とをそれぞれ有し、この2つの入力の積を出力する。乗算器91005の入力1へは接続切り替え装置91004の出力1の出力が入力され、乗算器91005の入力2へは接続切り替え装置91004の出力2の出力のうち、下位6ビットが入力される。
係数器91001、加算器91003、係数器91002、乗算器91005のそれぞれの出力、及び量子化データは選択器91006へと入力され、選択器91006は量子化閾値の値に応じてこの5つの入力のうちただ一つを選択して出力する。また、選択器91006は上述の説明の通り、量子化閾値が1の場合は量子化データを、2の場合は係数器91002の出力を、3の場合は加算器91003の出力を、4の場合は係数器91001の出力を、それ以外の値の場合は乗算器91005の出力を選択して出力することで、選択器91006の出力は求める逆量子化値となる。
上記構成を備える逆量子化装置の動作について、いくつかの例を用いて以下、説明する。まず、量子化閾値が1であり量子化データが895である場合について説明する。選択器91006において、量子化閾値が1である場合には量子化データの値(すなわち895)が選択され、出力されるので逆量子化値として895なる値を得る。
次に、量子化閾値が2であり量子化データが512である場合について以下、説明する。量子化データは係数器91002において2倍され、1024なる値が選択器91006へと出力される。また、量子化閾値が2である場合には選択器91006では係数器91002の出力が選択され、出力されるので逆量子化値として1024なる値を得る。
次に、量子化閾値が3であり量子化データが198である場合について以下、説明する。量子化データは係数器91002において2倍され、396なる値が加算器91003へと入力される。一方、加算器91003の他の入力として、量子化データ198なる値が入力される。加算器91003では、396と198とを加算して594なる値を出力する。また、量子化閾値が3である場合には選択器91006では加算器91003の出力が選択され、出力されるので逆量子化値として594なる値を得る。
次に、量子化閾値が4であり量子化データが253である場合について以下、説明する。量子化データは係数器91001において4倍され、1012なる値が選択器91006へと出力される。また、量子化閾値が4である場合には選択器91006では係数器91001の出力が選択され、出力されるので逆量子化値として1012なる値を得る。
次に、量子化閾値が13であり量子化データが68である場合について以下、説明する。量子化データの下位8ビット、つまり68なる値が接続切り替え装置91004の入力1へと入力される。また、量子化閾値13なる値が接続切り替え装置91004の入力2へと入力される。量子化閾値の値は13であるので上記説明の通り、17〜255の範囲外にある。従って接続切り替え装置91004は、入力1の値(すなわち68)を出力1へ、入力2の値(すなわち13)を出力2へとそれぞれ出力する。よって、接続切り替え装置91004の出力1の値(すなわち68)は乗算器91005に入力され、接続切り替え装置91004の出力2の下位6ビットの値(すなわち13)は乗算器91005に入力される。従って乗算器91005は出力値として68×13=884を出力する。また、選択器91006は、量子化閾値が1,2,3,4のいずれにも該当しないので、乗算器91005の出力を選択して出力するので、逆量子化値として884なる値を得る。
次に、量子化閾値が86であり量子化データが9である場合について以下、説明する。量子化データの下位8ビット、つまり9なる値が接続切り替え装置91004の入力1へと入力される。また、量子化閾値86なる値が接続切り替え装置91004の入力2へと入力される。量子化閾値の値は86であるので上記説明の通り、17〜255の範囲内に該当する。従って接続切り替え装置91004は、入力1の値(すなわち9)を出力2へ、入力2の値(すなわち86)を出力1へとそれぞれ出力する。接続切り替え装置91004の出力1の値(すなわち86)が乗算器91005に入力され、接続切り替え装置91004の出力2の下位6ビットの値(すなわち9)が乗算器91005に入力される。従って乗算器91005は出力値として86×9=774を出力する。また、選択器91006は、量子化閾値が1,2,3,4のいずれにも該当しないので、乗算器91005の出力を選択して出力するので、逆量子化値として774なる値を得る。他の値についても同様に処理が行われ、逆量子化値が出力される。
このように、量子化閾値と量子化データの逆量子化結果が本来の定義域を超えない(本実施形態の場合1024を越えない)ことが保証されているシステムにおいては、本実施形態における構成を備える逆量子化装置を用いることが好適である。
この理由としては、量子化閾値と量子化データの逆量子化結果が本来の定義域を超えないことが保証されている場合、この本来の定義域に応じた量子化データと量子化閾値を用いていることに起因する。
また、本実施形態により、回路規模的に大きい乗算器のビット・サイズを低減して逆量子化装置を実現できる。また、本実施形態における逆量子化装置によれば、従来8ビット×11ビットのサイズの乗算器を用いていたところを、8ビット×6ビットのサイズの乗算器と加算器と若干のロジックを用いればよく、大幅に回路規模の削減を図ることができる。また、実行速度の点においても高速化が図れる。
[第5の実施形態]
本実施形態では、第4の実施形態で説明した逆量子化装置とは異なる構成、及び処理を行う逆量子化装置を示す。図20に本実施形態における逆量子化装置の構成を示す。
91201は係数器であり、量子化データを入力とし、4倍値を出力する。実際にはこの係数器91201は2ビット左シフトを実現するための配線接続により構成されるので、回路素子を必要としない。91202は係数器であり、量子化データを入力とし、2倍値を出力する。実際にはこの係数器91202は1ビット左シフトを実現するための配線接続により構成されるので、回路素子を必要としない。91203は加算器であり、量子化データと係数器91202の出力との和を出力する。結果として加算器91203の出力は量子化データの3倍値と等価である。また、量子化データはクランプ回路91204に入力される。
クランプ回路91204は、量子化閾値が17〜255の範囲にある場合において、入力された量子化データが63を超える場合は63を出力し(量子化データの補正)、入力された量子化データが63を超えない場合は入力された量子化データをそのまま出力する。一方、量子化閾値が17〜255以外の範囲にある場合には、入力された量子化データが255を超える場合は255を出力し、超えない場合は入力された量子化データをそのまま出力する。クランプ回路91204の出力は接続切り替え装置91205の入力1へと入力され、量子化閾値は接続切り替え装置91205の入力2へと入力される。
接続切り替え装置91205は、量子化閾値が17〜255の範囲にある場合は入力1の値を出力2へ、入力2の値を出力1へとそれぞれ出力し、量子化閾値がそれ以外の範囲にある場合は入力1の値を出力1へ、入力2の値を出力2へとそれぞれ出力する。91206は8ビット×6ビットのサイズの乗算器であり、8ビットの入力1と6ビットの入力2をそれぞれ有し、この2つの入力の積を出力する。乗算器91206の入力1へは接続切り替え装置91205の出力1の出力が入力され、乗算器91206の入力2へは接続切り替え装置91205の出力2の出力のうち、下位6ビットが入力される。係数器91201、加算器91203、係数器1202、及び乗算器1206のそれぞれの出力、及び量子化データは選択器91207へと入力され、選択器91207は量子化閾値の値に応じてこの5つの入力のうちただ一つを選択して出力する。
また、選択器91207は量子化閾値が1の場合は量子化データを、2の場合は係数器91202の出力を、3の場合は加算器91203の出力を、4の場合は係数器91201の出力を、それ以外の値の場合は乗算器91206の出力を選択して出力する。選択器91207の出力はクランプ回路91208へ入力され、クランプ回路91208は選択器91207の出力の値が1024を超える場合は1024を、超えない場合は選択器91207の出力の値をそのまま出力する。クランプ回路91208の出力は求める逆量子化値となる。
上記構成を備える逆量子化装置の動作について、いくつかの例を用いて以下、説明する。
まず、量子化閾値が1であり量子化データが895である場合について以下、説明する。選択器91207において、量子化閾値が1である場合には量子化データの値(すなわち895)が選択され、出力されるので895なる値がクランプ回路91208へと入力される。895なる値は1024以下であるので、クランプ回路91208は入力をそのまま出力する。従って、逆量子化値として895なる値を得る。
次に、量子化閾値が2であり量子化データが513である場合について以下、説明する。量子化データは係数器91202において2倍され、1026なる値が選択器91207へと出力される。また、量子化閾値が2である場合には選択器91207では係数器91202の出力が選択され、出力されるので1026なる値がクランプ回路91208へと入力される。1026なる値は1024を超えているので、クランプ回路91208は値として1024を出力する。従って、逆量子化値として1024なる値を得る。
次に、量子化閾値が3であり量子化データが198である場合について以下、説明する。量子化データは係数器91202において2倍され、396なる値が加算器91203へと入力される。一方、加算器91203の他の入力として、量子化データ198なる値が入力される。加算器91203では、396と198とを加算して594なる値を出力する。また、量子化閾値が3である場合には選択器91207では加算器91203の出力が選択され、出力されるので594なる値がクランプ回路91208へと入力される。594なる値は1024以下であるので、クランプ回路91208は入力をそのまま出力する。従って、逆量子化値として594なる値を得る。
次に、量子化閾値が4であり量子化データが253である場合について以下、説明する。量子化データは係数器91201において4倍され、1012なる値が選択器91207へと出力される。また、量子化閾値が4である場合には選択器91207では係数器91201の出力が選択され、出力されるので1012なる値がクランプ回路91208へと入力される。1012なる値は1024以下であるので、クランプ回路91208は入力をそのまま出力する。従って、逆量子化値として1012なる値を得る。
次に、量子化閾値が14であり量子化データが73である場合を例として、以下説明する。73なる値を持つ量子化データはクランプ回路91204へと入力される。また、14なる値を持つ量子化閾値もクランプ回路91204へと入力される。クランプ回路91204は、量子化閾値が17〜255以外の範囲にありかつ量子化データが255を超えていないので、量子化データの値(すなわち73)をそのまま出力する。クランプ回路91204の出力、つまり73なる値は接続切り替え装置91205の入力1へと入力される。また、量子化閾値14なる値が接続切り替え装置91205の入力2へと入力される。量子化閾値の値は14であるので17〜255の範囲外にある。従って接続切り替え装置91205は、入力1の値(すなわち73)を出力1へ、入力2の値(すなわち14)を出力2へとそれぞれ出力する。接続切り替え装置91205の出力1の値(すなわち73)が乗算器91206に入力され、接続切り替え装置91205の出力2の下位6ビットの値(すなわち14)が乗算器91206に入力される。従って乗算器91206は出力値として73×14=1022を出力する。
また、選択器91207においては、量子化閾値が1,2,3,4のいずれにも該当しないので、乗算器91206の出力を選択して出力するので1022なる値がクランプ回路91208へと入力される。1022なる値は1024以下であるので、クランプ回路91208は入力をそのまま出力する。従って、逆量子化値として1022なる値を得る。
次に、量子化閾値が65であり量子化データが66である場合を例として、以下説明する。66なる値を持つ量子化データはクランプ回路91204へと入力される。また、65なる値を持つ量子化閾値もクランプ回路91204へと入力される。クランプ回路91204は、量子化閾値が17〜255の範囲内にありかつ量子化データが63を超えているので、63を出力する。クランプ回路91204の出力、つまり63なる値は接続切り替え装置91205の入力1へと入力される。また、量子化閾値65なる値が接続切り替え装置91205の入力2へと入力される。量子化閾値の値は65であるので17〜255の範囲内に該当する。従って接続切り替え装置91205は、入力1の値(すなわち63)を出力2へ、入力2の値(すなわち65)を出力1へとそれぞれ出力する。接続切り替え装置91205の出力1の値(すなわち65)が乗算器91206の入力1に入力され、接続切り替え装置91205の出力2の下位6ビットの値(すなわち63)が乗算器91206の出力2に入力される。従って乗算器91206は出力値として65×63=4095を出力する。
また、選択器91207においては、量子化閾値が1,2,3,4のいずれにも該当しないので、乗算器91206の出力を選択して出力するので4095なる値がクランプ回路91208へと入力される。4095なる値は1024を超えているので、クランプ回路91208は値として1024を出力する。従って、逆量子化値として1024なる値を得る。他の値についても同様に処理が行われ、逆量子化値が出力される。
なお、上記第4,5の実施形態の逆量子化装置による逆量子化方法を実行するプログラムは、情報処理装置、例えばパーソナルコンピュータやワークステーションなどに読み込ませることで、この情報処理装置が上記逆量子化装置として機能することから、上記逆量子化方法を実行するプログラムも本発明の範疇に含まれることは明らかである。また、このプログラムを格納し、上記情報処理装置に読み込ませるための記憶媒体、例えばCD−ROMやDVD−ROMなども同様である。
[他の実施形態]
本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体(または記録媒体)を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。