(57)【特許請求の範囲】
【請求項１】
画像データの各画素を、設定した許容誤差範囲内でニアロスレス符号化する画像符号化装置であって、
符号化対象の画像データにおける着目画素を予測符号化する際の予測値の算出に利用する周囲画素を記憶する記憶手段と、
前記着目画素と、前記記憶手段を参照して求めた前記着目画素の予測値とから、前記着目画素の予測誤差を算出する算出手段と、
該算出手段で得られた予測誤差を、予め設定された許容誤差を表す指標値を用いて量子化することで量子化値を得る量子化手段と、
該量子化手段で得られた量子化値を符号化し、前記着目画素の符号化データとして出力する符号化手段と、
前記量子化手段で得られた量子化値を前記指標値を用いて逆量子化し、当該逆量子化したて得られた逆量子化値と前記予測値とから前記着目画素の位置の復号画素値を求め、当該復号画素値を、前記着目画素に後続して符号化する際の前記周囲画素の１つとするために前記記憶手段に格納するローカル復号手段とを有し、
前記ローカル復号手段は、
前記量子化値の符号が正と負の場合とで、値に１の差を持つ逆量子化値を生成する
ことを特徴とする画像符号化装置。
【請求項２】
符号化対象の着目画素をｘ、予測値をｐ、前記指標値をＮＥＡＲとしたとき、
前記量子化手段は、量子化値ｑを次式に従って算出する
0006581469.tif 000009
ことを特徴とする請求項１に記載の画像符号化装置。
【請求項３】
前記ローカル復号手段は、次式に従って前記逆量子化値ｉｑを算出する
ｉｑ＝ｑ×２×ＮＥＡＲ        （ｑ≧０の場合）
ｉｑ＝ｑ×２×ＮＥＡＲ＋１    （ｑ＜０の場合）
ことを特徴とする請求項２に記載の画像符号化装置。
【請求項４】
符号化対象の着目画素をｘ、予測値をｐ、前記指標値をＮＥＡＲとしたとき、
前記量子化手段は、量子化値ｑを次式に従って算出する
0006581469.tif 000010
ことを特徴とする請求項１に記載の画像符号化装置。
【請求項５】
前記ローカル復号手段は、次式に従って前記逆量子化値ｉｑを算出する
ｉｑ＝ｑ×２×ＮＥＡＲ        （ｑ≧０の場合）
ｉｑ＝ｑ×２×ＮＥＡＲ−１    （ｑ＜０の場合）
ことを特徴とする請求項４に記載の画像符号化装置。
【請求項６】
ユーザの操作に応じて、２の累乗数を前記指標値として生成する生成手段を更に有することを特徴とする請求項１乃至５のいずれか１項に記載の画像符号化装置。
【請求項７】
コンピュータが読み込み実行することで、前記コンピュータを、請求項１乃至６のいずれか１項に記載の画像符号化装置が有する各手段として機能させるためのプログラム。
【請求項８】
請求項７に記載のプログラムを格納した、コンピュータが読み取り可能な記憶媒体。
【請求項９】
符号化対象の画像データにおける着目画素を予測符号化する際の予測値の算出に利用する周囲画素を記憶するための記憶手段を有し、前記画像データの各画素を、設定した許容誤差範囲内でニアロスレス符号化する画像符号化装置の制御方法であって、
算出手段が、前記着目画素と、前記記憶手段を参照して求めた前記着目画素の予測値とから、前記着目画素の予測誤差を算出する算出工程と、
量子化手段が、該算出工程で得られた予測誤差を、予め設定された許容誤差を表す指標値を用いて量子化することで量子化値を得る量子化工程と、
符号化手段が、該量子化工程で得られた量子化値を符号化し、前記着目画素の符号化データとして出力する符号化工程と、
ローカル復号手段が、前記量子化工程で得られた量子化値を前記指標値を用いて逆量子化し、当該逆量子化したて得られた逆量子化値と前記予測値とから前記着目画素の位置の復号画素値を求め、当該復号画素値を、前記着目画素に後続して符号化する際の前記周囲画素の１つとするために前記記憶手段に格納するローカル復号工程とを有し、
前記ローカル復号工程は、
前記量子化値の符号が正と負の場合とで、値に１の差を持つ逆量子化値を生成する
ことを特徴とする画像符号化装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データの符号化技術に関するものである。
【背景技術】
【０００２】
画像データの符号化方式の一つにＪＰＥＧ−ＬＳがある。このＪＰＥＧ−ＬＳは、ロスレス符号化とニアロスレス符号化を選択できる。ニアロスレス符号化は、符号化する以前の画素値と復号して得られた画素値の差が所定の範囲内とする方式である。ＪＰＥＧ−ＬＳのニアロスレス符号化は、符号化対象画素の周囲画素の状態に基づいて予測符号化とランレングス符号化を切り替える。予測符号化は、符号化対象画素の画素値を周囲画素から予測し、予測誤差を量子化して符号化する。ランレングス符号化は、所定範囲内の画素値のラン長（連続数）を符号化する。量子化に関する他の方法として、特定の画素値の場合には、特定の量子化値を割り当てる量子化方法が開示されている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４８９５５６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
画像データを予測符号化によりニアロスレス符号化する場合を考察する。この場合のニアロスレス符号化による符号化データから得られた画像データには、設定した許容誤差で規定される特定の値を持つ画素が多く発生する傾向があり、それが擬似輪郭となって現れることがある。
【０００５】
本発明はかかる点に鑑みなされたものであり、ニアロスレス符号化を行いながらも擬似輪郭の発生を、これまでよりも抑制可能とする技術を提供しようとするものである。
【課題を解決するための手段】
【０００６】
この課題を解決するため、例えば本発明の画像符号化装置は以下の構成を備える。すなわち、
画像データの各画素を、設定した許容誤差範囲内でニアロスレス符号化する画像符号化装置であって、
符号化対象の画像データにおける着目画素を予測符号化する際の予測値の算出に利用する周囲画素を記憶する記憶手段と、
前記着目画素と、前記記憶手段を参照して求めた前記着目画素の予測値とから、前記着目の予測誤差を算出する算出手段と、
該算出手段で得られた予測誤差を、予め設定された許容誤差を表す指標値を用いて量子化することで量子化値を得る量子化手段と、
該量子化手段で得られた量子化値を符号化し、前記着目画素の符号化データとして出力する符号化手段と、
前記量子化手段で得られた量子化値を前記指標値を用いて逆量子化し、当該逆量子化したて得られた逆量子化値と前記予測値とから前記着目画素の位置の復号画素値を求め、当該復号画素値を、前記着目画素に後続して符号化する際の前記周囲画素の１つとするために前記記憶手段に格納するローカル復号手段とを有し、
前記ローカル復号手段は、
前記量子化値の符号が正と負の場合とで、値に１の差を持つ逆量子化値を生成することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、ニアロスレス符号化による予測符号化を行いながらも擬似輪郭の発生を、これまでよりも抑制可能となる。
【図面の簡単な説明】
【０００８】
【図１】画像符号化装置の構成を示す図。
【図２】符号化部の構成を示す図。
【図３】情報処理部のハードウェア構成を示す図。
【図４】カメラの撮像部の構成の一例を示す図。
【図５】符号化部で行われる処理のフローチャート。
【図６】逆量子化部で行われる処理のフローチャート。
【図７】着目画素と周辺画素の位置関係を示す図。
【図８】ゴロム・ライス符号化を説明する図。
【図９】逆量子化を説明する図。
【図１０】画像復号装置の構成の一例を示す図。
【図１１】復号部の構成の一例を示す図。
【図１２】復号部で行われる処理のフローチャート。
【図１３】逆量子化を説明する図。
【発明を実施するための形態】
【０００９】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。なお、以下に説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載した構成の具体的な実施形態の一つである。
【００１０】
［第１の実施形態］
第１の実施形態は、画像データを予測符号化でニアロスレス符号化する画像符号化装置に適用される。以下、本実施形態に示す画像符号化装置について説明する。また、第１の実施形態では、画像符号化装置をカメラに適用した場合を説明する。
【００１１】
図１は、そのカメラ１００のブロック構成図である。カメラ１００は、操作部１０１と、撮像部１０２と、情報処理部１０９と、記憶部１０７と、Ｉ／Ｏインターフェース１０８とを有している。情報処理部１０９は、取得部１０３、画像処理部１０４、符号化部１０５、出力部１０６を有する。
【００１２】
図４（ａ）はカメラ１００の正面図である。図４（ａ）に示すように、カメラ１００は撮像部１０２を備えている。図４（ｂ）は撮像部１０２の内部構成を示す図である。撮像部１０２は、ズームレンズ４０１、フォーカスレンズ４０２、４０３、開口絞り４０４、シャッター４０５を有している。また光学ローパスフィルタ４０６、ｉＲカットフィルタ４０７、カラーフィルタ４０８、撮像素子４０９およびＡ／Ｄ変換部４１０を有している。ユーザは絞り４０４を調整することにより、撮像部１０２に入射される入射光量を調節できる。撮像素子４０９は、ＣＭＯＳやＣＣＤなどの受光素子である。撮像素子４０９で被写体の光量を検知すると、検知された光量がＡ／Ｄ変換部４１０によってデジタル値に変換され、デジタルデータとして情報処理部１０９へと出力される。
【００１３】
図３は情報処理部１０９の内部構成を示す図である。情報処理部１０９は、ＣＰＵ３０１、ＲＡＭ３０２、ＲＯＭ３０３を有し、各構成部はシステムバス３０４により相互に接続されている。
【００１４】
ＲＯＭ３０３には、ＣＰＵ３０１が実行するプログラムや各種データが記憶されている。ＲＡＭ３０２は、ＣＰＵ３０１がプログラムを実行した際のワークエリア、各種バッファとして利用される。ＣＰＵ３０１は、ＲＯＭ３０３に格納されたプログラムを実行し、ＲＡＭ３０２をワークエリアやバッファとして利用する。この結果、ＣＰＵ３０１は、先に示した図１の取得部１０３、画像処理部１０４、符号化部１０５、出力部１０６として機能すると共に、装置全体の制御を司ることになる。なお、ここでは、各構成要素を、ＣＰＵ３０１が実行することで実現するものとしたが、同等の処理を果たす専用の回路等で実現しても構わない。
【００１５】
操作部１０１は、カメラ本体に備えられたボタンやダイヤル、タッチパネルなどの入力装置であり、ユーザが操作して、撮影の開始、停止および撮影条件の設定などの命令を行える。後述するパラメータＮＥＡＲも、ユーザの指示に従ってこの操作部１０１から設定されるものである。ここでパラメータＮＥＡＲは、ニアロスレス符号化を行う際の許容誤差を表す指標値であり、ユーザが許容誤差の大小の指示したとき、その指示に応じて１、２、４、８…と、２の累乗数の値の１つがＮＥＡＲとして設定されるものとする。
【００１６】
記憶部１０７は、撮像部１０２により取得されたＲＡＷ画像データ、および、画像データを保存することができる、メモリカードなどの不揮発性の記憶媒体である。Ｉ／Ｏインターフェース１０８はユニバーサルシリアルバス（ＵＳＢ）によって実装されたシリアルバス接続を利用でき、対応するＵＳＢコネクタを有する。もちろん、Ｉ／Ｏインターフェース１０８を、光ファイバによるＬＡＮ接続や、無線接続などに利用しても構わない。表示部３０５は、撮影画像や文字の表示を行う。表示部３０５には一般的に液晶ディスプレイが用いられる。またタッチパネル機能を有していても良く、その場合はタッチパネルを用いたユーザ指示を操作部１０１の入力として扱うことも可能である。
【００１７】
以下、本実施形態に示す情報処理部１０９の処理について説明する。ユーザの操作部１０１に対する撮像指示に基づき、取得部１０３は、撮像部１０２から出力されたベイヤ配列のＲＡＷ画像データを取得し、画像処理部１０４にそのＲＡＷ画像データを供給する。画像処理部１０４は、ＲＡＷ画像データを、デモザイク処理して、通常の１画素がＲＧＢの３成分で構成される画像データを生成し、符号化部１０５にその画像データを供給する。符号化部１０５は、供給された画像データを、設定された許容誤差範囲内で符号化処理を行うことになる。
【００１８】
なお、本実施形態における符号化対象の画像データの画素は、上記のようにＲＧＢの３成分で構成され、かつ、各成分とも各８ビットで表現されるものとする。そして、実施形態における符号化部１０５は、色成分を単位にモノクロ画像として符号化する場合を例に説明する。つまり、Ｒ成分のモノクロ多値画像、Ｇ成分のモノクロ多値画像、Ｂ成分のモノクロ多値画像をそれぞれ独立して符号化する。
【００１９】
よって、本実施形態における符号化対象の画像データは、単一成分のみのモノクロ画像の符号化であっても良いのは明らかである。また、符号化対象の画像データはＲＧＢ形式に限らず、他の色空間やＲＡＷ画像データであっても構わない。例えば、１画素がＹ、Ｃｂ、Ｃｒでそれぞれが８ビットで構成される場合には、各成分を単位にモノクロ画像として符号化すれば良い。また、ＲＡＷ画像データに適用する場合、撮像部１０２の撮像素子がベイヤ配列（Ｒ、Ｇ０、Ｇ１、Ｂの色に対応する２×２個の撮像素子の組の配列）となっている。各撮像素子からの信号を１４ビットで表現している場合、Ｒ成分で構成されるモノクロ多値画像、Ｇ０成分で構成されるモノクロ多値画像、Ｇ１成分で構成されるモノクロ多値画像、Ｂ成分で構成されるモノクロ多値画像をそれぞれ符号化する。従って、本願は、画像の色空間の種類、画像を構成する色成分の種類、ビット数によって限定されるものではない。符号化対象の画像がＲ、Ｇ、Ｂの３成分で各８ビット（２５６階調）とするのは、あくまで理解を容易にするためであると理解されたい。
【００２０】
本実施形態における符号化部１０５の処理について説明する。図２は符号化部１０５の内部構成であり、図５は符号化部１０５で行われる１つの色成分（実施形態では、Ｒ、Ｇ、Ｂのいずれか）のモノクロ多値画像データに対する符号化処理を示すフローチャートである。つまり、実際には図５の処理を３回実行する。そして、３回行った結果得られた符号データをまとめて、１つのファイルが構成されることになる。
【００２１】
まずステップＳ５０１で、色成分入力部２０１は、画像処理部１０４から供給された画像データにおける１つの成分の画像データをモノクロ多値画像として入力する。
【００２２】
ステップＳ５０２で、符号化部１０５は、モノクロ多値画像内の画素が全て符号化されたかを判定する。全て符号化された場合は符号化処理を終了し、符号化されていない画素がある場合は、ステップＳ５０３に移る。
【００２３】
ステップＳ５０３で、符号化部１０５は、モノクロ多値画像の画素値をライン単位に入力する。そしてステップＳ５０４で、符号化部１０５は、入力したラインにおける左端に位置する画素を符号化対象の着目画素として設定する。
【００２４】
ラインデータ保持部２０２は、符号化処理に必要となるデータをＲＡＭ３０２内に予め確保されたバッファ領域に保持する。このバッファ領域には、符号化対象の着目画素が位置するラインと、その直前のラインの２ライン分のデータを保持するものとする。図７は着目画素とその周辺画素の位置関係を示している。図示のｘが符号化対象の着目画素である。図示のごとく、参照範囲は、着目画素ｘが位置するラインとその直前のラインの２ラインにおける、着目画素の周囲画素（左画素ａ、上画素ｂ、左上画素ｃ）である。また、実施形態では、ラスタスキャン順に画素を順次符号化していくため、着目画素ｘの左画素ａ、上画素ｂ、左上画素ｃは、符号化済みの画素である。ニアロスレス符号化では、符号化以前の画素値と復号後の画素値の差を、設定した許容範囲内にすることができる。このため、バッファ領域内の符号化済みの画素位置には、復号後の画素値が記憶保持されることになる（ローカル復号）。
【００２５】
なお、着目画素ｘが最初のラインの左端に位置するとき、周囲画素ａ、ｂ、ｃは実在しない。また、着目画素ｘが２ライン目以降でラインの左端に位置するときには、周囲画素ｂ、ｃは実在する画素であるものの、周囲画素ａは実在しない。このような実在しない画素については、所定の値（たとえば０）を持つものと見なす。なお、この所定値は、符号化装置と復号装置との間で共通であればよく、“０”に限定されない。
【００２６】
ステップＳ５０５で、符号化部１０５は、着目ライン内の全画素を符号化したか否かを判定する。言い換えれば、着目ラインのライン終端（右端）の画素の符号化を終えたか否かを判定する。ライン中の全ての画素の符号化を終えたと判定した場合には、ステップＳ５０６で次のラインの処理に移る。着目ラインの全画素の符号化が未完である場合、符号化部１０５は、処理をステップＳ５０７に進める。
【００２７】
ステップＳ５０７で、予測変換部２０３は、着目画素に対する予測値ｐを算出し、着目画素ｘと予測値ｐとの差である予測誤差ｅ（＝ｘ−ｐ）を導出する。実施形態において、予測値ｐは、ＭＥＤ（Ｍｅｄｉａｎ  Ｅｄｇｅ  Ｄｅｔｅｃｔｉｏｎ）予測を用いて算出するものとする。図７の周辺画素ａ、ｂ、ｃの画素値を用いた予測値ｐの算出式は以下の通りである。
【数１】
0006581469.tif 000002
【００２８】
予測変換部２０３は、上記のようにして求めた予測値ｐと着目画素ｘの差分から、予測誤差を導出する。
【００２９】
ステップＳ５０８で、量子化部２０４は、予測誤差ｅを量子化して量子化値ｑを算出する。量子化部２０４は、ニアロスレス符号化におけるパラメータ“ＮＥＡＲ”に基づき量子化を行う。パラメータＮＥＡＲは、符号化／復号に伴う画素値の変化の大きさの最大値を指定するものであり、ここでは許容誤差と呼ぶ。予測誤差ｅ（＝着目画素値ｘ−予測値ｐ）、パラメータＮＥＡＲを用いた量子化値ｑの算出式は以下の通りである。
【数２】
0006581469.tif 000003
【００３０】
パラメータＮＥＡＲを１、２、４、８…に限定するとき、除算する値（２×ＮＥＡＲ）は、２、４、８、１６と２の累乗数となる。即ち、単純なビットシフトによる演算が可能となり、演算コストを削減することができる。もちろんパラメータＮＥＡＲが他の数値であっても、除算する値（２×ＮＥＡＲ）が２の累乗数であればビットシフトによる演算が可能である。
【００３１】
ステップＳ５０９で、ゴロム符号化部２０６は、量子化値ｑをゴロム・ライス符号化する。ゴロム符号化部２０７は、まず量子化値ｑを非負の整数値ＭＶに変換する。変換式は以下の通りである。この式から明らかなように、整数値ＭＶが偶数か奇数かで量子化値ｑの正負の符号が判別できることになる。
【数３】
0006581469.tif 000004
【００３２】
次に、ゴロム符号化部２０６は、パラメータｋを用いて整数値ＭＶをゴロム・ライス符号化でエントロピー符号化する。ゴロム・ライス符号化の手順は以下の通りである。
（１）整数値ＭＶを２進数表現して、整数値ＭＶをｋビット右シフトした値で示される個数の０を並べ、その後に１を付加する。
（２）工程（１）の後ろに、ＭＶの下位ｋビットを取りだして付け加える。
【００３３】
図８にゴロム・ライス符号化のパラメータｋと非負の整数値ＭＶと符号語の関係を示す。ゴロム・ライス符号化の構成はこれに限定されるものではなく、例えば、０と１を反対にして符号を構成しても構わないし、上記手順で述べた（１）と（２）の順番を入れ替えて符号を構成しても良い。なお、ここでは符号化パラメータｋの決定方法については特に特定しないが、符号化側と復号側で同じパラメータを利用できれば良い。例えば、予め色成分毎に適切と思われるパラメータｋを選定する方法でも良いし、符号化の過程で動的に変化するようにしても構わない。
【００３４】
図８において、例えばパラメータｋ＝０の場合を考える。量子化値ｑが−２のとき、非負の整数値ＭＶは３となる。量子化値ｑが＋２のとき、非負の整数値ＭＶは４となる。非負の整数値ＭＶが３のとき、符号語は“０００１”となって符号長は４ビットとなる。また、非負の整数値ＭＶが４のとき、符号語は“００００１”となる、符号長は５ビットとなる。上記のようにして、ゴロム符号化部２０６による着目画素ｘに対する符号語の出力を終えると、処理はステップＳ５１０に移る。
【００３５】
ステップＳ５１０にて、逆量子化部２０５は、量子化値ｑに対する逆量子化処理を含むローカル復号処理を行う。逆量子化部２０５で行われる処理のフローチャートを図６に示す。
【００３６】
まずステップＳ６０１で、判定部２０８は、量子化値ｑを取得する。ステップＳ６０２で、判定部２０８は、量子化値の正負の符号に基づき、逆量子化方法を切り替える。即ち、量子化値ｑが０以上のとき、ステップＳ６０３に移り、第１逆量子化部２０９の処理を行う。また量子化値ｑが０より小さいとき、ステップＳ６０４に移り、第２逆量子化部２１０の処理を行う。
【００３７】
ステップＳ６０３で、第１逆量子化部２０９は、量子化値ｑ、パラメータＮＥＡＲを用いて逆量子化を行い、逆量子化値ｉｑを算出する。算出式は以下の通りである。
ｉｑ＝ｑ×２×ＮＥＡＲ
ここで、パラメータＮＥＡＲを１、２、４、８に限定するとき、乗算する値（２×ＮＥＡＲ）は、２、４、８、１６と２の累乗数となる。即ち、単純なビットシフトによる演算でｉｑを求めることが可能となり、演算コストを削減することができる。もちろんパラメータＮＥＡＲが他の数値であっても、乗算する値（２×ＮＥＡＲ）が２の累乗数であればビットシフトによる演算が可能である。
【００３８】
ステップＳ６０４、及び、ステップＳ６０５で、第２逆量子化部２１０は、量子化値ｑ、パラメータＮＥＡＲを用いて逆量子化を行い、逆量子化値ｉｑを算出する。算出式は以下の通りである。
ｉｑ＝ｑ×２×ＮＥＡＲ＋１
まずステップＳ６０４では、ステップＳ６０３と同様に、量子化値ｑを（２×ＮＥＡＲ）で乗算する。次にステップＳ６０５では、逆量子化値ｉｑが、許容誤差に収まるようにレベルシフトを行う。ここでは“＋１”を加算する。ステップＳ５０８の量子化方法、及び、許容誤差に基づき、レベルシフト値が決定されることになる。
【００３９】
図９を用いて逆量子化処理を説明する。図９（ａ）は、逆量子化処理でステップ６０５のレベルシフトを行わない場合の例である。そして、図９（ｂ）は、逆量子化処理でレベルシフトを行う場合の例である。ここではパラメータＮＥＡＲが２の場合について説明する。図示の各フィールドは、予測誤差を量子化し、逆量子化したときの予測誤差、量子化値、逆量子化値を示している。予測誤差と逆量子化値との差は、図９（ａ）、（ｂ）共に、全てパラメータＮＥＡＲ（＝２）の範囲内の差に収まっていることが分かる。
【００４０】
２の累乗数で除算／乗算して量子化／逆量子化の処理を行うことで、逆量子化の際、複数の逆量子化値を選択できることが分かる。例えば、予測誤差が−２から−５までの値を、量子化値−１に量子化したとき、逆量子化後の逆量子化値は−３、−４共に、パラメータＮＥＡＲ（＝２）の範囲内に収まる。本願では、このような性質を利用して、量子化値の正負の符号に基づいて、複数の逆量子化方法を切り替える。本処理による効果は後述する。
【００４１】
ステップＳ６０６で、逆量子化部２０５は、逆量子化値ｉｑ、予測値ｐを用いて着目画素ｘの復号後の画素値ｘ’を算出する。画素値ｘ’の算出式は以下に示す通りである。
ｘ’＝ｉｑ＋ｐ
ニアロスレス符号化では、符号化前の画素値ｘと復号後の画素値ｘ’の差の絶対値が、パラメータＮＥＡＲ以下（許容値以下）となる。
｜ｘ−ｘ’｜≦ＮＥＡＲ
図５に戻って、ステップＳ５１１で、符号化部１０５は、着目画素の画素値ｘを更新する。具体的には、ラインデータ保持部２０２のバッファ領域内の符号化前の着目画素ｘの値を、復号後の画素値ｘ’で置き換える。ステップＳ５１２で、符号化部１０５は、着目画素ｘの右隣の画素を新たな着目画素とし、ステップＳ５０５に戻る。
【００４２】
図２に戻って、符号出力部２０７は、ゴロム符号化部２０６で生成された符号化データを出力部１０６に供給する。出力部１０６は、復号に必要な情報を含むヘッダを生成し、生成したヘッダに後続して、符号出力部２０７から供給された符号化データを記憶部１０７に出力し、保存する。保存された符号化データは、Ｉ／Ｏインターフェース１０８を介して、カメラ外のデバイスに出力される。
【００４３】
次に、実施形態における第１逆量子化部２０９、第２逆量子化部２１０の処理による効果について説明する。前述のとおり、パラメータＮＥＡＲを１、２、４、８に限定するとき、乗算処理が単純なビットシフトで実現でき、演算コストを削減することができる。さらに復号画像の画質向上について、図９を用いて説明する。復号処理の詳細については第２の実施形態で説明する。ここではパラメータＮＥＡＲが２の場合を例とする。図９（ａ）は、逆量子化処理でステップ６０５のレベルシフトを行わない場合である。逆量子化値が４の倍数になっていることが分かる。
【００４４】
復号画素値ｘ’は、次式のように算出される。
復号画素値ｘ’＝逆量子化値ｉｑ＋予測値ｐ
逆量子化値が４の倍数であるため、予測値ｐが４の倍数であれば、復号画素値ｘ’は４の倍数となる。予測値ｐは、周辺画素からＭＥＤ予測で算出される。ＭＥＤ予測を再度示せば次の通りである。
【数４】
0006581469.tif 000005
【００４５】
周囲画素ａ、ｂ、ｃが４の倍数であれば、予測値ｐは４の倍数となり、復号画素値ｘ’は４の倍数となる。さらに復号画素値ｘ’を周囲画素として用いるため、復号画素値に４の倍数が多く発生し、復号画像に疑似輪郭が発生してしまう。ここではパラメータＮＥＡＲが２の場合を例としたが、パラメータＮＥＡＲが１、４、８の場合も同様である。
【００４６】
復号画像の疑似輪郭を低減するため、図９（ｂ）に示すごとく、逆量子化処理でレベルシフトを行う。量子化値が０以上のときは、逆量子化値は４の倍数になるが、量子化値が０より小さいときは、逆量子化値は４の倍数にならないことが分かる。このような逆量子化処理を行うことで、復号画像の疑似輪郭を低減し、画質を向上させることができる。
【００４７】
ここでは予測値ｐをＭＥＤ予測で算出する例を示したが、周辺画素から加算、減算のみで算出する予測であれば、他の予測方法を用いても構わない。例えば、左隣画素ａを予測値として用いる場合、あるいは、上隣画素ｂを予測値として用いる場合などが挙げられる。
【００４８】
以上説明したように、本実施形態によれば、画像データをニアロスレス符号化する際、量子化値の正負の符号に基づき、複数の逆量子化方法を切り替えることで、予測符号化における演算量削減、及び、復号画像の画質向上が図れる。
【００４９】
次に、上記第１の実施形態のカメラ１００で生成された符号化データを復号する復号装置について説明する。図１０は、第１の実施形態の画像復号を行うデバイス１０００の構成の一例を示す図である。デバイス１０００は、Ｉ／Ｏインターフェース１００１と、記憶部１００２と、操作部１００３と、情報処理部１００８と、表示部１００７を有している。
【００５０】
デバイス１０００の種類は特に問わないが、典型的にはコンピュータ、または、カメラである。本第１の実施形態におけるデバイス１０００をコンピュータとして説明する。Ｉ／Ｏインターフェース１００１は、Ｉ／Ｏインターフェース１０８と同様にＵＳＢコネクタを有する。デバイス１０００は、Ｉ／Ｏインターフェース１００１を介して、カメラ１００のＩ／Ｏインターフェース１０８から出力される圧縮画像データを取得する。
【００５１】
記録部１００２は、Ｉ／Ｏインターフェース１００１から取得された圧縮画像データを保存することができるメモリカードなどの不揮発性の記憶媒体である。操作部１００３は、コンピュータに備えられたキーボード、マウスなどの入力装置であり、ユーザが操作して復号処理などの命令を行える。表示部１００７は、復号画像の表示等が行え、一般的に液晶ディスプレイが用いられる。情報処理部１００８の内部構成は、図３に示す情報処理部１０９と同様である。
【００５２】
以下、本第１の実施形態における情報処理部１００８の処理について説明する。ユーザの操作部１００３に対する復号指示に基づき、取得部１００４は、記憶部１００２から圧縮画像データ（第１の実施形態の装置で符号化したデータファイル）を取得し、復号部１００５に圧縮画像データを供給する。
【００５３】
復号部１００５は、圧縮画像データの復号処理を行う。本第１の実施形態では１画素がＲＧＢ各８ビットで表現されるものとし、色成分を単位にモノクロ画像として復号する場合を例に説明する。つまり、Ｒ成分のモノクロ多値画像、Ｇ成分のモノクロ多値画像、Ｂ成分のモノクロ多値画像をそれぞれ独立して復号する。
【００５４】
本第１の実施形態に示す復号部１００５の処理について説明する。図１１は復号部１００５の内部構成であり、図１２は復号部１００５で行われる１つの色成分（実施形態では、Ｒ、Ｇ、Ｂのいずれか）の符号データに対する復号処理を示すフローチャートである。つまり、実際には図１２の処理を３回実行する。そして、３回行った結果得られたＲ成分、Ｇ成分、Ｂ成分のモノクロ多値画像をまとめることで、カラー画像データが生成される。なお、ラインデータ保持部１１０４は２ライン分の容量を有し、復号に先立ち０クリアされるものとする。
【００５５】
まずステップＳ１２０１で、符号入力部１１０１は、取得部１００４から出力された圧縮画像データにおける１つの成分の符号データを入力する。ステップＳ１２０２で、復号部１００５は、モノクロ多値画像内の画素が全て復号されたかを判定する。全て復号された場合は復号処理を終了し、復号されていない画素がある場合は、ステップＳ１２０３に移る。ステップＳ１２０３にて、復号部１００５は、復号するラインにおける左端に位置する画素を復号対象の着目画素として設定する。
【００５６】
ラインデータ保持部１１０４は、復号処理に必要となるデータを保持する。ここでは、復号対象の着目画素が位置するラインと、その直前のラインの２ライン分のバッファメモリを用意し、復号済みの画素値を保持する。図７は着目画素とその周辺画素の位置関係を示している。ｘが復号対象の着目画素である。図示のごとく、参照範囲は、着目画素ｘが位置するラインとその直前のラインの２ラインにおける、着目画素の周囲画素（左画素ａ、上画素ｂ、左上画素ｃ）である。ラスタスキャン順に画素を順次復号していくため、左画素ａ、上画素ｂ、左上画素ｃは、復号済みの画素である。なお、着目画素ｘが最初のラインの左端に位置するとき、ａ、ｂ、ｃは実在しない。また、着目画素ｘが２ライン目以降でラインの左端に位置するとき、ａは実在しない。このような実在しない画素については、所定の値（たとえば０）を持つものと見なす。符号化に先立って、ラインデータ保持部１１０４をゼロクリアするのは、かかる理由である。
【００５７】
ステップＳ１２０４で、復号部１００５は、着目ライン内の全画素の復号を終えたか否かを判定する。言い換えれば、着目ラインのライン終端（右端）の画素の復号を終えたか否かを判定する。着目ライン中の全画素の復号を終えたと判定した場合には、ステップＳ１２０５で次のラインの処理に移る。着目ラインの全画素の復号が未完である場合、復号部１００５は処理をステップＳ１２０６に進める。
【００５８】
ステップＳ１２０６で、予測変換部１１０２は、予測変換にＭＥＤ（Ｍｅｄｉａｎ  Ｅｄｇｅ  Ｄｅｔｅｃｔｉｏｎ）予測を用いた予測値ｐを算出する。図７の周辺画素ａ、ｂ、ｃの復号済みの画素値を用いた予測値ｐの算出式は既に示したが、再度示せば次の通りである。
【数５】
0006581469.tif 000006
【００５９】
ステップＳ１２０７にて、ゴロム復号部１１０３は、量子化値ｑをゴロム・ライス復号に基づくエントロピー復号を行う。パラメータｋを用いたゴロム・ライス復号の手順は以下の通りである。
（１）符号データから１ビットずつ取りだし、取り出したビットが"０"である限り、カウントアップしていく。そして、取り出したビットが"１"の場合は次工程（２）に移る。ここでは、ビットが"０"の数をZEROcntと呼ぶ。
（２）ZEROcntをｋビット左シフトする。さらに符号データからｋビット取りだした値を、シフト後のZEROcntに加算し、シンボルＭＶを求める。
【００６０】
次に、ゴロム復号部１１０２は、シンボルＭＶから量子化値ｑを算出する。変換式は次の通りである。
【数６】
0006581469.tif 000007
【００６１】
ステップＳ１２０８で、逆量子化部２０５は、量子化値ｑに対して逆量子化を行う。逆量子化部２０５で行われる処理はフローチャートを図６に示す。逆量子化部２０５の処理は、つまり、符号化部における処理と同じであるので、ここでの説明は省略する。逆量子化部２０５の処理により、量子化値ｉｑを算出し、予測値ｐを用いて着目画素ｘの復号後の画素値ｘ’を算出する。
ｘ’＝ｉｑ＋ｐ
ステップＳ１２０９で、復号部１００５は、着目画素ｘの復号後の画素値ｘ’を設定する。つまり、復号部１００５はラインデータ保持部１１０４で保持している２ライン分のバッファメモリ内の着目画素ｘの位置に、復号画素値ｘ’を格納する。そして、ステップＳ１２１０で、復号部１００５は、着目画素ｘの右隣の画素を新たな着目画素とし、ステップＳ１２０４に戻る。
【００６２】
図１１に戻って、色成分出力部１１０５は、復号後の画像データを出力部１００６に出力する。図１０に戻って、出力部１００６は、Ｒ，Ｇ，Ｂの各成分の画像データを予め設定されたフォーマットにし、記憶部１００２に出力し、保存する。または、表示部１００７に出力し、表示する。
【００６３】
以上説明したように、復号装置では、画像データをニアロスレス復号する際、量子化値の正負の符号に基づき、複数の逆量子化方法を切り替えることで、予測符号化における演算量削減、及び、復号画像の画質向上が期待できる。
【００６４】
［第２の実施形態］
第１の実施形態は、画像データを予測符号化でニアロスレス符号化／復号する例を説明した。本第２の実施形態は、画像符号化装置の量子化、逆量子化方法の変形例について説明する。
【００６５】
本第２の実施形態における画像符号化装置の構成は第１の実施形態の図１と同じであり、符号化部１０５の構成も図２と同じであるので、それらについての説明は省略する。そこで第１の実施形態と異なる量子化部２０４、及び、逆量子化部２０５について、符号化部１０５の処理と共に説明する。
【００６６】
図５は符号化部１０５で行われる１つの色成分（実施形態では、Ｒ、Ｇ、Ｂのいずれか）の画像データに対する符号化処理を示すフローチャートである。
【００６７】
ステップＳ５０１からステップＳ５０７までは第１の実施形態と共通するので、ここでの説明は省略する。ステップＳ５０８において、量子化部２０４は、予測誤差ｅを量子化して量子化値ｑを算出する。この量子化処理は、ニアロスレス符号化におけるパラメータＮＥＡＲに基づき量子化を行う。本第２の実施形態における予測誤差ｅ（＝着目画素ｘの画素値−予測値ｐ）、パラメータＮＥＡＲを用いた量子化値ｑの算出式は次式の通りである。
【数７】
0006581469.tif 000008
【００６８】
ステップＳ５０９は、第１の実施形態と共通するので、ここでの説明は省略する。ステップＳ５１０において、逆量子化部２０５は、量子化値ｑに対して逆量子化を行う。逆量子化部２０５で行われる処理は図６のフローチャートの通りである。
【００６９】
まずステップＳ６０１で、判定部２０８は、量子化値ｑを取得する。ステップＳ６０２で、判定部２０８は、量子化値の正負の符号に基づき、逆量子化方法を切り替える。即ち、量子化値ｑが０以上のとき、ステップＳ６０３に移り、第１逆量子化部２０９の処理を行う。また量子化値ｑが０より小さいとき、ステップＳ６０４に移り、第２逆量子化部２１０の処理を行う。
【００７０】
ステップＳ６０３で、第１逆量子化部２０９は、量子化値ｑ、パラメータＮＥＡＲを用いて逆量子化を行い、逆量子化値ｉｑを算出する。
ｉｑ＝ｑ×２×ＮＥＡＲ
ここで、パラメータＮＥＡＲを１、２、４、８に限定するとき、乗算する値（２×ＮＥＡＲ）は、２、４、８、１６と２の累乗数となる。即ち、単純なビットシフトによる演算で逆量子化値ｉｑを算出可能となり、演算コストを削減することができる。もちろんパラメータＮＥＡＲが他の数値であっても、乗算する値（２×ＮＥＡＲ）が２の累乗数であればビットシフトによる演算が可能である。また、パラメータＮＥＡＲが３、５など、乗算する値が２の累乗数にならない場合でも、ビットシフトによる演算はできないが、量子化、逆量子化の処理は可能である。
【００７１】
ステップＳ６０４、及び、ステップＳ６０５で、第２逆量子化部２１０は、量子化値ｑ、パラメータＮＥＡＲを用いて逆量子化を行い、逆量子化値ｉｑを算出する。算出式は以下の通りである。
ｉｑ＝ｑ×２×ＮＥＡＲ−１
まずステップＳ６０４では、ステップＳ６０３と同様に、量子化値ｑを（２×ＮＥＡＲ）で乗算する。次にステップＳ６０５では、逆量子化値ｉｑが、許容誤差に収まるようにレベルシフトを行う。ここでは１を減算する（−１を加算する）。ステップＳ５０８の量子化方法、及び、許容誤差に基づき、レベルシフト値が決定されることになる。
【００７２】
図１３を用いて逆量子化処理を説明する。図１３は、上記の量子化、逆量子化の処理を行う例である。ここではパラメータＮＥＡＲが２の場合について、予測誤差を量子化し、逆量子化したときの予測誤差、量子化値、逆量子化値を示している。予測誤差と逆量子化値を比較したとき、図１３は、全てパラメータＮＥＡＲ（＝２）の範囲内の差に収まっていることが分かる。
【００７３】
本第２の実施形態の量子化、逆量子化処理では、量子化値０について、＋２、−２の誤差を許容できるように設定されており、量子化値０付近の符号化効率を改善させることができる。
【００７４】
また、第１の実施形態と同様に、量子化値が０以上のときは、逆量子化値は４の倍数になるが、量子化値が０より小さいときは、逆量子化値は４の倍数にならないことが分かる。このような逆量子化処理を行うことで、復号画像の疑似輪郭を低減し、画質を向上させることができる。
【００７５】
なお、ステップＳ５１１、ステップＳ５１２は、第１の実施形態と共通するので、ここでの説明は省略する。
【００７６】
次に、復号装置における復号処理を説明する。復号装置の構成は第１の実施形態の図１０と同じであり、副後部１００５の構成も図１１と同じである。よって以下では、復号装置における復号部１００５の処理を図１２を参照し、復号処理における量子化、逆量子化方法の変形例について説明する。
【００７７】
ステップＳ１２０１からステップＳ１２０７までは第１の実施形態と共通するので、ここでの説明は省略する。ステップＳ１２０８において、逆量子化部２０５は、量子化値ｑに対して逆量子化を行う。逆量子化部２０５で行われる処理のフローチャートを図６に示す。
【００７８】
まずステップＳ６０１で、判定部２０８は、量子化値ｑを取得する。ステップＳ６０２で、判定部２０８は、量子化値の正負の符号に基づき、逆量子化方法を切り替える。即ち、量子化値ｑが０以上のとき、ステップＳ６０３に移り、第１逆量子化部２０９の処理を行う。また量子化値ｑが０より小さいとき、ステップＳ６０４に移り、第２逆量子化部２１０の処理を行う。
【００７９】
ステップＳ６０３で、第１逆量子化部２０９は、量子化値ｑ、パラメータＮＥＡＲを用いて逆量子化を行い、逆量子化値ｉｑを算出する。算出式は以下の通りである。
ｉｑ＝ｑ×２×ＮＥＡＲ
ここで、パラメータＮＥＡＲを１、２、４、８に限定するとき、乗算する値（２×ＮＥＡＲ）は、２、４、８、１６と２の累乗数となる。即ち、単純なビットシフトによる演算で逆量子化値ｉｑが算出可能となり、演算コストを削減することができる。もちろんパラメータＮＥＡＲが他の数値であっても、乗算する値（２×ＮＥＡＲ）が２の累乗数であればビットシフトによる演算が可能である。また、パラメータＮＥＡＲが３、５など、乗算する値が２の累乗数にならず、偶数である場合でも、ビットシフトによる演算はできないが、量子化、逆量子化の処理は可能である。
【００８０】
ステップＳ６０４、及び、ステップＳ６０５で、第２逆量子化部２１０は、量子化値ｑ、パラメータＮＥＡＲを用いて逆量子化を行い、逆量子化値ｉｑを算出する。算出式は以下の通りである。
ｉｑ＝ｑ×２×ＮＥＡＲ−１
まずステップＳ６０４では、ステップＳ６０３と同様に、量子化値ｑを（２×ＮＥＡＲ）で乗算する。次にステップＳ６０５では、逆量子化値ｉｑが、許容誤差に収まるようにレベルシフトを行う。ここでは１を減算する（−１を加算する）。
【００８１】
図１３を用いて逆量子化処理を説明する。図１３は、上記の量子化、逆量子化の処理を行う例である。ここではパラメータＮＥＡＲが２の場合について、予測誤差を量子化し、逆量子化したときの予測誤差、量子化値、逆量子化値を示している。予測誤差と逆量子化値を比較したとき、図１３は、全てパラメータＮＥＡＲ（＝２）の範囲内の差に収まっていることが分かる。
【００８２】
本第２の実施形態の復号装置における量子化、逆量子化処理では、量子化値０について、＋２、−２の誤差を許容できるように設定されており、量子化値０付近の符号化効率を改善させることができる。
【００８３】
また、第１の実施形態と同様に、量子化値が０以上のときは、逆量子化値は４の倍数になるが、量子化値が０より小さいときは、逆量子化値は４の倍数にならないことが分かる。このような逆量子化処理を行うことで、復号画像の疑似輪郭を低減し、画質を向上させることができる。
【００８４】
ステップＳ１２０９、ステップＳ１２１０は、第２の実施形態と共通するので、ここでの説明は省略する。
【００８５】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００８６】
１００…カメラ、１０１…操作部、１０２…撮像部、１０３…取得部、１０４…画像処理部、１０５…符号化部、１０６…出力部、１０７…記憶部、１０８…Ｉ／Ｏ、１０９…情報処理部、２０１…色成分入力部、２０２…ラインデータ保持部、２０３…予測変換部、２０４…量子化部、２０５…逆量子化部、２０６…ゴロム符号化部、２０７…符号出力部、２０８…判定部、２０９…第１逆量子化部、２１０…第２逆量子化部
【図１】
0006581469.tif 000011
【図２】
0006581469.tif 000012
【図３】
0006581469.tif 000013
【図４】
0006581469.tif 000014
【図５】
0006581469.tif 000015
【図６】
0006581469.tif 000016
【図７】
0006581469.tif 000017
【図８】
0006581469.tif 000018
【図９】
0006581469.tif 000019
【図１０】
0006581469.tif 000020
【図１１】
0006581469.tif 000021
【図１２】
0006581469.tif 000022
【図１３】
0006581469.tif 000023