(57)【要約】【課題】  少なくとも非可逆符号化方式を含む複数の符号化方式で生成されたタイル単位の符号化データが混在した符号化画像データを復号した際に、異なる符号化方式のタイルの境界における画質差を小さくし、自然な画像を生成する。【解決手段】  JPEG2000によるタイルの符号化データと、JPEG-LSよるタイルの符号化データの混在した画像符号化データを復号する場合、タイルを単位にいずれの符号化データであるかを判定し、その判定結果に応じた種類の復号処理を実行する。そして、復号した結果、着目タイルがJPEG2000のタイルであり、隣接するタイルがJPEG-LSであった場合、その間のタイル境界に不自然さが発生しないようにするためにフィルタを用いた画像処理を実行する。【選択図】  図９
2014165868.tif 000002
【特許請求の範囲】
【請求項１】
非可逆な第１の符号化手段で符号化された第１のタイプのタイルの符号化データと、前記第１の符号化手段とは異なる第２の符号化手段で符号化された第２のタイプのタイルの符号化データとが混在した符号化画像データを復号する画像処理装置であって、
各タイルの符号化データが、いずれの符号化手段による符号化データであるのかを識別する識別手段と、
該識別手段の識別結果に従い、各タイルの符号化データについて該当する種類の復号処理を実行することでタイル画像を生成する復号処理手段と、
前記識別手段による識別結果に基づき、前記復号処理手段による復号処理で得られたタイル画像で構成される画像中の、前記第１のタイプのタイルと前記第２のタイプのタイルとが隣接するタイル境界を検出する検出手段と、
該検出手段が検出した前記タイル境界を接する前記第１のタイプのタイル内の前記タイル境界に接する画素の値を、前記タイル境界を跨ぐサイズを有すると共に前記第１の符号化手段と前記第２の符号化手段の信頼度に応じた特性を有するフィルタを用いて、フィルタ処理するフィルタ処理手段と、
を有することを特徴とする画像処理装置。
【請求項２】
前記フィルタ処理手段は、前記第１の符号化手段と前記第２の符号化手段の信頼度の高さに基づく、複数の重み係数を有するフィルタを用いてフィルタ処理を実行することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記第１の符号化手段はJPEG2000の符号化手段であり、前記第２の符号化手段は可逆な符号化手段であることを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記第２の符号化手段は、JPEG-LSの符号化手段であることを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記第１のタイプのタイル内の右端画素、下端画素、左端画素、上端画素のうち、右端画素及び下端画素の信頼度は、左端画素及び上端画素の信頼度よりも低いものとし、前記タイル境界が右側または下側に位置する場合のフィルタと、前記タイル境界が左側、上側に位置する場合のフィルタそれぞれのフィルタ係数とを記憶する記憶手段を有することを特徴とする請求項３又は４に記載の画像処理装置。
【請求項６】
前記第１の符号化手段はJPEG2000の符号化手段であり、前記第２の符号化手段は非可逆なJPEGの符号化手段であることを特徴とする請求項１又は２に記載の画像処理装置。
【請求項７】
前記第１のタイプのタイルの右側、又は、下側に前記第２のタイプのタイルが隣接する場合、前記フィルタ処理手段は前記第１のタイプのタイル内の前記第２のタイプのタイルと接する側の画素をフィルタ処理すると共に、前記第２のタイプのタイル内の前記第１のタイプのタイルに接する画素についてもフィルタ処理を行なうことを特徴とする請求項６に記載の画像処理装置。
【請求項８】
前記フィルタ処理手段が用いるフィルタの複数の係数は、更に前記第１の符号化手段による符号量制御に係る符号化パラメータに基づいて決定されることを特徴とする請求項１乃至７のいずれか１項に記載の画像処理装置。
【請求項９】
前記符号化パラメータは、非可逆符号化する際に削除したビットプレーンの数が含まれることを特徴とする請求項８に記載の画像処理装置。
【請求項１０】
非可逆な第１の符号化手段で符号化された第１のタイプのタイルの符号化データと、前記第１の符号化手段とは異なる第２の符号化手段で符号化された第２のタイプのタイルの符号化データとが混在した符号化画像データを復号する画像処理装置の制御方法であって、
識別手段が、各タイルの符号化データが、いずれの符号化手段による符号化データであるのかを識別する識別工程と、
復号処理手段が、前記識別工程の識別結果に従い、各タイルの符号化データについて該当する種類の復号処理を実行することでタイル画像を生成する復号処理工程と、
検出手段が、前記識別工程による識別結果に基づき、前記復号処理工程による復号処理で得られたタイル画像で構成される画像中の、前記第１のタイプのタイルと前記第２のタイプのタイルとが隣接するタイル境界を検出する検出工程と、
フィルタ処理手段が、前記検出工程が検出した前記タイル境界を接する前記第１のタイプのタイル内の前記タイル境界に接する画素の値を、前記タイル境界を跨ぐサイズを有すると共に前記第１の符号化手段と前記第２の符号化手段の信頼度に応じた特性を有するフィルタを用いて、フィルタ処理するフィルタ処理工程と、
を有することを特徴とする画像処理装置の制御方法。
【請求項１１】
コンピュータに読み込ませ実行させることで、前記コンピュータに、請求項９に記載の各工程を実行させるためのプログラム。
【請求項１２】
請求項１１に記載のプログラムを格納した、コンピュータが読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データの符号化、復号技術に関するものである。
【背景技術】
【０００２】
従来より、画質の劣化を極力抑えつつ符号化後データを規定容量に収めたいという要求が多くある。たとえば、ページプリンタのような画像形成装置では、入力されたページ記述言語を画像データに変換し、その画像データを符号化して所定領域内に一時記憶するために、符号化後データの符号量を制御する必要がある。
【０００３】
このような要求に対して、１枚の画像を可逆圧縮する領域、非可逆圧縮する領域に使い分け、非可逆圧縮する領域の画像について符号量制御を行う手法(特許文献１、２)が提案されている。この種の方式では、符号化後の目標となる符号量(目標符号量)を実現するために、非可逆圧縮データを大きく削除してしまうことがある。その結果として、可逆圧縮の領域と非可逆圧の領域で画質差が顕著になり、１画面全体として見ると、汚くなってしまう。この問題を緩和させるために、画像の復号後に、可逆圧縮の領域と非可逆圧縮の領域の境界に対して、デブロッキングフィルタと呼ばれるフィルタ処理を行う方法が考えられる。デブロッキングフィルタとは、JPEGなどの復号画像に生じるブロック歪みを低減させるフィルタで、ブロックの境界に適用する平滑化フィルタの一種である（特許文献３）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開2006-148585号公報
【特許文献２】特許第4693603号公報
【特許文献３】特開2010-4555号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
非可逆圧縮の中には、領域と領域における特定の境界の画素を、大きく歪ませてしまうタイプの方式がある。このため、デブロッキングフィルタをかけるにあたっては、フィルタで用いる各画素について、どの程度歪む可能性があるか(復号画素値の信頼度)に応じて、フィルタ係数を決めることが望ましい。しかし、従来のデブロッキングフィルタは、個々の復号画素の信頼度には着目せず、領域がどの程度歪んでいるか(具体的には圧縮条件等)を基にフィルタ係数を決めている。つまり、従来のデブロッキングフィルタを使うと、平滑化は達成できるが、信頼度の低い復号画素値の歪みを拡散させてしまうという問題があった。
【課題を解決するための手段】
【０００６】
この課題を解決するため、例えば本明細書に開示する画像処理装置は以下の構成を有する。すなわち、
非可逆な第１の符号化手段で符号化された第１のタイプのタイルの符号化データと、前記第１の符号化手段とは異なる第２の符号化手段で符号化された第２のタイプのタイルの符号化データとが混在した符号化画像データを復号する画像処理装置であって、
各タイルの符号化データが、いずれの符号化手段による符号化データであるのかを識別する識別手段と、
該識別手段の識別結果に従い、各タイルの符号化データについて該当する種類の復号処理を実行することでタイル画像を生成する復号処理手段と、
前記識別手段による識別結果に基づき、前記復号処理手段による復号処理で得られたタイル画像で構成される画像中の、前記第１のタイプのタイルと前記第２のタイプのタイルとが隣接するタイル境界を検出する検出手段と、
該検出手段が検出した前記タイル境界を接する前記第１のタイプのタイル内の前記タイル境界に接する画素の値を、前記タイル境界を跨ぐサイズを有すると共に前記第１の符号化手段と前記第２の符号化手段の信頼度に応じた特性を有するフィルタを用いて、フィルタ処理するフィルタ処理手段とを有する。
【発明の効果】
【０００７】
本明細書によれば、少なくとも非可逆符号化方式を含む複数の符号化方式で生成されたタイル単位の符号化データが混在した符号化画像データを復号した際に、異なる符号化方式のタイルの境界における画質差を小さくし、自然な画像を生成することができる。
【図面の簡単な説明】
【０００８】
【図１】実施形態１における符号化側のコンピュータシステムの構成図と機能ブロック図
【図２】サーバ・クライアントの構成図
【図３】第１の実施形態における符号量制御付き画像圧縮処理フローを説明する図
【図４】第１の実施形態における符号量制御処理フローを説明する図
【図５】第１の実施形態における可逆領域の再符号化処理フローを説明する図
【図６】第１の実施形態における符号列の構成を説明する図
【図７】第１の実施形態における符号量制御に入る前の可逆／非可逆圧縮領域の分布を説明する図
【図８】第１の実施形態における復号側のコンピュータシステムの構成図と機能ブロック図
【図９】第１の実施形態における復号処理の全体フローを説明する図
【図１０】第１の実施形態におけるデブロッキングフィルタ対象のタイルと参照するタイルの位置関係を説明する図
【図１１】第１の実施形態におけるタイルの行を説明する図
【図１２】第１の実施形態におけるデブロッキングフィルタの処理フローを説明する図
【図１３】第１の実施形態におけてデブロッキングフィルタ処理で使用する画素を説明する図
【図１４】写真領域以外が可逆タイルと非可逆タイルに分断される状態を説明する図
【図１５】JPEG2000の歪みの特性を説明する図
【図１６】JPEG2000の逆DWTを説明する図
【図１７】第２の実施形態におけるデブロッキングフィルタの処理フローを説明する図
【図１８】第３の実施形態における、隣接するJPEGタイルとJPEG2000タイルと写真領域以外の位置関係を説明する図
【図１９】第３の実施形態におけるデブロッキングフィルタ処理の全体フローを説明する図
【図２０】第３の実施形態におけるJPEG2000タイルへのデブロッキングフィルタ処理のフローを説明する図
【図２１】デブロッキングフィルタ処理で用いる画素を説明する図
【図２２】第３の実施形態におけるJPEGタイルへのデブロッキングフィルタ処理フローを説明する図
【図２３】第２の実施形態におけるフィルタテーブルの一例を示す図である。
【発明を実施するための形態】
【０００９】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
【００１０】
［第１の実施形態］
最初に、本実施形態で用いる符号化方式の概要、並びに、画質上の問題点を簡単に説明する。次いで、画質上の問題を克服するための従来技術（デブロッキングフィルタ）と、その課題，解決方法を説明する。
【００１１】
符号化方式には、文書画像での高圧縮性と符号量制御を実現するため、可逆符号化と符号量制御可能な非可逆符号化を適応的に使い分ける符号化(適応符号化)用いる。本実施形態においては、非可逆符号化（第１の符号化）として、国際標準符号化方式であるJPEG2000(ITU-T T.800 | ISO/IEC 15444-1)を用いる。また、可逆符号化（第２の符号化）として、国際標準符号化方式のJPEG-LS(ITU-T T.87 | ISO/IEC 14495-1)を用いる（第２の符号化）。また、符号量制御は、JPEG2000による符号化データにおけるビットプレーンの符号化データの削除によって実現するものとする。JPEG200では、ウェーブレット変換で得られた各変換係数の同一ビットで構成されるビットプレーン毎の符号化データを生成する。下位ビットほど画質に与える影響は小さいと言える。そこで、最下位ビット（ビット０）から上位に向かう、どのビット位置までのビットプレーンの符号化データを削除するかを決定することで、符号量制御を実現する。
【００１２】
この適応符号化方式では、文書等の画像が入力された後、画像を矩形(タイル)に分割する。その後で、各タイルは写真の特性を持つ領域(写真領域)か、網点や線画，テキスト，グラデーション等の写真以外の特性を持つ領域(写真領域以外)かを判定する。そして、写真領域のタイルには非可逆符号化方式、写真領域以外のタイルには可逆符号化方式を適用する(以下、前者のタイルを非可逆タイル、後者のタイルを可逆タイルと呼ぶ)。このような符号化方式に共通する画質上の問題が１つある。それは図１４に示したように、画像中の写真領域と写真領域以外の境界を含むタイルは、写真領域と接しているため、しばしば非可逆符号化が適用される。この結果として、隣接する写真領域以外タイルでは可逆符号化が適用されているにもかかわらず、境界部分では非可逆符号化が適用され、画質差が生じてしまうことがある。特に、高圧縮にする場合には、その問題は顕著に現れる。
【００１３】
これに対して、可逆タイルと非可逆タイルの境界に対してデブロッキングフィルタをかけて、タイル間の画素値変化の連続性を高めることにより、画質差を緩和させる方法が考えられる。しかし、従来のデブロッキングフィルタには、信頼度の低い画素の存在を考慮しておらず、歪みを拡散させてしまうという課題がある。これは、単に、タイルの圧縮条件を基に、フィルタリングの方法を決めていたからである。この信頼度の低い画素に関する具体例として、JPEG2000の復号結果がある。これに関して、図１５に示したとおり、タイルの右端の１列の画素（右端画素）と、下端の１行の画素（下端画素）が大きく歪むことがある（信頼度が低い）。この原因は、JPEG2000の復号過程における逆ウェーブレット(DWT)変換にある。これについて、JPEG2000でサポートする５ｘ３変換と呼ばれるＤＷＴ変換を例に説明する。
【００１４】
JPEG2000の逆ＤＷＴは、エントロピー復号，逆量子化を経て生成されたＤＷＴ係数に対して処理を行う。ＤＷＴ係数は２次元配列に格納されており、逆ＤＷＴは横方向，縦方向の順に処理を進め、各方向の処理では、低周波成分と高周波成分を使って逆変換を行う。５ｘ３変換の逆変換は以下となる。
X(2n)=L(n)-Floor((H(n-1)+H(n)+2)/4)
X(2n+1)=H(n)+Floor((X(2n)+X(2n+2))/2)
ただし、X(n)は復号画素、L(n)は低周波成分、H(n)は高周波成分である。また、nは復号画素，低周波成分，高周波成分の位置を示すインデックスであり、Nをタイルの注目方向における画素数とした場合、0≦n＜N/2である。なお、タイルサイズは偶数に設定されることが多く、以下の説明でもNは偶数であるとする。図１６は、N=8として上記変換式の変換過程を示した図である。同図において、L(0),H(0),...,L(3),H(3)は逆量子化後のＤＷＴ係数であり、X(0), ..., X(7)は復号画素である。また、H(-1),X(8)があるが、これらは逆ＤＷＴを行うために仮想的に設定される値であり、H(-1)=H(0),X(8)=X(6)とされる。この変換過程において注目すべき点として、X(0),X(2),...など偶数インデックスの復号画素値については、低周波成分と高周波成分の寄与比率は、おおよそL:H=2:1である。一方で、X(1),X(3),...など奇数インデックスの復号画素値については、低周波成分と高周波成分の寄与比率は、おおよそL:H=2:3である。また、通常、符号化においては、低周波成分に比べて、高周波成分の方が視覚的に与える影響が小さいと言われており、より情報を削減する。このため、奇数インデックスの復号画素は、偶数インデックスに比べて歪みやすい。さらに、奇数インデックスに限定してＤＷＴ係数を見ると、タイル境界の復号画素（図１６であればX(7)）と、その画素以外で歪みの現れ方が異なる。すなわち、タイル境界以外の復号画素は、異なる２つの偶数インデックスの復号画素の和から生成される。一方、タイル境界の復号画素は、同一の偶数インデックスの復号画素の和から生成される。このことは、前者については、偶数インデックスの２つの復号画素で誤差(原画像における画素値との差)の正負が逆であれば、誤差量を相殺し合う。しかし、後者についてはそのようなことはなく、誤差量を増幅させる。したがって、奇数インデックスの境界画素は大きく歪む画素が発生しやすい、つまり信頼度が低いということになる。前述のとおり、ＤＷＴ係数は２次元配列に格納されており、横方向については左端を０としてインデックスを割り振る。一方、縦方向については上端を０として、インデックスを割り振る。このため、タイル内の右端画素と下端画素の信頼度が低くなってしまう。
【００１５】
このように、JPEG2000では、特定の境界の画素の信頼度が低くなってしまうことが多く、従来のようなデブロッキングフィルタを用いては、歪みを拡散させてしまうことになる。そこで、本実施の形態においては、境界画素の信頼度に応じて、デブロッキングフィルタの係数を設定する方法を、解決策として提案する。なお、可逆タイルには歪みは生じないので、デブロッキングフィルタを可逆タイルの境界画素に適用すると、可逆性を損なうことになる。このため、可逆タイルにはデブロッキングフィルタを適用しない。
【００１６】
本実施形態では、非圧縮画像データを保有しているサーバが、クライアントからの要求を受け付け、要求に応じた画像データをクライアントに返送するシステムを想定する。そして、本実施デーでは、そのサーバにおける符号化処理について説明する。クライアントからサーバに対する要求は、クライアントが取得したい画像と、受信できるデータサイズとする。そして、本実施形態では、クライアントが符号化された画像データを受け取った後、復号し、デブロッキングフィルタを行う処理についても説明する。
【００１７】
図１は、本実施形態におけるシステムを構成するサーバのブロック構成図である。CPU101は、システム全体の動作をコントロールし、一次記憶102に格納されたプログラムの実行などを行う。一次記憶102は、ＲＡＭで構成される主メモリであり、二次記憶103に記憶されたプログラムなどを読み込んで格納する。二次記憶103は例えば、ハードディスクなどの記憶媒体がこれに該当する。一般に一次記憶の容量は二次記憶の容量より小さく、一次記憶に格納しきれないプログラムコードやデータなどは二次記憶に格納される。また、長時間記憶しなければならないデータなども二次記憶に格納される。本実施形態では、プログラムを二次記憶103に格納し、プログラム実行時に一次記憶102に読み込んでCPU101が実行処理を行う。入力デバイス104とは、例えば、マウスやキーボードなどがこれに該当する。プログラムなどに割り込み信号を送ったりするために用いる。出力デバイス105とは例えば、モニタやプリンタなどが考えられる。この装置の構成方法は他にも様々な形態が考えられるが、本発明の主眼ではないので説明を省略する。ネットワークＩ／Ｆ106は、ネットワークと通信するためのインタフェースであって、有線、無線を問わない。
【００１８】
図２は、本実施形態を実現するシステムの概略の一例を示した図である。図示における符号201,202はクライアントを表している。クライアント201、またはクライアント202のように、複数のユーザが、有線、無線を問わず、ネットワーク203によってサーバ204と通信することが可能である。クライアント201,202は、PCや、タブレット端末、携帯端末、プリンタなどであって、通信機能を有し、画像を出力できる装置である。サーバ204は図１に示す構成を有し、且つ、画像ファイルを蓄積する大容量の記憶装置205を持っている。大容量の記憶装置205はたとえば、ハードディスクなどがこれに該当する。このハードディスクには、テキストや線画、自然画などを含む非圧縮画像データが数多く格納されている。クライアント201、202は画像データとその圧縮データサイズの上限値をサーバに要求する。圧縮データの上限値は、ネットワークの状況やクライアントのメモリ容量などから算出される値である。サーバ204は、クライアント201、202が指定した画像データを指定された上限値以下のファイルサイズになるように圧縮し、その圧縮データをクライアント201、202に返送する。クライアント201、202は、受信した圧縮データを復号する。
【００１９】
まず、サーバ204の動作をより詳しく述べる。サーバ204は、クライアント201、202が指定した画像データ（ファイル名等を指定するものとする）を、タイルに分割し、各タイルの特徴に応じて、可逆圧縮または非可逆圧縮を選択し、符号化する。本実施形態では、タイルのサイズは128x128[pixel]とする。また、可逆圧縮として文字や線画の圧縮を得意とするJPEG-LS符号化方式を、非可逆圧縮として自然画の圧縮を得意とするJPEG 2000符号化方式を用いる。したがって、タイルが文字や線画を多く含んでいればJPEG-LS方式が選択され、自然画を多く含んでいればJPEG2000方式が選択される。全てのタイルを符号化し終えた後、JPEG2000で圧縮されたタイル(JPEG2000タイル)の符号量を、タイル間で差をつけずに、JPEG-LSで圧縮されたタイル(JPEG-LSタイル)との画質差を許容範囲以内に保ち削除する。削除した結果、指定された符号量以下であれば、そのデータをクライアントに返送する。JPEG-LSタイルとの画質差を許容範囲以内に保つことができないほどJPEG2000タイルのデータを削除する必要がある場合には、超過している符号量と可逆圧縮領域と非可逆圧縮領域の分布から、符号量制御の方法を変える。
【００２０】
また、タイルの符号化する順序は、タイルを単位とするラスタースキャン順、すなわち、左端タイルから右端タイル、右端タイルに到達した場合には１つ下方向の左端タイルから右端タイル、…の順に符号化していくものとする。
【００２１】
このようなサーバ204の動作について、図３を用いて、さらに詳しく説明する。同図は、サーバ204におけるCPU201が実行するアプリケーションプログラムの手順を示している。なお、以下の処理は、クライアント201から、画像要求を受信した場合の処理である。クライアントからの画像要求には、その画像を特定する情報（例えばファイル名やインデックス番号）と、データの上限値が含まれるものとする。
【００２２】
ステップS301では、クライアント201（又は202)から指示された画像を、記憶装置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タイル数となる。ステップS305では、タイル番号用のカウンタTにゼロを代入して初期化する。
【００２３】
以下、ステップS305〜S310で、タイル毎にJPEG-LSとJPEG2000を切り替えて符号化する。ステップS305では、着目タイルTの符号化方式を決定する。符号化方式の決定は、タイルTに文字や線画が多く含まれる場合には、JPEG-LS符号化方式を選択し、そうでない場合には、JPEG 2000符号化方式を選択する。タイルTに文字や線画が多く含まれるか否かについては、タイルTを解析して、様々な特徴量から推定できる。たとえば、色数が少ない場合には、文字や線画と判断し、色数が多い場合には自然画が多いと判断する。あるいは、エッジ検出を行い、エッジが多ければ文字や線画が多いと判断し、そうでなければ自然画が多いと判断する。他にも様々な方法が考えられるが、本提案の主眼ではないため、詳細な説明は割愛する。本実施形態では、着目タイル内でエッジ検出を行ない、エッジと判定された画素数が所定の閾値より多い場合には、文字・線画が多く含まれるとしてJPEG-LS符号化を、そうでなければ、JPEG2000符号化を選択するものとする。
【００２４】
ステップS306では、ステップS305の決定により、着目タイルTの圧縮方式が可逆圧縮符号化かどうかを判断する。着目タイルTの符号化方式がJPEG-LS符号化方式、つまり可逆圧縮方式であれば、ステップS307へ進む。そうでなければ、ステップS308へ進む。ステップS307では、着目タイルTをJPEG-LS符号化方式で圧縮する。ステップS308ではタイルTをJPEG2000符号化方式で圧縮する。圧縮処理（符号化処理）の結果、生成された着目タイルの符号化データは、一次記憶装置102に格納されるものとするが、格納先は二次記憶装置103でも構わない。ステップS309ではタイル番号Tを1つインクリメントする。ステップS310では、タイル番号TがステップS303で算出したタイル総数Tsumと比較する。TとTsumが同じであれば、すべてのタイルについて一通り符号化し終えたと判断し、ステップS311へ進む。両者の値が異なる場合は、まだ、符号化し終えていないタイルがあると判断し、ステップS304へ処理を戻す。
【００２５】
ステップS311では、これまでに生成された符号量の合計値（ファイルサイズ）が、ステップS302で取得した上限符号量D_max以下になるように符号量制御を行う。そして最後に、ステップS312で符号列の生成を行う。符号列は、図６に示したとおり、ヘッダ、JPEG2000符号列、JPEG-LS符号列から構成される。ヘッダには、画像の縦横サイズ、タイルサイズ、各タイルがJPEG2000/JPEG-LSのいずれで圧縮されたかを示すフラグ情報、JPEG2000/JPEG-LSの各符号列長、並びに、符号化パラメータ（後述するJPEG2000符号化データにおける削除したビットプレーン数など）が記述される。JPEG2000符号列は、JPEG-LSが選択されたタイルについては符号が発生しなかったものとして生成される。例えば、図７において、領域801，804はJPEG2000で圧縮され、領域802と803はJPEG-LSで圧縮されたとする。その場合には、802と803のタイルについてはJPEG2000の符号が発生しなかったものとして、JPEG2000の符号列を生成する。JPEG-LS符号列も同様な構成を取る。このようにして符号列が生成されると、クライアント201もしくは202へ符号列は送信される。
【００２６】
次に、ステップS311の符号量制御処理について、図４を用いて説明する。ステップS501では、可逆圧縮データのデータサイズD_lsを取得する。これは、図３のステップS307でJPEG-LS圧縮されたタイルの圧縮データの総和から簡単に算出できる。本実施形態では、D_ls = 1.26[MB]であるとする。ステップS502では、可逆圧縮タイルと非可逆圧縮タイルの画質差があらかじめ決められた許容範囲以内になる、削除可能な最大ビットプレーン枚数Cを取得する。この削除可能な最大ビットプレーン数Cは、非圧縮画像の色空間やビット精度、JPEG2000符号化の圧縮パラメータなどによって決まる値である。それぞれの状態における削除可能な最大ビットプレーン枚数Cは、あるサンプル画像を用いた実験や統計に基づいて、JPEG-LSタイルとJPEG2000タイルの画質差が許容できる範囲になる値を予め決めておく。本実施形態では、削除可能な最大２ビットプレーン（ビット０、１のプレーン）まで削除しても、JPEG-LSタイルとJPEG2000タイルの画質差が許容範囲以内におさまるものとする。
【００２７】
ステップS503では、ステップS502で取得したビットプレーン枚数Cを、すべてのJPEG2000タイルの符号データから削除したと仮定した場合のJPEG2000符号量D_cを算出する。本実施形態では、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
を満たせば、画像全体の符号量が上限符号量D_max 以下になるまで、JPEG2000タイルのビットプレーンを削除しても、JPEG-LSタイルとJPEG2000タイルの画質差が許容できる範囲以内であるといえる。その場合、ステップS507へ進む。
【００２８】
また、 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では、全てのJPEG-LSタイルをJPEG2000で再符号化しなおす。この再符号化の方法については、後に詳しく述べる。ステップS506では、可逆圧縮データのデータサイズD_lsをゼロにする。
【００２９】
ステップS507では、非可逆圧縮領域の上限符号量D_j2kを算出する。これは、上限符号量D_maxから可逆圧縮領域のデータ量D_lsを引き算することで得られる。ステップS508では、JPEG2000の符号量を、ステップS507で算出した符号量D_j2k以下になるように、全てのJPEG2000タイルのデータを一様に削除する。このステップS508の処理を簡単に述べると次の通りである。例えば、ビットプレーンの削除無しで、総符号量がD_max以下の場合には、削除処理は不要である。また、非可逆符号化された全タイルのビット０プレーンを削除して、初めてD_ls+D_c＜D_maxを満たす場合には、非可逆符号化された全タイルのビット０のプレーンの符号化データを削除する。そして、また、非可逆符号化された全タイルのビット０、ビット１のプレーンを削除して、初めてD_ls+D_c＜D_maxを満たす場合には、非可逆符号化された全タイルのビット０、１のプレーンの符号化データを削除する。
【００３０】
次に、ステップS505における、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へ戻す。同じであれば、全てのタイルについて、再符号化が終了したものと判断する。
【００３１】
なお、ステップS505を経て、ステップS508に処理が進んだ場合、全タイルが非可逆符号化されたことになり、可逆符号化されたタイルは存在しないことになる。つまり、可逆符号化されたタイルと、非可逆符号化されたタイルの境界における歪みの問題は発生しない。そのため、全タイルが非可逆符号化された場合には、上記の削除許容ビットプレーン数Cに無関係に、上限値D_max以下となるまでビット０から上位ビットまでのビットプレーンの符号化データを削除する。
【００３２】
以上の説明のように、実施形態におけるサーバ204は、可逆符号化（実施形態ではJPEG-LS)されたタイルと非可逆符号化（実施形態ではJPEG2000）されたタイルの符号化データを混在させた符号化画像データを生成することができる。しかも、削除許容範囲を示す削除ビットプレーン数C以下のビットプレーンの符号化データを削除することで、目標符号量（上限符号量D_max）以下の符号化データを生成する。しかし、複数の種類の符号化データが混在する場合、あくまでタイル境界における歪みを低減できるものの、歪みを完全に抑制することを保証するものではないし、画像によっては削除ビットプレーン数が“２”でも、タイル境界に歪みが発生し得る。そこで、本実施形態では、クライアント201（もしくは202）は、上記の符号化データを受信し、復号する場合に、タイルの境界における歪みの発生を更に抑制する復号処理を行なうこととした。
【００３３】
以下、クライアント201（もしくは202）における復号処理を説明する。この復号処理は、クライアント201における二次記憶装置103に格納されたアプリケーションプログラムが、一次記憶102にロードされ、CPU101が実行することで行われる。そして、復号処理では、各タイルの符号化データを、それに適用された符号化方式に応じて復号していく。その過程で、復号済みのタイルに対して、画像処理を加える。この処理では、図１０に示したとおり、水平右方向をX方向、垂直下方向をY方向と定義する。その上で、X方向にa番目、Y方向にb番目の着目タイルT(a,b)の復号が終了した後、真上のT(a,b-1)が可逆タイル，非可逆タイルのいずれであるかを判定する。もし、タイルT(a,b-1)は非可逆タイルであれば、T(a,b-1)から見て右方向，下方向の隣接タイル、つまりT(a+1,b-1)，T(a,b)の符号化方式を判定する。もし、いずれかが可逆タイルである場合、非可逆タイルT(a,b-1)と、可逆として判定された右隣又は下隣のタイルとの境界付近には、写真領域以外があると判断する。そして、同一の写真領域以外に生じている画質差を緩和させるため、該当する境界にデブロッキングフィルタをかける。なお、左方向と上方向をデブロッキングフィルタの対象外とする理由は、本実施形態の冒頭で説明したとおり、JPEG2000が適用されたタイルの直の、左端画素や上端画素は、右端画素や下端画素に比べて、信頼度が高いからである。なお、X方向のタイル数をNum_T_xとした場合、デブロッキングフィルタをかけるために、復号済みのタイルをNum_T_x+1個バッファリングしておく必要がある。
【００３４】
図８(a)は、本実施形態におけるクライアント201（クライアント202も同様）のブロック構成図である。同図における各処理ブロック801乃至806は図１と概略同様であるので、説明は割愛する。
【００３５】
図９は本実施形態におけるクライアント201（又は202）における復号処理のフローチャートである。この処理は、サーバ204に、画像要求（画像を特定する情報と、データ量の上限値を含む）を送信した結果、サーバ204が要求された範囲内の符号化データを送信してきた場合の、CPU801が実行する復号処理に係るアプリケーションプログラムでもある。なお、二次記憶装置に一旦記憶した符号化画像データを復号する場合にも実行する。
【００３６】
ステップS901では、CPU801は、受信した符号列を一次記憶装置802格納する。ステップS902では、符号列のヘッダを解析し、画像に関する情報，符号化に関する情報を取得する。具体的には、符号化された画像の縦横（水平、垂直）方向のサイズ、タイルサイズ、縦横方向のタイル数、各タイルがJPEG2000/JPEG-LSのいずれで圧縮されたかを示すフラグ情報、JPEG2000/JPEG-LSの各符号列長、削除ビットプレーン数などの情報を取得する。ステップS903では、符号化された画像の縦横サイズとタイルサイズの情報から、タイルの総数Tsumを算出する。ステップS904では、タイルカウンタTの初期化を行う。具体的には、タイル番号用のカウンタTにゼロを代入して初期化する。ステップS905では、ステップS902で得たヘッダの情報から、着目タイルTの符号化方式を確認し、ステップS906で可逆，非可逆のいずれであるかを識別する。この識別結果、タイルTが可逆の符号化方式で符号化されていると判定された場合には、ステップS907でJPEG-LSの復号を行い、復号結果（タイル画像）を一次記憶装置102に確保されたバッファへ格納する。さらに、各タイルが、いずれの符号化方式が適用されたかを示す符号化方式マップを更新する。具体的には、符号化方式マップに、注目タイルTはJPEG-LSで符号化されていたことを示すフラグ“0”を記述する。一方で、タイルTの符号化方式がJPEG2000であると判定された場合、ステップS908でJPEG2000の復号を行い、復号結果をバッファへ格納する。さらに、符号化方式マップに、注目タイルはJPEG2000で符号化されていたことを示すフラグ“1”を記述する。JPEG-LS，JPEG2000いずれの復号方法も、公知技術であるので、ここでは説明を割愛する。次に、ステップS909において画像処理を行う。この画像処理は、ステップS907もしくはステップS908で復号されたタイルから見て、上に位置するタイルを対象とする。なお、着目タイルが、画像の上辺に接するタイルである場合、処理対象のタイルは存在しないので、S909の処理は行なわない。また、図１０で示したとおり、着目タイルTがタイルＴ(a,b)としたとき、画像処理対象のタイルはT(a,b-1)である。そして、この画像処理では、その画像処理対象のタイルT(a,b-1)、並びに隣接するタイルT(a,b)、T(a+1,b-1)それぞれに適用された符号化方式に基づいて、デブロッキングフィルタを行う。詳細については後述する。ステップS910では、ステップS909の画像処理の対象となったタイルを外部へ出力する。これは、以降の処理で該当のタイルは不要であるからである。次いで、ステップS911でタイルのカウンタTをインクリメントして、ステップS912でTsumとの大きさを比較する。もし、T＜Tsumであれば、未復号のタイルがあるので処理をステップS905へ戻す。もし、T＝Tsumであれば、ステップS913へ処理を進める。
【００３７】
ステップS913の処理に入る時点で、図１１に示した最終行のタイルの画像処理が未完了である。そのため、ステップS913以降では、最終行のタイルの画像処理を行う。ステップS913では、タイルカウンタT’の初期化を行う。すなわち、最終行の先頭タイルの番号T'を、T'=Tsum-Num_T_xとして算出する。ここで、Num_T_xは、水平方向に並ぶタイル数である。
【００３８】
ステップS914では、タイルT’に対して画像処理を行う。この処理については、ステップS909と同じであり、後程説明をする。ステップS915で画像処理が済んだタイルを外部へ出力し、ステップS916でタイルカウンタT’をインクリメントする。そして、ステップS917でTsumとの大きさを比較する。もし、T’＜Tsumであれば、未復号のタイルがあるので処理をステップS914へ戻す。もし、T’＜Tsumでなければ、全ての処理を終える。
【００３９】
次に、ステップS909，S914の画像処理について、図１２のフローチャートを用いて説明する。なお、これまでの説明では、タイルTを着目タイルとしたのに対し、図１２における画像処理では、タイルTの真上のタイルが画像処理対象となる点に注意されたい。すなわち、画像処理対象では、タイルＴの真上のタイルを着目タイルとして説明することに注意されたい。この様にする理由は、着目タイルの右隣のタイル、及び、下隣のタイルの復号処理が終えている必要があるからである。
【００４０】
ステップS1201で、符号化方式マップを参考に、着目タイルは非可逆タイルかどうかを判断する。もし、非可逆タイルではない、すなわち、可逆タイルである場合には、デブロッキングフィルタは不要であるので、処理を終える。もし、着目タイルは非可逆タイルであれば、ステップS1202に処理を進める。
【００４１】
ステップS1202では、削除ビットプレーン数が“２”以上であるか否かを判定する。可逆符号化タイルと、非可逆符号化タイルが混在する場合、上記実施形態のサーバ204は、非可逆符号化データから最大２つのビットプレーンの符号化データを削除する。これは、可逆符号化データと非可逆符号化データが混在した際のタイルの境界にてひづみの発生を抑制するためである。削除ビットプレーン数が２より少ない場合、すなわち、削除無し、又は、ビット０のプレーンの符号化データを削除した場合、タイル間に歪みが発生しないものとし、本処理を終える。しかし、削除ビットプレーン数が２の場合には、歪みが発生する確立は少ないが、それを保証するものではない。そこで、削除ビットプレーン数が２以上の場合には、ステップS1203以降の処理にて、係る歪みの発生の抑制を復号処理にて行なうものとした。
【００４２】
ステップS1203では、符号化方式マップを基に着目タイルの右隣のタイルの符号化方式が可逆符号化であるか否かを判定する。右隣のタイルが可逆符号化されていると判定した場合、処理をステップS1204に進める。このステップS1204では、着目タイル内の、右隣のタイルとの境界に位置する画素（実施形態では、１タイルのサイズを128×128画素としているので、垂直方に並ぶ128画素）を補正するための、デブロッキングフィルタを行う。これは、図１３に示したとおりで、非可逆タイルの境界画素毎にかけるフィルタである。そして、注目の境界画素に対して、左右１画素ずつ用いて処理する。デブロッキングフィルタとしては、FIRを用いて、フィルタリング対象の画素に対して最も重みづけを行う場合が多い。しかし、本実施形態では、着目境界画素の信頼度は低いので、右隣りの可逆タイルの境界画素と同じ重みづけを行うものとする。非可逆タイルの境界画素（つまり注目画素）をp0、左隣の画素をp1、右隣りの画素（つまり可逆タイルの境界画素）をq0とした場合、p0'=(1/5)*p1+(2/5)*p0+(2/5)*q0の演算を行う。そして、画素値P0を、この算出で得られた画素値P0'で置き換える。なお、p1,q0共にフィルタリング対象の画素の隣接であるが、且つ、q0の重み係数をp1のそれよりも大きな値にしているのでは、p1は非可逆符号化データから生成された値であるのに対し、q0は可逆符号化データから得られた値であって信頼性がP1より高いからである。ステップS1204を終え、ステップS1205に処理が進むと、今度は着目タイルの下隣のタイルの符号化方式が可逆符号化であるか否かを判定する。下隣のタイルが、可逆符号化されていると判定した場合、着目タイル内の、下隣のタイルとの境界に位置する画素（実施形態では、128画素）を補正するための、デブロッキングフィルタを行う。この処理はステップS1204と比べて、デブロッキングフィルタの適用方向が水平か垂直か、用いるタイルが右方向か下方向かの差だけであり、同じ処理を行う。このため、説明を割愛する。ステップS1206を終えると、画像処理を終える。
【００４３】
本実施形態の復号処理では、図８(a)に示す二次記憶装置803に格納されたプログラムとして、その動作を説明した。しかし、これをハードウェアで実施しても構わない。この場合の構成の概略を図８(b)に示した。同図において、806は符号列入力部、807は符号列バッファであり、これらのブロックは図９におけるステップS901の処理で用いられる。808はヘッダ解析部であり、ステップS902で用いられる。809はJPEG2000復号部であり、ステップS908で用いられる。810はJPEG-LS復号部であり、ステップS907で用いられる。811は復号タイルバッファであり、ステップS907,S908の復号結果を格納するために用いられる。812は画像処理部であり、ステップS909,S914で用いられる。813は出力部であり、ステップS910,S915で用いられる。
【００４４】
以上説明したように本実施形態によれば、非可逆符号化された第１のタイプのタイルに、可逆符号化された第２のタイプのタイルが隣接する場合に、その境界位置における歪みの発生を更に抑制することが可能になる。なお、上記実施形態では、削除ビットプレーン数が２の場合にデブロッキングフィルタ処理を行なったが、削除ビットプレーン数が０、１のいずれでも行なっても構わない。
【００４５】
［第２の実施形態］
上記第１の実施形態では、可逆符号化されたタイルと非可逆符号化されたタイルが共に１以上の場合の、非可逆符号化データの削除可能な最大ビットプレーン枚数Cが固定値“２”として説明した。しかし、この最大ビットプレーン枚数Cをクライアント201（又は202）が設定できる例を以下に説明する。クライアント201は、サーバ204に送信する画像要求情報に、その画像を特定する情報、許容データ量D_maxに加え、最大ビットプレーン枚数Cを含めて送信する。サーバは、これらの情報に基づき、符号化処理を行なうことになるが、符号化処理は上記第１の実施形態から明らかであるので、その説明については省略し、クライアント側の復号処理を説明する。
【００４６】
ここで、可逆タイルと非可逆タイルの画質差を、より生じさせる圧縮条件で符号化した場合を考える。例えば、クライアント201がサーバ204に送信した要求に、最大削除ビットプレーン枚数Cを４とする情報が含またとする。そして、サーバ204が可逆、非可逆タイルを混在させ、且つ、４ビットのビットプレーンを削除した符号化データをクライアント201に返信した場合を考察する。この場合、可逆タイルと非可逆タイルの画質差はより大きくなる。このため、第１の実施形態では、注目非可逆タイルの右方向と下方向でデブロッキングフィルタをかけていたが、上方向と左方向でのデブロッキングフィルタも必要となる。ただ、右もしくは下方向の境界画素と、左もしくは上方向の境界画素では信頼度が異なる。このため、フィルタリング対象の境界に応じて、デブロッキングフィルタを変える。本第２の実施形態では、そのようなデブロッキングフィルタのかけ方について説明する。なお、第１実施形態と比べて、異なる処理は図９におけるステップ910,915の画像処理である。そこで、以下の説明では、該当処理に注力する。
【００４７】
図１７において、ステップS1701で注目タイルは非可逆符号化されていたか否かを判断する。可逆符号化されていた場合には、本処理を終える。一方で、着目タイルが非可逆符号化されていたと判断された場合には、ステップS1702に進む。このステップS1702では、復号対象のファイルヘッダから読み出した削除ビットプレーン数をキーにして、二次記憶装置803に予め格納されたフィルタテーブルから、デブロッキングフィルタ処理Ａ，Ｂで用いるフィルタ情報を読み出す。図２３は、そのフィルタテーブルの例である。図示の如く、削除ビットプレーン数に応じて、２種類のデブロッキングフィルタ処理Ａ、Ｂに用いるフィルタ情報が定義されている。デブロッキングフィルタ処理Ａは、第１の実施形態と同様の、タイル内の右端、並びに、下端の画素を補正するフィルタ処理である。デブロッキングフィルタ処理Ｂは、タイル内の左端、並びに、上端の画素を補正するフィルタ処理である。なお、図示において、“−”は該当するデブロッキングフィルタ処理は行なわないことを表わす。例えば、削除ビットプレーン数が“２”の場合、デブロッキングフィルタ処理ＡはフィルタＡ０を用いて行なうが、デブロッキングフィルタ処理Ｂは行なわないことを示している。また、実施形態の場合、３タップのフィルタ処理であるので、１つのフィルタには、３つのフィルタ係数（重み係数）が格納されている。
【００４８】
ステップS1703では、着目タイルの右隣のタイルが可逆であったか否かを判定する。右隣のタイルが可逆であった場合、着目タイルの右側に可逆タイルに接していたことになるので、ステップS1704に進み、デブロッキングフィルタ処理Ａを実行し、着目タイル内の右端の画素値を補正する。
【００４９】
ここで、例えば、削除ビットプレーン数が４であり、デブロッキングフィルタ処理Ａで用いるフィルタＡ２に｛1/5， 2/5， 2/5｝で示される３つのフィルタ係数が格納されていたとする。この場合、着目タイル内の右端画素値p0に対して、次式のフィルタ処理を行ない、補正後の画素p0'を算出することになる。
p0’=(1/5)*p1+(2/5)*p0+(2/5)*q0
ここで、p1,p0,q0は第１の実施形態と同じ意味を持つ。
【００５０】
ステップS1705では、着目タイルの下隣のタイルが可逆であったか否かを判定する。下隣のタイルが可逆であった場合、着目タイルの下側に可逆タイルに接していたことになるので、ステップS1706に進み、デブロッキングフィルタ処理Ａを実行し、着目タイル内の下端の画素値を補正する。
【００５１】
ステップS1707では、着目タイルの左隣のタイルが可逆であったか否かを判定する。左隣のタイルが可逆であった場合、着目タイルの左側に可逆タイルに接していたことになるので、ステップS1708に進み、デブロッキングフィルタ処理Ｂを実行し、着目タイル内の左端の画素値を補正する。
【００５２】
ここで、例えば、削除ビットプレーン数が４であり、デブロッキングフィルタ処理Ｂで用いるフィルタＢ０に｛1/6， 3/6， 2/6｝で示される３つのフィルタ係数が格納されていたとする。この場合、着目タイル内の左端画素値p0に対して、次式のフィルタ処理を行ない、補正後の画素p0'を算出することになる。
p0’=(1/6)*p1+(3/6)*p0+(2/6)*q0である。
【００５３】
これまでの説明からわかるように、削除ビット数に対するフィルタＡとフィルタＢの違いは、後者のが、補正前の値の重み大きく、隣接する可逆符号化タイル内の影響を小さくしている点である。
【００５４】
ステップS1709では、着目タイルの上隣のタイルが可逆であったか否かを判定する。上隣のタイルが可逆であった場合、着目タイルの上側に可逆タイルに接していたことになるので、ステップS1710に進み、デブロッキングフィルタ処理Ｂを実行し、着目タイル内の上端の画素値を補正する。
【００５５】
以上説明したように、可逆符号化されたタイルデータと、非可逆符号化されたタイルデータが混在した画像を復号する際、データ量制御のために削除したビットプレーン数に応じて適応的にデブロッキングフィルタ処理で用いるフィルタを決定する。この結果、タイル境界での歪み（ノイズ）を抑制させ、高い画質の画像を得ることができる。
【００５６】
[第３の実施形態]
本第３の実施形態は、非可逆符号化として、JPEG2000だけでなく、JPEG(ITU-T T.81 | ISO/IEC 10918-1:1994)も用いることを許容する。つまり、タイルをJPEG-LS,JPEG2000,JPEGのいずれかで圧縮するものとする。JPEGを導入する狙いとしては、処理時間の短縮化である。すなわち、JPEG2000は高圧縮性，「符号量制御が容易」というメリットがある反面、符号化処理に時間がかかる。一方で、JPEGは、圧縮性能，符号量制御の面でJPEG2000に劣るものの、符号化処理が簡易である。このため、写真領域の一部のタイルに対してJPEGを適用することで、符号化処理全体の処理時間を短くできる。
【００５７】
第１の実施形態で説明したとおり、JPEG2000の復号結果のタイルに着目したとき、そのタイル内の右方向と下方向のタイル境界画素の信頼度が低くなるという特性がある。JPEGについては、そのような特性はなく、いずれの境界の画素も、信頼度は変わらない。本第３の実施形態では、この点に注目し、境界画素の位置によって信頼度が変わる非可逆方式と、信頼度が変わらない非可逆方式を併用する場合のデブロッキングフィルタ処理の方法を示す。
【００５８】
本第３の実施形態における符号化方式は、JPEGを利用するため、第１実施形態とは異なるが、本実施形態の趣旨は、あくまでデブロッキングフィルタの使い方である。そのため、符号化方式については、説明を簡略にする。
【００５９】
符号化において、まず、写真領域のタイルに対し、JPEG2000もしくはJPEGのいずれを適用するかについては、タイル内に所定の大きさ以上のエッジがどの程度分布するかに応じて決める。具体的には、大きなエッジが多く出現していればJPEGで符号化し、そうでなければJPEG2000で符号化する。このようにする理由は、高周波成分が多ければ多い程、JPEG2000の処理時間が増加していくからである。
【００６０】
次に、符号量制御に関して、タイルを符号化した後、JPEG-LS圧縮されたタイルのデータの総和(D_ls)、JPEG2000圧縮されたタイルのデータの総和(D_j2k)、JPEG圧縮されたタイルのデータの総和(D_jp)を求める。そして、D_ls、D_j2k、D_jpの和(D_sum)を算出し、画像を圧縮した結果の上限符号量D_maxと比較する。もし、D_sum≦D_maxであれば、符号量制御は不要でそのまま出力する。一方で、D_sum＞D_maxの場合、符号量制御が必要となる。まず、JPEG2000タイルを２ビットプレーン削除した場合の符号量(D_j2k_c)、JPEGのタイル(JPEGタイル)を1ビットプレーン削除した場合の符号量(D_jp_c)を求める。これは、可逆タイルと非可逆タイルの画質差が許容範囲内になる、削除可能な最大ビットプレーン枚数である。この削除について、JPEG2000のデータには削除を簡易に行えるデータ構造があるが、JPEGのデータにはそのような構造がない。そのため、JPEGで符号化されたタイル(JPEGタイル)をローカル復号し、再符号化する。具体的には、全JPEGタイルのデータをいったんメモリにコピーする。その上で、各JPEGタイルをハフマン復号して、量子化インデックス(量子化されたDCT係数)を生成する。そして、各量子化インデックスの下位２ビットプレーンを削除し、ハフマン符号化する。この一連の処理により、JPEGデータのビットプレーン削除を行う。そして、D_ls、D_j2k_c、D_jp_cの和(D_sum_c)を算出し、D_sum_cがD_maxより小さければ、JPEG-LSタイルのデータを再符号化せずに、JPEG2000タイルとJPEGタイルで符号量制御を行う。この符号量制御では、最初にJPEG2000タイルを１タイルずつ、ラスタースキャン順に下位１ビットプレーンを削る。もし全てのJPEG2000タイルの下位１ビットプレーンを削っても、JPEG-LS,JPEG,JPEG200のデータ総和がD_maxを超えていたら、JPEGタイルを１タイルずつ、ラスタースキャン順に下位１ビットプレーンを削る。もし全てのJPEGタイルの下位１ビットプレーンを削っても、JPEG-LS,JPEG,JPEG200のデータ総和がD_maxを超えていたら、JPEG2000タイルの下位ビットプレーンから、さらに１ビットプレーン削る。
【００６１】
一方で、D_sum_cがD_maxより大きければ、JPEG-LSタイルをJPEG2000に再符号化して、符号量制御を行う。この処理において、JPEGではなくJPEG2000に再符号化する理由は、JPEGデータの符号量制御における処理の煩雑さを避けるためである。なお、JPEG-LSの再符号化後の、符号量制御については、D_sum_cがD_maxより小さい場合の処理と同様であるので、説明を割愛する。
【００６２】
次に、復号処理におけるデブロッキングフィルタのかけ方に説明を進める。
【００６３】
第１の実施形態では、可逆タイルと非可逆タイルが隣接する境界に対してデブロッキングフィルタを行う方法を示した。その方法の狙いは、写真領域以外が可逆タイルと非可逆タイルに分断されてしまうことによる、注目の写真領域以外で生じる画質差の緩和であった。本実施形態では、その狙いを拡張させる。具体的には、非可逆タイルの内部に写真領域以外が存在するかどうかに関わらず、異なる符号化方式のタイルが隣接した場合、発生する歪みが異なるため、２つのタイル間には画質差が生じていると考える。その上で、デブロッキングフィルタをかける。つまり、JPEGタイルとJPEG2000タイルが隣接する場合、それら２つが図１８(a)のように写真領域以外を分断する場合もあれば、図１８(b),(c),(d)のように、そうでない場合もある。本第３の実施形態では、いずれの場合でも、JPEGタイルとJPEG2000タイルが隣接する境界に対しては、デブロッキングフィルタをかける。以降では、そのようなデブロッキングフィルタのかけ方について説明する。なお、第１実施形態と本実施形態を比べて、異なる処理は図９におけるステップ910,915の画像処理である。そこで、以下の説明では、該当処理に注力する。
【００６４】
図１９において、ステップ1901で注目タイルはJPEG2000タイルかどうかを判定する。もしJPEG2000タイルであれば、ステップS1902で注目JPEG2000タイルと隣接タイルのフィルタリングを行う。この処理については、後程詳述する。ステップS1902で注目タイルはJPEG2000タイルでない場合、ステップS1903で注目タイルはJPEGタイルかどうかを判定する。もし、JPEGタイルでない場合、ステップS910,915の画像処理を終える。一方で、注目タイルはJPEGタイルである場合、ステップS1904で注目JPEGタイルと隣接タイルのフィルタリングを行う。この処理については、後程詳述する。ステップS1904の処理を終えると、ステップS910,915の画像処理を終える。
【００６５】
次に、図２０を用いて、ステップS1902の処理を説明する。ステップS2001で、注目タイルの右に隣接しているタイル（右隣接タイル）はJPEG-LSタイルかどうか判定する。もしJPEG-LSタイルであれば、ステップS2002で第１の実施形態で示したデブロッキングフィルタ処理を行う。以降、このデブロッキングフィルタ処理をフィルタ処理Ａという。この処理を終えると、処理をステップS2006に進める。
【００６６】
一方、ステップS2002で右隣接タイルがJPEG-LSタイルではないと判断した場合には、ステップS2003に進み、右隣のタイルがJPEGであるか否かを判定する。JPEGである場合、ステップS2004で、注目タイル（JPEG2000で符号化されたタイル）内の、JPEGタイルに接する側に位置する右端の画素について、フィルタリング処理Ｂを行なう。このフィルタリング処理で用いるフィルタは、p0’=(1/3)*p1+(1/3)*p0+(1/3)*q0である。この式において、注目境界画素の係数が隣接画素の係数と同じにしている理由は、注目タイルはJPEG2000タイルで、注目境界画素の信頼度が低いからである。さらに、ステップS2005において、右隣接タイルは非可逆タイルであるので、右隣接タイル内の左端に位置する境界画素にもデブロッキングフィルタＣをかける。フィルタは、q0’=(1/6)*p0+(3/6)*q0+(2/6)*q1である。ここで、画素p0,q0,q1の説明は図２１に示したとおりである。フィルタ処理Ｃにおいて、境界画素に隣接する隣接画素p0,q1で係数に差をつけている理由は、p0の信頼度が低いからである。ステップS2005を終えると、処理をステップS2006に進める。
【００６７】
ステップS2006においては、上方向の隣接タイル(上隣接タイル)はJPEG-LSタイルであるか判定する。もし、JPEG-LSタイルでなければ、処理をステップS2008へ進める。一方で、JPEG-LSタイルであれば、第２の実施形態におけるフィルタＢを行い、処理をステップS2008へ進める。なお、このフィルタについては、以降フィルタＤと呼ぶ。ステップS2008では、左方向の隣接タイル(左隣接タイル)はJPEG-LSタイルであるか判定する。もし、JPEG-LSタイルでなければ、処理をステップS2010へ進める。一方で、JPEG-LSタイルであれば、フィルタＤを行う。ステップS2010では、下方向の隣接タイル(下隣接タイル)はJPEG-LSタイルであるか判定する。もし、JPEG-LSタイルでなければ、処理をステップS2012へ進める。一方で、JPEG-LSタイルであれば、ステップS2011でフィルタＡを行う。ステップS2012では、下隣接タイルはJPEGタイルであるか判定する。もし、JPEGタイルでなければ処理を終える。一方で、JPEGタイルであれば、ステップS2013で注目タイルの境界画素にフィルタＢをかけ、ステップS2014で下隣接タイルの境界画素にフィルタＣをかける。そして、処理を終える。
【００６８】
次に、図２２を用いて、ステップS1904の処理を説明する。ステップS2201で、注目タイルの右に隣接しているタイル（右隣接タイル）はJPEG-LSタイルかどうか判定する。もしJPEG-LSタイルであれば、ステップS2202で注目タイルの境界画素に、フィルタリングを行う。このフィルタリングは、p0’=(1/6)*p1+(3/6)*p0+(2/6)*q0である。この式において、境界画素に隣接する隣接画素p1,q0で係数に差をつけている理由は、q0は可逆タイルの画素だからである。なお、このデブロッキングフィルタをフィルタＥと呼ぶ。フィルタＥを行った後、処理をステップS2206に進める。一方、ステップS2201で右隣接タイルがJPEG-LSではないと判断した場合、ステップS2203にて、右隣のタイルはJPEG2000タイルかどうかを判断する。JPEG2000タイルであると判断した場合、ステップS2204で注目タイルの右端の画素に、フィルタリングを行う。このフィルタリングは、p0’=(1/5)*p1+(3/5)*p0+(2/5)*q0であり、フィルタＦと呼ぶ。さらに、ステップS2205において、右隣接タイルは非可逆タイルであるので、右隣接タイル内の左端画素にもデブロッキングフィルタをかける。フィルタの式はq0’=(1/5)*p0+(3/5)*q0+(2/5)*q1であり、フィルタＧと呼ぶ。なお、フィルタＦとフィルタＧは、フィルタリングに使う画素は異なるが、係数は同じである。ステップS2205を終えると、処理をステップS2206に進める。
【００６９】
ステップS2206においては、上方向の隣接タイル(上隣接タイル)はJPEG-LSタイルであるか判定する。もし、JPEG-LSタイルでなければ、処理をステップS2208へ進める。一方で、JPEG-LSタイルであれば、フィルタＥを行い、処理をステップS2208へ進める。ステップS2208では、左方向の隣接タイル(左隣接タイル)はJPEG-LSタイルであるか判定する。もし、JPEG-LSタイルでなければ、処理をステップS2210へ進める。一方で、JPEG-LSタイルであれば、ステップS2209でフィルタＥを行う。ステップS2210では、下方向の隣接タイル(下隣接タイル)はJPEG-LSタイルであるか判定する。もし、JPEG-LSタイルでなければ、処理をステップS2212へ進める。一方で、JPEG-LSタイルであれば、ステップS2211でフィルタＥを行う。ステップS2212では、下隣接タイルはJPEGタイルであるか判定する。もし、JPEGタイルでなければ処理を終える。一方で、JPEGタイルであれば、ステップS2213で注目タイルの境界画素にフィルタＦをかけ、ステップS2214で下隣接タイルの境界画素にフィルタGをかける。そして、処理を終える。
【００７０】
（その他の実施例）
上記実施形態では、サーバとクライアントが通信を行なう例を説明したが、１つの装置にて符号化と復号の両方を処理する場合であっても構わないので、上記実施形態によって本発明が限定されるものではない。
【００７１】
また以上の実施形態では、符号化方式として、JPEG2000,JPEG-LS,JPEGを用いる方法を説明したが、これに限られることはない。また、符号化方式の組み合わせについて、２つの場合と３つの場合を示したが、これに限られることはない。
【００７２】
デブロッキングフィルタのタップ数を３つとして説明したが、これに限られることはない。また、フィルタの係数は適宜実装形態に合わせて変更しても構わない。例えば、タイルに適用する量子化やビットプレーン削除などの、圧縮条件に合わせて変更することも本発明の範疇となる。
【００７３】
信頼度が低い画素はタイル境界画素として説明したが、タイル境界以外の画素、例えばタイル境界の近傍で信頼度が低下する場合、その画素に対する重みづけを小さくするフィルタリング方法も本発明の範疇である。
【００７４】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2014165868.tif 000003
【図２】
2014165868.tif 000004
【図３】
2014165868.tif 000005
【図４】
2014165868.tif 000006
【図５】
2014165868.tif 000007
【図６】
2014165868.tif 000008
【図７】
2014165868.tif 000009
【図８】
2014165868.tif 000010
【図９】
2014165868.tif 000011
【図１０】
2014165868.tif 000012
【図１１】
2014165868.tif 000013
【図１２】
2014165868.tif 000014
【図１３】
2014165868.tif 000015
【図１４】
2014165868.tif 000016
【図１５】
2014165868.tif 000017
【図１６】
2014165868.tif 000018
【図１７】
2014165868.tif 000019
【図１８】
2014165868.tif 000020
【図１９】
2014165868.tif 000021
【図２０】
2014165868.tif 000022
【図２１】
2014165868.tif 000023
【図２２】
2014165868.tif 000024
【図２３】
2014165868.tif 000025