(57)【要約】【課題】  可逆符号化する領域と非可逆符号化する領域の混在を許容しながらも、再符号化する割合を減らし、目標符号量以下で画質劣化を抑えた符号化データを生成する。【解決手段】  符号化対象の画像から、複数画素で構成されるタイルを単位に入力し、そのタイルを解析し、可逆符号化、非可逆符号化のいずれを行うかを判定する。そして、判定した結果に従い、タイルを符号化していく。そして、可逆符号化データと非可逆符号化データの総量が、目標符号量以下となるように、非可逆符号化データの階層構造を利用し符号化データを削除することで符号量を調整する。このとき、非可逆符号化された符号化データにおいて、可逆符号化されたタイルに隣接するタイルと、非隣接タイルとでは、前者の削除可能な許容レベルを後者よりも小さくする。【選択図】  図１
2014112806.tif 000002
【特許請求の範囲】
【請求項１】
符号化対象の画像から、複数画素で構成されるタイルを単位に入力し、符号化する画像符号化装置であって、
タイルを可逆符号化し、可逆符号化データを生成する可逆符号化手段と、
タイルを非可逆符号化し、複数の画質レベルに対応する階層構造の符号化データを生成する非可逆符号化手段と、
前記可逆符号化手段、前記非可逆符号化手段を制御すると共に、符号化対象の画像から入力した着目タイルを解析し、当該解析の結果に基づき前記着目タイルについて前記可逆符号化手段、前記非可逆符号化手段のいずれか一方で符号化することで、前記符号化対象の画像を符号化する制御手段と、
該制御手段の制御の下で得られた可逆符号化データ、非可逆符号化データのうち、非可逆符号化データのデータ量を調整することで、前記符号化対象の画像から得られた符号化データの総量を予め設定された目標符号量以下に調整する調整手段とを有し、
該調整手段は、
非可逆符号化されたタイルのうち、可逆符号化されたタイルに隣接するタイルを隣接タイル、非隣接のタイルを非隣接タイルと表わしたとき、
前記隣接タイルの非可逆符号化データについては予め設定した第１の画質レベルの階層までの符号化データ、前記非隣接タイルの非可逆符号化データについては前記第１の画質レベルよりも画質について支配的な第２の画質レベルの階層までの符号化データを削除許容対象とし、当該削除許容対象の符号化データを削除することで、前記符号化対象の画像に対する符号化データ量を前記目標符号量以下に調整する
ことを特徴とする画像符号化装置。
【請求項２】
前記調整手段は、
前記目標符号量をD_max、可逆符号化された全タイルの符号化データの符号量をD_ls、非可逆符号化された全タイルの符号化データについて、前記第１の画質レベルの階層の符号化データを削除したと仮定した場合の符号量をD_cとしたとき、
条件１：D_ls+D_c＜D_max
を満たすか否かを判定する判定手段と、
該判定手段の判定結果が前記条件１を満たすことを示す場合、非可逆符号化された全タイルの符号化データについて、前記第１の画質レベルが示す範囲内の階層の符号化データを削除していって、可逆符号化データと削除した後の非可逆符号化データとの合計の符号量が前記目標符号量D_max以下になった際の、前記可逆符号化データと非可逆符号化データを前記符号化対象の画像の符号化データとして出力する第１の削除手段と、
前記判定手段の判定結果が前記条件１を満たさないことを示す場合、前記隣接タイルの非可逆符号化データについては前記第１の画質レベルまでの符号化データを削除し、前記非隣接タイルの各々については、前記第２の画質レベルが示す階層までの符号化データを順に削除していって、前記可逆符号化データと削除した後の非可逆符号化データとの合計の符号量が前記目標符号量D_max以下になった際の、前記可逆符号化データと非可逆符号化データを前記符号化対象の画像の符号化データとして出力する第２の削除手段と、
を有することを特徴とする請求項１に記載の画像符号化装置。
【請求項３】
前記非隣接タイルの個数をＮ、
前記条件１を満たさない場合の前記目標符号量D_maxに対する超過符号量「D_ls + D_c - D_max」をX、
前記第１の画質レベルと前記第２の画質レベルでの符号量の差に、予め設定された１未満の係数rを乗算して得られた閾値をhとしたとき、
前記第２の削除手段は、
条件２：X/N＜h
を満たすか否かを判定し、当該条件２を満たすと判定した場合には、前記非隣接タイルそれぞれの非可逆符号化データの前記第２の画質レベルの符号化データの削除を、前記可逆符号化データと削除した後の非可逆符号化データとの合計の符号量が前記目標符号量D_max以下になるまで実行することを特徴とする請求項２に記載の画像符号化装置。
【請求項４】
前記符号化対象の全タイルが可逆符号化され、且つ、前記条件１を満たさない場合、或いは、前記条件２を満たさない場合、前記符号化対象の画像の全てのタイルについて非可逆符号化を行うものとして決定し、可逆符号化されたタイルについて前記非可逆符号化手段による非可逆符号化を実行し、総符号量が前記目標符号量以下となるまで、全てのタイルの非可逆符号化データについて、最下位から支配的なレベルに向かって符号化データを削除する第３の削除手段を更に有することを特徴とする請求項３に記載の画像符号化装置。
【請求項５】
前記符号化対象の画像に含まれるタイル総数に対する可逆符号化したタイル数が占める割合をMと、予め設定された閾値をPとしたとき、「 M ＜ P 」の関係にあるかを判定する第２の判定手段を更に有し、
前記調整手段は、前記判定手段の判定結果が条件１を満たさないことを示し、且つ、前記第２の判定手段が「 M ＜ P 」を満たすことを示す場合、前記符号化対象の画像の全てのタイルについて非可逆符号化を行うものとして決定し、可逆符号化されたタイルについて前記非可逆符号化手段による非可逆符号化を実行し、総符号量が前記目標符号量以下となるまで、全てのタイルの非可逆符号化データについて、最下位から支配的なレベルに向かって符号化データを削除する第３の削除手段を更に有することを特徴とする請求項１乃至３のいずれか１項に記載の画像符号化装置。
【請求項６】
非可逆符号化を優先するモードを指定する指定手段を更に有し、
前記調整手段は、前記判定手段の判定結果が条件１を満たさないことを示し、且つ、前記指定手段で非可逆符号化を優先するモードが指定された場合、前記符号化対象の画像の全てのタイルについて非可逆符号化を行うものとして決定し、可逆符号化されたタイルについて前記非可逆符号化手段による非可逆符号化を実行し、前記条件１を満たすまで、全てのタイルの非可逆符号化データについて、最下位から支配的なレベルに向かって符号化データを削除する第３の削除手段を更に有することを特徴とする請求項１乃至３のいずれか１項に記載の画像符号化装置。
【請求項７】
前記第２の削除手段は、非隣接タイルの中で、可逆符号化されたタイルからの距離が大きいタイルから、前記条件１を満たすまで、前記第２の画質レベルの符号化データを削除することを特徴とする請求項２乃至６のいずれか１項に記載の画像符号化装置。
【請求項８】
符号化対象の画像から、複数画素で構成されるタイルを単位に入力し、符号化する画像符号化装置の制御方法であって、
可逆符号化手段が、タイルを可逆符号化し、可逆符号化データを生成する可逆符号化工程と、
非可逆符号化手段が、タイルを非可逆符号化し、複数の画質レベルに対応する階層構造の符号化データを生成する非可逆符号化工程と、
制御手段が、符号化対象の画像から入力した着目タイルを解析し、当該解析の結果に基づき前記着目タイルについて前記可逆符号化工程、前記非可逆符号化工程のいずれか一方で符号化させることで、前記符号化対象の画像を符号化する制御工程と、
調整手段が、該制御工程の制御の下で得られた可逆符号化データ、非可逆符号化データのうち、非可逆符号化データのデータ量を調整することで、前記符号化対象の画像から得られた符号化データの総量を予め設定された目標符号量以下に調整する調整工程とを有し、
該調整工程では、
非可逆符号化されたタイルのうち、可逆符号化されたタイルに隣接するタイルを隣接タイル、非隣接のタイルを非隣接タイルと表わしたとき、
前記隣接タイルの非可逆符号化データについては予め設定した第１の画質レベルの階層までの符号化データ、前記非隣接タイルの非可逆符号化データについては前記第１の画質レベルよりも画質について支配的な第２の画質レベルの階層までの符号化データを削除許容対象とし、当該削除許容対象の符号化データを削除することで、前記符号化対象の画像に対する符号化データ量を前記目標符号量以下に調整する
ことを特徴とする画像符号化装置の制御方法。
【請求項９】
コンピュータに読み込ませ実行させることで、前記コンピュータを請求項１乃至７のいずれか１項に記載の画像符号化装置として機能させるためのプログラム。
【請求項１０】
請求項９に記載のプログラムを格納したことを特徴とするコンピュータが読み込み可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像の符号化技術に関するものである。
【背景技術】
【０００２】
従来より、画質の劣化を極力抑えつつ符号化後データを規定容量に収めたいという要求が多くあった。たとえば、ページプリンタのような画像形成装置では、入力されたページ記述言語を画像データに変換し、その画像データを符号化して所定領域内に一時記憶するために、符号化後データの符号量(データ量)を制御する必要がある。また、ネットワークでデータを送受信する際には、システムが送信データ容量の上限を設定している場合や、受信側が携帯電話のように受信メモリが小さい場合などにも、それぞれの上限に応じて送信データ量を制御する必要がある。
【０００３】
このような要求に対して、１枚の画像に対して可逆圧縮と非可逆圧縮を領域毎に使い分け、非可逆圧縮部分で符号量制御を行う手法が提案されている(例えば特許文献１、特許文献２)。いずれの方法も、非可逆圧縮領域のパラメータを変更して再圧縮する方法をとっており、符号量を調整するためには、非可逆領域の圧縮前画像データが必要になってしまう。
【０００４】
また、可逆圧縮領域と非可逆圧縮領域を１画像の中で混在させ、非可逆圧縮領域のデータ量のみを削減していくと、可逆圧縮領域と非可逆圧縮領域の画質差が顕著になり、１画像全体として見ると、汚くなってしまう。そのため、非可逆圧縮領域がある程度の画質を保てなくなった場合には、可逆圧縮領域を非可逆圧縮で圧縮しなおす方法が提案されている(例えば特許文献３)。
【０００５】
一方、非可逆符号化にJPEG2000符号化を用いると、符号化パラメータを変更することなく、最下位のビットプレーンの符号化データから上位ビットプレーンに向かう順に削除するだけで、目標符号量に収めることが可能になる。そのため、上述のような、可逆圧縮領域と非可逆圧縮領域を１画像の中で混在させ、非可逆圧縮領域のデータ量を削減する方法に適用すると、非可逆圧縮した領域の圧縮前画像を保持する必要がない。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開2006-148585号公報
【特許文献２】特許第4693603号公報
【特許文献３】特許第4787219号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、JPEG2000符号化のように、符号化処理後の符号量制御を可能とする符号化方法は、JPEGなど、後段での符号量制御を考慮しない符号化に比較して複雑な処理が多く、符号化にかかる時間が大きい。そのため、可逆圧縮領域と非可逆圧縮領域の画質差が顕著になり、画像全体として見た場合の画質が著しく落ちると判断し、可逆圧縮領域を非可逆符号化（例えばJPEG2000など）で再符号化すると、処理時間の増大につながる。また、非可逆符号化としてJPEG2000を用いる場合、全体の符号量は、符号量とパケットヘッダ量の合計となる。パケットヘッダ量は、符号データに左右されるため、正確なJPEG2000符号量を知るためには、削除するビットプレーン、つまり、残すビットプレーン(コーディングパス)を決めた後、その残すビットプレーンを元にパケットヘッダを作成してみる必要がある。したがって、可逆圧縮領域をJPEG2000に再符号化すると、出力符号量を見積もるために作成するパケットヘッダの量が多くなり、符号量制御自体にもより多くの時間が必要になる。
【課題を解決するための手段】
【０００８】
この課題を解決するため、例えば本発明の画像符号化装置は以下の構成を備える。すなわち、
符号化対象の画像から、複数画素で構成されるタイルを単位に入力し、符号化する画像符号化装置であって、
タイルを可逆符号化し、可逆符号化データを生成する可逆符号化手段と、
タイルを非可逆符号化し、複数の画質レベルに対応する階層構造の符号化データを生成する非可逆符号化手段と、
前記可逆符号化手段、前記非可逆符号化手段を制御すると共に、符号化対象の画像から入力した着目タイルを解析し、当該解析の結果に基づき前記着目タイルについて前記可逆符号化手段、前記非可逆符号化手段のいずれか一方で符号化することで、前記符号化対象の画像を符号化する制御手段と、
該制御手段の制御の下で得られた可逆符号化データ、非可逆符号化データのうち、非可逆符号化データのデータ量を調整することで、前記符号化対象の画像から得られた符号化データの総量を予め設定された目標符号量以下に調整する調整手段とを有し、
該調整手段は、
非可逆符号化されたタイルのうち、可逆符号化されたタイルに隣接するタイルを隣接タイル、非隣接のタイルを非隣接タイルと表わしたとき、
前記隣接タイルの非可逆符号化データについては予め設定した第１の画質レベルの階層までの符号化データ、前記非隣接タイルの非可逆符号化データについては前記第１の画質レベルよりも画質について支配的な第２の画質レベルの階層までの符号化データを削除許容対象とし、当該削除許容対象の符号化データを削除することで、前記符号化対象の画像に対する符号化データ量を前記目標符号量以下に調整することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、可逆符号化する領域と非可逆符号化する領域の混在を許容しながらも、再符号化する割合を減らし、目標符号量以下で画質劣化を抑えた符号化データを生成することが可能になる。
【図面の簡単な説明】
【００１０】
【図１】コンピュータシステムの構成図。
【図２】サーバ・クライアントの構成図。
【図３】第１の実施形態における符号量制御付き画像圧縮処理フローを説明する図。
【図４】第１の実施形態における符号化マップ更新方法を説明する図。
【図５】第１の実施形態における符号量制御処理フローを説明する図。
【図６】第１の実施形態における再符号化判定の処理フローを説明する図。
【図７】第１の実施形態における可逆領域の再符号化処理フローを説明する図。
【図８】第１の実施形態における符号量制御に入る直前の可逆／非可逆圧縮領域の分布と、その符号化マップを説明する図。
【図９】第１の実施形態における非可逆圧縮領域内で画質差を持たせた符号量制御の処理フロー。
【図１０】符号量制御後の画質分布を説明する図。
【図１１】第２の実施形態における符号量制御付き画像圧縮処理フローを説明する図。
【図１２】第２の実施形態における再符号化判定処理フローを説明する図。
【図１３】第２の実施形態における符号量制御に入る直前の可逆／非可逆圧縮領域の分布を説明する図。
【図１４】第３の実施形態における符号量制御付き画像圧縮処理フローを説明する図。
【図１５】第３の実施形態における再符号化判定処理フローを説明する図。
【図１６】第４の実施形態における非可逆圧縮領域内で画質差を持たせた符号量制御の処理フロー。
【図１７】第４の実施形態における符号化マップの距離マップへの変換処理フロー。
【発明を実施するための形態】
【００１１】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。実施形態では、非圧縮画像データを保有しているサーバが、クライアントからの要求を受け付け、要求に応じた画像データをクライアントに返送する際のサーバの符号化方法について説明する。クライアントからの要求には、クライアントが取得したい画像を特定する情報（例えば記憶管理している画像の番号）と、受信できるデータサイズが含まれるものとする。
【００１２】
また、実施形態では可逆符号化の例としてＪＰＥＧ−ＬＳを例にし、非可逆符号化の例としてＪＰＥＧ２０００を例にして説明する。ＪＰＥＧ２０００の場合、量子化処理で得られた周波数成分の係数はビットプレーンを単位に符号化していく。従って、最下位のビットプレーンから画質レベルで支配的な上位に向かう、いずれかのビットプレーンまでの符号化データを削除することで、再符号化を行うことなく符号量調整が可能になる。ただし、符号化方式はこれに限られるものではない。要するに、非可逆符号化としては、複数の画質レベルに対応する階層構造の符号化データを生成する種類であれば良い。
【００１３】
［第１の実施形態］
図１(a)は、本第１の実施形態を実現するシステムのサーバ、クライアントの概略を示した図である。CPU101は、システム全体の動作をコントロールし、一次記憶102に格納されたプログラムの実行などを行う。一次記憶102は、主にメモリであり、二次記憶103に記憶されたプログラムなどを読み込んで格納する。二次記憶103は例えば、ハードディスクなどがこれに該当する。一般に一次記憶の容量は二次記憶の容量より小さく、一次記憶に格納しきれないプログラムやデータなどは二次記憶に格納される。また、長時間記憶しなければならないデータなども二次記憶に格納される。本実施例では、プログラムを二次記憶103に格納し、プログラム実行時に一次記憶102に読み込んでCPU101が実行処理を行う。入力デバイス104は、例えば、マウスやキーボードなどがこれに該当する。プログラムなどに割り込み信号を送ったりするために用いる。出力デバイス105は例えば、モニタやプリンタなどが考えられる。通信デバイス106は、ネットワークとの通信を行うためのものである。ネットワークは有線、無線を問わない。なお、この装置の構成方法は他にも様々な形態が考えられるが、それらは実施形態の主眼ではないので説明を省略する。
【００１４】
図２は、本実施形態を実現するシステムの概略を示した図である。201、202はそれぞれクライアントを表しており、図１で説明した構成を有する。クライアント201、またはクライアント202のような複数のユーザが、有線、無線を問わず、ネットワーク203によってサーバ204と通信することが可能である。クライアントは、PCや、タブレット端末、携帯端末、プリンタなど、通信機能を有し、画像を出力できる装置である。サーバ204は画像ファイルを蓄積する大容量の記憶装置205を持っている。大容量の記憶装置205はたとえば、ハードディスクなどがこれに該当する。このハードディスクには、テキストや線画、自然画などを含む非圧縮画像データが数多く格納されている。クライアント201、202は、画像データを特定する情報とその圧縮データサイズの上限値をサーバ204に要求する。圧縮データの上限値は、ネットワークの状況やクライアントのメモリ容量などから算出される値である。サーバ204は、クライアント（201or202)が指定した画像データを指定された上限値を目標符号量として設定し、それ以下のファイルサイズになるように圧縮し、その圧縮データを要求元のクライアントに返送する。
【００１５】
サーバ204の処理内容をより詳しく述べる。サーバ204は、クライアント201や202が指定した画像データを記憶装置205から読み出し、それを複数画素で構成されるタイルに分割する。そして。各タイルの解析し、その特徴に応じて、可逆圧縮または非可逆圧縮を選択し、符号化する。
【００１６】
本実施形態では、タイルのサイズは128×128画素とする。また、可逆圧縮方式として文字や線画の圧縮を得意とするJPEG-LS符号化方式を、非可逆圧縮方式として自然画の圧縮を得意とするJPEG 2000符号化方式を用いる。したがって、タイルが文字や線画を多く含んでいればJPEG-LS方式が選択され、自然画を多く含んでいればJPEG2000方式が選択される。全てのタイルを符号化し終えた後、JPEG2000で圧縮されたタイル(以下、JPEG2000タイル)の符号量をJPEG-LSで圧縮されたタイル(以下、JPEG-LSタイル)との画質差を許容範囲以内に保った状態で削減する。この際、JPEG2000のタイル間で差をつけずに、データを削減する。つまり、JPEG2000符号化領域は、画質が均一になる。削減した結果、指定された符号量以下であれば、そのデータをクライアントに返送する。JPEG-LSタイルとの画質差を許容範囲以内に保つことができないほどJPEG2000タイルのデータを削減する必要がある場合には、超過している符号量と可逆圧縮領域と非可逆圧縮領域の分布から、符号量制御の方法を変える。なお、タイルのサイズ、可逆符号化、非可逆符号化の種類は一例であることに留意願いたい。
【００１７】
さて、サーバ204の動作について、図３を用いて、さらに詳しく説明する。同図は、サーバ204内のアプリケーションプログラムが一次記憶102に読み出され、CPU101が実行する際の処理手順でもある。
【００１８】
ステップS301では、圧縮対象となる画像を記憶装置205から取得する。この画像は、非圧縮状態の画像である。本実施形態では、色空間がRGBであり、各成分（コンポーネント）のビット精度が8[bit/channel]、画像サイズが7040x4992[pixel]の画像とする。つまり、圧縮前の画像はおよそ100[MB]である。ステップS302では、ステップS301で取得した画像圧縮の上限符号量D_maxを取得する。これは、クライアントから指定される圧縮データの上限値である。本実施形態では、クライアントのメモリ容量から14[MB]が上限値として指定されたものとする。ステップS303では、ステップS301で取得した画像をタイルに分割し、そのタイル総数Tsumを算出する。本実施形態のタイルサイズは128x128[pixel]であるので、Tsum = (7040/128)x(4992/128) = 55x39 = 2145タイル数となる。ステップS304では、符号化方式マップを作成し、初期化する。符号化方式マップは、タイルの並びと同様のフラグからなるものであり、初期化によって、すべてのフラグに”1”が設定されるものとする。したがって、本実施形態では、55x39個のフラグ”1”が並んでいる。ステップS305では、対象とするタイルを特定するタイル番号の変数T（以下、単にタイル番号）にゼロを代入して初期化する。画像処理は、その画像のタイルを単位とするラスタースキャン順に処理していく。このタイル番号の変数Tは、その場合のラスタースキャン順におけるタイルの位置を合わす値を保持することになる。
【００１９】
以下、ステップS306〜S312で、タイル毎にJPEG-LSとJPEG2000を切り替えて符号化する。ステップS306では、タイル番号Tが示すタイルの符号化方式を決定する。以下、タイル番号Tで特定されるタイルを着目タイルという。符号化方式の決定は、着目タイルに文字や線画が多く含まれる場合には、JPEG-LS符号化方式を選択し、そうでない場合には、JPEG 2000符号化方式を選択する。着目タイルに文字や線画が多く含まれるか否かについては、その着目タイルを解析して、様々な特徴量から推定できる。たとえば、着目タイルに出現する色数が少ない場合（例えば色数が２以下の場合）には、文字や線画と判断し、色数が多い場合（色数が３以上の場合）には自然画が多いと判断する。あるいは、エッジ検出を行い、エッジが多ければ文字や線画が多いと判断し、そうでなければ自然画が多いと判断する。他にも様々な方法が考えられる。本実施形態では、エッジ検出を行い、エッジの数が予め設定された閾値より多い場合には、着目タイルには文字・線画が多く含まれるとしてJPEG-LS符号化を、そうでなければ、JPEG2000符号化を選択するものとする。
【００２０】
次に、ステップS307では、ステップS306で決定された符号化方式を元に、符号化方式マップを更新する。本実施形態では、後の再符号化判定を考慮し、次のような方法でマップを更新する。
1.  着目タイルの符号化方式がJPEG2000の場合、符号化方式マップの変更はしない。
2.  着目タイルの符号化方式がJEPG-LSの場合、以下のようにして符号化方式マップを更新する。
2-1)  符号化方式マップ内の着目タイルTに該当するフラグに、ゼロをかける（ゼロを格納する）。
2-2)  着目タイルTの上に隣接するタイルに該当するフラグにゼロをかける。
2-3)  着目タイルTの左に隣接するタイルに該当するフラグにゼロをかける。
2-4)  着目タイルTの右に隣接するタイルに該当するフラグにゼロをかける。
2-5)  着目タイルTの下に隣接するタイルに該当するフラグにゼロをかける。
【００２１】
たとえば、図４(a)の参照符号401が着目タイルであったとする。そして、この着目対するがJPEG-LS符号化方式で符号化すると判断された場合、上記の更新方法により、図４(b)のようにフラグが更新される。さらに、右隣のタイル402が着目タイルとなり、JPEG-LSで符号化すると判断された場合、やはり上記の更新方法により、符号化方式マップは図４(c)の状態に更新される。
【００２２】
なお、全タイルに上記処理を行うと、符号化方式マップの全フラグが"0"もしくは"1"のいずれかの値を持つことになる。フラグが"0"のタイルは、そのタイルが可逆符号化されたタイル(JPEG_LSタイル)、又は、可逆符号化されたタイルに隣接する非可逆符号化タイル（隣接JPEG2000タイル）であることを示すことになる。一方、フラグが"1"となっているタイルは、可逆符号化されたタイルに接触しない非可逆符号化された非隣接タイル（非隣接JPEG2000タイル）であることを示すことになる。
【００２３】
ステップS307で符号化方式マップを更新すると、ステップS308へ進む。ステップS308では、ステップS306の決定により、着目タイルの圧縮方式が可逆符号化かどうかを判断する。着目タイルの符号化方式がJPEG-LS符号化方式、つまり可逆圧縮方式であれば、ステップS309へ進む。そうでなければ、ステップS310へ進む。ステップS309では、着目タイルをJPEG-LS符号化方式に従って圧縮符号化し、可逆符号化データを得る。また、ステップS310に進んだ場合には、着目タイルをJPEG2000符号化方式で圧縮し、非可逆符号化データを得る。なお、各タイルの符号化データは、一次記憶102、或いは、二次記憶103に保持されるものとし、その際に、格納アドレスを管理しておく。格納アドレスを管理することで、それぞれの符号化データ量を容易に知ることができる。また、各符号化処理では、タイルの符号化データの先頭に、いずれで符号化されたのかを示す１ビットの識別データを付加した上で出力するものとする。これにより、各タイルがいずれで符号化されたのかを判定することもできる。
【００２４】
ステップS311ではタイル番号Tを１つインクリメントする。ステップS312では、タイル番号TがステップS303で算出したタイル総数Tsumと比較する。TとTsumが同じであれば、すべてのタイルについて一通り符号化し終えたと判断し、ステップS313へ進む。両者の値が異なる場合は、まだ、符号化し終えていないタイルがあると判断し、ステップS306へ処理を戻す。ステップS313では、原画像の符号化データ量が目標符号量以下、すなわち、可逆符号化データと非可逆符号化データの総量が上限符号量D_max以下になるように符号量制御を行い、その結果、原画像の符号化結果として出力する。
【００２５】
次に、ステップS313の符号量制御処理を、図５のフローチャートを参照して説明する。ステップS501では、可逆圧縮データのデータサイズD_lsを取得する。これは、図３のステップS307でJPEG-LS圧縮されたタイルの圧縮データの総和から算出できる。本実施形態では、D_ls = 1.26[MB]であるとする。ステップS502では、可逆圧縮タイルと非可逆圧縮タイルの画質差が決められた許容範囲以内になる、削除可能な最大ビットプレーン枚数Cを取得する。この削除可能な最大ビットプレーン数Cは、非圧縮画像の色空間やビット精度、JPEG2000符号化の圧縮パラメータ（量子化ステップ）などによって決まる値である。これらに対してそれぞれに適した最大ビットプレーン数Cを持つテーブルを用意すれば良いであろう。なお、それぞれの状況での、削除可能な最大ビットプレーン枚数Cは、あるサンプル画像を用いた実験の統計に基づいて、JPEG-LSタイルとJPEG2000タイルの画質差が許容できる範囲になる値をあらかじめ決めておく。本実施形態では、最大２ビットプレーンまで削除しても、JPEG-LSタイルとJPEG2000タイルの画質差が許容範囲以内におさまるものものとして説明を続ける。ただしこの値Cをユーザが設定できるようにしても構わない。ステップS503では、すべてのJPEG2000タイルの符号データから、ステップS502で取得したビットプレーン枚数Cで特定される最下位ビットプレーンから上位に向かうＣ枚のビットプレーンを削除したと仮定した場合のJPEG2000符号量D_cを算出する。
【００２６】
実施形態では、先に説明したように、C=2とする例を説明しているので、JPEG2000の符号化データのうち、ビット０のビットプレーン、ビット１のビットプレーンの符号化データ量を除外した符号化データ量D_ｃを求める。
【００２７】
本実施形態では、D_c = 12.9[MB]であったとする。なお、JPEG2000符号量を正確に算出するためには、JPEG2000のメインヘッダおよびJPEG20000のタイルヘッダ、各パケットの符号量を算出する必要がある。各パケットの符号量は、パケットに含まれるビットプレーン(コーディングパス)のデータと、そこから算出されるパケットヘッダの合計となる。指定のビットプレーン数を削除した結果のビットプレーンデータ量の算出するには、各ビットプレーンの符号化データの格納アドレスを記憶しておき、そのアドレスの差分から算出すれば良い。その後、削除されずに残ったビットプレーンから実際のパケットヘッダを作成し、パケットヘッダのサイズを算出する。このパケットヘッダのサイズに、上述のビットプレーンデータ量および、メインヘッダ、タイルヘッダのデータ量を加算することで、JPEG2000符号量を正確に算出できる。ただし、これ以外の如何なる手法を用いても良く、ここでの詳しい説明は割愛する。
【００２８】
ステップS504では、ステップS501とステップS503から算出された符号量の合計「D_ls+D_c」が、ステップS302で取得した上限符号量D_maxより小さいかどうかを判断する（条件１）。ここで、「D_ls+D_c」≦D_maxであると判断した場合、JPEG-LSタイルとJPEG2000タイルの画質差が許容できる範囲内にしつつ、JPEG2000タイルの符号化データを削除していけば、目標符号量D_max以内にできることを意味する。その場合、ステップS509へ進む。
【００２９】
また、「D_ls+D_c」＞D_maxであると判定された場合、仮に画像全体の符号量が上限符号量D_max 以下になるまで、JPEG2000タイルのビットプレーンを削除したとすると、JPEG-LSタイルとJPEG2000タイルの画質差が許容できる範囲を越えてしまい、画質差が目立ってしまうと言える。そこで、この場合には、ステップS505へ進む。
【００３０】
本実施形態の場合、(D_ls + D_c) = 1.26 + 12.9 = 14.16[MB] ＞ D_max = 14[MB]であるので、ステップS505へ進む。
【００３１】
ステップS505では、再符号化判定を行う。この再符号化判定については、後に詳しく説明する。ステップS506では、ステップS505の判定結果が再符号化することを決定したのか否かを判定される。再符号化すると判定された場合は、ステップS507へ進み、そうでなければ、ステップS510へ進む。ステップS507では、全てのJPEG-LSタイルをJPEG2000で再符号化しなおす。この再符号化の方法については、後に詳しく述べる。ステップS508では、可逆圧縮データのデータサイズD_lsをゼロにする。ステップS509では、非可逆圧縮領域の上限符号量D_j2kを算出する。これは、上限符号量D_maxから可逆圧縮領域のデータ量D_lsを引き算することで得られる。ステップS511では、JPEG2000の符号量を、ステップS509で算出した符号量D_j2k以下になるように、JPEG2000タイルの全てのデータを一様に削減する。例えば、最下位のビット０のビットプレーンから上位に向かうビットプレーンを順番に削除していき、残った符号量が最初にD_j2k以下となった時点でその削除処理を停止すれば良い（第１の削除処理）。なお、詳細は後述するが、ステップS507の処理を経て、ステップS511に処理が進んだ場合、符号化対象の画像の全タイルが非可逆符号化されることになるので、符号量を調整する対象は全タイルとなる（第３の削除処理）。
【００３２】
一方、ステップS506で、ステップS505の判定結果が再符号化ではなかったと判断し、ステップS510へ進むと、非可逆圧縮領域内で画質差を持たせた、符号量制御を行う（第２の削除処理）。この方法については、後に詳しく説明する。
【００３３】
次にステップS505の再符号化判定について、図６のフローチャートに従って説明する。再符号化判定時には、符号化方式マップを利用する。そこで、ステップS313の符号量制御のステップに入る時点、つまり、画像のすべてのタイルについて可逆圧縮または非可逆圧縮した時点での、本実施形態における符号化方式の分布と符号化方式マップの例を図８(a),(b)を用いて以下に説明する。
【００３４】
図８(a)は、画像全体の可逆圧縮領域と非可逆圧縮領域の分布を示す。領域801と804はJPEG20000で符号化された領域であり、領域802と803はJPEG-LSで符号化された領域である。つまり、図８(a)が示す画像は、その左上と右下に自然画が描かれており、右上と左下に文字や線画が書かれている画像の例と言える。図８(b)には、図８(a)のように各タイルが符号化された場合の符号化マップの状態を示す。ステップS602で説明した符号化マップ更新方法により、領域811と領域814のフラグは"1"であり、領域812と813のフラグは"0"である。JPEG-LSで符号化されたタイルよりも上下左右に1タイル分広い領域のフラグが"0"になっている。つまり、JPEG-LS符号化タイルに隣接していないJPEG2000符号化タイルに対応するフラグが"1"になっている。
【００３５】
以下、上記を踏まえて、次にステップS505の再符号化判定を説明する。
【００３６】
先ず、ステップS601では符号化方式マップを取得する。本実施形態では、図８(b)のような符号化マップとなっている。ステップS602では可逆圧縮されたJPEG-LSタイルと隣接しない、JPEG2000タイル(以下、非隣接JPEG2000タイル)の数Nを算出する。本実施形態の符号化マップにおける、フラグ"1"が立っているタイルは、非隣接JPEG2000タイルを示しているので、N=980である。ステップS603では、ステップS602で求めた非隣接JPEG2000タイルの数Nがゼロより大きいか、つまり、非隣接JPEG2000タイルがあるかどうかを判定する。Nがゼロより大きければ、ステップS604へ進む。そうでなければ、非隣接JPEG2000タイルがないことを意味し、ステップS608へ進む。ステップS608では再符号化することを判定結果として出力し、このフローを終了する。
【００３７】
本実施形態ではN=980＞0であるので、ステップS604へ進む。ステップS604では、ビットプレーン数Cで示される符号化データを削除した時の残りの符号量が、どれだけ目標符号量を超えているかを示す、超過符号量Xを算出する。超過符号量は、(D_ls+D_c)とD_maxの差分「D_ls + D_c - D_max」から求めることができる。本実施形態の場合、超過符号量X＝D_ls + D_c - D_max = 14.16-14.0 = 0.16[MB]となる。ステップS605では、目標符号量に収めるために、非隣接JPEG2000タイル１枚当りで削減しなければならない符号量delを算出する。符号量delは、非隣接JPEG2000タイル数Nと超過符号量Xからdel=X/Nで算出できる。本実施形態の場合、del = 0.16[MB]/980 = 167773[Byte]/980 = 171.2[byte/tile]となる。次にステップS606では、ステップS605で算出した値delと予め決められた閾値hを比較する。
【００３８】
この閾値hは、予め実験により求めた値である。求め方は、次の通りである。先ず、幾つもの自然画をJPEG2000符号化し、その際に各タイルの各ビット位置のビットプレーンの符号量の平均値を求める。そして、ビットｋのビットプレーンの平均符号量をB(k)（ここでk=0,1,2,…）としてテーブルとして記憶しておく。そして、実施形態では、C=2の例を説明しているので、１つ上位のビットプレーンの平均的な符号量はB(C+1)(=B(3))としてで得られる。そして、取得した値B(C+1)に、予め設定した１未満の間引き係数rを乗算し、それを閾値hとする。この間引き係数rは、全非隣接JPEG2000タイルのうちのｒ×１００％に相当する数のタイルの符号化データについて、「C+1」個のビットプレーンの符号化データを削除したとき、着目画像の総符号化データ量「D_ls + D_c」を目標符号量D_max以下にできるであろうと予測するための指標値と言うことができる。本実施形態では、この間引き係数ｒを０．４とし、その結果、閾値hが200[byte]となったとして説明を続ける。
【００３９】
ステップS606では、del＜閾値hを満たすか否かを判定する。実施形態の場合、del=171.2、h＝200であるので、この不等式を満たす。それ故、ステップS607へ進み、判定結果として「再符号化無し」を出力し、このフローを終了する。一方、この不等式を満たさない場合、全非隣接JPEG2000タイルのうちのｒ×１００％に相当する個数のタイルの符号化データそれぞれについて、「C+1」個のビットプレーンを削除しても、目標符号量D_maxを下回らないことになる。それ故、ステップS608へ進み、「再符号化する」の判定結果を出力してこのフローを終了する。
【００４０】
次に、ステップS507における、JPEG-LSタイル再符号化について図７のフローチャートに従って説明する。ステップS701では、タイル番号のカウンタTにゼロを代入して初期化する。ステップS702では、タイルTがJPEG-LS符号化で圧縮されているかどうかを、その符号化データの先頭の識別ビットを調べて判断する。JPEG-LS圧縮されていれば、再符号化対象となり、ステップS703へ進む。そうでなければ、再符号化の必要のないタイルと判断し、ステップS705へ進む。ステップS703では、タイルTのJPEG-LS符号データを伸張（復号）する。JPEG-LS符号化は可逆圧縮であるため、伸張されたデータは符号化前の画像データと完全に一致する。ステップS704では、ステップS703で伸張されたタイルTをJPEG2000符号化で再圧縮する。ステップS705では、タイル番号Tを一つインクリメントする。ステップS706では、タイル番号TとステップS303で算出したタイル総数Tsumとを比較する。異なる値であれば、まだ、再符号化の必要なタイルがある可能性があるので、処理をステップS702へ戻す。同じであれば、全てのタイルについて、再符号化が終了したものと判断し、このフローを終了する。この後、図５のフローチャートのステップS511にて、全タイルの符号化データについての削除処理が行われ、総符号量が目標符号量D_max以下に調整されることになる。
【００４１】
次に、ステップS510における、非可逆圧縮領域内で画質差を持たせた符号量調整処理（第２の削除処理）について、図９のフローチャートに従って説明する。ステップS901では、全てのJPEG2000タイルの削除ビットプレーン数を、ステップS502で参照した値Cに設定する。ステップS902では、符号化方式マップを取得する。ステップS903では、タイル番号Tにゼロを代入して初期化する。ステップS904では、タイルTが非隣接JPEG2000タイルかどうかを判断する。これは、ステップS902で取得した符号化方式マップの、タイルTに該当するフラグを参照し、フラグが1であれば、そのタイルは非隣接JPEG2000タイルと判定できる。タイルTが非隣接JPEG2000タイルであればステップS905へ進み、そうでなければ、ステップS910へ進む。ステップS905では、非隣接JPEG2000タイルであるタイルTの削除ビットプレーン数を(C+1)に変更する。ステップS906ではタイルTからCビットプレーン削除時のデータ量TD(ｃ)を算出する。この算出方法については、JPEG2000符号化方式から既知であるので、ここでの説明は割愛する。ステップS907では、タイルTから(C+1)ビットプレーン削除した時のデータ量TD(c+1)を算出する。ステップS908では、タイルTの削除ビットプレーン数をCから(C+1)に変更したことにより、JPEG2000タイルの符号量を計算式D_c = D_c-(TD(c)-TD(c+1))によって、再計算する。ステップS909では、ステップS908で再計算JPEG2000符号量D_cと、ステップS401で取得した可逆圧縮データのデータサイズD_lsの合計と、ステップS302で取得した上限符号量D_maxを比較する。合計値が上限符号号量D_max以下なら、ステップS911へ進み、そうでなければステップS910へ進む。ステップS910では、タイル番号Tを1つインクリメントし、ステップS904へ処理を戻す。ステップS911では、各タイル毎に、JPEG2000符号データにおける最下位ビットプレーンから、上記のようにして決定された数のビットプレーンまでの符号化データを削除する処理を行なう。
【００４２】
本実施形態の結果、削除するビットプレーン数を２個のビットプレーンから３個のビットプレーンにすることによって、１タイルあたり平均500[Byte]のデータ削減が行われたものとする。そして、336個の非隣接JPEG2000タイルについては、3ビットプレーン削除し、それ以外のJPEG2000タイルは一律2ビットプレーン削除されたものとする。実施形態の方法のデータ削減方法を使って符号量制御した場合の、画像全体の画質分布を図１０（a）に示す。領域802と803は、図８と同様にJPEG-LSで可逆圧縮された領域である。領域1002と1003は、JPEG-LSタイルとJPEG2000タイルの画質差が許容できる範囲以内になる値として設定された、削除可能な最大ビットプレーン枚数を削除したJPEG2000領域である。領域1001は、その削除可能な最大ビットプレーン枚数からさらに１ビットプレーン削除したJPEG2000領域である。したがって、領域1001は、JPEG-LSとの画質差が許容範囲を越えてしまう。しかし、領域1001は非隣接JPEG2000タイルであるため、JEPG-LSとの境界を持たない。そのため、本実施形態の方法でデータを削減しても、可逆圧縮領域と非可逆圧縮領域の画質差は目立ちにくい。
【００４３】
さらに、閾値hとして非隣接JPEG2000タイルの１タイルあたりの削減データ量を用いることで、JPEG2000タイル間で画質差をつける場合でも、その画質差があまり大きくならないように制御できる。
【００４４】
また、本実施形態では、図１(a)に示す二次記憶103に格納されたプログラムを一次記憶102にロードし、CPU101が実行する例を説明したが、これをハードウェアで実施する場合の構成の概略を図１(b)に示す。図中、111は、各タイルを可逆符号化もしくは非可逆符号化で符号化する処理部であり、図３のステップS306からS312に相当する。データ削減後の符号量見積部112は図５のステップS503に相当する。その後のステップS504は符号量比較回路113で実行される。ステップS505の再符号化判定処理は再符号化判定回路114で実行される。115は再符号化処理部であり、ステップS507に相当する。削除データ選択部116は、図９のステップS901からS909に相当する。また、非可逆符号化符号量削減部117は、図５のS511と図９のS911に相当する。また、図１(b)では、処理部111と処理部115における非可逆符号化回路を説明の都合上、別々に描いているが、これは、同一の回路を使用することが望ましい。
【００４５】
以上説明したように本第１の実施形態によれば、非可逆符号化されたタイルのうち、可逆符号化されたタイルに隣接するタイルの符号化データについては、第１の画質レベルまでの範囲でしか削除できないようにする。そして、非可逆符号化されたタイルのうち、可逆符号化されたタイルに非隣接するタイルの符号化データについては、第１の画質レベルよりも画質について支配的な第２の画質レベルの階層までの符号化データを削除許容対象とすることで、画質の劣化を抑制しながら、より多くの符号量削減が可能になる。
【００４６】
［第２の実施形態］
上記第１の実施形態では、非隣接JPEG2000タイルが存在し、非隣接JPEG2000タイル１枚あたりの削減データ量が少なければ、再符号化をせずに、非隣接JPEG2000領域内で画質差を許容し、符号量制御を行った。しかし、自然画像が主要オブジェクトである場合には、JPEG2000領域内で画質差があると、主観的に画像全体の画質が劣化しているように感じてしまうことがある。
【００４７】
そこで、本第２の実施形態では、可逆圧縮タイルと非可逆圧縮タイルの画質差を許容範囲以内に保ったまま符号量調整を行うことができない場合、可逆圧縮タイルが十分に少なければ、再符号化を行う方法について述べる。
【００４８】
本第２の実施形態の符号量制御付き画像圧縮処理フローについて、図１１を用いて説明する。図１１のステップで、第１の実施形態と同じ処理については、図３と同様の番号を付与し、詳しい説明を割愛する。
【００４９】
ステップS301からステップS304は、第１の実施形態と同様の処理を行う。本第２の実施形態における圧縮対象処理画像は、7040x4992[pixel]とする。また、上限符号量D_max=14[MB]であり、タイル総数Tsuｍ＝55x39=2145である。次に、ステップS1101では、JPEG-LSタイルの数をカウントするための変数Mにゼロを代入して初期化する。ステップS305からステップS307は、第１の実施形態と同様の動作をする。ステップS308では、ステップS306の決定により、タイルTの圧縮方式が可逆符号化かどうかを判断する。タイルTの符号化方式がJPEG-LS符号化方式、つまり可逆圧縮方式であれば、ステップS1102へ進む。そうでなければ、ステップS310へ進む。ステップS1102では、JPEG-LSタイル数のカウント用変数Mの値を１を増やす。ステップS309からステップS312までは、第１の実施形態と同様の動作である。ステップS313では、符号量制御を行い、出力ファイルサイズをステップS302で取得した上限符号量D_max以下に調整し、このフローを終了する。
【００５０】
本第２の実施形態において、ステップS313の符号量制御処理に入る時点では、画像全体の符号量は14.16[MB]であり、JPEG-LSタイルとJPEG2000タイルの分布は、図１３のようになっているものとする。図１３において領域1301はJPEG2000タイルであり、領域1302と領域1303はJPEG-LSタイルである。同図の場合、JPEG-LSタイル数はM＝160となる。
【００５１】
本第２の実施形態の符号量調整処理フローは、図５に示す第１の実施形態の処理フローと基本的には同様であるが、ステップS505の再符号化判定処理が異なる。本実施形態の再符号化判定処理は、第１の実施形態の再符号化判定フローの前に、JPEG-LSタイル数の割合、すなわち再符号化対象となるタイルの割合を判定し、その結果も再符号化判定に用いるものである。
【００５２】
本第２の実施形態の再符号化判定フローを図１２に示す。図１２において、第１の実施形態と同様のステップについては、図６と同じ番号を付与している。ステップS1201では、JPEG-LSタイル数Mを取得する。本実施形態の場合、M=160である。次に、ステップS1202の判定処理（第２の判定）に進み、JPEG-LSタイル数Mがタイル総数TsumのP%以上の割合を持っているかどうかを判定する（条件２）。本実施形態では、Pはあらかじめ決められた値であり、P＝10とする。JPEG-LSタイル数がP%以上であればステップS601へ進み、P%(=10%)未満であれば、ステップS608に進み、判定結果は「再符号化する」と決定する。第２の本実施形態の場合、M=160 ＜ (Tsum x 10/100)=214.5の関係を満たす場合の処理は第１の実施形態と同様の動作であるので、説明を割愛する。
【００５３】
上記第２の実施形態の処理によると、JEPG-LSタイルが少ない場合には、再符号化することになるため、文字・線画領域の画質は低下するが、画像全体で均一の画質にすることができる。そのため、主要オブジェクトである可能性が高い自然画内で、タイル間での画質差がなくなり、違和感のない画像にすることができる。
【００５４】
また、JPEG-LSタイルが多い、すなわち自然画像が主要オブジェクトである可能性が低い場合には、第１の実施形態と同様の動作を行うため、第１の実施形態の効果を得ることができる。
【００５５】
［第３の実施形態］
上記第２の実施形態では、文字・線画が予め決められた割合以下の場合には、非可逆圧縮される自然画が主要オブジェクトであると判断し、タイル間での画質差を設けず、全ての可逆圧縮領域を再符号化していた。しかし、文字・線画の割合が大きい場合でも、自然画像が主要オブジェクトである場合もある。そこで、本第３の実施形態では、ユーザが動作モードとして、通常モードと自然画重視モードのいずれかを指定選択することで、非可逆圧縮領域での画質差を許容するかどうかを決定する例を述べる。
【００５６】
図１４に、本第３の実施形態の符号量制御付き画像圧縮フローを示す。第１の実施形態と同じ動作のステップには図３と同じ番号を付与した。第３の実施形態が第１の実施形態と異なるのは、ステップS301の次に、ユーザが指定した動作モードを取得するステップS1401が加わった点と、ステップS313の符号量制御にある。動作モードの設定は、クライアント上のユーザがキーボードやマウス、タッチパネル等で設定し、それをサーバ204に、画像を特定する情報や目標符号量ともに送信するものとする。
【００５７】
ステップS301では、第１の実施形態と同様に、圧縮対象画像を取得する。ステップS1401では、ユーザが指定した動作モードを取得する。動作モードは通常モードと自然画重視モードのいずれかが指定されている。ステップS302からステップS312は、第１の実施形態と同様の動作である。ステップS313では、ステップS1401で取得した動作モードにしたがって、符号量制御を行う。
【００５８】
本第３の実施形態の符号量制御処理は、図５に示した第１の実施形態の符号量制御処理とほぼ同じ動作であるが、ステップS505の再符号化判定部分が異なる。本第３の実施形態の再符号化判定処理フローを図１５に示す。同図において、第１の実施形態と同様の動作をするステップには、図６と同じ番号を付与した。
【００５９】
ステップS1501では、ステップS1401で取得した、ユーザが指定した動作モードが自然画重視モードかどうかを判定する。自然画重視モードの場合、JPEG2000タイル間での画質差を設けないことを明示的にしていしたものとし、ステップS608に進み、「再符号化する」を判定結果として出力し、このフローを終了する。一方、自然画重視モードが選択されていない場合、ステップS601に進む。ステップS601以下の動作は第１の実施形態と同様であるので、ここでの説明を割愛する。
【００６０】
本第３の実施形態のように、動作モードを設けることで、なるべく再符号化の発生を減らして処理時間を短縮する処理と、時間がかかるが１画像内の画質を均一にする処理とを切り替えることができる。また、本第３の実施形態では、自然画重視モードではない場合には、第１の実施形態の再符号化判定処理を行っているが、第２の実施形態の再符号化判定処理を行っても構わない。
【００６１】
［第４の実施形態］
第１乃至第３の実施形態では、非可逆符号化（JPEG2000）したタイル間で画質差を設ける場合には、非隣接JPEG2000タイルをラスター順にビットプレーンのデータ削減した。このような方法をとると、図１０(a)のように、左上の画像のみが画質劣化しやすくなってしまう。そこで、非隣接JPEG2000タイルのうち、ビットプレーン枚数Cを１つ上回る数のビットプレーンを削除する対象を、可逆圧縮領域からなるべく離れたタイルから優先して決定する例を説明する。
【００６２】
本第４の実施形態が、上記第１乃至第３の実施形態と異なるのは、非可逆圧縮領域内で画質差を持たせた符号量制御のフローである。本実施形態における処理フローを図１６に示す。図１６の中で、第１の実施形態と同様の動作ステップには、図９と同じ番号を付与している。
【００６３】
ステップS901では、全てのJPEG2000タイルの削除ビットプレーン数をCに設定する。ステップS1601では、符号化方式マップを距離マップに変換する。距離マップへの変換方法は、図１７を用いて後述する説明する。
【００６４】
ステップS1602では、ステップS1601で作成された距離マップから距離の最大値を取得し、距離の変数Lに代入する。ステップS903では、タイル番号Tにゼロを代入し初期化する。ステップS1603では、距離マップからタイルTの距離を取得し、距離Lと比較する。同じであれば、ステップS1604へ進み、違う場合には、ステップS910へ進む。ステップS1604では、距離マップに記載されているタイルTの距離をゼロに更新する。ステップS905からステップS910は、第１の実施形態と同様の動作である。ステップS1605では、タイル番号Tとタイルの総数Tsumとを比較する。タイル総数と同じであれば、距離Lのタイルはすべて処理し終えたと判断し、ステップS1606へ進む。違う場合は、ステップS1603へ処理を戻す。ステップS1606では、距離Lの値を1つ小さくし、ステップS903へ進む。
【００６５】
つまり、距離Lが長い順に、C+1個のビットプレーンの符号化データを削除するタイルを決定していく。
【００６６】
次に図１７を用いて、符号化方式マップを距離マップに変換する方法について説明する。ステップS1701では、符号化マップを取得する。ステップS1702では、タイル番号Tをゼロに初期化する。ステップS1703では、ステップS1702で取得した符号化マップから、タイルTの符号化マップのフラグを取得する。ステップ1704では、ステップS1703で取得したフラグから、タイルTが非隣接JPEG2000かどうかを判断する。ステップS1704でタイルTが非隣接JEPG2000タイルであると判断した場合には、ステップS1705へ進む。そうでなければ、ステップS1707へ進む。
【００６７】
本第４の実施形態では、第１の実施形態と同様の符号化マップであり、フラグが１であれば、非隣接JPEG2000タイルであると判断できる。ステップS1705では、非隣接JPEG2000タイルである着目タイルTから最も近いフラグがゼロのタイルまでのタイル数をカウントし、変数distに代入する。つまり、この変数distには、最寄りの可逆符号化タイルまでのタイル数が代入されるので、結局のところ、可逆符号化したタイルからの距離に応じた値が格納されることになる。
【００６８】
ステップS1706では、タイルTのフラグを、ステップS1705で取得したdistで上書きする。ステップS1707では、タイル番号Tを1つインクリメントする。ステップS1708では、タイル番号Tとタイル総数Tsumを比較し、同じであれば、すべてのタイルについて上記の処理が終了したものと判断し、このフローを終了する。そうでなければ、ステップS1703へ処理を戻す。
【００６９】
本第４の実施形態の方法で、データを削減した場合の符号量制御後の画質分布を図１０(b)に示す。領域802と803は図８と同様にJPEG-LSで可逆圧縮された領域である。領域1012と1013は、JPEG-LSタイルとJPEG2000タイルの画質差が許容できる範囲以内になる値として設定された、削除可能な最大ビットプレーン枚数を削除したJPEG2000領域である。領域1011と1014はその削除可能な最大ビットプレーン枚数からさらに１ビットプレーン削除したJPEG2000領域である。本実施形態の方法で、JPEG2000の中で画質差をつけるように符号量を削減すると、画質劣化が一つの画像に偏ることが少なくなる。
【００７０】
［その他の実施形態］
また、タイルサイズと画像サイズによっては、JPEG2000タイルの間で画質差をつける際に、非隣接JEPG2000タイルの中から市松模様にタイルを選らんで削減した方が、画質劣化が目立たない場合もある。その場合は、画像上端から数えて奇数番目のタイルに関しては画像の左端から奇数番目のタイルを、画像上端から数えて偶数番目のタイルに関しては画像の左端から偶数番目のタイルを、データを削減するタイルとして選択すればよい。
【００７１】
また、JPEG2000タイルの間で画質差をつける際に、非隣接JEPG2000タイルの中から削除するデータを選ぶ際に、コンポーネント間でデータ削除の差をつけても良い。その場合は、JPEG2000符号化するタイルは、RGB色空間をYCC色空間に変換して符号化しておき、Cb, Crコンポーネントのビットプレーンを、さらに１ビットプレーン削除する候補として選択する。
【００７２】
また、本実施形態ではデータ削除はビットプレーンを単位として説明したが、コーディングパス単位でも良い。また、本実施形態では、閾値hは、実験的に求めた固定値としたが、タイルサイズや量子化ステップなどのエンコード条件から、動的に算出しても良い。
【００７３】
また、実施形態では、タイル毎の可逆符号化、非可逆符号化の判定を、符号化データの先頭ビットで判定するものとしたが、符号化方式マップと同様、個々のタイルに割り当てられる符号化種別判定フラグを設け、その判定フラグをステップS309、S310で異なる値を設定することで、後の判定を容易にしても構わない。
【００７４】
また、可逆圧縮としてJPEG-LS符号化を用いて説明したが、PNGやZlibなど他の可逆符号化を用いても良い。
【００７５】
また、非可逆圧縮として、JPEG2000符号化方式を用いて説明したが、再エンコード無しに、例えば、ビットプレーン単位の符号化データを削除するだけで、符号量調整が可能な符号化方式であれば良いので上記に限定されるものではない。したがって、progressive JPEGのように符号化データが解像度方向に階層構造を持っている符号化方式を使って、本実施形態のビットプレーンの代わりに、階層データを単位としてデータを削除しても構わない。
【００７６】
また、実施形態では、サーバ204がクライアント201又は202からの要求に従って画像符号化を行うものとして説明したが、１つの単独の装置が、符号化対象の画像を取得し、目標符号量を設定し、画像符号化を行っても構わない。
【００７７】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2014112806.tif 000003
【図２】
2014112806.tif 000004
【図３】
2014112806.tif 000005
【図４】
2014112806.tif 000006
【図５】
2014112806.tif 000007
【図６】
2014112806.tif 000008
【図７】
2014112806.tif 000009
【図８】
2014112806.tif 000010
【図９】
2014112806.tif 000011
【図１０】
2014112806.tif 000012
【図１１】
2014112806.tif 000013
【図１２】
2014112806.tif 000014
【図１３】
2014112806.tif 000015
【図１４】
2014112806.tif 000016
【図１５】
2014112806.tif 000017
【図１６】
2014112806.tif 000018
【図１７】
2014112806.tif 000019