説明

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

【課題】 符号化単位のブロックサイズに応じて、パレット化を行なうか否かの閾値を決定することで、符号化効率を更に向上させる。
【解決手段】 ブロック化部200は、設定されたブロックサイズを単位に画像データを入力し、バッファメモリ201に格納する。ヒストグラム作成部202は、1ブロック分の画像データの色のヒストグラムを作成する。判定部203は、設定されたブロックサイズから閾値を決定し、作成されたヒストグラムに出現する色数と閾値とを比較し、比較結果を置換部204に出力する。また、判定部203は、色数が閾値以下の場合、ブロック内に出現する各色についてパレット番号を割り当た変換テーブルを作成し、置換部204に設定する。置換部204は、バッファメモリから1ブロック分に画像データを読込み、符号化部205に出力する。但し、判定部203から変換テーブルが設定されてる場合には、パレット変換し、その結果を画素データとして符号化部205に出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像データを符号化する技術に関するものである。
【背景技術】
【0002】
従来、静止画像の非可逆圧縮方式には、離散コサイン変換を利用したJPEG方式や、Wavelet変換を利用した方式が多く使われている。また可逆圧縮方式としては、Runlength方式、予測符号化を使う方式などが広く知られている。
【0003】
また、可逆圧縮方式として、Pakcbitsや国際標準化方式であるJPEG−LS、JPEG2000符号化方式などが用いられてきた。予測符号化を用いた可逆符号化方式において、符号化効率をあげるためには、予測精度をあげることである。例えば、予測をするために参照する範囲を広くするや、出現した頻度を記録することによって、予測精度を高めて符号化効率をあげることが出来る。
【0004】
さらに、予測誤差を小さくする方法として、出現画素値がまばらな画像に対して、出現画素値をまとめて、予測誤差を抑えようとする方式が提案されている(例えば、特許文献1)。
【特許文献1】特開2005−348390公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
この特許文献1では、出現画素をまとめるための適用レベル数を可変にする事が可能になっているが、この適用レベル数によっては、符号化効率が悪くなることもあり、未だ改善の余地がある。
【0006】
本発明はかかる問題点に鑑みなされたものであり、ブロックサイズに応じて、パレット化を行なうか否かの閾値を決定することで、符号化効率を更に向上させる技術を提供しようとするものである。
【課題を解決するための手段】
【0007】
この課題を解決するため、例えば、本発明の画像符号化装置は以下の構成を備える。すなわち、
画像データを符号化し、符号化データを生成する画像符号化装置であって、
符号化単位のブロックのサイズを設定する設定手段と、
設定されたブロックのサイズに応じて閾値を決定する決定手段と、
設定されたサイズのブロックを単位に、画像データを入力する入力手段と、
入力した着目ブロックの色のヒストグラムを作成するヒストグラム作成手段と、
作成されたヒストグラムから、着目ブロック内に出現する色数を算出し、前記決定手段で決定した閾値と前記色数とを比較し、前記色数が前記閾値以下であるかを判定する比較手段と、
前記比較手段で前記色数が前記閾値以下であると判定された場合、前記着目ブロック内に出現する各色にパレット番号を割り当て、着目ブロック内の各画素データをパレット番号に変換する変換手段と、
前記比較手段で前記色数が前記閾値以下と判定された場合、前記変換手段で変換されたパレット番号を画素データとして可逆符号化し、パレット変換したことを示す情報と共に、符号化して得られた符号化データを出力し、
前記比較手段で前記色数が閾値よりも大きいと判定された場合、着目ブロックを構成する各画素データを可逆符号化し、非パレット変換を示す情報と共に、符号化して得られた符号化データを出力する符号化手段とを備える。
【発明の効果】
【0008】
本発明によれば、符号化単位のブロックサイズに応じて、パレット化を行なうか否かの閾値を決定することで、符号化効率を更に向上させることが可能になる。
【発明を実施するための最良の形態】
【0009】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
【0010】
なお、以下では、画像符号化技術を印刷装置に適用する例を説明するが、画像符号化装置単独でも構わないし、他の情報処理装置内に搭載されるものでも構わない。
【0011】
<第1の実施形態>
図2は、本実施形態によるシステム概略図である。図中、10は印刷装置であり、50は印刷データを出力するホストコンピュータである。印刷装置10は、印刷データの受信やレンダリングを行なうプリンタ制御部11、ハードディスク等の大容量の記憶装置105、及び、記録紙上に可視画像を印刷するプリンタエンジン部110を有する。プリンタ制御部11には、各種処理回路が含まれるが、その中には、CPU、及びCPUが実行するプログラム、及び、ワークエリアとして使用するメモリが含まれる。また、ホストコンピュータ50と印刷装置10は、ネットワークを介して接続されるものとするが、他のインタフェース(例えば、USB)でも構わず、その種類は問わない。また、プリンタエンジン部110は、本実施形態では、電子写真方式を採用するものとして説明するが、インクジェット、感熱記録等でも良く、その種類も問わない。また、ホストコンピュータ50は、例えばパーソナルコンピュータである。ホストコンピュータ50上では、例えば文書編集アプリケーションプログラムを実行されるものとする。ユーザがホストコンピュータ50のキーボードやマウス等を用いて印刷指示を行なったとする。このとき、ホストコンピュータ50のOS(オペレーティングシステム)にインストールされたプリンタドライバがアプリケーションから印刷対象のデータを入力し、印刷装置10が解釈可能なページ記述言語(PDL)で記述した印刷データを生成する。そして、OSを介して、その印刷データが印刷装置10に送信されてくる。印刷装置10のプリンタ制御部11は、ホストコンピュータ50から受信した印刷データを解釈し、ページ単位にレンダリングし記憶装置105に格納しつつ、記憶装置105に格納されたレンダリング結果をプリンタエンジン部110に出力する。また、印刷装置10は、他のホストコンピュータからも印刷データを受信可能である。
【0012】
図1は、主として、実施形態における印刷装置10のプリンタ制御部11のブロック構成図である。
【0013】
図示において、100はホストコンピュータ50から受信した印刷データ(PDLデータ)を解釈し、ビットマップイメージを生成するレンダリング部である。このレンダリング部100内には、1ページ分の描画メモリと、各画素毎の属性を格納する属性フラグメモリが内蔵されている。そして、PDLデータで指定された文字コードについては、指定されたフォント種類に従って、不図示のフォントメモリからデータを読出し、文字パターンを生成し、描画メモリへ展開する。また、PDLデータで指定された線画や各種図形の描画処理も行なう。更に、PDLデータに自然画等の画像データが含まれる場合には、その画像データの展開処理も行なう。また、レンダリング部100は、描画メモリへのレンダリング処理を行なう際、該当する画素位置毎にその属性フラグ(文字線画、自然画、CGを識別する情報、有彩色/無彩色を示す情報、網点であるか否かを示す情報の属性)を属性フラグメモリに格納する。この属性フラグメモリは、描画メモリ中の1画素に対して、1バイト(8ビット)単位に属性フラグを記憶管理する。そして、8ビット中の何ビットかを用いて、上記の各属性を表わす。
【0014】
101は圧縮処理用のバッファメモリ、102は属性フラグ符号化部、103はカラー画像符号化部、104は書き込み用のバッファメモリ、105はハードディスク装置等の大容量の記憶装置である。106は復号処理用のバッファ、107は属性フラグ復号部、108はカラー画像復号部、109は復号された属性フラグ、画像データを展開するためのバッファメモリである。また110は画像処理部であり、復号された画像データを属性データを参照した色変換(記録色成分CMYKへの変換)、階調補正を行ない、得られたデータをプリンタエンジン110に出力する。
【0015】
上記構成において、印刷データ(PDLデータ)を不図示のインタフェースを介して受信したとする。この場合、レンダリング部100はその印刷データを解釈し、ページ単位に画像データの描画(レンダリング)すると共に、その際に属性フラグメモリに該当する画素位置の属性フラグを格納する。なお、レンダリングする際には、各画素はRGBの色空間であって、1成分は8ビットであるものとする。この色空間、ビット数は一例であり、他の色空間でも構わない。
【0016】
1ページ分の画像データ及び属性フラグの格納が完了すると、レンダリング部100は、バッファメモリ101にそのデータを出力する共に、次ページのレンダリング処理を開始する。
【0017】
画像符号化処理部103はバッファメモリに格納された画像データを、属性フラグ符号化部102はバッファメモリに格納された属性フラグをそれぞれ符号化する。生成された符号化画像データ及び符号化属性フラグは、バッファメモリ104を介して、記憶装置105にそれぞれファイルとして格納される。
【0018】
一方、属性フラグ復号部107、及び、画像復号処理部108は、プリンタエンジン部111の印刷出力処理に同期して、記憶装置105に格納された符号化画像データファイル、符号化属性フラグファイルをバッファメモリ106に読込む。そして、それぞれが、復号処理を行ない、復号結果をバッファメモリ109に格納する。画像処理部110は、復号された属性フラグを参照し、復号された画像データ(RGBデータ)から、属性に応じたYMCK色空間への変換、補正処理を行ない、プリンタエンジン部111の印刷処理に同期して出力する処理を行なう。
【0019】
上記の結果、画像及び属性フラグの符号化処理と、その復号処理は、記憶装置105を介在させることで、互いに非同期にできる。従って、レンダリング部100、画像符号化部103、属性フラグ符号化部102は、プリンタエンジン部111の印刷速度とは無関係に、各ページの画像及び属性フラグを符号化できる。この結果、ホストコンピュータ50は、本実施形態の印刷装置10への印刷データの出力処理から素早く解放される。また、本印刷装置は、不図示の他のコンピュータからの印刷データの受信に対処することも可能となる。
【0020】
次に、上記構成を備えた本実施形態の印刷装置10における制御部150の符号化処理を、図3のフローチャートを参照して以下に説明する。
【0021】
ホストコンピュータ50より印刷ジョブ(PDLデータ)を受信すると、まず、ステップS11にて、レンダリング部100は、PDL解析を行なう。そして、ステップS12にて、レンダリング部100は、PDLに基づいてレンダリングすることによりビットマップイメージを生成する。また、レンダリング部100は、ステップS13にて、PDL解析時に各画素毎の属性情報を得て属性フラグを生成し、属性メモリに格納する。なお、レンダリング処理と、属性フラグの生成及び格納は、並列的に行われる。
【0022】
このように、レンダリング部100は、ホストコンピュータ50から受信したPDLで記述された印刷データを解析し、その中に含まれるPDLコマンドを解釈してプリントのための画像(ビットマップイメージ)を生成する。このとき、PDLコマンドにおけるコマンドの種別を示す情報を参照して、各画素の属性を判定し、それを属性フラグとして属性フラグメモリに格納する。
【0023】
1ページ分のレンダリングが完了すると、レンダリングされたビットマップイメージは画像符号化処理部103によって可逆圧縮符号化(本実施形態では、JPEG―LSを採用した)に従って符号化が行われる(ステップS14)。一方、属性フラグデータは符号化器102によって可逆圧縮される(ステップS15)。属性フラグデータの符号化としては、ランレングス符号化を用いるものとするが、他の符号化技術(例えば予測符号化、パックビッツ符号化等)でも構わない。そして、それぞれで生成された符号化データは、バッファ104を介して、記憶装置105に格納される(ステップS16)。
【0024】
上記処理における、属性フラグ符号化部102については、1ページ分の属性フラグをラスタースキャンし、ランレングする符号化するだけであるので、その説明については省略する。以下では、実施形態における画像符号化処理部103について更に詳細に説明する。
【0025】
図4は、実施形態における画像符号化処理部103の詳細ブロック構成図を示している。
【0026】
画像符号化装置部103は、図示の如く、ブロック化部200、バッファメモリ201、ヒストグラム作成部202、判定部203、置換部204、及び、符号化部205とを備える。以下、同図に従って、実施形態の画像符号化処理部103の処理内容を説明する。
【0027】
制御部150は、操作部151からの指示、もしくは印刷データ中に格納された制御情報に従い、画像データの符号化単位であるブロックサイズ(m×n画素のm、n)を特定する制御信号を生成する。そして、制御部150は生成した制御信号を、1ページの符号化処理に先立って、画像符号化処理部103に出力する。なお、操作部151から指示されたブロックサイズと、印刷データに含まれる制御情報で特定されるブロックサイズが異なる場合もありえる。制御部150は、印刷データ中に、ブロックサイズを指定するコマンドが含まれていれば、それに従って符号化単位のブロックサイズを決定する。また、印刷データ中にブロックサイズを指定するコマンドが存在しなかった場合には、操作部151から指示されたサイズを符号化単位のブロックサイズとして決定する。
【0028】
ブロック化部200は、バッファメモリ101(図1参照)から、制御部150からの上記制御信号に従ったサイズのブロック(m×n画素分)の画像データ(以下、ブロックデータという)を読込み、バッファ201に格納する。なお、ブロック化部200が読込むブロックの順序は、ブロックを単位とするラスタースキャン順とする。
【0029】
ヒストグラム作成部202は、バッファメモリ201に格納されたブロックデータのヒストグラム情報(色毎の出現頻度)を作成し、その作成されたヒストグラムの情報を判定部203に出力する。
【0030】
判定部203は、内部に閾値記憶部としてのルックアップテーブルを内蔵し、制御部150からの制御情報で示されるブロックサイズに基づき閾値Thをそのルックアップテーブルから読込む。また、判定部203は、ヒストグラム作成部202からのヒストグラム情報に基づき、着目ブロック内に出現する色の数Ncを算出する。そして、判定部203は、その算出した色数Ncと閾値Thとを比較し、色数Ncは閾値Th以下であるか否かを判定し、その判定結果に応じて以下の処理を行なう。
・色数Ncが閾値以下の場合;
判定部203は、置換部204、符号化部205に、置換処理を有効にする信号(色数≦閾値Thであることを示す信号でもある)を出力する。そして、判定部203は、着目ブロック内に出現する頻度の大きい順に色を並べ替える。そして、判定部203は、並べ替え後の各色データ(RGBの値)と、0、1、2、…、Nc−1のパレット番号を対にして、図5に示すように変換テーブル(以下、パレット変換テーブル)を作成し、置換部204及び符号化部205に出力する。
・色数Ncが閾値よりも大きい場合;
判定部203は、置換部204に対して置換処理を無効にする信号(色数>閾値Thを示す信号でもある)を出力する。
【0031】
置換部204は、制御部150からの制御信号で示されるブロックサイズ毎にバッファメモリ201からブロックデータを読込み、置換処理を行ない、符号化部205に出力する。より具体的には、次の通りである。
【0032】
判定部203からの信号が、置換処理無効を示す場合、置換部203は、バッファメモリ201に格納された着目ブロック内をラスタースキャンして各画素データを読込み、その読込んだ画素データをそのまま符号化部205に出力する。
【0033】
一方、判定部203からの信号が置換処理を有効を示す場合、置換部204は判定部203からのパレット変換テーブルを内部の書き込み可能なメモリにルックアップテーブルとして格納する。そして、置換部204は、バッファ201に格納された着目ブロックのラスタースキャンして各画素データを読込み、読込んだ画素データをルックアップテーブルを用いてパレット番号に変換する。また、置換部204は、その変換後のデータ(パレット番号)を、RGBのうちの1つの成分(実施形態ではR成分とする)のデータとして符号化部205に出力する。また、置換部204は、他の成分(G、B成分)用のバスにはダミーとして“0”を出力する。
【0034】
次に符号化部205について説明する。
【0035】
符号化部205は、1つの画像の符号化に先立ち、ファイルヘッダを生成し、出力する。このファイルヘッダには、符号化対象の画像データのサイズ(水平、垂直方向の方向画素数)、色空間の種別、各成分のビット数、ブロックのサイズを特定する情報等、復号処理に必要な情報が格納される。符号化部205は、ブロック単位に符号化する際には次の処理を行なう。
【0036】
符号化部205は、判定部203から置換処理無効を示す制御信号を受信した場合、置換無し(非パレット変換)を示す識別情報(例えば“0”)を格納したブロックヘッダを出力する。また、判定部203から置換処理有効を示す制御信号を受信した場合、置換色有り(パレット変換)を示す識別情報(例えば“1”)、及び、パレット変換テーブルを格納したブロックヘッダを生成し出力する。なお、ブロックヘッダに格納するパレット変換テーブルには、色数Ncと、各色成分値で構わない。理由は、各色に対するパレット番号が、0、1、…、Nc−1となっていることが約束されているためである。図10は、実施形態における符号化部205が生成する符号化データファイルの構造を示している。1つのブロックの符号化データは、図示の参照番号301、302のいずれかのタイプである。
【0037】
この後、符号化部205は、置換部204から出力されるラスタースキャン順の各画素データ(カラー画像データ)をJPEG−LS符号化方法に従って可逆符号化し、符号化データを生成する。そして、符号化部205は、生成した符号化データを、先に示したブロックヘッダに後続するデータとして出力する。
【0038】
図6は実施形態における符号化部205の詳細ブロック構成図である。符号化部205は、図示のように、コンテクスト生成部251、予測補佐生成部252、予測誤差符号化部253、ランレングス変換部254、ランレングス符号化部255、及び、セレクタ256を有する。
【0039】
先に説明したように、符号化部205はJPEG−LS符号化方法に従って、入力した画像データを可逆符号化する。JPEG−LSは、ブロック内をラスタースキャン中、図7に示すように、着目画素Xの近傍の既に符号化済み近傍画素Xa,Xb,Xc,Xdの色からコンテクスト値を算出する。そして、その算出したコンテクスト値に従い、予測符号化するか、ランレングス符号化するのかを決定する。なお、着目ブロックがブロックの先頭ライン上にあるとき、又は、着目画素位置がラインの左端、右端位置である場合、近傍画素Xa,Xb,Xc,Xdの全部、もしくは一部はブロック外の位置になってしまう。このようなブロック外の画素の各成分値は“0”であるものとして符号化処理を行なうものとする。なお、ここではブロック外の画素の成分値を“0”としているが、復号処理と同じにすればよいわけであるから、必ずしも“0”でなくても構わない。
【0040】
さて、図6に示すように、コンテクスト生成部251は、着目画素Xの近傍画素の画素データを参照するため、内部に2ライン分のメモリを有する。そして、コンテキスト生成部251は、着目画素Xの近傍画素Xa,Xb,Xc,Xdを内部メモリから読込み、着目画素Xにおけるコンテクス値を算出する。そして、そのコンテクスト値に基づき、コンテクスト生成部251は、着目画素Xをランレングする符号化すべきか、予測誤差符号化すべきかを判定し、入力した着目画素Xを予測誤差算出部252、ランレングス変換部254のいずれかに出力する。
【0041】
実施形態では、簡単なものとするため、近傍画素Xa=Xb=Xc=Xdを満たか否か、すなわち、近傍画素{Xa,Xb,Xc,Xd}で表わされる色数が“1”であるか否かを示す情報をコンテクスト値とする。
【0042】
近傍画素{Xa,Xb,Xc,Xd}で合わされる色数が“1”以外(2以上)である場合、コンテクスト生成部251は、着目画素Xを予測符号化するため、着目画素Xの各画素成分値を予測誤差算出部252に出力する。
【0043】
また、近傍画素{Xa,Xb,Xc,Xd}で合わされる色数が“1”である場合、着目画素Xがその直前の画素Xaと同色である確率が非常に高い。従って、コンテクスト生成部251は、着目画素Xからランレングス符号化を開始するため、着目画素Xの各画素成分値をランレング変換部254に出力する。
【0044】
なお、一旦、着目画素Xをランレングス変換部254に出力した場合、着目画素Xに後続して同じ画素が入力さてる限り、コンテクスト値の算出は行なわず、入力される画素データをランレングス変換部254に出力する。
【0045】
また、ランレングス符号化処理中、着目画素Xがその直前の画素Xaと非同一色となった場合、或いは、着目画素Xはブロック右端に到達した場合、コンテクスト生成部251はランが終端したと判定する。そして、ラン終端を示す信号をランレングス変換部254に通知し、着目画素Xのコンテクスト値の算出も行なう。
【0046】
予測誤差算出部252は、着目画素Xの近傍画素{Xa,Xb,Xc}から、着目画素の各成分の予測値を算出し、その各成分の予測値と、着目画素の各成分値との差を算出し、予測誤差符号化部253に出力する。実施形態では、簡単のため、近傍Xaの各成分値が着目画素の各成分値の予測値として用いるものとする。予測誤差符号化部253は、着目画素の各成分の予測誤差に対してハフマン符号化、もしくは、算術符号化等の手法を利用して符号語を生成し、セレクタ205に出力する。
【0047】
また、ランレングス変換部254は、コンテクスト生成部251から、近傍画素{Xa,Xb,Xc,Xd}で表わされる色数が“1”であることを示す信号を入力すると、ランの計数を開始する。そして、ランレングス変換部254は、ランをカウント中に、コンテクスト生成部251から、着目画素Xがその直前の画素Xaと非同一色となった、着目画素Xはブロック右端に到達したことを示す信号を受信した場合、ランの計数を終了する。そして、それまでカウントした値をランレングス符号化部255に出力する。ランレングス符号化部255は、ランレングス変換部254から入力したカウントした値に対応する符号語を生成し、セレクタ256に出力する。
【0048】
セレクタ256は、コンテクスト生成部251によって、着目画素についてランレングス符号化を中か、予測誤差符号化中かを示す信号を受信する。従って、セレクタ256は、その受信する信号に従い、予測誤差符号化部253、ランレングス符号化部255のいずれか一方からの符号化データを選択し、出力する。なお、予測誤差符号化部253は、1画素単位に符号化データを出力するのに対し、ランレングス符号化部255は1つのランがラン終端になって初めて符号化データを出力することになる。それ故、セレクタ256は各タイミングに応じて入力、出力の制御を行なうことになる。
【0049】
以上実施形態における符号化に係る構成とその処理を説明した。ここで、ブロック内に出現する色の数Ncが、そのブロックのサイズによって決まる閾値Th以下の場合にパレット化する理由を以下に説明する。
【0050】
1つのブロック内に出現する色の数Ncが閾値Th以下というのは、そのブロック内に出現する色が、比較的少なくいことを意味する。色数が少ない場合、各色の差が大きくなる確率が高い傾向にある。特に、CG(コンピュータグラフィックス)の場合に、ブロック内の色数は比較的少なく、この傾向が強い。
【0051】
説明を単純なものとするため、モノクロ画像(明度の濃淡画像)を例にして説明する。図8(a)は、ブロック内に出現する画素値が4種類{C1、C2、C3、C4)であり、それぞれの頻度がC1>C2>C0>C4の順番になっている例を示している。
【0052】
予測誤差符号化する場合、着目画素値(ここでは明度)と、その近傍の符号化済みの画素値(予測値)との差分を算出し、その差分に応じた符号語を生成する。一般に、差分が小さい確率が高いから、差分が小さい場合には短い符号語を生成し、差分値が大きくなるにしたがって長い符号語を生成している。
【0053】
しかしながら、図8(a)に示すような状態の場合、同じ画素値であれば差分値が“0”となるものの、異なる画素値の差分値は、無視できない程大きな値になってしまう。仮に、画素値C0、C1間の距離が“50”とするなら、差分が1乃至49までの符号語は未使用となり、高い符号化効率は望めない。
【0054】
そこで、実際に出現する各画素の値を、0で始めるシーケンシャルなパレット番号を割り当てる。この結果、図8(a)のヒストグラムを、図8(b)のヒストグラムに変換できる。このパレット番号を画素値と見立てれば、色C0、C1、C2、C3はパレット番号0、1、2、3に置き換えられる。従って、このパレット番号を用いれば、予測誤差の絶対値は最大でも“3”であることが約束され、高い符号化効率が期待できる。
【0055】
更に、本実施形態では、CGの場合、画素値C0、C1、C2、C3の画素がランダムに配置される確率が低く、C0→C1→C2→C3(又はその逆)の画素値を持つ領域が連続する確率が高いことを確かめた。換言すれば、予測誤差を算出する際、着目画素の画素値がC0である場合、その予測値がC0となる確率が一番高く、次いで、C1、C2、C3の順番になる。また、着目画素がC1である場合、予測値がC1なる確率が一番高く、その次に{C0、C2}、次いで、C3の順番になる。
【0056】
上記をまとめると、出現頻度順にパレット番号を割り当てると、予測誤差を小さくできる確率を更に高めることができることに他ならない。そこで、本実施形態では、図8(a)のようなヒストグラムが作成された場合、図8(b)ではなく、更にその頻度をキーにして色データを並べ替え、図8(c)のヒストグラムを作成する。そして、その並べ替え後の画素値にパレット番号を割り当てる。判定部203が、着目ブロック内に出現する頻度の大きい順に色を並べ替え、並べ替え後の各色データ(RGBの値)と、0、1、2、…、Nc−1のパレット番号を対にして、図5に示すようなパレット変換テーブルを作成したのは、上記理由によるものである。なお、図8(c)は頻度をキーにして降順に並べ替える例を示したが、昇順でも構わない。
【0057】
上記処理を行なうため、図3のステップS14の処理の詳細を示すと図11のようになる。
【0058】
先ず、制御部150は、ステップS21において、ブロックのサイズを決定する。この処理では、ステップS11(図3)のPDLデータの解析処理によって、印刷データ中にブロックサイズの指定があった場合には、その指定されたサイズに従う。また、印刷データ中にそのブロックサイズの指定がなかった場合には、操作部151で設定されたサイズに従う。また、ステップS21では、ブロックサイズによって、色数判定のための閾値を決定する処理も行なう。
【0059】
この後、ステップS22にて、画像符号化処理部103のブロック化部200は、決定したサイズのブロックデータを、バッファメモリ101から読込み、バッファメモリ201に格納する。ステップS223にて、ヒストグラム作成部202は、バッファメモリ201に格納されたブロックをスキャンし、ヒストグラムを作成し、作成したヒストグラムに関する情報を判定部203に出力する。
【0060】
ステップS24では、判定部203は、入力したヒストグラム情報に基づき、出現する色数を算出する。そして、判定部203は、ステップS25にて、算出した色数が、制御部150より設定された閾値以下であるか否かを判定する。算出した色数が、閾値よりも大きいと判断した場合には、判定部203は算出した色数が閾値よりも大きいことを示す制御信号を置換部204、及び、符号化部205に出力する。この結果、符号化部205は、ステップS26にて、パレット変換無しを示す識別情報を持つブロックヘッダを生成し、出力する。また、置換部204は、バッファ201内の階調画像データをそのまま符号化部205に出力することになる。従って、符号化部205は、ステップS30にて、入力した階調画像データをそのまま符号化し、生成された符号化データを出力する。
【0061】
一方、判定部203が、ステップS25にて、色数が閾値以下であると判定した場合、処理はステップS27に進む。このステップS27では、判定部203が、ヒストグラムの色を、頻度順に並べ替え、並べ替え後の色に対してパレット番号を符番し、パレット変換テーブルを作成する。そして、判定部203は算出した色数が閾値以下であることを示す信号、及び、生成されたパレット変換テーブルの情報を、置換部204、及び、符号化部205に出力する。
【0062】
符号化部205は、これらの情報を入力した場合、パレット変換を行なったことを
示す識別情報、及び、色数、各色の成分のデータを含むブロックヘッダを生成し、出力する(ステップS28)。
【0063】
また、置換部204は、バッファ201内の階調画像データを、パレット番号に置換し、その置換後のデータを符号化部205に出力する(ステップS29)。従って、符号化部205は、ステップS30にて、入力したパレット化したデータを符号化し、生成された符号化データを出力することになる。
【0064】
ステップS30の処理を終えると、ステップS31に進み、制御部150は、全ブロックの符号化が終了したのか否かを判定する。否の場合には、次のブロックの符号化を行なうため、ステップS22以降の処理を行なう。また、全ブロックの符号化処理が行なったと判定した場合、着目ページの符号化処理を終了する。
【0065】
以上、本実施形態における符号化処理について説明したが、次に復号処理について説明する。属性フラグ復号部107については説明するまでもないので、以下では画像復号処理部108について説明する。
【0066】
図9は画像復号処理部108のブロック構成図である。画像復号処理部は、ヘッダ解析部270、コンテクスト生成部271、予測誤差復号部272、ランレングス復号部273、セレクタ274、置換部275、及び、メモリ276を有する。
【0067】
メモリ276は、1ブロック中の少なくとも着目画素Xの近傍画素の復号結果を2ライン分格納する容量を有する。また、1ブロック分の復号開始時には、このメモリ276はゼロクリアされる。これは、ブロック外の画素値の各成分値を“0”とするためである。
【0068】
ヘッダ解析部270は、符号化ブロックデータのブロックヘッダの識別情報を解析し、注目ブロックがパレット番号に置換後に符号化されているか否かの判定、及び、パレット番号に変換されている場合にはその色の数と、画素値とを抽出する処理を行なう。そして、パレット番号の符号化データであると判定した場合、パレット番号の符号化データであることを示す制御信号を置換部275に出力する。また、ブロックヘッダに格納されている画素値とパレット番号(色の数によって幾つの画素値が存在するのかは容易にわかる)とを対にして、置換部275に出力する。また、着目ブロックが階調画像として符号化されていると判定した場合には、階調画像の符号化であることを示す制御信号を置換部275に出力する。この後、ヘッダ解析部270は、ブロックヘッダに後続する符号化データをコンテクスト生成部271に出力する。
【0069】
コンテクスト生成部271は、着目画素Xを復号する際、メモリ270を参照し、近傍画素Xa,Xb,Xc,Xdからコンテクスト値を算出する。そして、コンテクスト生成部271は、この算出結果に基づき、着目画素Xがランレング符号化されているのか、予測誤差符号化されているのかは判定する。実施形態では、4つの近傍画素で示される色数が2以上の場合には予測符号化、色数が1の場合にはランレングス符号化されていると判定する。着目画素が予測誤差符号化されていると判定した場合(近傍画素が2色以上の場合)、コンテクスト生成部271は符号化データを予測誤差復号部272に出力する。また、着目画素がランレングス符号化されていると判定した場合(近傍画素が1色の場合)、コンテクスト生成部271は符号化データをランレングス復号部273に出力する。また、コンテキスト生成部271は、符号化種別の判定結果を制御信号としてセレクタ275にも出力する。
【0070】
予測誤差復号部272は、符号化データから予測誤差に復号する。そして、予測誤差復号部272は、メモリ210を参照し、着目画素Xの予測値を算出し、その予測値に、復号した予測誤差を加算することで、着目画素Xの1つの成分値を復号し、セレクタ274に出力する。そして、この処理を残りの2成分についても同様に行なうことで、1画素分の復号が完了する。
【0071】
また、ランレングス復号部273は、ランを復号し、そのランをセレクタ275に出力する。
【0072】
セレクタ275は、着目画素が予測誤差符号化されていることを示す制御信号を入力した場合には、予測誤差復号部272からの復号結果を置換部275に出力すると共に、メモリ276に格納する。また、セレクタ275は、着目画素がランレングス符号化されていることを示す制御信号を入力した場合には、ランレングス復号部273から入力したランの直前の画素の値を、ランで示される個数分だけ、置換部275、及び、メモリ276に出力する。
【0073】
置換部275は、ヘッダ解析部270から、注目ブロックが階調画像データのまま符号化されていることを示す制御信号を入力した場合には、セレクタ274からの画素値をそのままバッファメモリ109に出力する。
【0074】
一方、ヘッダ解析部270から、注目ブロックがパレット番号に変換した後に符号化されていることを示す制御信号と、パレット番号と画素値とを入力したとする。この場合、置換部275は、セレクタ274からの画素値のR成分のみを着目し、そのR成分の値がパレット番号であるものとし、該当する画素値で置換し、出力する。
【0075】
以上説明したように本実施形態によれば、画像をブロック単位に符号化する際、そのブロック中に出現する色の数に応じて、画像データをパレット番号に変換して符号化するか否かを切り替えることで、高い圧縮率で可逆符号化することが可能になる。
【0076】
<第2の実施形態>
上記実施形態では、パレット化するか否かの閾値をブロックサイズによって決定した。パレット化して符号化効率の上がる画像は、文字線画及びコンピュータグラフィクスである。そこで、ブロックサイズに加え、更に、ブロック内の各画素の属性フラグを参照して、パレット化するか否かを決定するようにしても良い。
【0077】
1つの属性フラグは1つの画素に対して生成されるものである。従って、ブロックのサイズがm×nの場合、属性フラグの個数もm×n個である。そこで、文字線画の属性フラグ+CGの属性フラグ(非自然画の属性を持つ画素数)の個数をMとしたとき、その比率Mrを次式によって算出する。
Mr=100×M/(n×m)
そして、Mrが予め設定された閾値Th1を以上の場合、着目ブロックをパレットするものとして決定する。
【0078】
図12は、本第2の実施形態における画像符号化処理部103のブロック構成図である。図4と異なる点は、ブロック化部200は、制御部150からの制御信号によって決定されたサイズの画像データと、そのサイズ分の属性フラグデータをバッファメモリ101から入力し、バッファメモリ201に格納する点である。また、図4の構成に、比率算出部206を設けた点、及び、判定部203の処理内容が変更された点も異なる。
【0079】
比率算出部206は、バッファメモリ201に格納された1ブロック分の属性フラグデータを参照し、文字線画、又は、コンピュータグラフィックスの属性を持つ画素数Mをカウントする。そして、制御部150からの制御信号で特定されたブロックサイズ(m×n)に対するMの比率Mrを算出し、その結果を判定部203に出力する。
【0080】
判定部203は、ブロックサイズに従って閾値Th1を決定する。そして、算出した比率が閾値以上であるか否か、すなわち、Mr≧Th1を満たすか否かを判定し、その判定結果を置換部204、符号化部205に出力する。そして、特に、Mr≧Th1の場合、着目ブロックの各画素データをパレット変換するため、ヒストグラムを作成し、パレット変換テーブルを作成する。そして、作成したパレット変換テーブルを置換部204、符号化部205に出力する。また、算出した比率が閾値未満の場合には、パレット変換は行なわない。
【0081】
この後の処理は、第1の実施形態と同様である。なお、符号化データのデータ構造については特に変更はない。また、復号処理は第1の実施形態と同じで良い。
【0082】
以上説明したように本第2の実施形態によっても、第1の実施形態と同様の作用効果を奏することが可能になる。
【0083】
<第3の実施形態>
第1、第2の実施形態では、置換部204がパレット変換を実行した際、そのパレット番号の情報を転送するバスを1色成分(実施形態ではR成分)を用い、他の成分(実施形態ではG、B成分)のバスには“0”をであるものとして符号化した。パレット変換した場合、G、B成分は0であるので、G、B成分の符号化データは効率の良いライレングス符号化されることになるが、それでも、G、Bの各成分はライン単位に符号化データが生成されることに変わりはない。そこで、パレット変換する場合、1つの成分しか利用しないわけであるから、そのパレット番号の符号化データのみを出力し、他の2つの成分の符号化データは出力しないようにしても構わない。このようにすると、更に圧縮率を高めることが可能になる。
【0084】
また、上記実施形態では、印刷装置に適用する例を示した。印刷装置であるため、符号化処理を行なう構成と、復号処理を行なう構成が1つの装置内に存在することになる。しかしながら、それぞれ単独の装置に適用しても構わない。例えば、パーソナルコンピュータ等の情報処理装置で画像を符号化し、他の情報処理に装置にそれを転送し、そこで復号する場合にも適用できよう。また、パーソナルコンピュータ等の情報処理装置の場合、当然、上記各処理部に相当する部分を、コンピュータプログラムの関数やサブルーチンで機能させ、各バッファはRAMに確保して利用することになる。従って本発明はコンピュータプログラムをもその範疇とする。更に、通常、コンピュータプログラムはCD−ROM等のコンピュータ可読記憶媒体に格納されており、それを装置の読取部(CD−ROMドライブ等)にセットし、システムにコピーもしくはインストールすることで実行可能になる。従って、本発明はかかるコンピュータ可読記憶媒体をもその範疇とすることも明らかである。
【0085】
また、実施形態では、画像データの符号化処理に、JPEG−LSを用いる例を説明したが、予測誤差符号化のみを利用しても構わないので、必ずしもJPEG−LSを必須とはしない。
【図面の簡単な説明】
【0086】
【図1】実施形態におけるプリンタ制御部のブロック構成図である。
【図2】実施形態における印刷システムのブロック構成図である。
【図3】実施形態における画像符号化処理のメインルーチンを示すフローチャートである。
【図4】第1の実施形態の画像符号化処理部のブロック構成図である。
【図5】判定部が生成するパレット変換テーブルの例を示す図である。
【図6】図4の符号化部のブロック構成図である。
【図7】着目画素Xとのその近傍画素との相対位置関係を示す図である。
【図8】ヒストグラムからパレットへの変換処理を説明するための図である。
【図9】実施形態における画像復号処理部のブロック構成図である。
【図10】実施形態の画像符号化処理部が生成する符号化画像データのファイルの構造を示す図である。
【図11】図3のステップS14の詳細を示すフローチャートである。
【図12】第2の実施形態の画像符号化処理部のブロック構成図である。

【特許請求の範囲】
【請求項1】
画像データを符号化し、符号化データを生成する画像符号化装置であって、
符号化単位のブロックのサイズを設定する設定手段と、
設定されたブロックのサイズに応じて閾値を決定する決定手段と、
設定されたサイズのブロックを単位に、画像データを入力する入力手段と、
入力した着目ブロックの色のヒストグラムを作成するヒストグラム作成手段と、
作成されたヒストグラムから、着目ブロック内に出現する色数を算出し、前記決定手段で決定した閾値と前記色数とを比較し、前記色数が前記閾値以下であるかを判定する比較手段と、
前記比較手段で前記色数が前記閾値以下であると判定された場合、前記着目ブロック内に出現する各色にパレット番号を割り当て、着目ブロック内の各画素データをパレット番号に変換する変換手段と、
前記比較手段で前記色数が前記閾値以下と判定された場合、前記変換手段で変換されたパレット番号を画素データとして可逆符号化し、パレット変換したことを示す情報と共に、符号化して得られた符号化データを出力し、
前記比較手段で前記色数が閾値よりも大きいと判定された場合、着目ブロックを構成する各画素データを可逆符号化し、非パレット変換を示す情報と共に、符号化して得られた符号化データを出力する符号化手段と
を備えることを特徴とする画像符号化装置。
【請求項2】
前記符号化手段は、
前記比較手段で前記色数が前記閾値以下であると判定された場合、前記パレット変換したことを示す情報と、前記着目ブロック内に出現する色数、及び、各パレット番号と画素データとの対応を示すテーブルとを、ブロックヘッダに格納し、前記符号化データを前記ブロックヘッダに後続して格納することを特徴とする請求項1に記載の画像符号化装置。
【請求項3】
更に、前記ヒストグラム作成手段で作成されたヒストグラムを、頻度順に並べ替える並べ替え手段を備え、
前記変換手段は、前記並べ替え手段による並べ替え後の順番に従って、各色にパレット番号を割り当てて、パレット変換を行なうことを特徴とする請求項1又は2に記載の画像符号化装置。
【請求項4】
更に、ページ記述言語で記述された印刷データを解釈し、1ページ分の画像データを生成する生成手段を備え、
前記入力手段は、前記生成手段で生成された1ページ分の画像データから、前記ブロック単位の画像データを入力することを特徴とする請求項1乃至3のいずれか1項に記載の画像符号化装置。
【請求項5】
画像データを符号化し、符号化データを生成する画像符号化装置の制御方法であって、
符号化単位のブロックのサイズを設定する設定工程と、
設定された前記ブロックのサイズに応じて閾値を決定する決定工程と、
設定されたサイズのブロックを単位に、画像データを入力する入力工程と、
入力した着目ブロックの色のヒストグラムを作成するヒストグラム作成工程と、
作成されたヒストグラムから、着目ブロック内に出現する色数を算出し、前記決定工程で決定した閾値と前記色数とを比較し、前記色数が前記閾値以下であるかを判定する比較工程と、
前記比較工程で前記色数が前記閾値以下であると判定した場合、前記着目ブロック内に出現する各色にパレット番号を割り当て、着目ブロック内の各画素データをパレット番号に変換する変換工程と、
前記比較工程で前記色数が前記閾値以下と判定された場合、前記変換工程で変換されたパレット番号を画素データとして可逆符号化し、パレット変換したことを示す情報と共に、符号化して得られた符号化データを出力し、
前記比較工程で前記色数が閾値よりも大きいと判定された場合、着目ブロックを構成する各画素データを可逆符号化し、非パレット変換を示す情報と共に、符号化して得られた符号化データを出力する符号化工程と
を備えることを特徴とする画像符号化装置の制御方法。
【請求項6】
コンピュータが読込み実行することで、前記コンピュータに請求項1乃至4のいずれか1項に記載の画像符号化装置として機能させることを特徴とするコンピュータプログラム。
【請求項7】
画像データを符号化し、符号化データを生成する画像符号化装置であって、
符号化単位のブロックのサイズを設定する設定手段と、
設定された前記ブロックのサイズに応じて閾値を決定する決定手段と、
設定されたサイズのブロックを単位に、画像データと、当該画像データを構成する各画素が自然画と非自然画のいずれに属するかを示す属性データとを入力する入力手段と、
前記ブロック内の画素数に対する、前記非自然画を示す属性を持つ画素数の比率を算出し、前記比率と前記閾値とを比較する比較手段と、
前記比較手段が前記比率が前記閾値以上であることを示す場合、入力した着目ブロックの色のヒストグラムを作成するヒストグラム作成手段と、
作成されたヒストグラムから、着目ブロック内に出現する各色にパレット番号を割り当て、着目ブロック内の各画素データをパレット番号に変換する変換手段と、
前記比較手段が前記比率が前記閾値以上と判定した場合、前記変換手段で変換されたパレット番号を画素データとして可逆符号化し、パレット変換したことを示す情報と共に、符号化して得られた符号化データを出力し、
前記比較手段が前記比率が前記閾値未満と判定した場合、着目ブロックを構成する各画素データを可逆符号化し、非パレット変換を示す情報と共に、符号化して得られた符号化データを出力する符号化手段と
を備えることを特徴とする画像符号化装置。
【請求項8】
前記符号化手段は、
前記比較手段で前記比率が前記閾値以上であると判定した場合、前記パレット変換したことを示す情報と、前記着目ブロック内に出現する色数、及び、各パレット番号と画素データとの対応を示すテーブルとを、ブロックヘッダに格納し、前記符号化データを前記ブロックヘッダに後続して格納することを特徴とする請求項7に記載の画像符号化装置。
【請求項9】
更に、前記ヒストグラム作成手段で作成されたヒストグラムを、頻度順に並べ替える並べ替え手段を有し、
前記変換手段は、前記並べ替え手段による並べ替え後の順番にパレット番号を割り当てて、パレット変換を行なうことを特徴とする請求項7又は8に記載の画像符号化装置。
【請求項10】
更に、ページ記述言語で記述された印刷データを解釈し、1ページ分の画像データを生成すると共に、生成する際の各画素の属性データを生成する生成手段を備え、
前記入力手段は、前記生成手段で生成された1ページ分の画像データと属性データから、前記ブロック単の画像データ及び属性データを入力することを特徴とする請求項7乃至9のいずれか1項に記載の画像符号化装置。
【請求項11】
画像データを符号化し、符号化データを生成する画像符号化装置の制御方法であって、 符号化単位のブロックのサイズを設定する設定工程と、
設定された前記ブロックのサイズに応じて閾値を決定する決定工程と、
設定されたサイズのブロックを単位に、画像データと、当該画像データを構成する各画素が自然画と非自然画のいずれに属するかを示す属性データとを入力する入力工程と、
前記ブロック内の画素数に対する、前記非自然画を示す属性を持つ画素数の比率を算出し、前記比率と前記閾値とを比較する比較工程と、
前記比較工程が前記比率が前記閾値以上であることを示す場合、入力した着目ブロックの色のヒストグラムを作成するヒストグラム作成工程と、
作成されたヒストグラムから、着目ブロック内に出現する各色にパレット番号を割り当て、着目ブロック内の各画素データをパレット番号に変換する変換工程と、
前記比較工程が前記比率が前記閾値以上と判定した場合、前記変換工程で変換されたパレット番号を画素データとして可逆符号化し、パレット変換したことを示す情報と共に、符号化して得られた符号化データを出力し、
前記比較工程が前記比率が前記閾値未満と判定した場合、着目ブロックを構成する各画素データを可逆符号化し、非パレット変換を示す情報と共に、符号化して得られた符号化データを出力する符号化工程と
を備えることを特徴とする画像符号化装置の制御方法。
【請求項12】
コンピュータが読込み実行することで、前記コンピュータに請求項7乃至10のいずれか1項に記載の画像符号化装置として機能させることを特徴とするコンピュータプログラム。
【請求項13】
請求項6又は12に記載のコンピュータプログラムを格納したことを特徴とするコンピュータ可読記憶媒体。

【図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


【公開番号】特開2008−311792(P2008−311792A)
【公開日】平成20年12月25日(2008.12.25)
【国際特許分類】
【出願番号】特願2007−155723(P2007−155723)
【出願日】平成19年6月12日(2007.6.12)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】