(57)【要約】【課題】データを画像にデコードするデコーダーを検証するために適切な符号化データを生成すること。【解決手段】符号化に関する制約情報５に基づいて検証用符号化データ６を生成する検証部１を備えている。検証用符号化データ６がデコードされた期待値画像８は、検証対象２により検証用符号化データ６からデコードされた結果画像７と比較される。すなわち、ユーザは、結果画像７を期待値画像８に比較することにより、検証対象２が検証用符号化データ６を適切にデコードしたかどうかを検証することができる。本発明によるデコーダー検証装置は、ユーザにより作成される制約情報５に応じた検証用符号化データ６を生成することができ、符号化データをデコードする検証対象２を検証するために適切な検証用符号化データ６を生成することができる。【選択図】図２
2010087949.tif 000002
【特許請求の範囲】
【請求項１】
符号化に関する制約情報に基づいて検証用符号化データを生成する検証部を具備し、
前記検証用符号化データがデコードされた期待値画像は、検証対象により前記検証用符号化データからデコードされた結果画像と比較される
デコーダー検証装置。
【請求項２】
請求項１において、
前記検証用符号化データは、ハフマン符号により表現される
デコーダー検証装置。
【請求項３】
請求項２において、
前記検証用符号化データは、勧告書ＩＳＯ／ＩＥＣ１０９１８−１で規定された符号化データフォーマットの範囲内で、マーカーセグメントの各パラメータの値振りがランダムであり、マーカーセグメントの生成順番がランダムであり、ハフマンテーブルの種類がランダムである
デコーダー検証装置。
【請求項４】
請求項２において、
前記検証部は、
全ての値が互いに等しい量子化テーブル要素から量子化テーブルマーカーセグメントを生成する量子化テーブル生成部と、
前記量子化テーブルマーカーセグメントに基づいて前記検証用符号化データを生成するフレーム生成部とを備える
デコーダー検証装置。
【請求項５】
請求項２において、
前記検証部は、
ランダムに生成される量子化テーブル要素から量子化テーブルマーカーセグメントを生成する量子化テーブルランダム生成部と、
前記量子化テーブルマーカーセグメントに基づいて前記検証用符号化データを生成するフレーム生成部とを備える
デコーダー検証装置。
【請求項６】
請求項２〜請求項５のいずれかにおいて、
前記符号化データをデコードして前記期待値画像を算出するリファレンス部
を更に具備するデコーダー検証装置。
【請求項７】
符号化に関する制約情報を作成するステップと、
前記制約情報に基づいて検証用符号化データを生成するステップと、
リファレンス部を用いて前記検証用符号化データをデコードして期待値画像を生成するステップと、
検証対象を用いて前記検証用符号化データをデコードして結果画像を生成するステップと、
前記結果画像を前記期待値画像と比較するステップ
とを具備するデコーダー検証方法。
【請求項８】
請求項７において、
前記検証用符号化データは、ハフマン符号により表現される
デコーダー検証方法。
【請求項９】
請求項８において、
前記検証用符号化データは、勧告書ＩＳＯ／ＩＥＣ１０９１８−１で規定された符号化データフォーマットの範囲内で、マーカーセグメントの各パラメータの値振りがランダムであり、マーカーセグメントの生成順番がランダムであり、ハフマンテーブルの種類がランダムである
デコーダー検証方法。
【請求項１０】
請求項８において、
全ての値が互いに等しい量子化テーブル要素から量子化テーブルマーカーセグメントを生成するステップと、
前記量子化テーブルマーカーセグメントに基づいて前記検証用符号化データを生成するステップ
とを更に具備するデコーダー検証方法。
【請求項１１】
請求項８において、
ランダムに生成される量子化テーブル要素から量子化テーブルマーカーセグメントを生成するステップと、
前記量子化テーブルマーカーセグメントに基づいて前記検証用符号化データを生成するステップ
とを更に具備するデコーダー検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デコーダー検証装置およびデコーダー検証方法に関し、特に、データを画像にデコードするデコーダを検証するときに利用されるデコーダー検証装置およびデコーダー検証方法に関する。
【背景技術】
【０００２】
静止画像を圧縮、伸長させるアルゴリズムが知られている。そのアルゴリズムのうちのＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）の勧告書（ＩＳＯ／ＩＥＣ１０９１８−１：１９９３（Ｅ））で規定されるＪＰＥＧ規格は、静止画像圧縮フォーマットとして広く普及し、デジタルスチルカメラ、デジタルビデオカメラ、携帯電話などで広く使われている。その静止画の圧縮伸長は、主に、このような機器に搭載されたハードウェア（たとえば、ＬＳＩ）により実行されている。そのハードウェアは、ＪＰＥＧ規格で定義されている事項を満足しているかどうかを検証する必要がある。
【０００３】
特開２００１−２３８２１２号公報には、ハフマン符号化などにより生成された可変長符号からなるデータをより高速に復号処理する可変長符号の符号化装置および復号化装置が開示されている。その画像データ符号化装置は、画像データを可変長符号に順次符号化する画像データ符号化装置であって、前記データ符号化装置からの出力データは復号に必要なマーカー情報と複数の可変長符号からなり、前記マーカー情報の種類を任意に選択できる手段を備えたことを特徴としている。
【０００４】
特開２００３−１７４６５０号公報には、回路規模がより小さく、様々な符号化方式によって異なる識別子挿入処理にも柔軟に対応可能で、さらに木目細やかな符号量制御および適応的な不正動作制御が可能な可変長符号化装置ならびに該装置を備えた画像符号化装置が開示されている。その可変長符号化装置は、画像データを量子化した量子化データを可変長符号化データに変換し、所定のデータ構造を有する符号化データ列を生成する可変長符号化装置であって、前記生成する符号化データ列の符号化方式を記憶する符号化方式記憶手段と、外部から入力した識別子またはパディング・ビットと識別子の組み合わせとからなる書き込みデータを記憶する書き込みデータ記憶手段と、前記書き込みデータ記憶手段に書き込みデータが書き込まれた場合には該書き込みデータを、それ以外の場合には、前記可変長符号化データを選択する選択手段と、前記選択手段により選択されたデータを連結し、データ列を生成するデータ連結手段と、外部から入力した前記書き込みデータのビット数を記憶する書き込みビット数記憶手段と、前記データ連結手段において生成されたデータ列内の有効なビット数を計数し外部に信号出力する有効ビット数制御手段と、を備えることを特徴としている。
【０００５】
特開平０８−３１７２１９号公報には、量子化テーブル値を新たに量子化テーブルに書き込むことなく、処理毎に演算を行うことにより、見かけ上、量子化／逆量子化部の量子化テーブルの値を変更できる画像圧縮伸長装置が開示されている。その画像圧縮伸長装置は、離散コサイン変換された係数を係数位置ごとに異なるステップ・サイズで線形量子化を行う量子化部と、ハフマン復号化で得られた係数を逆量子化できる逆量子化部と、量子化処理と逆量子化処理に必要な量子化テーブルとを備え、画像データを圧縮／伸長する画像圧縮伸長装置において、外部から必要な値を設定できるレジスタと、前記量子化テーブルと前記レジスタとの間でデータ処理が可能なデータ処理ユニットとを備え、前記データ処理ユニットにおいて、外部から前記レジスタに設定された値と量子化テーブル間で演算を行い、その結果に基づいて量子化処理または逆量子化処理を行うことを特徴としている。
【０００６】
特開平０９−３２６９３５号公報には、量子化テーブルが頻繁に変更される場合であっても、量子化テーブルを示す情報の増加を抑え、伝送効率の低下を防止することができる画像伝送システムが開示されている。その画像伝送システムは、画像メモリ上の画像データを複数のブロックに分割し、このブロック単位で分割された複数の分割画像データのそれぞれに対して所定の変換符号化を行い、該分割画像データの画像特性に応じた量子化テーブルを用いて該所定の変換符号化されたデータを量子化し、この量子化されたデータに対して所定のエントロピー符号化を行った複数のエントロピー符号化データを生成する一連の符号化処理を行い、該複数のエントロピー符号化データ及び該一連の符号化処理に使用した所定のパラメータを前記画像データの圧縮データとして伝送するとともに、該伝送された圧縮データをもとに前記画像データを復元する画像伝送システムにおいて、１以上の前記ブロックから構成される特定領域単位毎に適用する前記量子化テーブルが同一である１以上の前記特定領域をグループ化するグループ化手段と、前記グループ化手段によってグループ化された１以上の特定領域に共通して用いる前記量子化テーブルのパラメータを該１以上の特定領域単位毎に付加するパラメータ付加手段とを具備したことを特徴としている。
【０００７】
図１は、ＪＰＥＧデータをデコードする公知のハードウェアの検証方法を示している。ユーザは、まず、ＨＤＬなどで設計されたそのハードウェアであるＪＰＥＧ  Ｄｅｃｏｄｅｒ  ＤＵＴ（Ｄｅｖｉｃｅ  Ｕｎｄｅｒ  Ｔｅｓｔ）１００を検証するために、ハードウェアの仕様としての処理アルゴリズムが実行されるリファレンスソフト１０１を用意する。ユーザは、既存のＪＰＥＧ画像１０３をＪＰＥＧ  Ｄｅｃｏｄｅｒ  ＤＵＴ１００とリファレンスソフト１０１との両方に入力する。ＪＰＥＧ  Ｄｅｃｏｄｅｒ  ＤＵＴ１００は、ＪＰＥＧ画像１０３をデコードして結果１０４を算出する。リファレンスソフト１０１は、コンピュータにより実行され、ＪＰＥＧ画像１０３をデコードして期待値１０５を算出する。ユーザは、結果１０４と期待値１０５とを比較し、一致していれば、ＪＰＥＧ画像１０３に関する処理について、ＪＰＥＧ  Ｄｅｃｏｄｅｒ  ＤＵＴ１００の動作が正しいことが確認することができる。ユーザは、一致していなければ、ＪＰＥＧ  Ｄｅｃｏｄｅｒ  ＤＵＴ１００の動作が正しくないので、ＨＤＬを修正して、再度、ＪＰＥＧ画像１０３による動作比較を行う。ユーザは、できるだけ多くのＪＰＥＧ画像で、比較一致を確認することにより、ＪＰＥＧ  Ｄｅｃｏｄｅｒ  ＤＵＴ１００の動作を検証することができる。
【０００８】
【特許文献１】特開２００１−２３８２１２号公報
【特許文献２】特開２００３−１７４６５０号公報
【特許文献３】特開平０８−３１７２１９号公報
【特許文献４】特開平０９−３２６９３５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
このような検証方法では、既存のＪＰＥＧ画像を用いるため、マーカーセグメントの各パラメータの値振り、マーカーセグメントの生成順番、オプションマーカーの有無、ハフマンテーブルの種類、符号化データ（ＥＣＳ：Ｅｎｔｒｏｐｙ  Ｃｏｄｅｄ  Ｓｅｇｍｅｎｔ）でのハフマン符号の網羅性などが、検証に用いる既存のＪＰＥＧ画像として存在するものに限定され、適切な時間内に十分に検証することができないという問題がある。すなわち、ユーザは、マーカーセグメントの各パラメータの値振り、マーカーセグメントの生成順番、オプションマーカーの有無、ハフマンテーブルの種類、符号化データ（ＥＣＳ）でのハフマン符号の網羅性を十分に検証するために、それに適したＪＰＥＧ画像データを膨大に用意する必要がある。ユーザは、さらに、各画像ファイルを解析して、そのＪＰＥＧ画像データがその検証に適しているかどうかを判断する必要がある。このために、ユーザは、その検証に十分なＪＰＥＧ画像データを準備するのに時間がかかってしまう。さらに、その適したＪＰＥＧ画像データが見つからない場合に、ＪＰＥＧ  Ｄｅｃｏｄｅｒ  ＤＵＴ１００のある部分が検証することができなくて検証漏れとなってしまうことがある。
【００１０】
ＪＰＥＧデータをデコードするこのようなハードウェアは、開発期間の短サイクル化が望まれ、このため、その膨大な画像を作成するための工数と期間とを低減することが望まれている。
【課題を解決するための手段】
【００１１】
以下に、発明を実施するための最良の形態・実施例で使用される符号を括弧付きで用いて、課題を解決するための手段を記載する。この符号は、特許請求の範囲の記載と発明を実施するための最良の形態・実施例の記載との対応を明らかにするために付加されたものであり、特許請求の範囲に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１２】
本発明によるデコーダー検証装置は、符号化に関する制約情報（５）に基づいて検証用符号化データ（６）を生成する検証部（１）（２０）を備えている。検証用符号化データ（６）がデコードされた期待値画像（８）は、検証対象（２）により検証用符号化データ（６）からデコードされた結果画像（７）と比較される。すなわち、ユーザは、結果画像（７）を期待値画像（８）に比較することにより、検証対象（２）が検証用符号化データ（６）を適切にデコードしたかどうかを検証することができる。本発明によるデコーダー検証装置は、ユーザにより作成される制約情報（５）に応じた検証用符号化データ（６）を生成することができ、符号化データをデコードする検証対象（２）を検証するために適切な検証用符号化データ（６）を生成することができる。
【００１３】
本発明によるデコーダー検証方法は、符号化に関する制約情報（５）を作成するステップと、制約情報（５）に基づいて検証用符号化データ（６）を生成するステップと、リファレンス部を用いて検証用符号化データ（６）をデコードして期待値画像（８）を生成するステップと、検証対象（２）を用いて検証用符号化データ（６）をデコードして結果画像（７）を生成するステップと、結果画像（７）を期待値画像（８）と比較するステップとを備えている。すなわち、ユーザは、結果画像（７）が期待値画像（８）に一致しているかどうかを判別することにより、検証対象（２）が検証用符号化データ（６）を適切にデコードしたかどうかを検証することができる。本発明によるデコーダー検証方法は、ユーザにより作成される制約情報（５）に応じた検証用符号化データ（６）を生成することができ、符号化データをデコードする検証対象（２）を検証するために適切な検証用符号化データ（６）を生成することができる。
【発明の効果】
【００１４】
本発明によるデコーダー検証装置およびデコーダー検証方法は、ユーザにより作成される制約情報に応じた検証用符号化データを生成することができ、デコーダーを検証するために適切な検証用符号化データを生成することができる。
【発明を実施するための最良の形態】
【００１５】
図面を参照して、本発明によるデコーダー検証装置の実施の形態を記載する。そのデコーダー検証装置は、図２に示されているように、ＪＰＥＧ  Ｄｅｃｏｄｅｒ  ＤＵＴ２を検証することに利用される。そのデコーダー検証装置は、ＪＰＥＧ検証コンポーネント１とリファレンスソフト３とを備えている。
【００１６】
ＪＰＥＧ検証コンポーネント１は、ユーザにより入力される制約情報５に基づいてＪＰＥＧデータ６を算出する。制約情報５は、マーカーセグメントの各パラメータの値の指定や、オプションマーカーの生成の指定や、ハフマンコードに関する指定とを示している。そのマーカーセグメントの各パラメータの値の指定は、そのパラメータの値を示し、または、そのパラメータの値が取り得る範囲を示している。そのオプションマーカーは、ＤＮＬやＥＸＰなどが例示される。そのハフマンコードに関する指定は、生成されるＬｉ（ｉは１から１６までの整数で、Ｌｉは長さｉのハフマン符号の数を示す）のｉの最大値（ハフマン符号の長さの最大値）と各Ｌｉの設定値（０、１以上、０以上）とを示している。ＪＰＥＧデータ６は、符号化されているデータであり、静止画像を示している。
【００１７】
リファレンスソフト３は、コンピュータにより実行され、ＪＰＥＧデータ６をデコードすることにより期待値８を算出する。期待値８は、符号化されていないデータであり、ＪＰＥＧデータ６が示す静止画像を示している。
【００１８】
ＪＰＥＧ  Ｄｅｃｏｄｅｒ  ＤＵＴ２は、外部機器により入力されるＪＰＥＧデータに基づいて画像データを出力する。そのＪＰＥＧデータは、符号化されているデータであり、静止画像を示している。その画像データは、符号化されていないデータであり、そのＪＰＥＧデータが示す静止画像を示している。ＪＰＥＧ  Ｄｅｃｏｄｅｒ  ＤＵＴ２は、ＪＰＥＧデータ６が入力されたときに、ＪＰＥＧデータ６をデコードすることにより結果７を出力する。結果７は、符号化されていないデータであり、ＪＰＥＧデータ６が示す静止画像を示している。
【００１９】
図３は、ＪＰＥＧ検証コンポーネント１を示している。ＪＰＥＧ検証コンポーネント１は、マーカーセグメントパラメータランダム生成部１１と量子化テーブル生成部１２とハフマンテーブルランダム生成部１４と符号化データランダム生成部１５とフレーム生成部１６とを備えている。
【００２０】
マーカーセグメントパラメータランダム生成部１１は、ユーザにより入力される制約情報５に基づいて、複数のマーカーセグメントの各パラメータをＪＰＥＧの勧告書（ＩＳＯ／ＩＥＣ１０９１８−１：１９９３（Ｅ））で規定された値の範囲内でランダムに生成する。その複数のマーカーセグメントは、マーカーセグメントＳＯＩとマーカーセグメントＳＯＦとマーカーセグメントＳＯＳとマーカーセグメントＥＯＩとを含んでいる。その複数のマーカーセグメントは、それぞれ、複数のパラメータの値を指定している。すなわち、マーカーセグメントＳＯＦは、量子化テーブルセレクタＴｑｉの値を指定している。マーカーセグメントＳＯＳは、ＤＣエントロピ符号化テーブルセレクタＴｄｊの値とＡＣエントロピ符号化テーブルセレクタＴａｊの値とを指定している。
【００２１】
量子化テーブル生成部１２は、マーカーセグメントパラメータランダム生成部１１により生成されたマーカーセグメントＳＯＦのパラメータである量子化テーブルセレクタＴｑｉに基づいて量子化テーブル識別子Ｔｑを生成する。量子化テーブル識別子Ｔｑは、少なくともマーカーセグメントＳＯＦで指定された量子化テーブルセレクタＴｑｉに対応している。量子化テーブル生成部１２は、さらに、全て値が１である量子化テーブル要素Ｑｋから量子化テーブルマーカーセグメントＤＱＴを生成する。
【００２２】
ハフマンテーブルランダム生成部１４は、制約情報５とマーカーセグメントパラメータランダム生成部１１により生成されたマーカーセグメントＳＯＳのパラメータであるＤＣエントロピ符号化テーブルセレクタＴｄｊとＡＣエントロピ符号化テーブルセレクタＴａｊとに基づいて、ハフマンテーブルマーカーセグメントＤＨＴを生成する。ハフマンテーブルマーカーセグメントＤＨＴは、ＤＣエントロピ符号化テーブルとＡＣエントロピ符号化テーブルとを示している。そのＤＣエントロピ符号化テーブルとＡＣエントロピ符号化テーブルとは、ハフマン符号として成立する範囲内でランダムに生成される。
【００２３】
符号化データランダム生成部１５は、量子化テーブル生成部１２により生成された量子化テーブルマーカーセグメントＤＱＴとハフマンテーブルランダム生成部１４により生成されたハフマンテーブルマーカーセグメントＤＨＴとに基づいて、符号化データＥＣＳを生成する。符号化データＥＣＳは、ハフマンテーブルマーカーセグメントＤＨＴが示すＤＣエントロピ符号化テーブルで指定されたハフマン符号を網羅するように、かつ、ハフマンテーブルマーカーセグメントＤＨＴが示すＡＣエントロピ符号化テーブルで指定されたハフマン符号を網羅するように、ランダムに生成される。
【００２４】
フレーム生成部１６は、マーカーセグメントパラメータランダム生成部１１により生成された複数のマーカーセグメントと量子化テーブル生成部１２により生成された量子化テーブルマーカーセグメントＤＱＴとハフマンテーブルランダム生成部１４により生成されたハフマンテーブルマーカーセグメントＤＨＴと符号化データランダム生成部１５により生成された符号化データＥＣＳに基づいて、ＪＰＥＧの勧告書（ＩＳＯ／ＩＥＣ１０９１８−１：１９９３（Ｅ））で規定された範囲内でマーカーセグメントの生成順序がランダムなＪＰＥＧデータ６を生成する。
【００２５】
図４は、ハフマンテーブルランダム生成部１４の動作を示している。ハフマンテーブルランダム生成部１４は、制約情報５が示すハフマン符号の長さの最大値ｌ＿ｍａｘに代入されている値をチェックする（ステップＳ１）。すなわち、ハフマンテーブルランダム生成部１４は、ＤＣエントロピ符号化テーブルを生成する場合で最大値ｌ＿ｍａｘの値が４以上１６以下でないときに、または、ＡＣエントロピ符号化テーブルを生成する場合で最大値ｌ＿ｍａｘの値が８以上１６以下でないときに（ステップＳ１、ＮＯ）、エラーメッセージを出力して、制約情報５がハフマン符号として成立しない制約を与えていることをユーザに通知する（ステップＳ２）。ハフマンテーブルランダム生成部１４は、ＤＣエントロピ符号化テーブルを生成する場合で最大値ｌ＿ｍａｘの値が４以上１６以下であるときに、または、ＡＣエントロピ符号化テーブルを生成する場合で最大値ｌ＿ｍａｘの値が８以上１６以下であるときに（ステップＳ１、ＹＥＳ）、制約情報５が示す配列ｌ＿ｕｎｕｓｅｄ［］に基づいて配列ｌ＿ｌｉｓｔ［］に値を代入する。配列ｌ＿ｕｎｕｓｅｄ［ｉ］は、インデックス値ｉ（ｉは、１から１６までの整数を示す。）を用いて、Ｌｉが０である場合に０を示し、Ｌｉが１以上である場合に１を示し、Ｌｉが０以上である場合に２を示している。ハフマンテーブルランダム生成部１４は、配列ｌ＿ｕｎｕｓｅｄ［］のうちのｉ番目の変数ｌ＿ｕｎｕｓｅｄ［ｉ］が１を示すときに、配列ｌ＿ｌｉｓｔ［］のうちの変数ｌ＿ｌｉｓｔ［ｉ］に１を代入し、変数ｌ＿ｕｎｕｓｅｄ［ｉ］が１以外の値を示すときに、変数ｌ＿ｌｉｓｔ［ｉ］に０を代入する（ステップＳ３）。
【００２６】
ハフマンテーブルランダム生成部１４は、配列ｌ＿ｕｎｕｓｅｄ［］のうちの１を示す変数ｌ＿ｕｎｕｓｅｄ［ｉ］の個数を変数ｌ＿ｃｎｔに代入する（ステップＳ４）。
【００２７】
ハフマンテーブルランダム生成部１４は、変数ｌ＿ｌｉｍを用いて、次式：
【数１】
2010087949.tif 000003
が満たされているかどうかを確認する（ステップＳ５）。変数ｌ＿ｌｉｍは、ＤＣエントロピ符号化テーブルを生成するときに１２を示し、かつ、ＡＣエントロピ符号化テーブルを生成するときに１６２を示している。ハフマンテーブルランダム生成部１４は、その式が満足していないときに（ステップＳ５、ＮＯ）、エラーメッセージを出力して、制約情報５がハフマン符号として成立しない制約を与えていることをユーザに通知する（ステップＳ６）。
【００２８】
ハフマンテーブルランダム生成部１４は、その式が満足しているときに（ステップＳ５、ＹＥＳ）、インデックス値ｉに１を代入し、変数ｌ＿ｔｏｔａｌに０を代入する（ステップＳ７）。
【００２９】
ハフマンテーブルランダム生成部１４は、インデックス値ｉの値が変数ｌ＿ｍａｘの値より小さいときに（ステップＳ８、ＹＥＳ）、変数ｌ＿ｕｎｕｓｅｄ［ｉ］に基づいて変数ｌ＿ｖａｌｕｅにランダムな値を代入する（ステップＳ９）。すなわち、ハフマンテーブルランダム生成部１４は、変数ｌ＿ｕｎｕｓｅｄ［ｉ］が０を示すときに、変数ｌ＿ｖａｌｕｅに０を代入する。ハフマンテーブルランダム生成部１４は、変数ｌ＿ｕｎｕｓｅｄ［ｉ］が１を示すときに、変数ｌ＿ｖａｌｕｅに乱数を代入する。その乱数は、１以上であり、かつ、次式：
ｌ＿ｌｉｍ−（ｌ＿ｔｏｔａｌ＋ｌ＿ｃｎｔ）
により示される値以下であり、かつ、２ｉ未満である。ハフマンテーブルランダム生成部１４は、変数ｌ＿ｕｎｕｓｅｄ［ｉ］が２を示すときに、変数ｌ＿ｖａｌｕｅに乱数を代入する。その乱数は、０以上であり、かつ、次式：
ｌ＿ｌｉｍ−（ｌ＿ｔｏｔａｌ＋ｌ＿ｃｎｔ）
により示される値以下であり、かつ、２ｉ未満である。
【００３０】
ハフマンテーブルランダム生成部１４は、変数ｌ＿ｖａｌｕｅが示す値を変数ｌ＿ｌｉｓｔ［ｉ］に代入する（ステップＳ１０）。ハフマンテーブルランダム生成部１４は、次式：
【数２】
2010087949.tif 000004
が満足していないときに（ステップＳ１１、ＮＯ）、その式が満足するまで再度ステップＳ９の処理とステップＳ１０の処理とを繰り返し実行する。ハフマンテーブルランダム生成部１４は、その式が満足しているときに（ステップＳ１１、ＹＥＳ）、変数ｌ＿ｔｏｔａｌが示す値と変数ｌ＿ｖａｌｕｅが示す値とを加算した値を変数ｌ＿ｔｏｔａｌに代入する。ハフマンテーブルランダム生成部１４は、変数ｌ＿ｕｎｕｓｅｄ［ｉ］が１を示すときに、変数ｌ＿ｃｎｔが示す値から１を減算した値を変数ｌ＿ｃｎｔに代入する。ハフマンテーブルランダム生成部１４は、インデックス値ｉが示す値に１を加算した値をインデックス値ｉに代入する（ステップＳ１２）。ハフマンテーブルランダム生成部１４は、インデックス値ｉがｌ＿ｍａｘと等しくなるまでステップＳ９〜ステップＳ１２を繰り返して実行する。
【００３１】
ハフマンテーブルランダム生成部１４は、インデックス値ｉが示す値と変数ｌ＿ｍａｘが示す値とが等しいときに（ステップＳ８、ＮＯ）、変数ｌ＿ｌｉｍが示す値から変数ｌ＿ｔｏｔａｌが示す値を減算した値を変数ｌ＿ｌｉｓｔ［ｌ＿ｍａｘ］に代入する（ステップＳ１３）。
【００３２】
ハフマンテーブルランダム生成部１４は、ＤＣエントロピ符号化テーブルを生成するときに、使用可能な０ｘ００〜０ｘ０Ｂの１２個の値をランダムな順序で生成して配列ｖ＿ｌｉｓｔ［０：１１］に格納する。ハフマンテーブルランダム生成部１４は、ＡＣエントロピ符号化テーブルを生成するときに、使用可能な０ｘ００〜０ｘ０Ａ、０ｘ１０〜０ｘ１Ａ、…、０ｘＦ０〜０ｘＦＡの１６２個の値をランダムな順序で生成し、配列ｖ＿ｌｉｓｔ［０：１６１］に格納する。
【００３３】
ハフマンテーブルランダム生成部１４は、マーカーセグメントＳＯＳで指定されたＤＣエントロピ符号化テーブルセレクタＴｄｊとＡＣエントロピ符号化テーブルセレクタＴａｊとに対応するハフマンテーブル識別子ＴｈとハフマンテーブルマーカーセグメントＤＨＴとを生成する。ハフマンテーブルマーカーセグメントＤＨＴは、ＤＣエントロピ符号化テーブルとＡＣエントロピ符号化テーブルとを示している。そのＤＣエントロピ符号化テーブルは、マーカーセグメントＳＯＳで指定されたＤＣエントロピ符号化テーブルセレクタＴｄｊに対応し、ハフマンテーブルランダム生成部１４により算出された配列ｌ＿ｌｉｓｔ［］をＬ値とし、配列ｖ＿ｌｉｓｔ［０：１１］をＶ値としている。そのＡＣエントロピ符号化テーブルは、マーカーセグメントＳＯＳで指定されたＡＣエントロピ符号化テーブルセレクタＴａｊに対応し、ハフマンテーブルランダム生成部１４により算出された配列ｌ＿ｌｉｓｔ［］をＬ値とし、配列ｖ＿ｌｉｓｔ［０：１６１］をＶ値としている。
【００３４】
符号化データランダム生成部１５は、ハフマン符号を生成する動作と、ＤＣ成分の符号化データを生成する動作と、ＡＣ成分の符号化データを生成する動作とを実行する。
【００３５】
図５は、そのハフマン符号を生成する動作を示している。符号化データランダム生成部１５は、変数ｋに０を代入し、インデックス値ｉに１を代入し、変数ｊに１を代入する（ステップＳ２０）。符号化データランダム生成部１５は、変数ｊの値が変数ｌ＿ｌｉｓｔ［ｉ］の値より大きいときに（ステップＳ２１、ＮＯ）、配列ｈｕｆｆｓｉｚｅ［］のうちのｉ番目の変数ｈｕｆｆｓｉｚｅ［ｉ］に１を代入し、変数ｋが示す値に１を加算した値を変数ｋに代入し、変数ｊが示す値に１を加算した値を変数ｊに代入する（ステップＳ２２）。符号化データランダム生成部１５は、次式：
ｊ＞ｌ＿ｌｉｓｔ［ｉ］
が成立するまで、ステップＳ２２の処理を繰り返して実行する。
【００３６】
符号化データランダム生成部１５は、変数ｊの値が変数ｌ＿ｌｉｓｔ［ｉ］の値より大きいときに（ステップＳ２１、ＹＥＳ）、インデックス値ｉが示す値に１を加算した値をインデックス値ｉに代入し、変数ｊに１を代入する（ステップＳ２３）。符号化データランダム生成部１５は、インデックス値ｉが１６より大きいかどうかを判別し（ステップＳ２４）、インデックス値ｉが１６より大きくないときにステップＳ２１〜ステップＳ２２の処理を繰り返し実行する。
【００３７】
符号化データランダム生成部１５は、インデックス値ｉが１６より大きいときに（ステップＳ２４、ＹＥＳ）、変数ｈｕｆｆｓｉｚｅ［ｋ］に０を代入する（ステップＳ２５）。符号化データランダム生成部１５は、変数ｋに０を代入し、変数ｃｏｄｅに０を代入し、変数ｈｕｆｆｓｉｚｅ［０］が示す値を変数ｓｉに代入する（ステップＳ２６）。
【００３８】
符号化データランダム生成部１５は、変数ｃｏｄｅが示す値を変数ｈｕｆｆｓｉｚｅ［ｋ］に代入し、変数ｃｏｄｅが示す値に１を加算した値を変数ｃｏｄｅに代入し、変数ｋが示す値に１を加算した値を変数ｋに代入する（ステップＳ２７）。符号化データランダム生成部１５は、変数ｈｕｆｆｓｉｚｅ［ｋ］が示す値と変数ｓｉが示す値とを比較し（ステップＳ２８）、変数ｈｕｆｆｓｉｚｅ［ｋ］が示す値と変数ｓｉが示す値とが異なるまで、ステップＳ２７の処理を繰り返し実行する。
【００３９】
符号化データランダム生成部１５は、変数ｈｕｆｆｓｉｚｅ［ｋ］が示す値が０でないときに（ステップＳ２９、ＮＯ）、変数ｃｏｄｅを１ビット論理左シフトし、変数ｓｉが示す値に１を加算した値を変数ｓｉに代入する（ステップＳ３０）。符号化データランダム生成部１５は、変数ｈｕｆｆｓｉｚｅ［ｋ］が示す値と変数ｓｉが示す値とを比較し（ステップＳ３１）、変数ｈｕｆｆｓｉｚｅ［ｋ］が示す値と変数ｓｉが示す値とが等しくなるまで、ステップＳ３０の処理を繰り返し実行する。
【００４０】
符号化データランダム生成部１５は、変数ｈｕｆｆｓｉｚｅ［ｋ］が示す値と変数ｓｉが示す値とが等しいときに（ステップＳ３１、ＹＥＳ）、ステップＳ２７〜ステップＳ３１を繰り返し実行する。このとき、符号化データランダム生成部１５は、変数ｈｕｆｆｓｉｚｅ［ｋ］が示す値が０であるときに（ステップＳ２９、ＹＥＳ）、この動作を終了する。
【００４１】
すなわち、符号化データランダム生成部１５は、配列ｌ＿ｌｉｓｔ［］に基づいて配列ｈｕｆｆｓｉｚｅ［］と配列ｈｕｆｆｃｏｄｅ［］とを生成して、符号化データＥＣＳを生成する。このとき、配列ｈｕｆｆｃｏｄｅ［］は、ハフマン符号のリストを示し、配列ｈｕｆｆｓｉｚｅ［］は、配列ｈｕｆｆｃｏｄｅ［］が示すハフマン符号の長さのリストを示している。なお、このアルゴリズムは、ＪＰＥＧの勧告書に規定されているものと同一である。
【００４２】
図６は、ＤＣ成分の符号化データを生成する動作を示している。ここでは、ＪＰＥＧの処理単位である１データユニット（ＤＣ成分１個、ＡＣ成分６３個）の処理動作について説明する。符号化データランダム生成部１５は、−１０２３〜１０２３の範囲のうちからランダムに選択された整数を変数ｄｃｄに代入する（ステップＳ４０）。符号化データランダム生成部１５は、変数ｄｃｄと同一成分で前のユニットで生成した変数ｐｒｅｄとの差分を算出し、その差分を付加ビットｄｉｆｆに代入し、変数ｄｃｄが示す値を変数ｐｒｅｄに代入する（ステップＳ４１）。符号化データランダム生成部１５は、付加ビットｄｉｆｆを絶対値化する。すなわち、符号化データランダム生成部１５は、付加ビットｄｉｆｆが示す値が０より小さいときに（ステップＳ４２、ＹＥＳ）、付加ビットｄｉｆｆが示す値から１を減算した値を付加ビットｄｉｆｆに代入し、付加ビットｄｉｆｆが示す値に−１を乗算した値を付加ビットｄｉｆｆに代入する（ステップＳ４３）。
【００４３】
符号化データランダム生成部１５は、次式：
Ｓ＝ｌｏｇ２（ｄｉｆｆ＋１）
によりカテゴリ値Ｓを算出する（ステップＳ４４）。符号化データランダム生成部１５は、配列ｖ＿ｌｉｓｔ［］のうちからカテゴリ値Ｓと一致する変数ｖ＿ｌｉｓｔ［ｉ］をサーチして、一致するときのインデックス値ｉを求める。すなわち、符号化データランダム生成部１５は、インデックス値ｉに０を代入した後に（ステップＳ４５）、カテゴリ値Ｓが変数ｖ＿ｌｉｓｔ［ｉ］に一致するまで（ステップＳ４６、ＹＥＳ）、インデックス値ｉが示す値に１を加算した値をインデックス値ｉに代入する（ステップＳ４７）。
【００４４】
符号化データランダム生成部１５は、変数ｈｕｆｆｃｏｄｅ［ｉ］が示す値と変数ｈｕｆｆｓｉｚｅ［ｉ］が示す値とに基づいてハフマン符号ｈｃｏｄｅと付加ビットｄｉｆｆ［０：Ｓ−１］を生成して、符号化データＥＣＳを生成する（ステップＳ４８）。
【００４５】
図７は、ＡＣ成分の符号化データを生成する動作を示している。ここでは、ＪＰＥＧの処理単位である１データユニット（ＤＣ成分１個、ＡＣ成分６３個）の処理動作について説明する。このとき、符号化データランダム生成部１５は、その６３個のＡＣ成分のデータを処理する。符号化データランダム生成部１５は、まず、変数ｊに１を代入する（ステップＳ６０）。符号化データランダム生成部１５は、変数ｊが示す値が６３以下であるかどうかを判別することにより、６３個のＡＣ成分のデータのうちの何個目のデータの処理を行っているのかを判定して（ステップＳ６１）、６３個目であれば（ステップＳ６１、ＮＯ）、終了する。
【００４６】
符号化データランダム生成部１５は、変数ｊが示す値が６３以下であるときに（ステップＳ６１、ＹＥＳ）、６３個のＡＣ成分のデータのうちの処理が行われていない残りのデータの個数が１５個より少ないかどうかを判別する（ステップＳ６２）。符号化データランダム生成部１５は、その残りのデータの個数が１５個より少ないときに（ステップＳ６２、ＹＥＳ）、変数ｒ＿ｍａｘに６３にその残りのデータの個数を代入する（ステップＳ６３）。符号化データランダム生成部１５は、その残りのデータの個数が１５個より少なくないときに（ステップＳ６２、ＮＯ）、変数ｒ＿ｍａｘに１５を代入する（ステップＳ６４）。
【００４７】
符号化データランダム生成部１５は、０から変数ｒ＿ｍａｘが示す値までの範囲のうちからランダムに選択された整数をラン長Ｒに代入する（ステップＳ６５）。符号化データランダム生成部１５は、ラン長Ｒの値を変数ｊに代入する（ステップＳ６６）。符号化データランダム生成部１５は、ラン長Ｒが０あるいは１５を示すときに（ステップＳ６７、ＹＥＳ）、０から１０までの範囲のうちからランダムに選択された整数をカテゴリ値Ｓに代入する（ステップＳ６８）。符号化データランダム生成部１５は、ラン長Ｒが０あるいは１５を示していないときに（ステップＳ６７、ＮＯ）、１から１０までの範囲のうちからランダムに選択された整数をカテゴリ値Ｓに代入する（ステップＳ６９）。
【００４８】
符号化データランダム生成部１５は、ラン長Ｒとカテゴリ値Ｓとがともに０を示すときに変数ｊに６３を代入する（ステップＳ７０）。符号化データランダム生成部１５は、変数ｊが示す値に１を加算した値を変数ｊに代入する（ステップＳ７１）。符号化データランダム生成部１５は、０から（２Ｓ−１）までの範囲のうちからランダムに選択された整数を付加ビットａｂｄに代入する（ステップＳ７２）。
【００４９】
符号化データランダム生成部１５は、ラン長Ｒ（４ビット）とカテゴリ値Ｓ（４ビット）を組み合わせてＲＳ値（８ビット）を生成し、配列ｖ＿ｌｉｓｔ［］からそのＲＳ値と一致する変数ｖ＿ｌｉｓｔ［ｉ］をサーチして、一致するときのインデックス値ｉを求める。すなわち、符号化データランダム生成部１５は、インデックス値ｉに０を代入した後に（ステップＳ７５）、ＲＳ値が変数ｖ＿ｌｉｓｔ［ｉ］に一致するまで、インデックス値ｉが示す値に１を加算した値をインデックス値ｉに代入する（ステップＳ７７）。
【００５０】
符号化データランダム生成部１５は、求まったインデックス値ｉに対応するｈｕｆｆｃｏｄｅ［ｉ］とｈｕｆｆｓｉｚｅ［ｉ］により、ハフマン符号ｈｃｏｄｅと付加ビットａｂｄ［０：Ｓ−１］を生成して、ＥＣＳデータを生成する（ステップＳ７８）。符号化データランダム生成部１５は、変数ｊの値が６４になるまで、ステップＳ６１〜Ｓ７８を繰り返して実行する。符号化データランダム生成部１５は、このような動作により１データユニットに対応するＥＣＳデータを生成するが、これを繰り返すことにより、１フレーム分（１画像分）の符号化データＥＣＳを生成する。
【００５１】
本発明によるデコーダー検証方法の実施の形態は、本発明によるデコーダー検証装置を用いて実行される。ユーザは、ＪＰＥＧ  Ｄｅｃｏｄｅｒ  ＤＵＴ２を検証するときに、制約情報５を作成する。ＪＰＥＧ検証コンポーネント１は、制約情報５に基づいてＪＰＥＧデータ６を生成する。リファレンスソフト３は、コンピュータにより実行され、ＪＰＥＧデータ６をデコードすることにより期待値８を算出する。ユーザは、ＪＰＥＧ  Ｄｅｃｏｄｅｒ  ＤＵＴ２を用いて、ＪＰＥＧデータ６をデコードし、結果７を生成する。ユーザは、結果７と期待値８とが一致しているときにＪＰＥＧ  Ｄｅｃｏｄｅｒ  ＤＵＴ２が適切に動作していると判別し、結果７と期待値８とが異なっているときにＪＰＥＧ  Ｄｅｃｏｄｅｒ  ＤＵＴ２が適切に動作していないと判別する。
【００５２】
このようなデコーダー検証方法によれば、ユーザは、ＪＰＥＧ  Ｄｅｃｏｄｅｒ  ＤＵＴ２を検証するための膨大な画像を作成する必要がなく、ＪＰＥＧ  Ｄｅｃｏｄｅｒ  ＤＵＴ２を検証するための工数と期間とを低減することができる。この結果、ＪＰＥＧデータをデコードするこのようなハードウェアは、開発期間を短サイクル化することができる。
【００５３】
ＪＰＥＧ検証コンポーネント１は、ＪＰＥＧの勧告書で規定された符号化データフォーマットの範囲内で、マーカーセグメントの各パラメータの値振り、マーカーセグメントの生成順番、ハフマンテーブルの種類がランダムなＪＰＥＧデータを生成することができる。ＪＰＥＧ検証コンポーネント１は、また、制約を与えることにより、各パラメータの値を特定の値あるいはある範囲内に、オプションマーカーの有る場合無い場合に、あるいは、特殊なハフマン符号を用いたＪＰＥＧデータを生成することができ、さらに、ハフマンテーブルで定義されたハフマン符号を網羅したＪＰＥＧデータを生成することができる。このため、このようなデコーダー検証方法によれば、ユーザは、ＪＰＥＧ検証コンポーネント１を用いることにより、マーカーセグメントの各パラメータの値振り、マーカーセグメントの生成順番、オプションマーカーの有無、ハフマンテーブルの種類、符号化データでのハフマン符号の網羅性などを十分に検証するための多種多様なデータを瞬時に生成することができるため、検証対象であるＪＰＥＧ  Ｄｅｃｏｄｅｒ  ＤＵＴ２を適切な時間内に十分に検証することができる。
【００５４】
ビット長が長いハフマン符号は、一般的に、画像からハフマン符号に符号化されるときに、生成されにくい。ＪＰＥＧ検証コンポーネント１は、制約条件５を適切に与えることにより、ビット長の長いハフマン符号を含んでいる検証用符号化データを生成することができる。
【００５５】
なお、ＪＰＥＧ検証コンポーネント１は、コンピュータプログラムから形成されることもできる。そのコンピュータプログラムは、コンピュータにより実行され、ＪＰＥＧ検証コンポーネント１と同様にして、ユーザにより入力される制約情報５に基づいてＪＰＥＧデータ６を算出する。さらに、本発明によるデコーダー検証装置は、そのコンピュータプログラムとリファレンスソフト３との両方を実行するコンピュータから形成されることもできる。さらに、リファレンスソフト３は、ＪＰＥＧ検証コンポーネント１と別個のハードウェアから形成されることもできる。そのハードウェアは、リファレンスソフト３を実行するコンピュータと同様にして、ＪＰＥＧデータ６をデコードすることにより期待値８を算出する。
【００５６】
なお、ハードウェアであるＪＰＥＧ  Ｄｅｃｏｄｅｒ  ＤＵＴ２は、ＨＤＬ（Ｈａｒｄｗａｒｅ  ｄｅｓｃｒｉｐｔｉｏｎ  ｌａｎｇｕａｇｅ）ハードウェア記述言語により表現されるソフトウェアに置換することもできる。このとき、本発明によるデコーダー検証方法は、ＪＰＥＧ  Ｄｅｃｏｄｅｒ  ＤＵＴ２を検証するときと同様にして、そのソフトウェアを検証することができ、この結果、ＪＰＥＧデータをデコードするハードウェアの開発期間を短サイクル化することができる。
【００５７】
図８は、本発明によるデコーダー検証装置に適用されるＪＰＥＧ検証コンポーネントの実施の他の形態を示している。そのＪＰＥＧ検証コンポーネント２０は、マーカーセグメントパラメータランダム生成部２１と量子化テーブルランダム生成部２２とハフマンテーブルランダム生成部２４と符号化データランダム生成部２５とフレーム生成部２６とを備えている。
【００５８】
マーカーセグメントパラメータランダム生成部２１は、既述の実施の形態におけるマーカーセグメントパラメータランダム生成部１１と同様に動作する。すなわち、マーカーセグメントパラメータランダム生成部２１は、ユーザによりＪＰＥＧ検証コンポーネント２０に入力される制約情報５に基づいて、複数のマーカーセグメントの各パラメータをＪＰＥＧの勧告書で規定された値の範囲内でランダムに生成する。
【００５９】
量子化テーブルランダム生成部２２は、マーカーセグメントパラメータランダム生成部２１により生成されたマーカーセグメントＳＯＦのパラメータである量子化テーブルセレクタＴｑｉに基づいて量子化テーブル識別子Ｔｑを生成する。量子化テーブル識別子Ｔｑは、少なくともマーカーセグメントＳＯＦで指定された量子化テーブルセレクタＴｑｉに対応している。量子化テーブルランダム生成部２２は、さらに、全て値が１である量子化テーブル要素Ｑｋから量子化テーブルマーカーセグメントＱＴを生成する。量子化テーブルランダム生成部２２は、さらに、マーカーセグメントパラメータランダム生成部２１により生成されたマーカーセグメントＳＯＦのパラメータである量子化テーブルセレクタＴｑｉと符号化データランダム生成部２５により生成された配列ｑｂ＿ｍａｘ［０：６３］とに基づいてに基づいて量子化テーブル識別子Ｔｑを生成する。量子化テーブル識別子Ｔｑは、少なくともマーカーセグメントＳＯＦで指定された量子化テーブルセレクタＴｑｉに対応している。量子化テーブルランダム生成部２２は、さらに、量子化テーブル要素Ｑｋから量子化テーブルマーカーセグメントＤＱＴを生成する。その量子化テーブル要素Ｑｋは、１から１０２３／ｑｂ＿ｍａｘ［ｋ］までの範囲でランダムに生成される。
【００６０】
ハフマンテーブルランダム生成部２４は、既述の実施の形態におけるハフマンテーブルランダム生成部１４と同様に動作する。すなわち、ハフマンテーブルランダム生成部２４は、制約情報５とマーカーセグメントパラメータランダム生成部２１により生成されたマーカーセグメントＳＯＳのパラメータであるＤＣエントロピ符号化テーブルセレクタＴｄｊとＡＣエントロピ符号化テーブルセレクタＴａｊとに基づいて、ハフマンテーブルマーカーセグメントＤＨＴを生成する。ハフマンテーブルマーカーセグメントＤＨＴは、ＤＣエントロピ符号化テーブルとＡＣエントロピ符号化テーブルとを示している。そのＤＣエントロピ符号化テーブルとＡＣエントロピ符号化テーブルとは、ハフマン符号として成立する範囲内でランダムに生成される。
【００６１】
符号化データランダム生成部２５は、量子化テーブルランダム生成部２２により生成された量子化テーブルマーカーセグメントＱＴとハフマンテーブルランダム生成部２４により生成されたハフマンテーブルマーカーセグメントＤＨＴとに基づいて、配列ｑｂ＿ｍａｘ［］と符号化データＥＣＳとを生成する。符号化データＥＣＳは、ハフマンテーブルマーカーセグメントＤＨＴが示すＤＣエントロピ符号化テーブルで指定されたハフマン符号を網羅するように、かつ、ハフマンテーブルマーカーセグメントＤＨＴが示すＡＣエントロピ符号化テーブルで指定されたハフマン符号を網羅するように、ランダムに生成される。
【００６２】
フレーム生成部２６は、既述の実施の形態におけるフレーム生成部１６と同様に動作する。すなわち、フレーム生成部２６は、マーカーセグメントパラメータランダム生成部２１により生成された複数のマーカーセグメントと量子化テーブルランダム生成部２２により生成された量子化テーブルマーカーセグメントＤＱＴとハフマンテーブルランダム生成部２４により生成されたハフマンテーブルマーカーセグメントＤＨＴと符号化データランダム生成部２５により生成された符号化データＥＣＳに基づいてＪＰＥＧデータを生成する。そのＪＰＥＧデータは、ＪＰＥＧの勧告書で規定された範囲内でマーカーセグメントの生成順序がランダムになるように生成されている。
【００６３】
符号化データランダム生成部２５は、ハフマン符号を生成する動作と、ＤＣ成分の符号化データを生成する動作と、ＡＣ成分の符号化データを生成する動作とを実行する。
【００６４】
そのハフマン符号を生成する動作は、既述の実施の形態における符号化データランダム生成部１５が実行するハフマン符号を生成する動作と一致している。
【００６５】
図９は、そのＤＣ成分の符号化データを生成する動作を示している。ここでは、ＪＰＥＧの処理単位である１データユニット（ＤＣ成分１個、ＡＣ成分６３個）の処理動作について説明する。符号化データランダム生成部２５は、−１０２３〜１０２３の範囲のうちからランダムに選択された整数を変数ｄｃｄに代入する（ステップＳ８０）。符号化データランダム生成部２５は、変数ｄｃｄと同一成分で前のユニットで生成した変数ｐｒｅｄとの差分を算出し、その差分を付加ビットｄｉｆｆに代入し、変数ｄｃｄが示す値を変数ｐｒｅｄに代入する（ステップＳ８１）。
【００６６】
符号化データランダム生成部２５は、付加ビットｄｉｆｆを絶対値化する。すなわち、符号化データランダム生成部２５は、付加ビットｄｉｆｆが示す値が０より小さいときに（ステップＳ８２、ＹＥＳ）、付加ビットｄｉｆｆが示す値から１を減算した値を付加ビットｄｉｆｆに代入し、付加ビットｄｉｆｆが示す値に−１を乗算した値を付加ビットｄｉｆｆに代入する（ステップＳ８３）。符号化データランダム生成部２５は、次式：
Ｓ＝ｌｏｇ２（ｄｉｆｆ＋１）
によりカテゴリ値Ｓを算出する（ステップＳ８４）。
【００６７】
符号化データランダム生成部２５は、配列ｂｑ＿ｍａｘ［］のうちの変数ｂｑ＿ｍａｘ［０］の値が変数ｄｃｄの値の絶対値より小さいときに（ステップＳ８５）、変数ｄｃｄの値の絶対値を変数ｂｑ＿ｍａｘ［０］に代入する（ステップＳ８６）
【００６８】
符号化データランダム生成部２５は、配列ｖ＿ｌｉｓｔ［］のうちからカテゴリ値Ｓと一致する変数ｖ＿ｌｉｓｔ［ｉ］をサーチして、一致するときのインデックス値ｉを求める。すなわち、符号化データランダム生成部２５は、インデックス値ｉに０を代入した後に（ステップＳ８７）、カテゴリ値Ｓが変数ｖ＿ｌｉｓｔ［ｉ］に一致するまで（ステップＳ８８、ＹＥＳ）、インデックス値ｉが示す値に１を加算した値をインデックス値ｉに代入する（ステップＳ８９）。
【００６９】
符号化データランダム生成部２５は、変数ｈｕｆｆｃｏｄｅ［ｉ］が示す値と変数ｈｕｆｆｓｉｚｅ［ｉ］が示す値とに基づいてハフマン符号ｈｃｏｄｅと付加ビットｄｉｆｆ［０：Ｓ−１］を生成して、符号化データＥＣＳを生成する（ステップＳ９０）。
【００７０】
このような動作によれば、変数ｂｑ＿ｍａｘ［０］は、変数ｄｃｄの値の絶対値の最大値を示している。
【００７１】
図１０は、そのＡＣ成分の符号化データを生成する動作を示している。ここでは、ＪＰＥＧの処理単位である１データユニット（ＤＣ成分１個、ＡＣ成分６３個）の処理動作について説明する。このとき、符号化データランダム生成部２５は、その６３個のＡＣ成分のデータを処理する。符号化データランダム生成部２５は、まず、変数ｊに１を代入する（ステップＳ１００）。符号化データランダム生成部２５は、変数ｊが示す値が６３以下であるかどうかを判別することにより、６３個のＡＣ成分のデータのうちの何個目のデータの処理を行っているのかを判定して（ステップＳ１０１）、６３個目であれば（ステップＳ１０１、ＮＯ）、終了する。
【００７２】
符号化データランダム生成部２５は、変数ｊが示す値が６３以下であるときに（ステップＳ１０１、ＹＥＳ）、６３個のＡＣ成分のデータのうちの処理が行われていない残りのデータの個数が１５個より少ないかどうかを判別する（ステップＳ１０２）。符号化データランダム生成部２５は、その残りのデータの個数が１５個より少ないときに（ステップＳ１０２、ＹＥＳ）、変数ｒ＿ｍａｘに６３にその残りのデータの個数を代入する（ステップＳ１０３）。符号化データランダム生成部２５は、その残りのデータの個数が１５個より少なくないときに（ステップＳ１０２、ＮＯ）、変数ｒ＿ｍａｘに１５を代入する（ステップＳ１０４）。
【００７３】
符号化データランダム生成部２５は、０から変数ｒ＿ｍａｘが示す値までの範囲のうちからランダムに選択された整数をラン長Ｒに代入する（ステップＳ１０５）。符号化データランダム生成部２５は、ラン長Ｒの値を変数ｊに代入する（ステップＳ１０６）。符号化データランダム生成部２５は、ラン長Ｒが０あるいは１５を示すときに（ステップＳ１０７、ＹＥＳ）、０から１０までの範囲のうちからランダムに選択された整数をカテゴリ値Ｓに代入する（ステップＳ１０８）。符号化データランダム生成部２５は、ラン長Ｒが０あるいは１５を示していないときに（ステップＳ１０７、ＮＯ）、１から１０までの範囲のうちからランダムに選択された整数をカテゴリ値Ｓに代入する（ステップＳ１０９）。
【００７４】
符号化データランダム生成部２５は、ラン長Ｒとカテゴリ値Ｓとがともに０を示すときに変数ｊに６３を代入する（ステップＳ１１０）。符号化データランダム生成部２５は、変数ｊが示す値に１を加算した値を変数ｊに代入する（ステップＳ１１１）。符号化データランダム生成部２５は、０から（２Ｓ−１）までの範囲のうちからランダムに選択された整数を付加ビットａｂｄに代入する（ステップＳ１１２）。
【００７５】
符号化データランダム生成部２５は、変数ｂｑ＿ｍａｘ［ｊ］が示す値と付加ビットａｂｄが示す値とを比較する（ステップＳ１１３）。符号化データランダム生成部２５は、変数ｂｑ＿ｍａｘ［ｊ］が示す値が付加ビットａｂｄが示す値より小さいときに、付加ビットａｂｄが示す値を変数ｂｑ＿ｍａｘ［ｊ］に代入する（ステップＳ１１４）。
【００７６】
符号化データランダム生成部２５は、ラン長Ｒ（４ビット）とカテゴリ値Ｓ（４ビット）を組み合わせてＲＳ値（８ビット）を生成し、配列ｖ＿ｌｉｓｔ［］からそのＲＳ値と一致する変数ｖ＿ｌｉｓｔ［ｉ］をサーチして、一致するときのインデックス値ｉを求める。すなわち、符号化データランダム生成部２５は、インデックス値ｉに０を代入した後に（ステップＳ１１５）、ＲＳ値が変数ｖ＿ｌｉｓｔ［ｉ］に一致するまで、インデックス値ｉが示す値に１を加算した値をインデックス値ｉに代入する（ステップＳ１１７）。
【００７７】
符号化データランダム生成部２５は、求まったインデックス値ｉに対応するｈｕｆｆｃｏｄｅ［ｉ］とｈｕｆｆｓｉｚｅ［ｉ］により、ハフマン符号ｈｃｏｄｅと付加ビットａｂｄ［０：Ｓ−１］を生成して、ＥＣＳデータを生成する（ステップＳ１１８）。符号化データランダム生成部２５は、変数ｊの値が６４になるまで、ステップＳ６１〜Ｓ７８を繰り返して実行する。符号化データランダム生成部２５は、このような動作により１データユニットに対応するＥＣＳデータを生成するが、これを繰り返すことにより、１フレーム分（１画像分）の符号化データＥＣＳを生成する。
【００７８】
このような動作によれば、変数ｂｑ＿ｍａｘ［ｊ］は、付加ビットａｂｄの最大値を示している。
【００７９】
このとき、量子化テーブルランダム生成部２２は、マーカーセグメントパラメータランダム生成部１１により生成された量子化テーブルセレクタＴｑｉと符号化データランダム生成部２５により生成された配列ｑｂ＿ｍａｘ［０：６３］とに基づいて、少なくともＳＯＦで指定されたＴｑｉに対応する量子化テーブル識別子Ｔｑと、１から１０２３／ｑｂ＿ｍａｘ［ｋ］の値までの範囲内でランダムに生成される量子化テーブル要素Ｑｋから、量子化テーブルマーカーセグメントＤＱＴを生成して、フレーム生成部１６へ出力する。すなわち、量子化テーブルランダム生成部２２は、以上から、量子化テーブルＤＱＴを逆量子化できる範囲内でランダムに生成する。
【００８０】
本発明によるデコーダー検証方法の実施の他の形態は、ＪＰＥＧ検証コンポーネント２０が適用されるデコーダー検証装置を用いて実行される。ユーザは、ＪＰＥＧ  Ｄｅｃｏｄｅｒ  ＤＵＴ２を検証するときに、制約情報５を作成する。ＪＰＥＧ検証コンポーネント２０は、制約情報５に基づいてＪＰＥＧデータ６を生成する。リファレンスソフト３は、コンピュータにより実行され、ＪＰＥＧデータ６をデコードすることにより期待値８を算出する。ユーザは、ＪＰＥＧ  Ｄｅｃｏｄｅｒ  ＤＵＴ２を用いて、ＪＰＥＧデータ６をデコードし、結果７を生成する。ユーザは、結果７と期待値８とが一致しているときにＪＰＥＧ  Ｄｅｃｏｄｅｒ  ＤＵＴ２が適切に動作していると判別し、結果７と期待値８とが異なっているときにＪＰＥＧ  Ｄｅｃｏｄｅｒ  ＤＵＴ２が適切に動作していないと判別する。
【００８１】
このようなデコーダー検証方法によれば、既述の実施の形態におけるＪＰＥＧ検証コンポーネント１を用いるデコーダー検証方法と同様にして、ユーザは、ＪＰＥＧ  Ｄｅｃｏｄｅｒ  ＤＵＴ２を検証するための工数と期間とを低減することができる。
【００８２】
さらに、ＪＰＥＧ検証コンポーネント１では、量子化テーブルの各要素の値は１で固定されていたのに対して、ＪＰＥＧ検証コンポーネント２０では、逆量子化できる範囲内でランダムに振ることができる。このため、ＪＰＥＧ検証コンポーネント２０を用いたデコーダー検証方法によれば、ＪＰＥＧ  Ｄｅｃｏｄｅｒ  ＤＵＴ２の検証で量子化テーブルに依存する部分の検証深度を高めることができる。
【図面の簡単な説明】
【００８３】
【図１】図１は、公知のデコーダー検証方法を示すブロック図である。
【図２】図２は、本発明によるＪＰＥＧ検証コンポーネントの実施の形態を示すブロック図である。
【図３】図３は、本発明によるＪＰＥＧ検証コンポーネントの実施の形態を示すブロック図である。
【図４】図４は、ハフマンテーブルランダム生成部の動作を示すフローチャートである。
【図５】図５は、符号化データランダム生成部の動作を示すフローチャートである。
【図６】図６は、ＤＣ成分の符号化データを生成する動作を示すフローチャートである。
【図７】図７は、ＡＣ成分の符号化データを生成する動作を示すフローチャートである。
【図８】図８は、本発明によるＪＰＥＧ検証コンポーネントの実施の他の形態を示すブロック図である。
【図９】図９は、ＤＣ成分の符号化データを生成する他の動作を示すフローチャートである。
【図１０】図１０は、ＡＣ成分の符号化データを生成する他の動作を示すフローチャートである。
【符号の説明】
【００８４】
１  ：ＪＰＥＧ検証コンポーネント
２  ：ＪＰＥＧ  Ｄｅｃｏｄｅｒ  ＤＵＴ
３  ：リファレンスソフト
５  ：制約情報
６  ：ＪＰＥＧデータ
７  ：結果
８  ：期待値
１１：マーカーセグメントパラメータランダム生成部
１２：量子化テーブル生成部
１４：ハフマンテーブルランダム生成部
１５：符号化データランダム生成部
１６：フレーム生成部
２０：ＪＰＥＧ検証コンポーネント
２１：マーカーセグメントパラメータランダム生成部
２２：量子化テーブルランダム生成部
２４：ハフマンテーブルランダム生成部
２５：符号化データランダム生成部
２６：フレーム生成部
【図１】
2010087949.tif 000005
【図２】
2010087949.tif 000006
【図３】
2010087949.tif 000007
【図４】
2010087949.tif 000008
【図５】
2010087949.tif 000009
【図６】
2010087949.tif 000010
【図７】
2010087949.tif 000011
【図８】
2010087949.tif 000012
【図９】
2010087949.tif 000013
【図１０】
2010087949.tif 000014