(57)【要約】【課題】  入力画像を複数のブロックに分割し、各ブロック毎に処理を行いながらも、簡単な構成でしかも高速に、ブロックの境界部の連続性を維持しつつフィルタ処理を行うことが可能になる。【解決手段】  ブロック分割部２０１は、入力画像データを複数の画像ブロックに分割する。ブロック処理部２０２は分割されたブロックの画像データを入力し、フィルタ処理を行う。その際のフィルタ処理の中間結果を中間結果保存メモリ２０３に記憶すると共に、注目ブロックのフィルタ処理する際には、その注目画像ブロックに隣接する既フィルタ処理において一時記憶された中間結果を参照して処理する。【選択図】  図２
2005094212.tif 000002
【特許請求の範囲】
【請求項１】
入力画像データに対してフィルタ処理する画像処理装置であって、
前記入力画像データを複数の画像ブロックに分割する分割手段と、
該分割手段で分割した各画像ブロックの画像データを順次入力し、フィルタ処理するフィルタ手段とを備え、
前記フィルタ手段は、
注目画像ブロックをフィルタ処理する際に、当該注目画像ブロック内の周辺
近傍の中間結果を一時的に記憶する記憶手段と、
注目画像ブロックをフィルタ処理する際に、当該注目画像ブロックに隣接す
る既フィルタ処理において一時記憶された中間結果を参照してフィルタ処理す
る手段と
を備えることを特徴とする画像処理装置。
【請求項２】
前記フィルタ処理手段は、ウェーブレット変換を行うための所定数のタップを有する一次元フィルタを用いて、入力した画像データの水平、垂直方向に行うフィルタ演算を行う手段であって、
前記記憶保持手段は、前記タップの一次元フィルタ処理する際の各段階での中間演算結果を記憶保持することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記フィルタ処理手段は、
前記画像ブロックを更に複数の小ブロックに分割する手段と、
分割した小ブロックそれぞれに対してフィルタ処理を行う小ブロック用フィルタ手段と、
各小ブロックフィルタ手段でフィルタ処理中の中間データを互いに伝達する伝達手段と
を備えることを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記フィルタ処理手段は、入力画像と所定の繰り返しパターンとの合成処理であることを特徴とする請求項１に記載の画像処理装置。
【請求項５】
前記フィルタ処理手段は、入力画像の解像度もしくは画素数を変更するため、入力画像から補間画素を生成する手段であることを特徴とする請求項１に記載の画像処理装置。
【請求項６】
入力画像データに対してフィルタ処理する画像処理方法であって、
前記入力画像データを複数の画像ブロックに分割する分割工程と、
該分割工程で分割した各画像ブロックの画像データを順次入力し、フィルタ処理するフィルタ工程とを備え、
前記フィルタ工程は、
注目画像ブロックをフィルタ処理する際に、当該注目画像ブロック内の周辺
近傍の中間結果を一時的に記憶する記憶工程と、
注目画像ブロックをフィルタ処理する際に、当該注目画像ブロックに隣接す
る既フィルタ処理において一時記憶された中間結果を参照してフィルタ処理す
る工程と
を備えることを特徴とする画像処理方法。
【請求項７】
コンピュータが読み込み実行することで、入力画像データに対してフィルタ処理する画像処理装置として機能するコンピュータプログラムであって、
前記入力画像データを複数の画像ブロックに分割する分割手段と、
該分割手段で分割した各画像ブロックの画像データを順次入力し、フィルタ処理するフィルタ手段とを備え、
前記フィルタ手段は、
注目画像ブロックをフィルタ処理する際に、当該注目画像ブロック内の周辺
近傍の中間結果を一時的に記憶する記憶手段と、
注目画像ブロックをフィルタ処理する際に、当該注目画像ブロックに隣接す
る既フィルタ処理において一時記憶された中間結果を参照してフィルタ処理す
る手段
として機能することを特徴とするコンピュータプログラム。
【請求項８】
請求項７に記載のコンピュータプログラムを格納することを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理装置及び方法、並びにコンピュータプログラム及びコンピュータ可読記憶媒体に関するものである。
【背景技術】
【０００２】
大きな画像データの処理を考えた場合、これをひとまとまりとして扱うと大きなバッファメモリが必要になるので、画像を複数のブロックに分割して処理方法がある（特許文献１）。
【０００３】
しかし、ブロックに対する処理を行う際に、そのブロック内の画像データのみを参照する場合には、その処理した結果はブロックの境界部分で不連続なものとなり易い問題を含んでいる。
【０００４】
一方、国際標準規格ISO/IEC15444-1:2000 (所謂JPEG2000)におけるウェーブレット変換処理という技術がある。この技術では、境界外のデータを、境界内のデータを折り返して生成した鏡像を用いているので、上記問題点はある程度緩和される。しかしながら、ブロック分割しない場合と比較すると、まだまだ改善の余地がある。
【０００５】
したがって、画像データを一括して処理することが望まれるが、この場合には、画像データを保持するためのフレームメモリまたはラインメモリを必要とする。昨今のデジタルカメラは優に数百万画素の解像度を有することを鑑みると、必要とするメモリは膨大なものとなる。
【特許文献１】特開平5-64010号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明はかかる問題点に鑑みなされたものであり、メモリ効率の観点からブロック分割技法を採用しつつ、尚且つ、ブロック間の境界部分での不連続性が発生しにくくし、更には、フィルタ処理を高速なものとする技術を提供しようとするものである。
【課題を解決するための手段】
【０００７】
この課題を解決するため、例えば本発明の画像処理装置は以下の構成を備える。すなわち、
入力画像データに対してフィルタ処理する画像処理装置であって、
前記入力画像データを複数の画像ブロックに分割する分割手段と、
該分割手段で分割した各画像ブロックの画像データを順次入力し、フィルタ処理するフィルタ手段とを備え、
前記フィルタ手段は、
注目画像ブロックをフィルタ処理する際に、当該注目画像ブロック内の周辺
近傍の中間結果を一時的に記憶する記憶手段と、
注目画像ブロックをフィルタ処理する際に、当該注目画像ブロックに隣接す
る既フィルタ処理において一時記憶された中間結果を参照してフィルタ処理す
る手段とを備える。
【発明の効果】
【０００８】
本発明によれば、入力画像を複数のブロックに分割し、各ブロック毎に処理を行いながらも、簡単な構成でしかも高速に、ブロックの境界部の連続性を維持しつつフィルタ処理を行うことを可能になる。
【発明を実施するための最良の形態】
【０００９】
以下、添付図面に従って本発明に係る実施形態を説明する。
【００１０】
図１は実施の形態における画像処理装置の主要部の構成図である。
【００１１】
ブロック処理手段１０２は矩形ブロック画像の処理を行なうが、その矩形ブロックの大きさはある有限の幅、または、高さ、または、面積の制限がある。ブロック分割手段１０１は、入力画像データをブロック処理手段１０２が扱える大きさに分割するためのものである。中間結果保存手段１０３はブロック処理手段で後に使用する中間結果を一時的に保存しておくためのものである。ラスタ変換手段１０４はブロック処理手段１０１の出力を、入力画像において対応する画素と同じ順にするためのものである。後続する処理がブロック状に区切られた画像データのままで支障がないなら、ラスタ変換手段１０４は省略することもできる。
【００１２】
図２は、図１の構成をＪＰＥＧ２０００符号化に基づく符号化装置の構成を示している。
【００１３】
この符号化装置は、本実施形態によってブロックに分割したウェーブレット変換処理においても、画像全体を一度にウェーブレット変換したのと同じ結果を得ることが可能で、ＪＰＥＧ２０００におけるタイル分割による画質の低下を回避する。
【００１４】
ブロック分割部２０１は画像データの入力を、後のブロック処理部２０２で処理可能なブロックに分割し、ブロック画像データを生成する。
【００１５】
ブロック処理部２０２はブロック分割部２０１からのブロック画像データ、および、中間結果保存メモリ２０３から読み出した以前のブロックに対する処理の中間結果データを入力し、処理結果を量子化部２０４に出力すると共に後続するブロックの処理に備えて中間結果を中間結果保存メモリ２０３に出力し、記憶させる。
【００１６】
量子化部２０４、および、エントロピー符号化部２０５は、それぞれ量子化、またはエントロピー符号化をＪＰＥＧ２０００で規定された方法に従って行なうためのものである。ＪＰＥＧ２０００ではエントロピー符号化はコーディングブロックという矩形領域単位で行なうことが規定されているので、本実施形態例では図１におけるラスタ変換手段１０４は必要ではない。
【００１７】
以下、図２における各部の詳細について説明する。
【００１８】
ブロック分割部２０１は、図３に示すように、入力画像３０１（太実線）の各辺を折り返して部分的な鏡像を付加し、鏡像付画像３０２に対する分割結果を生成する。その手順は、まず入力画像３０１の境界近傍の領域３０５について、その境界線に対して線対称の領域３０６を作成する。その後、同様の方法で左右に鏡像を付加する処理を行なう。
【００１９】
ここで列３０７を例に説明する。列３０７に含まれる画素値を、上辺（境界）から順に｛a, b, c, d, e, f, g, …｝とすると、鏡像３０８の画素値は一番上の画素｛a｝を除いた４画素｛b, c, d, e｝ を逆順に並べた｛e, d, c, b｝となる（なお、折り返し画素数が４つとしている。これは、実施形態ではタップ数が「９」の場合を想定していることを意味しているものであるが、この数に限定されるものではない）。
【００２０】
従って、鏡像３０８と列３０７を連結した鏡像付列３０９は、上から下に向かう順で示すと｛e, d, c, b, a, b, c, d, e, f, g, …｝となる。
【００２１】
このようにすることで、後のブロック処理部２０２による２次元離散ウェーブレット変換時に画像端部における高周波成分を抑制し、圧縮時の画質の劣化を抑制させる効果がある。
【００２２】
次に、鏡像付画像３０２を図中の符号３０３および３０４のように、縦横にそれぞれ決められた大きさに区切る。図のように、入力画像の大きさによっては半端になることがあるが、その場合は右端と下端に位置するブロックは通常より大きさの小さいものが出力される。
【００２３】
ブロック分割部２０１は、ブロック内の各画素データ（画素信号値）のほかに、ブロックの大きさ、および、ブロックが入力画像の端（上下左右）に該当するかどうかの情報をブロック処理部２０２に渡す。
【００２４】
ブロック処理部２０２は、以前のブロックの処理によって求められた中間結果保存メモリ２０３に保存されている中間結果データを参照し、他のブロックの処理で使用するための中間結果データを中間結果保存メモリ２０３に保存する。
【００２５】
図４に各ブロックに入力される画像データの範囲と、出力される画像データの範囲を示している。
【００２６】
左上を第１ブロック、その右隣を第２ブロックとし、右端に到達した後は、第１ブロックの直下のブロックという順序で、ブロック処理部２０２が処理を行なう。
【００２７】
このブロック処理部２０２は第１ブロックを処理する場合には、入力範囲４０１（実線枠内）の入力に対して行ない、その結果を第１ブロック出力範囲４０２（格子部）を出力する。
【００２８】
まず、縦に連なる各列に対して図７に示す演算（離散ウェーブレット変換）を行なう。この縦（垂直）方向ウェーブレット変換の結果、Ｌ（低周波）成分とＨ（高周波）成分が得られる。
【００２９】
次に、その結果をＬ成分、Ｈ成分別に並べて、今度はそれぞれの成分別に、横（水平）に連なる各行に対してさらに図７に示す演算を行なう。この横方向ウェーブレット変換によって、Ｌ成分からＬＬ成分とＨＬ成分、Ｈ成分からＬＨ成分、ＨＨ成分を求める。これらのＬＬ成分、ＨＬ成分、ＬＨ成分、並びにＨＨ成分を２次元ウェーブレット変換結果として出力する。
【００３０】
図７から分かるように、２ｎ個の入力に対して２ｎ−８個の出力を求めるため、出力の範囲が入力の範囲よりより小さくなる。先に説明した原画像に付加する鏡像は、この左右の４個の画素データを作成するためにある、と言い換えることもできる。
【００３１】
以下、図７の離散ウェーブレット変換について説明する。垂直もしくは水平方向に連続する２ｎ個の入力画素値を順に{X0, X1, X2, …, X2n-1}とする。
【００３２】
最初に、以下の式に従って{X'1, X'3,…, X'2n-3}を求める。
X'2m+1 = X2m+1 + α(X2m + X2m+2)
次に、以下の式に従って{X''2, X''4,…, X''2n-4}を求める。
X''2m = X2m + β(X'2m-1 + X'2m+1)
次に、以下の式に従って{X(3)3, X(3)5,…, X(3)2n-5}を求める。
X(3)2m+1 = X'2m+1 + γ(X''2m + X''2m+2)
次に、以下の式に従って{X(4)4, X(4)6,…, X(4)2n-6}を求める。
X(4)2m = X''2m + δ(X(3)2m + X(3)2m+2)
最後に、以下の式に従って低周波成分{Y4, Y6,…, Y2n-6}, 高周波成分{Y5, Y7,…, Y2n-5}を求める。
Y2m = 1/k・X(4)2m
Y2m+1 = k・X(3)2m+1
以上のようにして、２ｎ個の入力画素値{X0, X1, X2, …, X2n-1}から、ｎ−４個の低周波成分データ、ｎ−４個の高周波成分データを生成され、それぞれが分離される。
【００３３】
上記フィルタ処理を、垂直方向並びに水平方向に行ない、図示の格子領域４０２のデータを出力する。なお、第１ブロックの処理によってその出力範囲が図示の格子領域４０１であり、斜線領域４０４中の第１ブロック内に含まれるデータ、斜格子領域４０６中の第１ブロック内に含まれるデータ、さらには、縦線領域４０８中の第１ブロック内に含まれるデータは出力しない。理由は、これら出力対象外の領域のデータは、ウェーブレット変換が完結していない領域であるからである。ただし、第１ブロック中に存在する斜線領域４０４、斜め格子領域４０６、及び、縦線領域４０８それぞれの一部部分については、上記フィルタ処理の中間段階までの処理が行われているので、その中間データを保持するものとした。
【００３４】
第２のブロックの処理においては第２ブロック入力範囲４０３（実線枠内）の入力に対して、第２ブロック出力範囲４０４（斜線部）を出力する。出力が入力の範囲を越えての左側に広がっているのは、第１ブロックにおける第１ブロック入力範囲４０１に対する中間結果と第２ブロック入力範囲４０３の入力とによって出力が決定される部分である。
【００３５】
第２ブロックの処理において、中間結果として必要になるのは、第１ブロックの横方向ウェーブレット変換処理における図７の符号７０１で示される値、すなわち{X2n-1, X2n-2, X'2n-3, X''2n-4, X(3)2n-5}である。
【００３６】
本実施形態では、第１ブロックの各行の横方向ウェーブレット変換処理時に、これらの中間結果を中間結果保存メモリ２０３に保存しておき、第２ブロックでのウェーブレット変換する際に、第１のブロックでの中間データを利用するものである。
【００３７】
図８は中間結果８０１を利用したウェーブレット変換処理を示す図である。隣接ブロックの中間結果８０１｛X-1, X-2, X'-3, X''-4, X(3)-5｝と、ｎ個の入力値｛X0, X1, X2, …, Xn-1｝から、n個の出力値｛Y-4, Y-3, Y-2, …, Yn-5｝と、後のブロックで利用する中間結果８０２｛Xn-1, Xn-2, X'n-3, X''n-4, X(3)n-5｝を算出する。
【００３８】
また、別の方法としては、既に値の分かっている部分の演算を先に実行して符号７０２で示す値、すなわち、｛X2n-1+ X2n-2, X2n-2+βX'2n-3, X'2n-3+γX''2n-4, X''2n-4+δX(3)2n-5｝を中間結果とすることも可能である。
【００３９】
このように、この例で使用したフィルタは最大９タップなので、従来の方法では８画素の重ねあわせが必要で、１行または１列ごとに８画素分のデータを保持する必要があったのが、本実施形態によれば４乃至５個の中間結果で済むようになる。
【００４０】
第５のブロックの処理においては、第５ブロック入力範囲４０５（実線枠内）に対して、第５ブロック出力範囲４０６（斜線格子部）を出力する。第５ブロックの処理においては第１ブロックの縦方向ウェーブレット変換処理の中間結果を受け取ることで、出力範囲は入力範囲に対して上に広がっている。
【００４１】
第６のブロックの処理においては、第６ブロック入力範囲４０７（実線枠内）に対して、第６ブロック出力範囲４０８（縦線部）を出力する。第６ブロックの処理においても第５ブロックと同様に、第２ブロックにおける縦方向ウェーブレット変換処理の中間結果を受け取る。さらに、第５ブロックにおける横方向ウェーブレット変換の中間結果を受け取ることで、出力範囲は入力範囲に対して上と左方向に広がっている。
【００４２】
全体としては、全ブロックの画像データ入力を連結したものより、全ブロックの画像データ出力を連結したものの方が小さくなっている。これはブロック分割部２０１によって鏡像が付加された部分が削られて、最初の入力画像データと同じ大きさに戻るためである。
【００４３】
図６はブロック処理部６０１と中間結果保存メモリ６０２との間のデータの流れを示す図である。中間結果保存メモリ６０２には、左右に隣接するブロック間で伝播する横方向ウェーブレット変換中間結果６０３、および、上下に隣接するブロック間で伝播する縦方向ウェーブレット変換中間結果６０４の２種類が保存される。
【００４４】
縦方向ウェーブレット変換中間結果６０４については、注目しているブロックに対して、左上ブロック、上ブロック、左ブロックの中間結果を参照することになる（注目ブロックが左端ブロックでは上ブロックのみとなる）。したがって、図３のようなブロック分割の場合、注目ブロックに対して４ブロック前までの処理を参照すればよく、それより前の中間データは不要となる。換言すれば、４ブロック前までの結果を保持し、古い順に取り出すことができるようにリングバッファの構成にする構成が簡単になる。
【００４５】
以上を簡単にまとめると、ブロック分割部２０１は、入力する画像データの周辺に、フィルタ処理（ウェーブレット変換）する際のタップ数に見合った鏡像画像を付加した上で、その鏡像付き画像を複数のブロックに分割する。そして、その分割したブロックの位置情報（上下左右端の位置にあればそのいずれであるかを示す情報、上下左右端以外の中間位置にあるブロックであればその旨を示す情報）とそのブロック内の画素データをブロック処理部２０２に出力する。なお、位置情報としては４ビットあれば十分であり、上、下、左、右それぞれにビットを割り当てれば良い。したがって、上端であり尚且つ左端である場合には対応する２つのビットを“１”にすれば良いし、端位置を除く中間位置にあるブロックである場合には全ビットを“０”にすれば良い。
【００４６】
ブロック処理部２０２は、入力したブロック内の画素データと上記位置情報に基づき、ウェーブレット変換を行うことになるが、このとき、上記位置情報に基づき、既に処理済みのブロック内のどの中間演算結果を参照するを判定し、その判定した位置の中間演算結果に基づいてウェーブレット変換を行う。また、注目ブロックの位置情報に基づき、注目ブロックのウェーブレット変換した際にどの位置の中間演算結果を中間結果保存メモリ２０３に保存するかを判定し、その判定結果に応じて保存する処理を行う。
【００４７】
そして、ブロック処理部２０２でウェーブレット変換処理によって得られた変換係数は量子化部２０４に出力し、量子化処理が施され、エントロピー符号化部２０５でエントロピー符号化が行われることになる。
【００４８】
上記の処理におけるブロック分割部２０１、量子化部２０４、エントロピー符号化部２０５については説明するまでのないであろうから、以下では実施形態におけるブロック処理部６０１の処理を図５のフローチャートにしたがって説明する。
【００４９】
図５は、実施形態におけるブロック処理部６０１における画像処理を示すものであり、色変換処理、縦方向ウェーブレット変換処理、横方向ウェーブレット変換処理から構成され、中間結果保存メモリ６０２とのデータの受け渡しを加えたものである。
【００５０】
先ず、ステップＳ５０１において、ブロック分割部２０１より、ブロック画像データ及び位置情報を入力する。たとえば、最初のブロックの処理では図４に示す第１ブロック入力範囲４０１の部分、次のブロックの処理では第２ブロック入力範囲４０３の部分が入力されるが、これらいずれであるかは位置情報で判断できる。
【００５１】
次いで、ステップＳ５０２では、次式に従ってＲＧＢ色空間からＹＣｂＣｒ色空間への変換を行う。これは人間の視覚特性に合った色空間を使用することによって、後の量子化部、および、エントロピー符号化部における圧縮工程において、画質の劣化が目立たないようにするためである。因に、ＲＧＢ→ＹＣｂＣｒ変換は、次式によって得られる。
【００５２】
【数１】
2005094212.tif 000003
【００５３】
ステップＳ５０３では、中間結果保存メモリ６０２に保存されている縦方向ウェーブレット変換中間結果６０４を取得し、ステップＳ５０２の色変換結果と合わせて次のステップＳ５０４の処理を行なう。
ただし、入力画像の上端に位置するブロックでは、各列について図７に示すように入力値(４０２の色変換結果)の最初の８個｛X0, X1, X2, …, X7｝を利用して、符号７０３で示す部分｛X7, X6, X'5, X''4, X(3)3｝を算出し、これを中間結果とする。
【００５４】
ステップＳ５０４では各色成分ごと、各列ごとに、図８に示すように中間結果とステップＳ５０２の色変換結果とから、低周波成分と高周波成分に分けられた縦方向ウェーブレット変換結果、および、後のブロックで使用する縦方向ウェーブレット変換中間結果を算出する。
【００５５】
ステップＳ５０５では、後のブロックで使用する縦方向ウェーブレット変換中間結果を中間結果保存メモリ６０２に保存する。ただし、入力画像の下端に位置するブロックでは参照されることはないので保存する必要はない。
【００５６】
次いで、ステップＳ５０６では、中間結果保存メモリ６０２に保存されている横方向ウェーブレット変換中間結果６０３を取得し、ステップＳ５０４の縦方向ウェーブレット変換結果と合わせて次のステップＳ５０７の処理を行なう。
【００５７】
ただし、入力画像の左端に位置するブロックでは、ステップＳ５０３と同様に、各行について図７に示すように入力値(５０４の縦方向ウェーブレット変換結果)の最初の８個{X0, X1, X2, …, X7}を利用して、符号７０３で示す部分{X7, X6, X'5, X''4, X(3)3}を算出し、これを中間結果とする。
【００５８】
ステップＳ５０７ではステップＳ５０４によって低周波成分と高周波成分に分けられたそれぞれについて、各色成分ごと、各行ごとに、図８に示すように中間結果と入力値とから２次元ウェーブレット変換結果、および、後のブロックで使用する横方向ウェーブレット変換中間結果を算出する。
【００５９】
ステップＳ５０８では、後のブロックで使用する横方向ウェーブレット変換中間結果を中間結果保存メモリ６０２に保存する。ただし、入力画像の右端に位置するブロックでは参照されることはないので保存する必要はない。
【００６０】
ステップＳ５０９では、ステップＳ５０１での入力に対する画像処理の結果として、ＬＬ成分、ＨＬ成分、ＬＨ成分、ＨＨ成分で構成される２次元ウェーブレット変換結果を量子化部２０４に出力する。
【００６１】
以上のように各ブロックの処理を行なうことで、ブロックの重ね合わせによる冗長な演算をすることなく、また、重なり部分と比較して少ない中間結果の保存だけで、画像全体に一括してウェーブレット変換した場合と同じ結果を得ることが可能になる。よって、ブロック単位で処理をしながら、全体を１つのタイルとして扱うことが可能であり、タイル分割による画質の劣化を避けるＪＰＥＧ２０００符号化装置が実現できる。
【００６２】
＜変形例の説明＞
図９は、図１の例の変形例のブロック構成図であり、図２におけるブロック処理部２０２に相当する部分を複数個設けた例に対応する。
【００６３】
大ブロック処理手段９０２はこれまでに説明したような、同一の、既に処理を終えたブロックの中間結果と新たなブロックの入力値を利用して出力値を決定する処理を行なう複数の小ブロック処理手段（９０５ａ、９０５ｂ、…）と、中間結果伝達手段９０３により構成されている。
【００６４】
小ブロック処理手段９０５ａ、９０５ｂ…は、矩形ブロック画像の処理を行なうが、その矩形ブロックの大きさはある有限の幅、または、高さ、または、面積の制限がある。小ブロック処理手段９０５ａ，９０５ｂは、既出のブロックを処理した結果を隣接するブロックの処理で利用可能なように中間結果伝達手段９０３を介して接続されている。
【００６５】
中間結果伝達手段９０３はある小ブロック処理手段によって生成された中間結果を、別の小ブロック処理手段で使用するために一時的に保存しておくものである。
【００６６】
大ブロック処理手段９０２は複数の小ブロック処理手段９０５ａ、９０５ｂ…と、中間結果伝達手段９０３により、１個の小ブロック処理手段が扱うことのできるブロックより大きなブロックを処理することが可能になっている。
【００６７】
ブロック分割手段９０１は、入力画像データを小ブロック処理手段９０５ａ、９０５ｂが扱える大きさに分割し、順番に供給するためのものである。
【００６８】
ラスタ変換手段９０４は大ブロック処理手段９０２の出力を、入力画像において対応する画素と同じ順にするためのものである。後の処理がブロック状に区切られた画像データで支障ないなら、ラスタ変換手段９０４を省略することもできる。
【００６９】
図１０は具体的な装置のブロック構成図である。先に示した図２の既存画像処理装置例に対して、入力画像データの解像度（画素数）が主走査方向・副走査方向共に２倍になっているものとする。ここでは、図２の処理装置のうち、ブロック処理部２０２の処理性能を改善するものである。
【００７０】
図１０の装置で図２と大きく異なる点は次の２点である。
【００７１】
第１点目：ブロック処理部１００３は後に図１１で説明するとおり、４個の小ブロック処理部を持っていて、それらが中間結果伝達手段を介して接続されていることである。
【００７２】
よって、ブロック処理部１００３は、図２におけるブロック処理部２０２と中間結果保存メモリ２０３の両方を兼ねている。
【００７３】
第２点目：ブロック分割部２０１に相当する大ブロック分割部１００１と、ブロック処理部１００３との間に小ブロック分割部１００２を設けてあることである。これは、大ブロック分割部で分割された大ブロックをさらに細分化して、ブロック処理部１００３内の小ブロック処理部で扱うことが可能な小ブロックにするためのものである。
【００７４】
大ブロック分割部１００１は、図２におけるブロック分割部２０１と同様の働きをする。ただし、解像度が２倍になったため、分割された結果である大ブロックの画素数は図２の例におけるブロックと比較して水平、垂直方向とも２倍（面積＝画素数で４倍）になっている。
【００７５】
大ブロック分割部１００１は図３に示すように、入力画像３０１（太実線）の各辺を折り返して鏡像を付加し、鏡像付画像３０２（破線）に対する分割結果を出力する。その手順は、まず入力画像３０１の格子部分３０５について鏡像である斜線部３０６を作成する。その後、同様の方法で左右に鏡像を付加する処理を行なう。尚、鏡像の生成処理は、先に説明した処理と同様なので、ここでの説明は省略する。
【００７６】
次に、鏡像付画像３０２を図中の符号３０３および３０４のように、縦横にそれぞれ決められた大きさに区切る。図のように、入力画像の大きさによっては半端になることがあるが、その場合は右端と下端に位置する大ブロックは通常より大きさの小さいものが出力される。
【００７７】
大ブロック分割部１００１は、大ブロック内の各画素信号値のほかに、大ブロックの大きさ、および、大ブロックが入力画像の端（上下左右）に該当するかどうかの位置情報を小ブロック分割部１００２に渡す。
【００７８】
小ブロック分割部１００２は、大ブロック分割部１００１によって分割された大ブロックをさらに４個の小ブロックに分割して、それぞれの小ブロックが図２におけるブロック処理部２０３で扱える大きさなるようにして、小ブロック内の各画素信号値、および、小ブロックの大きさ、および、大ブロック内の小ブロックの位置（左上、右上、左下、右下のいずれか）をブロック処理部１００３に渡す。
【００７９】
ブロック処理部１００３における処理の順番は左上、右上、左下、右下の順に行なうので、小ブロック分割部１００２は同じ順で分割された小ブロックを出力する。
【００８０】
小ブロック分割部１００２はまた、入力画像の端部を含む小ブロックについて端部情報をブロック処理部１００３に渡す。端部情報は、上端、下端、右端、左端のそれぞれについて、入力画像の端部に該当するか、しないかを判定するもので、大ブロック分割部１００１からの端部情報と、当該小ブロックの大ブロック内の位置によって求めることができる。
【００８１】
ブロック処理部１００３は図２におけるブロック処理部２０３と同様の２次元離散ウェーブレット変換を行なうためのものである。詳細は後の図１１で詳しく説明する。
【００８２】
量子化部１００４、および、エントロピー符号化部１００５は、それぞれ図２における量子化部２０４、および、エントロピー符号化部２０５と同様に、量子化、そしてエントロピー符号化をJPEG2000で規定された方法に従って行なうためのものである。
【００８３】
図１１は、図１０におけるブロック処理部１００３の詳細を示す図である。
【００８４】
入力振り分け部１１０１は、小ブロック分割部からの１個の小ブロックのデータを、４つの小ブロック処理部１１０３、１１０４、１１０５、１１０６のうちひとつに割り当てるものである。
【００８５】
具体的には、大ブロック内で左上の小ブロックを第１小ブロック処理部１１０３、右上を第２小ブロック処理部１１０４、左下を第３小ブロック処理部１１０５、右下を第４小ブロック処理部１１０６が担当し、上記の順番で処理を行なう。
【００８６】
各小ブロック処理部１１０３、１１０４、１１０５、１１０６の処理内容は以前説明した図５のとおりで、図２におけるブロック処理部２０２と同一であるため、新規に設計せずに既存のものを再利用することが可能である。
【００８７】
各小ブロック処理部１１０３、１１０４、１１０５、１１０６はまた、図のように中間結果伝達部１１０７、１１０８、…、１１１４を介して接続されていて、中間結果を他の小ブロック処理部に伝達することが可能になっている。
【００８８】
第１中間結果伝達部１１０７、第３中間結果伝達部１１０９、第５中間結果伝達部１１１１、第７中間結果伝達部１１１３は、それぞれ小ブロック１個分に相当する横方向ウェーブレット変換中間結果を伝達する。
【００８９】
第２中間結果伝達部１１０８と、第４中間結果伝達部１１１０は、それぞれ小ブロック１個分に相当する縦方向ウェーブレット変換中間結果を伝達する。
【００９０】
第６中間結果伝達部１１１２と第８中間結果伝達部１１１４については、図６で説明したように入力画像の幅を満たす大ブロックの数と同数（図３の例では４個）の縦方向ウェーブレット変換中間結果を保持することで、上下に隣接するブロック間で中間結果を伝達することが可能になる。
【００９１】
第１小ブロック処理部１１０３は、第３中間結果伝達部１１０９（処理対象小ブロックが左端の場合は除く）、及び、第６中間結果伝達部１１１２（処理対象小ブロックが上端の場合は除く）から中間結果を受け取り、処理対象小ブロック内の画素値と受け取った中間結果によって出力値を決定するとともに、縦方向中間結果を第１中間結果伝達部１１０７、横方向中間結果を第２中間結果伝達部１１０８に保存する。
【００９２】
また、第１小ブロック処理部１１０３は、第６中間結果伝達部１１１２から中間結果を受け取り、処理対象小ブロック内の画素値と受け取った中間結果によって出力値を決定するとともに、縦方向中間結果を第１中間結果伝達部１１０７、横方向中間結果を第２中間結果伝達部１１０８に保存する。
【００９３】
第２小ブロック処理部１１０４は、第１中間結果伝達部１１０７、および、第８中間結果伝達部１１１４（処理対象小ブロックが上端の場合は除く）から中間結果を受け取り、処理対象小ブロック内の画素値と受け取った中間結果によって出力値を決定するとともに、縦方向中間結果を第３中間結果伝達部１１０９、横方向中間結果を第４中間結果伝達部１１１０に保存する。
【００９４】
第３小ブロック処理部1105は、第７中間結果伝達部１１１３（処理対象小ブロックが左端の場合は除く）、および、第２中間結果伝達部１１１０８から中間結果を受け取り、処理対象小ブロック内の画素値と受け取った中間結果によって出力値を決定するとともに、縦方向中間結果を第５中間結果伝達部１１１１、横方向中間結果を第６中間結果伝達部１１１２に保存する。
【００９５】
第４小ブロック処理部１１０６は、第５中間結果伝達部１１１１、および、第４中間結果伝達部１１１０から中間結果を受け取り、処理対象小ブロック内の画素値と受け取った中間結果によって出力値を決定するとともに、横方向中間結果を第７中間結果伝達部１１１３、縦方向中間結果を第８中間結果伝達部１１１４に保存する。
【００９６】
図から分かるように、第２小ブロック処理部１１０４と第３小ブロック処理部１１０５は互いの結果に影響を及ぼさないので処理を並列に行なうことが可能である。また、第４小ブロック処理部１１０５と、次の大ブロックを処理する段階での第１小ブロック処理部１１０３も同様に並列に動作させることが可能である。
【００９７】
以上のように並列動作させることで処理時間の短縮を図ることができる。
【００９８】
出力整理部１１０２は、上記のように並列に動作している各小ブロック処理部１１０３、１１０４、１１０５、１１０６の出力を円滑に量子化部に伝達するために設けたものである。
【００９９】
以上述べたように、本変形例によれば、第１の実施形態におけるブロック処理部２０２に相当する部分を、複数の小ブロック処理部（上記では２×２の４つ）及びそれらの間に介在する伝達部で構成することで、ブロック処理部全体の処理速度を更に高速なものとできるようになる。
【０１００】
＜第２の実施形態＞
以下、第２の実施形態として、バイリニア法による解像度変換処理について説明する。
【０１０１】
Ａ５サイズからＡ４サイズへの拡大を考えた場合、約１:１．４１の解像度変換になる。このような場合半端な位置の画素値を割り出す方法として、たとえば、バイリニア法やバイキュービック法がある。以下バイリニア法の例で説明する。
【０１０２】
Ａ５サイズ→Ａ４サイズへの変換は１．４１倍する、換言すれば解像度が同一であれば、水平画素数、垂直画素数とも１．４１倍にすることと等価である。このとき、原画像の各画素データを座標位置でＸ（ｉ，ｊ）、拡大後の画素データ（算出すべき画素データ）をＰとしたとき、図１２に示すように、点Ｐはその位置を取り囲む４つの元画素Ｄ（＝Ｘ（ｉ，ｊ））、Ｃ（＝Ｘ（ｉ＋１，ｊ））、Ａ（＝Ｘ（ｉ，ｊ＋１））、Ｂ（＝Ｘ（ｉ＋１，ｊ＋１））の矩形内に存在することになる。
【０１０３】
そこで、バイリニア法では、この４点（４つの元画素）Ａ，Ｂ，Ｃ，Ｄとの距離に応じた重みによって以下の式のように算出する（水平若しくは垂直方向に隣接する２画素間の距離を“１”とする）。
P = (1-dx)×(1-dy)×A + dx×(1-dy)×B + dx×dy×C + (1-dx)×dy×D
ブロックに分割された画像に対してこのような方法を適用しようとした場合、ブロック境界付近において、隣接するブロックに属する画素値を参照する必要がある。
【０１０４】
図１３のように解像度変換の対象となる画像全体１３０１を４×４の１６のブロックに分割する。左上から順に第１ブロック１００２、第２ブロック１００３、…のように順番に処理を行なうものとする。
【０１０５】
第１ブロック１３０２中の各点は原画像におけるサンプリング位置を示す。
【０１０６】
解像度変換後のイメージ１３０４は、第１ブロック１３０２および第２ブロック１３０３について解像度変換を行なったときのサンプリング位置を示す図である。図中“×”印が変換後の画像のサンプリング位置である。図中、符号１３０５で示される範囲では、参照すべき原画像の点が第１ブロック内だけでなく、第２ブロックにも及んでいる。
【０１０７】
このようなサンプリング位置に該当する点については、第１ブロックの処理において、とりあえず、第１ブロック内に属する原画像の点（たとえば、図１２における点Ａ,Ｄ）だけを利用して部分結果を算出する。
【０１０８】
そして、その位置と、ブロック内の原画素値による部分結果とを中間結果として隣接するブロックの処理で使用するために保存しておく。
【０１０９】
後のブロックの処理でもまた、そのブロック内の現画素値による部分結果を算出し、保存してある結果と合計することで、ブロック境界付近においてもバイリニア法による補間が実現できる。
【０１１０】
以上のような処理を行なう画像処理手段を複数個利用する場合、以下のようにブロック内の処理の順序を工夫することで、並列動作が可能になる。
【０１１１】
それは、まず隣接ブロックに影響を与える可能性のある周辺部分（たとえば、第1ブロックにおける符号１３０５）の中間結果を算出し、次にブロック内の画素値だけから結果を求めることができる部分の処理を行い、最後に隣接ブロックからの中間結果を参照する必要がある部分（たとえば、第２ブロックにおける符号１３０５）の処理を行なうようにすることである。
【０１１２】
＜第３の実施形態＞
次に、第３の実施形態として、原画像と、ある繰り返しパターンとの合成処理について説明する。
【０１１３】
図１４は合成処理を説明する図である。
【０１１４】
この処理は、繰り返しパターン１４０１の「○」印の部分では原画像をそのまま出力とし、「×」印の部分では原画像の画素値を所定の値に置き換える処理を行なう。そして、図のように、繰り返しパターン１４０１を隙間なく繰り返し、処理対象画像１４０２の全体に特定の模様による網がかかったような効果を得ることを目的とする。
【０１１５】
このとき、図のようにブロックの境界（実線）がパターンの境界（破線）と一致しない場合にはパターンが不連続にならないようにする工夫が必要である。たとえば、各ブロックの処理において、原点からの距離をパターンの幅、および高さで割ったあまりを求める方法がある。
【０１１６】
しかしながら、割り算は他の演算より回路が複雑になり、また、時間がかかるという欠点があるので好ましくない。本実施形態では、各ブロックの処理において行数と列数のカウンタを使用し、カウント値が繰り返しパターン１４０１の大きさに達したらリセットする方法で、繰り返しパターン１４０１上のどの位置を参照するべきかを管理するものとする。
【０１１７】
このとき、左上のブロックから順に処理をするとして、中間結果として、右に隣接するブロックに対しては使用した列数を、下に隣接するブロックに対しては使用した行数を伝える。そして、受け取った中間結果の値をカウンタの初期値として使用することで、画像全体に対して連続した処理をすることが可能になる。
【０１１８】
以上各実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、様々な適用が可能である。
【０１１９】
例えば、パーソナルコンピュータ等の汎用情報装置においても、図５に示す手順で処理を行えば、画像データのウェーブレット変換を高速に行えることになるようになる。したがって、本発明はかかるコンピュータプログラムをもその範疇とするのは明らかである。また、通常、コンピュータプログラムはフロッピー（Ｒ）ディスクやＣＤＲＯＭ等を可搬性のコンピュータ可読記憶媒体に格納されており、その媒体をコンピュータにセットしてコピー或いはインストールすることで実行可能となるわけであるから、コンピュータ可読記憶媒体も本発明の範疇に含まれることも明らかである。
【図面の簡単な説明】
【０１２０】
【図１】実施形態の基本構成図である。
【図２】図１を具現化した第１の実施形態における装置のブロック構成図である。
【図３】鏡像処理およびブロック分割を示す図である。
【図４】各ブロック処理における入力と出力の領域の関係を示す図である。
【図５】ブロック処理部の処理内容を示すフローチャートである。
【図６】ブロック処理部と中間結果保存メモリとの間のデータの移動を説明するための図である。
【図７】ウェーブレット変換の演算を説明するための図である。
【図８】中間結果を利用したウェーブレット変換処理を説明するための図である。
【図９】変形例のブロック構成図である。
【図１０】図９を具現化した装置のブロック構成図である。
【図１１】図９におけるブロック処理部の詳細を示す図である。
【図１２】バイリニア法を説明するための図である。
【図１３】第２の実施形態における補間処理を説明するための図である。
【図１４】第３の実施形態における画像処理を説明するための図である。
【図１】
2005094212.tif 000004
【図２】
2005094212.tif 000005
【図３】
2005094212.tif 000006
【図４】
2005094212.tif 000007
【図５】
2005094212.tif 000008
【図６】
2005094212.tif 000009
【図７】
2005094212.tif 000010
【図８】
2005094212.tif 000011
【図９】
2005094212.tif 000012
【図１０】
2005094212.tif 000013
【図１１】
2005094212.tif 000014
【図１２】
2005094212.tif 000015
【図１３】
2005094212.tif 000016
【図１４】
2005094212.tif 000017