説明

画像符号化装置及びその制御方法

【課題】 ブロックを単位とする可逆符号化データ、非可逆符号化データが混在しつつも、目標符号レートの符号化データを容易に生成することが可能になる。
【解決手段】 属性判定部は、入力した着目ブロックを解析することで、当該着目ブロックを非可逆符号化、可逆符号化のいずれで符号化すべきかを判定する。着目ブロックが可逆符号化すべきとして判定された場合、可逆符号化部は基礎となる画質の階層から予め設定された許容画質の階層までの符号化データを生成する。そして、生成された符号化データ量が予め設定された目標符号量を超えるか否かが判定され、超えると判定した場合には着目ブロックを非可逆符号化すべきブロックとして変更する。また、超えないと判定された場合には、可逆符号化部は、残りの階層の符号化データを可逆符号化部により生成させる。また、属性判定部で非可逆符号化すべきと判定されたブロック、或いは、可逆から非可逆へ変更されたブロックについては、非可逆符号化部で非可逆符号化する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は画像データの符号化技術に関するものである。
【背景技術】
【0002】
離れた場所からプリンタに対してプリントを指示するプリント形態があり、それをリモートプリントと言う。リモートプリントにおいて、PDLのレンダリングは、インターネット上のサーバー上で行われることがある。この場合、ネットワークを介して、プリントジョブを伝送するため、レンダリングした画像(文書画像)に対しては、レート制御機能を持つ画像圧縮が必要となる。レート制御機能とは、画像圧縮されたデータ(画像符号化データ)を、復号することなく符号量を変更できる機能である。この機能により、画像符号化データを伝送するネットワークの帯域幅に応じたデータ量の変更が容易となる。
【0003】
また、文書画像においては、文字,線画等の領域、写真の領域が混在する場合も少なくない。この点に着目した高効率な圧縮方式として、領域毎に適した符号化方法を用いる適応符号化方式がある。その例として、特許文献1がある。
【0004】
特許文献1においては、画像をブロックに分割して、写真領域のブロックには、高周波成分のデータを大きく削減して高圧縮性を狙える、周波数変換をベースとした符号化を用いる。一方、文字,線画等のブロックには、領域の低エントロピー性を利用して、高効率な符号化性能を実現可能な予測符号化を用いる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2006−67117号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
適応符号化による高画質/高圧縮の利点を活かし、かつ、用途に応じて符号量の調整が可能なレート制御機能の実現が求められている。レート制御機能を持つ適応符号化には、JPEG2000のような、レート制御機能を有する周波数変換ベースの符号化方式が望ましい。一方、予測符号化は多値データを「多値」として処理を行うため、レート制御機能を持たず、利用しずらい。
【0007】
かかる点を踏まえると、適応符号化のレート制御のためには次のような処理が考えられる。先ず、文字・線画等の領域のブロックに対して予測符号化を実施する。その後、該当領域の符号量を算出する。その上で、画像全体の目標符号量から、文字・線画等の領域の符号量を減算して、写真領域の目標符号量を得る。次いで、写真領域のブロックに対し周波数変換ベースの符号化方式を実施する。そして、写真領域に対して目標符号量となるようにレート制御を行い、画像全体に求められる目標符号量を達成する処理となる。
【0008】
ただし、この処理においては、文字・線画等の領域の符号量が多くなる場合、写真領域に対して、十分に符号量を割り当てられないことがある。極端な場合には、文字,線画等の領域のみで、画像全体の目標符号量を超過してしまうことも発生し得る。
【0009】
この問題に対しては、上記方法で写真領域の目標符号量を得た後に、当該目標符号量は不十分であると判断した際、文字,線画等の領域の一部もしくは全部のブロックを周波数ベースの符号化方式で圧縮し直すことである。そして、その上で、周波数ベースの符号化方式で圧縮した領域に対してレート制御を行うことである。たしかに、この場合、画像全体の目標符号量に符号化することができるが、この方法では、文字,線画等の領域に対する予測符号化が終了した後にも、該当領域のビットマップを保持しなければならない。つまり、メモリ使用量の増加を伴う。もしくは、ビットマップを保持しないのであれば、予測符号化の復号を行ってビットマップを生成した上で、圧縮をし直す必要があり、処理時間の増大につながる。
【0010】
本発明は上記点に鑑みなされたものであり、ブロックを単位とする可逆符号化データ、非可逆符号化データが混在しつつも、目標符号レートの符号化データを容易に生成することを可能ならしめる技術を提供しようとするものである。
【課題を解決するための手段】
【0011】
この課題を解決するため、例えば本発明の画像符号化装置は以下の構成を備える。すなわち、
画像を符号化して符号化データを生成し、目標とするビットレートに従い、生成された符号化データ中の一部を削除し出力するレート制御手段を有する画像符号化装置であって、
複数画素で構成されるブロックを非可逆符号化し、基礎となる画質の画像から段階的に高精細な画質の画像を復号するためのN1段階の階層データ構造を持つ符号化データを生成する第1の符号化手段と、
前記ブロックを予測演算を用いて可逆符号化し、基礎となる画質の画像から段階的に高精細な画質の画像を復号するためのN2(N1>N2)段階の階層データ構造を持つ符号化データを生成する第2の符号化手段と、
符号化対象画像から前記ブロックを単位に入力する入力手段と、
入力した着目ブロックを解析することで、当該着目ブロックを前記第1の符号化手段、前記第2の符号化手段のいずれで符号化すべきかを判定する判定手段と、
該判定手段により、前記着目ブロックを前記第2の符号化手段で符号化すべきとして判定された場合、前記基礎となる画質の階層から予め設定された許容画質の階層までの符号化データを前記第2の符号化手段により生成させ、生成された符号量が予め設定された目標符号量を超えるか否かを判定し、超えると判定した場合には前記着目ブロックを前記第1の符号化手段で符号化すべきブロックとして変更し、超えないと判定された場合には、残りの階層の符号化データを前記第2の符号化手段により生成させる第1の制御手段と、
前記判定手段、或いは、前記第1の制御手段によって前記第1の符号化手段で符号化すべきと判定されたブロックに対して前記第1の符号化手段により符号化させ、符号化データを生成させる第2の制御手段とを有する。
【発明の効果】
【0012】
本発明によれば、ブロックを単位とする可逆符号化データ、非可逆符号化データが混在しつつも、目標符号レートの符号化データを容易に生成することが可能になる。
【図面の簡単な説明】
【0013】
【図1】第1の実施形態における画像符号化処理の機能ブロック図。
【図2】第1の実施形態における画像符号化処理のフローチャート。
【図3】符号化情報テーブルの説明図。
【図4】レート制御部106のフローチャート。
【図5】符号化情報テーブルの説明図。
【図6】補間データ削除の説明図。
【図7】補間データ削除の説明図。
【図8】第2の実施形態における画像符号化処理の機能ブロック図。
【図9】ブロック符号化部801のブロック図。
【図10】第1の実施形態における画像符号化処理のフローチャート。
【図11】ブロック符号化部801のフローチャート。
【図12】サブブロック符号化情報テーブルの説明図。
【図13】レート制御部802のフローチャート。
【図14】画像処理装置のブロック図。
【図15】ステップS1301のフローチャート。
【図16】サブブロック符号化情報テーブルの説明図。
【図17】補間データ生成方法の説明図。
【図18】画像符号化データの構成の説明図。
【発明を実施するための形態】
【0014】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
【0015】
[第1の実施形態]
最初に、従来技術の課題に対する、本発明における解決方法の考え方について述べる。なお、以下では、文字・線画等の領域については、高周波性の維持が必要であるので、予測符号化を用いた可逆符号化を用いるものとする。そして、写真領域(階調画像)については、解像度よりも階調性が重要であるので、高圧縮性が期待できる周波数変換ベースの非可逆符号化を用いるものとする。その上で、文字・線画等の領域を符号化する手法を可逆符号化方式、写真領域を符号化する手法を非可逆符号化方式として説明する。
【0016】
処理のおおまかな考え方としては、2つある。1つ目は、画像をブロック単位に、可逆符号化対象ブロック、非可逆符号化対象ブロックに仮判定する。そして、ブロックをラスタスキャン順に符号化処理する過程において、ブロック平均符号量を超過する可逆符号化対象ブロックに対しては、可逆符号化の符号列を出力せずに、非可逆符号化対象ブロックに切り替える。こうすることで、非可逆符号化のブロックに十分な符号量を割り当てられない問題の発生を防ぐ。
【0017】
より詳しくは次のとおりである。まず、ラスタスキャン順に、写真領域のブロックには非可逆符号化を行い、文字・線画等の領域のブロックに対して可逆符号化を行う。その上で、文字,線画等の領域の各ブロックの可逆符号化が終了した後に、逐次注目ブロックの符号量を算出するとともに、ブロック平均符号量と比較し、非可逆符号化による圧縮のし直しの要否を判断する。もし、注目ブロックの符号量の方が大きければ、可逆符号化の符号列を出力せず、ラスターイメージを用いて非可逆符号化で圧縮し直す。一方で、注目ブロックの符号量の方がブロック平均符号量以下であれば、そのまま符号列を出力するものとする。例えば、ラスタスキャン順で見て連続するブロックの一部について、図6(a)のように符号量が分布する場合を考える。同図で、ブロック番号1,2,5〜10,16のブロックは、ブロック平均符号量を超えている。このため、各ブロックの可逆符号化が終了した後、逐次、非可逆符号化で圧縮し直す。また、番号3のブロックについては、そのまま出力する。一方で、写真領域については、非可逆符号化を実施する。そして、すべてのブロックの符号化が終了した後で、可逆符号化のブロックの符号量の総和を算出し、画像全体の目標符号量から減じる。そこで得られた符号量を、非可逆符号化の目標符号量として、レート制御を行う。
【0018】
この方法については、使用メモリ量や処理時間の増大を回避しつつ、非可逆符号化のための符号量を確保できるが、必要以上に文字,線画等の領域を非可逆符号化で圧縮してしまうことがある。つまり、可逆符号化のブロック全体から見て、ブロック平均符号量を超過する可逆符号化のブロックが少ない場合、画像全体で見れば、非可逆符号化のための符号量を十分に確保できる。それにもかかわらず、前述方式では非可逆符号化による圧縮のし直しを行ってしまう。
【0019】
本発明における2つ目の考え方は、これに対する対応策である。具体的には、可逆符号化の符号列に階層性を持たせることで解決する。ここで考える階層は、符号化対象領域における最低限の画質を保証するために必要な階層(基本階層)と、基本階層と併せて復号することでより高画質な画質を生成できる階層(付加的階層)に分類されるものである。そして、可逆符号化の符号列は、基本階層と付加的階層の構造を持つことになる。このような階層性を持たせることで、符号列生成後に付加的階層を削除して、可逆符号化の符号量を減らすことができる。したがって、付加的階層の削除により、符号量をブロック平均符号量以下にできるブロックについては、圧縮のし直しをせず、可逆符号化の符号列にしておく。その上で、符号化終了後に、非可逆符号化のための符号量が少ないと判断すれば付加的階層を削除して符号量を確保し、そうでなければ、削除を行わず可逆符号列をそのまま出力することが可能となる。結果として、文字,線画等の領域に対して、必要以上に非可逆符号化で圧縮してしまう問題を避けることができる。具体的な処理概要を、図6(b)を用いて説明する。同図において、各可逆符号化が適用されるブロックは、階層1と階層2から構成されるものとして、階層1は上記の「基本階層」であり、階層2は「付加的階層」である。この符号量分布において、ブロック番号8,10,16のブロックのみ、非可逆符号化で圧縮し直すことが必要となる。これは、削除してはならない基本階層の符号量がブロック平均符号量を超過しているためである。そして、このようなブロックが画像中に多数存在していると、非可逆符号化に十分な符号を割り当てられなくなるからである。しかし、ブロック番号1,2,5〜7,9のブロックについては、各ブロックの符号量はブロック平均符号量を超えているが、基本階層の符号量がブロック平均符号量より少ない。このため、階層2を削除することで符号量を減らして、ブロック平均符号量より少なくすることが可能ある。この点を踏まえて、非可逆符号化による圧縮のし直しを行わないで済む。一方で、写真領域については非可逆符号化で逐次符号化を行う。そして、全ブロックの符号化が終了した後に、可逆符号化のブロックの符号量の総和を算出し、画像全体の目標符号量から減じる。ここで得られた符号量を非可逆符号化の目標符号量と考え、十分な符号量であれば、当該目標符号量で非可逆符号化の符号化を行う。他方で、十分な符号量でないとした場合、可逆符号化のブロックの一部、もしくは全部の階層2のデータを削除して、非可逆符号化のための符号量を確保する。その上で、非可逆符号化を実施する。本実施の形態においては、かかる2つ目の考え方に基づいた方法を採用するものであり、以下にその詳細について説明する。
【0020】
図14は本実施形態に係る画像処理装置として機能する情報処理装置の基本構成を示す図である。本装置は、外部から符号化対象となる画像、並びに目標ビットレートTRの入力を受け付け、目標ビットレートの画像符号化データを生成するものである。ここで言う目標ビットレートTRとは、画像の圧縮率を示す指標であり、圧縮処理により生成されたデータの1画素当たりの符号量(ビット数)である。単位はbpp(bit per pixel)となる。
【0021】
1401は装置全体の制御を司るCPUで、RAM1402やROM1403に記憶されているプログラムやデータを用いて本装置全体の制御を行うと共に、後述する画像符号化処理を実行する。1402はRAMで、外部記憶装置1407や記憶媒体ドライブ1408、若しくはI/F1409を介して外部装置からダウンロードされたプログラムやデータを記憶する為のエリアを備える。さらに、CPU1401が各種の処理を実行する際に使用するワークエリアも備える。1403はROMで、ブートプログラムや本装置の設定プログラムやデータを格納する。1404、1405は夫々キーボード、マウスで、CPU1401に対して各種の指示を入力することができる。1406は表示装置で、CRTや液晶画面などにより構成されており、画像や文字などの情報を表示することができる。1407は外部記憶装置で、ハードディスクドライブ装置等の大容量情報記憶装置である。ここにOS(オペレーティングシステム)や後述する画像符号化処理の為のプログラムや画像等のデータなどが保存されている。そして、CPU1401による制御によって、これらのプログラムやデータはRAM1402上の所定のエリアにロードされる。1408は記憶媒体ドライブで、CD−ROMやDVD−ROMなどのコンピュータ可読記憶媒体に記録されたプログラムやデータを読み出してRAM1402や外部記憶装置1407に出力するものである。なお、この記憶媒体に後述する画像符号化処理の為のプログラム、符号化対象の画像を記録しておいても良くい。その場合、記憶媒体ドライブ1408は、CPU1401による制御によって、これらのプログラムやデータをRAM1402上の所定のエリアにロードする。1409はI/Fで、このI/F1409によって外部装置を本装置に接続し、本装置と外部装置との間でデータ通信を可能にするものである。例えば画像符号化装置をI/F1409に接続し、当該画像符号化装置によって生成された画像符号化データを本装置のRAM1402や外部記憶装置1407に入力することもできる。1410は上述の各ユニットを繋ぐバスである。
【0022】
なお、符号化対象の画像、並びに目標ビットレートTRについては、本装置のユーザーが、キーボード1404、マウス1405により指定する。そして、CPU1401は、外部記憶装置1407に格納されている、本発明の画像符号化処理プログラムをRAM1402にロードするとともに、符号化対象の画像,TRをRAM1402へ展開する。その後、CPU1401は、画像符号化処理を行い、生成した画像符号化データを、I/F1409を通して、外部装置に出力するものである。
【0023】
本実施形態における符号化対象の画像データは、外部記憶装置1407に格納されており、符号化後のデータも外部記憶装置1407に格納するものとする。ただし、これは便宜的なものであり、符号化対象の画像データをネットワークを介して受信しても良いし、符号化後のデータをネットワークを介して送信しても良い。勿論、符号化対象の画像をイメージスキャナより読込むものとしても構わないので、符号化対象の画像データの発生源、符号化済みの出力対象で本願発明が限定されるものではない。また、実施形態における符号化対象の画像データは、RGBカラー多値画像データとし、各コンポーネント(色)は8ビット(0乃至255の256階調)として説明する。但し、RGB以外のコンポーネントの構成(例えば、グレーやCMYK)でも構わず、色空間の種類,コンポーネントの個数は問わない。また、1成分のビット数も8ビットに限らず、8ビットを超えるビット数、もしくは8ビット未満のビット数でも構わない。更に、符号化対象の画像は水平方向W画素、垂直方向H画素により構成されるものとする。
【0024】
図1は本実施形態に係る画像処理装置における、画像符号化アプリケーションをCPU1401が実行した場合の機能構成を示すブロック図である。同図のように、ブロック分割部102、ブロックバッファ103、属性判定部104、非可逆符号化部105(第1の符号化部)、レート制御部106、可逆符号化部107(第2の符号化部)、可逆符号化可否判定部108、画像符号化データ形成部109を備える。なお、図1ではコンピュータプログラム(ソフトウェア)の例をしめすものとしているが、全処理部もしくはその一部をハードウェアにより実現しても良いのは勿論である。また、
図2は、本実施形態に係る画像処理装置の符号化処理(CPU1401の処理)を示すフローチャートである。以下、図1,図2を参照して、本実施形態に係る画像処理装置が行う画像符号化処理について説明する。
【0025】
CPU1401は、画像の符号化処理を開始すると、初期化処理を行う(ステップS201)。この初期化処理として、ブロックカウンタに対する0の設定,外部から指定された目標ビットレートTR(bpp)の設定、符号化対象の画像の先頭ポインタの取得、等である。初期化処理の後、ブロック分割部102は、ブロックバッファ103へブロックデータの格納する(ステップS202)。
【0026】
ブロックバッファ103は1ブロック分の画素データを格納する領域を持ち、ブロック分割部102から出力されるブロックデータを順次格納していく。ブロックのサイズは、水平方向Bw画素、垂直方向Bh画素である。説明の便宜上、符号化対象のオリジナル画像の水平方向画素数WはBwの整数倍、垂直方向画素数HはBhの整数倍であり、矩形ブロックに分割した場合に正規のサイズではないブロックが発生しないものとする。
【0027】
また、ブロックバッファ103に必要とされる容量はBw×Bh×3(RGB分)バイトである。ここで、ブロックのサイズの設定について簡単に述べる。後述するが、ブロックを単位として、領域の属性(文字,線画等、写真の2種類)を判断し、可逆符号化方式と非可逆方式のいずれを用いるか選択する。このため、ブロックのサイズが大きいと、写真領域と文字,線画等の領域の境目等において、可逆符号化のブロックと非可逆符号化のブロックが混在する場合に、歪みと見えてしまう。一方、あまり小さくすると、符号化において参照できる範囲が限定されてしまい、符号化の性能低下を招く。これらのことを勘案し、本実施の形態においては、Bw=32、Bh=32とする。なお、本実施の形態における以下の説明では、画像全体にわたるブロックの個数((W/Bw)x(H/Bh))をNと定義する。また、ブロックバッファ103へのブロックデータの取得順は、このブロックを単位とするラスタースキャン順とする。
【0028】
ブロックバッファ103へのブロックデータの格納が終わると、属性判定部104はブロックデータを解析し、その属性判定処理を行う(ステップS203)。具体的な判定処理は次に述べるとおりである。
【0029】
属性の判定は、Bw×Bh画素のブロックデータを入力し、ブロック内をK画素単位(本実施形態ではK=2×2画素)にラスタースキャン順で処理する。以降、この2×2画素をピース(Piece)と呼ぶ。実施形態の場合、1ブロックのサイズは32×32画素であるので、この中には256(=16×16)個のピースが存在することとなる。図17の右側に示す図は、1つのピースに含まれる4つの画素を示している。
【0030】
判定手順は、まず、1つのピースの中で、色数が何色であるかの判別を行う。注目しているピース内の4個の画素を図17の右側に示すa、b、c、Xで表現し、画素a,b,c,Xそれぞれの画素値(色)が一致するかどうかの判定によって、ピースの色数を判定できる。a,b,c,Xそれぞれの差分値Dab,Dac,Dad,Dbc,Dbd,Dcdを次式(1)により求める。
Dab=a−b
Dac=a−c
Dad=a−X
Dbc=b−c
Dbd=b−X
Dcd=c−X …(1)
【0031】
そして、差分値Dab,Dac,Dad,Dbc,Dbd,Dcdのうち、0となる数Fをカウントする。従って、差分値は6つあるので、値Fは0乃至6の値を取り得る。ここで、F=0の場合、ピース内の4画素a,b,c,Xは全て違う色であることを意味するのは明らかで、色数が4であることを示す。また、F=1の場合、4画素中2画素が同じ色となるので、a,b,c,Xの色数は3となる。同様に、F=2の場合には、色数が2であることを示し、F=3以上の場合にはa,b,c,Xが全て同じ色であることになる。以上の方法により、着目ピースの色数の判別が可能となる。そして、ブロック内の全ピースの色数を判定する。ブロックの終端に位置するピースの色数判定が終了したら、符号化方式の判定を行う。本実施形態では、ブロック内のピースの色数が1色の場合の数、2色の場合の数、3色の場合の数、4色の場合の数をカウントしておく。ブロック内のピース数と、1色ピース及び2色ピースのカウント数CP1を比較して、CP1が総ピース数の50%以上であれば(過半数を占めれば)、注目ブロックは文字,線画等の領域であると判定する。一方、CP1が総ピース数の50%未満である場合には、注目ブロックは非文字線画領域、換言すれば写真領域(階調領域)であると判定する。なお、上記の代わりに、3色ピース及び4色ピースの合計カウント数と総ピース数との比で判定しても良いのは勿論である。
【0032】
属性判定(ステップS203)を行った結果を受け、着目ブロックが文字、線画領域にあるか、写真領域であるかの判定を行う。そして、文字、線画領域にあると判定された場合には後述する第1の制御処理を行う。また、写真領域である場合には以下に説明する2の制御処理を行う。
【0033】
以下は、ステップS204でYes、すなわち、着目ブロックが写真領域である場合の第2の制御処理である。非可逆符号化部105は、着目ブロックのビットマップイメージを非可逆符号化する(ステップS205)。ここで非可逆符号化とは、符号化終了後に符号列の一部を切り捨てることが可能な階層性を持つ非可逆符号化である。例えば、ビットプレーンを単位として符号化を行うビットプレーン符号化、画像中の周波数係数を低い成分からグループ化させて、グループを単位として順に符号化を行う周波数ベースの階層的符号化がある。本実施の形態においては、ビットプレーン符号化,周波数ベースの階層的符号化を併せ持つ、国際標準方式のJPEG2000(ITU-T T.800 | ISO/IEC 15444-1)により符号化を行う。JPEG2000の詳細については、勧告書等に記載されているので、ここでは説明を省略する。なお、後述するが、本実施の形態における非可逆符号化方式における階層数は2であるが、JPEG2000は目標符号量の符号列を生成できるレート制御機能を持っているため、階層数は無数にあると言える。
【0034】
非可逆符号化で生成された符号列については、レート制御部106に出力する。その上で、図3のとおり、RAM1402に予め確保しておいた、ブロックの符号化情報をまとめたテーブル(符号化情報テーブル)に、非可逆符号化を行ったことを示す圧縮フラグ“0”を記録する(ステップS206)。さらに、非可逆符号化データサイズとデータの先頭ポインタを記す。なお、非可逆符号化部105では、符号列における所定のデータを単位として、符号量と、データを復号しないことにより復号画像上に発生する歪みの比率(R−D比)を求める。そして、レート制御部106では、R−D比の情報を基に、歪みの発生を抑えつつ、生成された符号化データ中の符号を選択的に削除してレート制御を行う。このR−D比を求める処理は負荷が大きいため、非可逆符号化の符号列に求められる目標符号量から見て、必要以上の符号列を生成することは望ましくない。つまり、後述するレート制御部106において、レート制御を行える程度に符号を生成すればよい。
【0035】
次に、着目ブロックが文字,線画領域にあると判定された場合の第1の制御処理について説明する(ステップS204でNo)。この場合、可逆符号化部107は、着目ブロックに対し、階層性を持たせることが可能な予測演算を主体とする可逆符号化を行う。具体的には、着目ブロックから補間データと縮小画像ブロックを生成する。その上で、先ず、縮小画像ブロックに対して可逆符号化を行う(ステップS207)。ここで、補間データと縮小画像ブロックについて簡単に説明する。縮小画像ブロックは、図17における各ピースの右下の画素Pn(1,1)を集めて得られるデータであり、結局のところ、オリジナルのブロックに対して水平、垂直とも1/2のサイズである。一方、補間データは各ピースの残りの画素Pn(0,0),Pn(1,0),Pn(0,1)を集めたデータである。縮小画像ブロックについては、注目ブロックの最低限の画質の画像を表示する上で必要となるデータであり、図6(b)の階層1に相当する。つまり、この階層1の1画素から同じ値の画素を2×2個生成すれば、少なくともオリジナルのブロックと同じサイズの画像を構成できる。また、補間データについては、非可逆符号化のための符号量確保のために削除され得るデータであり、図6(b)の階層2に相当する。なお、可逆符号化で用いる符号化方式としては、国際標準方式のJPEG−LS(ITU-T T.87 | ISO/IEC 14495-1)を用いるものとする。JPEG−LSの詳細については、勧告書等に記載されているので、ここでは説明を省略する。縮小画像ブロックの符号化が終了した後、可逆符号化可否判定部108は、縮小画像ブロックの符号列に関するビットレート(r_i_block)を算出し、目標ビットレートTRとの比較を行う(ステップS208)。なお、縮小画像ブロックの符号量をM_i_block(バイト)としたとき、縮小画像ブロックの符号列に関するビットレートr_i_blockは、次式に従って算出できる。
r_i_block=8 * M_i_block / (Bw/2 * Bh/2)=32 * M_i_block/(Bw * Bh)
【0036】
もし、算出したビットレートr_i_blockが目標ビットレートTRより大きい場合(ステップS208でNo)、着目ブロックは図6(b)のブロック番号8、10や16と同じ状況であるとことになる。従って、レート制御を保証するために、着目ブロックについての可逆符号化での符号化をあきらめ、非可逆符号化する(ステップS205)。なお、繰り返すが、非可逆符号化により圧縮し直す理由は、縮小画像の符号列については、当該ブロックの画像を表示でする必須のものであり、削除することはできないためである。そして、このようなブロックが画像中に多く存在すると、非可逆符号化に割り当て可能な符号量が極端に少なくなる可能性があるからである。また場合によっては、可逆符号化の符号量だけで目標符号量を超えてしまう可能性があるからである。他方、ビットレートr_i_blockが目標ビットレートTR以下である場合(ステップS208でYes)、非可逆符号化による圧縮のし直しを行わず、残りの補間データの符号化を行う(ステップS209)。これは、このようなブロックが多く存在しても、非可逆符号化への符号量割り当てに関する問題は発生しないからである。なお、補間データの符号化は、可逆符号化方式,非可逆符号化方式のいずれでもよい。ただし、本実施の形態においては、文字,線画等の領域を可逆符号化するものとしているので、補間データについても可逆符号化を行うものとする。具体的な方法としては、次に述べる方式を用いる。
【0037】
補間データの符号化はピース単位で行うものであり、属性判定部104において導出した色数に応じて符号を割り当てる。もし、注目ピース内の色数が1色の場合、“1”(1ビット)を出力する。復号装置では、縮小画像を復号した後、もし補間データの符号語が“1”であった場合、縮小画像中の該当する1つの画素をPn(1,1)と見なす。そして、それと同じ色の画素Pn(0,0),Pn(1,0),Pn(0,1)を生成すれば良いことになる。
【0038】
また、注目ピース内の色数が1色ではなく、以下の次式(2)が成り立つ場合、“01”(2ビット)を出力する。
Pn(0, 1) = Pn-1(1, 1)
かつ
Pn(1, 0) = Pn-b(1, 1)
かつ
Pn(0, 0) = Pn-b-1(1, 1) …(2)
ここで、Pnが着目ピースを示し、Pn-1,Pn-b,Pn-b-1の関係は図17に示すように、隣接する3つのピース内の各右下画素である。復号装置では、縮小画像を復号した後、もし補間データの符号語が“01”であった場合、縮小画像中の該当する1つの画素をPn(1,1)と見なし、その画素の左上隣画素Pn-b-1(1,1)と同じ色を持つ画素Pn(0,0)を生成し、上隣の画素Pm-b(1,1)と同じ色を持つ画素Pn(1,0)を生成し、そして、左隣の画素Pn-1(1,1)と同じ色を持つ画素Pn(0,1)を生成すれば良い。
【0039】
そして、注目ピース内の色数が1色ではなく、上式(2)も成り立たない場合、“00”(2ビット)を出力し、続けて3つの画素Pn(0,0),Pn(1,0),Pn(0,1)の値をそのまま出力する。実施形態の場合、1画素の色成分の数は3つであり、各々が8ビットであるので、“00”に後続して、72ビット(=3×8×3)が出力されることになる。なお、この方式は、あくまで本実施の形態において用いる処理の一例であり、その他の方式を使ってもよい。例えば、画素値をそのまま出力する方法や、特開2010−154486に開示された方法でも構わない。
【0040】
補間データの符号化が終了した後、図3に示したように、符号化情報テーブルに圧縮フラグとして“1”を記す(ステップS210)。さらに、補間データの符号量と、補間データの符号量と縮小画像の符号量の和とを符号化情報テーブルに記録する(ステップS210)。その上で、補間データと縮小画像の符号列をレート制御部106へ出力する。この出力においては、まず、補間データの符号列をレート制御部106内部のメモリへ書き込み、それに後続するように縮小画像の符号列を書き出す。さらに、符号化情報テーブルに、補間データの符号列の先頭アドレスを記録する。補間データの符号量を記録する理由は、格納した先頭アドレスにその符号量を加算するだけで、補間データを読み飛ばし、縮小画像データの符号列の読み出しアドレスが算出できるためである。
【0041】
ステップS206もしくはステップS210の処理が終了した後、ブロックカウンタi_blockをインクリメントし(ステップS211)、ブロックカウンタの値i_blockとブロック総数Nの比較を行う(ステップS212)。もしi_blockの方が、符号化対象画像内の総ブロック数Nより小さければ(ステップS212でYes)、処理をS202へ戻す。そうでなければ(ステップS212でNo)、レート制御部106はレート制御処理を行う(ステップS213)。
【0042】
レート制御部106では、先ず、可逆符号化のブロックに関するビットレート(r_lossless)を求める。そして、所定の閾値(Th_r1)との比較を行い、Th_r1よりr_losslessの方が大きい場合には、可逆符号化実施ブロックの符号量が多く、非可逆符号化に十分な符号量が割り当てられないと考えて、補間データの削除を行う。なお、補間データの削除の方法については、いくつか考えられるが、本実施の形態においては、最も簡易な方法を採る。具体的には、画像全体の可逆符号化のブロックの全ての補間データを削除する。
【0043】
レート制御部106の処理フローについては、図4にまとめており、同図を用いて説明する。レート制御処理が開始すると、図3の符号化情報テーブルを基に画像全体の可逆符号化データのビットレート(r_lossless)を算出する(ステップS401)。なお、r_losslessについては、可逆符号化が実施されたブロック(可逆符号化実施ブロック)の数をnum_lossless_block、可逆符号化実施ブロックの符号量(byte)の和(総符号量)をsum_M_losslessとして、次の通り算出される。
r_lossless = 8 * sum_M_lossless/(Bw*Bh*num_lossless_block)
【0044】
次いで、可逆符号化実施ブロックを可逆のまま出力するのか、補間データを削除して符号量を削減して出力するかの判断を行う(ステップS402)。具体的には、現在の可逆符号化データのビットレート(r_lossless)と閾値Th_r1との比較を行う。もし、r_losslessが閾値Th_r1より大きい場合(ステップS402でYes)、可逆符号化実施ブロックに対して補間データの削除を行う(ステップS403)。その上で、今度は非可逆符号化の目標ビットレート(TR_lossy)を算出する(ステップS404)。一方で、r_losslessがTh_r1以下の場合(ステップS402でNo)、非可逆符号化の目標ビットレート(TR_lossy)を算出する(ステップS404)。
【0045】
ここで、閾値Th_r1の設定について簡単に述べる。後述するが、非可逆符号化領域の目標符号量は、画像全体の目標符号量から、可逆符号化実施ブロックの最終的な符号列の符号量を減じた値である。このため、Th_r1として大きい値を設定するほど、“可逆”の符号量を多く出力することになり、結果として、非可逆符号化の符号列に割り当て可能な符号量は少なくなる。そして、非可逆符号化が実施されるブロック(非可逆ブロック)の画質は、画像全体を非可逆符号化により目標ビットレートで圧縮した場合と比べて、低くなってしまう。一方で、Th_r1として小さい値を設定するほど、“可逆”としての出力を制限することである。このため、可逆符号化方式を導入することのメリットが失われていく。これらのことを鑑みると、Th_r1については、画像全体の目標ビットレートTRに近い値を設定することが望ましい。そこで、Th_r1とTRとの間には、相関性を持たせるものとした。すなわち、Th_r1=α * TR(ただし、αは1以上の実数)とすることが望ましい。そこで、実施形態では、α=1、すなわち、Th_r1=TRを設定するものとする。
【0046】
ステップS403においては、補間データの削除を行うための、符号化情報テーブルの更新を行う。具体的には、図5に示したとおり、圧縮フラグが“1”となっている全てを“2”へ変更する。さらに、可逆符号化データサイズを、補間データサイズを減じた値とし、データ先頭ポインタの値を縮小画像列の先頭へ変更する(従前のデータ先頭ポインタを補間データのデータサイズで加算して更新する)。なお、説明のとおり、この処理ステップにおいては、実際に補間データの削除は行なわなくてよい。後述する画像符号化データ形成部109では、符号化情報テーブルを参照しながら、補間データを読み飛ばして符号列を生成し、最終的には補間データを削除した符号列を生成できるためである。
【0047】
ステップS404においては、非可逆符号化の目標ビットレートTR_lossyを下記の通り行う。
・ステップS402でYesの場合:
TR_lossy = 8 * (M_img - sum_M_reduced_img) / (Bw * Bh * num_lossy_block)

・ステップS402でNoの場合:
TR_lossy = 8 * (M_img - sum_M_lossless) / (Bw * Bh * num_lossy_block)
ここで、sum_M_reduced_imgは、各可逆符号化実施ブロックにおける縮小画像の符号列の符号量和であり、num_lossy_blockは非可逆ブロックのブロック数である。また、M_imgは、画像全体の目標符号量であり以下のとおりである。
M_img = TR * W * H / 8
【0048】
ステップS404における非可逆符号化の目標ビットレートTR_lossyの算出が終了した後、非可逆符号化データのビットレートがTR_lossyとなるように、レート制御を行う。このレート制御については、各非可逆ブロックのR−D比の情報を基に、非可逆ブロック全体の中から、削除すべきデータを決定しながら行う。実施形態では、非可逆符号化としてJPEG2000を例にしているので、非可逆ブロックのR−D比の情報を基に、最下位のビットプレーンから何層までのビットプレーンまでを削除するかを決定していく。ただし、詳細については、本発明の主たる目的から外れるので、ここでは割愛する。このレート制御処理が完了した後、符号化情報テーブルを画像符号化データ形成部109へ出力し(ステップS406)、処理を終える。
【0049】
ステップS213のレート制御処理が終了すると、画像符号化データ形成部109において画像全体の符号化データ(画像符号化データ)の形成を行う(ステップS214)。このステップでは、まず、画像符号化データの先頭に配置するヘッダの情報を生成する。ヘッダには、画像の縦横サイズ,ブロックのサイズ,各ブロックの圧縮フラグと符号長等、復号する上で必要となる情報をまとめる。次いで、ヘッダに続けて、ブロック番号順で各ブロックの符号列を並べる。その際には、符号化情報テーブルの情報を基に処理を行う。これらの処理により、画像符号化データの形成が終了すると、画像符号化処理は完了する。
【0050】
以上説明したように本第1の実施形態では、ブロックを単位とする可逆符号化データ、非可逆符号化データが混在しつつも、目標符号レートの符号化データを容易に生成することが可能になる。しかも、文字や線画が含まれる領域については、或る程度の画質が維持することも可能になる。また、特に、第1の実施形態のように、1つのブロックについて可逆符号化から非可逆符号化に切り替えるべきか否かの判断(S208)は、オリジナルのブロックよりも小さい縮小画像についての可逆符号化結果の符号量から判断する。従って、仮に、着目ブロックを可逆符号化から非可逆符号化に切り替えるにしても、その間のロスは縮小画像の可逆符号化に係る時間で済み、全体に与える時間を小さなものとすることができる。
【0051】
なお、上記実施形態では、可逆符号化部107は、32×32画素のブロックから、水平、垂直とも1/2の16×16画素の縮小画像ブロックと補間データを生成し、それぞれ可逆符号化するものとした。すなわち、階層構造として2層の例である。しかし、生成された16×16画素の縮小画像を再帰的に入力するようにすれば、そこから8×8画素の縮小画像が生成でき、補間データが何段も生成できる。従って、上記実施形態で本願発明が限定されるものではない。すなわち、可逆符号化部107は、要するに基礎となる画質の画像から段階的に高精細な画質の画像を復号するための階層データ構造を持つ符号化データを生成し、全ての符号化データを復号した場合にオリジナルのブロックの画像にまで可逆的に復元可能な階層データ構造を持つ可逆符号化データを生成するものであれば良い。この場合、どの縮小画像とどの補間データまでが、許容画質とするかは適宜決定すれば良いであろう。
【0052】
[第2の実施形態]
第1の実施形態においては、ブロックサイズを32×32画素として判定,符号化を行う方法を示した。しかし、非可逆符号化方式によっては、このサイズでは符号化の性能を十分に出せない場合もある。例えば、そのような非可逆符号化方式として、第1の実施形態で用いたJPEG2000があり、理由について簡単に説明する。JPEG2000ではエントロピー符号化で算術符号化を用いる。算術符号化では、符号化対象のシンボルの出現確率について想定値を設け、想定値を基に符号化を行う。そして、符号化を進めながら想定値を実際の出現確率に近づけていく。つまり、算術符号化は処理を進めながら、性能を向上させていく。このため、ブロックのサイズが小さいと、想定値を実際の値に近づけることはできず、十分な性能を得られない結果となる。
【0053】
そこで本第2の実施の形態においては、判定処理と非可逆符号化方式で、処理対象とする矩形領域のサイズを変える方法を示す。具体的には、判定処理で用いる矩形領域のサイズを32×32画素(第1のブロックに対応)とし、非可逆符号化処理で用いる矩形領域のサイズをそれより十分に大きく、且つ、水平、垂直とも整数倍の、例えば128×128画素(第2のブロックに対応)とする。このように本第2の実施形態では、異なるサイズのブロックを利用することになるので、以降、前者の矩形領域(32×32画素)のブロックをサブブロック、後者の矩形領域(128×128画素)を単にブロックと呼ぶものとする。
【0054】
また、第1の実施形態におけるレート制御では、非可逆符号化の符号量を十分に確保できないと判断した場合、全ての可逆符号化が適用されたブロックの補間データを削除し、非可逆符号化データに多くの符号量を確保した。この方法を採った理由は、補間データの削除に関する処理の軽減である。しかし、この方法では必要以上に補間データを削除してしまう、という問題がある。例えば、図7に示した通り、2つのブロック(2×128×128画素)から構成される画像があったとする。同図において、ブロック0,1それぞれに存在する可逆符号化のサブブロック(可逆サブブロック)のみの符号量を示していて、ブロックをまたいで、サブブロック番号を割り振っている。そして、番号1〜3,5〜7,10のサブブロックについては、補間データサイズは10byteで、サブブロックに対して求められる目標符号量より10byte少ない。番号4のサブブロックについては、補間データサイズが60byteで40byte超過している。また、番号8のサブブロックについては補間データサイズが70byteで50byte超過し、番号9については、補間データサイズが80byteで60byte超過している。この画像に対して、第1の実施形態と同様な補間データの削除を行うと、1サブブロックあたり20byte目標符号量を下回る。結局、合計200byteのデータを削除することとなり、削除し過ぎてしまい、不必要に画質が劣化する可能性がある。この点を踏まえ、本第2の実施の形態においては、処理負荷は多少かかるが、補間データを必要以上に削除しない方法を示す。
【0055】
図8は本第2の実施形態に係る画像処理装置の機能構成を示すブロック図である。図8に示すように、本第2の実施形態に係る画像処理装置は、ブロック分割部102、ブロックバッファ103、ブロック符号化部801、レート制御部802、画像符号化データ形成部803を備える。なお、図8に示す構成はハードウェアにより実現しても良いが、本第2の実施形態では、各部の機能をコンピュータに実現させるプログラムにより実現するものとする。このプログラムは上記外部記憶装置1407や記憶媒体ドライブ1408、もしくはI/F1409を介して外部装置からRAM1402にロードされるものとする。
【0056】
続いて、図8の画像処理装置の処理について、図10のフローチャートを用いて説明をする。
【0057】
CPU1401は、画像の符号化処理を開始すると、初期化処理を行う(ステップS1001)。初期化処理の後、ブロック分割部102は、ブロックバッファ103へブロックデータの入力を行う(ステップS202)。ここまでの処理については、第1の実施形態と同様であるので、詳細説明を割愛する。なお、本第2の実施形態の冒頭でも説明したが、ブロックのサイズについては、128×128画素である。次いで、ブロックデータをブロック符号化部801へ入力し、ブロック符号化部801はブロック符号化処理を行う(ステップS1003)。
【0058】
このステップS1003については、図9のブロック符号化のブロック図と、図11のフローチャートを用いて説明する。ブロック符号化部801にブロックデータが入力されると、サブブロック分割部901において、32×32画素サイズのサブブロックに分割する(ステップS1101)。またこのタイミングで、サブブロックのカウンタi_subblock=0と初期化する。なお、以下の説明において、ブロック内のサブブロックの個数をMとする。本第2の実施の形態においては、ブロックサイズ,サブブロックサイズから、M=16となる。次いで、サブブロックを属性判定部104に入力し(ステップS1102)、属性判定を行う(ステップS1103)。属性判定部104の処理については、第1の実施形態と同様であるので、説明を割愛する。属性判定の結果、写真であると判定した場合(ステップS1104でYes)、サブブロックのイメージを非可逆符号化対象イメージ生成部902へ出力する(ステップS1105)。そして、図12(a)に示したサブブロック符号化情報テーブルに圧縮フラグとして“0”を設定する(ステップS1106)。その後、サブブロックカウンタi_subblockをインクリメントし(ステップS1107)、サブブロック数のMと比較する(ステップS1108)。もし、i_subblockがMより小さければ(ステップS1108でYes)、処理をステップS1102へ戻す。一方で、i_subblockがMであれば(ステップS1108でNo)、処理をステップS1109へ進める。
【0059】
ステップS1104において、属性は写真でないと判断した場合(ステップS1104でNo)、可逆符号化部107においてサブブロックの縮小ブロックに対して可逆符号化を行う(ステップS1110)。この処理については、第1の実施形態と同様である。次いで、注目サブブロックにおける縮小ブロックの符号列のビットレート(r_i_reduced)を求めて、TRと比較を行う(ステップS1111)。もし、r_i_reducedの方が大きい場合(ステップS1111でYes)、非可逆符号化の対象とするため、サブブロックのイメージを非可逆符号化対象イメージ生成部902へ出力する(ステップS1105)。一方で、縮小ブロックのビットレートr_i_reducedがTR以下であるい場合(ステップS1111でNo)、補間データの符号化を行う(ステップS1112)。その後、サブブロックのイメージを非可逆符号化対象イメージ生成部902へ出力し(ステップS1113)、サブブロック符号化情報テーブルに圧縮フラグとして“1”を設定する(ステップS1114)。ここで、ステップS1113でサブブロックのイメージを出力する理由について簡単に述べる。非可逆符号化は128×128画素サイズのブロックで行うため、可逆符号化が実施されたサブブロック(可逆符号化実施サブブロック)の領域に対して、何かしらの画素値を与えることが必要となる。本実施の形態においては、非可逆符号化が実施されるサブブロック(非可逆サブブロック)との画素値の連続性を考慮して与える。具体的には、可逆符号化実施サブブロックには、非可逆サブブロックとの画素値の連続性を持つ場合もあることに注目し、ブロック内の全可逆符号化実施サブブロックの画素値平均を用いる。このため、可逆符号化実施サブブロックのイメージを出力する。ステップS1114が終了すると、サブブロックのカウンタをインクリメントして(ステップS1107)、処理をステップS1108へ進める。ステップS1108の処理については、すでに説明しているため割愛する。
【0060】
ステップS1109においては、サブブロック符号化情報テーブルを基に、着目ブロック内に非可逆サブブブロックが存在しているかどうかを判断する。もし存在しなければ(ステップS1109でNo)、サブブロック符号化情報テーブルをレート制御部802へ出力する(ステップS1117)。一方で、存在する場合(ステップS1109でYes)、非可逆符号化対象イメージ生成部902において、非可逆符号化の対象となる128×128ピクセルのイメージ(非可逆符号化対象イメージ)を生成する(ステップS1115)。このステップにおいては、非可逆符号化を行えるようにするために、可逆サブブロックの存在位置に対応する領域に対して、何らかの画素値を与える処理(穴埋め)が必要となる。この穴埋めについては、該当領域の符号がなるべく発生しないようにする必要がある。この点を念頭におき、本実施の形態では、注目ブロック内の非可逆符号化対象のサブブロックはそのままにし、それ以外の可逆符号化実施サブブロック内の全画素を、可逆符号化実施サブブロックの画素値の平均値(平均画素値)で穴埋め(ペイント)するものとする。具体的な処理については、次に述べる。
【0061】
ステップS1115が開始すると、128×128画素のメモリ領域を確保する。次いで、非可逆サブブロックについて、ブロック内と同じ位置に、非可逆符号化対象イメージ内へ画素値をコピーする。その後、ブロック内の全可逆符号化実施サブブロックの平均画素値を求める。そして、ブロック内の可逆符号化実施サブブロックと同じ領域に対して、平均画素値をコピーする。この結果、128×128画素のブロック内の、可逆符号化するとして決定した32×32画素を単位とするサブブロック内の全画素が同じ値を持つことになり、高周波成分が少ない状態を作り出すことができる。このようにして、非可逆符号化対象イメージを生成した後、非可逆符号化部105では、非可逆符号化を実施する(ステップS1116)。非可逆符号化については第1の実施形態と同様であり、説明を割愛する。なお、非可逆符号化が終了すると、図12(b)のように示したように、非可逆符号化情報を生成し、レート制御部802へ出力する(ステップS1117)。ステップS1117の処理が終了すると、S1003の処理を終える。
【0062】
さて、図10における注目ブロックの符号化(ステップS1003)が終了すると、ブロックカウンタをインクリメントして(ステップS1004)、ブロック数Nとの比較を行う(ステップS1005)。もし、i_blockの方が小さければ(ステップS1005でYes)、処理をS1002へ戻す。一方で、i_blockとNが等しければ(ステップS1005でNo)、レート制御部802においてレート制御処理を行う(ステップS1006)。
【0063】
レート制御部802における処理の流れを図13のフローチャートに示す。同図の処理は、第1の実施形態のレート制御の処理フロー(図4)とおおまかな流れは同じであり、相違点を中心に説明する。レート制御処理が開始すると、まず画像全体の可逆符号化実施サブブロックのビットレートr_losslessを算出する(ステップS401)。この後、画像全体の目標ビットレートTh_r1との比較を行う(ステップS402)。もし、r_losslessの方が大きければ(ステップS402でNo)、非可逆符号化の目標ビットレートの算出を行う(ステップS404)。一方、r_losslessの方が小さければ(ステップS402でYes)、補間データ削除のための符号化情報テーブルの更新を行う(ステップS1301)。ステップS1301の処理については、図15のフローチャートにまとめてあるので、そちらを用いて説明することとし、以下では、本第2の実施の形態における補間データの削除方法に関する概略をまとめる。
【0064】
本第2の実施の形態の冒頭でも説明したが、第1の実施の形態においては、必要以上に補間データを削除していた。これに対する改善として、目標圧縮率をサブブロックに適用したときの符号量(サブブロック平均符号量)を上回っているサブブロックのみについて、補間データを削除する方法がある。例えば、図7の符号量分布であれば、番号4,8,9のサブブロックの補間データを削除すればよい。
【0065】
また別には、サブブロック平均符号量を超過しているサブブロックの符号量と、下回っているサブブロックの符号量を相殺させる。そして、超過している場合、超過している分だけ、補間データを削除する方法がある。例えば、図7の場合であれば、超過符号量は150byteで、下回っている符号量は70byteであり、80byte削除すれば十分である。そこで、サブブロック9の補間データの削除が必要であると判断し、削除を行う。
【0066】
さらには、ブロック平均符号量を超過しているブロックを選択して、サブブロック平均符号量を上回っているサブブロックの補間データを削除する方法がある。図7であれば、ブロック0については、目標符号量を超過しているサブブロックの超過符号量は40byteである。また、目標符号量を下回っているサブブロックにおいて下回っている符号量(余符号量)は50byteである。このため、補間データの削除を行わない。一方でブロック1については、超過しているサブブロックの超過符号量は110byteで、下回っているサブブロックの余符号量は20byteである。このため、補間データの削除が必要となり、サブブロック8,9の補間データを削除する。
【0067】
これら、いずれの方法でも、可逆符号化が実施された領域の符号量を、当該領域に対して目標圧縮率を適用して得られる符号量より小さくできる。このため、非可逆符号化に必要となる符号量を確保することはできる。以下では、3番目に述べた方法について、図15のフローチャートに従い説明する。
【0068】
符号化情報テーブルの更新処理が開始すると、ブロックカウンタi_blockを0にセットする(ステップS1501)。次いで、i_block番目のブロックのビットレートr_lossless_i_blockを算出して、Th_r1と比較する(ステップS1502)。もし、r_lossless_i_blockの方が大きければ、当該ブロックについては、画像全体の可逆符号化の符号量が閾値(Th_r1)を超過している原因であると考える。その上で、Th_r1を超える可逆符号化実施サブブロックの補間データを出力しないように、第1の実施形態と同様な方法で、サブブロック符号化情報テーブルを更新する(ステップS1503)。例えば、もし注目ブロックにおいてM−1番目のサブブロックの補間データを出力しない場合、図16のようになる。すなわち、M−1番目のサブブロックの圧縮フラグを“2”にし、その上で補間データサイズを削除するために、可逆符号kデータサイズを更新する(図示の場合「25」だけ減じる)。そして、補間データを削除するために、データのポインタを縮小画像ブロックのアドレスに更新する。ステップ1503の処理が終了すると、ブロックカウンタをインクリメントし(ステップS1504)。一方で、ステップS1502でr_lossless_i_blockがTh_r1より小さい場合、当該ブロックについては、画像全体の可逆符号化の符号量が閾値(Th_r1)を超過する原因ではない、と考える。そして、処理をステップS1504へ進める。ステップS1504が終わると、ステップS1505へ進み、ブロックカウンタとブロック数を比較する(ステップS1505)。もし、ブロックカウンタの値がブロック数より小さい場合(ステップS1505でYes)、処理をステップS1502へ戻す。一方で、ブロックカウンタの値がブロック数と同じである場合(ステップS1505でNo)、ステップS1301の処理を終える。
【0069】
上記のようにしてステップS1301が終了すると、非可逆符号化の目標ビットレートを算出し(ステップS404)、画像全体の非可逆ブロックに対してレート制御を行う(ステップS405)。ここまでの処理が終了すると、符号化した結果の情報を画像符号化データ形成部803へ出力する(ステップS1302)。
【0070】
図10におけるステップS1006のレート制御処理が終了すると、画像符号化データ形成部803において符号列の形成を行う(ステップS1007)。このステップでは、図18に示したとおり、画像符号化データの先頭に配置するヘッダの情報を生成する。ヘッダには、画像の縦横サイズ,ブロックのサイズ,各ブロックの符号長、各サブブロックの圧縮フラグ,符号長等がまとめられる。他には、非可逆符号化を復号する上で必要となる情報もまとめられる。次いで、各ブロックの符号列がラスタスキャン順に並べられる。そして、各ブロックの符号列としては、最初に可逆符号化実施サブブロックの符号列が並べられ、それに続いて、非可逆符号化対象イメージの符号列が並べられる。ここで、可逆符号化実施サブブロックの符号列と、非可逆符号化対象イメージの符号列の2つを並べることを述べたが、どちらか一方しかない場合は、該当符号列のみが並べられることになる。例えば、注目ブロックにおいて、可逆符号化実施サブブロックが存在しない場合、非可逆符号化対象イメージの符号列のみが並べられる。また、可逆符号化実施サブブロックの符号列については、ラスタスキャン順に非可逆符号化が実施されたサブブロックの符号列が並ぶ。ここで、並べられる符号列は、可逆符号化が実施されたサブブロックの符号列のみである。例えば、番号0、3のサブブロックのみに対して可逆符号化が実施されたのであれば、これらのサブブロックの符号列のみが並べられる。さらに、各サブブロックの符号列においては、補間データの符号列、縮小画像の符号列が順に並ぶ。なお、補間データが削除されたサブブロックについては、縮小画像の符号列のみが並べられる。例えば、番号0、3のサブブロックに対して可逆符号化が実施され、番号0については補間データの削除が行われたとする。その場合には、番号0については縮小画像の符号列のみが並べられ、番号3については、補間データと縮小画像の符号列が並べられることになる。
【0071】
これらの処理により、画像符号化データの形成が終了すると、画像符号化処理は完了する。
【0072】
[その他の実施形態]
補間データの削除方法として、第1,2の実施形態において、いくつか示したが、本発明の範疇に入る手法はそれらだけではない。その他として、第2の実施形態では選択的に補間データを削除する方法を説明したが、補間データに対して予め、優先順位をつけておく。その上で、優先順位に従って、削除すべきデータを決定する方法でもよい。なお、優先順位のつけ方としては、各補間データの符号量と、補間データを復号することにより得られる画質向上の比率などが考えられる。
【0073】
実施形態においては、可逆符号化方式の階層数として2段階の方法を示したが、これに限らない。例えば、縮小画像に対して、さらに補間データ(補間データ1)と縮小画像を生成して、補間データ1、補間データ2、縮小画像の3段階構成にしてもよい。その際、削除が許されない最低限の画質を保証するデータとして、縮小画像のみを設定してもよい。また、途中の解像度を生成するために必要な、縮小画像と補間データ2を削除不可と設定してもよい。また、階層数を3段階以上にした場合、基本階層は複数階層から構成される場合もあれば、1階層から構成されることもある。他方、付加的階層についても、複数階層から構成される場合もあれば、1階層から構成されることもある。
【0074】
文字,線画等の領域における符号列における階層のデータは、補間データと縮小画像の組に限られることはない。あくまで、基本階層と付加的階層の関係を持つことが可能な階層構造であればよい。一例として、注目ブロック内の全画素の上位ビット群(例えば上位3ビット)を基本階層として、下位ビット群(例えば下位5ビット)を付加的階層とする。さらにその上で、上位ビット群には予測符号化等の符号化方式を適用する方法がある。
【0075】
文字,線画等の領域における縮小画像の可逆符号化方式として、JPEG−LSを使うものとして説明したが、これに限られることはない。例えば、JPEG Spatial方式、ラン・レングス符号化方式、PNGなどの、予測符号化方式でも構わない。さらには、実施形態として、文字,線画等の領域における高効率な符号化性能を得るために、予測符号化方式を用いる方式を示した。しかし、本発明は予測符号化方式に限られることはなく、LZ77,ZIP等の辞書型符号化方式を用いてもよい。
【0076】
写真領域の符号化処理として、JPEG2000を用いる方法を示したが、これに限られることはなく、レート制御を行える符号化方式であれば、本発明の範疇となる。
【0077】
実施形態においては、写真領域の符号列をレート制御するために、写真領域の符号化方式として、無数の階層数を持つことができるJPEG2000を用いた。しかし、目標符号量未満の画像符号化データを出力する画像処理装置を想定するのであれば、階層数は無数でなくてもよい。例えば、写真領域中のブロックに対して、離散ウェーブレット変換やDCT等の周波数変換を行い、全係数をビットプレーン分割して、各ビットプレーンを階層とみなす。つまり、この方法であれば階層数はビットプレーンの枚数となる。その上で、各階層を単位としてエントロピー符号化する。そして、符号列がこのような階層を取る場合に、写真領域としての目標符号量以下の符号列を生成するためには、LSBのビットプレーンを削除し、残っている符号量を算出する。もし、当該符号量が目標符号量以下でなければ、1つ上位にあるビットプレーンを削除して、残っている符号量を算出し、目標符号量との比較を行う。この処理を繰り返すことで、目標符号量以下の写真領域の符号列を生成する。なお、文字,線画等の領域に適用する符号化方式は多くの階層数を持たせることは難しく、写真領域の符号量調整で、画像全体の目標符号量以下にさせる必要がある。したがって、非可逆符号化方式の階層数をN1段階、可逆符号化方式の階層数をN2段階とした場合、N1>N2という関係が成り立つ。
【0078】
実施形態においては、属性判定部を設けて、注目するブロックもしくはサブブロック(符号化処理対象矩形)の属性判定を行い、符号化方式を選択する方法を示したが、属性判定を設けない方法でもよい。その場合には、いったん全ての符号化処理対象矩形を可逆符号化部に入力し、可逆符号化を実施する。そして、ブロック平均符号量もしくはサブブロック平均符号量を超える符号化処理対象矩形については、全て非可逆符号化を実施する。こうすることで、写真領域の符号化対象矩形は非可逆符号化が適用される。なぜなら、写真領域については、可逆符号化を実施した際の圧縮率は1/2(=12bpp)程度であり、実用的なビットレート(例えば2bpp以下)では、ブロック,サブブロック平均符号量を超えてしまうからである。
【0079】
また、実施形態ではブロックのサイズとして32×32画素や128×128画素を例にしたが、可逆、非可逆符号化の双方が支障なく符号化できる程度の複数画素を内包するブロックであれば良いので、上記実施形態に限定されるものではない。
【0080】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。

【特許請求の範囲】
【請求項1】
画像を符号化して符号化データを生成し、目標とするビットレートに従い、生成された符号化データ中の一部を削除し出力するレート制御手段を有する画像符号化装置であって、
複数画素で構成されるブロックを非可逆符号化し、基礎となる画質の画像から段階的に高精細な画質の画像を復号するためのN1段階の階層データ構造を持つ符号化データを生成する第1の符号化手段と、
前記ブロックを予測演算を用いて可逆符号化し、基礎となる画質の画像から段階的に高精細な画質の画像を復号するためのN2(N1>N2)段階の階層データ構造を持つ符号化データを生成する第2の符号化手段と、
符号化対象画像から前記ブロックを単位に入力する入力手段と、
入力した着目ブロックを解析することで、当該着目ブロックを前記第1の符号化手段、前記第2の符号化手段のいずれで符号化すべきかを判定する判定手段と、
該判定手段により、前記着目ブロックを前記第2の符号化手段で符号化すべきとして判定された場合、前記基礎となる画質の階層から予め設定された許容画質の階層までの符号化データを前記第2の符号化手段により生成させ、生成された符号量が予め設定された目標符号量を超えるか否かを判定し、超えると判定した場合には前記着目ブロックを前記第1の符号化手段で符号化すべきブロックとして変更し、超えないと判定された場合には、残りの階層の符号化データを前記第2の符号化手段により生成させる第1の制御手段と、
前記判定手段、或いは、前記第1の制御手段によって前記第1の符号化手段で符号化すべきと判定されたブロックに対して前記第1の符号化手段により符号化させ、符号化データを生成させる第2の制御手段と
を有することを特徴とする画像符号化装置。
【請求項2】
前記判定手段は、前記着目ブロックが文字、線画のブロックであるか否かを判定する手段であり、前記着目ブロックが文字、線画のブロックである場合に当該着目ブロックを前記第2の符号化手段で符号化すべきと判定し、前記着目ブロックが文字、線画のブロックではない場合に当該着目ブロックを第1の符号化手段で符号化すべきと判定することを特徴とする請求項1に記載の画像符号化装置。
【請求項3】
前記第1の符号化手段は周波数変換を用いた非可逆符号化手段であって、前記第2の符号化手段は予測演算を用いた可逆符号化手段であることを特徴とする請求項1又は2に記載の画像符号化装置。
【請求項4】
前記判定手段は、
前記着目ブロックを、2×2画素で構成される複数のピースに分割し、
各ピースに内包される画素の色数を判別し、
色数が1又は2のピース数が、過半数を占めれば前記着目ブロックは文字、線画のブロックと判定し、過半数を占めなければ前記着目ブロックは文字、線画のブロックではないと判定する
ことを特徴とする請求項2に記載の画像符号化装置。
【請求項5】
前記レート制御手段は、
前記第1の制御手段の制御の下で前記第2の符号化手段により符号化すべきとして判定された全ブロックの符号化データ中の、前記基礎となる画質の階層から予め設定された許容画質の階層までの符号化データの総符号量に対する1画素当たりのビットレートをr_lossless、
予め設定された閾値をTh_r1、
予め設定された1画素当たりの目標ビットレートをTR、
非可逆符号化データの目標ビットレートをTR_lossyと定義したときに、
(1) r_lossless>Th_r1の関係を満たす場合:
前記第1の制御手段で生成された符号化データ中、前記基礎となる画質の階層から予め設定された許容画質の階層までの符号化データのみを残し、
前記第1の制御手段で生成された符号化データ中の残った符号化データの総符号量をsum_M_reduced_imgとしたとき、
TR_lossy=(符号化対象の画像の全画素 * TR - sum_M_reduced_img)/(非可逆符号化対象となった全ブロックの画素数)
として前記非可逆符号化データのビットレートTR_lossyを算出して、非可逆符号化データのビットレートの制御を行い、
(2) r_lossless≦Th_r1の関係を満たす場合:
前記第1の制御手段で生成された符号化データの総符号量をsum_M_losslessとしたとき、
TR_lossy=(符号化対象の画像の全画素 * TR - sum_M_lossless)/(非可逆符号化対象となった全ブロックの画素数)
として前記非可逆符号化データのビットレートTR_lossyを算出して、非可逆符号化データのビットレートの制御を行う
ことを特徴とする請求項1乃至4のいずれか1項に記載の画像符号化装置。
【請求項6】
前記ブロックを第1のブロック、前記第1のブロックの水平、垂直とも整数倍のサイズを持つ矩形領域を第2のブロックとしたとき、前記第1の符号化手段は、前記第2のブロックの画像を単位に符号化し、
更に、前記判定手段が、着目している第1のブロックを前記第1の符号化手段で符号化すべきとした場合、或いは、前記第1の制御手段にて前記着目している第1のブロックを前記第1の符号化手段で符号化すべきと判定された場合、当該着目している第1のブロックの画像を前記第2のブロックの中に配置し、
前記第2のブロックに中において、前記第1の制御手段でによって全ての階層を前記第2の符号化手段で符号化すべきと判定されたブロック内の画素値を、前記第2の符号化手段で符号化すべきと判定された画素値の平均値で置き換えることで、前記第2のブロックの画像を生成する生成手段とを備え、
前記第1の符号化手段は、前記生成手段で生成された第2のブロックの画像を符号化し、
前記レート制御手段は、前記第2の符号化手段で符号化して得られた各第1のブロックの符号化データのうち、前記目標ビットレートを超えると判定された第1のブロックの符号化データの一部を削除することでビットレートを制御する
ことを特徴とする請求項1乃至5のいずれか1項に記載の画像符号化装置。
【請求項7】
コンピュータに読み込ませ実行させることで、前記コンピュータを、請求項1乃至6のいずれか1項に記載の画像符号化装置が有する各手段として機能させるためのコンピュータプログラム。
【請求項8】
請求項7に記載のコンピュータプログラムを格納したコンピュータ可読記憶媒体。
【請求項9】
画像を符号化して符号化データを生成し、目標とするビットレートに従い、生成された符号化データ中の一部を削除し出力するレート制御手段を有する画像符号化装置の制御方法であって、
第1の符号化手段が、複数画素で構成されるブロックを非可逆符号化し、基礎となる画質の画像から段階的に高精細な画質の画像を復号するためのN1段階の階層データ構造を持つ符号化データを生成する第1の符号化工程と、
第2の符号化手段が、前記ブロックを予測演算を用いて可逆符号化し、基礎となる画質の画像から段階的に高精細な画質の画像を復号するためのN2(N1>N2)段階の階層データ構造を持つ符号化データを生成する第2の符号化工程と、
入力手段が、符号化対象画像から前記ブロックを単位に入力する入力工程と、
判定手段が、入力した着目ブロックを解析することで、当該着目ブロックを前記第1の符号化工程、前記第2の符号化工程のいずれで符号化すべきかを判定する判定工程と、
第1の制御手段が、
前記判定工程により、前記着目ブロックを前記第2の符号化工程で符号化すべきとして判定された場合、前記基礎となる画質の階層から予め設定された許容画質の階層までの符号化データを前記第2の符号化工程により生成させ、生成された符号量が予め設定された目標符号量を超えるか否かを判定し、超えると判定した場合には前記着目ブロックを前記第1の符号化工程で符号化すべきブロックとして変更し、超えないと判定された場合には、残りの階層の符号化データを前記第2の符号化工程により生成させる第1の制御工程と、
第2の制御手段が、
前記判定工程、或いは、前記第1の制御工程によって前記第1の符号化工程で符号化すべきと判定されたブロックに対して前記第1の符号化工程により符号化させ、符号化データを生成させる第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


【公開番号】特開2012−253443(P2012−253443A)
【公開日】平成24年12月20日(2012.12.20)
【国際特許分類】
【出願番号】特願2011−122595(P2011−122595)
【出願日】平成23年5月31日(2011.5.31)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】