説明

画像処理装置及びその制御方法

【課題】 所定画素数で構成される画素ブロックを符号化単位とする符号化データを、画質劣化を抑制しつつ、更に高い圧縮率で再符号化する。
【解決手段】 符号化画像データ入力部101が8×8画素のブロックを符号化単位とするJPEG符号化データを入力すると、冗長性推定部102はその符号化データのまま符号化を行い、それによって得られた符号化データ量を、JPEG2000に従って符号化する再圧縮部104の目標符号量として設定する。入力した符号化データは伸長部103で伸長され、再圧縮部104は、先に決定した目標符号量の符号化データを生成する。この符号量調整は、最下位から上位に向かうビットプレーンの符号化データを削除することで行われる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は画像データの符号化技術に関するものである。
【背景技術】
【0002】
画像の伝送においては画像のデータ量を柔軟に変更できる、画像圧縮のレート制御機能が注目されている。これは画像圧縮されたデータ(画像符号化データ)を、復号することなく符号量を変更できる機能であり、画像符号化データを伝送するネットワークの帯域幅に応じたデータ量の変更が容易となる。この機能を持った画像圧縮としてJPEG2000等がある。
【0003】
JPEG符号化データなどにはレート制御の機能がないため、これをいったん復号して、JPEG2000等のレート制御機能を持つ符号化データへ変換し、再符号化が有効になる場合もある。例えば符号量を設定して再符号化する技術として、特許文献1等がある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2007−166492号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
たとえば8×8画素単位で符号化を行うJPEG符号化と、それより広い範囲を単位として符号化を行うJPEG2000符号化とでは、JPEG2000の方が、より広い範囲で画像情報の冗長性を除去できる、もしくは除去できる可能性が高い。
【0006】
本発明は上記点に鑑みてなされたものであり、所定画素数で構成される画素ブロックを符号化単位とする符号化データを、画質劣化を抑制しつつ、更に高い圧縮率で再符号化する技術を提供しようとするものである。
【課題を解決するための手段】
【0007】
この課題を解決するため、例えば本発明の画像処理装置は以下の構成を備える。すなわち、
所定数の画素で構成される画素ブロックを単位とする第1の符号化アルゴリズムに従って符号化された符号化データを、再符号化する画像処理装置であって、
再符号化対象の符号化データを入力する入力手段と、
前記画素ブロックよりも大きいサイズのブロックを単位に符号化する、第2の符号化アルゴリズムに基づく第2の符号化手段と、
前記入力手段により入力した符号化データを、当該符号化データのまま、第3の符号化アルゴリズムに従って符号化することで得られた符号量から、前記第2の符号化手段に対する目標符号量を算出する目標符号量算出手段と、
前記入力手段で入力した符号化データを復号し、前記第2の符号化手段を制御して、前記目標符号量の符号化データを生成させる制御手段とを備える。
【発明の効果】
【0008】
本発明によれば、所定画素数で構成される画素ブロックを符号化単位とする符号化データを、画質劣化を抑制しつつ、更に高い圧縮率で再符号化することが可能となる。
【図面の簡単な説明】
【0009】
【図1】第1の実施形態における画像処理部のブロック構成図
【図2】第1の実施形態における冗長性推定部102のブロック構成図
【図3】JPEG符号化データ中に発生する冗長性に関する説明図
【図4】JPEG2000の符号化方式のブロック構成図
【図5】離散ウェーブレット変換の説明図
【図6】離散ウェーブレット変換の説明図
【図7】コードブロック分割の説明図
【図8】離散ウェーブレット変換の説明図
【図9】離散ウェーブレット変換における必要となる画素数の説明図
【図10】辞書型符号化方式の説明図
【図11】辞書型符号化が対象とする処理対象データ列と辞書メモリの例を示した図
【図12】辞書型符号化方式の処理の流れを示した図
【図13】辞書型符号化データで発生する冗長性の説明図
【図14】第1の実施の形態における辞書型符号化方式のフローチャート
【図15】第1の実施の形態における辞書型符号化方式の処理過程の説明図
【図16】第2の実施形態における画像処理部のブロック構成図
【図17】第2の実施形態における冗長性推定部1601のブロック構成図
【図18】第2の実施形態における冗長性推定部1601のフローチャート
【図19】第2の実施形態における連続周期情報の説明図
【図20】その他の実施例における伸長画像から冗長性を測定する方法の説明図
【図21】再圧縮時に発生する問題の説明図
【図22】PSNR算出において用いる画像の説明図
【図23】JPEG符号化データを辞書型符号化方式で圧縮したときの符号量の説明図
【発明を実施するための形態】
【0010】
本実施形態においては、再圧縮する際の問題と解決方法に関する。そして、再符号化対象をJPEGによる画像符号化データ(JPEG符号化データ)とし、それをJPEG2000に従って再圧縮する処理の例を説明する。
【0011】
図21は、入力画像に対して、量子化パラメータを設定してJPEG符号化した結果(1点)と、JPEG符号化データの復号画像に対して、JPEG2000の圧縮率に係るパラメータをいくつか設定して再圧縮した結果をトレースしたグラフである。なお、図22に再圧縮の処理の概略を示しているが、JPEG2000のPSNRの測定では、JPEG伸長画像ではなく原画像から見た画質に注目すべきであり、JPEG圧縮の対象となった原画像を用いている。図21に示すように、X(bpp)以上では、符号量を増やしても画質は向上しない。これは符号化対象がJPEGの伸長画像であり、その画像以上の画質を得ることはできないからである。換言すれば、ビットレートXでJPEG2000に従って符号化すれば、画質劣化が発生しないまま、より高い圧縮率で符号化できることを意味する。しかし、このビットレートX(bpp)を正確に知ることはできない。なぜなら、入力機器から得られた画像、パソコン等の編集ソフト等で生成された画像は圧縮されるが、原画像は残されているのは希だからである。例えば、デジタルカメラでは、撮影された画像はJPEGで圧縮されて保存されることは多いが、原画像に相当する画像については、必ず保存されるわけではない。このため、伸長画像の画質を保持できる最低の符号量を知ることができないケースが多い。
【0012】
本実施形態においては、図23で示したとおり、辞書型符号化方式でJPEG符号化データを可逆圧縮する。そして、その結果、得られた符号量を、再圧縮時の目標符号量(目標ビットレートX)の目安とするものである。
【0013】
まずJPEG2000を用いることで、画質を落とさずにJPEG符号化より符号量を減らせる理由について説明する。そして、その後、JPEG符号化データに対して辞書型の符号化方式を適用し、生成された符号量は再圧縮時の目標符号量に設定することが妥当であるかを説明する。その上で、本実施形態の説明に入ることとする。
【0014】
JPEG符号化方式(ISO/IEC IS 10918−1)は、その勧告書にも記されているが、入力された画像を8×8画素サイズのブロックに分割して、各ブロック単位にほぼ独立に符号化する。そのため、図3(a)で示したような輝度(或いは濃度)が平坦な領域の画像、或いは、8×8周期の網点領域を持つ画像を入力すると、各ブロックから同一の符号列が生成される。結果として、画像符号化データの中に、同一符号列の繰り返しによる冗長性が発生する。図3(b),(c)はそれぞれ、図3(a)の平坦領域と網点領域のような特性を持つ画像を入力したときの、該当領域の画像符号化データである。一方でJPEG2000は、8×8画素ブロックを単位とした周期が画像中にある場合、ある所定の条件で符号化すると、周期性による冗長性を効率的に除去することができる。そのため、JPEGに比べて冗長性の発生を抑制できる。その符号化の条件と理由について、JPEG2000のアルゴリズム概要を基に説明する。
【0015】
図4は一般的なJPEG2000符号化装置のブロック図である。同図において、401は入力部、402は離散ウェーブレット変換部、403は量子化部、404はエントロピー符号化部、405は符号列形成部、406は出力部である。入力部401から画像データは、離散ウェーブレット変換部402へ供給される。離散ウェーブレット変換部402は、図5に示すように、複数の画素を用いて離散ウェーブレット変換を行う。ここで、離散ウェーブレット変換後のフレームデータ(離散ウェーブレット変換係数)は次式に従い算出される。
Y(2n) = X(2n)+floor{ (Y(2n-1)+Y(2n+1)+2)/4 }
Y(2n+1) = X(2n+1)-floor{ (X(2n)+X(2n+2))/2 } …(1)
ここで、Y(2n),Y(2n+1)は離散ウェーブレット変換係数列であり、Y(2n)は低周波サブバンド、Y(2n+1)は高周波サブバンドである。また、上記変換式(1)においてfloor{X}はXを超えない最大の整数値を表す。この離散ウェーブレット変換を模式的に表わしたのが図5である。
【0016】
上記変換式(1)は一次元のデータに対するものであるが、この変換を水平方向、垂直方向の順に適用して二次元の変換を行うことにより、図6(a)に示す様なLL,HL,LH,HHの4つのサブバンドを得ることができる。ここで、Lは低周波サブバンド、Hは高周波サブバンドを示している。次にLLサブバンドに対して、同じ様にウェーブレット変換を行い、4つのサブバンドを生成し(図6(b))、その中のLLサブバンドを更に4つのサブバンドに分ける(図6(c))。このようにして合計10のサブバンドを作る。10個のサブバンドそれぞれを、図6(c)の様にHH1,HL1,…と呼ぶ。ここで、各サブバンドの名称における数字は、それぞれのサブバンドのレベルを示す。つまり、レベル1のサブバンドは、HL1,HH1,LH1である。また、レベル2のサブバンドは、HL2,HH2,LH2である。レベル3のサブバンドは、HL3,HH3,LH3である。なおLLサブバンドは、レベル0のサブバンドである。また、LLサブバンドは一つしかないので一般には添字を付けない。またレベル0からレベルnまでのサブバンドを復号することで得られる復号画像を、レベルnの復号画像と呼ぶ。復号画像は、そのレベルが高い程解像度は高い。10個のサブバンドの変換係数は、一旦バッファ304に格納され、LL,HL1,LH1,HH1,HL2,LH2,HH2,HL3,LH3,HH3の順に、つまり、レベルが低いサブバンドからレベルが高いサブバンドの順に、係数量子化部403へ出力される。なお、上記の例では、分割回数(ウェーブレット変換の適用回数)が「3」の場合であるが、この回数に制限はない。
【0017】
係数量子化部403では、各サブバンドの変換係数を各周波数成分毎に定めた量子化ステップで量子化し、量子化後の値(係数量子化値)をエントロピー符号化部404へ出力する。量子化方法の詳細については、本発明の本質ではないので説明を割愛する。量子化された係数(係数量子化値)はエントロピー符号化部404へ出力される。
【0018】
エントロピー符号化部404は、入力された係数量子化値をエントロピー符号化する。ここでは、まず、図7に示すように、入力された係数量子化値の集まりである各サブバンドが矩形(「コードブロック」と呼ぶ。)に分割される。本実施の形態においては、コードブロックサイズを16×16とする。次いで、コードブロック内の係数をビットプレーンに分割し、上位ビットプレーンから順に2値算術符号化を行い、エントロピー符号化データを生成する。以上が、JPEG2000における符号化のアルゴリズムである。
【0019】
続いて先述、8×8画素ブロック(JPEGの符号化単位)の周期を有する画像における、当該冗長性の除去に関する説明に移る。
【0020】
図5と(1)式は離散ウェーブレット変換の説明であるが、離散ウェーブレット変換の特徴として、1次元方向で1回変換を行うと、低周波成分及び高周波成分それぞれの係数の個数は、入力画像の画素数の半分になる。2回変換を行うと、そこで得られる低周波成分及び高周波成分の係数の個数は入力画像の画素数の1/4となる。3回変換を行うと、1/8になる。つまり、離散ウェーブレット変換を3回行うと、入力画像中の8画素につき、低周波成分,高周波成分それぞれについて1個の係数が生成されると言える。また、伸長画像には8画素から構成される周期が存在するため、各周期から1係数が生成される。さらに各係数は、同一の周期から生成されているため、同じ値になる。つまり、離散ウェーブレット変換を3回行なうと、低周波成分と高周波成分の各サブバンドには同じ値が連続し、サブバンド内は平坦な領域(平坦領域)となる。平坦領域に対して、2値算術符号化は非常に高効率な圧縮を行うことができる。これが、JPEG2000符号化では、8画素周期の画像に対して冗長性を削除する理由である。
【0021】
また先述のとおり本実施形態においては、2値算術符号化は16×16サイズのコードブロックを単位に実行する。式(1)と図8から、離散ウェーブレット変換の変換数(n)と、n回目の変換で得られた高周波成分と低周波成分の生成に必要となる画素数の関係は、図9のようになる。同図から、3回目の離散ウェーブレット変換で得られた低周波成分と高周波成分における16成分に必要な画素数は、149画素、141画素である。つまり、16×16サイズのコードブロックを単位として2値算術符号化を行った場合、高周波成分については141×141画素、低周波成分については149×149画素を単位として符号化したこととおおよそ同等となる。JPEGでは8×8画素を単位として符号化を行うことに比べて、より広い領域で冗長性を除去することができる。
【0022】
ここまでの議論をまとめると、入力画像に8×8画素の周期がある場合、JPEGに比べてJPEG2000は効率的に冗長性を除去することができる。その理由は2つあり1つ目は、JPEG2000では画像中の8×8画素の周期の画像は、平坦領域として表現される。その上で、効率的なエントロピー符号化方式で圧縮する。2つ目は、JPEGに比べて広い領域を単位として符号化する点である。
【0023】
続いて、辞書型符号化のアルゴリズムの概念について説明する。そして、その上で、JPEG符号化データに対して辞書型の符号化方式を適用し、生成された符号量を再圧縮時の目標符号量に設定することの妥当性について説明する。
【0024】
画像,音声,文書などの何らかの意味あるデジタルデータは、データ値が無秩序に並んでいることはなく、よく似たパターンの並び方が頻繁に現れる。すなわち、データ値の並び方(データパターン)を見つけて、データ値の並びより短いコードを与えて出力することで、元よりも少ないデータ量で情報を表現することができる。このデータパターンと、それに対応するコード値を管理している情報を、一般に「辞書」と呼び、辞書を構築しつつ、その辞書を参照して行う符号化方法を辞書型符号化と言う。以下では、辞書型符号化アルゴリズムの一例の処理概略について説明する。
【0025】
図10は処理フローを示したフローチャートである。また、図11(a)は符号化対象のデータの例を、図11(b)は辞書メモリの例を示している。図10において、符号化の処理が開始すると初期化を行う(ステップS1001)。初期化とは、処理対象データの入力、メモリ内に辞書メモリの確保、最大一致長の設定である。ここの説明では、処理対象データとして図11(a)を、辞書メモリについては同図(b)のように4バイトを想定する。ここで4バイトとしたのは説明の都合であり、実装形態に応じて適宜変更することは可能である。最大一致長とは、符号化処理において許される、同一データパターンの長さ(一致長)の最大値であり、本辞書型符号化方式では固定長で一致長を表すため必要となる。次に、一致するデータパターンを辞書メモリ中から検索する(ステップS1002)。このとき、一致する長さ(一致長)が上限値に達した場合には、その時点で検索を打ち切る。また、一致するデータパターンが複数あるときには、それらをすべて求める。もし一致するデータパターンがなかった場合には(ステップS1003でNo)、一致パターンの有無を示す情報(フラグ)として“0”を出力し(ステップS1004)、1文字をハフマン符号化した上で出力する(ステップS1005)。その上で、処理をステップS1008へ進める。一方で一致するデータパターンが見つかった場合には(ステップS1003でYes)、フラグとして“1”を出力する(ステップS1006)。そして、検索した中から最も一致長が長いデータパターンの辞書中の位置と長さ(ポイント情報)を求めて出力する(ステップS1007)。次に、処理を行ったデータ列を辞書の末尾に追加する(ステップS1008)。もし、これにより辞書のデータ長を超えてしまう場合、先頭部分を削除して、辞書メモリに収まるようにする。そして、処理すべきデータが残っているかどうかを判断して(ステップS1009)、もしデータが残っていなければ(ステップS1009でNo)、処理を終える。一方で、データが残っていれば(ステップS1009でYes)、処理をステップS1002へ戻す。参考までに、具体的なデータを使った説明を図12にまとめた。
【0026】
説明のとおり、辞書型符号化方式はデータパターンの繰り返しによる冗長性を除去する。このため、JPEG符号化データに適用すると、図3(b),(c)のような、画像中の冗長性に起因するJPEG符号化データ内の冗長性を削除することができることが理解できよう。しかし、JPEG符号化データに辞書型符号化を適用して得られた符号量を再圧縮時の目標符号量として用いるには、考慮すべきことが1つある。それは、JPEG2000ではある所定の範囲で画像中の冗長性を除去するが、辞書型符号化はその範囲以上の空間的冗長性を除去してしまう点である。具体的には、先ほどのJPEG2000の説明では、低周波成分については149画素単位で冗長性を削除できると述べたが、辞書型符号化ではそれ以上の冗長性が存在すれば削除する。つまり、辞書型符号化で得られた符号量を目安に再圧縮すると、冗長性以外の、画質に影響を与える本質的な情報を量子化により削除してしまうことになる。この問題に対しては、JPEG2000により冗長性を削除可能な範囲を符号化し、符号化後に辞書メモリをリセットすることで対応可能である。しかし、JPEGでは8×8画素ブロックは可変長で符号化されるため、JPEG符号化データの中の繰り返しの1周期に含まれる8×8画素ブロック数を知ることはできない。一例として、1周期に8×8画素ブロックが1つ存在する場合と、1周期に8×8画素ブロックが8つ存在する場合を示している。このため、149画素に相当する周期数を導くこともできない。ただ必要以上に冗長性を除去することは避ける必要があり、本実施形態では1周期に含まれる8×8画素ブロック数を4個と仮定する。つまり1周期に含まれる画素数を32個とし、149画素を超えない最大の周期数は4であり、辞書型符号化の過程で連続する同一周期を4つ検知したら、辞書メモリをリセットする。
【0027】
なお、JPEG符号化データ中にはラスタースキャン順で8×8画素ブロックの符号化データが並んでおり、辞書型符号化はJPEG符号化データを先頭から後尾に向かって順に符号化する。このため2次元方向で冗長性を削除できず、JPEG2000と比べて削除できる冗長性は少なくならざるを得ない。これに関し、本発明の目的はあくまで再圧縮時の目標符号量の「目安」を求めることであり、冗長性を削除する範囲の次元数の差は目的を達成する上で大きな問題にはならないと考える。
【0028】
[第1の実施形態]
以下、上記の説明に基づく、本発明に係る実施形態を詳細に説明する。
【0029】
図1は本実施形態における画像処理装置のブロック図を示している。同図において、101は符号化画像データ入力部、102は目標符号量算出手段として機能する冗長性推定部、103は伸長部、104は再圧縮部、105は出力部である。同図において、符号化画像データ入力部101はJPEG符号化データを入力し、それを冗長性推定部102へ出力する。冗長性推定部102では、前述のとおり、冗長性削除可能最大画素数を149画素と仮定する。またJPEG符号化データにおける符号列の繰り返しの1周期に含まれるブロック数を4と仮定する。つまり、floor(149/(8*4))=4つの繰り返しを検知したら、それ以上の冗長性を測定する必要はないので辞書メモリをリセットする。
【0030】
図14は冗長性推定部102の処理フローである。本処理フローは、先だって説明した図10をベースとしている。また図2は、冗長性推定部102のブロック図である。
【0031】
図2,図14において、画像符号化データ入力部201にJPEG符号化データが入力されると、制御部209は初期化処理を行う(ステップS1401)。初期化とは、処理対象データの入力、辞書メモリの確保、最大一致長の設定、さらにデータパターンの繰り返しをカウントするカウンタ204の初期化である。カウンタ204の初期化については、1を設定する(count=1)。本実施の形態においては、辞書メモリとして1024バイトを、最大一致長としては256個を想定する。次に、同一文字列検知部203において、一致するデータパターンを辞書メモリ中から検索する(ステップS1402)。このとき、一致する長さ(一致長)が上限値(256)に達した場合には、その時点で検索を打ち切る。また、一致するデータパターンが複数あるときには、それらをすべて求める。もし一致するデータパターンがなかった場合には(ステップS1403でNo)、一致パターンの有無を示す情報(フラグ)として“0”を出力する(ステップS1404)。さらに、ハフマン符号化部208で1文字をハフマン符号化した上で出力する(ステップS1405)。そして処理をステップS1411へ進める。なお出力先はバッファ206であり、以降生成された符号はすべて同バッファへ出力されるものとする。一方で一致するデータパターンが見つかった場合には(ステップS1403でYes)、フラグとして“1”を出力する(ステップS1406)。そしてその上で、検索した中から最も一致長が長いデータパターンの辞書中の位置と長さ(ポイント情報)を求めて出力する(ステップS1407)。次に、ポイント情報を出力したデータパターンが連続して繰り返しているかどうか判断し(ステップS1408)、もし繰り返していない場合には(ステップS1408でNo)、カウンタ204の値を1へリセットする(ステップS1415)。次いで処理を行ったデータ列を辞書メモリ202の末尾に追加する(ステップS1411)。そして、処理をステップS1414へ進める。一方ステップS1408で繰り返している場合、カウンタをインクリメントする。繰り返している場合の具体的な例は、図15のとおりである。次いで、カウンタが4と等しいかどうか判断する(ステップS1410)。等しくない場合には(ステップS1410でNo)、処理をステップS1414へ進める。もし等しい場合には(ステップS1410でYes)、後段のJPEG2000による再圧縮で、これ以上の繰り返しの冗長性を削除することはできないと判断する。その上で、注目する周期の冗長性を削除しないように辞書データをリセットする(ステップS1412)。具体的には、辞書データ中の追記位置を示すポインタを先頭に戻す。さらにカウンタをリセットし(ステップS1413)、処理をステップS1414へ進める。ステップS1414では、JPEG符号化データ中の未処理のデータが残っているかどうかを判断し、残っている場合には(ステップS1414でYes)、処理をS1402へ戻す。そうでない場合には(ステップS1414でNo)、符号長算出部205はバッファ中に蓄積された辞書型符号化データの符号長を算出し(ステップS1416)、算出した符号長を再圧縮部104へ出力し、終了する。
【0032】
冗長性推定部102でJPEG符号化データに対して辞書型符号化処理を行い、その符号長を再圧縮部104へ出力したら、伸長部103へJPEG符号化データを出力する。伸長部103では、JPEG符号化データの伸長処理(復号処理)を行う。詳細については公知であり説明を割愛する。伸長処理で得られた伸長画像は、再圧縮部104へ出力される。再圧縮部104では、符号長算出部205から入力された辞書型符号化の符号長を基に目標符号量を設定し、JPEG2000で圧縮する。ここで、符号長算出部205から入力された辞書型符号化の符号長をLD、目標符号量をLTとしたとき、所定の関数F()に従って、LT=F(LD)として求めるものとする。もっとも単純なものは、LT=α×LDとするものであり、α=1とするものであろう。また、辞書型符号化が2次元方向の冗長性を除去していないことに注目し、2次元方向での冗長性を除去できたときの符号長を想定してαを1未満の値、例えば、「0.9」等とすることである(目標符号量LTを、辞書型符号化による符号量LDより小さくすることである)。JPEG2000の符号化方式の概略については説明済みであるので割愛する。なお、目標符号量の実現方法としては、係数の2値算術符号化の下位ビットを優先的に切り捨てていく方法がある。すなわち、再圧縮部104による符号化で得られた符号量をLとし、予め設定された許容閾値をThとしたき、
|LD−L|≦Th
を満たすまで、最下位から上位に向かう順番のビットプレーンの符号化データを削除してけばよい。
【0033】
以上が第1の実施形態の説明であるが、変形例として、再圧縮時における冗長性の削除に対する推定の精度を落として、辞書型符号化の処理の軽減を図る方法がある。具体的には、再圧縮時に冗長性を除去できる空間的な範囲を想定して、辞書データをリセットする作業を省く。例えば、辞書型符号化の概念を説明したときに用いた、図10の方法等である。このアプローチによるメリットとしては、処理の軽減だけではなく、ZIPやLZHなどで使える既存の辞書型ソフトにより実現できるため、新たに実装する作業負荷を減らせる点がある。他にも、本発明の手法を実装する画像処理装置に他の用途で搭載されていれば、そもそも当該ソフトを新たに組み込む作業を省くことができる。なおこの場合、画像の広い範囲を見ながら辞書型符号化方式を適用することになる。このため、再圧縮で用いる符号化方式より冗長性を削除してしまう。この点に注目して、辞書型符号化方式の符号量より多めに目標符号量を設定してもよい。例えば、前述αを1より大きく設定する方法などが考えられる。
【0034】
また別な変形例として、JPEG符号化データ中のヘッダ情報の冗長性については、伸長画像中の冗長性とは関連しないので、ヘッダには辞書型符号化を適用しない方法が考えられる。
【0035】
また、上記実施形態では、再符号化対象の画像データはJPEG符号化データとし、再圧縮部104をJPEG2000に基づく符号化処理を行うものとした。先に説明したように、画質劣化を抑制しつつJPEGよりも高いで符号化できる要因には、JPEGにおける符号化単位である8×8画素よりも広い範囲の画素群を符号化することであるから、JPEG2000に限らず、JPEG XRを採用してもよい。かかる点は、以下に説明する他の実施形態でも同様である。
【0036】
[第2の実施形態]
上記の第1の実施形態においては、辞書型符号化を用いて冗長性を推定する方法を用いた。本第2の実施形態においては、辞書型符号化を用いずに、画像符号化データ中の符号列の繰り返しの周期を検知して、周期の長さと繰り返し数を得る。その情報を基に、再圧縮対象画像の冗長性を推定する。具体的な処理の概要を図19(a),(b)を参照して説明する。同図は、予めテーブルとして記憶しているのであり、第1のフィールドの周期番号とは、連続する周期を検知した際、当該周期に対して割り振るシリアル番号である。第2フィールドの1周期の符号量は、検知した連続する周期(連続周期)に関し、1周期の符号量である。図13(a)のようなビットパターン(バイトパターン)の連続周期があった場合、その1周期の符号量は1(バイト)であり、図13(b)の場合には1周期の符号量が5(バイト)である。第3フィールドの繰り返し数は、注目連続周期の繰り返し数であり、値は2以上である。そして第4フィールドは冗長な符号量は除去可能な符号量であり、繰り返し数から1を引いた数を乗じた値と、1周期の符号量の乗算結果である。この手法では、第1の実施形態と比べて、符号化を行わない分、処理時間を短縮することができる。
【0037】
図16は本第2の実施形態におけるブロック図であり、第1の実施形態のブロック図である図1の冗長性推定部102を冗長性推定部1601へ置き換えてある。以下では冗長性推定部1601の説明に注力する。図17は冗長性推定部1601のブロック図であり、図18はその処理内容を示すフローチャートである。画像符号化データ入力部1701にJPEG符号化データが入力されると、制御部1709は初期化を行い(ステップS1801)、同一文字列検知部1703を制御して、一致するデータパターンを検索し(ステップS1802)、有無を判断する(ステップS1803)。ここまでの処理については、第1の実施形態における図10のステップS1001〜ステップS1003と同じである。もし一致するデータパターンがなかった場合には(ステップS1803でNo)、処理をステップS1806へ進める。一方で一致するデータパターンが見つかった場合には(ステップS1803でYes)、一致したデータパターンが連続して存在しているかを判断する(ステップS1804)。もし繰り返していない場合には(ステップS1804でNo)、カウンタ1704の値を1へリセットする(ステップS1805)。次いで処理を行ったデータ列を辞書メモリ1702の末尾に追加する(ステップS1806)。そして、処理をステップS1813へ進める。一方ステップS1804で繰り返している場合、カウンタをインクリメントする(ステップS1807)。その際、データパターンの中に周期が複数個存在している場合には、周期の個数分インクリメントする。このインクリメントについては、第1の実施形態と同様である。次いで、カウンタが4と等しいかどうか判断する(ステップS1808)。等しくない場合には(ステップS1808でNo)、処理をステップS1806へ進める。もし等しい場合には(ステップS1808でYes)、後段のJPEG2000による再圧縮で、これ以上の繰り返しの冗長性を削除することはできないと判断する。その上で、注目する周期の冗長性を削除しないように辞書データをリセットする(ステップS1809)。続いて、図19(a)に示したとおり、注目している周期に関して、連続周期情報算出部1708が冗長な符号量の算出を行う(ステップS1810)。なお当該算出結果は、連続周期情報算出部1708の内部メモリに記録される。さらにカウンタをリセットし(ステップS1811)、処理をステップS1813へ進める。ステップS1813では、JPEG符号化データ中の未処理のデータが残っているかどうかを判断し、残っている場合には(ステップS1813でYes)、処理をS1802へ戻す。そうでない場合には(ステップS1813でNo)、連続周期情報算出部1708の内部メモリに格納されている算出結果から、冗長符号長算出部1705が、推定される冗長性(冗長なデータ量)を算出する(ステップS1814)。具体的に、算出結果が図19(b)に示すようなテーブルを作成し、この結果から冗長性、又は目標符号量を算出する。算出が終わると、その結果をオリジナルの符号化データ量から減じた結果を目標符号量として再圧縮部104へ出力し、終了する。
【0038】
[その他の実施形態]
第1の実施形態と第2の実施形態では画像の一次元方向の冗長性しか見ていない。しかし、画像は2次元のデータであり、2次元で画像の冗長性を推定する方法を用いることで、より精度を高く目標符号量を推測することを期待できる。そして本発明では、2次元での冗長性を推定する方法も範疇としている。一例として、画像符号化データを伸長して、伸長画像から冗長性を測定する方法がある。具体的には、第1の実施形態と同様に、再圧縮の対象となる画像符号化データはJPEGであり、再圧縮の符号化方式はJPEG2000とする。また、JPEG2000の符号化単位であるコードブロックが削除できる冗長性の範囲を149×149画素とする。再圧縮すべきJPEGデータが決定したら伸長して、図20(a)のように、伸長画像を149×149画素の領域(冗長性削除単位領域)に分割する。なお後ほど各8×8画素ブロックの符号量を処理に用いるので、復号の過程で画像処理装置内のメモリへ書き出す。そして、図20(b)のように、冗長性削除単位領域毎に、8×8画素ブロックのパターンを解析し、同一パターンに対しては同一の番号を振り分類していく。次に、図20(c)のように、隣接する縦横斜め方向の同一番号の8×8画素ブロックをグループ化していきグループ番号を割り振る。ここで、縦横斜め方向のブロックを対象にグループ化している理由は、すでに説明したとおりJPEG2000では、離散ウェーブレット変換を3回かけた際に生成されるサブバンドにおいて、各8×8画素ブロックから得られる係数は1つである。そして、連続する8×8画素ブロックの冗長性を当該サブバンドにおいて効率的に削除することができ、各係数の符号化において縦横斜め方向を参照するからである。そして、各グループに関して、1つの8×8画素ブロックから得られたJPEG符号量と、グループ内の8x8画素ブロック数をまとめ、冗長と言える符号量(単一グループ内冗長符号量)を算出する。そして、各単一グループ内冗長符号量の総和を求めて、当該総和を注目する冗長性削除単位領域の冗長性とする。さらに伸長画像中のすべての冗長性削除単位領域の冗長性の和を、伸長画像の冗長性とし、JPEG符号化データ量から差し引く。そこで得られた符号量を、再圧縮時の目標符号量とする。
【0039】
第1乃至第2の実施形態において、所定数の画素で構成される画素ブロックを単位とする第1の符号化アルゴリズムをJPEGとした。また、その画素ブロックよりも大きいサイズのブロックを単位に符号化する、第2の符号化アルゴリズムをJPEG2000とした。そして、符号化データの冗長正を判断する第3の符号化アルゴリズムとして辞書型符号化を例にした。しかし、この符号化アルゴリズムの組みあせは、限定されるものではない。例えば、第2の符号化アルゴリズムとしては、再圧縮の対象となる画像符号化データの符号化方式と比べて、画像の冗長性を削除できる符号化方式で再圧縮する方法であれば、本発明の範疇となる。例えば、国際標準規格のJPEG XRであっても構わない。JPEG XRに関して詳細な説明を割愛するが、入力画像を16×16画素からなるマクロブロックに分割して符号化を行う。つまり画像の冗長性を16×16画素の範囲で削除する。したがって、JPEG XRの符号化データを再圧縮する際には、JPEG2000でコードブロックサイズを16×16より大きいサイズに設定することで目的を達成することができ、本発明の範疇となる。さらには、JPEGのデータをJPEG XRで再符号化することも本発明の範疇となる。
【0040】
本発明では、画像符号化データの再圧縮の方式について説明しているが、当該再圧縮の方式を含む画像処理システムも本発明の範疇となる。例えば、ユーザーの手元にXPS(XML Paper Specification)のデータがあり、それをMFP等へダイレクトプリントする際、MFPがPDF(Portable Document Format)ダイレクトプリントにしか対応していない場合、PDFへの変換が必要となる。XPSではJPEG XRに対応しているが、PDFでは対応していないため、フォーマット変換する際には、PDFが対応する画像圧縮で再圧縮する処理が発生する。PDFではJPEG2000に対応しているため、この再圧縮処理としてJPEG2000を用いることができ、本発明で開示する手法を適用することが可能である。このような実施形態も本発明の範疇となる。
【0041】
更に、上記の各実施形態では、辞書型符号化を用いて冗長性を判断する例を示したが、本発明はこれに限らず、再符号化の対象となる符号化データの冗長性を判断できれば辞書型符号化以外の公知の符号化技術を利用しても良い。
【0042】
(その他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。

【特許請求の範囲】
【請求項1】
所定数の画素で構成される画素ブロックを単位とする第1の符号化アルゴリズムに従って符号化された符号化データを、再符号化する画像処理装置であって、
再符号化対象の符号化データを入力する入力手段と、
前記画素ブロックよりも大きいサイズのブロックを単位に符号化する、第2の符号化アルゴリズムに基づく第2の符号化手段と、
前記入力手段により入力した符号化データを、当該符号化データのまま、第3の符号化アルゴリズムに従って符号化することで得られた符号量から、前記第2の符号化手段に対する目標符号量を算出する目標符号量算出手段と、
前記入力手段で入力した符号化データを復号し、前記第2の符号化手段を制御して、前記目標符号量の符号化データを生成させる制御手段と
を備えることを特徴とする画像処理装置。
【請求項2】
所定数の画素で構成される画素ブロックを単位とする第1の符号化アルゴリズムに従って符号化された符号化データを、再符号化する画像処理装置であって、
再符号化対象の符号化データを入力する入力手段と、
前記画素ブロックよりも大きいサイズのブロックを単位に符号化する、第2の符号化アルゴリズムに基づく第2の符号化手段と、
前記入力手段により入力した符号化データを解析し、繰り返される1周期のビットパターンのサイズと前記ビットパターンの繰り返し回数から、前記第2の符号化手段に対する目標符号量を算出する目標符号量算出手段と、
前記入力手段で入力した符号化データを復号し、前記第2の符号化手段を制御して、前記目標符号量の符号化データを生成させる制御手段と
を備えることを特徴とする画像処理装置。
【請求項3】
前記第1の符号化アルゴリズムはJPEG、第2の符号化アルゴリズムはJPEG2000又はJPEG XRであることを特徴とする請求項1又は2に記載の画像処理装置。
【請求項4】
前記制御手段は、前記目標符号量をLD、前記第2の符号化手段による符号量をL、予め設定した閾値をThとしたとき、
|LD−L|≦Th
を満たすまで、最下位から上位に向かう順番のビットプレーンの符号化データを削除することを特徴とする請求項3に記載の画像処理装置。
【請求項5】
コンピュータに読み込み実行させることで、前記コンピュータを、請求項1乃至4のいずれか1項に記載の画像処理装置として機能させるためのプログラム。
【請求項6】
請求項5に記載のプログラムを格納したことを特徴とするコンピュータが読み込み可能な記憶媒体。
【請求項7】
所定数の画素で構成される画素ブロックを単位とする第1の符号化アルゴリズムに従って符号化された符号化データを、再符号化する画像処理装置の制御方法であって、
入力手段が、再符号化対象の符号化データを入力する入力工程と、
第2の符号化手段が、前記画素ブロックよりも大きいサイズのブロックを単位に符号化する、第2の符号化アルゴリズムに基づく第2の符号化工程と、
目標符号量算出手段が、前記入力工程により入力した符号化データを、当該符号化データのまま、第3の符号化アルゴリズムに従って符号化することで得られた符号量から、前記第2の符号化工程に対する目標符号量を算出する目標符号量算出工程と、
制御手段が、前記入力工程で入力した符号化データを復号し、前記第2の符号化工程を制御して、前記目標符号量の符号化データを生成させる制御工程と
を有することを特徴とする画像処理装置の制御方法。
【請求項8】
所定数の画素で構成される画素ブロックを単位とする第1の符号化アルゴリズムに従って符号化された符号化データを、再符号化する画像処理装置の制御方法であって、
入力手段が、再符号化対象の符号化データを入力する入力工程と、
第2の符号化手段が、前記画素ブロックよりも大きいサイズのブロックを単位に符号化する、第2の符号化アルゴリズムに基づく第2の符号化工程と、
目標符号量算出手段が、前記入力工程により入力した符号化データを解析し、繰り返される1周期のビットパターンのサイズと前記ビットパターンの繰り返し回数から、前記第2の符号化工程に対する目標符号量を算出する目標符号量算出工程と、
制御手段が、前記入力工程で入力した符号化データを復号し、前記第2の符号化工程を制御して、前記目標符号量の符号化データを生成させる制御工程と
を有することを特徴とする画像処理装置の制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate


【公開番号】特開2012−178735(P2012−178735A)
【公開日】平成24年9月13日(2012.9.13)
【国際特許分類】
【出願番号】特願2011−40838(P2011−40838)
【出願日】平成23年2月25日(2011.2.25)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】