説明

画像処理装置、画像処理方法、およびプログラム

【課題】簡易な処理によって、高圧縮、高画質を両立する符号化技術を提供する。
【解決手段】画像データのブロックに含まれる所定の位置の画素の値を代表色とし、それ以外を補間色とし、代表色と補間色との配置を出力する圧縮手段と、各ブロックに対し減色処理を行う減色手段と、減色した画像データに対し圧縮処理を行い得られた補間色のデータ量と、画像データに対し圧縮処理を行い得られた代表色からなる縮小画像データに対し更に圧縮処理を行い補間色のデータ量との総和の全体補間データ量を算出する補間データ量算出手段と、減色した画像データに対し圧縮処理を行った補間色のデータ量と、画像データに対し圧縮処理を行った補間色のデータ量との差分である削減量を算出する削減量算出手段と、全体補間データ量および削減量に応じて、可逆符号化、もしくは非可逆符号化のいずれを行うかを選択する選択手段を有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像データを所定のブロック単位に圧縮する画像処理装置、画像処理方法、およびプログラムに関する。特に、高解像度の画像データを簡易、かつ高効率に符号化する技術に関するものである。
【背景技術】
【0002】
従来、画像をm×n画素で構成されるブロックに分割し、このブロックを可逆符号化する構成と、非可逆符号化する構成を備え、いずれか一方の符号化結果を着目ブロックの最終的な符号化データとして出力する画像符号化技術が提案されている。かかる技術は比較的画質劣化が目に付きにくい自然画像領域などでは、非可逆符号化方式を選択し圧縮率を高めている。反対に、画質劣化の目に付きやすい文字、線画、CG部分などでは可逆符号化方式を用いることで視覚的な画質劣化を抑制することをその基本としている。前述の方法として特許文献1が知られている。
【0003】
可逆符号化としては、着目画素の画素値を周囲画素の値から予測し、その予測誤差を求め、その予測誤差を符号化する方法がある。あるいは、同一画素値の連続数に変換して符号化するランレングス符号化技術が利用されることが多い。一方、非可逆符号化としては、画像データをDCTやwavelet変換などを用いて周波数空間のデータに変換し、係数値を符号化する変換符号化技術が一般的である。
【0004】
近年、画像入出力機器の高精度化に伴い、画像データの高解像度化が進んでいる。高解像度の画像データを高速に処理するためには、より多くのハードウエアリソースや処理時間が必要となる。従って、高効率な可逆、非可逆の符号化処理には、高度な演算処理が必要とされ、圧縮性能、画質、演算コストの3つのバランスをよく満たす画像符号化技術が求められる。その方法として、例えば特許文献2のように、m×nの分割画像データを可逆な低解像度データに変換し、変換する際に生成される補間データ量によって、可逆、非可逆圧縮方式を選択する方法が提案されている。その他にも、より圧縮率を高めるために、解像度変換処理においてを元の解像度に復元するデータを単純間引きし、符号化後のデータ量をより小さくする技術も提案されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平08−167030号公報
【特許文献2】特開2010−141533号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
上述した画像データに対して解像度変換を行い、解像度変換時に生成される補間データに基づき可逆・非可逆圧縮方式を選択する方法では、大幅な画質劣化が起こる可能性がある。つまり、解像度変換による単純間引きしたデータに対して非可逆圧縮方式を実行する場合には、2回分の非可逆な画像間引きを行うことに等しく、オリジナルの画像からの大幅な画質劣化を引き起こす問題がある。
【0007】
本発明は、このような問題を鑑みてなされたもので、その目的は、簡易な処理によって、高圧縮、高画質を両立する符号化技術を提供する。
【課題を解決するための手段】
【0008】
上記課題を解決するために、本発明は以下の構成を有する。すなわち、画像データを所定の画素数からなるブロックに分割し、分割された前記ブロックを順に符号化処理する画像処理装置であって、処理対象の画像データにおいて、前記ブロックに含まれる画素のうち、所定の位置の画素の値を代表色とし、代表色以外の画素の値を補間色とし、前記ブロックにおける前記代表色と補間色との配置を配置情報として出力する圧縮手段と、前記画像データにおける各ブロックに対し減色処理を行う減色手段と、前記減色手段により減色した画像データに対して前記圧縮手段による処理を行うことにより得られた補間色のデータ量と、前記画像データに対して前記圧縮手段による処理を行うことにより得られた代表色からなる縮小画像データに対して更に前記圧縮手段による処理を行うことにより得られた補間色のデータ量との総和である全体補間データ量を算出する補間データ量算出手段と、前記減色手段により減色した画像データに対して前記圧縮手段による処理を行うことにより得られた補間色のデータ量と、前記画像データに対して前記圧縮手段による処理を行うことにより得られた補間色のデータ量との差分である削減量を算出する削減量算出手段と、前記全体補間データ量および前記削減量に応じて、可逆符号化、もしくは非可逆符号化のいずれを行うかを選択する選択手段と、前記選択手段により可逆符号化を行うと選択された場合、前記圧縮手段により出力された前記代表色からなる縮小画像データを可逆符号化する可逆符号化手段と、前記選択手段により非可逆符号化を行うと選択された場合、前記圧縮手段により出力された前記代表色からなる縮小画像データを非可逆符号化する非可逆符号化手段とを有する。
【発明の効果】
【0009】
本発明によれば、高解像度画像データに対して画質劣化を抑えた高い圧縮性能を実現する符号化を行うことが可能となる。
【図面の簡単な説明】
【0010】
【図1】MFPシステムの概要を示す図。
【図2】コントローラの概要を示す図。
【図3】圧縮処理全体フローを示す図。
【図4】画像をブロック分割した際にそのブロックのパターンを列挙した図。
【図5】ブロックのパターンとその識別子を列挙した図。
【図6】解像度変換/補間データ生成にて行われる処理フローを示す図。
【図7】ブロックのパターンをフラグへ変換している様子を示す図。
【図8】圧縮処理に対する入力と出力の関係を示す図。
【図9】圧縮データのメモリ空間上の配置を示す図。
【図10】減色法での画像圧縮のフローを示す図。
【図11】符号化選択手段の詳細をフローで示す図。
【発明を実施するための形態】
【0011】
以下、本発明を実施するための形態について図面を用いて説明する。図1に、本発明の実施の形態のスキャン、プリント、コピーを行うデジタル複合機システム(以降、MFPと称する)の全体構成図を示す。
【0012】
コントローラ101は、画像入力デバイスであるスキャナ102と画像出力デバイスであるプリンタ103とに接続する。一方ではLANや公衆回線(WAN)等のネットワーク104と接続することで、画像情報やデバイス情報の入出力、PDL(Page Description Language)データのイメージ展開を行うことができる。CPU105はシステム全体を制御するプロセッサである。また、本実施形態では、CPU105がHDD記憶部107等に格納されたプログラムを読み出し、実行することで各処理を実現する。
【0013】
メモリ106はCPU105が動作するためのシステムワークメモリであり、画像データを一時記憶するための画像メモリでもある。HDD記憶部107は、ハードディスクドライブで、システムソフトウェア、画像データを格納する。外部入力装置108は、その例としてタッチパネルやキーボードなどが挙げられ、MFPを使用するユーザーが様々な印刷設定等を行うためのユーザインタフェース装置である。
【0014】
図2を用いて、図1のコントローラ部の動作に関して詳細に説明する。スキャンデータを読み込む場合を説明する。スキャナ102からRGB(RED、GREEN、BLUE)3色の読み取り画像データを受け取ったコントローラ101では、まずスキャナ用画像処理部201にてシェーディング処理やフィルタ処理等の画像処理を行う。そして、圧縮部202にて画像圧縮処理を行う。その圧縮データをDMAC(Direct Memory Access Controller)203を介して、メモリ106へ格納する。
【0015】
スキャンデータをプリントする場合は、メモリ106に格納されている圧縮データをDMAC211を介して色処理部212へ入力し、CMYK(Cyan、Magenta、Yellow、Black)色空間へ変換する。その後、それらCMYKの値に対して濃度調整、プリンタガンマ補正等の調整の色処理を行った後、DMAC211を介してメモリ106へ再度格納する。その後、プリント用の画像処理を行うために、DMAC221を介して、メモリ106に格納されている圧縮データを読み込み、展開部222にてラスタ画像データへ展開する。ラスタのCMYK画像データをプリント用画像処理部223に入力し、そこでディザ法や誤差拡散法による面積階調処理を行い、プリンタ103へ出力する。なお、面積階調処理については、上記手法に限定するものではなく、本発明が適用できれば他の手法を用いても構わない。
【0016】
スキャンデータをネットワークへ送信する場合には、メモリ106に格納されている圧縮データをDMAC211を介して色処理部212へ入力し色変換を行う。具体的には、ディスプレイガンマ調整や用紙地色調整等を行った後にYCbCr(輝度、BLUE色差、RED色差)色空間へ変換する。その後再度、DMAC211を介してメモリ106へ格納する。その後、送信用の画像処理を行うために、DMAC231を介して、メモリ106に格納されている圧縮データを読み込み、展開部232にてラスタ画像データへ展開する。ラスタのYCbCr画像データに対して送信処理部233では、処理対象の画像データが、カラー画像送信であればJPEG圧縮処理を行い、モノクロ2値画像送信であればYデータに対して2値化を行ってJBIG圧縮等を行う。そして、送信処理部233は、圧縮処理を施した画像データをネットワーク104へ出力する。
【0017】
スキャンデータを保存する場合には、メモリ106に格納されている圧縮データをDMAC241を介してディスクスプール高圧縮/展開部242へ入力する。ディスクスプール高圧縮/展開部242では、HDDへの書き込みスピードがメモリへの書き込みスピードに比べて遅いため、さらに高圧縮のJPEG圧縮を施す。その後ディスクアクセスコントローラ243を介してHDD記憶部107へ圧縮データを保存する。保存されているデータをメモリ106へ再度展開する場合はその逆処理を行う。
【0018】
PDLのデータをメモリへ書き込む場合を説明する。図2では図示していないが、図1にてネットワークから送られてきたPDLデータをCPU105にてインタプリットし、メモリ106へディスプレイリストを出力する。その後、メモリ106に格納されているディスプレイリストをレンダリング部251でラスタ形式のRGB画像データへレンダリングを行い、圧縮部252にて画像圧縮処理を行う。その圧縮データは、DMAC253を介してメモリ106へ格納される。PDLデータをプリント、ネットワークへ送信、保存する場合は、スキャンデータのそれと同様の処理を行うことで実現する事が可能になる。以降では、本発明の特徴となるラスタ画像データの圧縮部の詳細に関して説明を行う。
【0019】
[圧縮処理全体フロー]
まず、圧縮処理全体フローについて、図3を用いて説明する。本実施形態では、入力画像データの解像度を1200dpiとし、二回の解像度変換により、300dpiの解像度を有する縮小画像データを生成する例を示す。なお、本実施形態において、本処理フローは、CPU105がHDD記憶部107等の記憶部に格納されたプログラムを読み込み、実行することにより実現する。また、本実施形態の以下の処理において、“パケット”とは、処理対象の画像データにおいて、64×64画素からなる画像データの単位を指す。また、“タイル”とは、処理対象の画像データにおいて、2×2画素からなる画像データの単位を指す。ここで、便宜上、“パケット”および“タイル”として画像データのサイズを定義したが、これに限定されるものではなく、必要に応じて変更しても構わない。
【0020】
S300において、CPU105は、符号化を開始する前の初期化処理を行う。ここでは、符号化対象となる画像データについて符号列に含めるべきヘッダ情報を準備し、各種メモリ、変数等の初期化処理が行われる。ここで準備されるヘッダ情報には、符号化の方式や扱うデータの属性等が挙げられるが、本実施形態においては特に限定しない。
【0021】
S300における初期化処理の後、S301において、CPU105は、圧縮部252や202に、レンダリング部251やスキャナ用画像処理部201からの画像データを順次入力する。その結果、符号化対象となる1ライン分の画像データがラインバッファへと入力される。画像データのハンドリング等については後述する。なお、ここでの“ライン”とは、画像データを圧縮する際に走査する方向(主走査方向)の画素群を示し、本実施形態において1ラインとは、1×N画素の構成からなる(ここで、Nは画像データの主走査方向における画素数)。
【0022】
次に、S302において、CPU105は、1ライン分の画像データに対して、着目するパケットデータ(64×64画素)を切り出す。続いて、S303において、CPU105は、着目するタイルデータ中(2×2画素)の各画素ブロック中の左上隅の画素をサブサンプリングすることで1/2縮小タイルデータを生成する。つまり、入力画像データを1200dpiの画像データから600dpiの画像データを生成する。この処理が1200dpiから600dpiへの解像度変換であり、得られるデータを“600dpiパケットデータ”と呼ぶことにする。なお、本実施形態においては、サブサンプリングを行う対象の画素の位置をブロック内の左上隅の画素としたが、これに限定されるものではなく、他の位置にある画素であっても構わない。
【0023】
S304において、CPU105は、600dpiパケットデータから元の1200dpi解像度のパケットデータを復元するための1200dpi補間データを生成する。補間データおよび生成処理の詳細については図4〜9を用いて後述する。S305において、CPU105は、解像度変換の際の補間データを削減するために、1200dpiの画像データに対して減色処理を行う。減色処理の詳細については図10を用いて後述する。S306において、CPU105は、減色処理を行ったデータに対する減色1200dpi補間データを生成する。この処理の詳細については図4〜10を用いて後述する。
【0024】
続いて、S307において、CPU105は、600dpiパケットデータに対して、着目するタイルデータ中の各画素ブロック中の左上隅の画素をサブサンプリングすることで1/2縮小タイルデータを生成する。つまり、入力画像である600dpiの画像データから300dpiの画像データを生成する。この処理が600dpiから300dpiへの解像度変換であり、得られるデータを“300dpiパケットデータ”と呼ぶことにする。ここでのサブサンプリングにおいても、S303と同様に画素の位置については左上隅に限定するものではない。S308において、CPU105は、300dpiパケットデータから元の600dpi解像度のパケットデータを復元するための600dpi補間データを生成する。
【0025】
S309において、CPU105は、補間データの構造情報から、300dpiパケットデータについて可逆と非可逆のどちらの符号化方式を適用するかを決定する。選択方法の詳細は後述する。選択された符号化方式が可逆符号化である場合(S310にてYES)、S311において300dpiパケットデータを可逆符号化して符号化データを生成する。また、選択された符号化方式が非可逆符号化である場合(S310にてNO)、S312において、CPU105は、600dpiパケットデータを非可逆符号化して符号化データを生成する。
【0026】
続いて、S313において、CPU105は、着目するタイルについて、タイルヘッダ、可逆/非可逆を識別する情報、補間データ、1/2縮小タイル符号化データを結合させて、タイル符号化データを形成する。S314において、CPU105は、符号化処理を行ったタイルが現在読み込まれている1ラインの最後のパケットであるか否かを判定する。最後のパケットでない場合(S314にてNO)には、次のパケットについてS302から処理を繰り返す。1ラインの最後のパケットである場合には(S314にてYES)、処理をS315へと移す。
【0027】
S315において、CPU105は、現在読み込まれているラインが画像の最終ラインであるか否かを判定する。最終ラインでない場合には(S315にてNO)、S301に戻り、CPU105は次のラインデータを読み込み、処理を継続する。最終ラインの場合には(S315にてYES)、S316へと処理を移す。処理がS316に移ったときには、符号化対象画像データのすべてのパケットについて符号化処理が終了しており、CPU105は、全タイルの符号化データから、最終的な符号化データを生成して、DMAC253/203を介してメモリ106にデータを格納する。以上により、本処理フローを終了する。
【0028】
[解像度変換]
以降ではラスタ画像データの解像度変換部の詳細に関して説明を行う。上述した図3のS303やS307の処理に相当する。
【0029】
まず、処理対象の画像データにおいて、ページ単位のラスタ画像を2×2画素からなるブロックに分割し、その分割されたブロック単位でデータの圧縮を行う。ここでは、そのブロックを“タイル”と呼ぶ。処理の説明の前に、2×2の4画素データ中に占める色数に応じてその色の配置の組み合わせの数を考える。画素数が4画素なので、そこに占める色数は最大4色になり、色の配置のパターンはタイル内でたかだか1〜4色の組み合わせしか存在しない。それら4色のパターンの取り得る色の配置の組み合わせの数を図4を用いて説明する。本実施形態においては、2×2画素からなるブロックにおいて、所定の位置の画素の値(色値)を代表色、代表色以外の画素の値を補間色とする。また、補間色は2×2画素のブロックにおいて0〜3色のいずれかの数となる。従って、代表色を第1色、補間色をそれぞれ、第2色、第3色、第4色とも記載する。
【0030】
図4で2×2画素からなるタイルの集まりから構成されているものが、“パケット”であり、本実施形態では64×64画素で構成されているものとする。まずパケットに含まれるタイルのうちの1つに注目して考える。タイルに含まれる画素の色が1色の場合、4画素が同色で構成されている事になるので、その配置の組み合わせは1通りである。
【0031】
次にタイル内に2色の画素が含まれている場合を考える。2色が4画素内へレイアウトされる組み合わせは、タイル内の左上の画素の値を第1色、他方の値を第2色として考えると、左上以外残りの3画素へ第1色もしくは第2色が入る。そのため、4画素同色の場合を除くと、全部で7通りの配置の組み合わせが考えられる。
【0032】
次にタイル内に3色の画素が含まれている場合を考える。3色が4画素内へレイアウトされる組み合わせは、3色のうち1色だけが2度使われる場合と言い換える事が可能である。よって、4画素の座標のうち、2画素が同じ色になる組み合わせを求めればよい。つまり3色の場合の数は、4つの座標から2つの座標を取る組み合わせとなり、全部で6通りとなる。
【0033】
最後にタイルに含まれる画素の値がすべて異なり、4色の場合は1色の場合と同様に、その配置は1パターンしか存在しない。
【0034】
上述のように、タイルに含まれる画素の色の組み合わせにおいて、これら1〜4色すべての場合の数を合計すると全部で15通りのパターンが考えられる。これらすべてのパターンを識別するためにフラグを付与する事を考えると、データ量としては4bitが必要となる。図示すると図5のようになり、以降、ブロック内の色の配置パターンを示す配置情報であるフラグを“パターンフラグ”と呼ぶ。ここでのパターンフラグは、0〜Eのいずれかの値をとる。
【0035】
[圧縮処理フロー]
上記のように、2×2画素の取りうる組み合わせを踏まえて、圧縮部202、252での解像度変換/補間データ生成にて行われる処理フローについて図6を用いて説明する。なお、本実施形態においては、本処理はCPU105がHDD記憶部107等の記憶部に格納されたプログラムを読み出し、実行することにより、実現されるものとする。本実施形態において、入力は、例えばRGBそれぞれ8bitの256階調を有し、またデータは8bitデータの点順次で1画素あたり24bit(8bit×3色分)画像として説明を行う。
【0036】
まず、処理が開始されると、入力データの中から2×2画素のタイルが入力される(S601)。CPU105は、入力されたタイル内全ての2画素の組み合わせに対して24bitのコンペアを取る(S602)。このコンペアを取った結果、全ビット一致していた場合は“1”を、不一致の場合は“0”を出力する。図7に示すように、タイルは2×2画素から構成されており、ブロック内の画素を左上、右上、左下、右下の順に座標1、2、3、4とすると、2画素の組は、1−2、1−3、1−4、2−3、2−4、3−4の全部で6通りとなる。従って、1つのブロックにおいては、6回のコンペアを取る必要があり、結果として6bitの値が出力される。例えば全画素同色の場合には、全てのコンペア結果が“1”となり、逆に4画素全てバラバラの画素値の場合には、全てのコンペア結果が“0”となる。前述の通り、4画素で色の一致から出現しうるパターン数は15通りなので、CPU105は、出力された6bitのコンペア結果に対して4bitのパターンフラグへ変換する(S603)。
【0037】
CPU105は、パターンフラグへ変換した後、タイル内の4画素にて出現した色数および色データを抽出する(S604)。ここで、パターンフラグから、タイル内の左上の画素の値を第1色とした場合、第2色以降がどの位置にあるかを求める事が出来る。図8を参照しながら説明を行う。例えば、タイル内の4画素がすべて同じ値を有し、1色で構成されていることが確定した場合(S605にてYES)には、第2色以降は存在しないため、CPU105は、パターンフラグ4bitと第1色の値(24bit)を出力する(S606)。またタイル内の4画素が2色で構成されていることが確定した場合(S607にてYES)には、CPU105は、第2色の値を有する画素の座標をパターンフラグより算出し、パターンフラグ(4bit)と2色分の画素値(48bit)を出力する(S608)。CPU105は、タイルに含まれる色の数が3色、4色の場合も同様に処理を行う(S609、S610、S611)。この時、CPU105は、タイル内の画素の座標(左上、右上、左下、右下の順に1、2、3、4)順にこれまで出現していなかった色の画素値をメモリ106等の記憶部に記憶する。
【0038】
このように、2×2画素からなるタイル内の4色(96bit)の入力データを4bitのパターンフラグとタイルに存在する色数分だけ画素値を出力することで、比較的簡単な処理で出力データ量を削減することが可能になる。具体的には、入力データ96bitに対し、1色の場合は28bit、2色の場合は52bit、3色の場合は76bitに圧縮可能である。なお、4色の場合のみ100bitのデータとして出力することになる。またパターンフラグを参照することで、そのタイル内の色数および色の配置を特定することが可能になる。
【0039】
上記処理を処理対象である画像データに含まれるタイル全てに対して行うことで、画像データの圧縮が可能になる。また、この処理により、図3のS303,S307にて示した解像度変換処理を実現する。このとき、補間データとは、第2色、第3色、第4色のデータを意味する。
【0040】
[格納方式]
上記のようにして求めたパターンフラグと色データとを、DMACを介してメモリ106に書き込む。その時DMACでは、パターンフラグと、第1色データと、第2、3、4色データのそれぞれに対する記憶領域上での書き込み位置を変える。DMACには、パターンフラグ書き込みのためのメモリ先頭アドレスと、第1色データの書き込みのためのメモリ先頭アドレスと、第2、3、4色データの書き込みのためのメモリ先頭アドレスとの3つのアドレスが指定されている。図8にその例を図示する。例えばサイズがM×N画素からなるRGB各色8ビットの画像データを圧縮部へ入力する場合を説明する。この場合、処理対象の画像データ全体に対し、パターンフラグのデータサイズはM×N/8バイト、第1色のデータサイズはM×N×3/4バイト、第2、3、4色のデータサイズは画像によって不定(画像によって異なる)の出力となる。
【0041】
ここで第1色書き込み位置以降のメモリ領域に関しては、画素データがピクセル単位で量子化や符号化されることなく格納されている。つまり、1画素入力、1画素出力で完結する色処理、例えばLUTを用いた色変換や、ガンマ補正処理、行列演算を用いた色空間変換処理等は特にパターンフラグを参照する必要はなく、直接処理を行うことが可能になる。図2に示している色処理部212は、メモリ106上の第1色書き込み先頭アドレス以降の画素データをDMAC経由で読み込み、画素単位での処理を済ませた後にメモリ106上へ書き戻す。この時、任意の画素単位処理によって画素のビット数が変わらない場合には、メモリ106上同じ場所へ上書きすることでメモリの節約も可能である。
【0042】
このように圧縮データを直接用いることで、メモリバス上の転送効率が向上し、かつオリジナルの画像における少ない画素数のデータに対して処理することになるため、高速処理が可能になる。
【0043】
図9のように画像データを離散的にメモリ空間上へ格納することで、第1色格納部に限ってみると、画像データを2×2画素単位のタイルごとに、左上の座標の画素をサンプリングした画像結果がメモリ空間上に連続して存在することになる。本実施形態で説明しているMFPにおいては、蓄積したPDL画像データやスキャンの画像データのプレビュー表示や、前述したネットワーク送信などの機能も有している。この場合において、プリント解像度が600dpiであったとしてもプレビューや送信時にそこまでの解像度は通常必要とされず、300dpiやそれ以下で十分な場合が多い。こういった縮小データを得る必要がある場合は、パターンフラグや第2、3、4色のデータを用いず、第1色の画像データのみ扱うことで、簡単に半分のサイズのラスタ画像を得る事が出来る。
【0044】
例えば前述の例において、画像データが600dpiにて蓄積されていた場合の縮小送信時を説明する。送信する際の解像度として400dpiなど、サンプリングされている300dpiより大きい解像度が指定されている場合には、パターンフラグも含めて圧縮されているデータを一度展開し、公知の変倍方式を用いて送信する。逆に300dpiより小さい送信解像度指定がされている場合には第1色格納部のデータのみ用い、指定の解像度へ変倍処理を行うといったように必要な画像サイズに応じて切り替えながらデータの読み込みを行う。
【0045】
[展開部]
次に、圧縮部と対になる展開部222、232に関して説明する。展開部222、232では前述したようなパターンフラグ、画素データを用いて元のラスタ画像データへ戻す処理の事を指す。展開部222、232は、メモリ空間上に図9のように配置されている圧縮データのパターンフラグ書き込み先頭アドレス、第1色書き込み先頭アドレス、および第2、3、4色書き込み先頭アドレスの3つのアドレスをDMACへ指定する。DMACはその3つのアドレスから圧縮データを読み出し、展開部222、232へ送信する。展開部222、232ではまず4bitのパターンフラグを解釈し、そのタイル内の色数を算出する。第1色データに加え、色数に応じて第2、3、4色データを読み出す。そして、展開部222、232は、パターンフラグにて定義されている色の配置に応じて画素データを再配置する。これにより、2×2画素からなるタイルを展開、復号化する。
【0046】
また、展開部222、232にて画像サイズを1/2にする場合、前述したように、パターンフラグと第2、3、4色データを必要としないので、DMACには第1色書き込み先頭アドレスのみ指定する。そして、メモリ106からは第1色データのみ読み込みを行い画像を構成する。これにより、画像メモリバスの帯域を節約することが可能になる。
【0047】
なお本実施形態では2×2画素からなるタイルを最小単位として記述していたが、これに限るものではない。例えば、画像の特性に合わせて、画素数を変更しても構わない。また、圧縮の説明の際、画像データとしてRGB各色8bitを例として説明していたが、CMYKの色空間を取るものや、GRAYスケールのデータ、また8bit以外の画素値をとるものでも良い。
【0048】
[減色処理]
以下、減色処理方法の詳細について説明する。解像度変換処理方法で高圧縮になる事が期待される画像は、画像データ内で隣接画素値が1レベルたりとも違わないような領域が多い画像である。ここでのレベルとは、各画素の色値の階調を示しており、例えば256階調で各色を表現する際には、0〜256の値を意味する。高解像度のPDLデータとしてレンダリングしたラスタ画像データに関してはこのようになっている場合が多いが、スキャナで読み取られた画像データでは、スキャナでのノイズ成分が画像に重畳され通常画素値として数レベルの違い(色値の差)が生じうる。このような場合には、圧縮データとしては2×2画素からなるタイルに4色の画素値が含まれていると判定される事が多くなり、圧縮後でデータ量が削減されないばかりか、パターンフラグが付与される分データが増える事になる。しかしながら、画像データによっては2×2画素からなるタイル内での数レベルの違いが視覚的に認識できない事も多くあり、そういった場合にはその数レベルの違いは冗長なデータといえる。
【0049】
そこで、タイル内において数レベルの冗長な違いを有する各画素に対し、ブロック内に2以上の色が含まれている場合、減色処理を行うことで色数を減らす。この後にパターンフラグを作成することで、圧縮率の向上を図る。前述したように、2×2画素の取りうる組み合わせを踏まえて、画像圧縮を行うフローを図10を用いて説明する。入力としてはこれまでと同様にRGB各色8bitの256階調を有する画像データとして説明を行う。なお、本実施形態においては、本処理はCPU105がHDD記憶部107等の記憶部に格納されたプログラムを読み出し、実行することにより、実現されるものとする。
【0050】
まず処理が開始されると、2×2画素からなるタイルが入力される(S1001)。CPU105は、入力されたタイルに対し、タイルに含まれる4画素のデータに対して1色へ減色処理を行う(S1002)。ここでは例えば、4画素の平均画素値を算出することで1色への減色を実現する。続いて、CPU105は、減色処理により求められた画素値と入力された4画素の画素値との差分を算出する(S1003)。そして、CPU105は、差分の大小を判定する(S1004)。例えば、入力値と減色後のRGB値との差の絶対値の和を取り、その値が所定の閾値以下である場合には差が小さいと判定出来る。もしここで差が小さいと判定された場合(S1004にてYES)には、CPU105は、処理対象のタイルにパターンフラグを付与する(S1005)。そして、CPU105は、その減色した1色の画素値とパターンフラグを出力する(S1006)。
【0051】
誤差が大きいと判定された場合(S1004にてNO)には、CPU105は、2色へ減色処理を行う(S1007)。ここでは例えば、タイルに含まれる4画素のうちRGB値の差が最も大きい2画素A、Bを抽出し、残りの2画素がA、Bどちらに近いかでクラスタリングし、そのクラスタ内での平均値を求めることで、2色化する。そして、CPU105は、その2色化した画素値と入力されたタイルに含まれる4画素の画素値との差分を計算する(S1008)。そして、CPU105は差分の大小を判定する(S1009)。ここでの判定は、S1004と同様に予め定義された閾値と比較することで判定することができる。もし、ここで差分が小さいと判定された場合(S1009にてYES)には、CPU105は図4に基づいて、2色のパターンを検出し、パターンフラグを付与する(S1010)。そして、CPU105は、減色した2色の画素値とパターンフラグとを出力する(S1011)。
【0052】
ここでも差分が大きいと判定された場合(S1009にてNO)には、CPU105は3色への減色処理を行う(S1012)。ここでは例えば4画素のうち最もRGB値の差の小さい2画素を抽出して、その2画素の値を平均化し、その平均値とそれ以外の2画素の値とを用いて4画素を3色へ減色する。そして、CPU105はその3色化したタイルの画素値と入力されたタイルに含まれる4画素の画素値との差分を計算する(S1013)。そして、CPU105は、差分の大小を判定する(S1014)。ここでの判定は、S1004と同様に予め定義された閾値と比較することで判定することができる。もし、ここで差分が小さいと判定された場合(S1014にてYES)には、CPU105は図4に基づいて、3色のパターンを検出し、パターンフラグを付与する(S1015)。そして、CPU105は、減色した3色の画素値とパターンフラグとを出力する(S1016)。
【0053】
ここでも差分が大きいと判定された場合(S1014にてNO)には、減色することで視覚的に問題が出るタイルということになるので、CPU105は4色全ての画素値とそれに対応するパターンフラグを付与する(S1017)。そして、CPU105は、入力されたタイルに含まれる4画素すべてを出力する(S1018)。以上により、本処理フローを終了する。
【0054】
このような構成をとり、処理対象の画像データに含まれるタイルすべてに処理を適用することで、スキャン画像に代表されるような画素間の数レベルの違いにより圧縮率が劇的に悪くなってしまうような画像に対しても圧縮率の向上を図る事が可能になる。また前述した差分判定の閾値の取り方次第で圧縮率と画質の調整も可能である。例えば、許容する画素間の差分を全く無くす(0にする)ことで、画像としては完全な可逆の圧縮になる。逆に許容する差分を無限にする事で、全タイルが1色で表現されることになり解像度を半分にするのと等価となり、データ量を1/4にすることが保証できる。
【0055】
ここでは、減色を用いた圧縮部での説明となっているが、この方法を用いた圧縮であればその展開の処理は減色を伴ったかどうかの圧縮方法を意識する必要はなく、上述の解像度変換処理の詳細説明で述べた展開処理と全く同じ構成でよい。
【0056】
なおここで説明に用いた減色の処理は一例であり他の公知の減色処理を用いて実施してもよい。また入力画素と減色処理後の画素との差分を算出する手段であるが、これも公知の色差を求める別の手段で代替してもよい。
【0057】
[符号化方式選択]
本発明の特徴的な部分である、符号化方式を選択する方法について図11を用いて説明する。なお、本実施形態において、本処理はCPU105がHDD記憶部107等の記憶部に格納されたプログラムを読み出し、実行することにより、実現されるものとする。
【0058】
図11の処理フローは図3に示した処理の一部(S309〜S312)をより詳細に説明するものである。まず、CPU105は、S306で生成した減色1200dpi補間データ量を取得する(S1100)。ここでの取得方法については、メモリ106に格納されているデータ量から取得する。次に、CPU105は、S308で生成した600dpi補間データ量を取得する(S1101)。ここでの取得方法については、メモリ106に格納されているデータ量から取得する。
【0059】
続いて、CPU105は、減色1200dpi補間データ量と600dpi補間データ量との総和である全体補間データ量を算出する(S1102)。これにより、補間データ量算出手段を実現する。そして、CPU105は、算出した全体補間データ量と補間データ量閾値(第一の閾値)との値を比較する(S1103)。ここで、全体補間データ量の方が多ければ(S1103にてYES)、S1104に進み、全体補間データ量の方が少なければ(S1103にてNO)、S1106に進む。補間データ量閾値は、CPU105からのレジスタ設定によって設定することが可能である。また、画像の種類や外部入力装置108からの入力によってCPU105経由で値を変更することが可能である。
【0060】
続いて、CPU105は、S304で生成した1200dpi補間データ量と減色1200dpi補間データとの差分を算出する(S1104)。この値が補間データ削減量である。これにより、削減量算出手段を実現する。そして、CPU105は、補間データ削減量と削減量閾値(第二の閾値)とを比較する(S1105)。ここで、補間データ削減量が大きければ(S1105にてNO)、S1106に進み、補間データ削減量が小さければ(S1105にてYES)S1107に進む。削減量閾値は、補間データ量閾値と同様に、CPU105からのレジスタ設定によって設定可能である。また、画像の種類や外部入力装置108からの入力によってCPU105経由で値を変更することが可能である。S1106では、CPU105は、300dpiパケットデータに対し、可逆符号化を行う。S1107では、CPU105は、600dpiパケットデータに対し、非可逆符号化を行う。そして、S1106もしくはS1107の処理の後、図3のS313の処理へと進む。
【0061】
S1103およびS1105にて用いられている第一の閾値と第二の閾値は、圧縮前後の総データ量や画像の特性などに基づいて決定してもよい。
【0062】
以上の処理により、符号化のデータ量の可変部分である全体補間データ量(本実施形態においては、第2、3、4色データに対応)によって、符号化処理を選択することが可能となる。つまり、補間データが少ない場合には、符号化率が比較的低い可逆符号化を選択し、画質の劣化を防ぐ。また、補間データ量が多い場合においても、減色処理による補間データの削減量によって、符号化処理を選択することが可能となる。つまり、減色処理によってデータ削減量が大きい場合には、可逆符号化を選択することで、画質劣化を抑える。反対に、減色処理によるデータ削減量が小さい場合には、減色処理による画質劣化が比較的少ないので、非可逆符号化を選択し、全体のデータ量を削減する。
【0063】
符号化方式を選択する際に重要なことは、符号化によるデータ削減量と、画質劣化度を最適にすることである。以上の処理によって、入力される画像に応じて、データ量や画質劣化を抑える符号化を行うことが可能となる。
【0064】
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。

【特許請求の範囲】
【請求項1】
画像データを所定の画素数からなるブロックに分割し、分割された前記ブロックを順に符号化処理する画像処理装置であって、
処理対象の画像データにおいて、前記ブロックに含まれる画素のうち、所定の位置の画素の値を代表色とし、代表色以外の画素の値を補間色とし、前記ブロックにおける前記代表色と補間色との配置を配置情報として出力する圧縮手段と、
前記画像データにおける各ブロックに対し減色処理を行う減色手段と、
前記減色手段により減色した画像データに対して前記圧縮手段による処理を行うことにより得られた補間色のデータ量と、前記画像データに対して前記圧縮手段による処理を行うことにより得られた代表色からなる縮小画像データに対して更に前記圧縮手段による処理を行うことにより得られた補間色のデータ量との総和である全体補間データ量を算出する補間データ量算出手段と、
前記減色手段により減色した画像データに対して前記圧縮手段による処理を行うことにより得られた補間色のデータ量と、前記画像データに対して前記圧縮手段による処理を行うことにより得られた補間色のデータ量との差分である削減量を算出する削減量算出手段と、
前記全体補間データ量および前記削減量に応じて、可逆符号化、もしくは非可逆符号化のいずれを行うかを選択する選択手段と、
前記選択手段により可逆符号化を行うと選択された場合、前記圧縮手段により出力された前記代表色からなる縮小画像データを可逆符号化する可逆符号化手段と、
前記選択手段により非可逆符号化を行うと選択された場合、前記圧縮手段により出力された前記代表色からなる縮小画像データを非可逆符号化する非可逆符号化手段と
を有することを特徴とする画像処理装置。
【請求項2】
前記圧縮手段は、
処理対象である前記画像データを2×2画素からなるブロックに分割する分割手段と、
前記ブロックに含まれる色数を決定する手段と、
前記ブロックに含まれる色に対する前記配置情報を求める手段と、
前記ブロックに含まれる色の中から前記代表色を求める手段と、
前記ブロックに含まれる色の中から代表色以外の色である0〜3色の補間色を求める手段と
を有し、
前記配置情報と前記代表色と前記補間色とを異なる記憶領域に記憶することを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記減色手段は、
2×2画素からなる前記ブロックに2以上の色数が含まれている場合、当該ブロックに含まれる色の値の差分の大小に応じて、当該色数を削減できるか否かを判定する判定手段と、
前記判定手段により削減できると判定された場合、当該ブロックに含まれる色数を削減する削減手段と
を有することを特徴とする請求項1または2に記載の画像処理装置。
【請求項4】
前記選択手段は、前記全体補間データ量と第一の閾値とを比較し、前記第一の閾値よりも前記全体補間データ量が小さい場合は、前記可逆符号化手段による可逆符号化を選択することを特徴とする請求項1乃至3のいずれか一項に記載の画像処理装置。
【請求項5】
前記選択手段は、前記削減量と第二の閾値とを比較し、前記第二の閾値よりも前記削減量が小さい場合は、前記非可逆符号化手段による非可逆符号化を選択し、前記第二の閾値よりも前記削減量が大きい場合は、前記可逆符号化手段による可逆符号化を選択することを特徴とする請求項1乃至4のいずれか一項に記載の画像処理装置。
【請求項6】
前記選択手段により、前記可逆符号化手段による可逆符号化を行うと選択された場合、処理対象の画像データに対して前記圧縮手段による処理を行うことにより得られた代表色からなる画像データに更に前記圧縮手段による処理を行うことにより得られた代表色からなる縮小画像データに、前記可逆符号化手段による可逆符号化を適用することを特徴とする請求項1乃至5のいずれか一項に記載の画像処理装置。
【請求項7】
前記選択手段により、前記非可逆符号化手段による非可逆符号化を行うと選択された場合、処理対象の画像データに対して前記圧縮手段による処理を行うことにより得られた代表色からなる縮小画像データに、前記非可逆符号化手段による処理を適用することを特徴とする請求項1乃至6のいずれか一項に記載の画像処理装置。
【請求項8】
画像データを所定の画素数からなるブロックに分割し、分割された前記ブロックを順に符号化処理する画像処理方法であって、
圧縮手段が、処理対象の画像データにおいて、前記ブロックに含まれる画素のうち、所定の位置の画素の値を代表色とし、代表色以外の画素の値を補間色とし、前記ブロックにおける前記代表色と補間色との配置を配置情報として出力する圧縮工程と、
減色手段が、前記画像データにおける各ブロックに対し減色処理を行う減色工程と、
補間データ量算出手段が、前記減色工程において減色した画像データに対して前記圧縮工程における処理を行うことにより得られた補間色のデータ量と、前記画像データに対して前記圧縮工程において処理を行うことにより得られた代表色からなる縮小画像データに対して更に前記圧縮工程における処理を行うことにより得られた補間色のデータ量との総和である全体補間データ量を算出する補間データ量算出工程と、
削減量算出手段が、前記減色工程において減色した画像データに対して前記圧縮工程における処理を行うことにより得られた補間色のデータ量と、前記画像データに対して前記圧縮工程において処理を行うことにより得られた補間色のデータ量との差分である削減量を算出する削減量算出工程と、
選択手段が、前記全体補間データ量および前記削減量に応じて、可逆符号化、もしくは非可逆符号化のいずれを行うかを選択する選択工程と、
可逆符号化手段が、前記選択工程において可逆符号化を行うと選択された場合、前記圧縮工程において出力された前記代表色からなる縮小画像データを可逆符号化する可逆符号化工程と、
非可逆符号化手段が、前記選択工程において非可逆符号化を行うと選択された場合、前記圧縮工程において出力された前記代表色からなる縮小画像データを非可逆符号化する非可逆符号化工程と
を有することを特徴とする画像処理方法。
【請求項9】
コンピュータを、
処理対象の画像データにおいて、ブロックに含まれる画素のうち、所定の位置の画素の値を代表色とし、代表色以外の画素の値を補間色とし、前記ブロックにおける前記代表色と補間色との配置を配置情報として出力する圧縮手段、
前記画像データにおける各ブロックに対し減色処理を行う減色手段、
前記減色手段により減色した画像データに対して前記圧縮手段による処理を行うことにより得られた補間色のデータ量と、前記画像データに対して前記圧縮手段による処理を行うことにより得られた代表色からなる縮小画像データに対して更に前記圧縮手段による処理を行うことにより得られた補間色のデータ量との総和である全体補間データ量を算出する補間データ量算出手段、
前記減色手段により減色した画像データに対して前記圧縮手段による処理を行うことにより得られた補間色のデータ量と、前記画像データに対して前記圧縮手段による処理を行うことにより得られた補間色のデータ量との差分である削減量を算出する削減量算出手段、
前記全体補間データ量および前記削減量に応じて、可逆符号化、もしくは非可逆符号化のいずれを行うかを選択する選択手段、
前記選択手段により可逆符号化を行うと選択された場合、前記圧縮手段により出力された前記代表色からなる縮小画像データを可逆符号化する可逆符号化手段、
前記選択手段により非可逆符号化を行うと選択された場合、前記圧縮手段により出力された前記代表色からなる縮小画像データを非可逆符号化する非可逆符号化手段
として機能させるためのプログラム。

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


【公開番号】特開2012−74897(P2012−74897A)
【公開日】平成24年4月12日(2012.4.12)
【国際特許分類】
【出願番号】特願2010−217759(P2010−217759)
【出願日】平成22年9月28日(2010.9.28)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】