説明

画像圧縮装置

【課題】HD Photoにおけるシンボル生成処理の高速化と、シンボル生成処理に使用する記憶容量の縮小化を実現することを課題とする。
【解決手段】シンボル生成部15は、量子化データのデータ列をシリアルに入力する。非零係数の量子化データを入力すると、非零係数の絶対値、零ラン、符号の情報をレジスタに格納する。次の非零係数の量子化データを入力すると、レジスタに格納されている絶対値、零ラン、符号の情報を更新する。このとき、直前まで格納されていたレジスタの内容を1つ前の非零係数のシンボルデータとして出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、静止画像データを圧縮する画像圧縮装置に関する。
【背景技術】
【0002】
静止画像データを圧縮するフォーマットとして、従来からJPEG(Joint Photographic Experts Group)形式が広く用いられている。また、JPEG形式より画像の劣化を防ぐことができ、圧縮率の高いHD Photo形式が策定されている。HD Photo形式の詳細については、非特許文献1、2に開示されている。
【0003】
HD Photoに基づく画像圧縮装置(以下、単に「画像圧縮装置」という)は、静止画像データをマクロブロック単位で周波数変換し、直流成分データと、二つの交流成分データとを生成する。二つの交流成分の一方は、「LowPass」と呼ばれる低域成分データであり、他方は、「HighPass」と呼ばれる高域成分データである。画像圧縮装置は、上述の各成分データに対して量子化および予測符号化を実行する。そして、各成分の量子化データは、エントロピー符号化され、ストリームとして出力される。
【0004】
図9は、従来の画像圧縮装置100を示すブロック図である。画像圧縮装置100は、静止画像データをHD Photo形式の圧縮画像データに変換する装置である。画像圧縮装置100は、第1周波数変換部101、第2周波数変換部102、量子化部103、予測処理部104、シンボル生成部105、エントロピー符号化部106を備える。
【0005】
第1周波数変換部101は、画像圧縮装置100が入力した静止画像データに対して、第1階層の周波数変換を実行し、第1階層の直流成分データと、第1階層の交流成分データとを出力する。
【0006】
第2周波数変換部102は、第1周波数変換部101が出力した第1階層の直流成分データに対してさらに周波数変換を実行し、第2階層の直流成分データと、第2階層の交流成分データとを出力する。
【0007】
以下では、第1階層の交流成分データを高域成分データと呼ぶ。また、第2階層の直流成分データを単に直流成分データと呼び、第2階層の交流成分データを低域成分データと呼ぶ。
【0008】
低域成分データと高域成分データとは、それぞれ15個の変換係数データを有している。具体的には、低域成分データは、15個の変換係数データからなるブロックをYUV3チャンネル分保有する。高域成分データは、15個の変換係数データからなるブロックを16ブロック有し、さらに、それら16ブロックが、それぞれYUV3チャンネル分の変換係数データを保有している。これに対して、直流成分データは、YUV各チャンネルについてそれぞれ1個の変換係数データを保有している。
【0009】
量子化部103は、直流成分データ、低域成分データ、高域成分データに対する量子化処理を実行し、予測処理部104は、量子化データについて予測符号化処理を実行する。シンボル生成部105は、予測符号化された量子化データのビット列からシンボル列を生成し、エントロピー符号化部106は、シンボル化された量子化データに対するエントロピー符号化処理を実行し、圧縮画像データを生成する。
【0010】
【非特許文献1】“HD Photo−Photographic Still Image File Format”、[online]、平成18年11月7日、Microsoft Corporation、[平成20年4月14日検索]、インターネット<URL:http://www.microsoft.com/whdc/xps/hdphotodpk.mspx>
【非特許文献2】“Coding of Still Pictures”、[online]、平成19年12月19日、International Organisation for Standardisation and International Electorotechnical Commission、[平成20年4月14日検索]、インターネット<URL:http://www.itscj.ipsj.or.jp/sc29/open/29view/29n9026t.doc>
【発明の開示】
【発明が解決しようとする課題】
【0011】
図9に示すように、シンボル生成部105には、第1バッファ111と第2バッファ112とが接続されている。シンボル生成部105は、予測処理部104から出力された1ブロック分の量子化データを第1バッファ111に格納するタイミングで、第2バッファ112から1ブロック分の量子化データを取り出してシンボルデータを出力する。また、予測処理部104から出力された1ブロック分の量子化データを第2バッファ112に格納しているタイミングで、第1バッファ111から1ブロック分の量子化データを取り出してシンボルデータを出力する。このように、2つのバッファの入出力を切り替えることで処理の高速化を図っている。
【0012】
図10は、第1バッファ111あるいは第2バッファ112に格納される量子化データの格納形式を示す図である。ここでは、図に示すように、15個の量子化データからなる1ブロックのデータ列{0,0,3,0,0,3,10,0,0,0、−1,0,2,0,0}が、第1バッファ111に記憶される場合を例に説明する。
【0013】
まず、1番目と2番目の量子化データは、零係数であるので、第1バッファ111には量子化データは格納されない。3番目の量子化データは3であり、非零係数であるので、絶対値(ABS)=3、零ラン(ZERO_RUN)=2、符号(SIGN)=0が第1バッファ111に格納される。零ランは、ブロック内で非零係数の前に存在する零係数の連続する数である。符号は0が正、1が負を示している。なお、シンボル生成部105は、零ランをカウントするためのレジスタを有している。
【0014】
続いて、4番目と5番目の量子化データも零係数であるので、第1バッファ111には量子化データは格納されない。6番目の量子化データは3であり、非零係数であるので、{ABS,ZERO_RUN,SIGN}={3,2,0}が第1バッファ111に格納される。さらに、7番目の量子化データは10であり、非零係数であるので、{ABS,ZERO_RUN,SIGN}={10,0,0}が第1バッファ111に格納される。
【0015】
続いて、8番目、9番目、10番目は零係数であり、第1バッファ111に量子化データは格納されない。11番目については、{ABS,ZERO_RUN,SIGN}={1,3,1}が、13番目については、{2,1,0}がそれぞれ格納される。そして、最後の零係数については、例外的に、{0,2,0}が格納される。
【0016】
このように第1バッファ111に1ブロック分の量子化データのデータ列がシンボル化された状態で格納される。そして、次に、第2バッファ112に次のブロックの量子化データが格納されるタイミングで、第1バッファ111に格納されている量子化データがシンボルデータとして出力される。このとき、あわせてインデックスが生成され、シンボルデータの一部として出力される。
【0017】
図11は、シンボルデータの出力内容を示す図である。図11は、図10で示した量子化データのデータ列から生成されるシンボルデータを示している。図中、二重線の上は、シンボル生成部105が入力する量子化データの内容を示し、二重線より下は、シンボル生成部105より出力されるシンボルデータの内容を示している。シンボルデータにおいて、ABS,ZERO_RUN,SIGNは、第1バッファ111に格納されているABS,ZERO_RUN,SIGNと同様である。ただし、ABSは、HD photoの仕様により1が減算されたものがシンボルデータとして出力される。
【0018】
シンボルデータ中のINDEXは、本願発明の実施の形態の中で詳しく説明するが、ここでは詳しい説明を省略する。INDEXは、非零係数の絶対値と1との関係を示す情報や、非零係数に後続する量子化データの情報を含んでいる。
【0019】
このように、シンボルデータは、零係数に対応するタイミングでは出力されず、非零係数に対応するタイミングで間欠的に出力される。1ブロックの量子化データの数は15個であるので、第1バッファ111あるいは第2バッファ112からシンボルデータを出力するには15個分のデータ出力タイミングが必要である。一方、第1バッファ111あるいは第2バッファ112に量子化データを格納するタイミングも15個分のデータ入力タイミングが必要である。このようにして、2つのバッファのうち一方のバッファへの量子化データの入力タイミングと他方のバッファからのシンボルデータの出力タイミングが同期され、効率よく、高速にシンボルを生成することが可能となっている。
【0020】
しかし、このタイミングがずれる場合が存在する。上述したように、高域成分データと低域成分データとは、15個の量子化データからなるブロックの集合であるが、直流成分データは、YUVあわせて3個の量子化データのみからなる。
【0021】
高域成分データから直流成分データへの切り替えタイミングに注目すると、第1バッファ111に対しては直流成分データが3データ分の期間を費やして入力されることになるが、第2バッファ112からは15データ分の期間を費やしてシンボルデータが出力される。このため第1バッファ111への入力タイミングに空き時間が生じることになる。
【0022】
また、直流成分データから低域成分データへの切り替えタイミングに注目すると、第1バッファ111からは3データ分の期間を費やしてシンボルデータが出力されることになるが、第2バッファ112に対しては低域成分データが15データ分の期間を費やして入力されることになる。このため、シンボルデータの出力タイミングに空き時間が生じることになる。
【0023】
このように、2つのバッファを利用して高速化を図っているものの、1マクロブロックごとに12データ分の入出力の空き時間が2回発生することになり、さらなる高速化が望まれている。
【0024】
また、第1バッファ111あるいは第2バッファ112には、最大で、ABSとして量子化データのビット長×15のデータサイズが必要であり、ZERO_RUNとして4ビット×15のデータサイズが必要であり、SIGNとして1ビット×15のデータサイズが必要である。したがって、2つのバッファをあわせると、量子化データのビット長を32ビットとすれば、(32+4+1)×15×2ビットのサイズが必要である。HD Photoが搭載される電子機器には小型化および省電力化に対する高い要求が存在することを考慮すると、バッファサイズも極力小さくすることが望まれる。
【0025】
そこで、本発明は前記問題点に鑑み、HD Photoにおけるシンボル生成処理の高速化と、シンボル生成処理に使用する記憶容量の縮小化を実現することを目的とする。
【課題を解決するための手段】
【0026】
上記課題を解決するため、請求項1記載の画像圧縮装置は、画像データを周波数変換して周波数変換データを生成する周波数変換部と、周波数変換データを量子化して量子化データを生成する量子化部と、量子化データをシンボル化してシンボルデータを生成するシンボル生成部と、シンボルデータを符号化して符号化データを生成する符号化部と、を備え、前記シンボル生成部は、複数のブロックで構成される量子化データのデータ列をシリアルに入力する量子化データ入力部と、1つの非零係数の量子化データの絶対値、符号、および、零ラン情報を記憶可能な量子化データ情報記憶部と、前記量子化データ入力部が入力した処理対象の量子化データが非零係数である場合、前記量子化データ情報記憶部に記憶されている1つ前の非零係数の量子化データの絶対値、符号、および、零ラン情報をシンボルデータとして出力するシンボルデータ出力部と、を有することを特徴とする。
【0027】
請求項2記載の発明は、請求項1に記載の画像圧縮装置において、前記量子化データ情報記憶部は、前記量子化データ入力部が入力した処理対象の量子化データが非零係数である場合、入力した非零係数の直前に入力した零係数の連続数により記憶内容が更新される第1記憶部と、前記量子化データ入力部が入力した処理対象の量子化データが非零係数である場合、入力した非零係数の絶対値により記憶内容が更新される第2記憶部と、前記量子化データ入力部が入力した処理対象の量子化データが非零係数である場合、入力した非零係数の符号により記憶内容が更新される第3記憶部と、を含み、前記シンボルデータ出力部は、前記量子化データ入力部が入力した処理対象の量子化データが非零係数である場合、更新前の前記第1、第2および第3記憶部の記憶内容を1つ前の非零係数のシンボルデータとして出力することを特徴とする。
【0028】
請求項3記載の発明は、請求項2に記載の画像圧縮装置において、前記第1記憶部は、前記量子化データ入力部が入力した処理対象の量子化データが零係数である場合、ブロック内で連続する零係数のカウント数をインクリメントして更新する第1.1記憶部と、前記量子化データ入力部が入力した処理対象の量子化データが非零係数である場合、前記第1.1記憶部に格納されている零係数のカウント数により記憶内容が更新される第1.2記憶部と、を含むことを特徴とする。
【0029】
請求項4記載の発明は、請求項2または請求項3に記載の画像圧縮装置において、前記シンボル生成部は、さらに、前記量子化データ入力部が入力した処理対象の量子化データが非零係数である場合、1つ前の非零係数の量子化データに関するインデックスデータを生成するインデックス生成部、を有し、前記シンボルデータ出力部は、更新前の前記第1、第2および第3記憶部の記憶内容とあわせてインデックスデータを出力するインデックス出力部、を含み、インデックスデータは、更新前の前記第2記憶部に記憶されている絶対値と1との関係を示す絶対値情報と、ブロック内の次の量子化データが零係数であるか非零係数であるか、あるいはブロック内の後続の量子化データが全て零係数であるかを示す後続情報と、を含むことを特徴とする。
【0030】
請求項5記載の発明は、請求項1ないし請求項4のいずれかに記載の画像圧縮装置において、前記周波数変換部は、入力した画像データを周波数変換し、第1直流成分と第1交流成分とを出力する第1周波数変換部と、前記第1直流成分を入力して周波数変換し、第2直流成分と第2交流成分とを出力する第2周波数変換部と、を有し、量子化データのデータ列は、最初に第2直流成分に対応するブロック、次に第2交流成分に対応する複数のブロック、最後に第1交流成分に対応する複数のブロックの順序で1つのマクロブロックを構成するとともに、前記順序で構成されるマクロブロックが繰り返し出現するデータ列であり、各ブロックにおいて最後の非零係数の量子化データに対応するシンボルデータは、次のブロックの最初の非零係数の量子化データの出現時に出力されることを特徴とする。
【発明の効果】
【0031】
本発明の画像圧縮装置は、量子化データ情報記憶部において1つの非零係数の量子化データの絶対値、符号、および、零ラン情報を記憶し、入力した処理対象の量子化データが非零係数である場合、量子化データ情報記憶部に記憶されている1つ前の非零係数の量子化データの絶対値、符号、および、零ラン情報をシンボルデータとして出力する。これにより、ブロック内の全ての非零係数の量子化データを一旦バッファに格納するという処理が不要になり、処理に必要な記憶容量のサイズを小さくすることができる。
【0032】
また、直流成分データ、低域成分データ、高域成分データの切り替わりタイミングにおいても、処理時間に無駄な空き時間を生じさせることがなく、処理速度が向上する。
【0033】
また、直流成分データ、低域成分データ、高域成分データで、処理を共通化させることが可能である。
【発明を実施するための最良の形態】
【0034】
<1.画像圧縮装置の構成とHD photoの処理の流れ>
以下、図面を参照しつつ本発明の実施の形態について説明する。図1は、本実施の形態に係る画像圧縮装置10の構成を示すブロック図である。図1に示す画像圧縮装置10は、静止画像データをHD Photo形式の圧縮画像データに変換する装置である。
【0035】
画像圧縮装置10は、第1周波数変換部11、第2周波数変換部12、量子化部13、予測処理部14、シンボル生成部15、エントロピー符号化部16を備える。
【0036】
画像圧縮装置10に入力される静止画像データは、図示しない前処理部において、色変換処理、フィルタ処理などが行われる。たとえばRGB形式の静止画像データは、色変換によりYUV444形式に変換される。そして、フィルタ処理後の静止画像データが、第1周波数変換部11に入力される。
【0037】
画像圧縮装置10は、マクロブロック単位で画像に対する圧縮処理を実行する。図2は、マクロブロックの構成を示す図である。図2に示すように、1ブロックは、4×4の画素(16画素)で構成される。1マクロブロックは、4×4のブロック(16ブロック)で構成される。つまり、1マクロブロックは、16×16の画素(256画素)で構成される。図2において、マクロブロックを構成する各ブロックを、左上から右方向に順に、ブロックB01、B02・・・B16とする。
【0038】
このような構成のマクロブロックが、YUVのチャンネルごとに存在しており、YUV各チャンネルのマクロブロックが画像圧縮装置10において処理される。以下に説明する各処理は、各色チャンネルで共通の処理である。
【0039】
第1周波数変換部11は、画像圧縮装置10が入力した静止画像データに対して、第1階層の周波数変換を実行し、第1階層の直流成分データDa01〜Da16と、第1階層の交流成分データHP01〜HP16とを出力する。第1階層の交流成分データHP01〜HP16は、HD Photo形式における「Highpass(HP)」成分に対応する。以下では、第1階層の交流成分データHP01〜HP16を高域成分データHP01〜HP16と呼ぶ。
【0040】
図3は、第1階層の直流成分データDa01〜Da16と高域成分データHP01〜HP16とを示す概念図である。図3に示すように、ブロックごとに第1階層の直流成分データDa01〜Da16と、高域成分データHP01〜HP16が生成されている。高域成分データHP01〜HP16は、ブロックB01〜B16にそれぞれ対応する。第1階層の直流成分データDa01〜Da16は、それぞれ1個の変換係数データを有している。高域成分データHP01〜HP16は、それぞれ15個の変換係数データを有している。
【0041】
第2周波数変換部12は、第1周波数変換部11が出力した第1階層の直流成分データDa01〜Da16に対して周波数変換を実行し、第2階層の直流成分データDbと、第2階層の交流成分データLPとを出力する。第2階層の直流成分データDbは、HD Photo形式における直流成分に対応する。第2階層の交流成分データLPは、HD Photo形式における「Lowpass(LP)」成分に対応する。以下では、第2階層の直流成分データDbを単に直流成分データDbと呼び、第2階層の交流成分データLPを低域成分データLPと呼ぶ。
【0042】
図4は、第2階層の周波数変換に伴うデータの変化を示す図である。第2階層の周波数変換により、直流成分データDbと、低域成分データLPとが生成される。直流成分データDbは、1個の変換係数データを有しており、低域成分データLPは、15個の変換係数データを有している。
【0043】
このように、静止画像データに対して第1階層の周波数変換が実行され、さらに第1階層の直流成分データDa01〜Da16に対して第2階層の周波数変換が実行される。画像圧縮装置10は、静止画像データに対する周波数変換をマクロブロック単位で階層的に実行して、直流成分データDb、低域成分データLP、高域成分データHP01〜HP16を生成する。
【0044】
このようにして生成された低域成分データLPと高域成分データHP01〜HP16は、それぞれ15個の変換係数データを有している。具体的には、低域成分データLPは、15個の変換係数データからなるブロックをYUV3チャンネル分保有する。高域成分データHP01〜HP16は、15個の変換係数データからなるブロックを16ブロック有し、さらに、それら16ブロックが、それぞれYUV3チャンネル分の変換係数データを保有している。これに対して、直流成分データDbは、YUV各チャンネルについてそれぞれ1個の変換係数データを保有している。
【0045】
量子化部13は、直流成分データDb、低域成分データLP、高域成分データHP01〜HP16に対する量子化処理を実行して量子化データを生成する。予測処理部14は、量子化データについて予測符号化処理を実行する。予測符号化された量子化データは、シンボル生成部15に入力される。
【0046】
シンボル生成部15は、予測符号化された量子化データのビット列からシンボル列を生成する。シンボル生成部15の処理内容は本発明の特徴部分であり、その詳しい処理内容は後で説明する。シンボル生成部15は、生成したシンボル列をエントロピー符号化部16に出力する。
【0047】
エントロピー符号化部16は、シンボル化された量子化データに対するエントロピー符号化処理を実行し、圧縮画像データを生成する。圧縮画像データは、1マクロブロック単位のビットストリームとして出力される。
【0048】
<2.シンボルのデータ構成>
次に、シンボル生成部15において生成されるシンボルデータのデータ構成について説明する。図5は、シンボルデータのデータ構成を示す図である。HD Photoにおけるシンボルデータは、絶対値(ABS)、インデックス(INDEX)、符号(SIGN)、零ラン(ZERO_RUN)、フレックスビット長(FLEXBIT)から構成される。
【0049】
絶対値(ABS)は、非零係数の絶対値から1を減算した値が設定される。符号(SIGN)は、非零係数の符号がプラスの場合は0、マイナスの場合は1が設定される。零ラン(ZERO_RUN)には、ブロック内において非零係数の直前に存在する連続する零係数の数が設定される。フレックスビット長(FLEXBIT)には、量子化データの下位ビットのうちフレックスビットに割り当てられるビット幅が設定される。
【0050】
インデックス(INDEX)には、FIRST_INDEXとNEXT_INDEXとが存在する。FIRST_INDEXは、ブロック内の最初の非零係数に対して設定されるINDEXであり、NEXT_INDEXは、2番目以降の全ての非零係数に対して設定されるINDEXである。
【0051】
FIRST_INDEXの最下位ビット[0]には、最初の非零係数の前に零ランがあるか否かが設定される。零ランがある場合には0が、ない場合には1が設定される。
【0052】
FIRST_INDEXの第1ビット[1]には、対応する非零係数の絶対値が1であるか否かが設定される。絶対値が1である場合には0、絶対値が1でない場合には1が設定される。
【0053】
FIRST_INDEXの第2、第3ビット[3:2]には、対応する非零係数より後続の量子化データの情報が設定される。対応する非零係数より以降の量子化データが、全て零係数であれば、EOB(End Of Block)であることを示す00が設定される。対応する非零係数の直後に非零係数が存在すれば01が、直後に零係数が存在すれば10が設定される。
【0054】
NEXT_INDEXの最下位ビット[0]には、対応する非零係数の絶対値が1であるか否かが設定される。絶対値が1である場合には0、絶対値が1でない場合には1が設定される。
【0055】
NEXT_INDEXの第1、第2ビット[2:1]には、対応する非零係数より後続の量子化データの情報が設定される。対応する非零係数より以降の量子化データが、全て零係数であれば、EOBであることを示す00が設定される。対応する非零係数の直後に非零係数が存在すれば01が、直後に零係数が存在すれば10が設定される。
【0056】
<3.シンボル生成部が備えるレジスタの種類>
図1に示すように、シンボル生成部15は、第1レジスタ51、第2レジスタ52、第3レジスタ53、第4レジスタ54、第5レジスタ55、第6レジスタ56を備えている。
【0057】
第1レジスタ51は、零ランをカウントするための零カウントレジスタである。1ブロック内の量子化データのデータ数は15であるので、第1レジスタ51は、4ビットの記憶容量を備えている。
【0058】
第2レジスタ52は、シンボルデータとして出力するための零ランを格納する零ランレジスタである。第2レジスタ52も4ビットの記憶容量を備えている。
【0059】
第3レジスタ53は、シンボルデータとして出力するための非零係数の絶対値を格納するためのABSレジスタである。本実施の形態においては、量子化データのデータ幅は32ビットとする。したがって、第3レジスタ53は32ビットの記憶容量を備えている。ただし、第3レジスタ53には、非零係数の絶対値がそのままの値で格納される。シンボルデータとして出力されるときには、1を減算した値が出力される。
【0060】
第4レジスタ54は、シンボルデータとして出力するための非零係数の符号を格納するためのSIGNレジスタである。符号は、上述したように0か1の情報が記録されるので、第4レジスタ54は1ビットの記憶容量を備えている。
【0061】
第5レジスタ55は、ファーストフラグを設定する1stフラグレジスタである。第5レジスタ55にはブロック内の最初の非零係数が出現するまでは1が設定され、非零係数が出現した後は0が設定される。第5レジスタ55は、1ビットの記憶容量を備えている。
【0062】
第6レジスタ56は、ポジションデータ設定するPOSレジスタである。ポジションデータは、現在の処理対象の量子化データが、ブロック内で何番目のデータであるかを示すデータである。ポジションデータは、非零係数が入力される直前に格納されていた情報と零カウント情報とから決定することができる。
【0063】
<4.シンボル生成処理>
上記のような構成のシンボル生成部15により、シンボルデータが生成される処理の流れについて説明する。
【0064】
図6は、量子化データとしてデータ列{0,0,3,0,0,3,10,0,0,0,−1,0,2,0,0}が入力された場合に、シンボル生成部15の各レジスタに設定される値を示している。シンボル生成部15は、量子化データのデータ列を先頭から順にシリアルに入力する。
【0065】
まず、シンボル生成部15は、先頭の0番目のデータ{0}を入力する。このタイミングで、零カウントが1インクリメントされ、零カウントレジスタ(第1レジスタ51)に1が設定される。また、{0}は零係数であるので、ABSレジスタ(第3レジスタ53)、SIGNレジスタ(第4レジスタ54)は不定である。また、零ランレジスタ(第2レジスタ52)とPOSレジスタ(第6レジスタ56)には0が設定される。1stフラグレジスタ(第5レジスタ55)には、初期値として1が設定される。
【0066】
次の1番目のデータ{0}が入力されると、零カウントレジスタ(第1レジスタ51)が1インクリメントされ2が設定される。その他のレジスタはデータが更新されることはない。
【0067】
続いて2番目のデータ{3}が入力されると、{3}は非零係数であるので、ABSレジスタ(第3レジスタ53)に3が設定され、SIGNレジスタ(第4レジスタ54)に符号プラスを示す0が設定される。また、零ランレジスタ(第2レジスタ52)には、零カウントレジスタ(第1レジスタ51)に格納されている直前の零カウント数2が設定され、零カウントレジスタ(第1レジスタ51)は0に初期化される。また、非零係数が出現したので、POSレジスタ(第6レジスタ56)には、2が設定される。
【0068】
このように、シンボル生成部15に、2番目のデータとして最初の非零係数が入力されると、ABS,SIGN,零ラン等の2番目のデータの情報がレジスタ内に格納される。この時点では、2番目のデータはシンボルデータとして出力されるのではなく、レジスタ内に保持されることになる。
【0069】
3番目および4番目のデータも{0}である。したがって、第2、第3、第4、第6レジスタのデータは更新されない。零カウントレジスタ(第1レジスタ51)は、1、2と順にインクリメントされる。1stフラグレジスタ(第5レジスタ55)は、最初の非零係数が出現した後は、0で固定される。
【0070】
シンボル生成部15が、3番目および4番目のデータを入力している間も、第2、第3、第4レジスタ52,53,54は、2番目のデータのABS,SIGN,零ランの情報を保持している。
【0071】
5番目のデータ{3}が入力されると、{3}は非零係数であるので、ABSレジスタ(第3レジスタ53)に、3が設定され、SIGNレジスタ(第4レジスタ54)に符号プラスを示す0が設定される。また、零ランレジスタ(第2レジスタ52)には、零カウントレジスタ(第1レジスタ51)に格納されている直前の零カウント数2が設定され、零カウントレジスタ(第1レジスタ51)は0に初期化される。また、非零係数が出現したので、POSレジスタ(第6レジスタ56)には、5が設定される。
【0072】
シンボル生成部15が5番目のデータ{3}を入力すると、このように、第2、第3、第4レジスタ52,53,54が更新される。したがって、シンボル生成部15は、5番目のデータによって第2、第3、第4レジスタ52,53,54の内容が更新される前に、第2、第3、第4レジスタ52,53,54に格納されているデータを2番目のデータのシンボルデータとして出力するのである。つまり、新たな非零係数が出現した時点でレジスタに格納されている1つ前の非零係数のシンボルデータを出力し、レジスタには新たに出現した非零係数の情報を保持するのである。ただし、ABSについては1を減算した値がシンボルデータとして使用される。
【0073】
図7に、シンボル生成部15から出力されるシンボルデータの内容を示す。図7は、図6に示すデータ列{0,0,3,0,0,3,10,0,0,0,−1,0,2,0,0}がブロックNo.40として入力されている場合を示している。
【0074】
図7において、二重線より上は、シンボル生成部15が入力する量子化データの情報を示し、二重線より下は、シンボル生成部15より出力されるシンボルデータの内容を示している。
【0075】
図7に示すように、5番目のデータ{3}が入力されるタイミングで、2番目のデータ{3}のシンボルデータが出力されている。つまり、ABSとして2、FIRST_INDEXとして1010、ZERO_RUNとして2、SIGNとして0がシンボルデータとして出力されている。なお、FIRST_INDEXは5番目の量子化データを入力したタイミングでシンボル生成部15により生成される。
【0076】
また、ブロックNo.40の2番目の量子化データを入力するタイミングで出力されているシンボルデータは、ブロックNo.39の最後の非零係数に対応するシンボルデータである。
【0077】
再び、図6を参照する。6番目のデータ{10}が入力されると、{10}は非零係数であるので、ABSレジスタ(第3レジスタ53)に、10が設定され、SIGNレジスタ(第4レジスタ54)に符号プラスを示す0が設定される。また、零ランレジスタ(第2レジスタ52)には、直前の零カウント数0が設定され、零カウントレジスタ(第1レジスタ51)は0に初期化される。また、非零係数が出現したので、POSレジスタ(第6レジスタ56)には、6が設定される。
【0078】
シンボル生成部15が、6番目のデータを入力すると、このように、第2、第3、第4レジスタ52,53,54が更新される。したがって、シンボル生成部15は、6番目のデータによって第2、第3、第4レジスタ52,53,54の内容が更新される前に、第2、第3、第4レジスタ52,53,54に格納されているデータを5番目のデータのシンボルデータとして出力するのである。ただし、ABSについては1を減算した値がシンボルデータとして使用される。
【0079】
再び、図7を参照する。6番目のデータ{10}が入力されるタイミングで、5番目のデータ{3}のシンボルデータが出力されている。つまり、ABSとして2、NEXT_INDEXとして011、ZERO_RUNとして2、SIGNとして0がシンボルデータとして出力されている。なお、NEXT_INDEXは6番目の量子化データが入力されるタイミングでシンボル生成部15により生成される。
【0080】
このように本実施の形態のシンボル生成部15は、単一の量子化データの情報を記憶するレジスタを備える構成としながら、HD Photoに準拠したシンボルデータを生成し、出力可能である。
【0081】
従来技術で説明した図9に示すタイプの画像圧縮装置であれば、ブロック内の全ての非零係数の情報を一旦、バッファに格納する必要があった。しかも、処理を高速化するために、そのようなバッファが2面必要であった。これに対して、本実施の形態のシンボル生成部15は、ブロック内の1つの非零係数の情報のみを保持する構成であるので、シンボル生成部15が利用する記憶装置の容量を格段に減少させることができる。
【0082】
たとえば、上記の実施の形態であれば、各レジスタに必要な記憶容量は、第1レジスタ51で4ビット、第2レジスタ52で4ビット、第3レジスタ53で32ビット、第4レジスタ54で1ビット、第5レジスタ55で1ビット、第6レジスタ56で4ビットである。つまり、合計で、46ビットの記憶容量があれば足りる。上述した従来の構成では、2枚のバッファ全体で(32+4+1)×15×2ビットのサイズが必要であったので、大幅に記憶サイズを小さくすることができる。
【0083】
また、本実施の形態のシンボル生成部15の処理内容によれば、従来の構成で説明したように、直流成分データから低域成分データへの切り替わり、高域成分データから直流成分データへの切り替わりで空き時間が発生することはない。したがって、シンボルデータの生成処理の速度を向上させることができる。
【0084】
さらに、本実施の形態の方法であれば、直流成分データ、低域成分データ、高域成分データによって処理の区別をする必要はない。非零係数の情報を一旦レジスタに保持し、次の非零係数の出現時に、保持している直前の非零係数の情報に基づいてシンボルデータを出力するというルールを全ての成分のデータに共通して適用できる。
【0085】
一般的には、第N番目のブロックの最後の非零係数に関するシンボルデータは、第N+1番目のブロックの最初の非零係数の出現時に出力される。
【0086】
図8は、高域成分データ、直流成分データ、低域成分データの切り替わり部分で出力されるシンボルデータの出力例を示す図である。直流成分データのブロック(ブロックNo.53)の最後の非零係数{40}に関するシンボルデータは、低域成分データの最初のブロック(ブロックNo.54)の最初の非零係数の出現時に出力されている。なお、直流成分データについては、シンボルデータとしてABSとSIGNだけが出力される。また、直流成分データについては、ABSとして量子化データの絶対値がそのまま(1を減算しない値)が設定される。
【0087】
また、高域成分データの最後のブロック(ブロックNo.52)の最後の非零係数{1}に関するシンボルデータは、直流成分データの最初の非零係数の出現時に出力されている。
【0088】
また、低域成分データの最後のブロックの最後の非零係数に関するシンボルデータは、高域成分データの最初のブロックの最初の非零係数の出現時に出力される。
【0089】
このように、直流成分データ、低域成分データ、高域成分データにわたって処理方式を統一することができるので、処理回路の大部分を共通化させることが可能である。あるいはソフトウェア処理を行うのであれば、アルゴリズムの大部分を共通化させることが可能である。
【図面の簡単な説明】
【0090】
【図1】本実施の形態に係る画像圧縮装置のブロック図である。
【図2】マクロブロックの構成を示す図である。
【図3】第1階層の周波数変換の概念図である。
【図4】第2階層の周波数変換の概念図である。
【図5】シンボルデータのデータ構成を示す図である。
【図6】シンボル生成部のレジスタに格納されるデータの遷移図である。
【図7】シンボルデータの出力タイミングとデータの内容を示す図である。
【図8】ブロックの切り替わりタイミングにおいて出力されるシンボルデータの内容を示す図である。
【図9】従来の画像圧縮装置のブロック図である。
【図10】従来の画像圧縮装置においてバッファに格納される量子化データのデータ形式を示す図である。
【図11】従来の画像圧縮装置においてシンボルデータの出力タイミングとデータの内容を示す図である。
【符号の説明】
【0091】
10 画像圧縮装置
11 第1周波数変換部
12 第2周波数変換部
13 量子化部
15 シンボル生成部
51〜56 第1〜第6レジスタ

【特許請求の範囲】
【請求項1】
画像データを周波数変換して周波数変換データを生成する周波数変換部と、
周波数変換データを量子化して量子化データを生成する量子化部と、
量子化データをシンボル化してシンボルデータを生成するシンボル生成部と、
シンボルデータを符号化して符号化データを生成する符号化部と、
を備え、
前記シンボル生成部は、
複数のブロックで構成される量子化データのデータ列をシリアルに入力する量子化データ入力部と、
1つの非零係数の量子化データの絶対値、符号、および、零ラン情報を記憶可能な量子化データ情報記憶部と、
前記量子化データ入力部が入力した処理対象の量子化データが非零係数である場合、前記量子化データ情報記憶部に記憶されている1つ前の非零係数の量子化データの絶対値、符号、および、零ラン情報をシンボルデータとして出力するシンボルデータ出力部と、
を有することを特徴とする画像圧縮装置。
【請求項2】
請求項1に記載の画像圧縮装置において、
前記量子化データ情報記憶部は、
前記量子化データ入力部が入力した処理対象の量子化データが非零係数である場合、入力した非零係数の直前に入力した零係数の連続数により記憶内容が更新される第1記憶部と、
前記量子化データ入力部が入力した処理対象の量子化データが非零係数である場合、入力した非零係数の絶対値により記憶内容が更新される第2記憶部と、
前記量子化データ入力部が入力した処理対象の量子化データが非零係数である場合、入力した非零係数の符号により記憶内容が更新される第3記憶部と、
を含み、
前記シンボルデータ出力部は、前記量子化データ入力部が入力した処理対象の量子化データが非零係数である場合、更新前の前記第1、第2および第3記憶部の記憶内容を1つ前の非零係数のシンボルデータとして出力することを特徴とする画像圧縮装置。
【請求項3】
請求項2に記載の画像圧縮装置において、
前記第1記憶部は、
前記量子化データ入力部が入力した処理対象の量子化データが零係数である場合、ブロック内で連続する零係数のカウント数をインクリメントして更新する第1.1記憶部と、
前記量子化データ入力部が入力した処理対象の量子化データが非零係数である場合、前記第1.1記憶部に格納されている零係数のカウント数により記憶内容が更新される第1.2記憶部と、
を含むことを特徴とする画像圧縮装置。
【請求項4】
請求項2または請求項3に記載の画像圧縮装置において、
前記シンボル生成部は、さらに、
前記量子化データ入力部が入力した処理対象の量子化データが非零係数である場合、1つ前の非零係数の量子化データに関するインデックスデータを生成するインデックス生成部、
を有し、
前記シンボルデータ出力部は、
更新前の前記第1、第2および第3記憶部の記憶内容とあわせてインデックスデータを出力するインデックス出力部、
を含み、
インデックスデータは、
更新前の前記第2記憶部に記憶されている絶対値と1との関係を示す絶対値情報と、
ブロック内の次の量子化データが零係数であるか非零係数であるか、あるいはブロック内の後続の量子化データが全て零係数であるかを示す後続情報と、
を含むことを特徴とする画像圧縮装置。
【請求項5】
請求項1ないし請求項4のいずれかに記載の画像圧縮装置において、
前記周波数変換部は、
入力した画像データを周波数変換し、第1直流成分と第1交流成分とを出力する第1周波数変換部と、
前記第1直流成分を入力して周波数変換し、第2直流成分と第2交流成分とを出力する第2周波数変換部と、
を有し、
量子化データのデータ列は、最初に第2直流成分に対応するブロック、次に第2交流成分に対応する複数のブロック、最後に第1交流成分に対応する複数のブロックの順序で1つのマクロブロックを構成するとともに、前記順序で構成されるマクロブロックが繰り返し出現するデータ列であり、
各ブロックにおいて最後の非零係数の量子化データに対応するシンボルデータは、次のブロックの最初の非零係数の量子化データの出現時に出力されることを特徴とする画像圧縮装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2010−130053(P2010−130053A)
【公開日】平成22年6月10日(2010.6.10)
【国際特許分類】
【出願番号】特願2008−299318(P2008−299318)
【出願日】平成20年11月25日(2008.11.25)
【出願人】(591128453)株式会社メガチップス (322)
【Fターム(参考)】