(57)【特許請求の範囲】
【請求項１】
複数の数値データを含むデータ群の該数値データを２乗した値の和を算出する算出部と、
前記算出部により算出された値と、前記データ群に含まれる該数値データの絶対値の最大値とを加算した値が、所定の許容範囲の絶対値の最大値よりも大きい場合に、所定の符号化処理が実行された該データ群を復号することで得られる復号後データ群が前記許容範囲内に収まらないと判定する判定部と、
前記判定部によって収まらないと判定された場合に、前記所定の符号化処理と比較して処理後に得られる復号後データ群のデータ量が小さくなる符号化処理を選択し、選択した符号化処理を実行する符号化部と
を備えることを特徴とする符号化装置。
【請求項２】
前記符号化処理は、量子化を含み、
前記算出部は、前記データ群に含まれる数値データの数の平方根に前記量子化にて用いられる量子化値を乗算した値を更に算出し、
前記判定部は、前記算出部によって算出された値の内他方の値と比較して小さい値を選択して用いることを特徴とする請求項１に記載の符号化装置。
【請求項３】
前記符号化部は、前記判定部によって収まらないと判定された場合に、０方向への丸めの演算による量子化を含む符号化処理を行うことを特徴とする請求項１又は２に記載の符号化装置。
【請求項４】
前記符号化部は、前記判定部によって収まらないと判定された場合に、ストレートバイナリで伝送することを含む符号化処理を行うことを特徴とする請求項１又は２に記載の符号化装置。
【請求項５】
複数の数値データを含むデータ群の該数値データを２乗した値の和を算出する算出手順と、
前記算出手順により算出された値と、前記データ群に含まれる該数値データの絶対値の最大値とを可算した値が、所定の許容範囲の絶対値の最大値よりも大きい場合に、所定の符号化処理が実行された該データ群を復号することで得られる復号後データ群が前記許容範囲内に収まらないと判定する判定手順と、
前記判定手順によって収まらないと判定された場合に、前記所定の符号化処理と比較して処理後に得られる復号後データ群のデータ量が小さくなる符号化処理を選択し、選択した符号化処理を実行する符号化手順と
をコンピュータに実行させることを特徴とする符号化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化装置及び符号化プログラムに関する。
【背景技術】
【０００２】
情報処理装置は、膨大な情報量を有するデータを処理する。例えば、情報処理装置は、画像や動画などを処理する。また、情報処理装置は、データを伝送する際や蓄積する際に、データを圧縮する符号化処理を実行する。
【０００３】
例えば、動画圧縮規格の１つであるＨ．２６４を用いて説明する。動画を符号化する符号化装置は、入力された動画を形成する画像を４画素×４画素ごとの単位ブロックに分割し、又は、８画素×８画素ごとの単位ブロックに分割する。そして、符号化装置は、単位ブロックごとに一連の符号化処理を実行する。例えば、符号化装置は、単位ブロックに含まれるデータを直交変換し、直交変換後のデータを量子化し、量子化後のデータを符号化することで符号化データを生成する。また、符号化データを復号する復号装置は、符号化データを逆量子化し、逆量子化したデータを逆直交変換し、逆直交変換されたデータから画像を復元する。
【０００４】
また、Ｈ．２６４では、逆直交変換の結果となるデータが、所定の範囲に収まることが求められる。所定の範囲は「許容範囲」とも称される。復元装置により復元されたデータは、量子化により発生する誤差である量子化誤差が重畳されており、符号化前のデータと同一のデータとはならない。ここで、量子化誤差によって、逆直交変換後のデータが許容範囲を超えることがある。
【０００５】
また、生成した符号化データに対して逆量子化と逆直交変換とを実行する符号化装置がある。逆量子化と逆直交変換とを実行する符号化装置は、逆量子化と逆直交変換とを実行した結果得られたデータが許容範囲に収まるかを判定する。そして、逆量子化と逆直交変換とを実行する符号化装置は、収まらないと判定した場合に、符号化データを復号した際にデータが許容範囲に収まるように符号化処理の方法を変更し、変更後の符号化処理の方法を用いて符号化データを再度生成する。また、量子化を実行する際に用いる量子化係数の絶対値を加算した値と閾値とを比較することで、許容範囲に収まるかを判定する符号化装置もある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−１９９３４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した装置では、量子化や直交変換を複数回実行するという問題がある。例えば、逆量子化と逆直交変換とを実行する符号化装置は、逆量子化と逆直交変換とを実行した後のデータが許容範囲に収まらない場合には、符号化処理の方法を変更した上で、直交変換や量子化を再度実行する。また、例えば、量子化係数を用いて判定する符号化装置は、量子化係数の絶対値を加算した値を用いており、量子化の後に判定結果がわかると考えられる。この結果、量子化係数を用いて判定する符号化装置は、許容範囲に収まらない場合には、量子化を再度実行することになると考えられる。
【０００８】
また、量子化や直交変換を複数回実行する符号化装置は、リアルタイムに処理することが要求されるデータに不適であり、更に有用な装置が求められる。
【０００９】
開示の技術は、上述に鑑みてなされたものであって、量子化や直交変換を複数回実行することなく符号化を実行可能である符号化装置及び符号化プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
開示する符号化装置は、一つの態様において、複数の数値データを含むデータ群の該数値データを２乗した値の和を算出する算出部を備える。符号化装置は、前記算出部により算出された値と、前記データ群に含まれる該数値データの絶対値の最大値とに基づいて、所定の符号化処理が実行された該データ群を復号することで得られる復号後データ群が所定の許容範囲内に収まるか否かを判定する判定部を備える。また、符号化装置は、前記判定部によって収まらないと判定された場合に、前記所定の符号化処理と比較して発生する誤差が小さい符号化処理を選択し、選択した符号化処理を実行する符号化部を備える。
【発明の効果】
【００１１】
開示する符号化装置の一つの態様によれば、量子化や直交変換を複数回実行することなく符号化を実行可能であるという効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施例１に係る符号化装置の構成の一例を示すブロック図である。
【図２】図２は、直交変換と量子化とについて示す図である。
【図３】図３は、量子化により発生し得る量子化誤差について示す図である。
【図４】図４は、Ｐ（ｎ）を２乗した値の和に関する値について示す図である。
【図５】図５は、実施例２に係る符号化装置の構成の一例を示すブロック図である。
【図６】図６は、実施例２に係る符号化装置による処理の流れの一例を示すフローチャートである。
【図７】図７は、実施例２に係る符号化プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１３】
以下に、開示する符号化装置及び符号化プログラムの実施例について、図面に基づいて詳細に説明する。なお、本実施例により開示する発明が限定されるものではない。各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１４】
図１を用いて、実施例１に係る符号化装置１００の構成の一例を示す。図１は、実施例１に係る符号化装置の構成の一例を示すブロック図である。図１に示す例では、符号化装置１００は、算出部１０１と、判定部１０２と、符号化部１０３とを有する。
【００１５】
算出部１０１は、複数の数値データを含むデータ群の数値データを２乗した値の和を算出する。判定部１０２は、算出部１０１により算出された値と、データ群に含まれる数値データの絶対値の最大値とに基づいて、所定の符号化処理が実行されたデータ群を復号することで得られる復号後データ群が所定の許容範囲内に収まるか否かを判定する。符号化部１０３は、判定部１０２によって収まらないと判定された場合に、所定の符号化処理と比較して発生する誤差が小さい符号化処理を選択し、選択した符号化処理を実行する。
【００１６】
つまり、実施例１に係る符号化装置１００は、量子化で原点に変換される点の量子化誤差の最大値が画素値の２乗値の和を算出することで得られることに着目し、復号後のデータが許容範囲に収まるかを符号化処理前に判定する。この結果、量子化や直交変換を複数回実行することなく、一度の符号化処理で符号化を実行可能である。
【実施例２】
【００１７】
実施例２に係る符号化装置２００について説明する。以下では、符号化装置２００の全体像について説明した後に、直交変換と量子化とについて説明し、許容範囲に収まるかを判定する判定式について説明する。その後、実施例２に係る符号化装置２００の構成の一例について説明し、符号化装置２００による処理の流れの一例について説明し、符号化装置２００の効果について説明する。
【００１８】
［符号化装置の全体像］
実施例２に係る符号化装置２００の全体像について説明する。符号化装置２００は、動画や画像などのデータが入力されると、所定のサイズを有する単位ブロックに分割する。例えば、符号化装置２００は、動画が入力されると、動画を形成する各画像を４画素×４画素ごとの単位ブロックに分割し、又は、８画素×８画素ごとの単位ブロックに分割する。そして、符号化装置２００は、単位ブロックごとに一連の符号化処理を実行する。すなわち、符号化装置は、単位ブロックに含まれるデータを直交変換し、直交変換後のデータを量子化し、量子化後のデータを符号化することで符号化データを生成する。なお、単位ブロックを「データ群」とも称し、単位ブロックに含まれる各画素の画素値を「数値データ」とも称する。
【００１９】
例えば、符号化装置２００は、動画圧縮規格の１つであるＨ．２６４を用いてデータを符号化する。また、例えば、符号化装置２００は、直交変換として、離散コサイン変換（ＤＣＴ、Discrete  Cosine  Transform）を行う。
【００２０】
符号化装置２００によって生成された符号化データは、その後、復号装置によって逆量子化され、逆量子化後のデータが逆直交変換され、逆直交変換後のデータから画像が復元される。なお、復元された画像は、量子化により発生する誤差である量子化誤差が重畳されており、符号化前の画像と完全に同一の画像とはならない。
【００２１】
ここで、符号化を行う際には、逆直交変換の結果となるデータが許容範囲に収まることが求められる。つまり、符号化データを復号することで得られるデータが許容範囲に収まることが求められる。このことを踏まえ、以下に詳細に説明するように、実施例２に係る符号化装置２００は、直交変換を行う前に、生成する符号化データを復号することで得られるデータが許容範囲に収まるかを判定する。そして、符号化装置２００は、許容範囲に収まらないと判定した場合には、符号化データを復号した際に許容範囲に収まるように符号処理の方法を変更し、変更後の符号化処理の方法を用いて符号化データを生成する。
【００２２】
例えば、符号化装置２００は、許容範囲に収まらないと判定した場合には、量子化時の丸め演算を通常の小数点以下四捨五入ではなく、０方向への丸めにする量子化を含む符号化を実行することで、許容範囲超えを回避する。また、例えば、符号化装置２００は、直交変換後のデータの内、高周波側のデータの幾つかを強制的に「０」とする量子化を含む符号化を実行することで、許容範囲超えを回避する。つまり、符号化装置２００は、量子化により得られる値の絶対値が小さくなるように符号化処理の方法を変更することで、許容範囲に収まるようにする。また、例えば、符号化装置２００は、許容範囲に収まらないと判定した場合には、Ｈ．２６４のストレートバイナリでの符号化を実行することで、許容範囲超えを回避する。ストレートバイナリでの符号化とは、符号化、直交変換及び量子化を行わず、画素値をそのまま符号化データとする手法である。
【００２３】
ただし、本発明はＨ．２６４を用いる場合に限定されるものではなく、許容範囲が設定される符号化手法であれば任意の手法を用いて良い。なお、以下では、符号化装置２００が、動画を形成する画像そのものを符号化するのではなく、動画において時間軸上で連続する２つの画像間の差分となる差分画像を符号化する場合を用いて説明する。
【００２４】
また、以下では、動画を形成する画像の各画素の精度が「８  ｂｉｔ」である場合を用いて説明する。つまり、各画素が「０」から「２５６」までの間の値となる場合を例に説明する。ここで、各画素は「０」から「２５６」の値となり、符号化装置２００が受け付ける画像は差分画像である。この結果、符号化装置２００が受け付ける入力画像の各画素の示す値は、「−２５６」から「２５５」までの間の値となる場合を用いて説明する。
【００２５】
また、以下では、許容範囲が「−５１２」から「５１１」である場合を用いて説明する。ただし、本発明はこれに限定されるものではなく、許容範囲が「−５１２」から「５１１」までの間でなくても良く、任意の範囲であって良い。
【００２６】
ここで、差分画像を用いる意義について簡単に説明する。動画を形成する画像の内、時間軸上において連続する画像は似ていることが多く、画像間の差はわずかであることが多い。言い換えると、連続する画像間には強い相関関係があることが多い。このような場合に、符号化装置２００は、画像間の差分となる差分画像を受け付け、受け付けた差分画像に対して直交変換や量子化を実行する。例えば、符号化装置２００は、公知の技術を用いて現在の画像から次の画像を予測し、予測した予測画像と現在の画像との差分をとることで差分画像を生成する。そして、生成した差分画像を符号化する。ただし、本発明はこれに限定されるものではなく、符号化装置は、動画を形成する画像そのものに対して直交変換や量子化を行って符号化データを生成しても良い。以下では、符号化対象となる画像を入力画像と記載する。
【００２７】
［直交変換と量子化とについて］
図２を用いて、直交変換と量子化とについて説明する。図２は、直交変換と量子化とについて示す図である。図２に示す例では、説明の便宜上、単位ブロックの大きさが「２」である場合を用いて説明する。図２のＸＹ座標系は、単位ブロックの各画素を示す座標系である。すなわち、図２のＸＹ座標系での座標（ｘ、ｙ）の成分「ｘ」と「ｙ」は、それぞれ、大きさが「２」である単位ブロックに含まれる２つの画素の画素値を示す。単位ブロックの画素値が「１、２」である場合には、例えば、「（ｘ、ｙ）＝（１、２）」となる。ただし、本発明はこれに限定されるものではなく、単位ブロックの大きさは任意の大きさで良く、例えば、４以上であっても良い。例えば、単位ブロックの大きさが４画素×４画素の単位ブロックである場合には、座標軸の数は１６（＝４×４）となる。座標軸の数を次元数とも記載する。
【００２８】
図２のＵＶ座標系は、ＸＹ座標系を直交変換した座標系である。ＸＹ座標系の任意の座標がＵＶ座標系において量子化値Ｑで量子化されると、ＸＹ座標系の任意の座標は、ｕ軸に平行な直線及びｖ軸に平行な直線による形成される格子の点である格子点Ｐの１つに変換される。原点も格子点Ｐの１つである。量子化値が「Ｑ」である場合には、隣接する格子点間の距離が「Ｑ」となる。
【００２９】
例えば、符号化装置２００がＵＶ座標系において量子化値Ｑを用いて量子化を行うと、図２の領域Ｒ１内に存在するＸＹ座標系の点は、ＵＶ座標系の格子点Ｐ１に変換される。ＵＶ座標系における格子点Ｐ１の座標は、（Ｑ、Ｑ）である。このように、符号化装置２００は、ＸＹ座標系の点を、ＵＶ座標系の格子点のいずれかに変換する。この結果、例えば、格子点Ｐ１（Ｑ、Ｑ）に変換されるＵＶ座標系の点の座標（ｕ、ｖ）は、数１や数２に示される範囲となる。
【００３０】
【数１】
0005482474.tif 000002
【００３１】
【数２】
0005482474.tif 000003
【００３２】
数１や数２において、Ｑは量子化値を示す。数１や数２に示されるように、格子点Ｐ１（Ｑ、Ｑ）に変換されるｕの座標は、「Ｑ−１／２Ｑ」より大きな値であり、「Ｑ＋１／２Ｑ」より小さな値になる。また、例えば、ｕの座標が「Ｑ＋１／２Ｑ」以上の値であり、「２Ｑ＋１／２Ｑ」より小さい値になるようであれば、ｕの座標は「２Ｑ」に変換される。
【００３３】
ここで、符号化装置２００がＵＶ座標系の座標（ｕ、ｖ）を量子化値Ｑで量子化し、ＵＶ座標系の点の座標（ｉＱ、ｊＱ）に変換したとする。ｕ、ｖ、ｉ、ｊ間の関係は、数３や数４のようになる。ｉ、ｊは、整数である。ｉは、ｕ／Ｑの小数点以下を四捨五入した値であり、ｊは、ｊ／Ｑの小数点以下を四捨五入した値である。数１や数２は、「ｉ＝１」「ｊ＝１」である場合に対応する。
【００３４】
【数３】
0005482474.tif 000004
【００３５】
【数４】
0005482474.tif 000005
【００３６】
符号化装置２００が直交変換を実行すると、ＸＹ座標系の点の座標（ｘ、ｙ）は、ＵＶ座標系の座標（ｕ、ｖ）と表現される。符号化装置２００が量子化を実行すると、ＵＶ座標系の点の座標（ｕ、ｖ）は、ＵＶ座標系の座標（ｉＱ、ｊＱ）に変換され、（ｉ、ｊ）と表現される。ここで、量子化値Ｑとして「１」よりも大きい値を用いることで、ｉはｕよりも小さい値になり、ｊはｖよりも小さい値になる。つまり、ＵＶ座標系の座標（ｕ、ｖ）が量子化後に（ｉ、ｊ）として表現されることで、点（ｕ、ｖ）を示す情報量が削減される。なお、量子化後のＵＶ座標系の座標（ｉＱ、ｊＱ）の位置は、逆量子化や逆直交変換を行ったとしても変化しない。
【００３７】
［許容範囲に収まるかを判定する判定式］
以下に説明するように、数５の判定式を満たす場合に、符号化装置２００は、直交変換、量子化、逆量子化、逆直交変換後の点のＸＹ座標系におけるすべての成分が許容範囲を超えないと判定する。
【００３８】
【数５】
0005482474.tif 000006
【００３９】
数５において、Ｐｍａｘは、ＸＹ座標系の点の各成分の内、絶対値が最大となる成分を示す。数５の右辺の「５１１」は、許容範囲の絶対値の最大値を示す。Ｑは、量子化値を示す。Ｎは、単位ブロックに含まれる数値データの数を示す。Ｐ（ｎ）は、単位ブロックに含まれる各画素の画素値を示す。Ｐ（ｎ）の「ｎ」は、単位ブロックに含まれる画素数を示し、例えば、単位ブロックの大きさが４画素×４画素の単位ブロックである場合には、「１６（＝４×４）」となる。数５の右辺において「５１１」から減算される値は、以下に詳細に説明するように、量子化により発生し得る量子化誤差の最大値を示す。
【００４０】
すなわち、逆直交変換後の点が取り得る最大値は、Ｐｍａｘに量子化誤差の最大値を加算した値となる。このことを踏まえ、数５に示されるように、許容範囲の最大値から量子化誤差の最大値を減算した値よりもＰｍａｘが小さくなれば、符号化装置２００は、逆直交変換後の点のＸＹ座標系のすべての成分が許容範囲を超えないと判定する。以下では、数５の右辺において「５１１」から減算される値について、詳細に説明する。
【００４１】
［数５の（「Ｎ」の平方根）×（Ｑ／２）について］
数５の右辺において「５１１」から減算される値の内、（「Ｎ」の平方根）×（Ｑ／２）について説明する。すなわち、データ群に含まれる数値データの数の平方根に量子化にて用いられる量子化値を乗算することで得られる値について説明する。図３は、量子化により発生し得る量子化誤差について示す図である。図３において、３０１は、単位ブロックの画素各々が取り得る座標の範囲を示す。図３に示す例では、各画素の値の取り得る範囲が「−２５６」から「２５５」までである場合を示した。３０２は、許容範囲を示す。図３に示す例では、許容範囲が「−５１２」から「５１１」である場合を例に示した。３０３は、単位ブロックの画素の内任意の点である。図３に示す例では、点３０３は、Ｘ軸やＹ軸等のＮ個の軸を有するＮ次元直交空間のＸＹ座標系において（ｘ、ｙ  …）と表現される場合を用いて説明し、ＵＶ座標系において（ｕ、ｖ  …）と表現される場合を用いて説明する。図３に示す例では、２個の軸を有する場合を例に説明する。つまり、単位ブロックに含まれる数値データの数が「２」である場合を示した。３０４は、点３０３を量子化した後の座標が取り得る範囲を示す。３０５は、点３０３を量子化した後の座標が取り得る範囲３０４の内、許容範囲から外れた部分を示す。
【００４２】
符号化装置２００は、直交変換後の点となるＵＶ座標系の点に対して、量子化を行う。そして、符号化装置２００は、ＵＶ座標系における格子点の１つに変換する。ここで、符号化装置２００が量子化値Ｑで量子化した場合には、ＵＶ座標系における量子化誤差の大きさは最大でＱ／２となる。すなわち、ＵＶ座標系における量子化後の点は、ＵＶ座標系における量子化前の点の座標の成分と比較して、最大Ｑ／２の誤差を有する。この結果、図３の３０４に示すように、点（ｕ、  ｖ、…）を量子化することで得られる量子化後の点の取り得る範囲は、点（ｕ、  ｖ、…）を中心として、ＵＶ座標系の座標軸に平行な一辺の長さがＱのＮ次元超立方体の内側となる。
【００４３】
次に、Ｎ次元のＸＹ座標系における量子化誤差の最大値について検討する。図３に示すように、Ｎ次元のＸＹ座標系において、量子化前の点と量子化後の点との間の距離の最大値は、Ｎ次元超立方体の対角線の長さの半分になる。この結果、Ｎ次元のＵＶ座標系での各成分の量子化誤差が最大Ｑ／２である場合、逆量子化と逆直交変換とを実行した後の点が取り得る誤差であって、Ｎ次元のＸＹ座標系での各成分が取り得る誤差の最大値は（「Ｎ」の平方根）×（Ｑ／２）となる。言い換えると、直交変換後のＮ次元のＵＶ座標系における誤差の最大値が「Ｑ／２」であったとしても、逆直交変換後のＮ次元のＸＹ座標系では、Ｎ次元のＵＶ座標系における誤差と比較して最大（「Ｎ」の平方根）倍の誤差が生じる可能性がある。
【００４４】
（「Ｎ」の平方根）×（Ｑ／２）をそのまま用いる判定式について説明する。図３の例では、許容範囲は、「−５１２」から「５１１」までである。また、逆直交変換後の点のＸＹ座標系の各成分は、最大、（「Ｎ」の平方根）×（Ｑ／２）の誤差を有する。このことを踏まえると、逆直交変換後の点すべてが許容範囲を超えない条件は、数６に示すように、直交変換の対象となるＸＹ座標系の点の各成分の内最も絶対値が大きい点に、量子化誤差の最大値を加えた値が、許容範囲に収まれば良いことになる。
【００４５】
【数６】
0005482474.tif 000007
【００４６】
数６に示すように、ＸＹ座標系の点の各成分の内、絶対値が最大である成分が、数６の右辺の値以下である時、逆直交変換後の点のＸＹ座標系のすべての成分は、許容範囲を超えないことになる。
【００４７】
また、同様に、逆直交変換後の点のＸＹ座標系のすべての成分が許容範囲を超えない場合において、直交変換前のＸＹ座標系の点の各成分の絶対値の最大値は、数７で示される。
【００４８】
【数７】
0005482474.tif 000008
【００４９】
数７のＰｔｈは、逆直交変換後の点のＸＹ座標系のすべての成分が許容範囲を超えない場合において、直交変換前のＸＹ座標系の点の各成分の絶対値の最大値を示す。数７に示すように、閾値Ｐｔｈは、量子化値Ｑが大きくなるにつれ小さくなり、単位ブロックに含まれる数値データの数が多くなるにつれ小さくなる。
【００５０】
［数５のＰ（ｎ）を２乗した値の和に関する値ついて］
数５の右辺において「５１１」から減算される値の内、Ｐ（ｎ）を２乗した値の和について説明する。すなわち、データ群の数値データを２乗した値の和について説明する。
【００５１】
量子化誤差は、必ずしも（「Ｎ」の平方根）×（Ｑ／２）となるわけではなく、（「Ｎ」の平方根）×（Ｑ／２）をそのまま用いると、制限が不要に強くなる。例えば、Ｎが「６４」であり、Ｑが「１２０」であり、入力画像の全画素が一様に「４０」である場合を例に説明する。この場合、数６に代入すると、左辺は「４０」、右辺は「３１」となり、許容範囲を超えるとの判定結果となる。これに対して、実際には、入力画像の画素値が一様であることから、直交変換結果により得られる値は、１つの軸の値は「０」でない値となる一方、他の軸の値はすべて「０」となる。「０」でない値は、ＤＣＴの係数の内ＤＣ（Direct  Current、直流）成分に相当する。この結果、逆直交変換後のＮ次元のＸＹ座標系での各成分が取り得る量子化誤差の最大値は、値が「０」とはならなかった軸上における距離とはり、（「Ｎ」の平方根）×（Ｑ／２）ではなく、（Ｑ／２）になる。この結果、数６における右辺の値は４５１になり、最大値が「４０」であれば、許容範囲に収まることになる。
【００５２】
このことを踏まえ、符号化装置２００は、数５の右辺において「５１１」から減算される値として、（「Ｎ」の平方根）×（Ｑ／２）をそのまま用いるのではなく、データ群の数値データを２乗した値の和を併せて用いる。
【００５３】
図４を用いて、Ｐ（ｎ）を２乗した値の和に関する値について示す。図４は、Ｐ（ｎ）を２乗した値の和に関する値について示す図である。図４の３０６は、ＵＶ座標系の格子点の１つである（０、０）に変換されるＵＶ座標系の座標（ｕ、  ｖ）の範囲を示す。すなわち、図４の３０６に示すように、符号化装置２００は、ｕの絶対値がＱ／２より小さく、ｖの絶対値がＱ／２より小さい場合には、量子化を行うことで、ＵＶ座標系の座標（ｕ、  ｖ）をＵＶ座標系の座標（０、０）に変換する。この場合、変換後のＵＶ座標系の座標が（０、０）となることから、ＵＶ座標系での各成分の量子化誤差の最大値は、各軸の値（ｕ、  ｖ、  …）そのものになる。
【００５４】
Ｎ次元に拡張して考える。符号化装置２００は、量子化することによって、量子化前の点（ｕ、  ｖ、  …）を原点（０、  ０、  …）に変換する。ここで、各軸の絶対値は、Ｑ／２未満であるとする。この場合、量子化前の点と量子化後の点との間の距離の最大値は、言い換えると、逆量子化や逆直交変換後の点がＮ次元のＸＹ座標系において取り得る量子化誤差の最大値は、（「Ｎ」の平方根）×（Ｑ／２）ではなく、原点と量子化前の点との距離となる。すなわち、量子化前の点と量子化後の点との間の距離は、（（（ｕの２乗）＋（ｖの２乗）＋…  ）の平方根）となる。
【００５５】
ここで、Ｐａｒｓｅｖａｌの等式により、ＸＹ座標系の座標（ｘ、  ｙ、  …）とＵＶ座標系の座標（ｕ、  ｖ、  …）との間には、数８の関係が成立する。
【００５６】
【数８】
0005482474.tif 000009
【００５７】
この結果、量子化前の点と量子化後の点との間の距離の最大値は、（（（ｘの２乗）＋（ｙの２乗）＋…  ）の平方根）となる。つまり、量子化誤差の値は、（「Ｎ」の平方根）×（Ｑ／２）ではなく、Ｐ（ｎ）を２乗した値の和の平方根となる。
【００５８】
［判定式について］
数５に示した判定式では、（「Ｎ」の平方根）×（Ｑ／２）と、Ｐ（ｎ）を２乗した値の和の平方根との内、小さい値を用いる。つまり、符号化装置２００は、（「Ｎ」の平方根）×（Ｑ／２）そのものを用いると制限が不当に強くなることがあることを踏まえ、Ｐ（ｎ）を２乗した値の和の平方根がより小さい場合には、Ｐ（ｎ）を２乗した値の和の平方根を用いる。言い換えると、量子化後の点が原点になるような場合には、Ｐ（ｎ）を２乗した値の和の平方根が（「Ｎ」の平方根）×（Ｑ／２）より小さくなり、符号化装置２００は、Ｐ（ｎ）を２乗した値の和の平方根を用いる。一方、Ｐ（ｎ）を２乗した値の和の平方根が（「Ｎ」の平方根）×（Ｑ／２）より大きくなるようであれば、符号化装置２００は、（「Ｎ」の平方根）×（Ｑ／２）を用いる。
【００５９】
例えば、Ｎが「６４」であり、Ｑが「１２０」であり、入力画像の全画素が一様に「４０」である場合を例に説明する。この場合、上述したように、数６に代入すると、左辺は「４０」、右辺は「３１」となり、許容範囲を超えるとの判定結果となる。これに対して、数５を用いると、右辺は「１９１」となり、許容範囲を超えないとの判定結果となる。つまり、適切な判定を行えることがわかる。
【００６０】
なお、上述した例では、右辺の値が実際には「４５１」になると記載しており、数５によれば、実際の値「４５１」よりも小さい値が得られた。これは、数５においては、判定を直交変換前に行っており、直交変換により得られる値の分布が得られるかが不明なことを踏まえ、余裕を見た安全側の値となっている。
【００６１】
この結果、（「Ｎ」の平方根）×（Ｑ／２）を用いると許容範囲を超えると判定される場合であっても、Ｐ（ｎ）を２乗した値の和の平方根の値を用いると許容範囲を超えないと判定される場合には、符号化方法を変更することなく符号化を実行可能となる。
【００６２】
また、判定式に用いられる値は、すべて、直交変換や量子化、逆量子化、逆直交変換を行うことなく取得することが可能である。このため、符号化装置２００は、直交変換前に、許容範囲を超えるか否かを判定可能となる。
【００６３】
［符号化装置の構成］
図５を用いて、実施例２に係る符号化装置２００の構成の一例を示す。図５は、実施例２に係る符号化装置の構成の一例を示すブロック図である。図５に示す例では、符号化装置２００は、算出部２０１と、判定部２０２と、符号化部２０３とを有する。
【００６４】
以下では、説明の便宜上、符号化装置２００が差分画像を受け付け、受け付けた差分画像を単位ブロックに分割したものとして説明する。つまり、単位ブロック各々に対して符号化装置２００が実行する一連の処理について、以下に詳細に説明する。また、以下では、符号化装置２００が許容範囲に収まるかを判定する点について詳細に説明する一方、それ以外の点については従来の技術と同様であることから説明を省略する。
【００６５】
算出部２０１と判定部２０２と符号化部２０３とは、各種の処理手順などを規定したプログラムを記憶する内部メモリを有し、種々の処理を制御する。算出部２０１と判定部２０２と符号化部２０３とは、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＦＰＧＡ（Field  Programmable  Gate  Array）、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）などの電子回路である。
【００６６】
算出部２０１は、データ群に含まれる数値データを２乗した値の和を算出する。具体的には、算出部２０１は、単位ブロックに含まれる画素値各々を２乗した値の和の平方根を算出する。例えば、算出部２０１は、単位ブロックに含まれる画素値各々について２乗した値を算出し、２乗することで算出した値各々の和を算出し、和をとることで算出した値の平方根を算出する。
【００６７】
また、算出部２０１は、データ群に含まれる数値データの数の平方根に量子化値を乗算した値を算出する。具体的には、単位ブロックに含まれる画素数の平方根に量子化値を乗算することで得られる値を算出する。例えば、算出部２０１は、符号化部２０３による量子化にて用いられる量子化値を記憶する記憶部を有する。そして、算出部２０１は、単位ブロックに含まれる画素の数をカウントし、カウントすることで得られた値の平方根を算出する。また、算出部２０１は、カウントすることで得られた値の平方根と、記憶部に記憶された量子化値とを乗算した値を算出する。
【００６８】
このように、算出部２０１は、数５の右辺において「５１１」から減算される値を算出する。言い換えると、算出部２０１は、量子化誤差の最大値を算出する。
【００６９】
判定部２０２は、算出部２０１により算出された値と、データ群に含まれる数値データの絶対値の最大値とに基づいて、所定の符号化処理が実行されたデータ群を復号することで得られる復号後データ群が所定の許容範囲内に収まるか否かを判定する。また、判定部２０２は、算出部２０１によって算出された値の内他方の値と比較して小さい値を選択して用いる。
【００７０】
具体的には、判定部２０２は、データ群に含まれる数値データの絶対値の最大値が、数５の式を満たすか否かを判定する。ここで、判定部２０２は、満たすと判定した場合には、復号後データ群が所定の許容範囲内に収まると判定し、満たさないと判定した場合には、復号後データ群が所定の許容範囲内に収まらないと判定する。
【００７１】
例えば、判定部２０２は、単位ブロックに含まれる画素各々の内、画素値の絶対値が最も大きい画素値を取得する。例えば、単位ブロックに４つの画素が含まれており、４つの画素各々の画素値が「１０」「−４０」「３０」「２０」である場合を用いて説明する。この場合、判定部２０２は、絶対値が最も大きい「−４０」を取得し、「−４０」の絶対値となる「４０」を取得する。
【００７２】
また、例えば、判定部２０２は、単位ブロックに含まれる画素値各々を２乗した値の和の平方根と、単位ブロックに含まれる画素数の平方根に量子化値を乗算することで得られる値との内、小さい値を選択する。単位ブロックに含まれる画素値各々を２乗した値の和の平方根が「２０」であり、単位ブロックに含まれる画素数の平方根に量子化値を乗算することで得られる値が「３０」である場合を用いて説明する。この場合、判定部２０２は、「２０」を選択する。なお、単位ブロックに含まれる画素値各々を２乗した値の和の平方根と、単位ブロックに含まれる画素数の平方根に量子化値を乗算することで得られる値とは、上述したように、算出部２０１によって算出される。
【００７３】
また、例えば、判定部２０２は、選択した値と、所定の許容範囲に含まれる値の絶対値の最大値とを数５に代入することで、復号後データ群が所定の許容範囲内に収まるか否かを判定する。例えば、判定部２０２は、数５の右辺の値が「５１１−２０＝４９１」となり、左辺の値が「４０」となる場合には、左辺の値「４０」は右辺の値「４９１」以下であり、許容範囲に収まると判定する。
【００７４】
符号化部２０３は、判定部２０２によって収まると判定された場合に、所定の符号化処理を実行する。また、符号化部２０３は、判定部２０２によって収まらないと判定された場合に、所定の符号化処理と比較して発生する誤差が小さい符号化処理を選択し、選択した符号化処理を実行する。例えば、符号化部２０３は、判定部２０２によって収まらないと判定された場合に、０方向への丸めの演算による量子化を含む符号化処理を行う。また、例えば、符号化部２０３は、ストレートバイナリで伝送する。
【００７５】
なお、符号化装置２００は、パーソナルコンピュータ、携帯電話、ＰＨＳ（Personal  Handyphone  System）端末、移動体通信端末又はＰＤＡ（Personal  Digital  Assistant）などの情報処理装置を利用して実現しても良い。例えば、ＰＤＡなどの情報処理装置に、算出部２０１と、判定部２０２と、符号化部２０３との各機能を搭載することによって実現しても良い。
【００７６】
［符号化装置による処理］
次に、図６を用いて、実施例２に係る符号化装置２００による処理の流れの一例を示す。図６は、実施例２に係る符号化装置による処理の流れの一例を示すフローチャートである。
【００７７】
図６に示すように、符号化装置２００は、差分画像を受け付けると（ステップＳ１０１肯定）、差分画像を単位ブロックに分割する（ステップＳ１０２）。そして、算出部２０１は、単位ブロックごとに量子化誤差の最大値を算出する（ステップＳ１０３）。具体的には、算出部２０１は、単位ブロックに含まれる画素値各々を２乗した値の和の平方根を算出し、単位ブロックに含まれる画素数の平方根に量子化値を乗算することで得られる値を算出する。
【００７８】
そして、判定部２０２は、算出部２０１により算出された値と、データ群に含まれる数値データの絶対値の最大値とに基づいて、復号後データ群が所定の許容範囲内に収まるか否かを判定する（ステップＳ１０４）。具体的には、判定部２０２は、データ群に含まれる数値データの絶対値の最大値が、数５の式を満たすか否かを判定する。
【００７９】
ここで、許容範囲内に収まると判定部２０２が判定した場合には（ステップＳ１０４肯定）、符号化部２０３は、所定の符号化処理を実行する（ステップＳ１０５）。一方、許容範囲内に収まらないと判定部２０２が判定した場合には（ステップＳ１０４否定）、符号化部２０３は、所定の符号化処理と比較して発生する誤差が小さい符号化処理を選択し（ステップＳ１０６）、選択した符号化処理を実行する（ステップＳ１０７）。例えば、符号化部２０３は、０方向への丸めの演算による量子化を含む符号化処理を行う。なお、上記の処理手順は、上記の順番に限定されるものではなく、処理内容を矛盾させない範囲で適宜変更しても良い。
【００８０】
［実施例２の効果］
上述したように、実施例２によれば、符号化装置２００は、複数の数値データを含むデータ群の数値データを２乗した値の和を算出する。そして、符号化装置２００は、算出した値と、データ群に含まれる数値データの絶対値の最大値とに基づいて、所定の符号化処理が実行されたデータ群を復号することで得られる復号後データ群が所定の許容範囲内に収まるか否かを判定する。そして、符号化装置２００は、収まらないと判定した場合に、所定の符号化処理と比較して発生する誤差が小さい符号化処理を選択し、選択した符号化処理を実行する。この結果、量子化や直交変換を複数回実行することなく符号化を実行可能である。つまり、符号化装置２００は、量子化誤差の最大値が、単位ブロックの数値データを２乗した値の和の平方根になることを用いて、許容範囲内に収まるか否かを符号化処理前に判定し、許容範囲に収まるような符号化処理を行う。この結果、符号化装置２００によれば、一度の符号化処理で符号化可能である。
【００８１】
また、実施例２によれば、符号化装置２００は、データ群に含まれる数値データの数の平方根に量子化にて用いられる量子化値を乗算した値を更に算出する。そして、符号化装置２００は、算出した値の内他方の値と比較して小さい値を選択して用いる。この結果、許容範囲に収まるか否かを適切に判定することが可能である。具体的には、符号化装置２００によれば、量子化後の点が原点に変換されない場合であっても、許容範囲に収まるか否かを適切に判定することが可能である。
【実施例３】
【００８２】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、その他の実施例にて実施されても良い。そこで、以下では、その他の実施例を示す。
【００８３】
例えば、上述した実施例では、単位ブロックに含まれる画素値各々を２乗した値の和の平方根と、単位ブロックに含まれる画素数の平方根に量子化値を乗算することで得られる値との内、小さい値を選択する場合を例に示した。ただし、本発明はこれに限定されるものではない。例えば、単位ブロックに含まれる画素値各々を２乗した値の和の平方根のみを用いてもよい。すなわち、小さい値を選択することなく、単位ブロックに含まれる画素値各々を２乗した値の和の平方根を用いても良い。また、符号化装置は、量子化により原点に変換される点かを量子化値と原点の座標とに基づいて判定し、変換されるとの判定結果が得られた場合に、単位ブロックに含まれる画素値各々を２乗した値の和の平方根を用いて判定しても良い。
【００８４】
［システム構成］
また、本実施例において説明した各処理の内、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上述文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、図１〜図６に含まれる情報について変更しても良い。
【００８５】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。例えば、図５の算出部２０１と判定部２０２とを符号化装置２００の外部装置としてネットワーク経由で接続するようにしても良い。
【００８６】
［コンピュータ］
また、上述の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図７を用いて、上述の実施例と同様の機能を有する符号化プログラムを実行するコンピュータの一例を示す。なお、図７は、実施例２に係る符号化プログラムを実行するコンピュータの一例を示す図である。
【００８７】
図７に示すように、実施例２におけるコンピュータ３０００は、操作部３００１、マイク３００２、スピーカ３００３、ディスプレイ３００４を有する。また、コンピュータ３０００は、通信部３００６、ＣＰＵ３０１０、ＲＯＭ３０１１、ＨＤＤ（Hard  Disk  Drive）３０１２、ＲＡＭ３０１３を有する。また、コンピュータ３０００は、各部がバス３００９などで接続される。
【００８８】
ＲＯＭ３０１１は、図５にて示した算出部２０１と、判定部２０２と、符号化部２０３と同様の機能を発揮する制御プログラムを記憶する。つまり、図７に示すように、ＲＯＭ３０１１は、算出プログラム３０１１ａと、判定プログラム３０１１ｂと、符号化プログラム３０１１ｃとを記憶する。なお、これらのプログラム３０１１ａ〜３０１１ｃについては、図５に示した符号化装置２００の各構成要素と同様、適宜統合又は分離しても良い。
【００８９】
そして、ＣＰＵ３０１０が、これらのプログラム３０１１ａ〜３０１１ｃをＲＯＭ３０１１から読み出して実行する。この結果、図７に示すように、各プログラム３０１１ａ〜３０１１ｃは、算出プロセス３０１０ａと、判定プロセス３０１０ｂと、符号化プロセス３０１０ｃとして機能する。なお、各プロセス３０１０ａ〜３０１０ｃは、図５に示した、算出部２０１と、判定部２０２と、符号化部２０３とにそれぞれ対応する。
【００９０】
そして、ＣＰＵ３０１０は、ＲＡＭ３０１３に格納された差分画像データ３０１３ａと、単位ブロックデータ３０１３ｂと、量子化誤差データ３０１３ｃと、許容範囲データ３０１３ｄとを用いて、符号化プログラムを実行する。
【００９１】
なお、上述した説明では、プロセス３０１０ａ〜３０１０ｃすべてが常にＣＰＵ３０１０上にて仮想的に実現される場合について示した。ただし、本発明はこれに限定されるものではない。例えば、プロセス３０１０ａ〜３０１０ｃの内処理に必要な一部のプロセスについて、ＣＰＵ３０１０上にて仮想的に実現されても良い。言い換えると、常にすべてのプロセスがＣＰＵ３０１０上にて動作するのではなく、処理に必要なプロセスが選択的に動作するようにしても良い。
【００９２】
［その他］
なお、本実施例で説明した符号化プログラムは、インターネットなどのネットワークを介して配布することができる。また、符号化プログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【符号の説明】
【００９３】
１００      符号化装置
１０１      算出部
１０２      判定部
１０３      符号化部
２００      符号化装置
２０１      算出部
２０２      判定部
２０３      符号化部
【図１】
0005482474.tif 000010
【図２】
0005482474.tif 000011
【図３】
0005482474.tif 000012
【図４】
0005482474.tif 000013
【図５】
0005482474.tif 000014
【図６】
0005482474.tif 000015
【図７】
0005482474.tif 000016