(57)【特許請求の範囲】
【請求項１】
複数のブロックに分割されている画像に対応し、当該複数のブロックのうちの連続する２つのブロックにおけるＤＣ成分値の差分を含むＪＰＥＧデータを入力する入力手段と、
前記入力手段により入力された２つの画像に対応するＪＰＥＧデータに基づいて、当該２つの画像の接合が実行されたときの接合画像において接合前の前記２つの画像の内の一方の画像のブロックと他方の画像のブロックとにより新たに連続することになる２つのブロックの組み合わせを特定する特定手段と、
前記入力手段により入力された前記２つの画像に対応する前記ＪＰＥＧデータに基づいて、前記特定手段により特定された前記新たに連続することになる２つのブロックの組み合わせにおけるＤＣ成分値の差分を算出する算出手段と、
前記算出手段により算出された差分が含まれている、前記接合画像に対応するＪＰＥＧデータを作成する作成手段とを有することを特徴とする画像処理装置。
【請求項２】
前記作成手段は、前記算出手段により算出された２つのブロックのＤＣ成分値の差分が、当該２つのブロックの一方のブロックのＤＣ成分値として含まれているＪＰＥＧデータを作成することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記特定手段は、前記接合画像の互いに対向する２つの端部それぞれに対応する２つのブロックを、前記新たに連続することになる２つのブロックとして特定することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記特定手段は、前記接合画像において前記接合により新たに隣接することになる２つのブロックを、前記新たに連続することになる２つのブロックの組み合わせとして特定することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項５】
前記作成手段は、前記接合の実行対象のＪＰＥＧデータに含まれているＤＣ成分値の差分を、前記算出手段により算出された差分で書き換えることによって、前記接合画像に対応するＪＰＥＧデータを作成することを特徴とする請求項１乃至４のいずれか１項に記載の画像処理装置。
【請求項６】
前記作成手段は、前記入力手段により入力されたＪＰＥＧデータに含まれている、前記２つの画像それぞれのブロックに対応するＡＣ成分値を、前記接合画像における当該ブロックに対応するＡＣ成分値として含むＪＰＥＧデータを作成することを特徴とする請求項１乃至５のいずれか１項に記載の画像処理装置。
【請求項７】
複数のブロックに分割されている画像に対応し、当該複数のブロックのうちの連続する２つのブロックにおけるＤＣ成分値の差分を含むＪＰＥＧデータを入力する入力工程と、
前記入力工程において入力された２つの画像に対応するＪＰＥＧデータに基づいて、当該２つの画像の接合が実行されたときの接合画像において接合前の前記２つの画像の内の一方の画像のブロックと他方の画像のブロックとにより新たに連続することになる２つのブロックの組み合わせを特定する特定工程と、
前記入力工程において入力された前記２つの画像に対応する前記ＪＰＥＧデータに基づいて、前記特定工程において特定された前記新たに連続することになる２つのブロックの組み合わせにおけるＤＣ成分値の差分を算出する算出工程と、
前記算出工程において算出された差分が含まれている、前記接合画像に対応するＪＰＥＧデータを作成する作成工程とを有することを特徴とする画像処理方法。
【請求項８】
請求項７に記載の画像処理方法の各工程をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像データを作成する画像処理装置、画像処理方法、及びプログラムに関する。
【背景技術】
【０００２】
画像圧縮のアルゴリズムとして、ＪＰＥＧのベースライン規格がよく使われている。図８はＲＧＢデジタル画像データをベースライン規格のＪＰＥＧデータに変換するために用いられるアルゴリズムのフローチャートである。
【０００３】
このフローチャートによると、ステップＳ１０１では、各画素のＲＧＢ画素値を、ＹＣｂＣｒ（輝度・色差）データに変換する。ステップＳ１０２では、変換した輝度・色差データを、ｘ×ｙ画素（ｘ，ｙ＝８或は１６）のブロックに分割する。ステップＳ１０３ではステップＳ１０２で得られた各ブロックに対し、色差データに関しては、８×８画素になるように縮小処理を行う（サブサンプリング）。輝度データは元のブロックを１つまたは複数の８×８画素のブロックに分割する。このようにして得られた、輝度（１〜４個）、色差（１個×２成分）の８×８画素のブロックの組をＭＣＵ（Minimum Coded Unit：最小符号化ユニット）と呼ぶ。
【０００４】
さらに、ステップＳ１０４では、ステップＳ３０３で得られた８×８画素の各ブロックに対し離散コサイン変換（ＤＣＴ演算）処理を行い、周波数成分に変換して８×８個の二次元係数値を得る。ステップＳ１０５では、得られた二次元係数の各値を、輝度・色差ごとに異なる量子化テーブルを用いて量子化する。ステップＳ１０６では、量子化後のデータを、ＤＣ成分とＡＣ成分とに分けてハフマンコードに割り当てる符号化を行う。この際、ＤＣ成分に関しては一つ前のＭＣＵまたはブロックのＤＣ成分値との差分値を符号化する。ＡＣ成分に関しては、量子化後のデータ列において、量子化値とその前に続く“０”の数（ゼロラン）との組で符号を割り当てる。
【０００５】
そして、ステップＳ１０７では各ブロックで得られた符号データ列を、それぞれジグザグ順で輝度・色差の順に並べる。さらに、ステップＳ１０８ではステップＳ１０７における処理を各ＭＣＵ単位で行い、最後にＭＣＵごとの符号データ列を並べる。
【０００６】
ＪＰＥＧデータを伸張してＲＧＢデータに戻す場合は、図８に示すフローチャートの処理を逆にたどる。
【０００７】
ここで、ステップＳ１０６において、ＤＣ成分に関しては各色成分について一つ前のＭＣＵでの値を参照している。このため、一般には任意位置のＭＣＵからＪＰＥＧの伸張処理を開始することはできず、ＪＰＥＧデータの先頭からＭＣＵ単位で順次伸張処理を行う必要がある。このように、ＪＰＥＧデータは、上記のように、各ＭＣＵの各色成分のＤＣ成分値について、以前のＭＣＵでの値を参照している。このため、画像の一部を符号のままＭＣＵ単位で切り出したり、複数のＪＰＥＧデータを符号のまま接合して１枚のＪＰＥＧデータにまとめることは困難である。
【０００８】
ただし、ＪＰＥＧ規格によれば、ＪＰＥＧ符号化の処理時に、所定数のＭＣＵごとに、ＭＣＵ−ＭＣＵ間にリスタートマーカという特殊なデータを挿入することで、その位置から伸張処理を行うことを可能にしていでる。リスタートマーカのある個所では、ＤＣ成分に関して前のＭＣＵでの値を参照せず、差分でない本来の値を用いて符号化が行われる。このため、リスタートマーカの前でＪＰＥＧデータを符号のまま切断したり、リスタートマーカを用いて複数の（同じ大きさの）ＪＰＥＧデータを接合することができる。例えば、特許文献１は、複数のＪＰＥＧ画像に対し、おのおのの末尾のＥＯＩマーカをリスタートマーカに書き換えてから結合し、１つのＪＰＥＧ画像にまとめる方法を開示している。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００６−１２９２９５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上述のように、リスタートマーカを用いると、比較的容易にＪＰＥＧデータの切断や接合を行うことができる。しかしながら、ＪＰＥＧ規格上、リスタートマーカは、１枚のＪＰＥＧデータ内では一定数のＭＣＵ毎にしか挿入することができず、任意の位置のＭＣＵ間に挿入することはできない。全ＭＣＵ間に入れることは規格上可能だが、その場合はマーカによるサイズ増加が元の符号データ量に対して非常に大きくなってしまうという問題がある。
【００１１】
図９は従来例の課題を説明するための図である。
【００１２】
例えば、一度大きなＪＰＥＧデータを作成後、図９（ａ）に示す画像を図９（ｂ）に示す画像のように、そこから任意の位置の画像データをＭＣＵ単位で切り出すような処理を行う場合を考える。ここで、図９（ｃ）は元画像が４８個（ＭＣＵ１〜ＭＣＵ４８）のＭＣＵを有し、切り出す画像が２０個（ＭＣＵ１０〜１４、１８〜２２、２６〜３０、３４〜３８）のＭＣＵを有していることを示している。この場合、切り出し位置のＭＣＵ間にリスタートマーカが挿入されていなければ、いったんＪＰＥＧデータをすべて伸張して圧縮前の画像に戻し、その画像に対してＭＣＵ単位の切り出しの処理を実行後、切り出された画像を再圧縮するという処理が必要になる。
【００１３】
この処理を行うには、伸張および圧縮でハフマン復号化／符号化、ＤＣＴ演算、量子化／逆量子化の処理が必要なため、長い処理時間や膨大な処理資源（ハードウェアなど）が必要である。加えて、再圧縮のために元のＪＰＥＧデータからの画質劣化も生じる。
【００１４】
また、特許文献１のように、同じ条件（サンプリング比、量子化係数）で圧縮された複数のＪＰＥＧデータを接合して１枚のＪＰＥＧデータを作成するようなニーズもあるが、その他のニーズもある。例えば、接合される複数のＪＰＥＧデータの大きさが異なる場合には、一般にはリスタートマーカとリスタートマーカの間のＭＣＵ数を一定にできないため、接合後のＪＰＥＧデータはＪＰＥＧ規格を満足することができない。
【００１５】
この点を図１０を参照して説明する。
【００１６】
例えば、図１０（ａ）に示すようなＭＣＵ数が横３×縦４のＪＰＥＧデータと、図１０（ｂ）に示すようなＭＣＵ数が横５×縦４のＪＰＥＧデータを左右に接合する場合を考える。この場合、各画像の右端のＭＣＵのデータの後にリスタートマーカーを挿入してあれば、特許文献１が開示する技術によりデータ的に接合することは可能である。しかしながら、図１０（ｃ）に示すような接合後の画像データはリスタートマーカ間のＭＣＵ数（リスタートインターバル）が一定でないためＪＰＥＧ規格を満足しない。
【００１７】
本発明は上記従来例に鑑みてなされたもので、画像に対する接合が実行された画像データを、簡単な処理で作成可能な画像処理装置、画像処理方法、及びプログラムを提供することを目的としている。
【課題を解決するための手段】
【００１８】
上記目的を達成するために本発明の画像処理装置は、次のような構成からなる。
【００１９】
即ち、複数のブロックに分割されている画像に対応し、当該複数のブロックのうちの連続する２つのブロックにおけるＤＣ成分値の差分を含むＪＰＥＧデータを入力する入力手段と、前記入力手段により入力された２つの画像に対応するＪＰＥＧデータに基づいて、当該２つの画像の接合が実行されたときの接合画像において接合前の前記２つの画像の内の一方の画像のブロックと他方の画像のブロックとにより新たに連続することになる２つのブロックの組み合わせを特定する特定手段と、前記入力手段により入力された前記２つの画像に対応する前記ＪＰＥＧデータに基づいて、前記特定手段により特定された前記新たに連続することになる２つのブロックの組み合わせにおけるＤＣ成分値の差分を算出する算出手段と、前記算出手段により算出された差分が含まれている、前記接合画像に対応するＪＰＥＧデータを作成する作成手段とを有する。
【００２０】
また本発明を別の側面から見れば、複数のブロックに分割されている画像に対応し、当該複数のブロックのうちの連続する２つのブロックにおけるＤＣ成分値の差分を含むＪＰＥＧデータを入力する入力工程と、前記入力工程において入力された２つの画像に対応するＪＰＥＧデータに基づいて、当該２つの画像の接合が実行されたときの接合画像において接合前の前記２つの画像の内の一方の画像のブロックと他方の画像のブロックとにより新たに連続することになる２つのブロックの組み合わせを特定する特定工程と、前記入力工程において入力された前記２つの画像に対応する前記ＪＰＥＧデータに基づいて、前記特定工程において特定された前記新たに連続することになる２つのブロックの組み合わせにおけるＤＣ成分値の差分を算出する算出工程と、前記算出工程において算出された差分が含まれている、前記接合画像に対応するＪＰＥＧデータを作成する作成工程とを有することを特徴とする画像処理方法を備える。
さらに本発明をさらに別の側面から見れば、上記画像処理方法の各工程をコンピュータに実行させるためのプログラムを備える。
【発明の効果】
【００２１】
従って本発明によれば、画像に対する接合が実行された画像データを、簡単な処理で作成することができるという効果がある。
【図面の簡単な説明】
【００２２】
【図１】本発明の代表的な実施例であるマルチファンクションプリンタ（ＭＦＰ）装置の概観斜視図である。
【図２】図１で示したＭＦＰ装置の上部に備え付けられた画像読取装置の断面図である。
【図３】画像読取装置の制御回路の構成を示すブロック図である。
【図４】入力ＪＰＥＧデータからＭＣＵ単位で切り出し処理を行った際の各ハフマン符号語の状態変化について示す図である。
【図５】実施例１に従う画像処理部の構成を示すブロック図である。
【図６】実施例２において、２つのＪＰＥＧデータを左右接合する様子を示す図である。
【図７】実施例２に従う画像処理部の構成を示すブロック図である。
【図８】一般的なＪＰＥＧ符号化処理を示すフローチャートである。
【図９】ＪＰＥＧ画像切り出し処理を示す図である。
【図１０】ＪＰＥＧデータを接合する場合の不具合について説明する図である。
【発明を実施するための形態】
【００２３】
以下添付図面を参照して本発明の好適な実施例について、さらに具体的かつ詳細に説明する。なお、既に説明した部分には同一符号を付し重複説明を省略する。
【００２４】
なお、この明細書において、「記録」（「プリント」という場合もある）とは、文字、図形等有意の情報を形成する場合のみならず、有意無意を問わない。また人間が視覚で知覚し得るように顕在化したものであるか否かを問わず、広く記録媒体上に画像、模様、パターン等を形成する、または媒体の加工を行う場合も表すものとする。
【００２５】
最初に共通実施例として用いるマルチファンクションプリンタ装置（以下、ＭＦＰ装置）の構成について説明する。
【００２６】
＜ＭＦＰ装置＞
図１は本発明の代表的な実施例であるＭＦＰ装置１００の概観斜視図である。
【００２７】
ＭＦＰ装置は、接続されたホスト（不図示）からの画像データに基づいて、記録用紙などの記録媒体に画像を記録する以外に、メモリカードなどに格納された画像データに基づいた記録や画像原稿を光学的に読取って複写することができる。
【００２８】
図１において、（ａ）は原稿カバー１０３が閉じられた状態を示しており、（ｂ）は記録媒体の載置トレー１０１、排紙トレー１０２、及び原稿カバー１０３が開けられた状態を示している。
【００２９】
また、コンタクトイメージセンサ（ＣＩＳ）ユニットを搭載する読取部８は画像原稿を読取り、Ｒ成分、Ｇ成分、Ｂ成分のアナログ輝度信号を出力する。カードインタフェース９は、例えば、デジタルスチルカメラ（不図示）で撮影された画像ファイルを記録したメモリカードなどを挿入して、操作部４の所定の操作に従い、そのメモリカードから画像データを読み込むのに使用される。また、ＭＦＰ装置１００にはＬＣＤ１１０のような表示部が設けられている。ＬＣＤ１１０は操作部４による設定内容の表示や機能選択メニューの表示や画像の表示などのために用いられる。
【００３０】
図２は図１で示したＭＦＰ装置の上部に備え付けられた画像読取装置の断面図である。
【００３１】
図２に示すように、画像読取装置２００は本体部２１０と読取対象となる原稿２２０を押さえつけ外部からの光を遮光する圧板２３０とから構成される。圧板２３０は原稿カバー１０３の裏面にセットされている。本体部２１０には光学ユニット２４０、光学ユニット２４０と電気的に接続された回路基板２５０、光学ユニット２４０を走査させる際のレールとなるスライディングロッド２６０、原稿台ガラス２７０が備えられる。光学ユニット２４０には原稿２２０に光を照射し、その反射光を受光して電気信号に変換するするコンタクトイメージセンサ（ＣＩＳ）ユニット３００が内蔵される。画像読取の際には原稿台ガラス２７０上に置かれた原稿２２０を光学ユニット２４０が矢印Ｂの方向（副走査方向）に走査することにより原稿２２０に記録された画像の読取を行う。
【００３２】
図３は画像読取装置（スキャナ）の制御回路の構成を示すブロック図である。
【００３３】
なお、図３において、既に図１〜図２において説明した構成要素には同じ参照番号を付し、その説明は省略する。
【００３４】
ＣＩＳユニット３００はＬＥＤ駆動回路４０３において１ライン毎に各色のＬＥＤ３０３〜３０５を切り替えて点灯させることにより、線順次にカラー画像を読み取る。ＬＥＤ３０３〜３０５は原稿への照射光量を変化させることが可能な光源である。また、ＬＥＤ駆動回路４０３はＬＥＤ３０３〜３０５を任意に点灯させることが可能である。
【００３５】
即ち、ＬＥＤ３０３〜３０５を１つずつ順次点灯させることも、２つずつ順次点灯させることも、場合によっては３つ全て点灯させることも可能である。増幅器（ＡＭＰ）４０４はＣＩＳユニット３００より出力された信号を増幅し、Ａ／Ｄ変換回路４０５はその増幅された電気信号をＡ／Ｄ変換して、例えば、各画素各色成分１６ビットのデジタル画像データを出力する。 画像処理部６００は、Ａ／Ｄ変換回路４０５によって変換されたデジタル画像データを処理する。インタフェース制御回路４０６は画像処理部６００から画像データを読み込んで、外部装置４１２との間で制御データの授受や画像データの出力を行う。また、画像処理部６００からの画像データは画像記録部にも出力することができる。外部装置４１２とは、例えば、パーソナルコンピュータ（不図示）、デジタルカメラ、メモリカードなどである。
【００３６】
また、画像処理部６００では外部装置から入力した画像データ、或は、画像読取装置（スキャナ）２００が画像原稿を読取ることにより生成した画像データを画像処理して画像記録部７００に出力することができる。
【００３７】
画像記録部７００は、インタフェース制御回路４０６からの画像データを画素毎に「記録する」「記録しない」の２値データに変換し、記録媒体に記録剤を用いて画像を記録する。この実施例では、画像記録部７００には、インクジェットプリンタを用いている。しかしながら、この他にも、例えば、電子写真方式を用いたレーザビームプリンタ、或は昇華型プリンタなどを用いることができる。これらのプリンタについては公知なので、ここではその詳細な説明は省略する。
【００３８】
次に、以上のような構成のＭＦＰ装置の画像処理部の構成と動作について説明する。
【実施例１】
【００３９】
画像処理部６００は入力した画像データを一時的に格納するためのバッファメモリを備え、画像処理を行うことができる。その処理を実行するに当り、ユーザは操作部４を操作して指示を与えることもできる。例えば、以下に示すような、ＪＰＥＧデータから一部を切り出す場合の切り出し箇所の指定などを行うことができる。
【００４０】
ここでは、図８に示すように、１枚のＪＰＥＧデータから、ＭＣＵ単位で部分的にＪＰＥＧデータ矩形画像として切り出し、切り出した結果を画質劣化なく１枚のＪＰＥＧデータとして生成する機能を持つ画像処理装置について説明する。
【００４１】
まず、ＪＰＥＧデータの構造について説明する。簡単のため、サンプリング比が４：４：４（サブサンプリングしない）で、リスタートマーカーが存在しない例について説明する。また、符号データの“０×ＦＦ”の後に挿入される“０×００”（スタッフバイト）はすでに除かれていてここでは考えないものとする。
【００４２】
１つのＭＣＵはＹ、Ｃｂ、Ｃｒの３つの色成分からなり、各色成分は８×８画素のブロックを表す。ＪＰＥＧ圧縮処理時に各色成分の８×８画素のブロックに対して、ＤＣＴ演算および量子化の処理を行って８×８の係数列を得た後、この系数列をジグザグスキャンし、ＤＣ成分値（８×８の左上端）とＡＣ成分値（残り６３個の係数列）で別々の符号化を行う。ＤＣ成分値は、前のＭＣＵでの同じ色成分のＤＣ成分値の本来の値との差分を計算し、その値を１個のハフマン符号に割り当てる。ＡＣ成分値については、６３個の係数値のうちゼロの個数が多くなる。このため、「ゼロの連続数＋非ゼロの数値」の組を１個のハフマン符号語に割り当てる。最後までゼロが続く場合は、ＥＯＢ（End of Block）という特殊なハフマン符号語を割り当てる。よって、１ＭＣＵの１成分のハフマン符号語列は、「ＤＣ成分値のハフマン符号語１つ」と「ＡＣ成分値の複数のハフマン符号語」がこの順に並んだものとして構成される。これが３色成分並ぶことで１つのＭＣＵの符号を形成し、それがさらに元画像を形成する総ＭＣＵ分並ぶことで、１枚のＪＰＥＧ画像データの符号部分を形成する。
【００４３】
図４は１枚の画像を形成するＪＰＥＧデータの符号部分の構造をハフマン符号語の１個単位で示す様子を示す図である。
【００４４】
ここでは、図４（ａ）に示すような１６×１６画素のサンプリング比４：４：４のカラーＪＰＥＧデータを例とする。ＭＣＵ数は横２×縦２となる。説明の便宜上、個々のＭＣＵには図４（ａ）のようにＭＣＵ０、ＭＣＵ１、ＭＣＵ２、ＭＣＵ３という番号を付す。
【００４５】
ＭＣＵｉはＹＣｂＣｒ色成分から構成され、各色成分はＤＣ／ＡＣ成分値を示す符号語から構成され、うちＤＣ成分値は１個のハフマン符号語で表現され、ＡＣ成分値は複数個のハフマン符号語で表現される。これを符号語の単位で示すと図４（ｂ）に示すようになる。
【００４６】
ここで、Ｙｉ＿ＤＣ、Ｃｂｉ＿ＤＣ、Ｃｒｉ＿ＤＣ（ｉ＝０〜３）はそれぞれ、ＭＣＵｉの各色成分のＤＣ成分値を表すハフマン符号語である。Ｙｉ＿ＡＣ［ｋ］、Ｃｂｉ＿ＡＣ［ｋ］、Ｃｒｉ＿ＡＣ［ｋ］はそれぞれ、ＭＣＵｉの各色成分のＡＣ成分値を示すハフマン符号語のうちｋ番目であることを示す。また、ＭＣＵｉの各色成分のＡＣ成分値を示すハフマン符号語の数は、Ｙ、Ｃｂ、Ｃｒ成分についてそれぞれｐｉ，ｑｉ，ｒｉであるとする。
【００４７】
さて、Ｙｉ＿ＤＣ、Ｃｂｉ＿ＤＣ、Ｃｒｉ＿ＤＣの各符号語を元のＪＰＥＧデータの各色成分のＤＣ成分ハフマンテーブルに従って複号化して数値に換算する。この場合、その換算値はそれぞれ、Ｄｅｃ［Ｙｉ＿ＤＣ］、Ｄｅｃ［Ｃｂｉ＿ＤＣ］、Ｄｅｃ［Ｃｒｉ＿ＤＣ］になるものとする。ＭＣＵｉの各色成分のＤＣ成分値の伸張後の値をそれぞれＤＹ［ｉ］、ＤＣｂ［ｉ］、ＤＣｒ［ｉ］とすると、ＪＰＥＧ符号化時に前のＭＣＵでのＤＣ成分値との差分値をハフマン符号語に置き換えているため、これらＤＣ成分値は以下のようになる。
【００４８】
即ち、ｉ＝０のとき
ＤＹ［０］  ＝Ｄｅｃ［Ｙ０＿ＤＣ］、
ＤＣｂ［０］＝Ｄｅｃ［Ｃｂ０＿ＤＣ］、
ＤＣｒ［０］＝Ｄｅｃ［Ｃｒ０＿ＤＣ］
である。
【００４９】
一方、ｉ≠０のとき
ＤＹ［ｉ］  ＝ＤＹ［ｉ−１］  ＋Ｄｅｃ［Ｙｉ＿ＤＣ］、
ＤＣｂ［ｉ］＝ＤＣｂ［ｉ−１］＋Ｄｅｃ［Ｃｂｉ＿ＤＣ］、
ＤＣｒ［ｉ］＝ＤＣｒ［ｉ−１］＋Ｄｅｃ［Ｃｒｉ＿ＤＣ］
となる。
【００５０】
ここで、図４（ａ）に示すような４つのＭＣＵからなるＪＰＥＧ画像データから、図４（ｃ）に示すようなＭＣＵ１とＭＣＵ３だけからなるＪＰＥＧ画像データを切り出す処理について考える。
【００５１】
この場合、ＭＣＵ１とＭＣＵ３のＡＣ成分を表す符号語群は、切り出した後のＪＰＥＧデータにおいても同じものを使うことができる。ただしＤＣ成分値については、ＭＣＵ１のＤＣ成分値がＭＣＵ０のＤＣ成分値との差分値を、同じくＭＣＵ３ではＭＣＵ２との差分値を参照して符号化されている。このため、単純に符号語をＭＣＵ単位で切り出しただけでは、切り出した後のＪＰＥＧ符号データを正常に伸張することができない。つまり、切り出された後の左端のＭＣＵ毎に、各色成分のＤＣ成分値を計算（＝各ＭＣＵで差分値を積算）し、切り出された画像でその前に存在するＭＣＵのＤＣ成分値との差分を計算して、その差分値を符号化しなければならない。
【００５２】
図４（ｃ）に示す例でいうと、ＭＣＵ１，３のＤＣ成分値は
ＤＹ［１］  ＝ＤＹ［０］  ＋Ｄｅｃ［Ｙ１＿ＤＣ］
ＤＣｂ［１］＝ＤＣｂ［０］＋Ｄｅｃ［Ｃｂ１＿ＤＣ］
ＤＣｒ［１］＝ＤＣｒ［０］＋Ｄｅｃ［Ｃｒ１＿ＤＣ］
ＤＹ［３］  ＝ＤＹ［２］  ＋Ｄｅｃ［Ｙ３＿ＤＣ］
ＤＣｂ［３］＝ＤＣｂ［２］＋Ｄｅｃ［Ｃｂ３＿ＤＣ］
ＤＣｒ［３］＝ＤＣｒ［２］＋Ｄｅｃ［Ｃｒ３＿ＤＣ］
となる。
【００５３】
ある値ｘをＤＣ成分値のハフマンテーブルに従って符号化するとＥｎｃ［ｘ］という符号語になるものとする。また、ＭＣＵ１，３のＤＣ成分のハフマン符号語をＹ’ｊ＿ＤＣ、Ｃｂ’ｊ＿ＤＣ、Ｃｒ’ｊ＿ＤＣ（ｊ＝１，３）とすると、これらは次のようになる。
【００５４】
即ち、
Ｙ’１＿ＤＣ  ＝Ｅｎｃ［ＤＹ［１］］  ＝
Ｅｎｃ［ＤＹ［０］＋Ｄｅｃ［Ｙ１＿ＤＣ］］
Ｃｂ’１＿ＤＣ＝Ｅｎｃ［ＤＣｂ［１］］＝
Ｅｎｃ［ＤＣｂ［０］＋Ｄｅｃ［Ｃｂ１＿ＤＣ］］
Ｃｒ’１＿ＤＣ＝Ｅｎｃ［ＤＣｒ［１］］＝
Ｅｎｃ［ＤＣｒ［０］＋Ｄｅｃ［Ｃｒ１＿ＤＣ］］
Ｙ’３＿ＤＣ  ＝Ｅｎｃ［ＤＹ［３］−ＤＹ［１］］
＝Ｅｎｃ［ＤＹ［２］＋Ｄｅｃ［Ｙ３＿ＤＣ］
−（ＤＹ［０］＋Ｄｅｃ［Ｙ１＿ＤＣ］） ］
Ｃｂ’３＿ＤＣ＝Ｅｎｃ［ＤＣｂ［３］−ＤＣｂ［１］］＝
Ｅｎｃ［ＤＣｂ［２］＋Ｄｅｃ［Ｃｂ３＿ＤＣ］
−（ＤＣｂ［０］＋Ｄｅｃ［Ｃｂ１＿ＤＣ］）］
Ｃｒ’３＿ＤＣ＝Ｅｎｃ［ＤＣｒ［３］−ＤＣｒ［１］］＝
Ｅｎｃ［ＤＣｒ［２］＋Ｄｅｃ［Ｃｒ３＿ＤＣ］
−（ＤＣｒ［０］＋Ｄｅｃ［Ｃｒ１＿ＤＣ］）］
として得られる。
【００５５】
このようにして得られた切出し後のＭＣＵ１，３のＤＣ成分値のハフマン符号語を用いて図４（ｄ）のように符号語を並べ、その最初にＪＰＥＧヘッダ、最後にＥＯＩマーカを付加する。このようにすることで、図４（ｃ）のＭＣＵ１，３のみからなる画像のＪＰＥＧデータを生成することができる。
【００５６】
つまり、切り出されたＭＣＵ群について、左端のＭＣＵと右端のＭＣＵのＤＣ成分値とその差分値を計算し、左端のＭＣＵについては、そのＤＣ成分符号語を、その差分値から得られる符号語に置き換える。このようにすることで、切出し後のＭＣＵ群の符号群が１枚のＪＰＥＧデータとして扱えるようになる。
【００５７】
このように、ＪＰＥＧデータからＭＣＵ単位で符号データを切り出す際に、切り出された画像の左端のＭＣＵにおいて、そのＤＣ成分値を計算し、ＤＣ成分値を示す符号語のみを書き換え、他の符号語はもとのＪＰＥＧデータのものをそのままコピーする。このようにすることで、切り出された結果もまたＪＰＥＧデータとすることができる。この切り出し処理においては、量子化・逆量子化、およびＤＣＴ演算処理が不要なため、ハードウェア資源（論理回路のゲート数またはＣＰＵ処理能力）をさほど必要とせず、また画質劣化を伴うこともない。
【００５８】
図５は、画像処理部６００の内部構造を示すブロック図である。この画像処理部ではスキャナから画像原稿を読取って得られたＲＧＢ画像データにＹＣｂＣｒに色空間変換してＪＰＥＧ符号化し内部のバッファメモリに格納されたＪＰＥＧデータを扱う。ＪＰＥＧ符号化そのものについては公知なのでその説明は省略する。なお、この図に示す各ブロックは、ＡＳＩＣなどのハードウェア回路またはソフトウェア処理モジュール（プログラム）のどちらで実現しても良い。また、画像処理部６００では、外部装置からＪＰＥＧデータを入力した場合には、そのまま処理を実行する。
【００５９】
図５において、ＤＭＡコントローラ（ＤＭＡＣ）６０１がメモリからＪＰＥＧデータを読み出し、スタッフバイト除去部６０２では読み出したＪＰＥＧデータから、スタッフバイト（０×ＦＦのあとの０×００）を除去する。次に、ハフマン符号化器６０３はＪＰＥＧデータのハフマン符号化を行い、各符号語に分解する、符号語数カウンタ６０４は各符号語を解析およびカウントし、ＭＣＵの切れ目、ＹＣｂＣｒの各色成分の切れ目、ＤＣ／ＡＣ成分値の切れ目を判別する。ＭＣＵ数カウンタ６０５は符号語数カウンタ６０４での切れ目の判別結果に従い、入力された符号データのＭＣＵ数をカウントする。そして、ＤＣ成分値計算ブロック６０６は各ＭＣＵの各色成分のＤＣ成分値を計算する。
【００６０】
またさらに、ＭＣＵ切り出し部６０７はカウントされたＭＣＵ数に基づき、ハフマン符号化器６０３で変換された符号語群に対し、削除するＭＣＵに含まれる符号語と切り出して残すＭＣＵに含まれる符号語を弁別する。そして、ＤＣ差分値計算部６０８は、切り出されたＭＣＵについて、計算された各ＭＣＵのＤＣ成分値から、切り出された後のＭＣＵ群の右端と左端（ＪＰＥＧデータの接合部）のＭＣＵの各色成分のＤＣ成分値の差分値を計算する。
【００６１】
その後、このようにして計算されたＤＣ差分値について、ＤＣ成分値符号語生成部６０９はその差分値に対応するハフマン符号語を生成する。さらに、バイトパッキング部６１０では、切り出されたＡＣ成分の符号語と、ＤＣ成分値符号語生成部６０９で書き換えられたＤＣ成分の符号語を合わせ、バイト単位にまとめる。このようにバイト単位にまとめられたＪＰＥＧデータの符号語に対し、スタッフバイト挿入部６１１は、ＪＰＥＧ規格に従って、１バイトが“０×ＦＦ”になっているバイトの次に“０×００”のバイトを挿入し、ワードバッファ６１２に出力する。ワードバッファ６１２では、出力される符号データ列を一時的にある程度の容量まで貯めることができる。
【００６２】
その後、ＤＭＡコントローラ（ＤＭＡＣ）６１３はワードバッファ６１２にある程度の容量の符号語データ列がたまった時点で、そのデータをＤＭＡ出力する。
【００６３】
なお、ＤＭＡＣ６０１〜ＤＣ成分値計算部６０６についてはＪＰＥＧ方式に従う通常の伸張装置内で、バイトパッキング部６１０〜ＤＭＡＣ６１３についてはＪＰＥＧ方式に従う通常の圧縮装置内で行われている処理と同じ機能を持つ。
【００６４】
次に、この画像処理部の各部の動作について説明する。
【００６５】
まず、ＤＭＡＣ６０１で、ＪＰＥＧデータを入力する。ここで入力されるＪＰＥＧデータにリスタートマーカはなく、またＪＰＥＧヘッダとＥＯＩマーカは事前に除去されているものとする。
【００６６】
スタッフバイト除去部６０２は、入力ＪＰＥＧデータをバイト単位に分解し、“０×ＦＦ”のあとに挿入されている０×００を取り除く。こうすることで、以降のブロックでは、入力データを純粋なハフマン符号語群として扱うことができる。ハフマン符号化器６０３では、入力されたハフマン符号語群を解析し、符号語ひとつずつに分離する。ハフマン符号化器６０３からの出力は各ＭＣＵの各色成分について、ＤＣ成分差分値を表す符号語１つと、ＡＣ成分の「ゼロラン＋非ゼロ数値」の組み合わせを表す符号語が複数である。
【００６７】
符号語数カウンタ６０４で、ハフマン符号化器６０３から出力された符号語を復号し、かつＡＣ成分とＤＣ成分それぞれをカウントする（第１のカウント手段）。ＡＣ成分値の符号語群について、ゼロの数＋非ゼロ数値の数の合計が“６３”になるか、途中でＥＯＢを表す符号語が現れた時点で、ＭＣＵの各色成分の切れ目と判断する。ＤＣ成分とＡＣ成分の各符号語はそのままＭＣＵ切り出し部６０７へ送られる。
【００６８】
ＭＣＵ数カウンタ６０５は、符号語数カウンタ６０４で分解された符号語群をＭＣＵ単位でカウントする（第２のカウント手段）。ＤＣ成分値計算部６０６は、入力された全ＭＣＵの全色成分に関するＤＣ成分値を計算し、差分値についてはＭＣＵ、各色成分ごとに積算する（第１の計算手段）。
【００６９】
ＭＣＵ切り出し部６０７は、カウントされたＭＣＵ数に基づいて、ハフマン符号化器６０３から出力された符号語群のうち、切り出されるＭＣＵ以外の符号語とＤＣ成分値を切り捨てる。そして、ＤＣ成分値はＤＣ差分値計算部６０８に、ＤＣ符号語はＤＣ成分値符号語生成部６０９に、ＡＣ符号語はバイトパッキング部６１０へ転送する。なお、どの部分を切り出すのかの切り出し指示は操作部４からユーザが指示しても良いし、外部装置からＪＰＥＧデータとともに転送される命令に含まれていてもよい。
【００７０】
ＤＣ差分値計算部６０８では、切り出されるＭＣＵの右端と左端のＤＣ成分値の差分値を得る（第２の計算手段）。図９（ｃ）に示した例でいうと、ＭＣＵ１０，１４，１８，２２，２６，３０，３４について、ＭＣＵ１４と１８、ＭＣＵ２２と２６、ＭＣＵ３０と３４でのＤＣ成分値の差分を、色成分ごとにそれぞれ計算する。ＭＣＵ１０については、その値を差分値とする（＝０との差分）。
【００７１】
ＤＣ成分値符号語生成部６０９では、ＤＣ差分値計算部６０８で計算されたＭＣＵ（図９（ｃ）の例ではＭＣＵ１０，１８，２６，３４）についてはそのＤＣ成分差分値について、元のＪＰＥＧデータのＤＣ成分ハフマンテーブルに従って符号語に変換する。残りのＭＣＵ（ＭＣＵ１１〜１４、１９〜２２、２７〜３０、３５〜３８）のＤＣ成分値の符号語についてはそのままとする。その後、すべてのＭＣＵのＤＣ成分符号語をバイトパッキング部６１０へ出力する。
【００７２】
バイトパッキング部６１０では、ＤＣ成分値符号語生成部６０９で計算された各ＭＣＵのＤＣ成分符号語と、ＭＣＵ切り出し部６０７で切り出されたＡＣ成分符号語群を統合し並べる。そして、各ＭＣＵについて、Ｙ成分のＤＣ成分符号語、Ｙ成分のＡＣ成分符号語群、Ｃｂ成分のＤＣ成分符号語、Ｃｂ成分のＡＣ成分符号語群、Ｃｒ成分のＤＣ成分符号語、Ｃｒ成分のＡＣ成分符号語群の順に並べビット単位で連結する。
【００７３】
スタッフバイト挿入部６１１で、バイトパッキング部６１０で生成された符号列を１バイト単位に分割し、そのバイトが“０×ＦＦ”になった場合は次のバイトに“０×００”を挿入する。あと、出力の最後のＭＣＵのデータについては、バイト境界までビット１を埋め、最後にＥＯＩマーカ（０×ＦＦＤ９）を付加する。出力ワードバッファ６１２は、ＤＭＡに都合のいい単位（例えば、３２バイト）になるまで出力データを溜め込む。最後に、ＤＭＡＣ６１３では、出力ワードバッファに蓄積したデータをＤＭＡ出力する。
【００７４】
上述の処理を行うことで、入力ＪＰＥＧデータから、必要な部分だけをＭＣＵ単位で切り出し、ＪＰＥＧ規格に合致した画像データとして出力することができる。
【００７５】
従って、以上説明した実施例に従えば、画像劣化を伴うことなく、ＪＰＥＧデータのＭＣＵ単位での切り出しや接合を行うことができる。また、量子化／逆量子化やＤＣＴ演算処理を行わないため、以上の処理をハードウェアで実現する場合には論理回路のゲート数を削減したり、ソフトウェアで実現する場合はその処理時間など短縮するなど、処理資源を節約することができる。
【実施例２】
【００７６】
この実施例では、図６に示すように、複数のＪＰＥＧデータをＭＣＵ単位で接合し、接合した結果の画像を画質劣化なく１つのＪＰＥＧデータとして生成する機能を持つ画像処理装置について説明する。接合する複数のＪＰＥＧデータは、色成分数、サンプリング比、ハフマンテーブル、量子化テーブルがすべて同一でなければならない。
【００７７】
説明を簡単にするため、この実施例では図６（ａ）（ｂ）のように同じ高さの２枚のＪＰＥＧデータを左右に接合する場合について説明する。しかしながら、予め１ＭＣＵ分の白画像ＪＰＥＧデータを用意しておくことで、同様の手法を用いて任意のサイズのＪＰＥＧデータを任意の位置（ＭＣＵ単位）に接合することが可能である。３つ以上のＪＰＥＧデータを接合する場合は、２つずつ接合する処理を繰り返せばよい。なお、どの部分を接合するのかの接合指示は操作部４からユーザが指示しても良いし、外部装置からＪＰＥＧデータとともに転送される命令に含まれていてもよい。
【００７８】
図７はこの実施例に従う画像処理部の構成を示すブロック図である。この図に示す各ブロックはそれぞれ、ハードウェアで実現しても良いし、ソフトウェアで実現しても良い。この点は実施例１の画像処理部と同様である。また、図６において、６０１ａ〜６０６ａと６０１ｂ〜６０６ｂはそれぞれ図５の６０１〜６０６と同じ構成要素である。この例では、２枚のＪＰＥＧ画像を扱うため、入力ＪＰＥＧデータが２つあり、これらをそれぞれ独立に処理する必要があるので、図６に示すような構成となっている。前者をパスＡ、後者をパスＢと呼ぶ。ここでは、入力画像データが図６の（ａ）、（ｂ）である場合を例として説明する。（ａ）に示すＪＰＥＧデータはパスＡを通り、（ｂ）に示すＪＰＥＧデータはパスＢを通すものとする。その他、図５で示したのと同じ構成要素には同じ参照番号を付し、その説明は省略する。
【００７９】
なお、図７ではこの実施例の機能を説明するために２つのパスを明示し、そのパスを通過する構成要素を６０１ａ〜６０６ａと６０１ｂ〜６０６ｂとして明記したが、必ずしもパスの数に対応する構成要素が必要な訳ではない。例えば、図５に示すような構成要素６０１〜６０６が２つのパス（２つのデータストリーム）を並列処理可能な構成であっても良い。
【００８０】
この実施例の画像処理部に特徴的な構成は符号語データマージ部６１４であり、接合する２つ画像を表わすＪＰＥＧデータの符号語群をマージする。
【００８１】
符号語データマージ部６１４は、パスＡを通る図６（ａ）に示すＪＰＥＧデータのＭＣＵ１，２，３について、符号語数カウンタ６０４ａからＤＣ成分とＡＣ成分の符号語群と、ＤＣ成分値計算部６０６ａからＤＣ成分値を入力する。そして、ＤＣ成分値、ＤＣ符号語、ＡＣ符号語をそれぞれ、ＤＣ差分値計算部６０８，ＤＣ成分値符号語生成部６０９，バイトパッキング部６１０へ転送する。
【００８２】
次にパスＡの処理をいったん止め、パスＢを通る図６（ｂ）に示すＪＰＥＧデータのＭＣＵ１３〜１７についても、符号語数カウンタ６０４ｂとＤＣ成分値計算部６０６ｂとから符号語群とＤＣ成分値を受信する。そして、同様にＤＣ成分値、ＤＣ符号語、ＡＣ符号語をそれぞれ、ＤＣ差分値計算部６０８，ＤＣ成分値符号語生成部６０９，バイトパッキング部６１０へ転送する。
【００８３】
ここでパスＢの処理を止め、パスＡを通る図６（ａ）に示すＪＰＥＧデータのＭＣＵ４，５，６の処理を行う。以降同様の処理を繰り返す。
【００８４】
ＤＣ差分値計算部６０８では、図６（ａ）と（ｂ）に示すＪＰＥＧデータに関し、互いが接合するブロックにおいて、ＤＣ差分値を再計算する。図６の例では、図６（ｃ）の斜線が施されたブロックに関してこの処理を行う。つまり、ＭＣＵ１３ではＭＣＵ３のＤＣ成分値との差分を取る。以降同様に、ＭＣＵ４とＭＣＵ１７、ＭＣＵ１８とＭＣＵ６、ＭＣＵ７とＭＣＵ２２、ＭＣＵ２３とＭＣＵ９、ＭＣＵ１０とＭＣＵ２７、ＭＣＵ２８とＭＣＵ１２の間においてＤＣ成分値の差分値を計算する。このようにして計算された差分値に基づき、ＤＣ成分値符号語生成部６０９はＤＣ成分値の符号語に変換する。
【００８５】
これ以降は実施例１と同様に、ＭＣＵが接合された境界部分（ＭＣＵ１３，４，１８，７，２３，１０，２８）におけるＤＣ成分符号語のみを書き換える。そして、それ以外のＤＣ成分、と全てのＡＣ成分の符号語は、図６（ａ）（ｂ）に示す該当ＭＣＵのものをそのまま用いて図６（ｃ）に示すＭＣＵ順にデータを並べる。
【００８６】
このように並べられたＪＰＥＧデータに対してバイトパッキング部６１０でバイトパッキングを、スタッフバイト挿入６１１ではスタッフバイト挿入を実行し、出力ワードバッファ６１２にデータを出力し一時的に保存する。最後に、ＤＭＡＣ６１３から処理されたＪＰＥＧデータをＤＭＡ出力する。このようにして、図６（ａ）（ｂ）に示す２つのＪＰＥＧデータが接合された図６（ｃ）に示すＪＰＥＧデータを得ることができる。
【００８７】
従って、以上説明した実施例に従えば、複数のＪＰＥＧデータをＭＣＵ単位で接合し、接合した結果の画像を画質劣化なく１つのＪＰＥＧデータとして生成することができる。
【００８８】
以上説明したようにこれらの実施例によれば、ＪＰＥＧデータを入力として、ハフマン符号化とＭＣＵ単位のＤＣ成分値の計算を行い、ＪＰＥＧデータの切り出しや接合が起きた場所でのＤＣ成分値の相対値を再計算する。そして、該当するＤＣ成分値の符号語のみを書き換える処理を行ってから、それ以外（ＡＣ成分値）の符号語群を入力から出力にコピーする。
【００８９】
なお、これらの場合、ＪＰＥＧデータの符号部のみを対象とし、画像サイズやサンプリング比や量子化テーブルを含むＪＰＥＧヘッダ部については処理の対象としない。画像の切り出しや接合処理において、処理後の画像のヘッダ部については、別の処理部で適当に処理されることを想定している。
【図１】
0005247793.tif 000002
【図２】
0005247793.tif 000003
【図３】
0005247793.tif 000004
【図４】
0005247793.tif 000005
【図５】
0005247793.tif 000006
【図６】
0005247793.tif 000007
【図７】
0005247793.tif 000008
【図８】
0005247793.tif 000009
【図９】
0005247793.tif 000010
【図１０】
0005247793.tif 000011