(57)【要約】    【課題】      ユーザが独自設定したハフマン定義テーブルと量子化テーブルに誤った設定を行った場合でも、符号処理途中でのエラー発生または動作停止が発生しないようにすること。    【解決手段】  本発明は、ハフマン定義テーブル記憶手段に記憶されたハフマン定義テーブルの内容をハフマン定義テーブル検証手段で検証し、ハフマン定義テーブル値にエラーがない場合、ＪＰＥＧエンコード手段にハフマン定義テーブル記憶手段に記憶されたハフマン定義テーブルデータを設定し、その後画像データ入力手段から画像データをＪＰＥＧエンコード手段に入力し符号化処理を行い、生成したＪＰＥＧ符号データを符号データ出力手段から出力するようにした。  【選択図】      図１
2006109259.tif 000002
【特許請求の範囲】
【請求項１】
符号化する画像データを入力する画像データ入力手段と、符号化した符号データを出力する符号データ出力手段と、ハフマン定義テーブルを記憶するハフマン定義テーブル記憶手段と、前記ハフマン定義テーブルの内容を検証するハフマン定義テーブル検証手段と、前記ハフマン定義テーブルを設定して画像データを入力しＪＰＥＧ符号に変換するＪＰＥＧエンコード手段と、を有し、
前記ハフマン定義テーブル記憶手段に記憶された前記ハフマン定義テーブルの内容を前記ハフマン定義テーブル検証手段で検証し、前記ハフマンテーブル値にエラーがない場合、前記ＪＰＥＧエンコード手段に前記ハフマン定義テーブル記憶手段に記憶された前記ハフマン定義テーブルのデータを設定し、その後前記画像データ入力手段から前記画像データを前記ＪＰＥＧエンコード手段に入力し符号化処理を行い、生成したＪＰＥＧ符号データを前記符号データ出力手段から出力する事を特徴とする画像符号化装置。
【請求項２】
本画像符号化装置を制御するための制御データを入力する制御データ入力手段と、符号化する画像データを入力する画像データ入力手段と、符号化した符号データを出力する符号データ出力手段と、ＪＰＥＧ符号化処理のパラメータを記憶するパラメータ記憶手段と、前記画像データと前記符号データを一時的に記憶するデータ記憶手段と、ハフマン定義テーブルの内容を検証するハフマン定義テーブル検証手段と、前記ハフマン定義テーブルを設定して前記画像データを入力しＪＰＥＧ符号に変換するＪＰＥＧエンコード手段を有し、
前記制御データ入力手段から前記ハフマン定義テーブルを入力し前記データ記憶手段に記憶し、前記ハフマン定義テーブルアドレス値を前記パラメータ記憶手段に記憶し、前記パラメータ記憶手段の前記ハフマン定義テーブルアドレス値を参照し、前記データ記憶手段に記憶されたハフマン定義テーブルの内容を前記ハフマン定義テーブル検証手段で検証し、前記ハフマン定義テーブルの値にエラーがない場合、前記ＪＰＥＧエンコード手段に前記データ記憶手段に記憶された前記ハフマン定義テーブルのデータを設定し、その後前記画像データ入力手段から前記画像データを前記データ記憶手段に一時記憶し、前記データ記憶手段に一時記憶した前記画像データを前記ＪＰＥＧエンコード手段に入力し、符号化処理を行い、生成したＪＰＥＧ符号データを前記データ記憶手段に一時記憶させ、前記データ記憶手段に一時記憶した前記ＪＰＥＧ符号データを符号データ出力手段から出力する事を特徴とする画像符号化装置。
【請求項３】
前記ハフマン定義テーブル検証手段は、前記ハフマン定義テーブルの符号長毎の語数を設定した語数テーブルとハフマン符号毎に割付られた値を設定した値テーブル参照し、前記符号長毎の語数を設定した前記語数テーブルの値の総和が所定の値と一致しない場合と、前記ハフマン符号毎に割付られた値を設定した前記値テーブル値の総和が所定の値と一致しない場合はハフマン定義テーブルエラーとする事を特徴とする請求項１または請求項２記載の画像符号化装置。
【請求項４】
前記ハフマン定義テーブル検証手段は、ハフマン符号毎に割付られた値を設定した値テーブルを参照し、参照した各値が所定の範囲で有るかを検証し範囲外の値の場合はハフマン定義テーブルエラーとする第１の検証手段と、ハフマン符号毎に割付られた値を設定したテーブル内に同じ値が２つ以上存在する場合はハフマン定義テーブルエラーとする第２の検証手段を有する事を特徴とする請求項１または請求項２記載の画像符号化装置。
【請求項５】
前記ハフマン定義テーブル検証手段は、ハフマン定義テーブルの符号長毎の語数を設定した語数テーブルを参照する参照手段と、符号長がｉビットの場合の取りうる最大語数を符号長がｉビットの最初のコード値から求める第１手段と、前記参照手段で参照した符号長ｉビットの語数テーブルの値から符号長がｉ＋１ビットの最初のコード値を求める第２手段と、前記第１手段で求めた符号長がｉビットの場合の取りうる最大語数と、符号長ｉビットの前記語数テーブル値を比較し前記語数テーブル値が大きい場合はハフマン定義テーブルエラーとする第３手段と、を有し、
符号長が１ビットの場合の最初のコード値を０とし、符号長ｉビットを１から昇順に１６まで、前記第１手段と第２手段と第３手段の処理を繰り返す事を特徴とする請求項１または請求項２記載の画像符号化装置。
【請求項６】
符号化する画像データを入力する画像データ入力手段と、符号化した符号データを出力する符号データ出力手段と、量子化テーブルを記憶する量子化テーブル記憶手段と、前記量子化テーブルの内容を検証する量子化テーブル検証手段と、前記量子化テーブルを設定して前記画像データを入力しＪＰＥＧ符号に変換するＪＰＥＧエンコード手段を有し、
前記量子化テーブル記憶手段に記憶された前記量子化テーブルの内容を前記量子化テーブル検証手段で検証し、テーブル値にエラーがない場合、前記ＪＰＥＧエンコード手段に前記量子化テーブル記憶手段に記憶された前記量子化テーブルのデータを設定し、その後前記画像データ入力手段から前記画像データを前記ＪＰＥＧエンコード手段に入力し、符号化処理を行い、生成したＪＰＥＧ符号データを前記符号データ出力手段から出力する事を特徴とする画像符号化装置。
【請求項７】
制御するための制御データを入力する制御データ入力手段と、符号化する画像データを入力する画像データ入力手段と、符号化した符号データを出力する符号データ出力手段と、ＪＰＥＧ符号化処理のパラメータを記憶するパラメータ記憶手段と、前記画像データと前記符号データを一時的に記憶するデータ記憶手段と、量子化テーブルの内容を検証する量子化テーブル検証手段と、前記量子化テーブルを設定して前記画像データを入力しＪＰＥＧ符号に変換するＪＰＥＧエンコード手段を有し、
前記制御データ入力手段から前記量子化テーブルを入力し前記データ記憶手段に記憶し前記量子化テーブルアドレスのアドレス値を前記パラメータ記憶手段に記憶し、前記パラメータ記憶手段の前記量子化テーブルのアドレス値を参照し、前記データ記憶手段に記憶された前記量子化テーブルの内容を前記量子化テーブル検証手段で検証し、前記量子化テーブルの値にエラーがない場合、前記ＪＰＥＧエンコード手段に前記データ記憶手段に記憶された前記量子化テーブルのデータを設定し、その後前記画像データ入力手段から画像データを前記データ記憶手段に一時記憶し、前記データ記憶手段に一時記憶した前記画像データを前記ＪＰＥＧエンコード手段に入力し、符号化処理を行い、生成したＪＰＥＧ符号データを前記データ記憶手段に一時記憶させ、前記データ記憶手段に一時記憶した前記ＪＰＥＧ符号データを符号データ出力手段から出力する事を特徴とする画像符号化装置。
【請求項８】
前記量子化テーブル検証手段は、前記量子化テーブルの値を参照し、参照した各値が所定の範囲で有るかを検証し、範囲外の値を取る場合は量子化テーブルエラーとする事を特徴とする請求項６または請求項７記載の画像符号化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＪＰＥＧ方式により画像データを圧縮・符号化する画像符号化装置に関する。
【背景技術】
【０００２】
従来、自然画などの連続階調を画像データ圧縮する場合、ＣＣＩＴＴ（現在ＩＴＵ−Ｔ）の勧告Ｔ．８１に従ったＪＰＥＧ方式の画像処理手順で画像データの符号化処理が行われる。
【０００３】
ＪＰＥＧ方式の画質と符号データ量に関係する設定パラメータとして、量子化テーブルとハフマンテーブルがあり、上記のＴ．８１の勧告書では標準的な量子化テーブルとハフマン定義テーブルが公開されている。
【０００４】
ＪＰＥＧ方式による画像符号化装置の多くは、その標準的な量子化テーブルとハフマンテーブルを使用する場合が多いが、それ以外に特定の画像に最適化された独自の量子化テーブルとハフマンテーブルを指定できるものもある（例えば、特許文献１参照）。
【０００５】
また、暗号化の目的で所定のハフマン定義テーブルを変更できる画像符号化装置がある（例えば、特許文献２参照）。
【特許文献１】特開平１１−１４１４９９号公報
【特許文献２】特開平７−１５４６０２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記従来の技術においては、以下のような問題が生ずる。
【０００７】
即ち、従来の技術は、Ｔ．８１の勧告書の標準的な量子化テーブルとハフマン定義テーブル以外に画像符号化装置を使用するユーザが独自の量子化テーブルとハフマン定義テーブルを設定できるため、誤ったテーブルを設定した場合、そのまま符号化処理を開始すると、ＪＰＥＧのヘッダコード生成時にエンコードエラー割り込みを発生するか、またはＪＰＥＧエンコーダが動作停止するという問題が発生する。
【０００８】
特に、Ｔ．８１の勧告書に従ったハフマン定義テーブルは、ハフマン符号テーブルそのものではなく、符号長毎の語数を設定した語数テーブルとハフマン符号毎に割付られた値を設定した値テーブルから構成されており、Ｔ．８１の勧告書のＡｎｎｅｘＣ項記載の複雑な手順でハフマン符号テーブルに変換してみないと、誤りが有るかどうか分からず、検証が難しい。
【０００９】
本発明は、かかる問題点に鑑みて為されたものであり、簡単な方法でユーザが独自設定したハフマン定義テーブルと量子化テーブルを事前検証する事により、テーブルに誤った設定を行った場合でも、符号処理途中でのエラー発生または動作停止が発生しない画像符号化装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
第１の発明は、画像データ入力手段と、符号データ出力手段と、ハフマン定義テーブルを記憶するハフマン定義テーブル記憶手段と、ハフマン定義テーブルの内容を検証するハフマン定義テーブル検証手段と、ハフマン定義テーブルを設定して画像データを入力しＪＰＥＧ符号に変換するＪＰＥＧエンコード手段を有し、前記ハフマン定義テーブル記憶手段に記憶されたハフマン定義テーブルの内容を前記ハフマン定義テーブル検証手段で検証し、テーブル値にエラーがない場合、前記ＪＰＥＧエンコード手段に前記ハフマン定義テーブル記憶手段に記憶されたハフマン定義テーブルデータを設定し、その後前記画像データ入力手段から画像データを前記ＪＰＥＧエンコード手段に入力し符号化処理を行い、生成したＪＰＥＧ符号データを前記符号データ出力手段から出力するようにした。
【００１１】
第２の発明は、画像データ入力手段と、符号データ出力手段と、量子化テーブルを記憶する量子化テーブル記憶手段と、量子化テーブルの内容を検証する量子化テーブル検証手段と、量子化テーブルを設定して画像データを入力しＪＰＥＧ符号に変換するＪＰＥＧエンコード手段を有し、前記量子化テーブル記憶手段に記憶された量子化テーブルの内容を前記量子化テーブル検証手段で検証し、テーブル値にエラーがない場合、前記ＪＰＥＧエンコード手段に前記量子化テーブル記憶手段に記憶された量子化テーブルデータを設定し、その後前記画像データ入力手段から画像データを前記ＪＰＥＧエンコード手段に入力し、符号化処理を行い、生成したＪＰＥＧ符号データを前記符号データ出力手段から出力するようにした。
【発明の効果】
【００１２】
本発明に係る画像符号化装置によれば、ユーザが独自設定したハフマン定義テーブルと量子化テーブルを事前検証する事により、テーブルの誤った設定による符号処理途中でのエラー発生または動作停止が発生しないようにすることができる。
【００１３】
また、Ｔ．８１の勧告書のＡｎｎｅｘＣ項記載の複雑な手順でハフマン符号テーブルに変換することなく、ハフマン定義テーブルの完全な検証を、少ないステップ数で実行でき検証時間を短縮できる。
【発明を実施するための最良の形態】
【００１４】
本発明の第１の態様に係る画像符号化装置は、符号化する画像データを入力する画像データ入力手段と、符号化した符号データを出力する符号データ出力手段と、ハフマン定義テーブルを記憶するハフマン定義テーブル記憶手段と、前記ハフマン定義テーブルの内容を検証するハフマン定義テーブル検証手段と、前記ハフマン定義テーブルを設定して画像データを入力しＪＰＥＧ符号に変換するＪＰＥＧエンコード手段と、を有し、前記ハフマン定義テーブル記憶手段に記憶された前記ハフマン定義テーブルの内容を前記ハフマン定義テーブル検証手段で検証し、前記ハフマンテーブル値にエラーがない場合、前記ＪＰＥＧエンコード手段に前記ハフマン定義テーブル記憶手段に記憶された前記ハフマン定義テーブルのデータを設定し、その後前記画像データ入力手段から前記画像データを前記ＪＰＥＧエンコード手段に入力し符号化処理を行い、生成したＪＰＥＧ符号データを前記符号データ出力手段から出力するものである。
【００１５】
これによれば、ＪＰＥＧエンコード手段で符号化処理する前にハフマン定義テーブル値にエラーが有る事が分るので、テーブルの誤った設定による符号処理途中でのエラー発生または動作停止の発生を防ぐことができる。
【００１６】
本発明の第２の態様に係る画像符号化装置は、本画像符号化装置を制御するための制御データを入力する制御データ入力手段と、符号化する画像データを入力する画像データ入力手段と、符号化した符号データを出力する符号データ出力手段と、ＪＰＥＧ符号化処理のパラメータを記憶するパラメータ記憶手段と、前記画像データと前記符号データを一時的に記憶するデータ記憶手段と、ハフマン定義テーブルの内容を検証するハフマン定義テーブル検証手段と、前記ハフマン定義テーブルを設定して前記画像データを入力しＪＰＥＧ符号に変換するＪＰＥＧエンコード手段を有し、前記制御データ入力手段から前記ハフマン定義テーブルを入力し前記データ記憶手段に記憶し、前記ハフマン定義テーブルアドレス値を前記パラメータ記憶手段に記憶し、前記パラメータ記憶手段の前記ハフマン定義テーブルアドレス値を参照し、前記データ記憶手段に記憶されたハフマン定義テーブルの内容を前記ハフマン定義テーブル検証手段で検証し、前記ハフマン定義テーブルの値にエラーがない場合、前記ＪＰＥＧエンコード手段に前記データ記憶手段に記憶された前記ハフマン定義テーブルのデータを設定し、その後前記画像データ入力手段から前記画像データを前記データ記憶手段に一時記憶し、前記データ記憶手段に一時記憶した前記画像データを前記ＪＰＥＧエンコード手段に入力し、符号化処理を行い、生成したＪＰＥＧ符号データを前記データ記憶手段に一時記憶させ、前記データ記憶手段に一時記憶した前記ＪＰＥＧ符号データを符号データ出力手段から出力するものである。
【００１７】
これによれば、パラメータメモリの容量制限に関係なく、画像データと符号データを一時的に記憶するデータ記憶手段に多数のハフマン定義テーブルを記憶させる事ができ、その場合でもＪＰＥＧエンコード手段で符号化処理する前に、符号化で使用するハフマン定義テーブルを指定する事により、ハフマン定義テーブル値にエラーが有る事が分かるので、テーブルの誤った設定による符号処理途中でのエラー発生または動作停止の発生を防ぐことができる。
【００１８】
本発明の第３の態様に係る画像符号化装置は、第１または第２の態様にかかる画像符号化装置において、前記ハフマン定義テーブル検証手段は、前記ハフマン定義テーブルの符号長毎の語数を設定した語数テーブルとハフマン符号毎に割付られた値を設定した値テーブル参照し、前記符号長毎の語数を設定した前記語数テーブルの値の総和が所定の値と一致しない場合と、前記ハフマン符号毎に割付られた値を設定した前記値テーブル値の総和が所定の値と一致しない場合はハフマン定義テーブルエラーとするものである。
【００１９】
これによれば、テーブルの値の総和を演算するだけなので、ハフマン定義テーブルを極めて高速に簡易に検証することができる。
【００２０】
本発明の第４の態様に係る画像符号化装置は、第１または第２の態様にかかる画像符号化装置において、前記ハフマン定義テーブル検証手段は、ハフマン符号毎に割付られた値を設定した値テーブルを参照し、参照した各値が所定の範囲で有るかを検証し範囲外の値の場合はハフマン定義テーブルエラーとする第１の検証手段と、ハフマン符号毎に割付られた値を設定したテーブル内に同じ値が２つ以上存在する場合はハフマン定義テーブルエラーとする第２の検証手段を有するものである。
【００２１】
これによれば、簡単な方法によりＴ．８１の勧告書のＡｎｎｅｘＣ項記載の複雑な手順でハフマン符号テーブルに変換するのと同等の検証ができるので、ハフマン定義テーブルのハフマン符号毎に割付られた値を設定した値テーブルを高速で完全な方法で検証することができる。
【００２２】
本発明の第５の態様に係る画像符号化装置は、第１または第２の態様にかかる画像符号化装置において、前記ハフマン定義テーブル検証手段は、ハフマン定義テーブルの符号長毎の語数を設定した語数テーブルを参照する参照手段と、符号長がｉビットの場合の取りうる最大語数を符号長がｉビットの最初のコード値から求める第１手段と、前記参照手段で参照した符号長ｉビットの語数テーブルの値から符号長がｉ＋１ビットの最初のコード値を求める第２手段と、前記第１手段で求めた符号長がｉビットの場合の取りうる最大語数と、符号長ｉビットの前記語数テーブル値を比較し前記語数テーブル値が大きい場合はハフマン定義テーブルエラーとする第３手段と、を有し、符号長が１ビットの場合の最初のコード値を０とし、符号長ｉビットを１から昇順に１６まで、前記第１手段と第２手段と第３手段の処理を繰り返すものである。
【００２３】
これによれば、簡単な方法によりＴ．８１の勧告書のＡｎｎｅｘＣ項記載の複雑な手順でハフマン符号テーブルに変換するのと同等の検証ができるので、ハフマン定義テーブルの符号長毎の語数を設定した語数テーブルを高速で完全な方法で検証することができる。
【００２４】
本発明の第６の態様に係る画像符号化装置は、符号化する画像データを入力する画像データ入力手段と、符号化した符号データを出力する符号データ出力手段と、量子化テーブルを記憶する量子化テーブル記憶手段と、前記量子化テーブルの内容を検証する量子化テーブル検証手段と、前記量子化テーブルを設定して前記画像データを入力しＪＰＥＧ符号に変換するＪＰＥＧエンコード手段を有し、前記量子化テーブル記憶手段に記憶された前記量子化テーブルの内容を前記量子化テーブル検証手段で検証し、テーブル値にエラーがない場合、前記ＪＰＥＧエンコード手段に前記量子化テーブル記憶手段に記憶された前記量子化テーブルのデータを設定し、その後前記画像データ入力手段から前記画像データを前記ＪＰＥＧエンコード手段に入力し、符号化処理を行い、生成したＪＰＥＧ符号データを前記符号データ出力手段から出力するものである。
【００２５】
これによれば、ＪＰＥＧエンコード手段で符号化処理する前に量子化テーブル値にエラーが有る事が分るので、テーブルの誤設定による符号処理途中でのエラー発生または動作停止を防ぐことができる。
【００２６】
本発明の第７の態様に係る画像符号化装置は、制御するための制御データを入力する制御データ入力手段と、符号化する画像データを入力する画像データ入力手段と、符号化した符号データを出力する符号データ出力手段と、ＪＰＥＧ符号化処理のパラメータを記憶するパラメータ記憶手段と、前記画像データと前記符号データを一時的に記憶するデータ記憶手段と、量子化テーブルの内容を検証する量子化テーブル検証手段と、前記量子化テーブルを設定して前記画像データを入力しＪＰＥＧ符号に変換するＪＰＥＧエンコード手段を有し、前記制御データ入力手段から前記量子化テーブルを入力し前記データ記憶手段に記憶し前記量子化テーブルアドレスのアドレス値を前記パラメータ記憶手段に記憶し、前記パラメータ記憶手段の前記量子化テーブルのアドレス値を参照し、前記データ記憶手段に記憶された前記量子化テーブルの内容を前記量子化テーブル検証手段で検証し、前記量子化テーブルの値にエラーがない場合、前記ＪＰＥＧエンコード手段に前記データ記憶手段に記憶された前記量子化テーブルのデータを設定し、その後前記画像データ入力手段から画像データを前記データ記憶手段に一時記憶し、前記データ記憶手段に一時記憶した前記画像データを前記ＪＰＥＧエンコード手段に入力し、符号化処理を行い、生成したＪＰＥＧ符号データを前記データ記憶手段に一時記憶させ、前記データ記憶手段に一時記憶した前記ＪＰＥＧ符号データを符号データ出力手段から出力するものである。
【００２７】
これによれば、パラメータメモリの容量制限に関係なく、画像データと符号データを一時的に記憶するデータ記憶手段に多数の量子化テーブルを記憶させる事ができ、その場合でもＪＰＥＧエンコード手段で符号化処理する前に、符号化で使用する量子化テーブルを指定する事により、量子化テーブル値にエラーが有る事が分かるので、テーブルの誤った設定による符号処理途中でのエラー発生または動作停止を防ぐことができる。
【００２８】
本発明の第８の態様に係る画像符号化装置は、第６または第７の態様にかかる画像符号化装置において、前記量子化テーブル検証手段は、前記量子化テーブルの値を参照し、参照した各値が所定の範囲で有るかを検証し、範囲外の値を取る場合は量子化テーブルエラーとする。
【００２９】
これによれば、簡単な演算だけなので、量子化テーブルを極めて高速で完全な方法で検証することができる。
【００３０】
以下、本発明の一実施の形態に係る画像符号化装置について、添付図面を用いて説明する。
【００３１】
図１は、本実施の形態にかかる画像符号化装置の構成を示すブロック図である。画像符号化装置１００は、ホストイメージバス１２５から画像データを入力する外部データ入力部１１５、内部バス１１８から符号データを出力する外部データ出力部１１６が設けている。また、画像符号化装置１００は、内部バス１１８を介して各メモリと各レジスタをリード・ライトし各機能モジュールを制御するローカル制御ＣＰＵ１０１を設けている。
【００３２】
また、画像符号化装置１００は、ローカル制御ＣＰＵ１０１のマイクロプログラム１０３と量子化テーブルのデフォルト値１０４とハフマン定義テーブルのデフォルト値１０５が書き込まれているＲＯＭ１０２、ホストＣＰＵバス１２４と内部バス１１８のデータの入出力を制御する外部バス制御部１０６、ホストＣＰＵバス１２４からコマンドコードが書き込まれるコマンドレジスタ１０７、ホストＣＰＵバス１２４から読み出し可能で画像符号化装置１００の動作状態を示すステータスレジスタ１０８を設けている。
【００３３】
また、画像符号化装置１００は、内部バス１１８を介してデータを入出力しＪＰＥＧ符号化処理を行うＪＰＥＧエンコーダ１１４、内部バス１１８を介してＳＤＲＡＭ１１７とＪＰＥＧエンコーダ１１４と外部データ入力部１１５と外部データ出力部１１６の間でデータ転送するＤＭＡコントローラ１１３を設けている。
【００３４】
また、画像符号化装置１００は、ホストＣＰＵバス１２４から量子化テーブルアドレス１１１とハフマン定義テーブルアドレス１１２とＪＰＥＧエンコーダパラメータテーブル１１０が書き込まれるパラメータメモリ１０９、画像データと符号データと量子化テーブルとハフマン定義テーブルの書き込み読み出しが可能なＳＤＲＡＭ１１７を設けている。
【００３５】
ＳＤＲＡＭ１１７は、画像データを一時的に記憶する画像バッファ１１９と符号データを一時的に記憶する符号バッファ１２０、ホストＣＰＵバス１２４から書き込まれる複数の量子化テーブル１２１と複数のハフマン定義テーブル１２２からなる。
【００３６】
また、画像符号化装置１００は、ホストＣＰＵバス１２４を介して外部ホストＣＰＵ１２３により制御される。
【００３７】
これによれば、画像データと符号データを一時的に記憶するＳＤＲＡＭ１１７上に多数の量子化テーブル１２１とハフマン定義テーブル１２２を記憶させる事ができ、パラメータメモリ１０９の容量制限に関係なく、ユーザ独自の設定テーブル（量子化テーブル１２１とハフマン定義テーブル１２２）の数を増やす事ができる。
【００３８】
図２は、本実施の形態に係る画像符号化装置の動作を示すフロー図である。
【００３９】
外部ホストＣＰＵ１２３は、画像符号化装置１００がコマンド発行待ち（ＳＴ２０１）の時に、パラメータメモリ１０９のＪＰＥＧエンコーダパラメータテーブル１１０にＪＰＥＧエンコーダ１１４を動作させるのに必要なパラメータ値を書き込み、またＳＤＲＡＭ１１７上で使用する量子化テーブル１２１とハフマン定義テーブル１２２の先頭アドレスを各々量子化テーブルアドレス１１１とハフマン定義テーブルアドレス１１２に設定する。
【００４０】
外部ホストＣＰＵ１２３からコマンドレジスタ１０７にコマンドコードが書き込まれると、ローカル制御ＣＰＵ１０１に内部割り込みが発生し、コマンド発行状態となる（ＳＴ２０１）。すると、ローカル制御ＣＰＵ１０１は、コマンドコードが初期化コマンドでなく（ＳＴ２０２）、符号化コマンドでない（ＳＴ２０６）場合は、コマンドエラーコード（通知）をステータスレジスタ１０８に設定して外部割り込みを発生し（ＳＴ２１３）、コマンド待ち状態（ＳＴ２０１）にもどる。
【００４１】
ここで外部ホストＣＰＵ１２３は、初期化コマンドコードをコマンドレジスタ１０７に書き込む。
【００４２】
ローカル制御ＣＰＵ１０１は、コマンドコードが初期化コマンドの場合（ＳＴ２０２）、ＪＰＥＧエンコーダ１１４の内部レジスタにＪＰＥＧエンコーダパラメータテーブル１１０の内容を設定し（ＳＴ２０３）、パラメータメモリ１０９上の量子化テーブルアドレス１１１を先頭アドレスとするＳＤＲＡＭ１１７上の量子化テーブル１２１にＲＯＭ１０２上の量子化テーブルデフォルト値１０４を書き込み（ＳＴ２０４）、パラメータメモリ１０９上のハフマン定義テーブルアドレス１１２を先頭アドレスとするＳＤＲＡＭ１１７上のハフマン定義テーブル１２２にＲＯＭ１０２上のハフマン定義テーブルデフォルト値１０５を書き込み（ＳＴ２０５）、コマンド正常終了コード（通知）をステータスレジスタ１０８に設定して外部割り込みを発生し（ＳＴ２１４）、コマンド待ち状態（ＳＴ２０１）にもどる。
【００４３】
ここで、量子化テーブル１２１及びハフマン定義テーブル１２２をユーザ独自のデータに変更する場合は、外部ホストＣＰＵ１２３は、パラメータメモリ１０９上の量子化テーブルアドレス１１１とハフマン定義テーブルアドレス１１２で示されるＳＤＲＡＭ１１７上の量子化テーブル１２１とハフマン定義テーブル１２２へ独自テーブルのデータを書き込む。
【００４４】
または、事前に独自の量子化テーブル１２１及びハフマン定義テーブル１２２がＳＤＲＡＭ１１７上に書き込まれている場合は、そのアドレスをパラメータメモリ１０９上の量子化テーブルアドレス１１１とハフマン定義テーブルアドレス１１２に設定する。
【００４５】
多数の独自テーブルのデータを切り替えて設定したい場合は、事前に多数の独自テーブルをＳＤＲＡＭ１１７上に設定しておく事により、上述した量子化テーブルアドレス１１１とハフマン定義テーブルアドレス１１２の設定を書き換える方法により、その都度独自テーブルのデータを書き込む必要は無く、外部ホストＣＰＵ１２３は短時間でテーブル変更ができる。
【００４６】
また、デフォルトの量子化テーブル１２１とハフマン定義テーブル１２２を使用する場合は、ホストＣＰＵ１２３は、上記の設置処理を行わない。
【００４７】
次に、外部ホストＣＰＵ１２３は、符号化コマンドコードをコマンドレジスタ１０７へ書き込む。
【００４８】
コマンドコードが符号化コマンドの場合（ＳＴ２０６）、ローカル制御ＣＰＵ１０１は、量子化テーブル検証サブプログラムを実行し（ＳＴ２０７）、次にハフマン定義テーブル検証サブプログラムを実行し（ＳＴ２０８）、その上記２つの検証結果に１つでもテーブルエラーがある場合（ＳＴ２０９）、テーブルエラー状態を示すコード（テーブルエラー終了通知）をステータスレジスタ１０８に書き込み外部割り込みを発生し（ＳＴ２１５）、コマンド待ち状態（ＳＴ２０１）に戻る。
【００４９】
ローカル制御ＣＰＵ１０１は、上記２つの検証結果にテーブルエラーが無い場合（ＳＴ２０９）、パラメータメモリ１０９上の量子化テーブルアドレス１１１を先頭アドレスとするＳＤＲＡＭ１１７上の量子化テーブル１２１のデータをＪＰＥＧエンコーダ１１４内のレジスタに書き込むことで設定し（ＳＴ２１０）、次にパラメータメモリ１０９上のハフマン定義テーブルアドレス１１２を先頭アドレスとするＳＤＲＡＭ１１７上のハフマン定義テーブル１２２のデータをＪＰＥＧエンコーダ１１４内のレジスタに書き込むことで設定し（ＳＴ２１１）、１ページの符号化処理を実行し（ＳＴ２１２）、コマンド正常終了コード（通知）をステータスレジスタ１０８に設定して外部割り込みを発生し（ＳＴ２１４）、コマンド待ち状態（ＳＴ２１１）にもどる。
【００５０】
上記の１ページの符号化処理（ＳＴ２１２）では、ローカル制御ＣＰＵ１０１は、ＤＭＡコントローラ１１３を制御してホストイメージバス１２５から外部データ入力部１１５を介して画像データをＳＤＲＡＭ１１７上の画像バッファ１１９に転送し、所定の画像データ量が貯まった所でその画像データをＪＰＥＧエンコーダ１１４に転送し、符号化処理により生成された符号データをＳＤＲＡＭ１１７上の符号バッファ１２０に転送し、所定の符号データ量が貯まった所でその符号データを外部データ出力部１１６へ転送し、ホストイメージバス１２５へ出力する。
【００５１】
ローカル制御ＣＰＵ１０１は、１ページの符号化処理が終了するまで上記の画像データ入力から符号データ出力までの処理を繰り返す。
【００５２】
これによれば、ＪＰＥＧエンコーダ１１４で符号化処理する前にハフマン定義テーブル１２２の値と量子化テーブル１２１の値にエラーが有る事が分るので、テーブルの誤った設定による符号処理途中でのエラー発生または動作停止の発生を防ぐことができる。
【００５３】
図３は、量子化テーブル検証サブプログラム（ＳＴ２０７）の動作を示すフロー図である。
【００５４】
量子化テーブル１２１には、図４に示す様にＬＵＭＩＮＡＮＣＥ係数とＣＨＲＯＭＩＮＡＮＣＥ係数があり、各々６４係数からなる。
【００５５】
ローカル制御ＣＰＵ１０１は、パラメータメモリ１０９の量子化テーブルアドレス１１１のアドレス値を参照し、ＳＤＲＡＭ１１７上の量子化テーブル１２１からＬＵＭＩＮＡＮＣＥ係数部のテーブルデータＱＴ＿ＬＤＬ（ｉ）（ｉ＝１〜６４）を読み出し、配列ＱＴＤＡＴ（ｉ）（ｉ＝１〜６４）に代入し（ＳＴ３０１）、配列ＱＴＤＡＴ（ｉ）の内容をＱＴ＿ＣＨＥＣＫサブプログラムで検証し（ＳＴ３０２）、エラーが有った場合は（ＳＴ３０３）、ＥＲＲＯＲ有り状態フラグをセットし（ＳＴ３０７）処理を終了する。
【００５６】
また、エラーが無かった場合は（ＳＴ３０３）、ローカル制御ＣＰＵ１０１は、パラメータメモリ１０９の量子化テーブルアドレス１１１のアドレス値によりＳＤＲＡＭ１１７上の量子化テーブル１２１からＣＨＲＯＭＩＮＡＮＣＥ係数部のテーブルデータＱＴ＿ＣＤＬ（ｉ）（ｉ＝１〜６４）を読み出し配列ＱＴＤＡＴ（ｉ）（ｉ＝１〜６４）に代入し（ＳＴ３０４）、配列ＱＴＤＡＴ（ｉ）の内容をＱＴ＿ＣＨＥＣＫサブプログラムで検証する（ＳＴ３０５）。
【００５７】
ＳＴ３０５においてエラーが有った場合は（ＳＴ３０６）、ローカル制御ＣＰＵ１０１は、ＥＲＲＯＲ有り状態フラグをセットし（ＳＴ３０７）処理を終了し、エラーが無かった場合は（ＳＴ３０６）、ＥＲＲＯＲ無し状態フラグをセットし（ＳＴ３０８）処理を終了する。
【００５８】
図５は、ＱＴ＿ＣＨＥＣＫサブプログラム（ＳＴ３０２、ＳＴ３０５）の動作を示すフロー図である。
【００５９】
ローカル制御ＣＰＵ１０１は、変数ｉに１に設定する（ＳＴ４０１）。次に、ローカル制御ＣＰＵ１０１は、配列ＱＴ＿ＤＡＴ（ｉ）の値が２５５より大きい
ＱＴ＿ＤＡＴ（ｉ）＞２５５
となる場合（ＳＴ４０２）または、配列ＱＴ＿ＤＡＴ（ｉ）の値が０と等しい
ＱＴ＿ＤＡＴ（ｉ）＝＝０
となる場合（ＳＴ４０３）、エラー有り  ＥＲＲＯＲ＝１を返し（ＳＴ４０４）終了する。
【００６０】
また、ローカル制御ＣＰＵ１０１は、ローカル制御ＣＰＵ１０１は、配列ＱＴ＿ＤＡＴ（ｉ）の値が２５５より大きくない（ＳＴ４０２）、かつ配列ＱＴ＿ＤＡＴ（ｉ）の値が０と等しくない（ＳＴ４０３）の場合、変数ｉが６４以上でないか判断する（ＳＴ４０５）。ＳＴ４０５において変数ｉが６４以上でないと判断すると、ローカル制御ＣＰＵ１０１は、ｉを１インクリメントし（ＳＴ４０６）、ＳＴ４０２の処理に移行する。
【００６１】
そして、ローカル制御ＣＰＵ１０１は、配列ＱＴ＿ＤＡＴ（ｉ）のｉ＝１〜６４までの全ての値に対しＳＴ４０２とＳＴ４０３の検証を行い、全ての値でエラーとならない場合（ＳＴ４０５）、エラー無し  ＥＲＲＯＲ＝０を返し（ＳＴ４０７）終了する。
【００６２】
図３、図５に示す様に、参照した量子化テーブル１２１の各値が所定の範囲で有るかを検証する簡単な演算だけなので、量子化テーブル１２１を高速に完全な方法で検証することができる。
【００６３】
尚、図５では、量子化テーブルの値が０の場合と２５５以上の場合をエラーとし量子化テーブルの取りうる範囲を単純に１〜２５５としたが、量子化係数が０に近い場合は符号データ量が大きくなり、また２５５に近い場合は画質の劣化が発生するので、その点を考慮し下限値を０よりもう少し大きな値、上限値を２５５よりもう少し小さな値に制限する方法も考えられる。
【００６４】
図６は、ハフマン定義テーブル検証サブプログラム（ＳＴ２０８）の第１の例の動作を示すフロー図である。
【００６５】
ハフマン定義テーブル１２２は、図７に示す様にＬＵＭＩＮＡＮＣＥのＤＣ符号化用とＬＵＭＩＮＡＮＣＥのＡＣ符号化用とＣＨＲＯＭＩＮＡＮＣＥのＤＣ符号化用とＣＨＲＯＭＩＮＡＮＣＥのＡＣ符号化用の４通りがあり、一つのハフマン定義テーブル１２２は、符号長毎の語数を設定した語数テーブル（ＢＩＴＳ）と定義毎に割付られた値を設定した値テーブル（ＨＵＦＦＶＡＬ）の２つのテーブルで定義される。
【００６６】
従って、ハフマン定義テーブル検証は、上記４通りの語数テーブル（ＢＩＴＳ）と値テーブル（ＨＵＦＦＶＡＬ）を検証するものである。
【００６７】
まず、ローカル制御ＣＰＵ１０１はパラメータメモリ１０９のハフマン定義テーブルアドレス１１２のアドレス値を参照し、ＳＤＲＡＭ１１７上のハフマン定義テーブル１２２からＬＵＭＩＮＡＮＣＥのＤＣ符号化用の語数テーブルＬＤ＿ＢＩＴＳの１６値を読み取り、配列ＨＡＦＤＡＴ（ｉ）（ｉ＝１〜１６）に代入し（ＳＴ５０１）、ＨＵＦＦＭＡＮチェックサムサブプログラムで検証し（ＳＴ５０２）、エラーが有った場合は（ＳＴ５０３）、ＥＲＲＯＲ有り状態フラグをセットし（ＳＴ５２５）、処理を終了する。
【００６８】
一方、エラーが無かった場合は（ＳＴ５０３）、ローカル制御ＣＰＵ１０１は、ＳＤＲＡＭ１１７上のハフマン定義テーブル１２２からＣＨＲＯＭＩＮＡＮＣＥのＤＣ符号化用の語数テーブルＣＤ＿ＢＩＴＳの１６値を読み取り、配列ＨＡＦＤＡＴ（ｉ）（ｉ＝１〜１６）に代入し（ＳＴ５０４）、ＨＵＦＦＭＡＮチェックサムサブプログラムで検証し（ＳＴ５０５）、エラーが有った場合は（ＳＴ５０６）、ＥＲＲＯＲ有り状態フラグをセットし（ＳＴ５２５）、処理を終了する。
【００６９】
エラーが無かった場合は（ＳＴ５０６）、ローカル制御ＣＰＵ１０１は、ＳＤＲＡＭ１１７上のハフマン定義テーブル１２２からＬＵＭＩＮＡＮＣＥのＡＣ符号化用の語数テーブルＬＡ＿ＢＩＴＳの１６値を読み取り、配列ＨＡＦＤＡＴ（ｉ）（ｉ＝１〜１６）に代入し（ＳＴ５０７）、ＨＵＦＦＭＡＮチェックサムサブプログラムで検証し（ＳＴ５０８）、エラーが有った場合は（ＳＴ５０９）、ＥＲＲＯＲ有り状態フラグをセットし（ＳＴ５２５）処理を終了する。
【００７０】
エラーが無かった場合は（ＳＴ５０９）、ローカル制御ＣＰＵ１０１は、ＳＤＲＡＭ１１７上のハフマン定義テーブル１２２からＣＨＲＯＭＩＮＡＮＣＥのＡＣ符号化用の語数テーブルＣＡ＿ＢＩＴＳの１６値を読み取り、配列ＨＡＦＤＡＴ（ｉ）（ｉ＝１〜１６）に代入し（ＳＴ５１０）、ＨＵＦＦＭＡＮチェックサムサブプログラムで検証し（ＳＴ５１１）、エラーが有った場合は（ＳＴ５１２）、ＥＲＲＯＲ有り状態フラグをセットし（ＳＴ５２５）、処理を終了する。
【００７１】
エラーが無かった場合は（ＳＴ５１２）、ローカル制御ＣＰＵ１０１は、ＳＤＲＡＭ１１７上のハフマン定義テーブル１２２からＬＵＭＩＮＡＮＣＥのＤＣ符号化用の値テーブルＬＤ＿ＨＵＦＦＶＡＬの１２値を読み取り、配列ＨＡＦＤＡＴ（ｉ）（ｉ＝１〜１２）に代入し（ＳＴ５１３）、ＨＵＦＦＭＡＮチェックサムサブプログラムで検証し（ＳＴ５１４）、エラーが有った場合は（ＳＴ５１５）、ＥＲＲＯＲ有り状態フラグをセットし（ＳＴ５２５）、処理を終了する。
【００７２】
エラーが無かった場合は（ＳＴ５１５）、ローカル制御ＣＰＵ１０１は、ＳＤＲＡＭ１１７上のハフマン定義テーブル１２２からＣＨＲＯＭＩＮＡＮＣＥのＤＣ符号化用の値テーブルＣＤ＿ＨＵＦＦＶＡＬの１２値を読み取り、配列ＨＡＦＤＡＴ（ｉ）（ｉ＝１〜１２）に代入し（ＳＴ５１６）、ＨＵＦＦＭＡＮチェックサムサブプログラムで検証し（ＳＴ５１７）、エラーが有った場合は（ＳＴ５１８）、ＥＲＲＯＲ有り状態フラグをセットし（ＳＴ５２５）、処理を終了する。
【００７３】
エラーが無かった場合は（ＳＴ５１８）、ローカル制御ＣＰＵ１０１はＳＤＲＡＭ１１７上のハフマン定義テーブル１２２からＬＵＭＩＮＡＮＣＥのＡＣ符号化用の値テーブルＬＡ＿ＨＵＦＦＶＡＬの１６２値を読み取り、配列ＨＡＦＤＡＴ（ｉ）（ｉ＝１〜１６２）に代入し（ＳＴ５１９）、ＨＵＦＦＭＡＮチェックサムサブプログラムで検証し（ＳＴ５２０）、エラーが有った場合は（ＳＴ５２１）、ＥＲＲＯＲ有り状態フラグをセットし（ＳＴ５２５）、処理を終了する。
【００７４】
エラーが無かった場合は（ＳＴ５２１）、ローカル制御ＣＰＵ１０１はＳＤＲＡＭ１１７上のハフマン定義テーブル１２２からＣＨＲＯＭＩＮＡＮＣＥのＡＣ符号化用の値テーブルＣＡ＿ＨＵＦＦＶＡＬの１６２値を読み取り、配列ＨＡＦＤＡＴ（ｉ）（ｉ＝１〜１６２）に代入し（ＳＴ５２２）、ＨＵＦＦＭＡＮチェックサムサブプログラムで検証し（ＳＴ５２３）、エラーが有った場合は（ＳＴ５２４）、ＥＲＲＯＲ有り状態フラグをセットし（ＳＴ５２５）、エラーが無かった場合は（ＳＴ５２４）、ＥＲＲＯＲ無し状態フラグをセットし（ＳＴ５２６）、処理を終了する。
【００７５】
図８は、ＨＵＦＦＭＡＮチェックサムサブプログラム（ＳＴ５０２、ＳＴ５０５、ＳＴ５０８、ＳＴ５１１、ＳＴ５１４、ＳＴ５１７、ＳＴ５２０、ＳＴ５２３）の動作を示すフロー図である。
【００７６】
まず、ローカル制御ＣＰＵ１０１は、変数ｉ、ＳＵＭ、ＥＲＲＯＲを０にセットする（ＳＴ６０１）。
【００７７】
次に、ローカル制御ＣＰＵ１０１は、チェックサム検証するデータが、ＤＣ符号化用かＡＣ符号化用のどちらかと（ＳＴ６０２）、語数テーブルＢＩＴＳか値テーブルＨＵＦＦＶＡＬのどちらかを判定し（ＳＴ６０３、ＳＴ６０４）、ＤＣ符号化用の語数テーブルＢＩＴＳである場合は、検証データ数：ＩＭＡＸ＝１６、総和の真値：ＴＳＵＭ＝１２とし（ＳＴ６０５）、配列ＨＡＦＤＡＴ（ｉ）のｉ＝１〜１６までの総和が（ＳＴ６０９、ＳＴ６１０）、総和の真値：ＴＳＵＭ＝１２と一致しない場合（ＳＴ６１１）、エラー有りＥＲＲＯＲ＝１を返し（ＳＴ６１２）終了し、一致する場合（ＳＴ６１１）、エラー無しＥＲＲＯＲ＝０を返し（ＳＴ６１３）終了する。
【００７８】
ローカル制御ＣＰＵ１０１は、ＤＣ符号化用の値テーブルＨＵＦＦＶＡＬである場合は（ＳＴ６０２、ＳＴ６０３）、検証データ数：ＩＭＡＸ＝１２、総和の真値：ＴＳＵＭ＝６６とし（ＳＴ６０６）、配列ＨＡＦＤＡＴ（ｉ）のｉ＝１〜１２までの総和が（ＳＴ６０９、ＳＴ６１０）、総和の真値：ＴＳＵＭ＝６６と一致しない場合（ＳＴ６１１）、エラー有りＥＲＲＯＲ＝１を返し（ＳＴ６１２）終了し、一致する場合（ＳＴ６１１）、エラー無しＥＲＲＯＲ＝０を返し（ＳＴ６１３）終了する。
【００７９】
ローカル制御ＣＰＵ１０１は、ＡＣ符号化用の語数テーブルＢＩＴＳである場合は（ＳＴ６０２、ＳＴ６０４）、検証データ数：ＩＭＡＸ＝１６、総和の真値：ＴＳＵＭ＝１６２とし（ＳＴ６０７）、配列ＨＡＦＤＡＴ（ｉ）のｉ＝１〜１６までの総和が（ＳＴ６０９、ＳＴ６１０）、総和の真値：ＴＳＵＭ＝１６２と一致しない場合（ＳＴ６１１）、エラー有りＥＲＲＯＲ＝１を返し（ＳＴ６１２）終了し、一致する場合（ＳＴ６１１）、エラー無しＥＲＲＯＲ＝０を返し（ＳＴ６１３）終了する。
【００８０】
ローカル制御ＣＰＵ１０１は、ＡＣ符号化用の値テーブルＨＵＦＦＶＡＬである場合は（ＳＴ６０２、ＳＴ６０４）、検証データ数：ＩＭＡＸ＝１６２、総和の真値：ＴＳＵＭ＝２０３２０とし（ＳＴ６０８）、配列ＨＡＦＤＡＴ（ｉ）のｉ＝１〜１６２までの総和が（ＳＴ６０９、ＳＴ６１０）、総和の真値：ＴＳＵＭ＝２０３２０と一致しない場合（ＳＴ６１１）、エラー有りＥＲＲＯＲ＝１を返し（ＳＴ６１２）終了し、一致する場合（ＳＴ６１１）、エラー無しＥＲＲＯＲ＝０を返し（ＳＴ６１３）終了する。
【００８１】
図６、図８に示す様に、ハフマン定義テーブルの各テーブルの値の総和を演算するだけなので、極めて高速に簡易に検証することができる。
【００８２】
図９は、ハフマン定義テーブル検証サブプログラム（ＳＴ２０８）の第２の実施例の動作を示すフロー図である。
【００８３】
まず、ローカル制御ＣＰＵ１０１はパラメータメモリ１０９のハフマン定義テーブルアドレス１１２のアドレス値を参照し、ＳＤＲＡＭ１１７上のハフマン定義テーブル１２２からＬＵＭＩＮＡＮＣＥのＤＣ符号化用の語数テーブルＬＤ＿ＢＩＴＳの１６値を読み取り、配列ＢＩＴＳ（ｉ）（ｉ＝１〜１６）に代入し（ＳＴ７０１）、語数テーブルＢＩＴＳ検証サブプログラムで検証し（ＳＴ７０２）、エラーが有った場合は（ＳＴ７０３）、ＥＲＲＯＲ有り状態フラグをセットし（ＳＴ７２５）、処理を終了する。
【００８４】
エラーが無かった場合は（ＳＴ７０３）、ローカル制御ＣＰＵ１０１はＳＤＲＡＭ１１７上のハフマン定義テーブル１２２からＣＨＲＯＭＩＮＡＮＣＥのＤＣ符号化用の語数テーブルＣＤ＿ＢＩＴＳの１６値を読み取り、配列ＢＩＴＳ（ｉ）（ｉ＝１〜１６）に代入し（ＳＴ７０４）、語数テーブルＢＩＴＳ検証サブプログラムで検証し（ＳＴ７０５）、エラーが有った場合は（ＳＴ７０６）、ＥＲＲＯＲ有り状態フラグをセットし（ＳＴ７２５）、処理を終了する。
【００８５】
エラーが無かった場合は（ＳＴ７０６）、ローカル制御ＣＰＵ１０１は、ＳＤＲＡＭ１１７上のハフマン定義テーブル１２２からＬＵＭＩＮＡＮＣＥのＡＣ符号化用の語数テーブルＬＡ＿ＢＩＴＳの１６値を読み取り、配列ＢＩＴＳ（ｉ）（ｉ＝１〜１６）に代入し（ＳＴ７０７）、語数テーブルＢＩＴＳ検証サブプログラムで検証し（ＳＴ７０８）、エラーが有った場合は（ＳＴ７０９）、ＥＲＲＯＲ有り状態フラグをセットし（ＳＴ７２５）、処理を終了する。
【００８６】
エラーが無かった場合は（ＳＴ７０９）、ローカル制御ＣＰＵ１０１は、ＳＤＲＡＭ１１７上のハフマン定義テーブル１２２からＣＨＲＯＭＩＮＡＮＣＥのＡＣ符号化用の語数テーブルＣＡ＿ＢＩＴＳの１６値を読み取り、配列ＢＩＴＳ（ｉ）（ｉ＝１〜１６）に代入し（ＳＴ７１０）、語数テーブルＢＩＴＳ検証サブプログラムで検証し（ＳＴ７１１）、エラーが有った場合は（ＳＴ７１２）、ＥＲＲＯＲ有り状態フラグをセットし（ＳＴ７２５）、処理を終了する。
【００８７】
エラーが無かった場合は（ＳＴ７１２）、ローカル制御ＣＰＵ１０１は、ＳＤＲＡＭ１１７上のハフマン定義テーブル１２２からＬＵＭＩＮＡＮＣＥのＤＣ符号化用の値テーブルＬＤ＿ＨＵＦＦＶＡＬの１２値を読み取り、配列ＨＶＡＬ（ｉ）（ｉ＝１〜１２）に代入し（ＳＴ７１３）、ＤＣ用の値テーブルＨＵＦＦＶＡＬ検証サブプログラムで検証し（ＳＴ７１４）、エラーが有った場合は（ＳＴ７１５）、ＥＲＲＯＲ有り状態フラグをセットし（ＳＴ７２５）処理を終了する。
【００８８】
エラーが無かった場合は（ＳＴ７１５）、ローカル制御ＣＰＵ１０１は、ＳＤＲＡＭ１１７上のハフマン定義テーブル１２２からＣＨＲＯＭＩＮＡＮＣＥのＤＣ符号化用の値テーブルＣＤ＿ＨＵＦＦＶＡＬの１２値を読み取り、配列ＨＶＡＬ（ｉ）（ｉ＝１〜１２）に代入し（ＳＴ７１６）、ＤＣ用の値テーブルＨＵＦＦＶＡＬ検証サブプログラムで検証し（ＳＴ７１７）、エラーが有った場合は（ＳＴ７１８）、ＥＲＲＯＲ有り状態フラグをセットし（ＳＴ７２５）、処理を終了する。
【００８９】
エラーが無かった場合は（ＳＴ７１８）、ローカル制御ＣＰＵ１０１は、ＳＤＲＡＭ１１７上のハフマン定義テーブル１２２からＬＵＭＩＮＡＮＣＥのＡＣ符号化用の値テーブルＬＡ＿ＨＵＦＦＶＡＬの１６２値を読み取り、配列ＨＶＡＬ（ｉ）（ｉ＝１〜１６２）に代入し（ＳＴ７１９）、ＡＣ用の値テーブルＨＵＦＦＶＡＬ検証サブプログラムで検証し（ＳＴ７２０）、エラーが有った場合は（ＳＴ７２１）、ＥＲＲＯＲ有り状態フラグをセットし（ＳＴ７２５）処理を終了する。
【００９０】
エラーが無かった場合は（ＳＴ７２１）、ローカル制御ＣＰＵ１０１はＳＤＲＡＭ１１７上のハフマン定義テーブル１２２からＣＨＲＯＭＩＮＡＮＣＥのＡＣ符号化用の値テーブルＣＡ＿ＨＵＦＦＶＡＬの１６２値を読み取り、配列ＨＶＡＬ（ｉ）（ｉ＝１〜１６２）に代入し（ＳＴ７２２）、ＡＣ用の値テーブルＨＵＦＦＶＡＬ検証サブプログラムで検証し（ＳＴ７２３）、エラーが有った場合は（ＳＴ７２４）、ＥＲＲＯＲ有り状態フラグをセットし（ＳＴ７２５）、エラーが無かった場合は（ＳＴ７２４）、ＥＲＲＯＲ無し状態フラグをセットし（ＳＴ７２６）処理を終了する。
【００９１】
図１０は、ハフマン定義テーブルの語数テーブルＢＩＴＳ検証サブプログラム（ＳＴ７０２、ＳＴ７０５、ＳＴ７０８、ＳＴ７１１）の動作を示すフロー図である。
【００９２】
ローカル制御ＣＰＵ１０１は、符号長ｉの初期値を１、符号長が１ビットの時の最初コード値ＣＯＤＥ（１）を０とし（ＳＴ８０１）、符号長がｉビットの場合の取りうる最大語数ＭＡＸ（ｉ）を符号長がｉビットの最初のコード値から求め、
ＭＡＸ（ｉ）＝ＰＯＷ（２，ｉ）−ＣＯＤＥ（ｉ）−１
とし（ＳＴ８０２）、
符号長ｉビットの語数テーブルの値ＢＩＴＳ（ｉ）と符号長ｉビットの最初コード値ＣＯＤＥ（ｉ）から符号長がｉ＋１ビットの最初のコード値ＣＯＤＥ（ｉ＋１）を求め、
ＣＯＤＥ（ｉ＋１）＝（ＣＯＤＥ（ｉ）＋ＢＩＴＳ（ｉ））＊２
とし（ＳＴ８０３）、
（ＳＴ８０２）で求めた最大語数ＭＡＸ（ｉ）と符号長ｉビットの語数テーブルの値ＢＩＴＳ（ｉ）を比較し、語数テーブルの値ＢＩＴＳ（ｉ）が大きい場合、
ＢＩＴＳ（ｉ）＞ＭＡＸ（ｉ）
が成り立つ場合は（ＳＴ８０４）、エラー有りＥＲＲＯＲ＝１を返し（ＳＴ８０８）終了し、
ＢＩＴＳ（ｉ）＞ＭＡＸ（ｉ）
が成り立たない場合は（ＳＴ８０４）で、符号長ビット数が１６より小さい場合は（ＳＴ８０５）、符号長ビット数ｉに１を加え（ＳＴ８０６）、ＳＴ８０２の処理へ戻り、符号長ビット数が１６になるまでＳＴ８０２〜ＳＴ８０５の処理を繰り返し、符号長ビット数が１６以上の場合は（ＳＴ８０５）、エラー無しＥＲＲＯＲ＝０を返し（ＳＴ８０７）、終了する。
【００９３】
この様にハフマン符号の符号長毎に最大語数を求め、語数テーブルと比較する事により、Ｔ．８１の勧告書のＡｎｎｅｘＣ項記載の複雑な手順でハフマン符号テーブルに変換することなく、ハフマン定義テーブルの語数テーブルの完全な検証を、より少ないステップ数で行う事ができマイクロプログラムによる検証時間を短縮できる。
【００９４】
図１１は、ハフマン定義テーブルのＤＣ符号用の値テーブルＨＵＦＦＶＡＬ検証サブプログラム（ＳＴ７１４、ＳＴ７１７）の動作を示すフロー図である。
【００９５】
ローカル制御ＣＰＵ１０１は、ｉ＝０から１１までの配列ＣＨＶＡＬ（ｉ）を０に初期化し（ＳＴ９０１、ＳＴ９０２、ＳＴ９０３、ＳＴ９０４）、シンボル番号ｋの初期値を１とし（ｋ＝１）（ＳＴ９０５）、シンボル番号ｋの値テーブルＨＵＦＦＶＡＬ（ｋ）を値番号ｉに代入し（ｉ＝ＨＶＡＬ（ｋ））（ＳＴ９０６）、ｉが１１より大きい場合（ｉ＞１１）が成り立つ場合（ＳＴ９０７）、または配列ＣＨＶＡＬ（ｉ）が１の場合（ＣＨＶＡＬ（ｉ）＝＝１）が成り立つ場合（ＳＴ９０８）、エラー有りＥＲＲＯＲ＝１を返し（ＳＴ９１２）終了する。
【００９６】
（ＳＴ９０７）と（ＳＴ９０８）の条件が共に成り立たない場合、ローカル制御ＣＰＵ１０１は、配列ＣＨＶＡＬ（ｉ）に１を代入し（ＳＴ９０９）、シンボル番号ｋが１２に達するまで（ＳＴ９１０）シンボル番号kに１を加えて（ＳＴ９１１）、ＳＴ９０６の処理へ戻りＳＴ９０６〜ＳＴ９１０の処理を繰り返えし、シンボル番号ｋが１２以上に達した場合（ＳＴ９１０）、エラー無しＥＲＲＯＲ＝０を返し（ＳＴ９１３）終了する。
【００９７】
図１２は、ハフマン定義テーブルのＡＣ符号用の値テーブルＨＵＦＦＶＡＬ検証サブプログラム（ＳＴ７２０、ＳＴ７２３）の動作を示すフロー図である。
【００９８】
ローカル制御ＣＰＵ１０１は、ｉ＝０から２５０までの配列ＣＨＶＡＬ（ｉ）を０に初期化し（ＳＴ１００１、ＳＴ１００２、ＳＴ１００３、ＳＴ１００４）、シンボル番号ｋの初期値を１とし（ｋ＝１）（ＳＴ１００５）、シンボル番号ｋの値テーブルＨＵＦＦＶＡＬ（ｋ）を値番号ｊに代入し、ｊを１６で割った余りの値をｉに代入し（ｊ＝ＨＶＡＬ（ｋ）（ｉ＝ｊ％１６）（ＳＴ１００６）、ｊが２５０より大きい場合（ｊ＞２５０）（ＳＴ１００７）はエラー有りＥＲＲＯＲ＝１を返し（ＳＴ１０１７）、終了する。
【００９９】
また、ｊが２５０以下で（ＳＴ１００７）かつｊが０でなく（ｊ！＝０）（ＳＴ１００８）かつｊが２４０でなく（ｊ！＝２４０）（ＳＴ１００９）かつｉが１０より大きい場合（ｉ＞１０）（ＳＴ１０１０）は、ローカル制御ＣＰＵ１０１は、エラー有りＥＲＲＯＲ＝１を返し（ＳＴ１０１７）終了する。
【０１００】
また、ＳＴ１０１０でｉが１０以下でかつｉが０と等しい場合（ｉ＝＝０）（ＳＴ１０１１）、ローカル制御ＣＰＵ１０１は、エラー有りＥＲＲＯＲ＝１を返し（ＳＴ１０１７）終了する。
【０１０１】
ｊとｉの値がＳＴ１００８〜ＳＴ１０１１の条件以外の場合で、配列ＣＨＶＡＬ（ｊ）の値が１と等しい場合（ＣＨＶＡＬ＝＝１）（ＳＴ１０１２）、ローカル制御ＣＰＵ１０１は、エラー有りＥＲＲＯＲ＝１を返し（ＳＴ１０１７）終了する。
【０１０２】
配列ＣＨＶＡＬ（ｊ）の値が１以外の場合（ＳＴ１０１３）、ローカル制御ＣＰＵ１０１は、シンボル番号ｋが１６２に達するまで（ＳＴ１０１４）シンボル番号ｋに１を加えて（ＳＴ１０１５）、ＳＴ１００６の処理へ戻り、ＳＴ１００６〜ＳＴ１０１４の処理を繰り返えし、シンボル番号ｋが１６２以上に達した場合（ＳＴ１０１４）、エラー無しＥＲＲＯＲ＝０を返し（ＳＴ１０１６）、終了する。
【０１０３】
図１１、図１２の様に、ハフマン符号毎に割付られた値を設定した値テーブルを参照し、参照した各値が所定の範囲で有るかを検証し範囲外の値の場合はハフマン定義テーブルエラーとし、または割付られた値を設定した値テーブルに同じ値が２つ以上存在する場合はハフマン定義テーブルエラーとする事により、Ｔ．８１の勧告書のＡｎｎｅｘＣ項記載の複雑な手順でハフマン符号テーブルに変換することなく、ハフマン定義テーブルの符号毎に割付られた値を設定した値テーブルの完全な検証を、少ないステップ数で行う事ができマイクロプログラムによる検証時間を短縮できる。
【０１０４】
以上説明したように、本実施の形態によれば、簡単な方法でユーザが独自設定したハフマン定義テーブルと量子化テーブルを事前検証する事により、テーブルに誤った設定を行った場合でも、符号処理途中でのエラー発生または動作停止が発生しないようにできる。
【産業上の利用可能性】
【０１０５】
本発明に係る画像符号化装置によれば、ユーザが独自設定したハフマン定義テーブルと量子化テーブルを事前検証する事により、テーブルの誤設定による符号処理途中でのエラー発生または動作停止が発生する事のない、画像符号化装置を提供することができる。
【０１０６】
また、Ｔ．８１の勧告書のＡｎｎｅｘＣ項記載の複雑な手順でハフマン符号テーブルに変換することなく、ハフマン定義テーブルの完全な検証を、少ないステップ数で行う事ができ検証時間を短縮できる。
【図面の簡単な説明】
【０１０７】
【図１】本発明の一実施の形態に係る画像符号化装置の構成を示すブロック図
【図２】上記実施の形態に係る画像符号化装置の動作を示すフロー図
【図３】上記実施の形態に係る量子化テーブル検証サブプログラムの動作を示すフロー図
【図４】上記実施の形態に係る量子化テーブルの構成図
【図５】上記実施の形態に係るＱＴ＿ＣＨＥＣＫサブプログラムの動作を示すフロー図
【図６】上記実施の形態に係るハフマン定義テーブル検証サブプログラムの第１例の動作を示すフロー図
【図７】上記実施の形態に係るハフマン定義テーブルの構成図
【図８】上記実施の形態に係るＨＵＦＦＭＡＮチェックサムサブプログラムの動作を示すフロー図
【図９】上記実施の形態に係るハフマン定義テーブル検証サブプログラムの第２の例の動作を示すフロー図
【図１０】上記実施の形態に係るハフマン定義テーブルの語数テーブルＢＩＴＳ検証サブプログラムの動作を示すフロー図
【図１１】上記実施の形態に係るハフマン定義テーブルのＤＣ符号用の値テーブルＨＵＦＦＶＡＬ検証サブプログラムの動作を示すフロー図
【図１２】上記実施の形態に係るハフマン定義テーブルのＡＣ符号用の値テーブルＨＵＦＦＶＡＬ検証サブプログラムの動作を示すフロー図
【符号の説明】
【０１０８】
１００  画像符号化装置
１０１  ローカル制御ＣＰＵ
１０２  ＲＯＭ
１０３  μプログラム
１０４  量子化テーブルデフォルト値
１０５  ハフマン定義テーブルデフォルト値
１０６  外部バス制御部
１０７  コマンドレジスタ
１０８  ステータスレジスタ
１０９  パラメータメモリ
１１０  ＪＰＥＧエンコーダパラメータテーブル
１１１  量子化テーブルアドレス
１１２  ハフマン定義テーブルアドレス
１１３  ＤＭＡコントローラ
１１４  ＪＰＥＧエンコーダ
１１５  外部データ入力部
１１６  外部データ出力部
１１７  ＳＤＲＡＭ
１１８  内部バス
１１９  画像バッファ
１２０  符号バッファ
１２１  量子化テーブル
１２２  ハフマン定義テーブル
１２３  外部ホストＣＰＵ
１２４  ホストＣＰＵバス
１２５  ホストイメージバス
【図１】
2006109259.tif 000003
【図２】
2006109259.tif 000004
【図３】
2006109259.tif 000005
【図４】
2006109259.tif 000006
【図５】
2006109259.tif 000007
【図６】
2006109259.tif 000008
【図７】
2006109259.tif 000009
【図８】
2006109259.tif 000010
【図９】
2006109259.tif 000011
【図１０】
2006109259.tif 000012
【図１１】
2006109259.tif 000013
【図１２】
2006109259.tif 000014