(57)【特許請求の範囲】
【請求項１】
入力される静止画像に対応した画像データを直交変換することにより、ビット列で表される直交変換係数を求める直交変換手段と、
前記直交変換係数が負の値である場合には前記直交変換係数を−１で掛け算して正の値に変換する手段と、
はじめから正の値である、もしくは−１が掛け算されたことにより正の値になった前記直交変換係数のビット列を上位ビット列と下位ビット列に分離することにより、前記上位ビット列で表される上位直交変換係数と前記下位ビット列で表される下位直交変換係数を求めるビット分離手段と、
前記下位直交変換係数の前記下位ビット列に対し、前記直交変換係数が正の値である場合には正の付加符号ビット、前記直交変換係数が負の値である場合には負の付加符号ビットを付加する付加手段と、
０の値である前記上位直交変換係数に基いてゼロラン長を求め、０の値ではない前記上位直交変換係数をグループ表に基いてグループ分けすることにより有効係数のグループ番号とそれに対応した付加ビットを求める手段と、
前記ゼロラン長と前記有効係数のグループ番号に基いてハフマンテーブルを参照することにより符号語を求め、前記符号語と前記付加ビットを組み合わせることにより圧縮画像データを求める符号化手段と、
を備えたことを特徴とする画像圧縮装置。
【請求項２】
前記ビット分離手段が、量子化された前記直交変換係数のビット列をビット分離することを特徴とする請求項１に記載の画像圧縮装置。
【請求項３】
前記ビット分離手段が、前記直交変換係数のビット列を右シフト演算し、前記右シフト演算により変換される前記直交変換係数のビット列を前記上位ビット列、前記右シフト演算により分離される下位ビットを前記下位ビット列とすることを特徴とする請求項１に記載の画像圧縮装置。
【請求項４】
前記グループ表が、正の値である前記有効係数のグループと、前記有効係数のグループ番号と、前記付加ビットのビット数とを示す欄により構成されている表であることを特徴とする請求項１に記載の画像圧縮装置。
【請求項５】
前記圧縮画像データから前記付加ビットを除いた前記符号語に基いて前記ハフマンテーブルを参照することにより前記ゼロラン長と前記有効係数のグループ番号を求める復号化手段と、
前記グループ表を参照することにより、前記付加ビットと前記有効係数のグループ番号から０の値ではない前記上位直交変換係数を求め、前記ゼロラン長から０の値である前記上位直交変換係数を求める手段と、
前記付加符号ビットを除いた前記下位直交変換係数と前記上位直交変換係数をビット合成することにより、前記直交変換係数を求めるビット合成手段と、
前記下位量子化ＤＣＴ係数に付加された付加符号ビットが負である場合には、前記ビット合成手段により得られた前記直交変換係数に−１を掛け算して負の値に変換する手段と、
前記直交変換係数を逆直交変換することにより、前記画像データを求める逆直交変換手段と、
を備えたことを特徴とする画像伸張装置。
【請求項６】
前記逆直交変換手段が、逆量子化された直交変換係数を逆直交変換することを特徴とする請求項５に記載の画像伸張装置。
【請求項７】
前記ビット合成手段が、前記上位直交変換係数のビット列を左シフト演算し、前記左シフト演算により空白になるビット部分に前記下位ビット列を当てはめることにより、前記直交変換係数を求めることを特徴とする請求項５に記載の画像伸張装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、カラー静止画像を圧縮し、伸張する画像圧縮装置および画像伸張装置に関する。
【０００２】
【従来の技術】
カラー静止画像を圧縮することによって通信回路を介した画像の転送を効率的に行うため、ＪＰＥＧ（Joint Photographic Expert Group)方式と呼ばれる画像圧縮方式が標準化されている。ＪＰＥＧ方式のベースラインプロセスでは、まず画像データを離散コサイン変換することによって空間周波数成分ごとに分解し、空間周波数成分毎に表されたデータを量子化し、量子化されたデータを符号化（圧縮）する。符号化された画像データは、復号化し、逆量子化し、逆離散コサイン変換することによって伸張され、これにより元の画像が復元される。
【０００３】
【発明が解決しようとする課題】
このようなＪＰＥＧ方式によれば、高解像度の画像を効率的に圧縮することができるが、圧縮、伸張の過程で何らかの歪みが発生するため圧縮された画像には劣化が生じる。そのためＪＰＥＧ方式には画像に歪みが付加されない可逆符号化方式も提案されているが、この方式では高解像度の画像を効率的に圧縮できない。
【０００４】
本発明は、高解像度の画像を効率的に圧縮するＪＰＥＧ方式を取り入れながら、歪みを発生させず、画像劣化を生じさせないように画像を圧縮、伸張するための画像圧縮装置および画像伸張装置を得ることを目的としている。
【０００５】
【課題を解決するための手段】
本発明の画像圧縮装置は、入力される静止画像に対応した画像データを直交変換することにより、ビット列で表される直交変換係数を求める直交変換手段と、直交変換係数が負の値である場合には直交変換係数を−１で掛け算して正の値に変換する手段と、はじめから正の値であるもしくは−１が掛け算されたことにより正の値になった直交変換係数のビット列を上位ビット列と下位ビット列に分離することにより、前記上位ビット列で表される上位直交変換係数と前記下位ビット列で表される下位直交変換係数を求めるビット分離手段と、下位直交変換係数の下位ビット列に対し、直交変換係数が正の値である場合には正の付加符号ビット、直交変換係数が負の値である場合には負の付加符号ビットを付加する手段と、０の値である上位直交変換係数に基いてゼロラン長を求め、０の値ではない上位直交変換係数をグループ表に基いてグループ分けすることにより有効係数のグループ番号とそれに対応した付加ビットを求める手段と、ゼロラン長と有効係数のグループ番号をハフマンテーブルに照らし合わせることにより符号語を求め、符号語と付加ビットを組み合わせることにより圧縮画像データを求める符号化手段とを備えたことを特徴とする。
【０００６】
ビット分離手段は、量子化された直交変換係数のビット列をビット分離することが望ましい。
【０００７】
ビット分離手段は、直交変換係数のビット列を右シフト演算し、右シフト演算により変換される直交変換係数のビット列を上位ビット列、右シフト演算により分離される下位ビットを下位ビット列とすることが望ましい。
【０００８】
グループ表が、正の値である有効係数のグループと、有効係数のグループ番号と、付加ビットのビット数とを示す欄により構成されている表であることが望ましい。
【０００９】
本発明の画像伸張装置は、圧縮画像データから付加ビットを除いた符号語をハフマンテーブルに照らし合わせることによりゼロラン長と有効係数のグループ番号を求める復号化手段と、グループ表を参照することにより、付加ビットおよび有効係数のグループ番号から０の値ではない上位直交変換係数を求め、ゼロラン長から０の値である上位直交変換係数を求める手段と、付加符号ビットを除いた下位直交変換係数と上位直交変換係数をビット合成することにより、直交変換係数を求めるビット合成手段と、下位量子化ＤＣＴ係数に付加された付加符号ビットが負である場合には、ビット合成手段により得られた直交変換係数を−１で掛け算して負の値に変換する手段と、直交変換係数を逆直交変換することにより、画像データを求める逆直交変換手段とを備えたことを特徴とする。
【００１０】
逆直交変換手段は、逆量子化された直交変換係数を逆直交変換することが望ましい。
【００１１】
ビット合成手段は、上位直交変換係数のビット列を左シフト演算し、左シフト演算により空白になるビット部分に下位ビット列を当てはめることにより直交変換係数を求めることが望ましい。
【００１２】
【発明の実施の形態】
以下、本発明の実施形態である画像圧縮装置および画像圧縮装置について図面を参照して説明する。
図１は、本発明の一実施形態例である画像圧縮装置のブロック図である。
【００１３】
被写体像１１( 静止画像）は、レンズ１２を介して固体撮像素子１３の受光面上に結像される。固体撮像素子１３の受光面には光電変換素子が配設され、光電変換素子の上面にはレッド（Ｒ）、グリーン（Ｇ）、ブルー（Ｂ）の各色フィルタ要素からなるカラーフィルタが設けられている。各光電変換素子は一つの画素データに対応しており、被写体像は各光電変換素子によって所定の色に対応した電気的な画像信号に変換される。そして画像信号は、Ａ／Ｄ変換器( 図示せず）においてアナログ信号からデジタル信号に変換される。
【００１４】
デジタル化された画像信号は、信号処理回路（図示せず）において輝度データＹ、色差データＣｂ、Ｃｒに変換されて画像メモリ１４に画像データとして記録される。画像メモリ１４には、輝度データＹおよび色差データＣｂ、Ｃｒがそれぞれ独立した領域に格納されており、各メモリ領域は１画像分の記憶容量を有している。輝度データＹおよび色差データＣｂ、Ｃｒは、画像圧縮装置１０に対する入力データである。
【００１５】
輝度データＹおよび色差データＣｂ、Ｃｒは、１画面において複数のブロックに分割され、ブロック単位で処理される。各ブロックは、８×８個の画素データからなる。
【００１６】
画像メモリ１４から読み出された輝度データＹおよび色差データＣｂ、Ｃｒは、画像圧縮装置１０に入力される。画像圧縮装置１０は、離散コサイン変換（ＤＣＴ演算）部１５、量子化部１６、ビット分離部１７、ゼロラン・グループ部１８、ハフマン符号化部１９から構成されている。輝度データＹおよび色差データＣｂ、Ｃｒは、画像圧縮装置１０においてそれぞれ別々に圧縮処理される。
【００１７】
入力された輝度データＹおよび色差データＣｂ、Ｃｒは、ＤＣＴ演算部１５において、ＤＣＴ演算が施される。ＤＣＴ演算は直交変換の一つであり、画像データは空間周波数成分毎に分解されてＤＣＴ係数に変換される。
【００１８】
輝度データＹおよび色差データＣｂ、ＣｒのＤＣＴ係数は、量子化部１６において量子化され、量子化ＤＣＴ係数に変換される。この量子化は線形量子化であり、８×８＝６４個の量子化係数から構成される量子化テーブルＱを用いて量子化される。すなわち、ＤＣＴ係数がそれぞれに対応する量子化係数で割り算され、余りが丸められる。量子化テーブルＱとして、輝度データＹ用の量子化テーブルＱy 、色差データＣｂ，Ｃｒ用の量子化テーブルＱc がそれぞれ設けられている。
【００１９】
輝度データＹおよび色差データＣｂ、Ｃｒは、画像圧縮装置１０内において２進数のビット列で表されており、輝度データＹおよび色差データＣｂ、Ｃｒの量子化ＤＣＴ係数も２進数のビット列で表される。量子化ＤＣＴ係数のビット列は、ビット分離部１７においてビット分離され、上位量子化ＤＣＴ係数のビット列（上位ビット列）と下位量子化ＤＣＴ係数のビット列（下位ビット列）に分離される。そして下位量子化ＤＣＴ係数のビット列に対し、付加符号ビットが付加されることにより、符号付下位量子化ＤＣＴ係数が求められる。符号付下位量子化ＤＣＴ係数は、符号化（圧縮）されずに記録媒体Ｍの符号付下位記録領域Ｍ３に記録される。
【００２０】
輝度データＹおよび色差データＣｂ、Ｃｒの上位量子化ＤＣＴ係数はゼロラン・グループ部１８においてグループ表Ｔに基いてグループ分けされ、グループ番号とゼロラン長および付加ビットが求められる。グループ表Ｔは、グループ番号を示す欄と、０以外の値である上位量子化ＤＣＴ係数を示す欄と、付加ビットのビット数、すなわち付加ビット数を示す欄から構成されている。
【００２１】
グループ分けにより得られたグループ番号およびゼロラン長に基いてハフマンテーブルＨを参照することにより、符号語がハフマン符号化部１９において求められる。ハフマンテーブルＨはＪＰＥＧで通常用いられているハフマンテーブルを適用し、輝度データＹ用のハフマンテーブルＨy と色差データＣｂ，Ｃｒ用のハフマンテーブルＨc がそれぞれ設けられている。そして、符号語と付加ビットが組み合わされた圧縮画像データ（符号化データ）が、記録媒体Ｍの圧縮画像データ記録領域Ｍ２に記録される。また輝度データＹ用の量子化テーブルＱy および色差データ用Ｃｂ，Ｃｒ用の量子化テーブルＱc も記録媒体Ｍの量子化テーブル記録領域Ｍ１に記録される。
【００２２】
図２、図３を用いて、８×８のマトリクスで表された１つの画素ブロックに対する圧縮処理を説明する。
【００２３】
図２には、輝度データＹの画素ブロックＰと、ＤＣＴ係数行列Ｃと、量子化テーブルＱと、量子化ＤＣＴ係数行列Ｄとがそれぞれ８×８のマトリクスで例示されている。各マトリクスの要素は、それぞれ画素値Ｐyx、ＤＣＴ係数Ｃji、量子化係数Ｑji、量子化ＤＣＴ係数Ｄjiと表される。
【００２４】
画素値Ｐyxは輝度データＹの値である。画素値Ｐyxにおいて、添字ｙは縦方向の位置を示し、上から０，１，２，・・・７である。また添字ｘは横方向の位置を示し、左から０，１，２，・・・７である。例えば、ｙ＝１、ｘ＝１の場合、画素値Ｐ11＝１６２である。
【００２５】
ＤＣＴ係数Ｃji、量子化テーブルＱji、量子化ＤＣＴ係数Ｄjiにおける添字ｊは、添字ｙと同じように縦方向の位置を示し、上から０，１，２，・・・７である。また添字ｉは、添字ｘと同じように横方向の位置を示し、左から０，１，２，・・・７である。例えば、ｊ＝１、ｉ＝１の場合、ＤＣＴ係数Ｃ11の値は３６である。
【００２６】
まず画素ブロックＰの各画素値Ｐyxは、ＤＣＴ演算によってＤＣＴ係数Ｃjiに変換される。ＤＣＴ係数行列Ｃのなかで位置（０，０）にあるＤＣＴ係数Ｃ00はＤＣ成分であり、残りの位置にあるＤＣＴ係数ＣjiはＡＣ成分である。ＤＣ成分は画素ブロックＰの画素値Ｐyxの平均値を表し、空間周波数は０である。一方ＡＣ成分は、ＤＣＴ係数Ｃ01ないしＣ10からＤＣＴ係数Ｃ77の方向に向かって、より高い空間周波数成分の値が画素ブロックＰの中にどれほどあるかを表す。このように画素ブロックＰは、ＤＣＴ演算によって空間周波数成分毎に分解される。
【００２７】
次に各ＤＣＴ係数Ｃjiは量子化され、量子化ＤＣＴ係数Ｄjiが求められる。すなわち、各ＤＣＴ係数Ｃjiがそれぞれ対応する量子化係数Ｑjiで割り算され、余りが丸められる。ほぼ無歪みの画像圧縮処理をするため、量子化テーブルＱは高圧縮な画像処理に対応した量子化テーブルではなく、なるべく小さい値の量子化係数Ｑjiによって構成されている。
【００２８】
例えばＤＣＴ係数Ｃ03（＝５）が量子化係数Ｑ03（＝２）で割り算されて余りが丸められる（四捨五入される）ことにより、量子化ＤＣＴ係数Ｄ03（＝３）が求められる。
【００２９】
図３には、量子化ＤＣＴ係数行列Ｄと、上位量子化ＤＣＴ係数行列ＤＨと、下位量子化ＤＣＴ係数行列ＤＬと、符号付下位量子化ＤＣＴ係数行列ＦＬとが８×８のマトリクスで例示されている。各マトリクスの要素は、それぞれ量子化ＤＣＴ係数Ｄji、上位量子化ＤＣＴ係数ＤＨji、下位量子化ＤＣＴ係数ＤＬji、符号付下位量子化ＤＣＴ係数ＦＬjiと表される。
【００３０】
各量子化ＤＣＴ係数Ｄjiは、ビット分離により上位量子化ＤＣＴ係数ＤＨjiと下位量子化ＤＣＴ係数ＤＬjiに分離される。すなわち、量子化ＤＣＴ係数Ｄjiのビット列が上位ビット列と下位ビット列に分離され、上位ビット列で表される上位量子化ＤＣＴ係数ＤＨjiと下位量子化ＤＣＴ係数ＤＬjiが求められる。このとき、正の値である量子化ＤＣＴ係数Ｄjiはそのままビット分離されるが、負の値である量子化ＤＣＴ係数Ｄjiは−１が掛け算され正の値に変換された後ビット分離される。ここでビット分離されるビット数は１ビットであり、１ビットもビット列として扱う。
【００３１】
例えば量子化ＤＣＴ係数Ｄ23（＝−１）のビット列は、−１が掛け算されて１の値に変換された後に上位ビット列と下位ビット列に分離され、上位ビット列で表される上位量子化ＤＣＴ係数ＤＨ23（＝０）と下位ビット列で表される下位量子化ＤＣＴ係数ＤＬ23（＝１）が求められる。なお、ビット分離に関しては後述する。
【００３２】
そして下位量子化ＤＣＴ係数ＤＬjiの下位ビット列に対し、付加符号ビットが付加される。このとき、正の値である量子化ＤＣＴ係数Ｄjiのビット列がビット分離されたときには正の付加符号ビット（＋）、負の値である量子化ＤＣＴ係数Ｄjiのビット列がビット分離されたときには負の付加符号ビット（−）が下位量子化ＤＣＴ係数ＤＬjiに付加される。そして、負の付加符号ビット（−）が付加された下位量子化ＤＣＴ係数ＤＬjiを符号付下位量子化ＤＣＴ係数ＦＬjiとして表す。一方、正の値である量子化ＤＣＴ係数Ｄjiがビット分離されることにより得られた下位量子化ＤＣＴ係数ＤＬjiに対しては、正の付加符号ビット（＋）が付加される。
【００３３】
例えば下位量子化ＤＣＴ係数ＤＬ23（＝１）のビット列に負の付加符号ビット（−）が付加されることにより、符号付下位量子化ＤＣＴ係数ＦＬ23（＝（−）１）が求められる。ただし、ここでは符号付下位量子化ＤＣＴ係数ＦＬ23の値が−１であるわけではなく、１の値に付加符号ビット（−）が付加されていることを表している。
【００３４】
図３、図４を用いてビット分離を詳述する。そのため、量子化ＤＣＴ係数Ｄjiをビット列で表す。１つのＤＣＴ係数Ｃjiには通常１６ビットが割り当てられるが、量子化ＤＣＴ係数Ｄjiの値は１６ビットのうち１２ビットを使用して表される。正負の値をとるＡＣ成分の量子化ＤＣＴ係数Ｄjiの場合、１ビットは符号ビットとして使われ、１１ビットを使用して量子化ＤＣＴ係数Ｄjiの値が２進数で表される。
【００３５】
図４では、ＡＣ成分の量子化ＤＣＴ係数Ｄ23（＝−１）に対する１ビットのビット分離を示している。
【００３６】
量子化ＤＣＴ係数Ｄ23（＝−１）は、２進法で表すと「１１１１１１１１１１１」であり、符号ビットＦは負を示す「１」である。１６ビットのビット列Ｂ０において、２進数「１１１１１１１１１１１」は右端から１１ビットを使用して表され、符号ビットＦはビット列Ｂ０の左端にある最上位ビットに置かれる。なお、使用されていない４ビットＪ０は「１１１１」である。
【００３７】
量子化ＤＣＴ係数Ｄ23（＝−１）は、−１が掛け算されることで値が１に変換され、それによりビット列Ｂ０はビット列Ｂ１に変換される。ビット列Ｂ１において、１１ビットを使用して２進数「００００００００００１」が表され、符号ビットＦは正を示す「０」である。さらに使用されていない４ビットＪ０は「００００」となる。
【００３８】
ビット分離の実行により、ビット列Ｂ１は右シフト演算される。右シフト演算とは、各ビットを指定されたビット数だけ右に桁移動させる演算である。１ビットの右シフト演算が実行されると、各ビットが右に１つずつ移動させられ、「１」である最下位ビットＫは分離される。そして右シフト演算によって空白になった左端の最上位ビットには「０」である符号ビットＦが当てはめられる。
【００３９】
このような右シフト演算により、ビット列Ｂ１は１０ビットを使用して２進数「００００００００００」が表されるビット列Ｂ２に変換される。このビット列Ｂ２が上位ビット列であり、２進数「００００００００００」を１０進法で表した値が上位量子化ＤＣＴ係数ＤＨ23の値となる。すなわち、上位量子化ＤＣＴ係数ＤＨ23の値は０である。
【００４０】
一方、右シフト演算により分離された最下位ビットＫが下位ビット列であり、最下位ビットＫの値が下位量子化ＤＣＴ係数ＤＬ23の値となる。２進数「１」は１０進法で１と表され、下位量子化ＤＣＴ係数ＤＬ23の値は１である。
【００４１】
量子化ＤＣＴ係数Ｄ23（＝−１）が負の値であるため、下位量子化ＤＣＴ係数ＤＬ23（＝１）に対して付加符号ビットＦ（−）が付加され、符号付下位量子化ＤＣＴ係数ＦＬ23（＝（−）１）が求められる。付加符号ビットＦ（−）は、負を示す「１」である。
【００４２】
このように量子化ＤＣＴ係数Ｄ23（＝−１）のビット列は、−１が掛け算されて値が１に変換された後ビット分離され、上位ビット列で表される上位量子化ＤＣＴ係数ＤＨ23（＝０）と下位ビット列で表される下位量子化ＤＣＴ係数ＤＬ23（＝１）が求められる。そして、下位量子化ＤＣＴ係数ＤＬ23（＝１）のビット列に対して負の付加符号ビットＦ（−）が付加され、符号付下位量子化ＤＣＴ係数ＦＬ23（＝（−）１）が求められる。
【００４３】
正の値である量子化ＤＣＴ係数Ｄjiに対してビット分離を実行する場合、量子化ＤＣＴ係数Ｄjiはそのままビット分離される。そしてビット分離により得られる下位量子化ＤＣＴ係数ＤＬjiは正の付加符号ビットＦ（＋）が付加される。符号ビットＦ（＋）は、正を示す「０」である。
【００４４】
以上のようにＡＣ成分である量子化ＤＣＴ係数Ｄjiのビット列は、上位ビット列と下位ビット列に分離され、上位ビット列で表される上位量子化ＤＣＴ係数ＤＨjiと下位ビット列で表される下位量子化ＤＣＴ係数ＤＬjiが求められる。そして下位量子化ＤＣＴ係数ＤＬjiには、付加符号ビットＦ（＋）もしくはＦ（−）が付加される。
【００４５】
ＤＣ成分である量子化ＤＣＴ係数Ｄ00もＡＣ成分の量子化ＤＣＴ係数Ｄjiと同じようにビット分離することができる。ただし、ビット分離を実行することにより空白になるビット列の最上位ビットには「０」である符号ビットＦが当てはめられる。
【００４６】
なお、２ビット、３ビットのビット分離を実行する場合、２ビット、３ビットの右シフト演算が実行される。
【００４７】
図５〜図８を用いて、上位量子化ＤＣＴ係数ＤＨjiに対する符号化を詳述する。ただし、輝度データＹの上位量子化ＤＣＴ係数ＤＨjiを符号化の対象とする。図５には、図３とは異なる上位量子化ＤＣＴ係数行列ＤＨが示されている。
【００４８】
まずＤＣ成分の上位量子化ＤＣＴ係数ＤＨ00は、ＤＣ成分用のグループ表（図示せず）およびハフマンテーブル（図示せず）に基いて符号化される。
【００４９】
次にＡＣ成分の上位量子化ＤＣＴ係数ＤＨjiを符号化する。上位量子化ＤＣＴ係数行列ＤＨは、図５で示された矢印方向の順序でジグザグスキャンされ、１次元の列に並び替えられる。１次元の列は、（２５，０，０，３，０，０，０，０，０，１，０，・・・・）であり、この列の左から順番に上位量子化ＤＣＴ係数ＤＨjiが符号化される。
【００５０】
０以外の値である上位量子化ＤＣＴ係数ＤＨjiは有効係数Ｚm である。添字ｍは列の順番を表す。例えば上位量子化係数ＤＣＴ係数ＤＨ40（＝１）は、有効係数Ｚ10（＝１）である。
【００５１】
上位量子化ＤＣＴ係数ＤＨjiの値が０である場合、次の有効係数Ｚm まで連続する０の数がカウントされる。これにより０が連続する長さ、すなわちゼロラン長Ｒが求められる。
【００５２】
例えば、有効係数Ｚ4 （＝３）の前には０が２つ並んでいることから、ゼロラン長Ｒは「２」である。
【００５３】
有効係数Ｚm は、グループ表（図６）に基いてグループ分けされる。グループ表は、有効係数Ｚm の属するグループと、そのグループのグループ番号Ｃと、それに対応する付加ビット数を示している。このグループ分けにより、有効係数Ｚm が属するグループのグループ番号Ｃとそれに対応した付加ビットが求められる。グループ表Ｔ０はＪＥＰＧで適用されているグループ表であり、グループ表Ｔ１は本実施形態で適用されるグループ表である。
【００５４】
例えばグループ表Ｔ０を参照して有効係数Ｚ1 （＝２５）をグループ分けすると、グループ番号［５］が得られ、付加ビット数は５となる。一方グループ表Ｔ１を参照してグループ分けすると、グループ番号［５］が得られ、付加ビット数は４となる。
【００５５】
グループ分けにより得られたグループ番号Ｃと付加ビット数に基いて、付加ビットが求められる。付加ビットは、グループにおいて有効係数Ｚm の値を特定するために設けられたビットである。
【００５６】
例えば、グループ表Ｔ１を参照して有効係数Ｚ1 （＝２５）をグループ分けすると、グループ番号［５］が得られ、付加ビット数は４となる。２５はグループ番号［５］の一番小さい有効係数１６よりも９だけ大きい数であることから、９を２進法で表現した付加ビット「１００１」が求められる。また、有効係数Ｚ10（＝１）をグループ分けすると、グループ番号［１］が得られ、付加ビット数は０となる。グループ番号［１］において有効係数Ｚ10は特定できるため、付加ビットは必要としない。
【００５７】
図７では、図６のグループ表Ｔ０とグループ表Ｔ１それぞれを参照することにより得られる符号ビットと、ゼロラン長と、グループ番号から求められる符号化データを示している。
【００５８】
本実施形態で設けられたハフマンテーブルＨ( 図８）を参照することにより、有効係数Ｚm のグループ番号Ｃとゼロラン長Ｒに対する符号語が求められる。ハフマンテーブルＨは、ゼロラン長Ｒとグループ番号Ｃを示す欄と、符号語を示す欄と、この符号語の符号長を示す欄から構成され、有効係数Ｚm のグループ番号Ｃとゼロラン長Ｒに対応した符号語を有している。
【００５９】
本実施形態で設けられたグループ表Ｔ１に基いて有効係数Ｚ1 （＝２５）をグループ分けすると、グループ番号［５］、付加ビット「１００１」が得られ、ゼロラン長Ｒは［０］である。ハフマンテーブルＨを参照すれば、ゼロラン長Ｒ／グループ番号Ｃは［０］／［５］であるから、符号語「１１０１０」が求められる。
【００６０】
そしてこの符号語「１１０１０」と付加ビット「１００１」を組み合わせることにより、有効係数Ｚ1 （＝２５）の符号化データ「１１０１０１００１」が求められる。有効係数Ｚ4 （＝３）およびＺ10（＝１）に対しても、同じように符号化データ「１１１１１００１１」および「１１１１０１０」が求められる。
【００６１】
このように順次有効係数Ｚm を符号化していくことで、ＡＣ成分の上位量子化ＤＣＴ係数ＤＨjiに対する符号化データが求められる。
【００６２】
一方、従来用いられているグループ表Ｔ０に基いて有効係数Ｚ1 （＝２５）をグループ分けすると、グループ番号［５］、付加ビット「１１００１」が得られ、ゼロラン長Ｒは［０］であることから、符号化データ「１１０１０１１００１」が求められる。この符号化データ「１１０１０１１００１」のビット数は、グループ表Ｔ１に基いて得られた符号化データ「１１０１０１００１」に比べて１ビット多い。
【００６３】
従ってグループ表Ｔ１に基いて得られる符号化データのビット数、すなわち情報量がグループ表Ｔ０に基いて得られる符号化データの情報量に比べて少なくて済む。
【００６４】
図９は、量子化ＤＣＴ係数行列に対するｎビットのビット分離の手順を示すフローチャートである。図３、図９を用いてビット分離のフローチャートを説明する。
【００６５】
ステップ２０１では、添字ｊが０に設定される。ステップ２０２では、添字ｉが０に設定され、行列の横方向を表す行の中で最も左側の量子化ＤＣＴ係数Ｄjiがビット分離の対象とされる。最初に量子化ＤＣＴ係数Ｄ00（＝１３１）がビット分離の対象とされる。
【００６６】
ステップ２０３では、量子化ＤＣＴ係数Ｄjiの値が０以上であるか否かが判定される。量子化ＤＣＴ係数Ｄjiの値が０以上であると判定されると、ステップ２０４に移り、正の付加符号ビットＦ（＋）が設けられる。量子化ＤＣＴ係数Ｄjiの値が０未満であると判断された場合、ステップ２０５に移る。
【００６７】
ステップ２０５では、負の付加符号ビットＦ（−）が設けられる。そしてステップ２０６では、量子化ＤＣＴ係数Ｄjiに−１が掛け算され、量子化ＤＣＴ係数Ｄjiの値は正の値に変換される。
【００６８】
ステップ２０７では、量子化ＤＣＴ係数Ｄjiに対してｎビットの右シフト演算が実行され、上位量子化ＤＣＴ係数ＤＨjiが求められる。
【００６９】
例えば１ビットのビット分離の場合、量子化ＤＣＴ係数Ｄ23（＝−１）が−１掛け算されて右シフト演算されることにより、上位量子化ＤＣＴ係数ＤＨ23（＝０）が求められる。また３ビットのビット分離の場合、量子化ＤＣＴ係数Ｄ23（＝−１）が−１掛け算されて右シフト演算されることにより、上位量子化ＤＣＴ係数ＤＨ23（＝０）が求められる。
【００７０】
ステップ２０８では、下位量子化ＤＣＴ係数ＤＬjiが求められる。下位量子化ＤＣＴ係数ＤＬjiを求める算術式は、（１）式のようになる。
【００７１】
ＤＬji＝Ｄji−（ＤＨji×２n ）・・・・・・（１）
【００７２】
例えば１ビットのビット分離の場合、符号を正にした後の量子化ＤＣＴ係数Ｄ23（＝１）に対して上位量子化ＤＣＴ係数ＤＨ23の値が０であることから、下位量子化ＤＣＴ係数ＤＬ23の値は、
ＤＬ23＝１−（０×２1 ）＝１
となる。
【００７３】
例えば３ビットのビット分離の場合、符号を正にした後の量子化ＤＣＴ係数Ｄ２３（＝１）に対して上位量子化ＤＣＴ係数ＤＨ２３の値が０であることから、下位量子化ＤＣＴ係数ＤＬ２３の値は、
ＤＬ２３＝１−（０×２３）＝１
となる。
【００７４】
ステップ２０９では、下位量子化ＤＣＴ係数ＤＬjiにステップ２０４またはステップ２０５で設けられた付加符号ビットＦ（＋）または付加符号ビットＦ（−）が付加され、符号付下位量子化ＤＣＴ係数ＦＬjiが求められる。
【００７５】
例えば下位量子化ＤＣＴ係数ＤＬ23（＝１）に対し、ステップ２０５で設けられた付加符号ビットＦ（−）が付加され、符号付下位量子化ＤＣＴ係数ＦＬ23（＝（−）１）が求められる。
【００７６】
ステップ２１０では、添字ｉに１が加算される。すなわち、１つ右隣の量子化ＤＣＴ係数Ｄjiが、ビット分離の対象とされる。
【００７７】
ステップ２１１では、添字ｉが８であるか否かが判定される。すなわち、横方向の１つの行に対してすべての量子化ＤＣＴ係数Ｄjiがビット分離されたか否かが判定される。添字ｉが８であると判定されるとステップ２１２に移り、添字ｉが８でないと判定されるとステップ２０３に戻る。
【００７８】
ステップ２１２では、添字ｊに１が加算される。すなわち、１つ下の行の量子化ＤＣＴ係数Ｄjiが、ビット分離の対象とされる。
【００７９】
ステップ２１３では、添字ｊが８であるか否かが判定される。すなわち、すべての量子化ＤＣＴ係数Ｄjiがビット分離されたか否かが判定される。添字ｊが８であると判定されると、量子化ＤＣＴ係数行列Ｄに対するビット分離は終了する。添字ｊが８でないと判定されると、ステップ２０２に戻る。
【００８０】
以上のように画像の圧縮処理過程においてビット分離を実行することにより、上位量子化ＤＣＴ係数行列ＤＨをジグザグスキャンしたときに現れるゼロの出現頻度が量子化ＤＣＴ係数行列Ｄをジグザグスキャンする場合に比べて増えるためにゼロラン長Ｒが長くなり、また０以外の上位量子化ＤＣＴ係数ＤＨjiの値が対応する量子化ＤＣＴ係数Ｄjiの値に比べて小さい。したがって、符号化によって得られる符号化データの情報量が少なくて済み、効率的に画像を圧縮することができる。さらに画像の圧縮処理過程においてグループ表Ｔ１に基いてグループ分けすると、グループ分けにより得られる付加ビットのビット数はグループ表Ｔ０に基いてグループ分けする場合に比べて少なくなる。よって、符号化データの情報量が少なくて済み、効率的に画像を圧縮することができる。
【００８１】
図１０は、本発明の一実施形態である画像伸張装置のブロック図である。
【００８２】
輝度データＹおよび色差データＣｂ，Ｃｒの圧縮画像データが記録媒体Ｍの圧縮画像データ記録領域Ｍ２から読み出され、画像伸張装置３０に送られる。画像伸張装置３０は、ハフマン復号化部３１、ゼロラン・グループ合成部３２、ビット合成部３３、逆量子化部３４、逆離散コサイン変換（ＩＤＣＴ演算）部３５から構成されている。
【００８３】
輝度データＹおよび色差データＣｂ，Ｃｒの圧縮画像データから付加ビットを除いた符号語は、ハフマン復号化部３１においてハフマンテーブルＨを用いてハフマン復号化され、ゼロラン長および有効係数のグループ番号が求められる。この復号化はハフマン符号化とは逆の作用である。
【００８４】
ゼロラン長から０の値である上位量子化ＤＣＴ係数が、また有効係数のグループ番号、付加ビットをグループ表Ｔに照らし合わせることにより０以外の値である上位量子化ＤＣＴ係数が、ゼロラン・グループ合成部３２において求められる。そして上位量子化ＤＣＴ係数はジグザグスキャンの逆であるマトリクス化され、上位量子化ＤＣＴ係数行列が求められる。
【００８５】
記録媒体Ｍの下位記録領域Ｍ３から読み出された符号付下位量子化ＤＣＴ係数と上位量子化ＤＣＴ係数がビット合成部３３においてビット合成され、量子化ＤＣＴ係数が復元される。
【００８６】
輝度データＹおよび色差データＣｂ，Ｃｒの量子化ＤＣＴ係数は、逆量子化部３４において量子化テーブルＱを用いて逆量子化され、ＤＣＴ係数に変換される。すなわち、輝度データＹ用の量子化テーブルＱy 、および色差データＣｂ，Ｃｒ用の量子化テーブルＱc が記録媒体Ｍの量子化テーブル記録領域Ｍ１から読み出され、各量子化ＤＣＴ係数にそれぞれ対応する量子化係数が掛け算される。
【００８７】
輝度データＹおよび色差データＣｂ，ＣｒのＤＣＴ係数は、ＩＤＣＴ演算部３５においてＩＤＣＴ演算され、輝度データＹおよび色差データＣｂ，Ｃｒの画像データに変換される。ＩＤＣＴ演算は、ＤＣＴ演算と逆の演算である。ＩＤＣＴ演算によって得られた輝度データＹおよび色差データＣｂ，Ｃｒの画像データは、画像メモリ１４に入力される。
【００８８】
図１１、図１２を用いて圧縮画像データに対する伸張処理を説明する。以下では、輝度データＹの圧縮画像データを対象とする。
【００８９】
図１１には、図３で示された符号付下位量子化ＤＣＴ係数行列ＦＬと、下位量子化ＤＣＴ係数行列ＤＬと、上位量子化ＤＣＴ係数行列ＤＨと、量子化ＤＣＴ係数行列Ｄとが８×８のマトリクスで例示されている。各マトリクスの要素は、それぞれ符号付下位量子化ＤＣＴ係数ＦＬji、下位量子化ＤＣＴ係数ＤＬji、上位量子化ＤＣＴ係数ＤＨji、量子化ＤＣＴ係数Ｄjiと表される。
【００９０】
符号付下位量子化ＤＣＴ係数ＦＬjiから付加符号ビットを取り除いた下位量子化ＤＣＴ係数ＤＬjiがビット合成の対象とされる。上位量子化ＤＣＴ係数ＤＨjiとそれに対応する下位量子化ＤＣＴ係数ＤＬjiがビット合成されることにより、量子化ＤＣＴ係数Ｄjiが復元される。ただし、負の付加符号ビット（−）が付加されていた下位量子化ＤＣＴ係数ＤＬjiがビット合成の対象である場合、復元される量子化ＤＣＴ係数Ｄjiは−１が掛け算され、負の値に変換される。ビット合成されるビット数は、ここでは１である。
【００９１】
例えば、 上位量子化ＤＣＴ係数ＤＨ23（＝０）と負の付加符号ビット（−）が付加されていた下位量子化ＤＣＴ係数ＤＬ23（＝１）がビット合成され、−１が掛け算されることにより、量子化ＤＣＴ係数Ｄ23（＝−１）が復元される。ビット合成に関しては、後述する。
【００９２】
図１２には、量子化ＤＣＴ係数行列Ｄと量子化テーブルＱとＤＣＴ係数行列Ｃ’と画素ブロックＰ’とが８×８のマトリクスで例示されている。各マトリクスの要素は、それぞれ量子化ＤＣＴ係数Ｄji，量子化係数Ｑji，ＤＣＴ係数Ｃ’ji、画素値Ｐ’yxと表される。
【００９３】
量子化ＤＣＴ係数Ｄjiは逆量子化され、ＤＣＴ係数Ｃ’jiが求められる。すなわち、各量子化ＤＣＴ係数Ｄjiにそれぞれ対応する量子化係数Ｑjiが掛け算される。
【００９４】
例えば量子化ＤＣＴ係数Ｄ31（＝−２）には、量子化係数Ｑ31（＝２）が掛け算されて、ＤＣＴ係数Ｃ’31（＝−４）が求められる。
【００９５】
ＤＣＴ係数Ｃ’jiは、ＩＤＣＴ演算により画素値Ｐ’yxに変換される。ＩＤＣＴ演算が実行されることにより、画素値Ｐ’yxからなる８×８の画素ブロックＰ’が復元される。
【００９６】
図１１、図１３を用いて、１ビットのビット合成を詳述する。そのため、上位量子化ＤＣＴ係数ＤＨをビット列で表す。
【００９７】
図１３では、図１１の上位量子化ＤＣＴ係数ＤＨ23（＝０）と下位量子化ＤＣＴ係数ＤＬ23（＝１）に対する１ビットのビット合成を示している。
【００９８】
上位量子化ＤＣＴ係数ＤＨ23（＝０）は、図４で示したように１６ビットのビット列Ｂ２において、１０ビットを使用して２進数「００００００００００」が表される。下位量子化ＤＣＴ係数ＤＬ23（＝１）は２進数で「１」であり、下位ビット列Ｋ１で表される。
【００９９】
ビット合成の実行により、上位量子化ＤＣＴ係数ＤＨ23（＝０）のビット列Ｂ２は左シフト演算される。左シフト演算とは、各ビットを指定されたビット数だけ左に移動させる演算である。１ビットの左シフト演算が実行されると、ビット列Ｂ０において各ビットが１つずつ左に移動させられ、左端の「０」である符号ビットＦが分離される。そして左シフト演算により空白になった右端の最下位ビットには、「０」である下位ビット列Ｋ１が当てはめられる。また、左端から２番目の「０」であるビットＦ０が左シフト演算により最上位ビットに移動され、符号ビットＦとなる。
【０１００】
このような左シフト演算により、ビット列Ｂ２は１１ビットを使用して２進数「００００００００００１」が表されるビット列Ｂ１に変換される。２進数「００００００００００１」を１０進法で表すと１であるが、下位量子化ＤＣＴ係数ＤＬ23（＝１）には負の付加符号ビットＦ（−）が付加されていたことから、１の値に対して−１が掛け算される。この掛け算によりビット列Ｂ１は、最上位ビットには負の符号ビットＦが置かれ、１１ビットを使用して２進数「１１１１１１１１１１１」が表されるビット列Ｂ０に変換される。そして、２進数「１１１１１１１１１１１」を十進法で表した値が量子化ＤＣＴ係数Ｄ23となる。すなわち、負の符号ビットＦを考慮すれば量子化ＤＣＴ係数Ｄ23の値は、−１である。
【０１０１】
このように、上位量子化ＤＣＴ係数ＤＨ23（＝０）と下位量子化ＤＣＴ係数ＤＬ23（＝１）がビット合成され、ビット合成により得られるビット列において表される２進数の値１に対し、付加符号ビットＦ（−）に対応して−１が掛け算されることにより、量子化ＤＣＴ係数Ｄ23（＝−１）が復元される。
【０１０２】
ビット合成の対象である下位量子化ＤＣＴ係数ＤＬjiに対し正の付加符号ビットＦ（＋）が付加されていた場合、左シフト演算により得られるビット列において表される２進数の値が量子化ＤＣＴ係数Ｄjiの値となる。
【０１０３】
なお、２ビット、３ビットのビット合成を実行する場合、２ビット、３ビットの左シフト演算が実行される。
【０１０４】
図１４は、上位量子化ＤＣＴ係数と下位量子化ＤＣＴ係数に対するｎビットのビット合成の手順を示したフローチャートである。図１１、図１４を用いてビット合成のフローチャートを説明する。
【０１０５】
ステップ３０１では、添字ｊが０に設定される。ステップ３０２では、添字ｉが０に設定され、行列の横方向を表す行の中で一番左側の上位量子化ＤＣＴ係数ＤＨjiと下位量子化ＤＣＴ係数ＤＬjiがビット合成の対象とされる。上位量子化ＤＣＴ係数ＤＨ00と下位量子化ＤＣＴ係数ＤＬ00が最初のビット合成の対象である。
【０１０６】
ステップ３０３では、上位量子化ＤＣＴ係数ＤＨjiのビット列に対してｎビットの左シフト演算が実行され、量子化ＤＣＴ係数Ｄjiが求められる。量子化ＤＣＴ係数Ｄjiを求める算術式は、（２）式のようになる。
【０１０７】
Ｄji＝ＤＨji×２n ＋ＤＬji・・・・・（２）
【０１０８】
例えば１ビットのビット合成を実行する場合、上位量子化ＤＣＴ係数ＤＨ23（＝０）と下位量子化ＤＣＴ係数ＤＬ23（＝１）に対する量子化ＤＣＴ係数Ｄ23の値は、
Ｄ23＝０×２1 ＋１＝１
となる。
【０１０９】
例えば３ビットのビット合成を実行する場合、上位量子化ＤＣＴ係数ＤＨ23（＝０）と下位量子化ＤＣＴ係数ＤＬ23（＝１）に対する量子化ＤＣＴ係数Ｄ23の値は、
Ｄ23＝０×２3 ＋１＝１
となる。
【０１１０】
ステップ３０４では、下位量子化ＤＣＴ係数ＤＬjiに付加されていた付加符号ビットが正の付加符号ビット（＋）であるか否かが判定される。正の付加符号ビット（＋）でないと判定されるとステップ３０５に移り、量子化ＤＣＴ係数Ｄjiは−１が掛け算され負の値に変換される。正の付加符号ビット（＋）であると判定されると、ステップ３０６に移る。
【０１１１】
ステップ３０６では、添字ｉに１が加算される。すなわち、１つ右隣の上位量子化ＤＣＴ係数ＤＨjiと下位量子化ＤＣＴ係数ＤＬjiがビット合成の対象とされる。
【０１１２】
ステップ３０７では、添字ｉが８であるか否かが判定される。すなわち、１つの行に関してすべての上位量子化ＤＣＴ係数ＤＨjiと下位量子化ＤＣＴ係数ＤＬjiがビット合成されたか否かが判定される。添字ｉが８であると判定されると、ステップ３０８に移る。添字ｉが８でないと判定されると、ステップ３０３に戻る。
【０１１３】
ステップ３０８では、添字ｊに１が加算される。すなわち、１つ下の行の上位量子化ＤＣＴ係数ＤＨjiと下位量子化ＤＣＴ係数ＤＬjiがビット合成の対象とされる。
【０１１４】
ステップ３０９では、添字ｊが８であるか否かが判定される。すなわち、すべての上位量子化ＤＣＴ係数ＤＨjiと下位量子化ＤＣＴ係数ＤＬjiがビット合成されたか否かが判定される。添字ｊが８であると判定されると、一連のビット合成は終了する。添字ｊが８でないと判定されると、ステップ３０２に戻る。
【０１１５】
以上のように本実施形態によれば、ビット分離を実行することで量子化ＤＣＴ係数Ｄjiを上位量子化ＤＣＴ係数ＤＨjiと下位量子化ＤＣＴ係数ＤＬjiに分離し、またグループ分けする際にグループ表Ｔ１を適用することにより、圧縮画像データの情報量を少なくすることができる、すなわち画像を効率的に圧縮することができる。またビット合成を実行することで下位量子化ＤＣＴ係数ＤＬjiと上位量子化ＤＣＴ係数ＤＨjiから量子化ＤＣＴ係数Ｄjiを復元することにより、元画像を圧縮画像データからほぼ無歪みで復元することができる。
【０１１６】
従来の可逆符号化方式と本実施形態による画像圧縮方式を比較するため、それぞれの画像圧縮方式を用いてカラー静止画像を圧縮し、圧縮率（元画像データ量に対する圧縮画像データ量の割合）を計った。ただし、本実施形態による画像圧縮方式では２ビットのビット分離を実行し、画像劣化を生じさせないため量子化は実行しない。従来の可逆符号化方式の場合、圧縮率は７５．６パーセントであったのに対し、本発明による画像圧縮方式の場合、圧縮率は６９．９パーセントであった。この計測結果から、本実施形態による画像圧縮方式は従来の可逆符号化方式よりも効率的に画像を圧縮できることがわかる。
【０１１７】
なお、画像圧縮処理に関してはＤＣＴ演算の代わりにアダマール変換を適用してもよい。この場合、画像伸張処理に関してはＩＤＣＴ演算の代わりに逆アダマール変換が用いられる。
【０１１８】
【発明の効果】
以上のように本発明によれば、高解像度の画像を実質的に無歪みで圧縮することができ、かつ効率的に圧縮することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態を適用した画像圧縮装置のブロック図である。
【図２】画素ブロックとＤＣＴ係数行列と量子化ＤＣＴ行列と量子化テーブルを示した図である。
【図３】量子化ＤＣＴ係数行列と上位量子化ＤＣＴ係数行列と下位量子化ＤＣＴ係数行列と符号付下位量子化ＤＣＴ係数行列を示した図である。
【図４】量子化ＤＣＴ係数に対するビット分離を示した図である。
【図５】上位量子化ＤＣＴ係数行列と、１次元の列になった上位量子化ＤＣＴ係数と、有効係数のグループ番号、ゼロラン長および付加ビットを示した図である。
【図６】従来適用されているグループ表と本実施形態で適用されるグループ表を示した図である。
【図７】  有効係数に対するゼロラン長、グループ番号、符号語、符号化データを示す図である。
【図８】ハフマンテーブルを示した図である。
【図９】ビット分離の手順を示すフローチャートである。
【図１０】本発明の一実施形態を適用した画像伸張装置のブロック図である。
【図１１】符号付下位量子化ＤＣＴ係数行列と下位量子化ＤＣＴ係数行列と上位量子化ＤＣＴ係数行列と量子化ＤＣＴ係数行列を示した図である。
【図１２】量子化ＤＣＴ係数行列と量子化テーブルとＤＣＴ係数行列と画素ブロックを示した図である。
【図１３】上位量子化ＤＣＴ係数と下位量子化ＤＣＴ係数に対するビット合成を示した図である。
【図１４】ビット合成の手順を示したフローチャートである。
【符号の説明】
１０  画像圧縮装置
３０  画像伸張装置
【図１】
0003650527.tif 000002
【図２】
0003650527.tif 000003
【図３】
0003650527.tif 000004
【図４】
0003650527.tif 000005
【図５】
0003650527.tif 000006
【図６】
0003650527.tif 000007
【図７】
0003650527.tif 000008
【図８】
0003650527.tif 000009
【図９】
0003650527.tif 000010
【図１０】
0003650527.tif 000011
【図１１】
0003650527.tif 000012
【図１２】
0003650527.tif 000013
【図１３】
0003650527.tif 000014
【図１４】
0003650527.tif 000015