(57)【要約】      （修正有）【課題】画像中のタイルを単位とする写真領域か、非写真領域かの属性判定を精度よく判定する。【解決手段】タイル情報生成部は、着目タイルを、予め設定されたサイズの領域で分割し、各分割した領域を画素間で同一性があると表現できるか否かを判定して当該判定結果を示すフラグを生成し、同一性があるものとして表現できない領域については更に小さいサイズの領域に分割して前記判定とフラグの生成を再帰的に繰り返すと共に、前記領域が予め設定した特定サイズとなり、尚且つ、当該特定サイズの領域が前記同一性があるものとして表現できなくなった場合には、当該特定サイズの領域が、１成分当たりＭビットで、Ｎ個の成分を有する画素で表現されるものとして、予め設定したビット数の画素情報を生成する。符号化方式判定部は、生成した前記フラグと画素情報の合計をデータ量と、予め設定した閾値とを比較し、当該比較結果に従い、着目タイルの属性を判定する。【選択図】図１
2015220642.tif 000002
【特許請求の範囲】
【請求項１】
画像における複数画素で構成されるタイルを単位に、その属性を判定する画像処理装置であって、
着目タイルの画素について、画素間で同一性があると表現できるか否かを判定して当該判定結果を示すフラグ情報を生成し、前記同一性があるものとして表現できない画素については、１成分当たりＭビットで、Ｎ個の成分を有する画素で表現されるものとして、予め設定したビット数の画素情報を生成する生成手段と、
該生成手段が生成した前記フラグ情報と前記画素情報を合計したデータ量と、予め設定した閾値とを比較し、当該比較結果に従い、前記着目タイルの属性を判定する判定手段と
を有することを特徴とする画像処理装置。
【請求項２】
タイルを可逆符号化する可逆符号化手段と、
タイルを非可逆符号化する非可逆符号化手段と、
前記判定手段の判定結果が、前記データ量が前記閾値を超えると判定した場合には、前記着目タイルについては前記非可逆符号化手段で得られた符号化データを格納し、前記判定結果が前記データ量が前記閾値以下であることを示している場合には、前記着目タイルについては前記可逆符号化手段で得られた符号化データを格納する格納手段と
を更に有することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記着目タイルと、当該着目タイルの直前に位置するタイルとが同一であるか否かを判定し、同一であれば同一タイルが連続していることを示すリピートコードを、前記着目タイルの符号化データとして前記格納手段に出力するリピートコード出力手段を更に有することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記生成手段は、前記着目タイル中の予め設定された２×２画素の中の１つを出力することで、タイルサイズよりも小さいサイズの縮小タイル画像を生成する縮小手段を含み、
前記生成手段は、前記縮小手段で得られる前記縮小タイル画像を構成する画素から、前記２×２画素における残りの３画素を復元するための情報を生成するために、前記フラグ情報と前記画素情報を生成する
ことを特徴とする請求項１に記載の画像処理装置。
【請求項５】
符号化対象の画像の全タイルについて符号化を終えたとき、前記格納手段に格納した総符号化データの量が、予め設定された目標符号量を超えている場合、前記格納手段に格納された符号化データのうち、非可逆符号化データの一部を削除して前記総符号化データ量が前記目標符号量以下に調整する符号量制御部を更に有することを特徴とする請求項２又は３に記載の画像処理装置。
【請求項６】
前記非可逆符号化手段は、ＪＰＥＧ２０００に従ってタイルを非可逆符号化し、
前記符号量制御部は、前記総符号化データ量が前記目標符号量以下となりまで、前記格納手段に格納された非可逆符号化データの最下位ビットのビットプレーンの符号化データから上位のビットプレーンの符号化データを削除する
ことを特徴とする請求項５に記載の画像処理装置。
【請求項７】
コンピュータが読み込み実行することで、前記コンピュータに、請求項１乃至６のいずれか１項に記載の画像処理装置の各手段として機能させるためのプログラム。
【請求項８】
請求項７に記載のプログラムを格納した、コンピュータが読み取り可能な記憶媒体。
【請求項９】
画像における複数画素で構成されるタイルを単位に、その属性を判定する画像処理装置の制御方法であって、
生成手段が、
着目タイルの画素について、画素間で同一性があると表現できるか否かを判定して当該判定結果を示すフラグ情報を生成し、前記同一性があるものとして表現できない領域については、１成分当たりＭビットで、Ｎ個の成分を有する画素で表現されるものとして、予め設定したビット数の画素情報を生成する生成工程と、
判定手段が、
該生成工程が生成した前記フラグ情報と前記画素情報を合計したデータ量と、予め設定した閾値とを比較し、当該比較結果に従い、前記着目タイルの属性を判定する判定工程と
を有することを特徴とする画像処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像内の領域毎の属性の判定技術、特に、注目領域が写真領域か、それ以外かの判定技術に関するものである。
【背景技術】
【０００２】
従来、画像をｍ×ｎ画素で構成されるタイルに分割する構成、並びに、このタイルを可逆符号化する構成、非可逆符号化する構成を備え、いずれか一方の符号化結果を着目タイルの最終符号化データとして出力する画像符号化技術が提案されている。
【０００３】
この技術は、比較的画質劣化が目に付きにくい写真領域などでは非可逆符号化方式を適用することで圧縮率を高めている。そして、反対に、画質劣化が目に付きやすい文字、線画、ＣＧ部分などでは可逆符号化方式を用いることで視覚的な画質劣化を抑制している。
【０００４】
画質劣化を抑え、かつ符号量を低減するためには領域ごとにその属性(写真領域または写真領域以外)を適切に判断することが重要である。そして、可逆符号化データの情報量や色数を参照して、可逆／非可逆を選択する方法としては、特許文献１や特許文献２が知られている。
【０００５】
また、従来より、画質の劣化を極力抑えつつ符号化後データを規定容量に収めたいという要求も多くあった。たとえば、ページプリンタのような画像形成装置では、入力されたページ記述言語を画像データに変換し、その画像データを符号化して所定領域内に一時記憶するために、符号化後データの符号量(データ量)を制御する必要がある。また、クラウド上のサーバから、クライアントとなるＭＦＰに対して、画像データをネットワークでデータを送信する際には、各ＭＦＰの受信メモリ容量に応じて送信データ量を制御する必要がある。
【０００６】
このような要求に対して、上述のように１枚の画像を可逆符号化方式と非可逆符号化方式を領域毎に使い分けて圧縮した後に、非可逆符号化された領域で符号量制御を行う手法として、特許文献３や特許文献４が知られている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平０８−３６６３５号公報
【特許文献２】特許第５１１６６５０号公報
【特許文献３】特開２００６−１４８５８５号公報
【特許文献４】特許第４６９３６０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
クラウド上のサーバにある画像データをクライアントとなる様々なＭＦＰ（印刷機能を有する複合機）で印刷する場合には、サーバは画像データを符号化し、受信側のＭＦＰのメモリ容量に収まるように符号量制御を行い、送信する。符号データを受信したＭＦＰは、符号データを復号し、それぞれのデバイス特性に合わせたＣＭＹＫ画像に変換して印刷する。
【０００９】
また、サーバ上には、その使用用途などに応じて、同一の画像から複数の異なる色空間画像に変換された画像（たとえばＲＧＢ画像とＣＭＹＫ画像）が保存されていることがある。あるいは、同一画像から異なるビット精度の画像（たとえば１成分当たり８ビットと１６ビット）が保存されていることもある。
【００１０】
このような場合、特許文献１や特許文献２のように、領域ごとに写真領域か否かを判断すると、同一の画像であるにも関わらず色数やビット精度の違いによって、その判定結果が異なることが知られている。なぜなら、特許文献１や特許文献２が判定に使用しているデータは、色数やビット精度に依存する画素値を出力するパターンと、それらに依存しないフラグビットのみを出力するパターンとが混在するデータであるためである。この２つのパターンの混在する割合が、画像毎に異なるため、符号化対象画像の色数や各色のビット数によって、同一の画像パターンであっても、異なる符号量(圧縮率)のデータとなってしまうためである。したがって、その符号データ量を用いて属性判定を行い、その判定結果に基づいて符号化方式を選択すると、領域によっては、異なる符号化方式が選択される。
【００１１】
その後に非可逆領域のデータのみを削除して、所定の目標符号量以内に収める場合には、判定結果の違いが顕著になる。同一の画像から作成されたＲＧＢとＣＭＹＫ画像に対して同一の符号量制御を行っているにも関わらず、判定結果の違いにより、劣化する領域が異なり、そのプリント結果が著しく異なるという問題が生じた。同様の問題は、同一画像から作成された１成分当たり１６ビットの画像と８ビットの画像についても生じる。
【００１２】
本発明は係る問題点に鑑みなされたものであり、画像中のタイルを単位とする写真領域か非写真領域かの属性判定を、対象とする画像がいくつの色成分で構成され、かつ１色成分が何ビットで構成されているかとは無関係に精度よく判定する技術を提供しようとするものである。
【課題を解決するための手段】
【００１３】
この課題を解決するため、例えば本発明の画像処理装置は以下の構成を備える。すなわち、
画像における複数画素で構成されるタイルを単位に、その属性を判定する画像処理装置であって、
着目タイルの画素について、画素間で同一性があると表現できるか否かを判定して当該判定結果を示すフラグ情報を生成し、前記同一性があるものとして表現できない画素については、１成分当たりＭビットで、Ｎ個の成分を有する画素で表現されるものとして、予め設定したビット数の画素情報を生成する生成手段と、
該生成手段が生成した前記フラグ情報と前記画素情報を合計したデータ量と、予め設定した閾値とを比較し、当該比較結果に従い、前記着目タイルの属性を判定する判定手段とを有する。
【発明の効果】
【００１４】
本発明によれば、画像中のタイルを単位とする写真領域か、非写真領域かの属性判定を、対象とする画像がいくつの色成分で構成され、かつ１色成分が何ビットで構成されているかとは無関係に精度よく判定することができる。
【図面の簡単な説明】
【００１５】
【図１】第１の実施形態における画像符号化装置のブロック構成図。
【図２】第１の実施形態における画像符号化処理のフローチャート。
【図３】第１の実施形態におけるタイル分割およびブロック分割、画素ピースの関係図。
【図４】第１の実施形態におけるタイルのエンコード処理のフローチャート。
【図５】第１の実施形態におけるタイル情報生成のフローチャート。
【図６】第１の実施形態における補間データ生成のフローチャート。
【図７】第１の実施形態におけるピースラインとその判定結果を説明する図。
【図８】第１の実施形態におけるノンフラットピースの補間データ生成のフローチャート。
【図９】２×２画素のピースにおける２色の配置パターンを示す図。
【図１０】第２の実施形態におけるタイル情報生成のフローチャートの図。
【図１１】第２の実施形態における補間データ生成のフローチャートの図。
【図１２】第２の実施形態におけるノンフラットピースの補間データ生成のフローチャート。
【発明を実施するための形態】
【００１６】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
【００１７】
［第１の実施形態］
実施形態における画像符号化装置が符号化しようとする対象の画像データは、１コンポーネント（成分）で構成されるＧｒａｙ画像、３コンポーネントで構成される画像（例えばＲＧＢ画像）および、４コンポーネントで構成される画像（例えばＣＭＹＫ画像）であるものとする。また、各コンポーネントはすべて８ビットで、０〜２５５の範囲の輝度値あるいは濃度値を表現した画素データにより構成されるものとする。符号化対象の画像データの並びは点順次、すなわち、ラスタスキャン順に各画素を並べているものとする。例えば、ＲＧＢ画像であれば各画素は構成するＲ，Ｇ，Ｂの順番で各成分のデータが並んでおり、ＣＭＹＫ画像であればＣ，Ｍ，Ｙ，Ｋの順番で各成分のデータデータを並んでいるものとする。更に、符号化対象の画像は水平方向Ｗ画素、垂直方向Ｈ画素により構成されるものとする。そして、説明の簡易化のため、Ｗ，Ｈは後述する符号化処理単位、タイルのサイズ（本実施形態では水平、垂直方向とも１２８画素）の整数倍であるとして説明する。上記条件は、本第１の実施形態で説明される技術内容の理解を容易にするためのものであることに理解されたい。
【００１８】
まず、実施形態における第１の特徴点は、符号化対象の画像の画素がいくつの成分で構成されていても、かつ、１成分が何ビットであっても、同じ基準でタイルを単位に属性を判定するものである。そのため、実施形態で説明する画像処理装置は、複数画素で構成される着目タイルを、予め設定されたサイズの領域で分割し、各分割した領域を画素間で同一性があると表現できるか否かを判定して当該判定結果を示すフラグを生成し、前記同一性があるものとして表現できない領域については更に小さいサイズの領域に分割して前記判定とフラグの生成を再帰的に繰り返すと共に、前記領域が予め設定した特定サイズとなり、尚且つ、当該特定サイズの領域が前記同一性があるものとして表現できなくなった場合には、符号化対象の画像がいくつの成分で構成され、１成分がいくつのビットであったとしても、その特定サイズの領域が、１成分当たりＭビットで、Ｎ個の成分を有する画素で表現されるものとして、予め設定したビット数の画素情報を生成する生成部（後述するタイル情報生成部）を有する。そして、実施形態に開示される画像処理装置は、更に、その生成したそのフラグとその画素情報の合計をデータ量と、予め設定した閾値とを比較し、閾値以下であるか、閾値を超えるかで、着目タイルの属性を判定する判定部（後述する符号化方式判定部）を有する。以下、この構成を有する具体例を第１の実施形態として説明する。
【００１９】
図１は、第１の実施形態における画像処理装置のブロック構成図である。以下、その構成と機能について説明する。
【００２０】
画像入力部１０１は符号化対象となる画像データを順に入力し、ラインバッファ１０２に出力する。入力源は、デジタルカメラ、イメージスキャナ、画像データを記憶した記憶装置（メモリカードやネットワーク上のファイルサーバ）でも構わず、その種類は問わない。
【００２１】
ラインバッファ１０２は画像データを所定のライン数（Ｔ_ｈ）分格納する領域を持ち、画像入力部１０１から入力される画像データを順次格納していく。ここで、Ｔ_ｈは後述するタイル分割部１０３で切り出される矩形領域（タイル）の垂直方向の画素数であり、本実施形態では“１２８”である。以降、符号化対象画像データをＴ_ｈラインの幅で分割したデータをストライプと呼ぶ。ラインバッファ１０２に必要とされる容量、即ち、１ストライプのデータ量はＷ×Ｔ_ｈ×色成分数×１色成分当たりのビット数である。先に述べたとおり、説明の便宜上、垂直方向の画素数ＨはＴ_ｈの整数倍であるとし、画像の末尾で不完全なストライプが発生しないものとする。
【００２２】
ラインバッファ１０２にストライプの画像データ、即ち、Ｔ_ｈライン分の画像データが格納されると、タイル分割部１０３はラインバッファ１０２に格納された画像データから水平方向Ｔ_ｗ画素、垂直方向Ｔ_ｈ画素で構成されるタイルに分割する。そして、タイル単位に読み出してタイルバッファ１０４へ格納する。前述したように、本実施形態では符号化対象の画像の水平方向画素数ＷはＴ_ｗの整数倍としているので、タイルに分割した場合に、１ストライプ内に不完全なタイルは発生しないものとする。なお、本実施形態ではＴ_ｗ＝Ｔ_ｈ＝１２８としているので、１タイルのサイズは１２８×１２８画素となる。
【００２３】
タイルバッファ１０４は２タイル画像データ分の記憶領域を持ち、タイル分割部１０３から出力されるタイルデータを、２つ前のタイルを格納したメモリ領域に上書きすることで、現タイルとその１つ前のタイルの２つのタイル画像データを保持する。タイルバッファ１０４は格納した現タイル画像データを、タイル情報生成部１０５、符号化方式判定部１０７、並びに、非可逆符号化部１０９に出力する。
【００２４】
タイル情報生成部１０５は、タイルバッファ１０４より入力したタイル画像データから、タイル情報を生成し、タイル情報バッファ１０６と符号化方式判定部１０７へ出力する。本第１の実施形態におけるタイル情報生成部１０５は、特許文献２に開示された手法を利用する例を説明する。つまり、このタイル情報生成部１０５は、タイル内の２×２画素のブロックを単位に、ブロックの代表する１画素を決め、その代表画素で構成される縮小タイル画像を生成する。つまり、この縮小タイル画像は、オリジナルのタイルの水平、垂直とも１／２の解像度の６４×６４画素のサイズとなる。また、タイル情報生成部１０５は、縮小タイル画像からオリジナルのタイル画像を復元するため、代表１画素から元の２×２画素のブロック内の４画素を復元するため可逆符号化された情報（以下、解像度補間情報という）を、ブロック単位に生成する。つまり、タイル情報生成部１０５が生成するタイル情報は、縮小タイル画像と解像度補間情報で構成されるものである。なお、詳細は後述する。
【００２５】
符号化方式判定部１０７は、タイルバッファ１０４に格納された２つのタイルの画像データと、タイル情報生成部１０５から出力されたタイル情報に基づいて、着目（現）タイルがその直前のタイルと同一であったか否かの判定、そして非同一であった場合には、該当するタイルの属性が写真領域であるか、非写真領域（テキスト、線画、ＣＧ画像）であるかを判定し、その判定結果の信号をスイッチ１１１に出力する。
【００２６】
符号化方式判定部１０７は、タイルバッファ１０４に格納されている着目タイル中の各画素と、直前のタイル中の各画素を比較し、全ての画素が一致している場合、リピートコード出力部１１０を作動させる。リピートコード出力部１１０は、符号化方式判定部１０７によって作動した場合、着目タイルは１つ前のタイルと同一であることを示すリピートコードを、着目タイルの符号化データとして、符号データバッファ１１２に出力する。なお、符号データバッファ１１２にはリピートコード以外にも、以下に説明する、可逆符号化データ、非可逆符号化データの３種類の符号化データが混在して格納され得る。よって、符号化データの先頭には、いずれに該当するのかを示す２ビットの識別情報が付加されるものとする。リピートコードは、この識別情報を兼ねることになる。実施形態における、リピートコードはバイナリの“１０”であるものとする。また、リピートコード出力部１１０は、画像の符号化を開始してから、終了するまでに自身が出力したリピートコードのデータ量を累積カウントし、符号化処理を終えたときに、その総データ量を符号量制御部１１３に通知するものとする。
【００２７】
また、タイルバッファ１０４に格納されている２つのタイルデータが不一致であった場合、本実施形態における符号化方式判定部１０７は、タイル情報を構成する解像度補間情報の符号量に基づいて符号化方式を判定し、その判定結果を示す信号をスイッチ１１１に出力する。
【００２８】
非可逆符号化が選択された場合には、非可逆符号化部１０９はタイルバッファ１０４から入力されたタイル画像データを非可逆符号化する。そして、非可逆符号化部１０９は、『非可逆符号化を示す識別情報（実施形態ではバイナリの“０１”）＋非可逆符号化データ』を符号データバッファ１１２へ出力する。本実施形態では、非可逆符号化部１０９は、ＪＰＥＧ２０００符号化に従ってタイル画像データを非可逆符号化するものとする。ＪＰＥＧ２０００は、周波数変換（ウェーブレット変換）して得られた各係数の同じビット位置で構成されるビットプレーンごとに符号化データを生成する。よって、ＪＰＥＧ２０００で得られた符号化データは、ビットプレーンの符号化データを削除するだけで、容易にその符号量を調整できる、というメリットがある。また、非可逆符号化部１０９は、画像の符号化を開始してから、終了するまでに自身が生成した非可逆符号化データのデータ量を累積カウントし、符号化処理を終えたときに、非可逆符号化データの総符号量を符号量制御部１１３に通知するものとする。
【００２９】
また、符号化方式判定部１０７が可逆符号化を選択した場合、可逆符号化部１０８はタイル情報バッファ１０６から出力されたタイル情報中の縮小タイル画像データから可逆符号化データを生成する。そして、可逆符号化部１０８は、『可逆符号化を示す識別情報（実施形態では、バイナリの“００”）＋可逆符号化データ＋解像度補間情報』を符号データバッファ１１２へ出力する。本実施形態における可逆符号化部１０８は、ＪＰＥＧ−ＬＳに従って縮小タイル画像データを可逆符号化するものとする。なお、可逆符号化部１０８は、タイル情報バッファ１０６に格納された解像度補間情報は既に符号化されてるので、そのまま符号データバッファ１１２へ出力する。また、可逆符号化部１０８は、画像の符号化を開始してから、終了するまでに自身が生成した可逆符号化データのデータ量を累積カウントし、符号化処理を終えたときに、可逆符号化データの総符号量を符号量制御部１１３に通知するものとする。
【００３０】
符号データバッファ１１２は、符号化対象の画像の全タイルの符号データを保持する。そして、符号データバッファ１１２は、全タイルの符号データがバッファ内に取り込まれたことに応じて、タイル毎の符号化方式を示す情報と、その全符号データとを符号量制御部１１３に出力する。
【００３１】
符号量制御部１１３は、目標符号量設定部１１４から最終的に出力する符号データ量の上限値を取得する。目標符号量設定部１１４は、例えば符号化対象の総画素数、成分数、１成分当たりのビット数に基づき、上限値、すなわち、符号化対象の画像に対する目標符号量を設定するものとする。
【００３２】
そして、符号量制御部１１３は、符号データバッファ１１２内に格納された符号化データの総データ量が、目標符号量設定部１１４から設定された上限値を超えていた場合、非可逆符号化されたタイルの符号データの一部を削除することで、総符号データ量を目標符号量設定部１１４により設定された上限値以内（目標符号量以下）に調整する。
【００３３】
ここで、符号データバッファ１１２に格納された全タイルの符号化データの総符号量をＣAとし、上限値をＣmaxとしたとき、符号量制御部１１３は「ＣA＞Ｃmax」となったとき、符号量を調整する処理を行う。一方、「ＣA≦Ｃmax」の場合、符号量制御部１１１は符号量の調整処理を行わない。符号量制御部１１３の符号量調整処理を簡単に説明すると、次の通りである。
【００３４】
今、符号データバッファ１１２に格納された、全リピートコードの符号量をＣR、可逆符号化されたタイルの符号化データの総データ量をＣK、非可逆符号化されたタイルの符号化データの総データ量をＣHとすると次の関係式が成り立つ。
ＣA＝ＣR＋ＣK＋ＣL   …（１）
ここで、『非可逆符号化されたタイル』の符号化データのそれぞれの、ビットｉ（最下位ビットをｉ＝０とする）から最上位ビットまでのビットプレーンの符号化データの総データ量をＣL(i)と表す。このようにすると、上式（１）は次式（２）のように表現できる。
ＣA＝ＣR＋ＣK＋ＣL(0)   …（２）
【００３５】
さて、符号量制御部１１３が符号量調整処理を行うのは、既に説明したようにＣA＞Ｃmaxとなった場合である。復号すること無しに、符号化データを削減できるのは非可逆符号化データである。よって、次式（３）を満たす、最小の「ｉ」を求めればよい。
ＣA＝ＣR＋ＣK＋ＣL(i)≦Ｃmax … （３）
【００３６】
具体例を示せば次の通りである。ＣA≧Ｃmaxとなったとき、符号量制御部１１３は、非可逆符号化データそれぞれから先ず最下位ビット０のビットプレーンの符号化データを削除し、ｉ＝１とした場合に式（３）を満たすか否かを判定する。否の場合には、１ビット上位のビット１のビットプレーンの符号化データを削除し、ｉ＝２とした場合について再度判定する、…という処理を繰り返し、式（３）を満たす段階で処理を終えればよい。
【００３７】
なお、更に効率を上げるため、非可逆符号化部１０９が各タイルを符号化する際に、各ビットプレーンごとに、その符号量を累積し、最後のタイルの符号化処理を終えたとき、符号量制御部１１３に通知するようにしても良い。この場合、符号量制御部１１３は通知された情報を用いた演算のみで、最小の「ｉ」を求めることができる。なお、説明を簡単にするため、ビットプレーン単位に符号化データを削除する方法を述べたが、サブバンドに分けたり、サブビットプレーンに分類するなど細分化して符号量制御を行っても良い。
【００３８】
符号出力部１１５では、符号量制御部１１３から出力された符号データを所定のフォーマットに従うように並べ替え、ファイルとして出力する。
【００３９】
実施形態における符号化処理の概ねの処理は上記の通りであるが、以下、図２のフローチャートに従って、実施形態における画像処理装置の符号化処理を説明する。
【００４０】
ステップＳ２０１では、符号化対象の画像に基づき目標符号量（符号化データの上限値）を設定する。次いで、ステップＳ２０２にて、符号化対象の画像から１ストライプ分の画像データをラインバッファ１０２に格納する。そして、ステップＳ２０３にいて、タイル分割部１０３が、ラインバッファ１０２の左端から順（ラスタースキャン順）に１タイル分の画像データ（実施形態では１２８×１２８画素）を切り出し、タイルデータとしてタイルバッファ１０４に格納する。そして、ステップＳ０４にて、タイル情報生成部１０５、タイル情報格納部１０６、符号化方式判定部１０７、可逆符号化部１０８、非可逆符号化部１０９、リピートコード出力部１１０、並びにスイッチ１１１による、着目タイルデータの符号化処理を行う。この符号化処理で得られた着目タイルの符号化データは、符号データバッファ１１２に格納されることになる。なお、ここで生成された符号化データのデータ量（ビット数）は累積カウントされていくものとする。また、ステップＳ２０４の詳細については後述する。
【００４１】
この後、処理はステップＳ２０５に進み、着目ストライプ内の全タイルの符号化を終えたか否かを判定し、否の場合にはステップＳ２０３以降の処理を繰り返す。符号化対象の画像の水平方向の画素数はＷであるから、１ストライプ内にはＷ／Ｔ＿ｗ個のタイルが含まれる。よって、１ストライプにつき、Ｗ／Ｔ＿ｗ回の符号化処理を行ったか否かを判定すれば良い。
【００４２】
また、着目タイル内の全タイルの符号化を終えたと判断した場合には、ステップＳ２０６に進み、着目ストライブが最後のストライプであったか否か、つまり、符号化対象画像の全タイルの符号化を終えたか否かを判定する。符号化対象の画像の垂直方向の画素数はＨであるから、符号化対象画像内にはＨ／Ｔ＿ｈ個のストライプが含まれる。よって、Ｈ／Ｔ＿ｈ個のストライプについて符号化処理を行ったか否かを判定すれば良い。否の場合には、次のストライプの符号化処理を行うため、ステップＳ２０２以降の処理を行う。
【００４３】
ステップＳ２０７では、符号量制御部１１３は、符号データバッファメモリ１１２に格納された全タイルの総符号化データ量が上限値を超えたか否かを判定し、上限値以下であると判定した場合には生成された符号化データをそのまま符号出力部１１５に出力する。一方、総符号量が上限値を超えてしまった場合には、処理はステップＳ２０８に進む。このステップＳ２０８にて、符号量制御部１１３は、非可逆符号化データから部分的に符号化データを削除する処理を行い、上限値以下の符号量にした上で、他の符号化データと共に符号出力部１１５に出力する。そして、符号出力部１１５は、復号に必要な情報をファイルヘッダに格納し、各タイルの符号化データをタイル順に並べたファイルを生成し、出力する。出力対象は特に問わないが、メモリカードなどの記憶装置とする。
【００４４】
次に、図４を用いて、ステップＳ２０４の１タイル分の符号化処理を説明する。
【００４５】
既に説明したように、タイルバッファ１０４には、符号化対象の現タイルと、その１つ前のタイルの画像データが格納されている。なお、最初のタイルを符号化する場合、その１つ前のタイルは存在しないが、１つ前のタイル内の全画素は予め設定された固定値（例えば“０”）と見なして処理するものとする。この固定値は、復号装置と同じであればよい。符号化方式判定部１０７は、タイルバッファ１０４に格納された２つのタイルを比較し、その２つが全く同じであるかどうかを調べる（ステップＳ４０１）。同一であると判定された場合、符号化方式判定部１０７はリピートコード出力部１１０を作動させる信号をスイッチ１１１に出力する。この結果、リピートコード出力部１１０は、着目タイルはその直前のタイルと同じであることを示すリピートコードを符号化データとして符号データバッファ１１２に出力する（ステップＳ４０２）。
【００４６】
また、連続するタイルが非同一であると判定した場合、符号化方式判定部１０７は、タイル情報生成部１０５にてタイル情報を生成させる（ステップＳ４０３）。そして、符号化方式判定部１０７は、生成されたタイル情報と、その情報量ＬをＲＧＢ画像の場合に換算した情報量Ｌ’を出力する。タイル情報生成部１０５の処理は図５を用いて後述するが、得られるタイル情報は、文字、線画、クリップアート画像、ＣＧ画像など、写真領域以外ではその情報量は小さくなる。一方、写真領域におけるタイル情報は、その情報量が大きくなる。
【００４７】
ステップＳ４０４で、符号化方式判定部１０７は、ステップＳ４０３から出力された、換算後のタイル情報データ量Ｌ’を、予め設定した閾値ＴＨと比較する。そして、Ｌ’が閾値ＴＨ以下であれば、着目タイルは写真領域以外と判断し、可逆符号化部１０８を作動させ、ステップＳ４０５に処理を進める。また、Ｌ’が閾値を上回る場合には、着目タイルは写真領域と判定され、非可逆符号化部１０９を作動させ、ステップＳ４０７に処理を進める。なお、ここで述べた閾値ＴＨは、ユーザが適宜設定してもよいが、ステップＳ４０３で生成されるタイル情報の特性によって、あらかじめ実験的に決めておくことが望ましい。本実施形態の場合、ＲＧＢ画像（各成分８ビット）における非圧縮のタイル画像データの１／８、すなわち、１２８×１２８×２４／８＝４９１５２[ビット]とする。
【００４８】
ステップＳ４０５に処理が進んだ場合、可逆符号化部１０７が作動する。可逆符号化部１０７は、着目タイルが可逆符号化されることを示す識別情報（実施形態では２ビット）を符号データバッファ１１２に出力する。そして、可逆符号化部１０７は、着目タイルの縮小タイル画像を可逆符号化し、その結果得られた符号化データと、解像度補間情報とを、先に出力した識別情報に後続して、符号データバッファ１１２に出力する。なお、実施形態で用いる可逆符号化は、ＪＰＥＧ−ＬＳに従うものとし、その説明は省略する。
【００４９】
一方、ステップＳ４０７に処理は進んだ場合、非可逆符号化部１０９が作動する。非可逆符号化部１０９は、着目タイルが非可逆符号化されることを示す識別情報を符号データバッファ１１２に出力する。そして、非可逆符号化部１０９はタイルバッファ１０４に格納された現タイル画像を非可逆符号化し、その符号化データを先に出力した識別情報に後続して符号データバッファ１０４に出力する。なお、実施形態での非可逆符号化はＪＰＥＧ２０００に従うものとし、その説明は省略する。
【００５０】
次に、上記ステップＳ４０３におけるタイル情報生成部１０５の処理を、図５のフローチャートに従って説明する。
【００５１】
タイル情報生成部１０５は、タイルバッファ１０４に格納された符号化対象の現タイルを、幅B_w[画素]、高さB_h[画素]のブロックに分割する。本実施形態の場合、B_w＝B_h＝３２とする。１タイルは、１２８×１２８[画素]であるので、１個のタイルは４×４の１６個のブロックに分割されることになる。
【００５２】
図３（ａ）は符号化対象の画像とタイルとの関係を示し、同図（ｂ）は１つのタイルと上記のブロックの関係を示している。１つのタイル内の１６個のブロックは、左上のブロックからラスター順にＢ０、Ｂ１、…、Ｂ１５と番号付けて区別する。
【００５３】
ステップＳ５０２では、ブロック用カウンタb_cntにゼロを代入して初期化する。ブロック用カウンタb_cntは、処理すべきブロック番号(着目ブロックの番号)を示す値を保持することになる。ステップＳ５０３では、ブロック毎の補間データサイズを格納する変数table[b_cnt]にゼロを代入し初期化する。本実施形態では、b_cnt=０〜１５である。ステップＳ５０４では、b_cnt番目のブロックの補間データを生成する。また、table[b_cnt]には、符号化対象の画像がGray, CMYKデータであっても、ステップＳ５０４での処理において、RGB画像を処理した場合の補間データ量に換算された値が格納される。この補間データ生成処理および、換算後のデータ量算出方法については、図６を用いて後に詳しく説明する。ステップＳ５０５では、ブロック用カウンタb_cntに１を加える。ステップＳ５０６では、b_cntを１６と比較する。ブロック用カウンタb_cntが１６に等しければ、符号化対象タイルの全てのブロックに対して補間データを生成し終えたものとし、ステップＳ５０７へ進む。そうでなければ、まだ補間データを生成していないブロックがあるものと判断し、処理をステップＳ５０４へ戻す。ステップＳ５０７では、符号化対象画像の色空間に関わらず、タイルの補間データ量Ｌから、ＲＧＢ画像データを処理した場合の補間データ量に換算した値Ｌ’を算出する。すなわち、table[b_cnt](b_cnt=0〜15)の値を全て加算した値がL’となる。
【００５４】
上記ステップＳ５０４における、ブロックの補間データ生成処理を説明する前に、補間データ生成時に使用する用語の説明をする。
【００５５】
補間データ生成時には、各ブロック（実施形態では３２×３２画素）について、２×２画素の領域から１画素を抽出するサブサンプリングを行う。この２×２画素のデータを、上記ブロックと区別するために、以降ピースと呼ぶ。図３（ｃ）に、ブロックとピースＰｎの関係を示す。ここで、１ブロック内には、２５６個のピースが含まれるので、ピースＰｎのｎは０乃至２５５の値をとり得る。また、着目するピースPnの中の４つの画素を、同図のようにPn(0,0), Pn(0,1), Pn(1,0), Pn(1,1)と表す。また、注目ピースPnの１つ前（左隣）のピースをPn-1, Pnの１つ後(右隣)のピースをPn+1と表現し、Pnの下のピースをPn＋pと表す。ここで"p"はブロック内の水平方向のピース数であり、ブロックの水平方向の画素数Ｂ_ｗを用いて表せば、p=B_w／２である。本実施形態では、Ｂ_ｗ＝３２であるので、p=１６となる。
【００５６】
さらに、以下の式（４）が成り立つ場合、つまり、そのピース内の４画素が全て同じ（同色）である場合、そのピースをフラットピースと呼び、それ以外のピースをノンフラットピースと呼ぶ。
Pn(0,0)＝Pn(0,1)＝Pn(1,0)＝Pn(1,1)  …（４）
【００５７】
また、ブロック内で水平方向に連続するB_w／２個(本実施形態では16個)のピース群をピースラインと呼ぶ。ピースライン内の全てのピースがフラットピースである場合、そのピースラインをフラットピースラインと呼ぶ。そして、少なくとも１つのノンフラットピースを含むピースラインを、以降、ノンフラットピースラインと呼ぶ。また、ブロック外部の画素(周囲画素)を参照する場合には、各色成分の値が２５５であるものとして処理する。
【００５８】
以下、上記の用語の定義の下、図６を参照してタイル情報生成部１０５における１ブロックについての補間データ生成の処理フローを説明する。１タイルには１６個のブロックが含まれるので、以下に説明する処理を１６回行うことになる、
先ず、ステップＳ６０１において、着目するブロックを構成するすべてのピースについて、左上隅の画素Pn(0,0)を、１／２縮小ブロックデータの１画素として抽出し、１／２縮小ブロックデータを生成する。そして、ステップＳ６０２以降では、１／２縮小ブロックデータから元の解像度のブロックデータを復元するための補間データを生成する。
【００５９】
ステップＳ６０２では、着目ブロックがフラットブロックか否かを判定する。すなわち、着目ブロックを構成する全てのピースに対して、フラットピースか、ノンフラットピースかの判定を行い、すべてのピースがフラットピースであれば、フラットブロックと判定し、ステップＳ６０３へ進む。そうでなければ、ステップＳ６０５へ進む。ステップＳ６０３では、１ビットのフラグ“１”を補間データとして出力する。ステップＳ６０４では、着目ブロックb_cntの補間データ量として、table[b_cnt]に１を加算し、このフローを終了する。つまり、table[b_cnt]は予めゼロで初期化されているので、フラットブロックの場合、補間データ量table[b_cnt]は１となる。
【００６０】
一方、着目ブロック内に少なくても１つのノンフラットピースが存在する場合(ステップＳ６０２がＮＯ)には、処理をステップＳ６０５へ移す。ステップ６０５では、着目ブロックがノンフラットブロックであることを示すため、１ビットのフラグ“０”を補間データとして出力する。そして、ステップＳ６０６でtable[b_cnt]に１を加算する。次に、ステップＳ６０７では、水平方向に連続するｐ（＝Ｂ_ｗ／２＝１６）個のピースからなるピースラインの一つに着目し、ステップＳ６０２と同様に、フラットピースラインかノンフラットピースラインかの判定を行う。フラットピースラインの場合（ＹＥＳ）は、ステップＳ６０８へ処理を移し、１ビットのフラグ“１”を補間データとして出力する。そして、ステップＳ６０９にて、着目ブロックb_cntの補間データ量として、table[b_cnt]に１を加算する。一方、着目ピースラインがノンフラットピースラインであると判定した場合(ステップＳ６０７がＮＯ)には、処理をステップＳ６１０へ移し、１ビットのフラグ“０”を補間データとして出力する。そして、ステップＳ６１１でtable[b_cnt]に１を加算する。
【００６１】
ステップＳ６１０に至る場合には、着目するピースライン内に少なくても１つのノンフラットピースが存在することになる。このため、着目するピースラインを構成するｐ（＝Ｂ_ｗ／２＝１６）個のピースそれぞれについて、フラット／ノンフラットピースの判定結果を示すフラグの配列が必要となる。ここで、ピースのフラグは１ビットでよく、フラットピースの場合は“１”、ノンフラットピースの場合は“０”とする。本実施形態の場合、ピースラインはｐ（＝１６）個のピースで構成されるので、ノンフラットピースラインのフラグ配列はｐビット、すなわち１６ビットとなる。
【００６２】
ステップＳ６１２では、着目するピースラインのフラグ配列を以前のノンフラットピースラインのフラグ配列と比較し、一致するか否かを判定する。なお、着目ピースラインが着目ブロックの最初のピースラインである場合には、それ以前のピースラインは存在しない。そこで、着目ブロックのピースラインの判定に先立ち、内部のメモリにピースラインの全てのピースがノンフラットピースであることを示す情報を予め用意しておく。つまり、フラットピースを“１”、ノンフラットピースを“０”と定義したとき、初期値としてｐ個（ｐビット）の“０”を用意しておく。以降、このｐビットのフラグ配列を参照ノンフラットピースライン情報と呼ぶ。
【００６３】
従って、ステップＳ６１２では、着目ピース内の各ピースのフラットピース／ノンフラットピースの判定結果の並びが、参照ノンフラットピースライン情報と一致するか否かを判定することになる。
【００６４】
ここで、図７（ａ）のブロックデータを例にして、ステップＳ６１２の判定処理を説明する。このブロックデータは、５番目と６番目のピースラインがノンフラットピースラインであり、それ以外のピースラインがフラットピースラインの例である。図７（ａ）のブロックに対するピースのフラット／ノンフラットの判定結果は、図７（ｂ）に示すとおりとなる。
【００６５】
今、５番目のピースラインが着目ピースラインであるとする。このピースラインは着目ブロック内の最初のノンフラットピースラインであると判定される。したがって、この着目ピースラインに含まれるピースの判定結果と、参照ノンフラットピースライン情報（１６ビットの“０００…０００”）と比較され、一致すると判定される。
【００６６】
このように、着目ピースラインの判定結果と参照ノンフラットピースライン情報とが一致したと判定した場合には、ステップＳ６１３に処理を進める。そして、ステップＳ６１３にて、着目ピースライン内の各ピースの判定結果が、参照ノンフラットピースライン情報と一致したことを示す１ビットのフラグ“１”を補間データとして出力する。そして、ステップＳ６１４にてtable[b_cnt]に１を加算する。この場合、ピース毎のフラット／ノンフラット判定結果を示すｐ（＝Ｂ_ｗ／２）ビットのフラグは出力しなくて良い。
【００６７】
一方、着目ピースラインのフラット／ノンフラット判定結果を示すフラグの配列が、参照ノンフラットピースラインと一致しない場合（ステップＳ６１２がＮＯ）は、ステップＳ６１５へ処理を移す。ここでは、１ビットのフラグ“０”を出力し、ピースラインのフラット／ノンフラット判定結果を示すフラグ（ｐビット）を出力する。ステップＳ６１６では、ステップＳ６１５で出力されたビット数、(p+1)をtable[b_cnt]に加算する。本実施形態の場合、“１７”をtable[b_cnt]に加算することになる。ステップＳ６１７では、ステップＳ６１５で出力されたｐビットのピースラインの判定結果で参照ノンフラットピースライン情報を更新する。ステップＳ６１８では、着目ピースラインが最終行かどうかを判定し、最終行であれば、ステップＳ６２０へ進み、そうでなければ、ステップＳ６１９へ進む。ステップＳ６１９では、着目ピースラインを次のピースラインへ移動させて、ステップＳ６０７へ処理を戻す。ステップＳ６２０では、着目ブロック内の全てのノンフラットピースについて、補間データを生成し、出力する。このノンフラットピースの補間データ出力については、図８を用いて詳しく説明する。
【００６８】
ステップＳ８０１では、ステップＳ６１８から出力されたフラグ情報を解析し、最初のノンフラットピースを特定する。ステップＳ８０２において、ステップＳ８０１で特定されたノンフラットピースを、着目ピースPnとして、２×２画素のピースデータを入力する。そして、ステップＳ８０３にて、着目ピースPnが以下の式（５）が成立するピースであるかどうかの判定を行う。
Pn (0, 1)＝Pn+1 (0, 0)
かつ
Pn (1, 0)＝Pn+p (0, 0)
かつ
Pn (1, 1)＝Pn+p+1 (0, 0)      …（５）
上記式（５）が成り立つピースPnを、以降、周囲３画素一致ピースと定義する。
【００６９】
ここで、Pn+1 (0, 0)、Pn+p (0, 0)、Pn+p+1 (0, 0)は、いずれも１／２縮小ブロックデータの画素として抽出された画素であることに注目されたい。従って、着目ピースPnが式（５）の成立するピースである場合には、Pn (0, 1)、Pn (1,0)、Pn (1, 1)の位置の３画素が、周囲の縮小画素から再現可能であると判断できる。ただし、ピースがブロックの右端もしくは、下端に位置する場合には、ピースの外側の画素を参照することができない。そのため、外側の画素の各成分を仮想的に、予め任意の値を設定しておき、その画素値との一致／不一致判定を行うこととする。本実施形態では、仮想的に、各成分値として“２５５”を設定しておく。しかし、“２５５”に限らず、符号化側と復号側で同じ値を用いるように定めておけば、これ以外の値でも構わない。
【００７０】
図３（ｄ）に、着目する２×２画素のピースを示す。図３（ｄ）に示す画素Ｘが縮小画像生成のためにサブサンプリングされた画素を示し、着目ピースPn内の画素Pn (0, 0)に相当するものである。また、画素Ｘa、Ｘb、Ｘcは、着目ピースPn内の画素Pn (0, 1)、Pn (1,0)、Pn (1, 1)をそれぞれ示している。以下、画素Ｘ、Ｘa、Ｘb、Ｘcを用いて説明する。
【００７１】
さて、ステップＳ８０３において、式（５）が成立すると判定した場合、着目ピースPn内の画素Ｘa、Ｘb、Ｘcは、縮小画像の画素からそのまま再現できる。したがって、ステップＳ８０４へ処理を移し、１ビットのフラグ“１”を出力する。そして、ステップＳ８０５で出力したビット数１をtable[b_cnt]に加算する。その後、処理をステップＳ８２１へ進める。一方、ステップＳ８０３において、着目ピースが式（５）を満たさないと判定した場合、ステップＳ８０６へ処理を移し、１ビットのフラグ“０”を出力する。そして、補間データとして出力したビット数１をtable[b_cnt]に加算する。
【００７２】
次にステップＳ８０８へ進み、着目ピースに含まれる色数が“２”か、それ以上(３、または４色)かを判定する。なお、着目ピースはノンフラットピースであるので、色数が“１”になることはあり得ない。
【００７３】
着目ピースに含まれる色数が“２”より大きいと判定した場合、ステップＳ８１８でフラグ“０”を出力する。そしてステップＳ８１９にて、縮小画像として非使用３画素Ｘa、Ｘb、Ｘcの画素データをそのまま出力する。つまり、本実施形態の場合、１コンポーネントが８ビットであるので、Gray画像の場合には、３画素Ｘa、Ｘb、Ｘcの合計ビット数は、３×８×１＝２４ビット出力される。ＲＧＢ画像の場合には、３×８×３＝７２ビット出力される。ＣＭＹＫ画像の場合には、３×８×４＝９６ビット出力される。
【００７４】
次に、ステップＳ８２０では、補正データのビット数のカウンタtable[b_cnt]にステップＳ８１８で出力したフラグのビット数１と、ステップＳ８１９で出力した画素値のビット数をＲＧＢ画像の出力ビット数に換算した値を加算する。すなわち、本実施形態の場合、ステップＳ８２０では、符号化対象の画像がGray画像やＣＭＹＫ画像であっても、ＲＧＢ画像に換算した値、３×８×４＝７３（＝１＋７２）をカウンタtable[b_cnt]に加算することになる。その後、処理をステップＳ８２１へ移す。
【００７５】
一方、着目ピースに含まれる色数が“２”であると判定した場合、ステップＳ８０９にて出現色数が“２”であることを示す１ビットのフラグ“１”を出力する。そして、ステップＳ８１０にて、着目ブロック内の縮小画像に利用されている、図３（ｄ）の画素Ｘを除く３画素Ｘa、Ｘb、Ｘcが、図９のパターン９０１〜９０７のいずれであるのかを示す画素配置情報を出力する。図９に示すようにパターン数は全部で７つであるので、画素配置情報は３ビットあれば１つのパターンを特定できる。本実施形態では、縮小画像に利用されている画素と同じ色の画素は“１”、異なる色の画素を“０”と表し、図３(ｄ)の画素Ｘa、Ｘb、Ｘcに相当する各ビットをその順番に出力する。例えば、図９のパターン９０１に一致する場合、画素Ｘa、Ｘb、Ｘcは同色であり、かつ、縮小画像に利用されている画素Ｘの色とは異なるので、画素配置情報の３ビットは“０００”となる。また、パターン９０２の場合は“１００”、パターン９０３の場合には“０１０”、パターン９０４の場合には“００１”となる。以下、同様にして、パターン９０７までの画素配置情報のビットパターンを作成できる。
【００７６】
次いで、ステップＳ８１１では、ステップＳ８０９、Ｓ８１０で出力したビット数４をtable[b_cnt]に加算する。ステップＳ８１２では、着目ピースPn内の縮小画像に利用された画素Ｘを除くＸa、Ｘb、Ｘcのうち、画素Ｘと異なる色の画素と同じ色の画素が、近傍に存在するか否かを判断する。本実施形態では、比較する近傍の画素は着目ピースの、右隣のピースPn+1 の画素Pn+1 (0, 0)、直下のピースPn+pの画素Pn+p (0, 0)、右下に隣接するピースPn+p+1の画素Pn+p+1 (0, 0)とし、この順番に比較する。３画素のいずれかと一致するかを示せばよいので、この比較結果は２ビットで表現できる。そして、一致するのがPn+1 (0, 0)であった場合には、２ビットの“１１”、Pn+p (0, 0)と一致するなら２ビットの“０１”、Pn+p+1 (0, 0)と一致するなら２ビットの“１０”を出力する(ステップＳ８１３)。そして、ステップＳ８１４にて、ステップＳ８１３で出力したビット数２をtable[b_cnt]に加算する。
【００７７】
一方、ステップＳ８１２にて、周辺の３画素のいずれとも一致しない場合、処理をステップＳ８１５へ移し、２ビットの“００”を出力する。そして、ステップＳ８１６にて、第２色の画素値を出力する。つまり、符号化対象画像がＧｒａｙデータであれば８ビットを、ＲＧＢデータであれば２４ビットを、ＣＭＹＫデータであれば３２ビットをそれぞれ出力する。次にステップＳ８１７では、補正データのビット数のカウンタtable[b_cnt]にステップＳ８１５で出力したビット数２と、ステップＳ８１６で出力した画素値のビット数をＲＧＢ画像の出力ビット数に換算した値、すなわち２４を加算する。テップＳ８２０では、２６をカウンタtable[b_cnt]に加算することになる。
【００７８】
繰り返すが、符号化対象が画像が、１画素１成分のＧｒａｙ画像、１画素４成分（ＹＭＣＫ）の画像であっても、ＲＧＢ画像に換算するため、“２”＋“２４”をカウンタtable[b_cnt]加算する。
【００７９】
以上で、着目ピースPnの処理が終了する。その後、ステップＳ８２１にて、ステップＳ６１８から出力されたフラグ情報の続きを解析し、ノンフラットピースが着目ブロック内にまだあるのか判断する。まだ、ノンフラットピースが存在する場合には、処理をＳ８０２に戻す。ノンフラットピースが、存在しない場合にはこのフローを終了する。
【００８０】
上記のように、タイル内の全てのブロックに対して、フラット／ノンフラット判定結果と、ノンフラットピースの解析結果により生成された補間データと、タイルの縮小データが生成され、タイル情報バッファ１０６に格納される。
【００８１】
なお、２×２画素で表されるピースは、これまでの説明から分かるように、以下の(a)〜(e)の５種類に分類できる。
(a)フラットピース
(b)ノンフラットピースかつ、周囲３画素一致ピース
(c)ノンフラットピースかつ、そのピース内に出現する色数が“２”であり、周辺画素に第２色と同じ色の画素が存在するピース
(d)ノンフラットピースかつ、そのピース内に出現する色数が“２”であり、周辺画素に第２色と同じ色の画素が存在しないピース
(e)ノンフラットピースかつ、そのピース内に出現する色数が“２”より多い(３色または、４色)ピース
上記の(d), (e)に該当する補間データには画素値が含まれる。補間データ量をブロック毎にカウントする際には、(d), (e)で出力した画素値は、符号化対象の色空間に関わらず、必ずＲＧＢ画像データの画素値を出力した場合の値に換算して、補間データ量のカウンタに加算する。これにより、各ブロックの補間データtable[b_cnt]には、ＲＧＢ画像データに換算した補間データ量Ｌ’が保存される。
【００８２】
本実施形態の結果、タイル毎の符号化方式判定に使用されるタイル情報のデータ量は、符号化対象画像の色成分数に関わらず、必ずＲＧＢ画像に対する補間データ量に換算された値Ｌ’を使用することになる。したがって、同一の画像から作成されたＧｒａｙ，ＲＧＢ，ＣＭＹＫ画像に対しては、同一の判定基準を使用することができ、判定結果に違いが生じることはない。また、実施形態の説明からも明らかなように、１成分当たりのビット数が互いに異なる画像があっても、それらを統一された判定基準に従って像域判定が行えることも容易に理解できよう。また、実施形態では、１成分当たり８ビットのＲＧＢ画像に換算して像域判定を行ったが、換算する画像はＲＧＢに限られるものでもないことは上記説明から明らかである。
【００８３】
また、実施形態では、同一タイルが連続する場合の符号化効率を高めるため、リピートコード出力部１１０を設けたが、これを省いても構わない。この場合、符号データバッファ１１２に格納されるタイルの符号化データは、可逆符号化、非可逆符号化の２種類となるので、その符号化データの識別するための識別情報は１ビットで良い。これは後述する第２の実施形態でも同様である。
【００８４】
また、実施形態では符号化方式判定部１０７が符号化判定方式を判定し、その判定結果を受けて、可逆符号化部１０８、非可逆符号化部１０９、リピートコード出力部１１０のいずれか１つを作動させるものとした。しかし、処理速度をより高速にするためには、符号化方式判定部１０７にて符号化方式の判定処理中に、可逆符号化部１０８、非可逆符号化部１０９はそれぞれ符号化処理を開始するようにしても構わない。この場合、各符号化部内には、自身用のバッファメモリを設ける。そして、符号化方式判定部１０７は、符号化データバッファ１１２に、いずれからの符号化データを格納するかを選択する信号を出力すれば良い。これは後述する第２の実施形態でも同様である。
【００８５】
また、本実施形態では、タイル情報生成時の処理単位としてブロックを使用し、符号化方式判定の処理単位(符号化方式を切り替える処理単位)として、ブロックよりも大きいタイルを使用した。タイル情報生成時にはその処理単位であるブロックサイズを小さくすることで、画素値が一様である確率が高まり、フラグのみを出力する可能性が高くなる。つまり、タイル情報自体が小さくなりやすい。一方、符号化方式判定および符号化方式切替単位であるタイルサイズをある程度大きくすることで、全体の符号化効率が高まり、画像全体の符号データ量(特に非可逆圧縮データ)が小さくなりやすい。
【００８６】
なお、本実施形態ではノンフラットピースを特定するための情報を少ないデータで表現することを目的として、ブロック単位のフラットブロック判定、ピースライン単位のフラットピースライン判定を用いた。しかしながら、これに限らず、写真領域以外（文字、線画、CG部分）で多く見られるフラットピースの塊を少ないデータで表現できる手法であれば良い。例えば、フラットピースか否かを表す２値情報をランレングス符号化してノンフラットピースの位置を表現しても良い。あるいは、着目する領域がノンフラットピースを含むか否かを表す２値情報を出力し、ノンフラットピースを含む領域を再帰的に分割することで、その位置を表現するなどしても良い。
【００８７】
［第２の実施形態］
上記第１の実施形態では、タイル情報生成時に、ブロック毎に出力された情報量をその都度RGB画像に換算した値でカウントして算出した。本第２の実施形態では、タイル情報生成時に、補間データとしてフラグビットのみをカウントするカウンタと、出力された画素値の数をカウントするカウンタを別に用意し、タイル情報量算出時に、ＲＧＢ画像に換算した値にする方法について説明する。
【００８８】
本第２の実施形態が上記第１の実施形態と異なる点は、図４のステップＳ４０３のタイル情報生成部分であり、装置構成は同じである。そこで、本第２の実施形態における、図４のステップＳ４０３の詳細を、図１０のフローチャートに従って説明する。なお、第１の実施形態と同様の動作をするステップについては、図５のフローチャートと同じ番号を付与し、その詳細な説明は割愛する。
【００８９】
ステップＳ５０１、Ｓ５０２は第１の実施形態と同様である。次に、ステップＳ１００１にて、着目タイルの補間データとして出力されたフラグのビット数をカウントするカウンタflg_cntと、補間データとして出力された画素数をカウントするカウンタpx_cntにそれぞれゼロを代入して初期化する。ステップＳ１００２では、ブロックの補間データを生成する。この処理については、後に図11を用いて説明する。ステップＳ５０５とＳ５０６は実施例1と同様の動作をする。ステップＳ５０６において、b_cnt=16となり、着目タイルの全てのブロックについて補間データを生成し終えたと判断すると、ステップＳ１００３へ処理を進める。ステップＳ１００３では、ＲＧＢ画像に換算後の補間データ量Ｌ’を算出し、このフローを終了する。具体的には、着目タイルの補間データとして出力されたフラグのビット数flg_cntに、補間データとして出力された画素数にＲＧＢ１画素当りのビット数(本実施形態では１成分８ビットとしているので「２４」)を掛け合わせた値を加算することで算出できる。
【００９０】
次に、図１１を用いて、ブロックの補間データ生成フローについて説明する。なお、第２の実施形態と同様の動作をするステップについては、図６のフローチャートと同じ番号を付与し、詳細な説明を割愛する。ステップＳ６０１、ステップＳ６０２は第１の実施形態と同様である。ステップＳ６０２でフラットブロックと判定された場合、ステップＳ６０３へ進み、補間データとして、フラグ“１”を出力する。そして、ステップＳ１１０１にて出力フラグ用カウンタflg_cntに１を加算してこのフローを終了する。ステップＳ６０２でフラットブロックではないと判定されると、ステップＳ６０５に処理を進める。ステップＳ６０５では、補間データとして、フラグ“０”を出力する。そして、ステップＳ１１０２にて出力フラグ用カウンタflg_cntに１を加算し、ステップＳ６０７へ進む。ステップＳ６０７では、フラットピースラインと判断されるとステップＳ６０８へ処理を進め、補間データとして、フラグ“１”を出力する。そして、ステップＳ１０３にて出力フラグ用カウンタflg_cntに１を加算してステップＳ６１８へ処理を進める。一方、ステップＳ６０７でフラットピースラインではないと判定されると、ステップＳ６１０へ処理を進める。ステップＳ６１０では、補間データとして、フラグ“０”を出力し、次に、ステップＳ１１０４にて、出力フラグ用カウンタflg_cntに１を加算する。
【００９１】
次に、ステップＳ６１２において、着目ピースラインが参照ノンフラットピースライン情報と一致するか判定し、一致すると判断するとステップＳ６１３へ進む。ステップＳ６１３では、補間データとして、フラグ“１”を出力する。そして、ステップＳ１１０５にて出力フラグ用カウンタflg_cntに１を加算する。
【００９２】
一方、ステップＳ６１２にて着目ピースラインが参照ノンフラットピースライン情報と一致しないと判定されると、ステップＳ６１５へ進む。ステップＳ６１５では、第１の実施形態と同様にフラグ“０”とピースライン判定結果を出力する。ステップＳ１１０６では、ステップＳ６１５で出力したビット数“ｐ＋１”を出力フラグ用カウンタflg_cntに加算する。本第２の実施形態では、ピースライン判定結果はｐ＝１６ビットであるため、“１７”をflg_cntに加算することになる。その後、ステップＳ６１７へ進む。ステップＳ６１７、Ｓ６１８は第１の実施形態と同様の動作をする。ステップＳ６１８で着目ピースラインが、着目ブロック内の最終行ではないと判断されると、ステップＳ６１９へ処理を進める。一方、ステップＳ６１８にて、着目ピースラインが着目ブロック内の最終行と判定されると、処理をステップＳ１１０７へ進め、ノンフラットピースの補間データ生成処理を行う。ステップＳ１１０７の詳しい動作については、後に図１２を用いて説明する。本フローにおいて、ステップＳ１１０７を除く各ステップにおいては、補間データとしてフラグ情報しか出力していないため、出力フラグ用カウンタflg_cntのみがカウントアップされる。
【００９３】
次に、本第２の実施形態におけるノンフラットピースの補間データ生成処理について、図１２を用いて説明する。同図において、第１の実施形態と同様の動作には、図８と同じ番号を付与し、詳しい説明は割愛する。ステップＳ８０１〜Ｓ８０３までは、第１の実施形態と同様の動作である。
【００９４】
ステップＳ８０３で着目ピースが周囲３画素一致ピースの場合はステップＳ８０４へ進む。ステップＳ８０４では、第１の実施形態と同様にフラグ“１”を出力する。そして、ステップＳ１２０１にて、出力フラグ用カウンタflg_cntに、ステップＳ８０４で出力したフラグのビット数１を加算し、処理ステップＳ８２１へ進む。
【００９５】
一方、ステップＳ８０３にて、着目ピースが周囲３画素一致ピースではないと判断した場合、ステップＳ８０６へ処理を進める。ステップＳ８０６では、第１の実施形態と同様にフラグ“０”を出力する。次に、ステップＳ１２０２にて、出力フラグ用カウンタflg_cntに、ステップＳ８０６で出力したフラグのビット数１を加算する。ステップＳ８０８では、ピース内に出現する色数が２であるかどうか判断し、２ではない場合には、ステップＳ８１８へ進む。ステップＳ８１８では、第１の実施形態と同様にフラグ“１”を出力する。そして、ステップＳ１２０７にて、出力フラグ用カウンタflg_cntに、ステップＳ８１８で出力したフラグのビット数１を加算する。ステップＳ８１９では、第１の実施形態と同様に縮小画像以外の３画素の画素データを出力する。ステップＳ１２０８では、ステップＳ８１９で出力した画素数“３”を、画素数用のカウンタpx_cntに加算し、処理をステップＳ８２１へ進める。
【００９６】
ステップＳ８０８にて、着目ピース内に出現する色数が２と判断した場合には、ステップＳ８０９へ進む。ステップＳ８０９、Ｓ８１０は第１の実施形態と同様の動作をする。次に、ステップＳ１２０３にて、ステップＳ８０９とＳ８１０にて出力したフラグのビット数４を、出力フラグ用カウンタflg_cntに加算する。ステップＳ８１２では、周辺画素に第2色と同じ色の画素が存在するかどうか判断する。存在する場合には、ステップＳ８１３にて、第１の実施形態と同様に２ビットのフラグを出力する。そして、ステップＳ１２０４にて、出力フラグ用カウンタflg_cntに、ステップＳ８１３で出力したフラグのビット数２を加算し、処理をステップＳ８２１へ進める。一方、ステップＳ８１２にて、周辺画素に第２色と同じ色の画素が存在しないと判定すると、ステップＳ８１５へ進む。ステップＳ８１５では、フラグ“００”を出力する。そして、ステップＳ１２０５にて、出力フラグ用カウンタflg_cntに、ステップＳ８１５で出力したフラグのビット数２を加算する。ステップＳ８１６では、第１の実施形態と同様に、第２色の画素値を出力する。そして、ステップＳ１２０６にて、ステップＳ８１６で出力した画素数１を、補間データとして出力された画素数をカウントするカウンタpx_cntに加算して、ステップＳ８２１へ処理を進める。
【００９７】
以上、説明したように、第１の実施形態では、実際の補間データ分の符号データのバイト数と、換算後のバイト数を別々に持っていたのに対し、第２の実施形態では、補間データとして出力された、固定長のビットフラグ用と、出力画素数用の２つのカウンタを持つが、実際の補間データ量と換算後の補間データ量の双方を計算により求めることができる。
【００９８】
［その他の実施形態］
第１、第２の実施形態では、符号化対象画像として、各色８ビットで色数が異なるGray, RGB, CMYKの３種類の色空間画像について説明した。しかし、符号化対象画像として、各色成分が８ビットと各色１６ビットなど異なるビット精度の画像であっても良い。その場合であっても、符号化方式判定に用いられるタイル情報のデータ量Ｌを、たとえば各色８ビットのＲＧＢ画像の場合に換算した情報量Ｌ’を算出すれば良い。
【００９９】
また、第１、第２の実施形態では、タイル情報生成部のタイル情報の生成のための基本処理を、特許文献２で開示されている手法を採用するものとして説明したが、特許文献１で開示されている方法を使用しても良い。その場合、特許文献１で開示されている可逆圧縮方法自体がタイル情報でもあるため、可逆符号化部１０８は不要であることは言うまでも無い。したがって、可逆符号化が選択された場合には、タイル情報バッファ１０６の情報が符号データバッファ１１０へそのまま出力される。
【０１００】
また、第１、第２の実施形態では、タイル情報生成時に作成された縮小タイル画像の可逆圧縮方式としてＪＰＥＧ−ＬＳを用いたが、ＰＮＧやＪＰＥＧ２０００のロスレス圧縮方式などでも良い。
【０１０１】
また、第１、第２の実施形態では、タイルの非可逆圧縮方式としてＪＰＥＧ２０００を用いたが、再エンコード無しに符号量制御（符号化データの削減）できる、他のビットプレーン単位の符号化方式であっても良い。あるいは、progressive JPEGのように符号化データが解像度方向に階層構造を持っている符号化方式を使っても良い。その場合には、階層データを単位としてデータを削除することで符号量制御を行うことになる。
【０１０２】
更に、実施形態では、符号化対象の画像の水平方向の画素数Ｗ、垂直方向の画素数Ｈは、それぞれタイルの幅T_w、高さT_hの整数倍とし、画像の右端および下端で不完全なタイルが発生しないものとして説明した。これは、本願の技術内容を容易に理解するための便宜的なものであることに注意されたい。サイズが不完全なタイルが発生する場合には、図４のステップＳ４０４におけるしきい値ＴＨは、不完全な着目タイルサイズに応じて、変更すれば良い。すなわち、ステップＳ４０４において、着目タイルが不完全なサイズのタイルかどうかを判定し、不完全なサイズのタイルと判断した場合には、そのタイルサイズからしきい値ＴＨを算出する。本実施形態の場合、閾値ＴＨは、ＲＧＢ ８[ビット／コンポーネント]の不完全なタイル画像データの１／８、すなわち、(T_w[画素]×T_h[画素]×２４[ビット／画素]／８)[ビット]となる。
【０１０３】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【０１０４】
１０１…画像入力部、１０２…ラインバッファ、１０３…タイル分割部、１０４…タイルバッファ、１０５…タイル情報生成部、１０６…タイル情報バッファ、１０７…符号化方式判定部１０７、１０８…可逆符号化部、１０９…非可逆符号化部、１１０…リピートコード出力部、１１１…スイッチ、１１２…符号化データバッファ、１１３…符号量制御部、１１４…目標符号量設定部、１１５…符号出力部
【図１】
2015220642.tif 000003
【図２】
2015220642.tif 000004
【図３】
2015220642.tif 000005
【図４】
2015220642.tif 000006
【図５】
2015220642.tif 000007
【図６】
2015220642.tif 000008
【図７】
2015220642.tif 000009
【図８】
2015220642.tif 000010
【図９】
2015220642.tif 000011
【図１０】
2015220642.tif 000012
【図１１】
2015220642.tif 000013
【図１２】
2015220642.tif 000014