(57)【特許請求の範囲】
【請求項１】
入力画像を２のべき乗個の画素を含むブロック毎に符号化する画像符号化装置であって、
前記入力画像において、符号化対象ブロックの周囲の参照ブロックに基づいて、前記符号化対象画素に対する予測ブロックを生成する予測部と、
前記符号化対象ブロックと前記予測ブロックとの残差である残差ブロックを算出する算出部と、
前記残差ブロックを可変長符号化する符号化部とを備え、
前記参照ブロックは前記符号化対象ブロックに含まれる少なくとも１つの画素を含む画像符号化装置。
【請求項２】
前記符号化対象ブロック、前記参照ブロック、前記予測ブロックのうち、少なくともいずれかのブロックの画素値に基づいて、前記残差ブロックの符号化を行なうか否かを判定する判定部を更に備え、
前記符号化部は、前記残差ブロックの符号化を行なう場合には、前記残差ブロックを可変長符号化し、前記残差ブロックの符号化を行なわない場合には、前記残差ブロックを、符号化スキップを示すフラグとして符号化する請求項１記載の画像符号化装置。
【請求項３】
前記判定部は、
前記残差ブロックの画素値の絶対値の和に基づいて、前記残差ブロックの符号化を行なうか否かを判定する、
請求項２記載の画像符号化装置。
【請求項４】
前記符号化スキップを行なう残差ブロック数をカウントする第１カウント部と、
可変長符号化を行なう残差ブロック数をカウントする第２カウント部とをさらに備え、
前記符号化部は、
前記符号化スキップを行なう残差ブロック数と、前記可変長符号化を行なう残差ブロック数とをさらに符号化する、
請求項３記載の画像符号化装置。
【請求項５】
前記符号化対象ブロックと隣接する画素ブロックとの残差である初期残差ブロックを算出する初期算出部をさらに備え、
前記判定部は、
前記残差ブロックの画素値の絶対値の和と、前記初期残差ブロックの画素値の絶対値の和とに基づいて、前記残差ブロックの符号化を行なうか否かを判定する、
請求項４記載の画像符号化装置。
【請求項６】
前記参照ブロックは、前記符号化対象ブロックに隣接する複数の画素ブロックであり、
前記判定部は、
前記参照ブロックどうしの画素値が一致した場合、前記残差ブロックの符号化を行なわないと判定し、
符号化対象画素ブロックに隣接する複数の画素ブロックの画素値が一致しない場合、
前記残差ブロックの符号化を行なうと判定する、
請求項２記載の画像符号化装置。
【請求項７】
前記予測部は、
複数の前記予測ブロックを予測し、
前記判定部は、
複数の前記予測ブロックの画素値が一致した場合、前記残差ブロックの符号化を行なわないと判定し、
複数の前記予測ブロックの画素値が一致しない場合、前記残差ブロックの符号化を行なうと判定する、
請求項２記載の画像符号化装置。
【請求項８】
入力画像を２のべき乗個の画素を含むブロック毎に符号化する画像符号化方法であって、
前記入力画像において、符号化対象ブロックの周囲の参照ブロックに基づいて、予測ブロックを生成し、
前記符号化対象ブロックと前記予測ブロックとの残差である残差ブロックを算出し、
前記残差ブロックを可変長符号化する画像符号化方法であって、
前記参照ブロックは前記符号化対象ブロックに含まれる少なくとも１つの画素を含む画像符号化方法。
【請求項９】
入力画像を２のべき乗個の画素を含むブロック毎に符号化するために、コンピュータを、
前記入力画像において、符号化対象ブロックの周囲の参照ブロックに基づいて、予測ブロックを生成する手段と、
前記符号化対象ブロックと前記予測ブロックとの残差である残差ブロックを算出する手段と、
前記残差ブロックを可変長符号化する手段として機能させ、
前記参照ブロックは前記符号化対象ブロックに含まれる少なくとも１つの画素を含む画像符号化プログラム。
【請求項１０】
入力画像を２のべき乗個の画素を含むブロック毎にロスレス符号化する医用画像処理装置であって、
前記入力画像において、符号化対象ブロックの周囲の参照ブロックに基づいて、前記符号化対象画素に対する予測ブロックを生成する予測部と、
前記符号化対象ブロックと前記予測ブロックとの残差である残差ブロックを算出する算出部と、
前記残差ブロックを可変長符号化する符号化部とを備え、
前記参照ブロックは前記符号化対象ブロックに含まれる少なくとも１つの画素を含む医用画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、画像符号化装置、方法、及びプログラムに関する。
【背景技術】
【０００２】
画像データをロスレス符号化して符号化データを生成する画像符号化方法がある。従来の画像符号化方法には、隣接画素間の画素値の勾配に応じて、画素単位に予測方向を切り替え、符号化対象画素と予測画素との差分画素を符号化するものがある。しかしながら、画素毎に符号化を行なうため、効率よく符号化を行なうことが困難である。
【０００３】
従来の他の画像符号化方法には、入力画像を画素ブロックに分割し、画素ブロック毎に符号化を行なうか、符号化をスキップするか否かを判定するものがある。しかしながら、画素ブロックのサイズによっては、効率よく符号化を行なうことが困難である。
【０００４】
従来の他の画像符号化方法には、画素ブロック単位で予測画素を算出し、画素毎に符号化を行なうか、符号化をスキップするかを判定するものがある。しかしながら、画素毎に判定を行なうため、高速に符号化を行なうことが困難である。
【０００５】
このような画像符号化装置では、高速かつ効率良く符号化を行なうことができるものが望まれている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−３３６０５６号公報
【特許文献２】特開２０１１−１９０９６号公報
【非特許文献】
【０００７】
【非特許文献１】ＩＳＯ／ＩＥＣ  １４４９５  Ａｎｎｅｘ  Ａ  Ａ．４章
【発明の概要】
【発明が解決しようとする課題】
【０００８】
発明が解決しようとする課題は、高速かつ効率良く符号化を行なうことができる画像符号化装置、方法、及びプログラムを提供することである。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明の実施形態に係る画像符号化装置は、画像を２のべき乗個の画素を含むブロック単位で符号化する画像符号化装置であって、予測部と、算出部と、判定部と、符号化部とを備える。
【００１０】
予測部は、画像において、符号化対象となる符号化対象ブロックの周囲の参照ブロックに基づいて、予測ブロックを生成する。算出部は、前記符号化対象ブロックと前記予測ブロックとの残差である残差ブロックを算出する。判定部は、前記符号化対象ブロック、前記参照ブロック、前記予測ブロックのうち、少なくともいずれかのブロックの画素値に基づいて、前記残差ブロックの符号化を行なうか否かを判定する。符号化部は、前記残差ブロックの符号化を行なう場合には、前記残差ブロックを符号化し、前記残差ブロックの符号化を行なわない場合には、前記残差ブロックを符号化スキップとして符号化する。
【図面の簡単な説明】
【００１１】
【図１】第1の実施形態に係る画像符号化装置１を表すブロック図。
【図２】画像符号化装置１の処理を表すフローチャート。
【図３】符号化対象ブロックと参照ブロックとの関係図。
【図４】画素予測方式（平面予測）の一例図。
【図５】ゴロム符号テーブルの一例図。
【図６】第２の実施形態に係る画像符号化装置２を表すブロック図。
【図７】画像符号化装置２の処理を表すフローチャート。
【図８】第４の実施形態に係る画像符号化装置４。
【図９】画像復号化装置２の処理を表すフローチャート。
【図１０】画像符号化装置４の処理を表すフローチャート。
【図１１】符号化スキップ数、及び可変長符号化する符号化対象ブロック数の説明図。
【図１２】画像符号化装置４が出力する符号化データを表す一例図。
【図１３】第５の実施形態に係る画像符号化装置５を表すブロック図。
【図１４】画像符号化装置５の処理を表すフローチャート。
【図１５】画像符号化装置５が出力する符号化データを表す一例図。
【図１６】第６の実施形態に係る画像符号化装置６を表すブロック図。
【図１７】画像符号化装置６の処理を表すフローチャート。
【発明を実施するための形態】
【００１２】
（第１の実施形態）
第１の実施形態に係る画像符号化装置１は、取得した画像をロスレス符号化するものであり、例えば、ＣＴ装置やＭＲＩ等で撮影された医用画像データを蓄積あるいは伝送するＰＣサーバ等に好適である。
【００１３】
画像符号化装置１は、１回の命令で複数のデータに対する演算処理を同時に実行するＳＩＭＤ（Single Instruction Multiple Data）により、取得した画像データを符号化することが可能なものである。
【００１４】
画像符号化装置１は、取得した画像において、２のべき乗個の画素を含む画素ブロック毎に処理を行なう。これにより、ＳＩＭＤに従って画像データを符号化することができる。
【００１５】
画像符号化装置１は、符号化対象ブロックの予測ブロックを生成し、当該予測ブロックを生成する際に算出した情報に基づいて、当該符号化対象ブロックと当該予測ブロックとの残差ブロックを可変長符号化するか否かを判定する。判定が真の場合、画像符号化装置１は、残差ブロックを可変長符号化する。判定が偽の場合、画像符号化装置１は、前記残差ブロックを、符号化スキップを示すフラグとして符号化する。これにより、画像符号化装置１は、画像データを高速かつ効率良く符号化することができる。
【００１６】
図１は、画像符号化装置１を表すブロック図である。画像符号化装置１は、取得部１１と、予測部１２と、算出部１３と、判定部１４と、符号化部１５とを備える。
【００１７】
取得部１１は、画像データを取得する。
【００１８】
予測部１２は、画像データにおける符号化対象ブロックの周囲の参照ブロックに基づいて、符号化対象ブロックに対する予測ブロックを生成する。なお、符号化対象ブロック及び参照ブロックは、各々、２のべき乗個の画素を含む。
【００１９】
算出部１３は、符号化対象ブロックと予測ブロックとの残差である残差ブロックを算出する。
【００２０】
判定部１４は、符号化対象ブロックの画素値と参照ブロックの画素値とに基づいて、前記残差ブロックの可変長符号化を行なうか否かを判定する。
【００２１】
可変長符号化を行なうと判定された場合、符号化部１５は、残差ブロックの画素値を可変長符号化する。
【００２２】
可変長符号化を行なわないと判定された場合、スキップ処理部１６は、予測残差ブロックを符号化スキップ情報として符号化処理する、あるいはスキップブロックの数をカウントアップする。
【００２３】
取得部１１と、予測部１２と、算出部１３と、判定部１４と、符号化部１５とは、中央演算処理装置（ＣＰＵ）、及びＣＰＵが用いるメモリにより実現されてよい。
【００２４】
以上、画像符号化装置１の構成について説明した。
【００２５】
図２は、画像符号化装置１の処理を表すフローチャートである。
【００２６】
本実施形態では、符号化モードとして、スキップモードと通常モードとを設けている。スキップモードは、符号化対象ブロックを符号化スキップ処理するかスキップブロックの数をカウントアップするかを決定するモードである。
【００２７】
通常モードは、符号化対象ブロックを符号化スキップ処理せずに可変長符号化するモードである。なお、本フローの開始時は、通常モードであるとする。以下、本フローについて説明する。
【００２８】
取得部１１は、画像データを取得する（Ｓ１０１）。
【００２９】
予測部１２は、符号化対象ブロックの周囲の参照ブロックに基づいて、当該符号化対象ブロックに対する予測ブロックを生成する（Ｓ１０２）。
【００３０】
算出部１３は、符号化対象ブロックと前記予測ブロックとの残差である残差ブロックを算出する（Ｓ１０３）。
【００３１】
判定部１４は、現在の符号化モードがスキップモードであるか通常モードであるかを判定する（Ｓ１０４）。
【００３２】
符号化モードがスキップモードである場合（Ｓ１０４：スキップモード）、判定部１４は、
残差ブロックに含まれる画素の画素値が全て０であるか否かを判定する（Ｓ１０６）。
【００３３】
符号化モードが通常モードである場合（Ｓ１０４：通常モード）、判定部１４は、参照ブロックどうしの画素値は同じであるか否かを判定する（Ｓ１０５）。参照ブロックどうしの画素値が同じである場合（Ｓ１０５：ＹＥＳ）、ステップＳ１０６に遷移する。
【００３４】
参照ブロックどうしの画素値が同じでない場合（Ｓ１０５：ＮＯ）、符号化部１５は、残差ブロックの画素値を可変長符号化し、符号化データを得る（Ｓ１０７）。符号化部１５は、全てのブロックに対する処理が終了したか否かを判定する（Ｓ１０８）。全てのブロックに対する処理が終了している場合（Ｓ１０８：ＹＥＳ）、符号化部１５は符号化データを出力し、本フローの処理を終了する。全てのブロックに対する処理が終了していない場合（Ｓ１０８：ＮＯ）、ステップＳ１０２に遷移し、次の符号化対象ブロックについて、処理を継続する。
【００３５】
ステップＳ１０６において、残差ブロックに含まれる画素の画素値が全て０である場合（Ｓ１０６：ＹＥＳ）、スキップ処理部１６は、符号化をスキップした符号化対象ブロックの数（符号化スキップ数）をカウントする（Ｓ１０９）。初めてスキップされる場合、スキップ処理部１６は、０からカウントを開始し、すでに複数の符号化対象ブロックが連続でスキップされている場合は、その符号化スキップ数に１を加算する。
【００３６】
スキップ処理部１６は、符号化モードをスキップモードに設定する（Ｓ１１０）。ただし、既にスキップモードに設定されている場合は、ステップＳ１１０の処理は行わず、後述するステップＳ１１１に遷移する。
【００３７】
スキップ処理部１６は、全てのブロックに対する処理が終了したか否かを判定する（Ｓ１１１）。
【００３８】
全てのブロックに対する処理が終了している場合（Ｓ１１１：ＹＥＳ）、スキップ処理部１６は、符号化スキップ数を符号化した符号化データを生成し（Ｓ１１２）、本フローの処理を終了する。
【００３９】
全てのブロックに対する処理が終了していない場合（Ｓ１１１：ＮＯ）、ステップＳ１０２に遷移し、次の符号化対象ブロックについて、処理を継続する。
【００４０】
ステップＳ１０６において、残差ブロックに含まれる画素の画素値が全て０でない場合（Ｓ１０６：ＮＯ）、スキップ処理部１６は、符号化スキップ数を符号化する（Ｓ１１３）。スキップ処理部１６は、符号化スキップ数をリセットする（Ｓ１１４）。
【００４１】
スキップ処理部１６は、符号化モードを通常モードに設定し（Ｓ１１５）、ステップＳ１０７に遷移する。ただし、既に通常モードに設定されている場合は、ステップＳ１１５の処理は行わず、ステップＳ１０７に遷移する。
【００４２】
以上、画像符号化装置１の処理について説明した。
【００４３】
以下、画像符号化装置１の各処理の具体例について説明する。本実施形態では、画素ブロックに含まれる画素数を、１６×１画素として説明するが、これに限られない。
【００４４】
図３は、符号化対象ブロックと参照ブロックとの関係図である。ステップＳ１０２において、予測部１２は、符号化対象ブロックに対して、例えば、左側に１画素ずれた参照ブロックＡと、上側に１画素ずれた参照ブロックＢと、上側及び左側に１画素ずれた参照ブロックＣとを用いて、予測ブロックを生成する。
【００４５】
本実施形態では、上記３つの参照ブロックを用いて、平面予測と呼ばれる予測方式を用いて予測ブロックを生成する。平面予測は、参照ブロックＡと、参照ブロックＢと、参照ブロックＣとを用いて、（Ａ＋Ｂ−Ｃ）という計算式により求められる。Ａ、Ｂ、Ｃは、各参照ブロックの画素値を表す。
【００４６】
なお、予測ブロックの予測方式として平面予測を用いているが、これに限られない。例えば、ＤＣ予測として、（Ａ＋Ｂ）／２という予測方式を用いれば、参照ブロックは２つでよい。あるいは、左画素からの予測として画素値Ａのみを用いる方式であれば、参照ブロックは１でよい。これにより、符号化対象ブロックの上側の画素ラインを読み込む必要がなくなるため、メモリアクセス速度が向上する。
【００４７】
図４は、画素予測方式（平面予測）の一例図である。ステップＳ１０３において、算出部１３は、符号化対象ブロックと予測ブロックとの差分を算出し、残差ブロックを生成する。このとき、１６×１画素を同時に計算することで、高速な処理が実現できる。この計算には、例えば、ＣＰＵに搭載されているＳＩＭＤ命令を用いることができる。
【００４８】
例えば、入力画素の信号長が８ビットであれば、画素ブロックのデータ長は１６×８＝１２８ビットとなり、１２８ビットレジスタを使用するＳＳＥ２と呼ばれるＳＩＭＤ命令のセットを利用することができる。また、信号長が１６ビットであれば、２５６ビットのレジスタが必要となるが、これは１２８ビットのレジスタを２つ用いて処理しても構わない。
【００４９】
ステップＳ１０４において、判定部１４は、現在の符号化モードがスキップモードであるか通常モードであるかを判定する。
【００５０】
ステップＳ１０５において、判定部１４は、各参照ブロックＡ、Ｂ、Ｃどうしの画素値を比較する。例えば、判定部１４は、画素値の差分「Ａ−Ｂ」と「Ｂ−Ｃ」とを算出し、その絶対値和（｜Ａ−Ｂ｜＋｜Ｂ−Ｃ｜）が０になるか否かを判定する。この計算も、ＳＩＭＤ命令を利用すれば、高速に実行することが可能である。
【００５１】
ステップＳ１０４及びステップＳ１０５の判定処理は、符号化スキップの可能性が高いかどうかを判定することに相当する。現在の符号化モードがスキップモードであるということは、直前の符号化対象ブロックがスキップされており、スキップが続く可能性が高い。
【００５２】
符号化対象ブロックの周囲のブロックである参照ブロックどうしの画素値が全て一致していれば、符号化対象ブロックの画素値も同じとなる可能性が高い。
【００５３】
符号化対象ブロックの情報を用いることなく、参照ブロックの情報を用いることで、伸長する際にヒント情報（符号化しておくべきスキップフラグ等）を用いずとも符号化スキップの可能性の有無を判定可能となる。これにより、「符号化スキップしない」という情報をブロック毎に符号化する必要がなく、効率的な符号化が可能となる。
【００５４】
ステップＳ１０６において、判定部１４は、残差ブロックに含まれる画素の画素値の絶対値和を算出し、判定を行なう。符号化スキップの可能性が高いと判定とされた場合（Ｓ１０４又はＳ１０５においてＹＥＳ）でも、残差が発生する場合があり、本処理を行なうことが望ましい。
【００５５】
残差ブロックの画素値がすべて０の場合（Ｓ１０６：ＹＥＳ）、スキップ処理部１６は、スキップブロックの数をカウントアップする処理（Ｓ１０９）及び、符号化モードをスキップモードに設定する処理（Ｓ１１０）を行なう。
【００５６】
ステップＳ１１１において、スキップ処理部１６は、符号化処理が終端に到達したかを判定するが、処理の単位としては、例えば入力画像データ全体の場合や、画素ライン単位の場合や、特定のスライス（複数の画素ラインの集合）単位の場合等がある。
【００５７】
処理単位の終端に到達していなければ、ステップＳ１０２に遷移する。処理単位の終端に到達していれば、符号化スキップ数を符号化する処理（Ｓ１１２）に遷移し、符号化処理を終了する。符号化スキップ数を符号化する処理（Ｓ１１２）の方法については後述する。
【００５８】
残差ブロックの画素値に非０が含まれている場合（Ｓ１０６：ＮＯ）、符号化対象ブロックを符号化スキップとして符号化できないため、符号化モードを通常モードに設定するための処理に遷移する。
【００５９】
スキップブロック数を符号化する処理（Ｓ１１３）では、現在までに符号化スキップとしたブロックの数を符号化する。スキップブロック数の符号化として、２つの処理（Ｓ１１２及びＳ１１３）があるが、同じ処理方式にしても良いし、異なる方式にしても良い。
【００６０】
ステップＳ１１２では、スキップブロック数を符号化せずに、「残りのブロックは全てスキップである」という情報を符号化してもよい。一方、ステップＳ１１３は、スキップが１つあるいは連続して発生した後に、残差ブロックの符号化を行なうため、スキップブロック数を符号化する必要がある。
【００６１】
例えば、最初の１ビットが０であれば、残り全てが符号化スキップのブロックを示し、最初の１ビットが１であれば、その後に固定長符号あるいはゴロム符号でスキップブロック数を符号化するようにしても良い。
【００６２】
ステップＳ１１３〜ステップＳ１１５において、スキップ処理部１６は、スキップブロック数を符号化し（Ｓ１１３）、スキップブロック数を０にリセットし（Ｓ１１４）、符号化モードを通常モードに設定する（Ｓ１１５）。そして、ステップＳ１０７に遷移する。
【００６３】
ステップＳ１０７において、符号化部１５は、残差ブロックに含まれる画素の画素値（残差画素値）、及び付帯情報（後述）を符号化する。残差画素値を符号化する方法として、本実施形態ではゴロム符号を用いるが、その他の方法を用いても構わない。
【００６４】
図５は、ゴロム符号テーブルの一例図である。各ゴロム符号は、プレフィックス長が８ビットの符号である。図５（ａ）と図５（ｂ）とでは、サフィックス長を制御するパラメータＫの値が異なる（図５（ａ）ではＫ＝０、図５（ａ）ではＫ＝１）。
【００６５】
例えば、残差ブロックの残差画素値の絶対値が小さい値に集中している場合は、Ｋの値が小さい方が高圧縮となる。一方、残差ブロックの残差画素値の絶対値が大きい値に集中している場合は、Ｋの値が大きい方が高圧縮となる。
【００６６】
例えば、符号化部１５は、残差ブロックの残差画素値に基づいてＫの値を決定し、前述の付帯情報として、Ｋの値を符号化してよい。これにより、ステップＳ１０７では、Ｋの値の符号と、各残差画素値のゴロム符号とが符号化データとして出力される。
【００６７】
なお、例えばＫの値が最大８であれば、符号化部１５は、３ビットの固定長符号化により、Ｋの値を符号化しても良いし、残差画素値と同様に直前のＫの値との差分を算出して、ゴロム符号を割り当てて符号化しても良い。
【００６８】
符号化方法は、ゴロム符号の他に、ハフマン符号等がある。例えば、符号化部１５は、事前に学習して設計した符号テーブルを用いて残差画素値を符号化しても良いし、入力画像データを連続して複数符号化する場合は、直前の入力画像データから符号テーブルを再設計しても良い。
【００６９】
ステップＳ１０８において、全てのブロックに対する処理が終了している場合（Ｓ１０８：ＹＥＳ）、符号化部１５は符号化データを出力し、本フローの処理を終了する。全てのブロックに対する処理が終了していない場合（Ｓ１０８：ＮＯ）、ステップＳ１０２に遷移し、次の符号化対象ブロックについて、処理を継続する。
【００７０】
本実施形態によれば、複数の画素を並列処理しながら、符号化スキップを行なうか否かを判定することにより、高速かつ高効率な画像符号化が可能となる。
【００７１】
（第２の実施形態）
第２の実施形態に係る画像符号化装置２は、符号化対象ブロックに対して、異なる予測方式で予測した、複数の予測ブロックを生成し、圧縮効率を向上させる最適な予測方式を選択する点が画像符号化装置１の場合と異なる。
【００７２】
図６は、画像符号化装置２を表すブロック図である。画像符号化装置２は、画像符号化装置１に対して、選択部２１をさらに備える。
【００７３】
選択部２１は、複数の予測方式で生成された予測ブロックの中で、最適な予測方式を選択する。
【００７４】
図７は、画像符号化装置２の処理を表すフローチャートである。画像符号化装置１と異なる処理についてのみ説明する。
【００７５】
ステップＳ２０１において、予測部１２は、異なる予測方式を用いて、複数の予測ブロックを生成する（Ｓ２０１）。本実施形態では、複数の予測方式として、平面予測と、左画素予測と、上画素予測との３つの予測方式を適用した場合を説明するが、これに限られない。
【００７６】
すなわち、予測部１２は、平面予測として（Ａ＋Ｂ−Ｃ）を計算する。左画素予測として、Ａを用いる。上画素予測として、Ｂを用いる。
【００７７】
ステップＳ２０２において、算出部２０１は、各予測ブロックに対して、残差ブロックを生成する（Ｓ２０２）。残差ブロックの生成方法は、画像符号化装置１と同様である。
【００７８】
ステップＳ２０３において、判定部１４は、予測ブロックどうしの画素値は同じであるか否かを判定する（Ｓ２０３）。判定部１４は、例えば、「Ａ＝Ｂ＝（Ａ＋Ｂ−Ｃ）」を算出することにより、予測ブロックどうしの画素値が同じであるか否かを判定してよい。
【００７９】
本実施形態では、予測方式が複数あるため、符号化スキップした場合に予測ブロックがそれぞれ異なると、符号化スキップとは別に、予測方式の情報を符号化する必要があり、効果的な符号化スキップができない。
【００８０】
予測ブロックが全て一致していれば、いずれの予測方式を用いても良いため、符号化スキップとは別に予測方式の情報を符号化する必要はない。
【００８１】
ステップＳ２０８において、選択部２１は、複数の予測ブロックの中で、最も圧縮効率が高くなる予測方式の予測ブロックを選択する（Ｓ２０８）。例えば、ゴロム符号により残差ブロックを符号化する場合、最も圧縮効率が高くなるような予測方式を選択するために、選択部２１は、残差ブロックの画素値の絶対値和を算出し、最も絶対値和の小さい予測方式を選択すれば良い。
【００８２】
その他の符号化方式を利用する場合であっても、選択部２１は、残差ブロックの画素値を符号化した場合に発生する符号量（例えば、ハフマン符号であれば、各画素値に対する符号長の総和）が最も小さいものを選べば良い。
【００８３】
ステップＳ２０９において、符号化部１５は、残差ブロックの情報を可変長符号化して、符号化データを生成する（Ｓ２０９）。残差ブロックの符号化方法は画像符号化装置１と同様で構わないが、本実施形態の符号化部１５は、付帯情報として、選択された予測方式の情報を符号化する。
【００８４】
本実施形態によれば、適切な予測方式を選択することで圧縮効率を高め、複数の画素を並列処理しながら、符号化スキップを行なうか否かを判定することにより、高速かつ高効率な画像符号化が可能となる。
【００８５】
（第３の実施形態）
第３の実施形態に係る画像符号化装置３は、取得した画像データを事前に量子化しておく点が、前実施形態の場合と異なる。
【００８６】
図８は、画像符号化装置３を表すブロック図である。画像符号化装置３は、画像符号化装置１に対して、量子化部３１をさらに備える。
【００８７】
量子化部３１は、取得された画像データ（入力画像データ）の画素値を量子化する。例えば、量子化部３１は、図８に示すように線形量子化、あるいは非線形量子化を行なってよい。なお、線形量子化では式１を用いる。
【数１】
0005848620.tif 000002
【００８８】
入力画素値とは、入力画像データにおける各画素の画素値である。例えば、量子化幅が２であり、入力画像データの信号長が８ビットである場合、量子化後の信号長は７ビットに削減される。これにより、圧縮すべきデータ量を減らすことができる。
【００８９】
本実施形態では、入力画像データを上述のように事前に量子化することにより、圧縮データサイズを量子化後のデータサイズ以下にすることができる。
【００９０】
また、本実施形態では、量子化方法として、線形量子化を用いたが、例えば入力画素値が小さい場合は量子化幅を小さくし、入力画素値が大きい場合は量子化幅を大きくするような非線形量子化を用いてもよい。非線形量子化を用いることにより、画質を向上させることができる。
【００９１】
なお、本実施形態では、画像符号化装置１に対して量子化部３１が追加された例を説明したが、画像符号化装置２に対しても、同様の量子化部３１を設けてよい。
【００９２】
また、本実施形態は、量子化部３１で行われた量子化情報を符号化データに付加して、伸長側で逆量子化処理を行うことを想定している。しかし、例えば、事前に８ビット入力に対しては７ビットに下位１ビットを量子化する、というように決定しておけば、符号化データに量子化情報を付加する必要はない。
【００９３】
上述した実施形態によれば、符号化後のデータサイズを事前に決定することが可能となる。そして、複数の画素を並列処理しながら、符号化スキップを行なうか否かを判定することにより、高速かつ高効率な画像符号化が可能となる。
【００９４】
（第４の実施形態）
第４の実施形態に係る画像符号化装置４は、符号化対象ブロックの予測ブロックを生成し、当該予測ブロックを生成する際に算出した情報に基づいて、当該符号化対象ブロックと当該予測ブロックとの残差ブロックを可変長符号化するか否かを判定する。また、画像符号化装置４は、符号化スキップするブロック数と、残差ブロックを可変長符号化するブロック数とを、符号化する。これにより、符号化効率を高めることができる。
【００９５】
図９は、画像符号化装置４を表すブロック図である。画像符号化装置４は、取得部４１と、予測部４２と、算出部４３と、判定部４４と、第１カウント部４５と、第２カウント部４６と、記憶部４７と、第１符号化部４８と、第２符号化部４９とを備える。
【００９６】
取得部４１は、画像データを取得する。
【００９７】
予測部４２は、画像データにおける符号化対象ブロックの周囲の参照ブロックに基づいて、符号化対象ブロックに対する予測ブロックを生成する。なお、符号化対象ブロック及び参照ブロックは、各々、２のべき乗個の画素を含む。
【００９８】
算出部４３は、符号化対象ブロックと予測ブロックとの残差である残差ブロックを算出する。
【００９９】
判定部４４は、符号化対象ブロックの画素値と参照ブロックの画素値とに基づいて、前記残差ブロックの可変長符号化を行なうか否かを判定する。
【０１００】
可変長符号化を行なわないと判定された場合、第１カウント部４５は、符号化スキップ数をカウントする。第１カウント部４５は、符号化スキップ数を記憶部４７に書き込む。
【０１０１】
可変長符号化を行なうと判定された場合、第２カウント部４６は、可変長符号化を行なう符号化対象ブロック数（可変長ブロック数）をカウントする。第２カウント部４６は、可変長ブロック数を記憶部４７に書き込む。
【０１０２】
第１符号化部４８は、残差ブロックの画素値を可変長符号化する。
【０１０３】
第２符号化部４９は、符号化スキップ数と、可変長ブロック数とを符号化し、符号化された残差ブロックと統合した符号化データを出力する。
【０１０４】
取得部４１と、予測部４２と、算出部４３と、判定部４４と、第１カウント部４５と、第２カウント部４６と、第１符号化部４８と、第２符号化部４９とは、中央演算処理装置（ＣＰＵ）、及びＣＰＵが用いるメモリにより実現されてよい。記憶部４７は、ＣＰＵが用いるメモリや補助記憶装置より実現されてよい。
【０１０５】
以上、画像符号化装置４の処理について説明した。
【０１０６】
図１０は、画像符号化装置４の処理を表すフローチャートである。取得部４１は、画像データを取得する（Ｓ４０１）。予測部４２は、画像データにおける符号化対象ブロックの周囲の参照ブロックに基づいて、当該符号化対象ブロックに対する予測ブロックを生成する（Ｓ４０２）。算出部４３は、符号化対象ブロックと前記予測ブロックとの残差である残差ブロックを算出する（Ｓ４０３）。
【０１０７】
判定部４４は、符号化対象ブロックの画素値と参照ブロックの画素値とに基づいて、残差ブロックの可変長符号化を行なうか否かを判定する（Ｓ４０４）。
【０１０８】
可変長符号化を行なわないと判定された場合（Ｓ４０４：ＮＯ）、第１カウント部４５は、符号化スキップ数をカウントする（Ｓ４０５）。第１カウント部４５は、符号化スキップ数を記憶部４７に書き込み、ステップ４０２に遷移し、次の符号化対象ブロックに対する処理に移る。
【０１０９】
可変長符号化を行なうと判定された場合（Ｓ４０４：ＹＥＳ）、第２カウント部４６は、可変長ブロック数をカウントする（Ｓ４０６）。第２カウント部４６は、可変長ブロック数を記憶部４７に書き込む。
【０１１０】
第１符号化部４８は、残差ブロックの画素値を可変長符号化する（Ｓ４０７）。第１符号化部４８は、全てのブロックに対する処理が終了したか否かを判定する（Ｓ４０８）。全てのブロックに対する処理が終了していない場合（Ｓ４０８：ＮＯ）、ステップＳ４０２に遷移し、次の符号化対象ブロックについて、処理を継続する。
【０１１１】
全てのブロックに対する処理が終了している場合（Ｓ４０８：ＹＥＳ）、第２符号化部４９は、符号化スキップ数と、可変長ブロック数とを、記憶部４７から読み出す。第２符号化部４９は、符号化スキップ数と、可変長ブロック数とを、第１符号化部４８により符号化された残差ブロックと統合して生成した符号化データを出力し、処理を終了する。
【０１１２】
以上、画像符号化装置４の処理について説明した。
【０１１３】
以下、画像符号化装置４の各処理の具体例について説明する。ステップＳ４０１〜ステップＳ４０３、及びステップＳ４０７の処理については、第１の実施形態や第２の実施形態の場合と同様であってよい。
【０１１４】
ステップＳ４０４において、判定部４４は、残差ブロックに含まれる画素の画素値の絶対値の和が０になるか否かを判定する。判定がＹＥＳであれば、ステップＳ４０５に遷移する。判定がＮＯであれば、ステップＳ４０６に遷移する。
【０１１５】
複数の予測方式を用いて予測ブロックの生成と、残差ブロックの生成とが行われた場合、複数の残差ブロックが生成される。このような場合、判定部４４は、例えば、複数の残差ブロックに含まれる全ての画素値の絶対値の和が０であるか否かを判定してよい。あるいは、少なくとも１つの残差ブロックに含まれる画素の画素値の絶対値の和が０であるか否かを判定してもよい。
【０１１６】
図１１は、符号化スキップ数、及び可変長ブロック数の説明図である。図１７に示す画像は線画であり、線以外の平坦部分の画素値は全て同じとする。また、図１０に示すフローチャートの処理単位を画像の１ラインとする。
【０１１７】
符号化対象ブロック９１は、画像における平坦部分のため、画素値は全て同じである。そのため、残差ブロックに含まれる画素の画素値の絶対値の和が０となり、ステップ４０４における判定は「符号化スキップ」となる。ステップＳ４０５において、第１カウント部４５は、符号化スキップ数を０から１にカウントアップし、記憶部４７に書き込む。
【０１１８】
符号化対象ブロック９２も、画像における平坦部分のため、画素値は全て同じである。そのため、残差ブロックに含まれる画素の画素値の絶対値の和が０となり、ステップ４０４における判定は「符号化スキップ」となる。ステップＳ４０５において、第１カウント部４５は、符号化スキップ数を１から２にカウントアップし、記憶部４７に書き込む。
【０１１９】
符号化対象ブロック９３は、線画の線を含んでいるため、残差ブロックに含まれる画素の画素値の絶対値の和が非０となり、ステップ４０４における判定は「可変長符号化」となる。ステップＳ４０６において、第２カウント部４６は、可変長ブロック数を０から１にカウントアップし、記憶部４７に書き込む。
【０１２０】
符号化対象ブロック９４は、画像における平坦部分のため、画素値は全て同じである。そのため、残差ブロックに含まれる画素の画素値の絶対値の和が０となり、ステップ４０４における判定は「符号化スキップ」となる。ステップＳ４０５において、第１カウント部４５は、符号化スキップ数を１から２にカウントアップし、記憶部４７に書き込む。
【０１２１】
このとき、第１カウント部４５は、いままでにカウントアップした符号化スキップ数を記憶部４７で維持した状態のまま、新たに０からカウントアップした符号化スキップ数を記憶部４７の別の領域に書き込む。符号化対象ブロック９５〜９７についても同様である。
【０１２２】
すなわち、図１１に示す画像の例において、記憶部４７は、符号化スキップ数「２」、可変長ブロック数「1」、符号化スキップ数「２」、可変長ブロック数「1」、符号化スキップ数「２」のように、カウントされた符号化スキップ数と可変長ブロック数とを保持する。
【０１２３】
ステップＳ４０７において、第１符号化部４８は、ステップＳ４０４で「可変長符号化」と判定された残差ブロックを可変長符号化する。第２符号化部４９は、符号化スキップ数と、可変長ブロック数とを、第１符号化部４８により符号化された残差ブロックと統合して生成した符号化データを出力する。
【０１２４】
図１２は、画像符号化装置４が出力する符号化データを表す一例図である。図１２に示すように、出力される符号化データは、各残差ブロックの符号化データに、各カウント数の符号化データを付加したものとなる。「先頭スキップフラグ」とは、これ以降に各カウント数の符号化データが付加されていることを示すものである。
【０１２５】
ステップＳ４０９において、第２符号化部４９は、記憶部４７が保持している符号化スキップ数と可変長ブロック数とを符号化する。第２符号化部４９は、例えば、第１の実施形態と同様のゴロムライス符号を用いても良い。
【０１２６】
また、記憶部４７が保持する「カウント」の種類の順番は、符号化スキップ数→可変長ブロック数→符号化スキップ数…と、交互に繰り返される。そのため、第２符号化部４９は、最初にカウントされる「カウント」の種類が「符号化スキップ」であるか、「可変長ブロック数」であるかを示す１ビットのフラグを符号化データに付加するのが望ましい。
【０１２７】
これにより、各カウント数が、符号化スキップ数であるか、可変長ブロック数であるか、を復号側で自動的に判別することができる。このように、符号化スキップ数と可変長符号化するブロックをまとめて符号化することで、各ブロックにおけるスキップフラグが不要となり、符号化効率が高まる。
【０１２８】
本実施形態によれば、複数の画素を並列処理しながら、符号化スキップを行なうか否かを判定することにより、高速かつ高効率な画像符号化が可能となる。
【０１２９】
（第５の実施形態）
図１３は、第５の実施形態に係る画像符号化装置５を表すブロック図である。画像符号化装置５は、第１符号化部４８と第２符号化部４９とが、画像符号化装置４とは反対に接続される。
【０１３０】
図１４は、画像符号化装置５の処理を表すフローチャートである。画像符号化装置５のフローチャートは、画像符号化装置４のフローチャートのステップＳ４０１〜ステップＳ４０６、ステップＳ４０８、ステップＳ４０９については、同様の処理を行なう。
【０１３１】
ステップＳ５０１において、算出部４３は、残差ブロックに含まれる画素の画素値を記憶部４７に書き込む（Ｓ５０１）。なお、算出部４３は、記憶部４７とは別の記憶部（不図示）に残差ブロックに含まれる画素の画素値を書き込んでもよい。
【０１３２】
ステップＳ５０２において、第２符号化部４９は、記憶部４７に保持された残差ブロックに含まれる画素の画素値を可変長符号化し、符号化データを生成する。
【０１３３】
図１５は、画像符号化装置５が出力する符号化データを表す一例図である。図１５に示すように、画像符号化装置５が出力する符号化データは、残差ブロックの符号化データよりも先頭側に符号化スキップ数や可変長ブロック数のカウントデータが付加される。
【０１３４】
このようなデータ構造にすることで、復号側では符号化データを先頭から順に処理することが可能となるため、復号処理しやすくなる。
【０１３５】
なお、本実施形態では残差ブロックの画素値が記憶部４７に書き込まれるとして説明したが、例えば、画像符号化装置５は、画像符号化装置４のように残差ブロックの符号化を行い、その符号化データを保存しよい。そして、カウント数の符号化処理が終了した後、残差ブロックの画素知の符号化で保存しておいた符号化データを出力しても良い。
【０１３６】
（第６の実施形態）
第６の実施形態に係る画像符号化装置６は、算出部４３による残差ブロックの算出とは別に、判定部４４が符号化スキップを行なうか否かを判定するために用いる初期残差ブロックを生成する点が、画像符号化装置４の場合と異なる。また、画像符号化装置６は、初期残差ブロックを、残差ブロックとは異なる予測方式を用いて生成する。
【０１３７】
図１６は、画像符号化装置６を表すブロック図である。画像符号化装置６は画像符号化装置４に対して、初期残差ブロックを算出する初期算出部６１をさらに備える。また、各構成ブロックの接続関係が、画像符号化装置４と異なる。
【０１３８】
図１７は、画像符号化装置６の処理を表すフローチャートである。ステップＳ６０１において、初期算出部６１は、取得された画像データにおいて、初期残差ブロックを算出する（Ｓ６０１）。本実施形態では、符号化対象ブロックと、当該符号化対象ブロックの左画素と、の差分から初期残差ブロックを算出する。
【０１３９】
なお、本実施形態ではロスレス符号化を行なうため、符号化／復号化の因果律を満たす必要性がなく、左画素の画素ブロックと符号化対象ブロックとがオーバーラップしていても良い。例えば、本実施形態をロッシー符号化に適用する場合は、当該因果律を満たすように符号化対象ブロックを含まない上の画素ラインから隣接画素間における残差ブロックを算出すればよい。
【０１４０】
ステップＳ６０２において算出部４３は、ステップＳ４０３と同様の処理により残差ブロックを算出してよい。他のステップは、画像符号化装置４の場合と同様である。
【０１４１】
上述した実施形態によれば、高速かつ効率良く符号化を行なうことができる。
【０１４２】
これまで、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１４３】
１、２、３、４、５、６  画像符号化装置
１１、４１  取得部
１２、４２  予測部
１３、４３  算出部
１４、  判定部
１５  符号化部
１６  スキップ処理部
４５  第１カウント部
４６  第１カウント部
４７  記憶部
４８  第１符号化部
４９  第２符号化部
６１  初期算出部
【図１】
0005848620.tif 000003
【図２】
0005848620.tif 000004
【図３】
0005848620.tif 000005
【図４】
0005848620.tif 000006
【図５】
0005848620.tif 000007
【図６】
0005848620.tif 000008
【図７】
0005848620.tif 000009
【図８】
0005848620.tif 000010
【図９】
0005848620.tif 000011
【図１０】
0005848620.tif 000012
【図１１】
0005848620.tif 000013
【図１２】
0005848620.tif 000014
【図１３】
0005848620.tif 000015
【図１４】
0005848620.tif 000016
【図１５】
0005848620.tif 000017
【図１６】
0005848620.tif 000018
【図１７】
0005848620.tif 000019