(57)【要約】【課題】  画像の部分復号を行うための支援情報を、リーズナブルなデータサイズで作成することができる。【解決手段】  ＤＷＴ(Discrete Wavelet Transform）を用い、ＤＷＴ係数を係数単位に符号化する第１の符号化方法、及び、ＤＷＴ係数をランレングス符号化する第２の符号化方法を切り替えて生成された符号化画像データに対し、部分復号を支援するための支援情報を生成する画像処理装置であって、復号を開始させたい垂直方向の画素位置を取得する第１の取得部と、符号化画像データを生成する際に用いられたＤＷＴフィルタのタップ数と当該ＤＷＴの適用回数を取得する第２の取得部と、第１の取得部、及び、第２の取得部で取得した情報に基づき、各サブバンドにおける画素位置のラインの符号化データの位置を表す情報、及び、画素位置のラインの１つ前のラインから得ることになる情報を支援情報として生成する生成部とを有する。【選択図】  図１１
2019068390.tif 000002
【特許請求の範囲】
【請求項１】
ＤＷＴ(Discrete Wavelet Transform）を用い、ＤＷＴ係数を係数単位に符号化する第１の符号化方法、及び、ＤＷＴ係数をランレングス符号化する第２の符号化方法を切り替えて生成された符号化画像データに対し、部分復号を支援するための支援情報を生成する画像処理装置であって、
復号を開始させたい垂直方向の画素位置を取得する第１の取得手段と、
前記符号化画像データを生成する際に用いられたＤＷＴフィルタのタップ数と当該ＤＷＴの適用回数を取得する第２の取得手段と、
前記第１の取得手段、及び、前記第２の取得手段で取得した情報に基づき、各サブバンドにおける前記画素位置のラインの符号化データの位置を表す情報、及び、前記画素位置のラインの１つ前のラインから得ることになる情報を前記支援情報として生成する生成手段と、
を有することを特徴とする画像処理装置。
【請求項２】
前記生成手段は、前記符号化画像データの後端に前記支援情報を付加する手段と含むことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記生成手段は、前記支援情報を、前記符号化画像データとは独立したファイルとして生成する手段を含むことを特徴とする請求項１に記載の画像処理装置。
【請求項４】
前記第１の符号化方法は、着目ＤＷＴ係数を、当該着目ＤＷＴ係数の周囲であって、且つ、前記着目ＤＷＴ係数の位置より１つ前のラインのｋパラメータに基づいて更新されるｋパラメータを用いてゴロム符号化する方法であって、
前記第２の符号化方法は０値のランを符号化する方法である
ことを特徴とする請求項１乃至３のいずれか１項に記載の画像処理装置。
【請求項５】
前記生成手段は、
前記符号化画像データを復号する復号手段と、
該復号手段による復号している際に、各サブバンドの各ライン毎に、
（１）前記符号化画像データの先頭からのオフセット位置を示す情報と、
（２）各ＤＷＴ係数が０／非０のいずれであったのかを示す情報と、
（３）ＤＷＴ係数を復号する際に更新したｋパラメータを示す情報
を抽出する抽出手段とを含み、
前記抽出手段で得られた情報のうち、前記第１の取得手段で取得された画素位置に応じた情報を前記支援情報として生成する
ことを特徴とする請求項４に記載の画像処理装置。
【請求項６】
前記生成手段は、前記抽出手段で得られた情報に基づき、各サブバンドの復号開始するラインについて
復号を開始するラインの符号化データのオフセット位置を示す情報、
復号を開始するラインの１つ前のラインの各ＤＷＴ係数が０／非０のいずれであったのかを示す情報と、
復号を開始するラインの１つ前のラインのｋパラメータを
前記支援情報として生成する
ことを特徴とする請求項５に記載の画像処理装置。
【請求項７】
前記支援情報を圧縮符号化する手段を更に有することを特徴とする請求項１乃至６のいずれか１項に記載の画像処理装置。
【請求項８】
前記第１の取得手段は、前記符号化画像データが表す画像の垂直方向の画素数をＨとし、復号する際のスレッド数をＴとしたき、先頭ラインを除く、Ｈ／Ｔラインの間隔で示される画素位置を取得する
ことを特徴とする請求項１乃至７のいずれか１項に記載の画像処理装置。
【請求項９】
ＤＷＴ(Discrete Wavelet Transform）を用い、ＤＷＴ係数を係数単位に符号化する第１の符号化方法、及び、ＤＷＴ係数をランレングス符号化する第２の符号化方法を切り替えて生成された符号化画像データに対し、部分復号を支援するための支援情報を生成する画像処理装置の制御方法であって、
復号を開始させたい垂直方向の画素位置を取得する第１の取得工程と、
前記符号化画像データを生成する際に用いられたＤＷＴフィルタのタップ数と当該ＤＷＴの適用回数を取得する第２の取得工程と、
前記第１の取得工程、及び、前記第２の取得工程で取得した情報に基づき、各サブバンドにおける前記画素位置のラインの符号化データの位置を表す情報、及び、前記画素位置のラインの１つ前のラインから得ることになる情報を前記支援情報として生成する生成工程と、
を有することを特徴とする画像処理装置の制御方法。
【請求項１０】
コンピュータが読み込み実行することで、前記コンピュータに請求項９に記載の方法の各工程として実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像の符号化／復号技術に関するものである。
【背景技術】
【０００２】
近年、４Ｋ動画と呼ばれる、フルＨＤの４倍の画素数を持つ動画を撮影・表示するデバイスが普及してきている。このような動画はデータ容量が膨大であるため、高い符号化効率が求められる。その一方で、リアルタイム伝送、リアルタイム再生の実現のためには、符号化処理・復号処理が軽量であることが求められる。
【０００３】
このようなニーズに応えるべく、高い符号化効率と処理負荷の軽減を両立する技術として、画像をＤＷＴ(Discrete Wavelet Transform)係数に変換し、その係数を予測符号化とランレングス符号化を用いた符号化技術が知られている（特許文献１）。この技術は、符号化対象として着目しているＤＷＴ係数(着目係数)の予測値を算出し、予測値と着目係数の誤差(予測誤差)をゴロム符号で符号化する。この予測値の算出に、着目係数に対して上に位置するＤＷＴ係数を使用している。
【０００４】
しかし、４Ｋ動画のように１フレーム当たりの画素数が大きくなると、比較的処理性能が低いノートＰＣ上で実行するソフトウェアでは、６０ｆｐｓの復号速度を実現するのは難しい。
【０００５】
一方で、画像を複数に分割し、各分割画像の復号をそれぞれのスレッドに割り当てて復号することが有効である。しかし、このようなスレッド分割による高速復号のためには、符号データが分割画像毎に独立している必要があり、必ずしもすべての画像がそのような符号化がなされているわけではない。
【０００６】
また、各フレームに施した画像処理結果を確認するために、該当箇所を等倍表示で数フレームにわたって繰り返し再生し、確認することが行われる。このような作業を、ディスプレイサイズが小さいノートＰＣで行う場合、画像全面をデコードし、必要個所を抜き出して表示することになる。しかし、さらに処理性能が低いノートＰＣでは、リアルタイム再生ができない、という問題が生じる。
【０００７】
これらの課題に対して、画像の任意の場所からデコードする機能を提供することが有効である。特許文献１で開示されている技術を用いて符号化した画像データを、任意の場所からその一部のみを復号する場合について考える。この場合、必要なＤＷＴ係数をデコードして、逆ＤＷＴをする必要がある。画素値に対して予測変換を行い、符号化された画像データを、任意の場所からデコードするため、デコード対象となる符号データまでのオフセット値とその予測値を生成し保存する技術が特許文献２に開示されている。また、ＤＷＴにより符号化された画像データの任意の領域の変換係数を、フィルタタップの情報を参照して抽出し、復号する技術が特許文献３に記載されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１６−１６３２７８号公報
【特許文献２】特開２００８−２２３７６号公報
【特許文献３】特開２０００−３４１６８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１の技術で符号化された動画データに対して、特許文献２で開示されている技術を適用すると、対象フレームの全サブバンドに対して、デコード開始位置に対応する予測値を保存することになる。ＤＷＴを垂直・水平方向にそれぞれ３回適用すると、１０サブバンド分の情報が必要になる。つまり、特許文献２のように画素値に対する予測符号化で保存する情報の１０倍の情報量が必要となる。さらに動画であれば、各フレームに対してそれらの情報を持つ必要がある。そのため、付加情報が膨大になってしまう。
【００１０】
また、特許文献３で開示されているように、フィルタタップ数のみから、表示領域に対応するＤＷＴ係数を選定した場合、不要なＤＷＴ係数を抜き出してしまう。なぜなら、画素位置が偶数か奇数かによって、その画素を復元するのに必要となる高周波ＤＷＴ係数の数、低周波係数の数が実際には異なるためである。また、復元する画素位置を考慮しない特許文献３で開示されている部分復号の方法では、常に復元画素位置をあらかじめ決められた条件下の位置と仮定している。そのため、画像全体を復号して切り抜いた画像と、特許文献３で開示されている部分復号によって得られた画像が一致しない場合がある。そのため、スレッド分割による高速デコード表示の際には、分割された領域間で画質劣化の可能性がある。
【００１１】
本発明は、上記課題に鑑みなされたものであり、画像の部分復号を行うための支援情報を、リーズナブルなデータサイズで作成する技術を提供しようとするものである。
【課題を解決するための手段】
【００１２】
この課題を解決するため、例えば本発明の画像処理装置は以下の構成を備える。すなわち、
ＤＷＴ(Discrete Wavelet Transform）を用い、ＤＷＴ係数を係数単位に符号化する第１の符号化方法、及び、ＤＷＴ係数をランレングス符号化する第２の符号化方法を切り替えて生成された符号化画像データに対し、部分復号を支援するための支援情報を生成する画像処理装置であって、
復号を開始させたい垂直方向の画素位置を取得する第１の取得手段と、
前記符号化画像データを生成する際に用いられたＤＷＴフィルタのタップ数と当該ＤＷＴの適用回数を取得する第２の取得手段と、
前記第１の取得手段、及び、前記第２の取得手段で取得した情報に基づき、各サブバンドにおける前記画素位置のラインの符号化データの位置を表す情報、及び、前記画素位置のラインの１つ前のラインから得ることになる情報を前記支援情報として生成する生成手段とを有する。
【発明の効果】
【００１３】
本発明によれば、画像の部分復号を行うための支援情報を、リーズナブルなデータサイズで作成することができる。
【図面の簡単な説明】
【００１４】
【図１】実施形態における画像処理装置の構成を示すブロック図。
【図２】実施形態における符号化／復号処理を示すブロック図。
【図３】実施形態における着目係数と周辺画素の位置を示す図。
【図４】実施形態におけるＤＷＴによるサブバンド分割を示す図。
【図５】実施形態における画像の符号処理化処理を示すフローチャート。
【図６】実施形態におけるサブバンドの符号化処理を示すフローチャート。
【図７】実施形態における付加情報の保存処理を示すフローチャート。
【図８】実施形態における画像全面の復号処理を示すフローチャート。
【図９】実施形態における係数情報の生成処理を示すフローチャート。
【図１０】実施形態における生成された係数情報の例を示す図。
【図１１】実施形態における付加情報の出力処理を示すフローチャート。
【図１２Ａ】、
【図１２Ｂ】、
【図１２Ｃ】、
【図１２Ｄ】実施形態におけるデコード開始位置と必要なＤＷＴ係数の関係を示す図。
【図１３】実施形態における部分復号処理を示すフローチャート。
【図１４】実施形態の変形例における付加情報の保存処理を示すフローチャート。
【図１５】第２の実施形態における付加情報の保存処理を示すフローチャート。
【図１６】第２の実施形態における付加情報の出力処理を示すフローチャート。
【図１７】第３の実施形態における付加情報の出力処理を示すフローチャート。
【発明を実施するための形態】
【００１５】
以下図面に従って本発明に係る実施形態を詳細に説明する。なお、以下の実施形態は本発明を限定するものではなく、また、本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。また、同一の構成については、同じ符号を付して説明する。
【００１６】
［第１の実施形態］
図１は、本実施形態における画像処理装置のブロック構成図である。この装置は、たとえばパーソナルコンピュータやワークステーション等であってもよい。本装置は、ＣＰＵ１０１、入力部１０２、蓄積部１０３、メモリ１０４、表示部１０５を有する。ＣＰＵ１０１は、装置全体の制御を司るものであり、メモリ１０４に格納されたプログラムを実行することで本装置を画像処理装置として機能させる。入力部１０２は、ユーザからの指示や、画像データなどを入力する部分である。これは、キーボードやマウスなどのポインティングシステムを含む。蓄積部１０３であり、画像データ、プログラムなどを蓄積する部分で、通常はハードディスクなどが用いられる。メモリ１０４は、ＲＯＭやＲＡＭを含み、処理に必要なプログラム、データ、作業領域などをＣＰＵ１０１に提供する。表示部１０５は、通常は液晶ディスプレイなどが用いられ、画像や各種処理メニュー等の表示を行い、入力部１０２と共にユーザインターフェースとして機能する。
【００１７】
また、後述するフローチャートの処理に必要な制御プログラムは、蓄積部１０３に格納されているか、メモリ１０４のＲＯＭに格納されているものとする。蓄積部１０３に格納されている場合は、一旦メモリ１０４内のＲＡＭに読み込まれてからＣＰＵ１０１により実行される。なお、システム構成については、上記以外にも様々な構成要素が存在するが、本発明の主眼ではないので、その説明は省略する。
【００１８】
図２（ａ）は本実施形態における符号化処理に係るブロック構成図である。図示における各要素は、ＣＰＵ１０１がメモリ１０４に格納されたプログラムを実行することで実現されるものである。ただし、図示の幾つかは、ハードウェアで実現させても構わない。なお、符号化対象の画像データは、蓄積部１０３に既に格納されているものとして説明する。
【００１９】
色成分分解部２０１は、符号化対象の画像データを入力し、その画像データから各色成分データのプレーンに分解する。実施形態では、入力画像データが１画素当たりＲ，Ｇ、Ｂの３色成分で構成されるものとする。それ故、色成分分解部２０１は、Ｒ成分のみで構成されるＲプレーン、Ｇ成分のみで構成されるＧプレーン、Ｂ成分のみで構成されるＢプレーンを生成し、各プレーンを順にＤＷＴ部２０２に供給する。つまり、ＤＷＴ部２０２にとっては、色成分分解部２０１からモノクロ多値画像データを受信することになる。なお、入力画像データが４成分で構成される場合には、色成分分解部２０１は４つプレーンを生成し、順にＤＷＴ部２０２に供給する。更に、入力画像データがベイヤ配列の画素で構成される場合、色成分分解部２０１は、Ｒプレーン、Ｇ１プレーン、Ｇ２プレーン、Ｂプレーンを生成し、順にＤＷＴ部２０２に供給する。
【００２０】
ＤＷＴ部２０２は、入力したモノクロ多値画像データに対してＤＷＴ（Discrete Wavelet Transform）を適用することで複数のサブバンドのＤＷＴ係数を生成し、量子化部２０３に供給する。量子化部２０３は、ＤＷＴ部２０２から供給された複数のサブバンドのＤＷＴ係数を量子化し、量子化後のＤＷＴ係数を符号化方式判定部２０４に供給する。
【００２１】
符号化方式判定部２０４は、着目ＤＷＴ係数の符号化方式の判定（後述）と選択を行う。本実施形態では、「ゴロム符号化」「０係数のランレングス符号化」のいずれかの符号化方式を選択する。そのため、判定結果によって、量子化後のＤＷＴ係数はゴロム符号化部２０５、ランレングス符号化部２０６のいずれかに振り分けられる。その後、両者から生成された符号化データを符号生成部２０７が予め設定されたデータフォーマット順に並べ替え、画像データの符号化データとして出力する。なお、ランレングス符号化で０係数のランを符号化するのは、実施形態における符号化対象がＤＷＴ変換係数であり、その多くが“０”になり易いためである。
【００２２】
図２（ｂ）は、同図（ａ）で生成された符号化画像データファイルの復号処理に係るブロック構成図である。同図の各要素は、ＣＰＵ１０１がメモリ１０４に格納されたプログラムを実行することで実現されるものである。なお、復号対象の画像データファイルは、蓄積部１０３に既に格納されているものとして説明する。
【００２３】
ヘッダ解析部２２１は、復号対象の画像データファイルのヘッダを解析し、復号に必要な情報を取得する。符号化方式判定部２２２は、着目ＤＷＴ係数が「ゴロム符号化」、「０値の係数のランレングス符号化」のいずれかで符号化されたかを判定し、その判定に応じて、符号化データをゴロム復号部２２３、ランレングス復号部２２４のいずれかに振り分けられる。ゴロム復号部２２３及びランレングス復号部２２４は、復号して得られた係数を、復号用情報一時保存部２２５に保存する。逆量子化部２２６は、復号用情報一時保存部２２５に格納された係数を逆量子化する。逆ＤＷＴ部２２７は、逆量子化後の係数に対して逆ＤＷＴを適用することで、色成分データを生成する。色成分合成部２２８は、各色成分データを合成し、カラー画像を生成し、出力する。
【００２４】
上記構成における実施形態における、１枚の画像データ（１色成分の画像データ）の符号化処理を、図５のフローチャートに従って説明する。なお、符号化に先立ち、ゴロム符号化部２０５が符号化する際に利用するｋパラメータを所定の値で初期化する。この初期値の値は復号側と共通になっていれば良く、その値は特に問わない。
【００２５】
ステップＳ５０１にて、色成分分解部２０１は、入力した符号化対象の画像データから、色成分毎のプレーンデータを取得する。ステップＳ５０２にて、ＤＷＴ部２０２は、ステップＳ５０１で取得したプレーンデータに対してＤＷＴを適用し、ＤＷＴ係数を得る。本実施形態では、ＤＷＴで用いるフィルタとして、ＪＰＥＧ２０００で使用されている５−３タップフィルタを用いて、垂直・水平方向それぞれについて２回適用するものとする。したがって、実施形態におけるＤＷＴ部２０２は、入力した画像データから、図４に示すように低周波サブバンドから２ＬＬ、２ＨＬ、２ＬＨ、２ＨＨ、１ＨＬ、１ＬＨ、１ＨＨの７つサブバンドのＤＷＴ係数を生成することになる。以降、これらのサブバンドを、上述の順番の０〜６の番号を対応付け、図示のようにＳＢ（０）乃至ＳＢ（６）とも表記する。
【００２６】
ステップＳ５０３にて、量子化部２０３はＤＷＴ係数を量子化する。ステップＳ５０４にて、符号化方式判定部２０４は、サブバンド番号を表すカウンタｉを“０”で初期化する。そして、ステップＳ５０５にて、符号化方式判定部２０４は、サブバンドｓｂ（ｉ）のＤＷＴ係数を、ゴロム符号化部２０５、ランレングス符号化部２０６を利用して符号化を行う。このステップＳ５０５の処理の詳細は後に説明する。
【００２７】
ステップＳ５０５においてサブバンドｓｂ（ｉ）の符号化を終えると、ステップＳ５０６にて、符号化方式判定部２０４はサブバンド番号のカウンタｉに“１”を加算し、カウンタを進める。そして、ステップＳ５０７にて、符号化方式判定部２０４は、全てのサブバンドの符号化が終了したかどうかを判定する。すなわち、サブバンド番号カウンタｉがサブバンドの数(本実施形態では“７”）と等しければ、すべてのサブバンドの符号化が終了したと判定できる。この場合、本処理を終了する。まだ、符号化が終了していないサブバンドが残っていると判定した場合、符号化方式判定部２０４は処理をステップＳ５０５へ処理を戻す。
【００２８】
なお、上記処理を全色成分（全プレーン）について行うことになるが、生成された各色成分の符号化データは１つのファイルとして蓄積部１０３に格納される。このとき、ＣＰＵ１０１は、復号に必要な情報をファイルヘッダに格納する。
【００２９】
次に、上記ステップＳ５０５の１つのサブバンドの符号化処理を図６のフローチャートを使って説明する。
【００３０】
サブバンド内の係数の符号化は、基本的にラスタースキャン順に行われる。そのため、ステップＳ６０１にて、符号化方式判定部２０４は、符号化しようとしているサブバンドＳＢ（ｉ）（実施形態ではｉ＝０、１、…６のいずれか）に含まれるＤＷＴ係数の総ライン数Ｈｓｂを取得する。なお、このＨｓｂは、符号化対象の画像データのサイズ、ＤＷＴの適用回数、並びに、着目しているサブバンドがいずれであるのかに応じて一義的に決まるものである。また、サブバンドｓｂ（ｉ）における１ライン分のＤＷＴ係数の個数も、これらに基づき一義的に決まる。
【００３１】
ステップＳ６０２にて、符号化方式判定部２０４は、ライン番号用のカウンタＬに０を代入し、初期化する。次のステップＳ６０３にて、符号化方式判定部２０４は、サブバンドＳＢ（ｉ）のＬライン目のＤＷＴ係数を取得する。
【００３２】
以下のステップＳ６０４〜Ｓ６０８の処理は、Ｌライン目のＤＷＴ係数の先頭から順に着目係数ｘとして符号化方式の選択処理と符号化処理となる。
【００３３】
ステップＳ６０４には、符号化方式判定部２０４は、着目係数ｘをランレングス符号化するかどうかを判定する。この判定は特に限定はないが、例えば、着目係数ｘの周囲の既に符号化が完了している係数の値に基づいて判定する。具体的には、図３に示すように、着目係数ｘの周囲係数ａ、ｂ、ｃ、ｄを参照係数とし、すべての参照係数ａ乃至ｄが０であれば、着目係数ｘからランレングス符号化を開始すると判定する。なお、着目係数ｘが、サブバンドの最初のライン上に位置する場合やラインの先頭や終端に位置する場合、周囲係数のいくつかが存在しない場合がある。このような場合、その係数の値を“０”と仮定するものとする。
【００３４】
さて、着目係数ｘについてランレングス符号化を行うと判定した場合（ａ＝ｂ＝ｃ＝ｄ＝０の場合）、符号化方式判定部２０４は処理をステップＳ６０５へ処理を進める。そうでなければ、ステップＳ６０６へ処理を進める。
【００３５】
ステップＳ６０５にて、ランレングス符号化部２０６は、着目係数ｘが“０”であれば、ｘに後続する係数の値が“０”である限り値“０”のラン長を算出（カウント）し、ランレングス符号化する。そして、着目係数ｘが直前の係数と異なった場合、ランレングス符号化部２０６はラン終端となったと判定し、それまで算出した計数値の符号化データを生成する。そして、ランレングス符号化部２０６は、ラン終端となった係数をゴロム符号化するため、処理をステップＳ６０６に進める。また、ステップＳ６０５に最初に移った場合、着目係数ｘが０でない場合も起こり得る。この場合、ラン長が０の符号語を出力し、着目係数ｘをラン終端としてステップＳ６０６へ処理を進める。
【００３６】
ステップＳ６０６にて、ゴロム符号化部２０５はＤＷＴ係数単位に符号化を行う。具体的には、ゴロム符号化部２０５、ステップＳ６０４から処理が入ってきたＤＷＴ係数、またはステップＳ６０５でラン終端となったＤＷＴ係数を、着目係数ｘ用に更新されたｋパラメータを用いてゴロム符号化する。ステップＳ６０７にて、ゴロム符号化部２０５は、ゴロム符号化で使用するｋパラメータを、着目係数ｘが位置するラインの上ラインのｋパラメータを参照しながら更新する。すなわち、着目係数ｘのｋパラメータを更新する際に、周囲係数ｂ、ｄに位置するラインのｋパラメータを参照して、着目係数ｘの次に符号化する係数に対するｋパラメータを決定する。
【００３７】
次にステップＳ６０８にて、符号化方式判定部２２２は、Ｌライン目のＤＷＴ係数の全ての符号化を終えたか否かを判定する。符号化を終えていると判断すれば、ステップＳ６０９へ進み、そうでなければ、処理をステップＳ６０４へ戻す。
【００３８】
ステップＳ６０９では、符号化方式判定部２２２は、ＤＷＴ係数ライン用カウンタＬに“１”を加算し更新する。ステップＳ６０９にて、符号化方式判定部２２２は、カウンタＬとステップＳ６０１で取得した、係数ライン数Ｈｓｂを比較する。Ｌ＝Ｈｓｂであれば、着目サブバンドｓｂ（ｉ）のすべてのＤＷＴ係数の符号化が終えたことになるので、このフローを終了する。そうでなければ、符号化方式判定部２２２は、ステップＳ６０３へ処理を戻し、まだ符号化されていないＤＷＴ係数ラインを符号化する。
【００３９】
以上説明したように、本実施形態の符号化においては、符号化モードの判定時およびサブバンドのｋパラメータ更新時に、着目係数ｘが存在するラインの１つ前のライン上に位置する係数値およびｋパラメータを使用する。
【００４０】
次に、上述した符号化処理で得た符号化データを、２スレッドにて効率よく復号するための支援情報を生成・保存する方法について説明する。なお、実施形態では、この支援情報を、符号化データに付加するので、以降では付加情報と呼ぶ。ここで、２つのスレッドに係る処理の負担に偏りが発生しないようにすることが望ましい。それ故、画像の高さを２分割し、上半分を一方のスレッドで復号し、下半分をもう一方のスレッドで復号するようにする。ここで理解を容易にするため、符号化対象の画像データのサイズは水平方向３８４０画素×垂直方向２１６０画素とする。従って、実施形態では、画像データを、３８４０×１０８０画素に２分割するものとし、指定された画素位置からデコードするための付加情報を保存する処理について説明する。
【００４１】
図７は本実施形態の付加情報の保存処理のフローチャートである。なお、本処理も、ＣＰＵ１０１がメモリ１０４に格納されたプログラムを実行することで実現されるものである。
【００４２】
ステップＳ７０１にて、ＣＰＵ１０１は画像全面を復号する。詳細は後述から明らかになるが、実施形態では、部分復号を可能とするための付加情報の符号化画像データファイルの後端に付加する。つまり付加情報を追加することでファイルのサイズが大きくなる。そのため、付加情報の開始位置を示す特定する情報をファイルヘッダに格納する。単純には、付加情報を付加する以前のファイルサイズをファイルヘッダに格納すればよいであろう。なお画像全面の復号処理については後にフローチャートを使って詳しく説明する。
【００４３】
ステップＳ７０２にて、ＣＰＵ１０１はステップＳ７０１で復号した画像全体を表示部１０５に表示する。ステップＳ７０３にて、ＣＰＵ１０１は、部分復号のための付加情報を保存する必要があるかを判断する。本実施形態では、ステップＳ７０２で表示された画像に対して、ユーザが入力部１０２（マウス等）を使って高速復号するための符号化データの生成の指定を入力した場合、ＣＰＵ１０１は部分復号用の付加情報を保存すると判断する。付加情報を保存すると判断された場合はステップＳ７０４へ進む。そうでなければ、このフローを終了する。
【００４４】
ステップＳ７０４にて、ＣＰＵ１０１は、部分復号する領域の先頭ライン位置を取得する。本実施形態では、２分割するため、部分復号の先頭ライン位置として画像下半分の先頭ライン１０８１が取得されたものとする。もし、３分割や４分割など３以上に分割する場合には、（分割数−１）個の値が部分復号する領域の先頭ライン位置として取得される。ステップＳ７０５では、付加情報を保存するサブバンド番号を取得する。本実施形態では、２ＬＬ以外のサブバンドｓｂ（１）〜ｓｂ（６）を付加情報保存サブバンドとしてあらかじめ決められているものとする。次に、ステップＳ７０６では、ステップＳ７０５で取得したサブバンド番号のサブバンドに対する付加情報を出力し、このフローを終了する。
【００４５】
次に、ステップＳ７０１の画像全面の復号処理を、図８のフローチャートを用いて説明する。
【００４６】
ステップＳ８０１にて、ＣＰＵ１０１は、色成分番号のカウンタＣに“０”を代入し、初期化する。なお、実施形態では、画像データはＲ，Ｇ，Ｂの３成分を有するものとしている。そこで、例えばカウンタＣ＝０はＲ成分を、Ｃ＝１はＧ成分を、Ｃ＝２はＢ成分をそれぞれ表すものとする。
【００４７】
ステップＳ８０２にて、ＣＰＵ１０１は、サブバンド番号用のカウンタｉに“０”を代入する。ステップＳ８０３にて、ＣＰＵ１０１は、カウンタＣで示される色成分のサブバンドｓｂ（ｉ）のＤＷＴ係数の幅(水平方向の係数の数）Ｗｓｂとライン数（垂直方向の係数の数）Ｈｓｂを取得する。ステップＳ８０４にて、ＣＰＵ１０１は、色成分Ｃ、サブバンドｓｂ（ｉ）のライン番号用カウンタＬ（Ｃ，ｉ）に“０”を代入し初期化する。
【００４８】
ステップＳ８０５にて、ＣＰＵ１０１は、ラインＬ（Ｃ，ｉ）の符号データ先頭までのオフセット値をメモリ１０４に予め確保された一時記憶領域に保存する。ステップＳ８０６にて、ＣＰＵ１０１は、Ｌ（Ｃ，ｉ）ラインのＤＷＴ係数を復号し、係数情報を生成する。この復号処理は符号化の逆の処理になる。それ故、ＣＰＵ１０１は、Ｌ（Ｃ，ｓｂ）−１のＤＷＴ係数を参照して、“０”係数のランレングス復号か、ゴロム復号かを判定する。判定結果をもとにＤＷＴ係数を復号し、符号化と同じようにｋパラメータを更新する。ＣＰＵ１０１は、このような復号処理を１ライン分のＤＷＴ係数が得られるまで繰り返しながら、その情報を一時保存領域に保存する。この処理については図９のフローチャートを用いて後に詳しく説明する。
【００４９】
このステップＳ８０７にて、ＣＰＵ１０１は、ステップＳ８０６でデコードされたＤＷＴ係数を逆量子化する。ステップＳ８０８にて、ＣＰＵ１０１は、ライン番号用カウンタＬ（Ｃ，ｉ）に“１”を加算し更新する。ステップＳ８０９にて、ＣＰＵ１０１は、ステップＳ８０８で更新されたライン番号用カウンタＬ（Ｃ，ｉ）と、ステップＳ８０３で取得したＤＷＴ係数ライン数Ｈｓｂを比較する。両者が等しければ、ＣＰＵ１０１は、このサブバンドのすべてのＤＷＴ係数は復号できたものと判定し、処理をステップＳ８１０へ進む。そうでなければ、ＣＰＵ１０１は、処理をステップＳ８０５へ戻し、残りのＤＷＴ係数を復号する。
【００５０】
ステップＳ８１０にて、ＣＰＵ１０１は、サブバンド番号用カウンタｉに“１”を加算し更新する。ステップＳ８１１ではすべてのサブバンドのデータが終了したかどうかを判定する。すなわち本実施形態の場合、カウンタｉがサブバンド数“７”と等しければ、全サブバンドの復号が終了したものと判定する。終了と判定場合には、ＣＰＵ１０１は処理をステップＳ８１２へ進め、そうでなければ処理をステップＳ８０３に戻し、残りのサブバンドの復号処理を行う。
【００５１】
ステップＳ８１２にて、ＣＰＵ１０１は逆量子化後のＤＷＴ係数に対して逆ＤＷＴを実施する。ステップＳ８１３にて、ＣＰＵ１０１は、色成分用のカウンタＣに“１”を加算し更新する。ステップＳ８１４にて、ＣＰＵ１０１は、すべての色成分の復号が終了したかどうかを判定する。すなわち、カウンタＣが色成分数と同一であれば、ＣＰＵ１０１はすべての復号が終了したものとし、ステップＳ８１５へ進む。そうでなければ、処理をステップＳ８０２へ戻す。ステップＳ８１５にて、ＣＰＵ１０１は、デコードされたすべての色成分を合成し、表示可能な形式に変換し、本フローを終了する。
【００５２】
次に、ステップＳ８０７のＤＷＴ係数１ライン分の復号および係数情報の生成処理について、図９のフローチャートを用いて説明する。ステップＳ９０１にて、ＣＰＵ１０１は、係数の位置を特定するがための係数カウンタＸｓｂを０で初期化する。ステップＳ９０２では、ランレングス復号、ゴロム復号の判定に必要な参照係数の値を取得する。本実施形態の場合、図３に示す係数ｘの復号時には、既にデコードが終了している周囲係数ａ、ｂ、ｃ、ｄを参照する。そのため、ＣＰＵ１０１は、周囲係数ａ、ｂ、ｃ、ｄの値を参照係数値として取得することになる。また、係数ｘがサブバンドの上端または左右端に位置する場合は、参照係数が存在しないが、その場合は存在しない係数を０と仮定する。
【００５３】
ステップＳ９０３にて、ＣＰＵ１０１は、ステップＳ９０２で取得した参照係数の値から、デコード対象の着目係数（ライン先頭からＸｓｂ番目の係数）がランレングス符号化されているかを判断する。本実施形態の場合、符号化時と同様、着目係数の周囲ａ，ｂ，ｃ，ｄの関係が「ａ＝ｂ＝ｃ＝ｄ＝０」であれば、着目係数はランレングス符号化されていると判定する。そうでなければ、ランレングス符号化されていないと判定する。ランレングス符号化と判定された場合は、ＣＰＵ１０１は処理をステップＳ９０４へ進め、そうでなければ、処理をステップＳ９０７へ進める。
【００５４】
ステップＳ９０４にて、ＣＰＵ１０１は、符号化データを復号し、ラン長ＲＬを取得する。そして、ＣＰＵ１０１は、ＤＷＴ係数としてＲＬ個の“０”を出力する。本実施形態におけるランレングス符号化部２０６は、着目ＤＷＴ係数が０の場合のラン長を符号化しているためである。ステップＳ９０５にて、ＣＰＵ１０１は、係数情報として、ＲＬビットの“０”をメモリ１０４の一次保存用領域に保存する。次に、ステップＳ９１４にて、“０”として復号されたＲＬ個のＤＷＴ係数に対応するｋパラメータとして、直前のｋパラメータをＲＬ個保存する。そして、ステップＳ９０６にて、ＣＰＵ１０１は、係数カウンタＸｓｂにラン長ＲＬを加算し更新する。次の復号対象の係数の位置をラン長分ＲＬだけ進めるためである。次に、ステップＳ９１１にて、ＣＰＵ１０１は、係数カウンタＸｓｂとステップＳ８０３で取得したサブバンドの幅Ｗｓｂを比較する。ＸｓｂとＷｓｂが同じであれば、ＣＰＵ１０１は、本係数ラインのすべてのＤＷＴ係数の復号が終了したと判断し、このフローを終了する。そうでなければ、ＣＰＵ１０１は処理をステップＳ９０７へ進める。
【００５５】
ステップＳ９０７にて、ＣＰＵ１０１は、着目係数がゴロム符号で符号化されていると見なし、着目係数用に更新されたｋパラメータに基づいてゴロム復号し、１つのＤＷＴ係数を出力する。そして、ゴロム符号化で利用するｋパラメータを更新し、メモリ１０４の一次保存用領域に保存する。ｋパラメータの更新は符号化時と同様に、周囲係数ｂ、ｄに位置するラインのｋパラメータを参照する。ステップＳ９１２では、ステップＳ９０７で復号したＤＷＴ係数値が“０”であったかどうかを判定する。“０”ではなかったら、ステップＳ９０８へ進み、“０”であったら、ステップＳ９１３へ進む。ステップＳ９０８では、復号したＤＷＴ係数の情報として、１ビットの“１”をメモリ領域に保存する。ステップＳ９１３では、復号したＤＷＴ係数の情報として、１ビットの“０”をメモリ領域に保存する。すなわち、一次保存用領域には、ＤＷＴ係数それぞれが０か非０かを表すビット列が生成され、そのバイト数は（Ｗｓｂ＋７）／８の商である。ステップＳ９０９にて、ＣＰＵ１０１は係数カウンタＸｓｂに１を加算し更新する。ステップＳ９１０にて、ＣＰＵ１０１は、係数カウンタＸｓｂとステップＳ８０３で取得したサブバンドの幅Ｗｓｂを比較する。ＸｓｂとＷｓｂが同じであれば、ＣＰＵ１０１は、本係数ラインのすべてのＤＷＴ係数の復号が終了したと判断し、このフローを終了する。そうでなければ、ＣＰＵ１０１は処理をステップＳ９０２へ戻し、次のＤＷＴ係数を復号処理と、係数情報およびｋパラメータの保存処理を行う。
【００５６】
以上説明したような処理により、図１０に示すような係数情報が、メモリ１０４の一次保存用領域に保存されることになる。すなわち、各色成分の、各サブバンドに対して、ＤＷＴ係数１ライン毎に、その符号データまでのオフセット値、各ＤＷＴ係数を復号する際に利用するｋパラメータの値、各ＤＷＴ係数の０／非０情報のビット列が保存される。
【００５７】
図１０のような係数情報を参照すると、符号化データ中の、或る１つの色成分に着目したとき、その色成分の任意のサブバンドで任意のラインの係数データ（量子化後のＤＷＴ係数データ）の符号化データの位置を特定できる。しかも、そのラインにおけるゴロム符号化された位置とランレングス符号化された位置が判明し、ゴロム符号化された係数については利用したｋパラメータの推移を、１つ前のラインの情報を参照することで取得できる。よって、任意のサブバンドの任意のラインを、他のラインとは独立して復号できることになる。
【００５８】
次に、ステップＳ７０６の付加情報の出力処理を、図１１のフローチャートを使って説明する。
【００５９】
ステップＳ１１０１にて、ＣＰＵ１０１は、部分復号画素位置を保存する。本実施形態の場合、「１０８１」となる。ステップＳ１１０２にて、ＣＰＵ１０１は、色成分のカウンタＣを“０”で初期化する。ステップＳ１１０３にて、ＣＰＵ１０１は、サブバンド番号用のカウンタｉを“０”で初期化する。ステップＳ１１０４では、サブバンドｓｂ（ｉ）が付加情報保存対象かどうかを判定する。すなわち、サブバンドｓｂ（ｉ）がステップＳ７０５で取得した番号であるかどうかを判定する。ＣＰＵ１０１は、Ｓ７０５で取得した番号であると判定した場合、処理をステップＳ１１０５へ進め、そうでなければ処理をステップＳ１１０８へ進める。なお、実施形態では、付加情報は、サブバンドｓｂ（０）を除く、ｓｂ（１）〜ｓｂ（６）に対して付加するものとしている。
【００６０】
ステップＳ１１０５にて、ＣＰＵ１０１は、サブバンドｓｂ（ｉ）のデコードに必要なＤＷＴ係数ラインの先頭番号Ｍを算出する。このＭは、ステップＳ１１０１で取得した復号を開始する画素位置および、ＤＷＴフィルタのタップ数、ＤＷＴフィルタの適用回数によって異なる。本実施形態の場合、必要となるＤＷＴ係数の範囲を図１２Ａ乃至１２Ｄの太枠で示す。したがって、本実施形態の場合、部分復号画素位置を４で割った時の商をＮと表すと、各サブバンドにおいて、表１に示す値が取得される。
【００６１】
【表１】
2019068390.tif 000003
【００６２】
本実施形態では開始画素位置が１０８１＝２７０×４＋１であるため、サブバンドｓｂ（０）〜ｓｂ（６）のそれぞれに対して、２７０、２７０、２６９、２６９、５４０、５３９，５３９の値が取得できる。
【００６３】
次に、ステップＳ１１０６にて、ＣＰＵ１０１は、色成分Ｃと、サブバンドｓｂ（ｉ）のＤＷＴ係数ラインＭの符号化データまでのオフセット値をファイルの終端に出力する。ステップＳ１１０７にて、ＣＰＵ１０１は、色成分Ｃ、サブバンドｓｂ（ｉ）のライン（Ｍ−１）のＤＷＴ係数に関する０／非０情報とｋパラメータをファイルの終端に出力する。ステップＳ１１０８ではサブバンド番号ｉに“１”を加算する。ステップＳ１１０７、Ｓ１１０８で出力した情報を復号時に参照することで、該当位置から復号できる。ステップＳ１１０９にて、ＣＰＵ１０１は、サブバンド番号ｉとサブバンド数を比較し、すべてのサブバンドに関して付加情報の出力処理を終えたかどうかを判断する。すべてのサブバンドの処理が終わっている場合、ＣＰＵ１０１は処理をステップＳ１１１０へ進め、そうでなければ、ステップＳ１１０６へ処理を戻す。
【００６４】
ステップＳ１１１０にて、ＣＰＵ１０１は、色成分のカウンタＣに“１”を加算する。ステップＳ１１１１にて、ＣＰＵ１０１は、カウンタＣと色成分数を比較する。Ｃが色成分数に達していれば、すべての色成分に関する情報を保存したことになる。それ故、ＣＰＵ１０１は、このフローを終了する。また、カウンタＣが色成分数と異なる場合、ＣＰＵ１０１は、処理をステップＳ１１０３へ戻し、未処理の色成分に係る処理を行う。
【００６５】
次に、図１１に示すフローに従って付加情報が付与された符号化データから部分復号する処理手順を図１３のフローを参照して説明する。なお、部分復号処理は図８のフローを使って説明した画像全面の復号処理と共通する部分が多い。そこで、図１３においても、図８と同じ処理をするステップについては、図８と同じ番号を付与し、詳しい説明については割愛する。
【００６６】
ステップＳ１３０１にて、ＣＰＵ１０１は、表示範囲を取得する。本実施形態では、３８４０ｘ２１６０の画像を画像の高さ方向に２分割して復号する。したがって、先頭ラインから１０８０ラインまでの第１の領域と、１０８１ライン目から終端ライン（２１６０ライン）までの第２の領域のいずれかが復号範囲として取得される。以下は、上記の第１、第２の領域のいずれかの復号処理となる。
【００６７】
ステップＳ１３０２にて、ＣＰＵ１０１は、ファイルヘッダを解析し、色空間名、色成分数、ＤＷＴの適用回数や利用したフィルタサイズといった情報を取得する。本実施形態の場合、５−３タップフィルタを垂直・水平方向に２回ずつ適用している。ステップＳ１３０３にて、ＣＰＵ１０１は、ステップＳ１３０１で取得した復号範囲を生成するに当たり、各サブバンドの復号開始位置Ｐｓｂ（）、終了位置Ｑｓｂ（）を取得する。実施形態では、ＤＷＴを水平、垂直とも２回ずつ実行する例を示しているので、サブバンドの個数は７である。それ故、ＣＰＵ１０１は、サブバンドｓｂ（０）の復号開始位置Ｐｓｂ（０）および終了位置Ｑｓｂ（０）、サブバンドｓｂ（１）の復号開始位置Ｐｓｂ（１）及び終了位置Ｑｓｂ（１）、…、サブバンドｓｂ（６）の復号開始位置Ｐｓｂ（６）及び終了位置Ｑｓｂ（６）を取得する。ここで、復号開始位置Ｐｓｂ（）とは、ステップＳ１１０５で取得したＭと同じ値である。したがって、本実施形態の場合、第１の領域の場合はすべてサブバンドに対して、Ｐｓｂ（ｉ）＝０（ただし、ｉ＝０〜６）となる。また、第２の領域の場合はＰｓｂ（０）〜Ｐ（６）のそれぞれは、２７０、２７０、２６９、２６９、５４０、５３９，５３９の各値が取得される。終了位置Ｑｓｂ（）は、開始位置と同様に、表示範囲の終端画素位置およびフィルタタップ数、ＤＷＴ適用回数によって一意に決めることができる。本実施形態の場合、終端画素位置を４で割った時の商をＮと表すと、各サブバンドにおいて、表２に示す値が取得される。
【００６８】
【表２】
2019068390.tif 000004
【００６９】
本実施形態の場合、第１の領域の表示範囲の終端は１０８０＝２７０×４＋０であるため、Ｑｓｂ（０）〜Ｑｓｂ（６）のそれぞれに対して、２７０、２７０、２７０、２７０、５４０、５４０、５４０の値が取得される。一方、第２の領域の表示範囲の終端は画像終端であるため、サブバンドの高さと同一の値が取得される。
【００７０】
次に、ステップＳ８０１にて、ＣＰＵ１０１は、色成分番号用のカウンタＣに“０”を代入し、初期化する。ステップＳ８０２にて、ＣＰＵ１０１は、サブバンド番号の変数ｉに“０”を代入し初期化する。ステップＳ１３０４にて、ＣＰＵ１０１は、サブバンドｓｂ（ｉ）に対して、復号範囲に関する付加情報が保存されているかどうかを判断する。付加情報があると判断した場合、ＣＰＵ１０１は処理をステップＳ１３０５へ進める。また、否の場合、ＣＰＵ１０１は処理をステップＳ１３０７へ進める。本実施形態の場合、サブバンド番号ｉが１以上の場合には付加情報が保存されているため、ステップＳ１３０５へ進む。
【００７１】
ステップＳ１３０５にて、ＣＰＵ１０１は、色成分Ｃのサブバンドｓｂ（ｉ）に対応する付加情報を取得する。すなわち、Ｐｓｂ（ｉ）の符号化データへのオフセット、Ｐｓｂ（ｉ）−１ライン目の各ＤＷＴ係数の０／非０情報のビット列および、ｋパラメータが取得される。ステップＳ１３０６にて、ＣＰＵ１０１は、ステップＳ１３０５にて取得した符号データのオフセット位置に読み出し開始位置を移動する。
【００７２】
一方、本実施形態の場合、サブバンドｓｂ（０）の場合には付加情報が保存されていないため、処理はステップＳ１３０７へ進む。ステップＳ１３０７にて、ＣＰＵ１０１は、サブバンドＳｂの復号開始位置Ｐｓｂ（ｉ）の１つ前のライン上まで復号する。
【００７３】
ステップＳ１３０８にて、ＣＰＵ１０１は、ステップＳ１３０５で取得したＰｓｂ（ｉ）−１ライン目の各ＤＷＴ係数の０／非０情報のビット列および、ｋパラメータの値を、デコード時に参照する上ライン情報としてセットし、処理をステップＳ１３０９へ進める。或いは、ＣＰＵ１０１は、ステップＳ１３０７での復号処理の過程で取得したＱｓｂ（ｉ）−１ライン目の各ＤＷＴ係数情報およびｋパラメータの値をデコード時に参照する上ライン情報としてセットする。
【００７４】
ステップＳ１３０９にて、ＣＰＵ１０１は、色成分Ｃ、サブバンド番号ｉのライン番号のカウンタＬ（Ｃ，ｉ）をＰｓｂ（ｉ）で初期化する。ステップＳ１３１０にて、ＣＰＵ１０１は、ＤＷＴ係数のＬ（Ｃ，ｉ）を復号する。次に、ステップＳ８０７にて、ＣＰＵ１０１は、ステップＳ１３１０で復号したＤＷＴ係数ラインの逆量子化を行う。そして、ステップＳ８０８には、ＣＰＵ１０１は、ライン番号のカウンタＬ（Ｃ，ｓｂ）に“１”を加算する。ステップＳ１３１１にて、ＣＰＵ１０１は、ラインカウンタＬ（Ｃ，ｉ）と復号終了位置Ｑｓｂ（ｉ）とを比較する。両者が同じ値であれば、ＣＰＵ１０１は復号終了位置まで復号したと判断し、処理をステップＳ８１０へ進む。そうでなければ、ＣＰＵ１０１は、処理をステップＳ１３１０へ戻す。ステップＳ８１０〜ステップＳ８１５は既に説明した処理と同一であるので、ここでの説明は割愛する。
【００７５】
以上説明したように、一旦、付加情報の生成をすれば、任意の位置から容易に部分復号できることになる。さらに、復号画素位置、フィルタタップ数およびフィルタ適用回数を参照し、各サブバンドのＤＷＴ係数に対して復号開始位置を算出するため、画像全面を復号した後に切り抜いた結果と完全に一致させることができる。
【００７６】
なお、本実施形態では、付加情報はファイルの最後に付与したが、これに限るものではない。たとえば、ヘッダの中にユーザが自由に使用できる領域があれば、その領域に出力してもよい。あるいは、付加情報を別ファイルとして保存してもよい。
【００７７】
［第１の実施形態の変形例］  
上記第１の実施形態では、符号化方式に応じて付加情報を保存するサブバンドを選択していた。本変形例では、サブバンドのＤＷＴ係数の数から付加情報を保存するサブバンドを選択する方法について述べる。
【００７８】
第１の実施形態と本変形例との差異は、付加情報の保存のフローチャートである。本変形例の付加情報の保存のフローチャートを図１４に示す。図１４の処理ステップのうち、第１の実施形態と同様の処理ステップに関しては、図７と同じ番号を付与し、ここでの説明は割愛する。
【００７９】
ステップＳ７０１〜ステップＳ７０４は第１の実施形態と同様の動作である。ステップＳ１４０１にて、ＣＰＵ１０１は、ＤＷＴ係数の数が、画素数の１／４より大きいサブバンド番号を、付加情報を付与するサブバンドの番号として取得する。本実施形態では、高周波サブバンドのうち、サイズが小さいサブバンド２ＨＬ、２ＬＨ，２ＨＨを除いた、サブバンド番号４〜６の３サブバンド｛１ＨＬ、１ＬＨ、１ＨＨ｝となる。したがって、Ｓ７０６にて、ＣＰＵ１０１は、サブバンド番号４〜６の付加情報を出力する。ステップＳ７０６に関しては第１の実施形態と同様の処理である。
【００８０】
本変形例の付加情報保存方法を用いると、ＤＷＴ係数の数が多いサブバンドに対してのみ付加情報を付与することができる。そのため、付加情報の量を第１の実施形態よりも更に小さくすることができる。また、サブバンドの復号処理に要する時間はＤＷＴ係数の数に依存するため、復号処理にかかる時間が大きいサブバンドのみ付加情報を付与しているとも言える。
【００８１】
［第２の実施形態］
第１の実施形態では、サブバンドによって付加情報を付与するかどうかを決定する方法について説明した。本第２の実施形態においては、符号量が大きい色成分にのみ付加情報を付与する例について説明する。
【００８２】
本第２の実施形態が第１の実施形態と異なるのは、付加情報の保存処理である。本第２の実施形態の付加情報の保存処理について図１５を用いて説明する。図１５において、第１の実施形態の図７のフローチャートと同様の動作ステップには、図７と同じ番号を付与し、ここでの説明は割愛する。
【００８３】
ステップＳ７０１にて、ＣＰＵ１０１は、第１の実施形態と同様に画像全面の復号を行う。ステップＳ１５０１において、ＣＰＵ１０１は各色成分の符号量を取得する。各色成分の符号量は符号データのヘッダ部分に記載されている場合は、ヘッダから読み込むことで取得できる。ヘッダ部分に記載がない場合は、ステップＳ７０１において、各色成分を復号した際に取得すればよい。符号量の取得方法に関しては本件の主眼ではないので、説明を割愛する。ステップＳ７０２〜Ｓ７０５では、ＣＰＵ１０１は、第１の実施形態と同様の処理を行う。
【００８４】
ステップＳ１５０２にて、ＣＰＵ１０１は、符号量が最大の色成分番号を取得する。次に、ステップＳ１５０３にて、ＣＰＵ１０１はステップＳ１５０２で取得した色成分番号に関して、ステップＳ７０５で取得したサブバンド番号に対して、付加情報を出力し、このフローを終了する。
【００８５】
次に、ステップＳ１５０３の付加情報の出力処理フローについて、図１６を用いて説明する。図１６のうち、第１の実施形態と同じ処理ステップについては、図１１と同じ番号を付与し、詳しい説明は割愛する。
【００８６】
ステップＳ１１０１にて、ＣＰＵ１０１は、部分復号画素位置を保存する。ステップＳ１１０２にて、ＣＰＵ１０１は、色成分のカウンタＣに“０”を代入し初期化する。ステップＳ１６０１にて、ＣＰＵ１０１は、色成分Ｃが付加情報の保存対象の色成分かどうかを判定する。本実施形態のＣＰＵ１０１は、ステップＳ１５０２で取得した色成分番号と一致すれば付加情報保存対象と判定し、処理をステップＳ１１０３へ進む。不一致の場合、ＣＰＵ１０１は処理をステップＳ１１１０へ処理を進める。
【００８７】
ステップＳ１１０３〜ステップＳ１１０９は第１の実施形態と同様の処理である。すなわち、付加情報保存対象である色成分Ｃの中の、付加情報保存対象となっているサブバンドに関して、付加情報を出力する。次に、ステップＳ１１１０にて、ＣＰＵ１０１は、カウンタＣに“１”を加算し更新する。ステップＳ１１１１にて、ＣＰＵ１０１は、カウンタＣと色成分数を比較する。カウンタＣが色成分数と同一であれば、すべての色成分についての付加情報出力が終了したものとし、このフローを終了する。そうでなければ、ステップＳ１６０１へ処理を戻す。
【００８８】
以上説明した処理制御を行うことで、符号量が大きい色成分のみに付加情報を付与することになる。符号量が大きい場合は、一般に復号処理も時間がかかる。復号結果を表示前に色成分合成をする必要がある。そのため、特に色成分毎にスレッドを立てて復号する場合などには、本実施形態のように符号量が大きい色成分の復号時間を短縮することが、スレッド分割を使った高速復号・表示の際には有効である。さらに、サブサンプリングなどにより色成分毎に画像サイズが異なる場合には、本実施形態の方法は特に有効である。
【００８９】
また、本第２の実施形態では第１の実施形態と同様に、あらかじめ決められたサブバンドに対して付加情報を保存していたが、第１の実施形態の変形例のように、サブバンドのＤＷＴ係数の数で決めてもよい。
【００９０】
上記実施形態では、２スレッド復号について説明したが、スレッド数Ｔに適用する場合には、画像の高さＨをＴ等分し、先頭のラインを除く、Ｈ／Ｔライン間隔（ｉ=１、２、…）で復号開始位置とする付加情報を生成すればよい。
【００９１】
［第２の実施形態の変形例］
第２の実施形態では、１画像（フレーム）内の色成分毎に符号量を取得し、符号量の多い色成分について付加情報を付与した。しかし、１画像の符号量に応じて、閾値を超えた場合に、付加情報を付与すると判断してもよい。たとえば、連続静止画による動画、すなわち、時間相関を符号化時に利用しない動画の場合、通常はフレーム毎の符号量に大きな差はない。しかし、シーンチェンジなどにより前フレームとコンテンツの内容が大きく異なると、符号量が大きく変わる場合がある。動画の場合には、フレームレートを一定にして復号できなければ、再生が滞る。そのような場合には、各（画像）フレームにおいて、符号量の増減を計測し、シーンチェンジなどの符号量が大きいフレームに対しては付加情報を付与する方法が有効である。付加情報の出力基準は、第２の実施形態のように色成分毎に決定してもよいし、第１の実施形態のようにすべての色成分に対してサブバンド毎に決定してもよい。
【００９２】
［第３の実施形態］
上記第１、第２の実施形態では、画像の高さを２分割し、分割された各領域にスレッドを割り当て、スレッド毎に分割して復号する例で説明した。このような場合には、通常であれば、画像のほぼ真ん中の位置から部分復号することになる。しかし、各フレームに施した画像処理の結果を確認するために、該当箇所を等倍表示で繰り返し再生し、確認するような場合には、部分復号の開始位置は必ずしも画像の真ん中ではない。画像の上部の方だけを部分デコードするのであれば、画像の上端から復号し、必要な部分を表示してもよい。そこで、本第３の実施形態では、部分復号の開始位置によって付加情報を出力するかどうかを決定する方法について説明する。
【００９３】
本第３の実施形態が第１の実施形態と異なるのは、付加情報の出力処理の部分である。本第３の実施形態の付加情報の出力処理について、図１７を用いて説明する。なお、図１７のフローチャートの中で、第１の実施形態と同じ動作をするステップに対しては図１１と同じ番号を付与し、詳細な説明は割愛する。
【００９４】
ステップＳ１１０１にて、ＣＰＵ１０１は、第１の実施形態と同様に部分復号画素位置を保存する。ステップＳ１７０１にて、ＣＰＵ１０１は、ステップＳ１１０１で取得した部分復号開始位置から、垂直方向画素の位置を復号開始ラインとして取得し、あらかじめ決められた閾値Ｔｈと比較する。本実施形態では、閾値Ｔｈとして画像の高さ（垂直方向の画素数）の１/４を設定する。したがって、画像の高さが２１６０であれば、Ｔｈ＝２１６０／４＝５４０となる。ＣＰＵ１０１は、復号開始ラインが閾値Ｔｈ以下の場合、付加情報を付与する必要はないと判断し、このフローを終了する。一方、復号開始ラインが閾値Ｔｈよりも大きい場合、ＣＰＵ１０１は付加情報を付与すべきと判断し、処理をステップＳ１１０２に進める。ステップＳ１１０２以降は第１の実施形態と同様の動作であるので、ここでの説明は割愛する。
【００９５】
本第３の実施形態の付加情報出力判断によれば、部分復号開始位置が閾値Ｔｈよりも下方にあるときのみ、付加情報を付与することになる。閾値Ｔｈを変更することで、付加情報によりファイルサイズを大きくするのに見合うだけの高速化の効果を得られるときのみ、付加情報を付与することができる。
【００９６】
［第３の実施形態の変形例］
上記第３の実施形態では、復号開始位置である画素位置によって付加情報の付与を決定しているが、復号開始位置に必要な、各サブバンドにおけるＤＷＴ係数の復号開始位置によってきめてもよい。たとえば、ＤＷＴ係数の復号開始位置が１３５ライン目以降であれば付加情報を付与し、そうでなければ付与しないというような判断である。この場合、復号開始画素位置が５４０（＝４×１３５）画素だとすると、表１よりサブバンド０〜６のデコード開始ＤＷＴ係数ラインは１３５、１３４、１３５、１３４、２６９、２７０、２６９となる。したがって、サブバンド０、２、４〜６については付加情報を付与することになる。
【００９７】
［他の実施形態］
画像をタイルなどの矩形やストライプのような短冊領域に分割し、分割領域毎に符号データが独立している場合でも、第１〜第３の実施形態で説明した付加情報の生成および出力を適用できる。その場合は、符号データが独立している分割領域を第１〜第３の実施形態の１画像として考えることで、容易に付加情報を付ける／つけないなどの判断をすればよい。すなわち、部分復号の画素位置が、独立した符号データの先頭位置と一致していれば、付加情報を付与する必要はない。
【００９８】
また、本実施形態では、すべてのサブバンドを同じ符号化方式で符号化していたが、これに限るものではない。たとえば、低周波サブバンドは、ＪＰＥＧ  ＬＳのように、ランレングスと、予測符号化とを組み合わせる方法でも構わない。ＪＰＥＧ  ＬＳの場合は、参照係数ａ，ｂ，ｃ，ｄを使って、隣り合う２近傍係数の３差分値で符号化方式の判定を行うため、上ラインの係数値のそのものを持つ必要がある。このような場合は、付加情報の情報量が大きくなる可能性があるため、サブバンド毎の符号化方式によって付加情報を保存する／しないを決定しても構わない。
【００９９】
また、本実施形態では、ＤＷＴ係数値毎に符号化を行う例を示したが、これに限るものではない。たとえば、複数のＤＷＴ係数をビットプレーンに分割し、ビットプレーンに対して、他のＤＷＴ係数のビットプレーンを参照して符号化を行う場合にも適用可能である。その場合には、デコードを開始するＤＷＴ係数について、参照する必要があるＤＷＴ係数のビットプレーン情報を付加情報として保持すればよい。
【０１００】
また、本実施形態では、ＤＷＴ係数の０／非０情報を０，１のビット列でそのまま出力したが、この０，１のビット列をランレングス符号化により更に圧縮符号化して保存してもよい。ランレングス符号化で圧縮することにより付加情報のデータ量を小さくできる。さらに、本実施形態のように、ＤＷＴ係数の符号化時にランレングス符号化を用いていれば、付加情報の取得のために新たにランレングス符号を復号する機構を追加する必要もない。
【０１０１】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１０２】
２２１…ヘッダ解析部、２２２…符号化方式判定部、２２３…ゴロム復号部、２２４…ランレングス復号部、２２５…復号用情報一時保存部、２２６…逆ＤＷＴ部、２２７…逆量子化部、２２８…色成分合成部
【図１】
2019068390.tif 000005
【図２】
2019068390.tif 000006
【図３】
2019068390.tif 000007
【図４】
2019068390.tif 000008
【図５】
2019068390.tif 000009
【図６】
2019068390.tif 000010
【図７】
2019068390.tif 000011
【図８】
2019068390.tif 000012
【図９】
2019068390.tif 000013
【図１０】
2019068390.tif 000014
【図１１】
2019068390.tif 000015
【図１２Ａ】
2019068390.tif 000016
【図１２Ｂ】
2019068390.tif 000017
【図１２Ｃ】
2019068390.tif 000018
【図１２Ｄ】
2019068390.tif 000019
【図１３】
2019068390.tif 000020
【図１４】
2019068390.tif 000021
【図１５】
2019068390.tif 000022
【図１６】
2019068390.tif 000023
【図１７】
2019068390.tif 000024