(57)【特許請求の範囲】
【請求項１】
所定数の画素で構成される画素ブロックを単位とする第１の符号化アルゴリズムに従って符号化された符号化データを、再符号化する画像処理装置であって、
前記第１の符号化アルゴリズムで符号化された符号化データを、再符号化対象の符号化データとして入力する入力手段と、
前記画素ブロックよりも大きいサイズのブロックを単位に符号化する、第２の符号化アルゴリズムに基づく第２の符号化手段と、
前記入力手段により入力した符号化データを、当該符号化データのまま、前記第１の符号化アルゴリズム並びに前記第２の符号化アルゴリズムのいずれとも異なる第３の符号化アルゴリズムに従って符号化することで得られた符号量から、前記第２の符号化手段に対する目標符号量を算出する目標符号量算出手段と、
前記入力手段で入力した符号化データを復号して復号画像を得て、当該復号画像に対して、前記第２の符号化手段を制御して、前記目標符号量の符号化データを生成させる制御手段と
を備えることを特徴とする画像処理装置。
【請求項２】
所定数の画素で構成される画素ブロックを単位とする第１の符号化アルゴリズムに従って符号化された符号化データを、再符号化する画像処理装置であって、
前記第１の符号化アルゴリズムで符号化された符号化データを、再符号化対象の符号化データとして入力する入力手段と、
前記画素ブロックよりも大きいサイズのブロックを単位に符号化する、第２の符号化アルゴリズムに基づく第２の符号化手段と、
前記入力手段により入力した符号化データを解析し、繰り返される１周期のビットパターンのサイズと前記ビットパターンの繰り返し回数を得て、当該１周期のビットパターンのサイズと繰り返し回数とによって算出される冗長な符号量と、前記入力手段で入力した符号化データのデータ量とから、前記第２の符号化手段に対する目標符号量を算出する目標符号量算出手段と、
前記入力手段で入力した符号化データを復号して復号画像を得て、当該復号画像に対して、前記第２の符号化手段を制御して、前記目標符号量の符号化データを生成させる制御手段と
を備えることを特徴とする画像処理装置。
【請求項３】
前記第１の符号化アルゴリズムはＪＰＥＧ、第２の符号化アルゴリズムはＪＰＥＧ２０００又はＪＰＥＧ  ＸＲであることを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記制御手段は、前記目標符号量をＬD、前記第２の符号化手段による符号量をＬ、予め設定した閾値をＴｈとしたとき、
｜ＬD−Ｌ｜≦Ｔｈ
を満たすまで、最下位から上位に向かう順番のビットプレーンの符号化データを削除することを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記第３の符号化アルゴリズムは辞書型符号化アルゴリズムであることを特徴とする請求項１に記載の画像処理装置。
【請求項６】
コンピュータに読み込み実行させることで、前記コンピュータを、請求項１乃至５のいずれか１項に記載の画像処理装置として機能させるためのプログラム。
【請求項７】
請求項６に記載のプログラムを格納したことを特徴とするコンピュータが読み込み可能な記憶媒体。
【請求項８】
所定数の画素で構成される画素ブロックを単位とする第１の符号化アルゴリズムに従って符号化された符号化データを、再符号化する画像処理装置の制御方法であって、
入力手段が、前記第１の符号化アルゴリズムで符号化された符号化データを、再符号化対象の符号化データとして入力する入力工程と、
第２の符号化手段が、前記画素ブロックよりも大きいサイズのブロックを単位に符号化する、第２の符号化アルゴリズムに基づく第２の符号化工程と、
目標符号量算出手段が、前記入力工程により入力した符号化データを、当該符号化データのまま、前記第１の符号化アルゴリズム並びに前記第２の符号化アルゴリズムのいずれとも異なる第３の符号化アルゴリズムに従って符号化することで得られた符号量から、前記第２の符号化工程に対する目標符号量を算出する目標符号量算出工程と、
制御手段が、前記入力工程で入力した符号化データを復号して復号画像を得て、当該復号画像に対し、前記第２の符号化工程を制御して、前記目標符号量の符号化データを生成させる制御工程と
を有することを特徴とする画像処理装置の制御方法。
【請求項９】
所定数の画素で構成される画素ブロックを単位とする第１の符号化アルゴリズムに従って符号化された符号化データを、再符号化する画像処理装置の制御方法であって、
入力手段が、前記第１の符号化アルゴリズムで符号化された符号化データを、再符号化対象の符号化データとして入力する入力工程と、
第２の符号化手段が、前記画素ブロックよりも大きいサイズのブロックを単位に符号化する、第２の符号化アルゴリズムに基づく第２の符号化工程と、
目標符号量算出手段が、前記入力工程により入力した符号化データを解析し、繰り返される１周期のビットパターンのサイズと前記ビットパターンの繰り返し回数とによって算出される冗長な符号量と、前記入力工程で入力した符号化データのデータ量とから、前記第２の符号化工程に対する目標符号量を算出する目標符号量算出工程と、
制御手段が、前記入力工程で入力した符号化データを復号して復号画像を得て、当該復号画像に対して、前記第２の符号化工程を制御して、前記目標符号量の符号化データを生成させる制御工程と
を有することを特徴とする画像処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像データの符号化技術に関するものである。
【背景技術】
【０００２】
画像の伝送においては画像のデータ量を柔軟に変更できる、画像圧縮のレート制御機能が注目されている。これは画像圧縮されたデータ（画像符号化データ）を、復号することなく符号量を変更できる機能であり、画像符号化データを伝送するネットワークの帯域幅に応じたデータ量の変更が容易となる。この機能を持った画像圧縮としてＪＰＥＧ２０００等がある。
【０００３】
ＪＰＥＧ符号化データなどにはレート制御の機能がないため、これをいったん復号して、ＪＰＥＧ２０００等のレート制御機能を持つ符号化データへ変換し、再符号化が有効になる場合もある。例えば符号量を設定して再符号化する技術として、特許文献１等がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１６６４９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
たとえば８×８画素単位で符号化を行うＪＰＥＧ符号化と、それより広い範囲を単位として符号化を行うＪＰＥＧ２０００符号化とでは、ＪＰＥＧ２０００の方が、より広い範囲で画像情報の冗長性を除去できる、もしくは除去できる可能性が高い。
【０００６】
本発明は上記点に鑑みてなされたものであり、所定画素数で構成される画素ブロックを符号化単位とする符号化データを、画質劣化を抑制しつつ、更に高い圧縮率で再符号化する技術を提供しようとするものである。
【課題を解決するための手段】
【０００７】
この課題を解決するため、例えば本発明の画像処理装置は以下の構成を備える。すなわち、
所定数の画素で構成される画素ブロックを単位とする第１の符号化アルゴリズムに従って符号化された符号化データを、再符号化する画像処理装置であって、
前記第１の符号化アルゴリズムで符号化された符号化データを、再符号化対象の符号化データとして入力する入力手段と、
前記画素ブロックよりも大きいサイズのブロックを単位に符号化する、第２の符号化アルゴリズムに基づく第２の符号化手段と、
前記入力手段により入力した符号化データを、当該符号化データのまま、前記第１の符号化アルゴリズム並びに前記第２の符号化アルゴリズムのいずれとも異なる第３の符号化アルゴリズムに従って符号化することで得られた符号量から、前記第２の符号化手段に対する目標符号量を算出する目標符号量算出手段と、
前記入力手段で入力した符号化データを復号して復号画像を得て、当該復号画像に対して、前記第２の符号化手段を制御して、前記目標符号量の符号化データを生成させる制御手段とを備える。
【発明の効果】
【０００８】
本発明によれば、所定画素数で構成される画素ブロックを符号化単位とする符号化データを、画質劣化を抑制しつつ、更に高い圧縮率で再符号化することが可能となる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態における画像処理部のブロック構成図
【図２】第１の実施形態における冗長性推定部１０２のブロック構成図
【図３】ＪＰＥＧ符号化データ中に発生する冗長性に関する説明図
【図４】ＪＰＥＧ２０００の符号化方式のブロック構成図
【図５】離散ウェーブレット変換の説明図
【図６】離散ウェーブレット変換の説明図
【図７】コードブロック分割の説明図
【図８】離散ウェーブレット変換の説明図
【図９】離散ウェーブレット変換における必要となる画素数の説明図
【図１０】辞書型符号化方式の説明図
【図１１】辞書型符号化が対象とする処理対象データ列と辞書メモリの例を示した図
【図１２】辞書型符号化方式の処理の流れを示した図
【図１３】辞書型符号化データで発生する冗長性の説明図
【図１４】第１の実施の形態における辞書型符号化方式のフローチャート
【図１５】第１の実施の形態における辞書型符号化方式の処理過程の説明図
【図１６】第２の実施形態における画像処理部のブロック構成図
【図１７】第２の実施形態における冗長性推定部１６０１のブロック構成図
【図１８】第２の実施形態における冗長性推定部１６０１のフローチャート
【図１９】第２の実施形態における連続周期情報の説明図
【図２０】その他の実施例における伸長画像から冗長性を測定する方法の説明図
【図２１】再圧縮時に発生する問題の説明図
【図２２】ＰＳＮＲ算出において用いる画像の説明図
【図２３】ＪＰＥＧ符号化データを辞書型符号化方式で圧縮したときの符号量の説明図
【発明を実施するための形態】
【００１０】
本実施形態においては、再圧縮する際の問題と解決方法に関する。そして、再符号化対象をＪＰＥＧによる画像符号化データ（ＪＰＥＧ符号化データ）とし、それをＪＰＥＧ２０００に従って再圧縮する処理の例を説明する。
【００１１】
図２１は、入力画像に対して、量子化パラメータを設定してＪＰＥＧ符号化した結果（１点）と、ＪＰＥＧ符号化データの復号画像に対して、ＪＰＥＧ２０００の圧縮率に係るパラメータをいくつか設定して再圧縮した結果をトレースしたグラフである。なお、図２２に再圧縮の処理の概略を示しているが、ＪＰＥＧ２０００のＰＳＮＲの測定では、ＪＰＥＧ伸長画像ではなく原画像から見た画質に注目すべきであり、ＪＰＥＧ圧縮の対象となった原画像を用いている。図２１に示すように、Ｘ（ｂｐｐ）以上では、符号量を増やしても画質は向上しない。これは符号化対象がＪＰＥＧの伸長画像であり、その画像以上の画質を得ることはできないからである。換言すれば、ビットレートＸでＪＰＥＧ２０００に従って符号化すれば、画質劣化が発生しないまま、より高い圧縮率で符号化できることを意味する。しかし、このビットレートＸ（ｂｐｐ）を正確に知ることはできない。なぜなら、入力機器から得られた画像、パソコン等の編集ソフト等で生成された画像は圧縮されるが、原画像は残されているのは希だからである。例えば、デジタルカメラでは、撮影された画像はＪＰＥＧで圧縮されて保存されることは多いが、原画像に相当する画像については、必ず保存されるわけではない。このため、伸長画像の画質を保持できる最低の符号量を知ることができないケースが多い。
【００１２】
本実施形態においては、図２３で示したとおり、辞書型符号化方式でＪＰＥＧ符号化データを可逆圧縮する。そして、その結果、得られた符号量を、再圧縮時の目標符号量（目標ビットレートＸ）の目安とするものである。
【００１３】
まずＪＰＥＧ２０００を用いることで、画質を落とさずにＪＰＥＧ符号化より符号量を減らせる理由について説明する。そして、その後、ＪＰＥＧ符号化データに対して辞書型の符号化方式を適用し、生成された符号量は再圧縮時の目標符号量に設定することが妥当であるかを説明する。その上で、本実施形態の説明に入ることとする。
【００１４】
ＪＰＥＧ符号化方式（ＩＳＯ／ＩＥＣ  ＩＳ  １０９１８−１）は、その勧告書にも記されているが、入力された画像を８×８画素サイズのブロックに分割して、各ブロック単位にほぼ独立に符号化する。そのため、図３（ａ）で示したような輝度（或いは濃度）が平坦な領域の画像、或いは、８×８周期の網点領域を持つ画像を入力すると、各ブロックから同一の符号列が生成される。結果として、画像符号化データの中に、同一符号列の繰り返しによる冗長性が発生する。図３（ｂ），（ｃ）はそれぞれ、図３（ａ）の平坦領域と網点領域のような特性を持つ画像を入力したときの、該当領域の画像符号化データである。一方でＪＰＥＧ２０００は、８×８画素ブロックを単位とした周期が画像中にある場合、ある所定の条件で符号化すると、周期性による冗長性を効率的に除去することができる。そのため、ＪＰＥＧに比べて冗長性の発生を抑制できる。その符号化の条件と理由について、ＪＰＥＧ２０００のアルゴリズム概要を基に説明する。
【００１５】
図４は一般的なＪＰＥＧ２０００符号化装置のブロック図である。同図において、４０１は入力部、４０２は離散ウェーブレット変換部、４０３は量子化部、４０４はエントロピー符号化部、４０５は符号列形成部、４０６は出力部である。入力部４０１から画像データは、離散ウェーブレット変換部４０２へ供給される。離散ウェーブレット変換部４０２は、図５に示すように、複数の画素を用いて離散ウェーブレット変換を行う。ここで、離散ウェーブレット変換後のフレームデータ（離散ウェーブレット変換係数）は次式に従い算出される。
Y(2n) = X(2n)+floor{ (Y(2n-1)+Y(2n+1)+2)/4 }
Y(2n+1) = X(2n+1)-floor{ (X(2n)+X(2n+2))/2 }      …（１）
ここで、Ｙ（２ｎ），Ｙ（２ｎ＋１）は離散ウェーブレット変換係数列であり、Ｙ（２ｎ）は低周波サブバンド、Ｙ（２ｎ＋１）は高周波サブバンドである。また、上記変換式（１）においてｆｌｏｏｒ｛Ｘ｝はＸを超えない最大の整数値を表す。この離散ウェーブレット変換を模式的に表わしたのが図５である。
【００１６】
上記変換式（１）は一次元のデータに対するものであるが、この変換を水平方向、垂直方向の順に適用して二次元の変換を行うことにより、図６（ａ）に示す様なＬＬ，ＨＬ，ＬＨ，ＨＨの４つのサブバンドを得ることができる。ここで、Ｌは低周波サブバンド、Ｈは高周波サブバンドを示している。次にＬＬサブバンドに対して、同じ様にウェーブレット変換を行い、４つのサブバンドを生成し（図６（ｂ））、その中のＬＬサブバンドを更に４つのサブバンドに分ける（図６（ｃ））。このようにして合計１０のサブバンドを作る。１０個のサブバンドそれぞれを、図６（ｃ）の様にＨＨ１，ＨＬ１，…と呼ぶ。ここで、各サブバンドの名称における数字は、それぞれのサブバンドのレベルを示す。つまり、レベル１のサブバンドは、ＨＬ１，ＨＨ１，ＬＨ１である。また、レベル２のサブバンドは、ＨＬ２，ＨＨ２，ＬＨ２である。レベル３のサブバンドは、ＨＬ３，ＨＨ３，ＬＨ３である。なおＬＬサブバンドは、レベル０のサブバンドである。また、ＬＬサブバンドは一つしかないので一般には添字を付けない。またレベル０からレベルｎまでのサブバンドを復号することで得られる復号画像を、レベルｎの復号画像と呼ぶ。復号画像は、そのレベルが高い程解像度は高い。１０個のサブバンドの変換係数は、一旦バッファ３０４に格納され、ＬＬ，ＨＬ１，ＬＨ１，ＨＨ１，ＨＬ２，ＬＨ２，ＨＨ２，ＨＬ３，ＬＨ３，ＨＨ３の順に、つまり、レベルが低いサブバンドからレベルが高いサブバンドの順に、係数量子化部４０３へ出力される。なお、上記の例では、分割回数（ウェーブレット変換の適用回数）が「３」の場合であるが、この回数に制限はない。
【００１７】
係数量子化部４０３では、各サブバンドの変換係数を各周波数成分毎に定めた量子化ステップで量子化し、量子化後の値（係数量子化値）をエントロピー符号化部４０４へ出力する。量子化方法の詳細については、本発明の本質ではないので説明を割愛する。量子化された係数（係数量子化値）はエントロピー符号化部４０４へ出力される。
【００１８】
エントロピー符号化部４０４は、入力された係数量子化値をエントロピー符号化する。ここでは、まず、図７に示すように、入力された係数量子化値の集まりである各サブバンドが矩形（「コードブロック」と呼ぶ。）に分割される。本実施の形態においては、コードブロックサイズを１６×１６とする。次いで、コードブロック内の係数をビットプレーンに分割し、上位ビットプレーンから順に２値算術符号化を行い、エントロピー符号化データを生成する。以上が、ＪＰＥＧ２０００における符号化のアルゴリズムである。
【００１９】
続いて先述、８×８画素ブロック（ＪＰＥＧの符号化単位）の周期を有する画像における、当該冗長性の除去に関する説明に移る。
【００２０】
図５と（１）式は離散ウェーブレット変換の説明であるが、離散ウェーブレット変換の特徴として、１次元方向で１回変換を行うと、低周波成分及び高周波成分それぞれの係数の個数は、入力画像の画素数の半分になる。２回変換を行うと、そこで得られる低周波成分及び高周波成分の係数の個数は入力画像の画素数の１／４となる。３回変換を行うと、１／８になる。つまり、離散ウェーブレット変換を３回行うと、入力画像中の８画素につき、低周波成分，高周波成分それぞれについて１個の係数が生成されると言える。また、伸長画像には８画素から構成される周期が存在するため、各周期から１係数が生成される。さらに各係数は、同一の周期から生成されているため、同じ値になる。つまり、離散ウェーブレット変換を３回行なうと、低周波成分と高周波成分の各サブバンドには同じ値が連続し、サブバンド内は平坦な領域（平坦領域）となる。平坦領域に対して、２値算術符号化は非常に高効率な圧縮を行うことができる。これが、ＪＰＥＧ２０００符号化では、８画素周期の画像に対して冗長性を削除する理由である。
【００２１】
また先述のとおり本実施形態においては、２値算術符号化は１６×１６サイズのコードブロックを単位に実行する。式（１）と図８から、離散ウェーブレット変換の変換数（ｎ）と、ｎ回目の変換で得られた高周波成分と低周波成分の生成に必要となる画素数の関係は、図９のようになる。同図から、３回目の離散ウェーブレット変換で得られた低周波成分と高周波成分における１６成分に必要な画素数は、１４９画素、１４１画素である。つまり、１６×１６サイズのコードブロックを単位として２値算術符号化を行った場合、高周波成分については１４１×１４１画素、低周波成分については１４９×１４９画素を単位として符号化したこととおおよそ同等となる。ＪＰＥＧでは８×８画素を単位として符号化を行うことに比べて、より広い領域で冗長性を除去することができる。
【００２２】
ここまでの議論をまとめると、入力画像に８×８画素の周期がある場合、ＪＰＥＧに比べてＪＰＥＧ２０００は効率的に冗長性を除去することができる。その理由は２つあり１つ目は、ＪＰＥＧ２０００では画像中の８×８画素の周期の画像は、平坦領域として表現される。その上で、効率的なエントロピー符号化方式で圧縮する。２つ目は、ＪＰＥＧに比べて広い領域を単位として符号化する点である。
【００２３】
続いて、辞書型符号化のアルゴリズムの概念について説明する。そして、その上で、ＪＰＥＧ符号化データに対して辞書型の符号化方式を適用し、生成された符号量を再圧縮時の目標符号量に設定することの妥当性について説明する。
【００２４】
画像，音声，文書などの何らかの意味あるデジタルデータは、データ値が無秩序に並んでいることはなく、よく似たパターンの並び方が頻繁に現れる。すなわち、データ値の並び方（データパターン）を見つけて、データ値の並びより短いコードを与えて出力することで、元よりも少ないデータ量で情報を表現することができる。このデータパターンと、それに対応するコード値を管理している情報を、一般に「辞書」と呼び、辞書を構築しつつ、その辞書を参照して行う符号化方法を辞書型符号化と言う。以下では、辞書型符号化アルゴリズムの一例の処理概略について説明する。
【００２５】
図１０は処理フローを示したフローチャートである。また、図１１（ａ）は符号化対象のデータの例を、図１１（ｂ）は辞書メモリの例を示している。図１０において、符号化の処理が開始すると初期化を行う（ステップＳ１００１）。初期化とは、処理対象データの入力、メモリ内に辞書メモリの確保、最大一致長の設定である。ここの説明では、処理対象データとして図１１（ａ）を、辞書メモリについては同図（ｂ）のように４バイトを想定する。ここで４バイトとしたのは説明の都合であり、実装形態に応じて適宜変更することは可能である。最大一致長とは、符号化処理において許される、同一データパターンの長さ（一致長）の最大値であり、本辞書型符号化方式では固定長で一致長を表すため必要となる。次に、一致するデータパターンを辞書メモリ中から検索する（ステップＳ１００２）。このとき、一致する長さ（一致長）が上限値に達した場合には、その時点で検索を打ち切る。また、一致するデータパターンが複数あるときには、それらをすべて求める。もし一致するデータパターンがなかった場合には（ステップＳ１００３でＮｏ）、一致パターンの有無を示す情報（フラグ）として“０”を出力し（ステップＳ１００４）、１文字をハフマン符号化した上で出力する（ステップＳ１００５）。その上で、処理をステップＳ１００８へ進める。一方で一致するデータパターンが見つかった場合には（ステップＳ１００３でＹｅｓ）、フラグとして“１”を出力する（ステップＳ１００６）。そして、検索した中から最も一致長が長いデータパターンの辞書中の位置と長さ（ポイント情報）を求めて出力する（ステップＳ１００７）。次に、処理を行ったデータ列を辞書の末尾に追加する（ステップＳ１００８）。もし、これにより辞書のデータ長を超えてしまう場合、先頭部分を削除して、辞書メモリに収まるようにする。そして、処理すべきデータが残っているかどうかを判断して（ステップＳ１００９）、もしデータが残っていなければ（ステップＳ１００９でＮｏ）、処理を終える。一方で、データが残っていれば（ステップＳ１００９でＹｅｓ）、処理をステップＳ１００２へ戻す。参考までに、具体的なデータを使った説明を図１２にまとめた。
【００２６】
説明のとおり、辞書型符号化方式はデータパターンの繰り返しによる冗長性を除去する。このため、ＪＰＥＧ符号化データに適用すると、図３（ｂ），（ｃ）のような、画像中の冗長性に起因するＪＰＥＧ符号化データ内の冗長性を削除することができることが理解できよう。しかし、ＪＰＥＧ符号化データに辞書型符号化を適用して得られた符号量を再圧縮時の目標符号量として用いるには、考慮すべきことが１つある。それは、ＪＰＥＧ２０００ではある所定の範囲で画像中の冗長性を除去するが、辞書型符号化はその範囲以上の空間的冗長性を除去してしまう点である。具体的には、先ほどのＪＰＥＧ２０００の説明では、低周波成分については１４９画素単位で冗長性を削除できると述べたが、辞書型符号化ではそれ以上の冗長性が存在すれば削除する。つまり、辞書型符号化で得られた符号量を目安に再圧縮すると、冗長性以外の、画質に影響を与える本質的な情報を量子化により削除してしまうことになる。この問題に対しては、ＪＰＥＧ２０００により冗長性を削除可能な範囲を符号化し、符号化後に辞書メモリをリセットすることで対応可能である。しかし、ＪＰＥＧでは８×８画素ブロックは可変長で符号化されるため、ＪＰＥＧ符号化データの中の繰り返しの１周期に含まれる８×８画素ブロック数を知ることはできない。一例として、１周期に８×８画素ブロックが１つ存在する場合と、１周期に８×８画素ブロックが８つ存在する場合を示している。このため、１４９画素に相当する周期数を導くこともできない。ただ必要以上に冗長性を除去することは避ける必要があり、本実施形態では１周期に含まれる８×８画素ブロック数を４個と仮定する。つまり１周期に含まれる画素数を３２個とし、１４９画素を超えない最大の周期数は４であり、辞書型符号化の過程で連続する同一周期を４つ検知したら、辞書メモリをリセットする。
【００２７】
なお、ＪＰＥＧ符号化データ中にはラスタースキャン順で８×８画素ブロックの符号化データが並んでおり、辞書型符号化はＪＰＥＧ符号化データを先頭から後尾に向かって順に符号化する。このため２次元方向で冗長性を削除できず、ＪＰＥＧ２０００と比べて削除できる冗長性は少なくならざるを得ない。これに関し、本発明の目的はあくまで再圧縮時の目標符号量の「目安」を求めることであり、冗長性を削除する範囲の次元数の差は目的を達成する上で大きな問題にはならないと考える。
【００２８】
［第１の実施形態］
以下、上記の説明に基づく、本発明に係る実施形態を詳細に説明する。
【００２９】
図１は本実施形態における画像処理装置のブロック図を示している。同図において、１０１は符号化画像データ入力部、１０２は目標符号量算出手段として機能する冗長性推定部、１０３は伸長部、１０４は再圧縮部、１０５は出力部である。同図において、符号化画像データ入力部１０１はＪＰＥＧ符号化データを入力し、それを冗長性推定部１０２へ出力する。冗長性推定部１０２では、前述のとおり、冗長性削除可能最大画素数を１４９画素と仮定する。またＪＰＥＧ符号化データにおける符号列の繰り返しの１周期に含まれるブロック数を４と仮定する。つまり、ｆｌｏｏｒ（１４９／（８＊４））＝４つの繰り返しを検知したら、それ以上の冗長性を測定する必要はないので辞書メモリをリセットする。
【００３０】
図１４は冗長性推定部１０２の処理フローである。本処理フローは、先だって説明した図１０をベースとしている。また図２は、冗長性推定部１０２のブロック図である。
【００３１】
図２，図１４において、画像符号化データ入力部２０１にＪＰＥＧ符号化データが入力されると、制御部２０９は初期化処理を行う（ステップＳ１４０１）。初期化とは、処理対象データの入力、辞書メモリの確保、最大一致長の設定、さらにデータパターンの繰り返しをカウントするカウンタ２０４の初期化である。カウンタ２０４の初期化については、１を設定する（ｃｏｕｎｔ＝１）。本実施の形態においては、辞書メモリとして１０２４バイトを、最大一致長としては２５６個を想定する。次に、同一文字列検知部２０３において、一致するデータパターンを辞書メモリ中から検索する（ステップＳ１４０２）。このとき、一致する長さ（一致長）が上限値（２５６）に達した場合には、その時点で検索を打ち切る。また、一致するデータパターンが複数あるときには、それらをすべて求める。もし一致するデータパターンがなかった場合には（ステップＳ１４０３でＮｏ）、一致パターンの有無を示す情報（フラグ）として“０”を出力する（ステップＳ１４０４）。さらに、ハフマン符号化部２０８で１文字をハフマン符号化した上で出力する（ステップＳ１４０５）。そして処理をステップＳ１４１１へ進める。なお出力先はバッファ２０６であり、以降生成された符号はすべて同バッファへ出力されるものとする。一方で一致するデータパターンが見つかった場合には（ステップＳ１４０３でＹｅｓ）、フラグとして“１”を出力する（ステップＳ１４０６）。そしてその上で、検索した中から最も一致長が長いデータパターンの辞書中の位置と長さ（ポイント情報）を求めて出力する（ステップＳ１４０７）。次に、ポイント情報を出力したデータパターンが連続して繰り返しているかどうか判断し（ステップＳ１４０８）、もし繰り返していない場合には（ステップＳ１４０８でＮｏ）、カウンタ２０４の値を１へリセットする（ステップＳ１４１５）。次いで処理を行ったデータ列を辞書メモリ２０２の末尾に追加する（ステップＳ１４１１）。そして、処理をステップＳ１４１４へ進める。一方ステップＳ１４０８で繰り返している場合、カウンタをインクリメントする。繰り返している場合の具体的な例は、図１５のとおりである。次いで、カウンタが４と等しいかどうか判断する（ステップＳ１４１０）。等しくない場合には（ステップＳ１４１０でＮｏ）、処理をステップＳ１４１４へ進める。もし等しい場合には（ステップＳ１４１０でＹｅｓ）、後段のＪＰＥＧ２０００による再圧縮で、これ以上の繰り返しの冗長性を削除することはできないと判断する。その上で、注目する周期の冗長性を削除しないように辞書データをリセットする（ステップＳ１４１２）。具体的には、辞書データ中の追記位置を示すポインタを先頭に戻す。さらにカウンタをリセットし（ステップＳ１４１３）、処理をステップＳ１４１４へ進める。ステップＳ１４１４では、ＪＰＥＧ符号化データ中の未処理のデータが残っているかどうかを判断し、残っている場合には（ステップＳ１４１４でＹｅｓ）、処理をＳ１４０２へ戻す。そうでない場合には（ステップＳ１４１４でＮｏ）、符号長算出部２０５はバッファ中に蓄積された辞書型符号化データの符号長を算出し（ステップＳ１４１６）、算出した符号長を再圧縮部１０４へ出力し、終了する。
【００３２】
冗長性推定部１０２でＪＰＥＧ符号化データに対して辞書型符号化処理を行い、その符号長を再圧縮部１０４へ出力したら、伸長部１０３へＪＰＥＧ符号化データを出力する。伸長部１０３では、ＪＰＥＧ符号化データの伸長処理（復号処理）を行う。詳細については公知であり説明を割愛する。伸長処理で得られた伸長画像は、再圧縮部１０４へ出力される。再圧縮部１０４では、符号長算出部２０５から入力された辞書型符号化の符号長を基に目標符号量を設定し、ＪＰＥＧ２０００で圧縮する。ここで、符号長算出部２０５から入力された辞書型符号化の符号長をＬD、目標符号量をＬTとしたとき、所定の関数Ｆ（）に従って、ＬT＝Ｆ（ＬD）として求めるものとする。もっとも単純なものは、ＬT＝α×ＬDとするものであり、α＝１とするものであろう。また、辞書型符号化が２次元方向の冗長性を除去していないことに注目し、２次元方向での冗長性を除去できたときの符号長を想定してαを１未満の値、例えば、「０．９」等とすることである（目標符号量ＬTを、辞書型符号化による符号量ＬDより小さくすることである）。ＪＰＥＧ２０００の符号化方式の概略については説明済みであるので割愛する。なお、目標符号量の実現方法としては、係数の２値算術符号化の下位ビットを優先的に切り捨てていく方法がある。すなわち、再圧縮部１０４による符号化で得られた符号量をＬとし、予め設定された許容閾値をＴｈとしたき、
｜ＬD−Ｌ｜≦Ｔｈ
を満たすまで、最下位から上位に向かう順番のビットプレーンの符号化データを削除してけばよい。
【００３３】
以上が第１の実施形態の説明であるが、変形例として、再圧縮時における冗長性の削除に対する推定の精度を落として、辞書型符号化の処理の軽減を図る方法がある。具体的には、再圧縮時に冗長性を除去できる空間的な範囲を想定して、辞書データをリセットする作業を省く。例えば、辞書型符号化の概念を説明したときに用いた、図１０の方法等である。このアプローチによるメリットとしては、処理の軽減だけではなく、ＺＩＰやＬＺＨなどで使える既存の辞書型ソフトにより実現できるため、新たに実装する作業負荷を減らせる点がある。他にも、本発明の手法を実装する画像処理装置に他の用途で搭載されていれば、そもそも当該ソフトを新たに組み込む作業を省くことができる。なおこの場合、画像の広い範囲を見ながら辞書型符号化方式を適用することになる。このため、再圧縮で用いる符号化方式より冗長性を削除してしまう。この点に注目して、辞書型符号化方式の符号量より多めに目標符号量を設定してもよい。例えば、前述αを１より大きく設定する方法などが考えられる。
【００３４】
また別な変形例として、ＪＰＥＧ符号化データ中のヘッダ情報の冗長性については、伸長画像中の冗長性とは関連しないので、ヘッダには辞書型符号化を適用しない方法が考えられる。
【００３５】
また、上記実施形態では、再符号化対象の画像データはＪＰＥＧ符号化データとし、再圧縮部１０４をＪＰＥＧ２０００に基づく符号化処理を行うものとした。先に説明したように、画質劣化を抑制しつつＪＰＥＧよりも高いで符号化できる要因には、ＪＰＥＧにおける符号化単位である８×８画素よりも広い範囲の画素群を符号化することであるから、ＪＰＥＧ２０００に限らず、ＪＰＥＧ  ＸＲを採用してもよい。かかる点は、以下に説明する他の実施形態でも同様である。
【００３６】
［第２の実施形態］
上記の第１の実施形態においては、辞書型符号化を用いて冗長性を推定する方法を用いた。本第２の実施形態においては、辞書型符号化を用いずに、画像符号化データ中の符号列の繰り返しの周期を検知して、周期の長さと繰り返し数を得る。その情報を基に、再圧縮対象画像の冗長性を推定する。具体的な処理の概要を図１９（ａ），（ｂ）を参照して説明する。同図は、予めテーブルとして記憶しているのであり、第１のフィールドの周期番号とは、連続する周期を検知した際、当該周期に対して割り振るシリアル番号である。第２フィールドの１周期の符号量は、検知した連続する周期（連続周期）に関し、１周期の符号量である。図１３（ａ）のようなビットパターン（バイトパターン）の連続周期があった場合、その１周期の符号量は１（バイト）であり、図１３（ｂ）の場合には１周期の符号量が５（バイト）である。第３フィールドの繰り返し数は、注目連続周期の繰り返し数であり、値は２以上である。そして第４フィールドは冗長な符号量は除去可能な符号量であり、繰り返し数から１を引いた数を乗じた値と、１周期の符号量の乗算結果である。この手法では、第１の実施形態と比べて、符号化を行わない分、処理時間を短縮することができる。
【００３７】
図１６は本第２の実施形態におけるブロック図であり、第１の実施形態のブロック図である図１の冗長性推定部１０２を冗長性推定部１６０１へ置き換えてある。以下では冗長性推定部１６０１の説明に注力する。図１７は冗長性推定部１６０１のブロック図であり、図１８はその処理内容を示すフローチャートである。画像符号化データ入力部１７０１にＪＰＥＧ符号化データが入力されると、制御部１７０９は初期化を行い（ステップＳ１８０１）、同一文字列検知部１７０３を制御して、一致するデータパターンを検索し（ステップＳ１８０２）、有無を判断する（ステップＳ１８０３）。ここまでの処理については、第１の実施形態における図１０のステップＳ１００１〜ステップＳ１００３と同じである。もし一致するデータパターンがなかった場合には（ステップＳ１８０３でＮｏ）、処理をステップＳ１８０６へ進める。一方で一致するデータパターンが見つかった場合には（ステップＳ１８０３でＹｅｓ）、一致したデータパターンが連続して存在しているかを判断する（ステップＳ１８０４）。もし繰り返していない場合には（ステップＳ１８０４でＮｏ）、カウンタ１７０４の値を１へリセットする（ステップＳ１８０５）。次いで処理を行ったデータ列を辞書メモリ１７０２の末尾に追加する（ステップＳ１８０６）。そして、処理をステップＳ１８１３へ進める。一方ステップＳ１８０４で繰り返している場合、カウンタをインクリメントする（ステップＳ１８０７）。その際、データパターンの中に周期が複数個存在している場合には、周期の個数分インクリメントする。このインクリメントについては、第１の実施形態と同様である。次いで、カウンタが４と等しいかどうか判断する（ステップＳ１８０８）。等しくない場合には（ステップＳ１８０８でＮｏ）、処理をステップＳ１８０６へ進める。もし等しい場合には（ステップＳ１８０８でＹｅｓ）、後段のＪＰＥＧ２０００による再圧縮で、これ以上の繰り返しの冗長性を削除することはできないと判断する。その上で、注目する周期の冗長性を削除しないように辞書データをリセットする（ステップＳ１８０９）。続いて、図１９（ａ）に示したとおり、注目している周期に関して、連続周期情報算出部１７０８が冗長な符号量の算出を行う（ステップＳ１８１０）。なお当該算出結果は、連続周期情報算出部１７０８の内部メモリに記録される。さらにカウンタをリセットし（ステップＳ１８１１）、処理をステップＳ１８１３へ進める。ステップＳ１８１３では、ＪＰＥＧ符号化データ中の未処理のデータが残っているかどうかを判断し、残っている場合には（ステップＳ１８１３でＹｅｓ）、処理をＳ１８０２へ戻す。そうでない場合には（ステップＳ１８１３でＮｏ）、連続周期情報算出部１７０８の内部メモリに格納されている算出結果から、冗長符号長算出部１７０５が、推定される冗長性（冗長なデータ量）を算出する（ステップＳ１８１４）。具体的に、算出結果が図１９（ｂ）に示すようなテーブルを作成し、この結果から冗長性、又は目標符号量を算出する。算出が終わると、その結果をオリジナルの符号化データ量から減じた結果を目標符号量として再圧縮部１０４へ出力し、終了する。
【００３８】
［その他の実施形態］
第１の実施形態と第２の実施形態では画像の一次元方向の冗長性しか見ていない。しかし、画像は２次元のデータであり、２次元で画像の冗長性を推定する方法を用いることで、より精度を高く目標符号量を推測することを期待できる。そして本発明では、２次元での冗長性を推定する方法も範疇としている。一例として、画像符号化データを伸長して、伸長画像から冗長性を測定する方法がある。具体的には、第１の実施形態と同様に、再圧縮の対象となる画像符号化データはＪＰＥＧであり、再圧縮の符号化方式はＪＰＥＧ２０００とする。また、ＪＰＥＧ２０００の符号化単位であるコードブロックが削除できる冗長性の範囲を１４９×１４９画素とする。再圧縮すべきＪＰＥＧデータが決定したら伸長して、図２０（ａ）のように、伸長画像を１４９×１４９画素の領域（冗長性削除単位領域）に分割する。なお後ほど各８×８画素ブロックの符号量を処理に用いるので、復号の過程で画像処理装置内のメモリへ書き出す。そして、図２０（ｂ）のように、冗長性削除単位領域毎に、８×８画素ブロックのパターンを解析し、同一パターンに対しては同一の番号を振り分類していく。次に、図２０（ｃ）のように、隣接する縦横斜め方向の同一番号の８×８画素ブロックをグループ化していきグループ番号を割り振る。ここで、縦横斜め方向のブロックを対象にグループ化している理由は、すでに説明したとおりＪＰＥＧ２０００では、離散ウェーブレット変換を３回かけた際に生成されるサブバンドにおいて、各８×８画素ブロックから得られる係数は１つである。そして、連続する８×８画素ブロックの冗長性を当該サブバンドにおいて効率的に削除することができ、各係数の符号化において縦横斜め方向を参照するからである。そして、各グループに関して、１つの８×８画素ブロックから得られたＪＰＥＧ符号量と、グループ内の８ｘ８画素ブロック数をまとめ、冗長と言える符号量（単一グループ内冗長符号量）を算出する。そして、各単一グループ内冗長符号量の総和を求めて、当該総和を注目する冗長性削除単位領域の冗長性とする。さらに伸長画像中のすべての冗長性削除単位領域の冗長性の和を、伸長画像の冗長性とし、ＪＰＥＧ符号化データ量から差し引く。そこで得られた符号量を、再圧縮時の目標符号量とする。
【００３９】
第１乃至第２の実施形態において、所定数の画素で構成される画素ブロックを単位とする第１の符号化アルゴリズムをＪＰＥＧとした。また、その画素ブロックよりも大きいサイズのブロックを単位に符号化する、第２の符号化アルゴリズムをＪＰＥＧ２０００とした。そして、符号化データの冗長正を判断する第３の符号化アルゴリズムとして辞書型符号化を例にした。しかし、この符号化アルゴリズムの組みあせは、限定されるものではない。例えば、第２の符号化アルゴリズムとしては、再圧縮の対象となる画像符号化データの符号化方式と比べて、画像の冗長性を削除できる符号化方式で再圧縮する方法であれば、本発明の範疇となる。例えば、国際標準規格のＪＰＥＧ  ＸＲであっても構わない。ＪＰＥＧ  ＸＲに関して詳細な説明を割愛するが、入力画像を１６×１６画素からなるマクロブロックに分割して符号化を行う。つまり画像の冗長性を１６×１６画素の範囲で削除する。したがって、ＪＰＥＧ  ＸＲの符号化データを再圧縮する際には、ＪＰＥＧ２０００でコードブロックサイズを１６×１６より大きいサイズに設定することで目的を達成することができ、本発明の範疇となる。さらには、ＪＰＥＧのデータをＪＰＥＧ  ＸＲで再符号化することも本発明の範疇となる。
【００４０】
本発明では、画像符号化データの再圧縮の方式について説明しているが、当該再圧縮の方式を含む画像処理システムも本発明の範疇となる。例えば、ユーザーの手元にＸＰＳ（ＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）のデータがあり、それをＭＦＰ等へダイレクトプリントする際、ＭＦＰがＰＤＦ（Ｐｏｒｔａｂｌｅ  Ｄｏｃｕｍｅｎｔ  Ｆｏｒｍａｔ）ダイレクトプリントにしか対応していない場合、ＰＤＦへの変換が必要となる。ＸＰＳではＪＰＥＧ  ＸＲに対応しているが、ＰＤＦでは対応していないため、フォーマット変換する際には、ＰＤＦが対応する画像圧縮で再圧縮する処理が発生する。ＰＤＦではＪＰＥＧ２０００に対応しているため、この再圧縮処理としてＪＰＥＧ２０００を用いることができ、本発明で開示する手法を適用することが可能である。このような実施形態も本発明の範疇となる。
【００４１】
更に、上記の各実施形態では、辞書型符号化を用いて冗長性を判断する例を示したが、本発明はこれに限らず、再符号化の対象となる符号化データの冗長性を判断できれば辞書型符号化以外の公知の符号化技術を利用しても良い。
【００４２】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005843450.tif 000002
【図２】
0005843450.tif 000003
【図３】
0005843450.tif 000004
【図４】
0005843450.tif 000005
【図５】
0005843450.tif 000006
【図６】
0005843450.tif 000007
【図７】
0005843450.tif 000008
【図８】
0005843450.tif 000009
【図９】
0005843450.tif 000010
【図１０】
0005843450.tif 000011
【図１１】
0005843450.tif 000012
【図１２】
0005843450.tif 000013
【図１３】
0005843450.tif 000014
【図１４】
0005843450.tif 000015
【図１５】
0005843450.tif 000016
【図１６】
0005843450.tif 000017
【図１７】
0005843450.tif 000018
【図１８】
0005843450.tif 000019
【図１９】
0005843450.tif 000020
【図２０】
0005843450.tif 000021
【図２１】
0005843450.tif 000022
【図２２】
0005843450.tif 000023
【図２３】
0005843450.tif 000024