(57)【特許請求の範囲】
【請求項１】
もとの画像情報の画素を第１の係数に基づいて間引くことによって符号化された間引き後の画像情報に対して画素を補間する処理を施して復号化した後、出力する復号化装置において、
前記符号化された間引き後の画像情報に対する画素の補間を第２の係数に基づいて行う演算手段と、
前記第２の係数を算出する算出手段と、
前記演算手段により得られたデータを出力する出力手段と
を備え、
前記算出手段は、学習用の前記もとの画像情報が準備されているとき、画素を間引くことによって符号化された符号化後の画像情報と、符号化前の学習用の前記もとの画像情報とを参照して、符号化後の画像情報から所定の係数に基づいて復号された画像情報と、符号化前の学習用の前記もとの画像情報との差を最小にするその所定の係数を前記第２の係数の最適値として算出し、
符号化された画像情報には、前記画像情報に含まれている所定の画素と前記所定の画素の周辺に位置するその他の画素の画素値の差分値に所定の閾値を適用することにより得られる情報であって、前記所定の画素と前記他の画素の画素値の大小関係を表す非線形情報が含まれ、
前記演算手段は、前記符号化された画像情報のうち間引き後の画素位置に対応する第１の画像情報及び前記第１の画像情報の前記所定の画素の画素値と前記非線形情報に基づいて算出され、前記その他の画素に対応する情報である第２の画像情報と、前記第２の係数とを積和演算することにより補間を行う
ことを特徴とする復号化装置。
【請求項２】
前記算出手段は、前記符号化後の画像情報と、符号化前の学習用の前記もとの画像情報とから、最小２乗法を用いて、前記第２の係数の最適値を算出する
ことを特徴とする請求項１に記載の復号化装置。
【請求項３】
もとの画像情報の画素を第１の係数に基づいて間引くことによって符号化された間引き後の画像情報に対して画素を補間する処理を施して復号化した後、出力する復号化方法において、
前記符号化された間引き後の画像情報に対する画素の補間を第２の係数に基づいて行う演算ステップと、
前記第２の係数を算出する算出ステップと、
前記演算ステップにより得られたデータを出力する出力ステップと
を含み、
前記算出ステップの処理においては、学習用の前記もとの画像情報が準備されているとき、画素を間引くことによって符号化された符号化後の画像情報と、符号化前の学習用の前記もとの画像情報とを参照して、符号化後の画像情報から所定の係数に基づいて復号された画像情報と、符号化前の学習用の前記もとの画像情報との差を最小にするその所定の係数を前記第２の係数の最適値として算出し、
符号化された画像情報には、前記画像情報に含まれている所定の画素と、前記所定の画素の周辺に位置するその他の画素の画素値の差分値に所定の閾値を適用することにより得られる情報であって、前記所定の画素と前記他の画素の画素値の大小関係を表す非線形情報が含まれ、
前記演算ステップの処理においては、前記符号化された画像情報のうち間引き後の画素位置に対応する第１の画像情報及び前記第１の画像情報の前記所定の画素の画素値と前記非線形情報に基づいて算出され、前記その他の画素に対応する情報である第２の画像情報と、前記第２の係数とを積和演算することにより補間を行う
ことを特徴とする復号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、復号化装置および復号化方法に関し、特に、情報を伸長する復号化装置および復号化方法に関する。
【背景技術】
【０００２】
従来、例えば、画像データから所定の割合で画素を間引くことにより情報量を圧縮する場合、サブサンプリングフィルタにより前処理が実行された後に、所定の画素が間引かれていた。
【０００３】
このような処理において、前述のサブサンプリングフィルタとしては、ナイキストの条件（サンプリング定理）を満たす、固定係数のフィルタが用いられていた。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、このような固定係数のフィルタは、処理しようとする画像の種類に拘わらず特性が不変であるので、画像の種類によっては特性が必ずしも最適ではない場合があるという課題があった。
【０００５】
また、圧縮された画像を復号化する場合において使用される予測フィルタも、固定係数フィルタが使用されていた。従って、予測フィルタにおいても、前述の場合と同様の課題があった。
【０００６】
本発明は、以上のような状況に鑑みてなされたものであり、例えば、画像データから所定の画素を間引くことにより圧縮処理し、予測フィルタによりもとの画像を伸長処理する場合において、最適なサブサンプリングフィルタおよび予測フィルタを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の復号化装置は、もとの画像情報の画素を第１の係数に基づいて間引くことによって符号化された間引き後の画像情報に対して画素を補間する処理を施して復号化した後、出力する復号化装置において、前記符号化された間引き後の画像情報に対する画素の補間を第２の係数に基づいて行う演算手段と、前記第２の係数を算出する算出手段と、前記演算手段により得られたデータを出力する出力手段とを備え、前記算出手段は、学習用の前記もとの画像情報が準備されているとき、画素を間引くことによって符号化された符号化後の画像情報と、符号化前の学習用の前記もとの画像情報とを参照して、符号化後の画像情報から所定の係数に基づいて復号された画像情報と、符号化前の学習用の前記もとの画像情報との差を最小にするその所定の係数を前記第２の係数の最適値として算出し、符号化された画像情報には、前記画像情報に含まれている所定の画素と前記所定の画素の周辺に位置するその他の画素の画素値の差分値に所定の閾値を適用することにより得られる情報であって、前記所定の画素と前記他の画素の画素値の大小関係を表す非線形情報が含まれ、前記演算手段は、前記符号化された画像情報のうち間引き後の画素位置に対応する第１の画像情報及び前記第１の画像情報の前記所定の画素の画素値と前記非線形情報に基づいて算出され、前記その他の画素に対応する情報である第２の画像情報と、前記第２の係数とを積和演算することにより補間を行うことを特徴とする。
【０００８】
前記算出手段は、前記符号化後の画像情報と、符号化前の学習用の前記もとの画像情報とから、最小２乗法を用いて、前記第２の係数の最適値を算出することができる。
【０００９】
本発明の復号化方法は、もとの画像情報の画素を第１の係数に基づいて間引くことによって符号化された間引き後の画像情報に対して画素を補間する処理を施して復号化した後、出力する復号化方法において、前記符号化された間引き後の画像情報に対する画素の補間を第２の係数に基づいて行う演算ステップと、前記第２の係数を算出する算出ステップと、前記演算ステップにより得られたデータを出力する出力ステップとを備え、前記算出ステップは、学習用の前記もとの画像情報が準備されているとき、画素を間引くことによって符号化された符号化後の画像情報と、符号化前の学習用の前記もとの画像情報とを参照して、符号化後の画像情報から所定の係数に基づいて復号された画像情報と、符号化前の学習用の前記もとの画像情報との差を最小にするその所定の係数を前記第２の係数の最適値として算出し、符号化された画像情報には、前記画像情報に含まれている所定の画素と、前記所定の画素の周辺に位置するその他の画素の画素値の差分値に所定の閾値を適用することにより得られる情報であって、前記所定の画素と前記他の画素の画素値の大小関係を表す非線形情報が含まれ、前記演算ステップの処理においては、前記符号化された画像情報のうち間引き後の画素位置に対応する第１の画像情報及び前記第１の画像情報の前記所定の画素の画素値と前記非線形情報に基づいて算出され、前記その他の画素に対応する情報である第２の画像情報と、前記第２の係数とを積和演算することにより補間を行うことを特徴とする。
【００１０】
本発明の復号化装置および復号化方法においては、符号化された間引き後の画像情報に対する画素の補間が第２の係数に基づいて行われ、前記第２の係数が算出され、演算により得られたデータが出力される。また、学習用のもとの画像情報が準備されているとき、画素を間引くことによって符号化された符号化後の画像情報と、符号化前の学習用の前記もとの画像情報とを参照して、符号化後の画像情報から所定の係数に基づいて復号された画像情報と、符号化前の学習用の前記もとの画像情報との差を最小にするその所定の係数が前記第２の係数の最適値として算出される。符号化された画像情報には、前記画像情報に含まれている所定の画素と前記所定の画素の周辺に位置するその他の画素の画素値の差分値に所定の閾値を適用することにより得られる情報であって、前記所定の画素と前記他の画素の画素値の大小関係を表す非線形情報が含まれ、前記符号化された画像情報のうち間引き後の画素位置に対応する第１の画像情報及び前記第１の画像情報の前記所定の画素の画素値と前記非線形情報に基づいて算出され、前記その他の画素に対応する情報である第２の画像情報と、前記第２の係数とを積和演算することにより補間が行われる。
【発明の効果】
【００１１】
本発明によれば、画像に応じて最適な係数を設定することが可能となる。
【発明を実施するための最良の形態】
【００１２】
図１は、本発明の一実施の形態の構成例を示すブロック図である。この図において、エンコーダ１は、原画をプリフィルタ処理をした後、画素を間引きし、データ量を１／９に圧縮するようになされている。プリフィルタ係数格納回路２は、プリフィルタ係数生成回路３から出力されるプリフィルタ係数を格納するようになされている。プリフィルタ係数生成回路３は、原画と予測フィルタ係数格納回路５からの出力を参照して、プリフィルタ係数を生成し、プリフィルタ係数格納回路２に供給する。
【００１３】
デコーダ４は、エンコーダ１により圧縮された画像に対して、予測フィルタ処理を行うことにより、もとの画像に復号化（伸長）する処理を行うようになされている。予測フィルタ係数格納回路５は、予測フィルタ係数生成回路６より供給される予測フィルタ係数を格納するようになされている。予測フィルタ係数生成回路６は、原画と圧縮画像とを参照して予測フィルタ係数を生成し、予測フィルタ係数格納回路５に供給するようになされている。
【００１４】
図２は、エンコーダ１の詳細な構成例を示している。この図において、ブロック化回路１ａは、シリアルデータとして入力される画像データをブロック化する処理を行うようになされている。プリフィルタ回路１ｂは、ブロック化された画像データを３２種類のクラスに分類するとともに、プリフィルタ係数格納回路２から供給されるプリフィルタ係数と画像データとの間で積和演算を行い、得られたデータをコード化回路１ｄに出力する。
【００１５】
付加コード生成回路１ｃは、ブロック化された画像データの中心画素と、その周囲の４画素の間で所定の演算を行い、得られた付加コードをコード化回路１ｄに対して出力する。
【００１６】
コード化回路１ｄは、プリフィルタ回路１ｂから出力されるデータを上位４ビットとし、また、付加コード生成回路１ｃから出力されるデータを下位４ビットとして連接し、１個のデータ（８ビットデータ）として出力するようになされている。
【００１７】
次に、本実施の形態の動作について説明する。なお、本発明は、プリフィルタおよび予測フィルタ係数の決定方法を特徴としているが、その前段階として、本実施の形態による画像データの圧縮および伸長処理について説明する。
【００１８】
いま、図３に示すような画像データがブロック化回路１ａに対して入力されたとする。即ち、ライン＃１乃至＃６に示すような順序で、１ラインずつ画像データが入力されたとすると、ブロック化回路１ａは、このような入力データを内蔵されているメモリに記憶させ、所定量のデータが記憶されたところで、図中破線で示すようなブロック＠１乃至＠６を形成し、各ブロック（図４参照）をプリフィルタ回路１ｂに対して順に出力する。
【００１９】
なお、図２では説明を簡単にするために、画素の数を減らしてあるが、実際の画像は、例えば、縦横それぞれ数百乃至数千ドット程度の画素により構成されている。
【００２０】
プリフィルタ回路１ｂは、図５に示すような構成とされている。この図において、クラス分類回路１ｂ−１は、入力された９画素のデータのうち図６に示す５画素に注目し、その５画素のパターンに応じて入力データを３２種類のクラスに分類し、そのクラスを示す値を出力する。
【００２１】
即ち、図３に示す破線で囲まれた領域内の９画素を、図４に示すように、左上から順にｘ０乃至ｘ８とする。このようなブロックが入力されると、クラス分類回路１ｂ−１は、画素ｘ４を中心として、その上下左右の画素（ｘ１，ｘ３，ｘ５，ｘ７）（図６参照）に注目して、その５つの画素をそのパターンに応じて３２個のクラスに分類する。
【００２２】
図７は、クラス分類処理の一例を説明するフローチャートである。この処理が実行されると、ステップＳ１では、一次元配列ｘ［］の第０番目乃至第４番目に、画素ｘ１，ｘ３，ｘ４，ｘ５，ｘ７の画素値が、それぞれ格納される。
【００２３】
ステップＳ２では、ｘ１，ｘ３，ｘ４，ｘ５，ｘ７（以下、代表画素という）の中で最大の値が変数ｍａｘに代入される。続くステップＳ３では、代表画素の中で最小の値が変数ｍｉｎに代入される。そして、ステップＳ４では、（ｍａｘ−ｍｉｎ＋１）の値が、変数ｄｒに代入される。
【００２４】
ステップＳ５では、変数ｄｒの値が１であるか否かが判定される。その結果、変数ｄｒの値が１である（ＹＥＳ）と判定された場合には、ステップＳ６に進み、変数ｉに０が代入された後、処理を終了する（エンド）。また、変数ｄｒの値が１ではない（ＮＯ）と判定された場合には、ステップＳ７に進む。
【００２５】
ステップＳ７では、変数ｊが０に初期設定され、ステップＳ８に進む。ステップＳ８では、以下に示す式で得られた値が変数ｗに代入される。なお、ｗは実数であり、浮動小数点により計算される。
【００２６】
２（ｘ［ｊ］−ｍｉｎ＋０．５）／ｄｒ  ・・・  （１）
【００２７】
次のステップＳ９では、ステップＳ８で計算された変数ｗの値が０よりも小さいか否かが判定される。その結果、変数ｗの値が０よりも小さい（ｗ＜０：ＹＥＳ）と判定された場合は、ステップＳ１０に進み、配列ｚ［ｊ］に０が代入され、ステップＳ１４に進む。また、変数ｗの値が０以上である（ｗ≧０：ＮＯ）と判定された場合には、ステップＳ１１に進む。ステップＳ１１では、変数ｗの値が、１よりも大きいか否かが判定され、その結果、変数ｗの値が１よりも大きい（ｗ＞１：ＹＥＳ）と判定された場合には、ステップＳ１２に進み、配列ｚ［ｊ］に値１が代入される。また、ステップＳ１１において、変数ｗの値が１以下である（ｗ≦１：ＮＯ）と判定された場合には、ステップＳ１３に進み、変数ｗの値の小数点以下を切り捨てた整数値が代入される。
【００２８】
そして、ステップＳ１４では、変数ｊの値が１だけインクリメントされ、ステップＳ１５に進む。ステップＳ１５では、変数ｊの値が５よりも小さいか否かが判定される。その結果、変数ｊの値が５より小さい（ｊ＜５：ＹＥＳ）と判定された場合は、ステップＳ７に戻り、前述と同様の処理が繰り返され、また、変数ｊの値が５以上である（ｊ≧５：ＮＯ）と判定された場合には、ステップＳ１６に進む。
【００２９】
ステップＳ１６では、以下に示す式により得られた値が変数ｉに代入され、処理を終了する（エンド）。
【００３０】
ｚ［０］×１＋ｚ［１］×２＋ｚ［２］×４＋ｚ［３］×８＋ｚ［４］×１６
・・・  （２）
【００３１】
即ち、配列ｚ［］の第０番目乃至第４番目の要素は、第０ビット（ＬＳＢ）乃至第４ビット（ＭＳＢ）として、クラスコードを格納する変数ｉに代入される。そして、処理を終了する（エンド）。
【００３２】
以上のようにして生成されたクラスコードｉは、フィルタ回路１ｂ−２に供給される。
【００３３】
フィルタ回路１ｂ−２は、プリフィルタ係数格納回路２から、クラスコードｉに対応するプリフィルタ係数を読み出す。そして、フィルタ回路１ｂ−２は、得られたプリフィルタ係数を用いて、ブロック化回路１ａより出力される画素データに対して、フィルタ処理を施す。即ち、フィルタ回路１ｂ−２は、図８に示すように、９個の画素ｘ０乃至ｘ８の画素値に対して、プリフィルタ係数格納回路２から供給されたプリフィルタ係数ａｉ０乃至ａｉ８を乗算し、プリフィルタ後の画素値ｙ４を得る。なお、以上の演算は、以下のように表すことができる。ここで、ｉはクラスコードである。なお、プリフィルタ係数生成回路３におけるプリフィルタ係数の生成方法については後述する。
【００３４】
ｙ４＝ａｉ０×ｘ０＋ａｉ１×ｘ１＋ａｉ２×ｘ２＋
ａｉ３×ｘ３＋ａｉ４×ｘ４＋ａｉ５×ｘ５＋
ａｉ６×ｘ６＋ａｉ７×ｘ７＋ａｉ８×ｘ８    ・・・  （３）
【００３５】
このようにして得られた画素値ｙ４は、コード化回路１ｄに供給される。
【００３６】
ブロック化回路１ａから出力されたデータは、付加コード生成回路１ｃに対しても供給される。図９は、付加コード生成回路１ｃにおいて実行される処理の一例を説明するフローチャートである。
【００３７】
この処理が実行されると、ステップＳ２０において、一次元配列ｘ［］の第０番目乃至第３番目に、画素ｘ１，ｘ３，ｘ５，ｘ７の画素値が代入される。そして、ステップＳ２１では、変数ｊが０に初期設定される。
【００３８】
続くステップＳ２２では、配列ｘ［］の第ｊ番目の要素（ｘ［ｊ］）から中心画素ｘ４の値を減算し、更に値１６を減算して得られた値が、変数ｗに代入される。
【００３９】
そして、ステップＳ２３では、ステップＳ２２で得られたｗの値が０よりも大きいか否かが判定される。その結果、変数ｗの値が０よりも大きい（ｗ＞０：ＹＥＳ）と判定された場合には、ステップＳ２４に進む。また、逆に、変数ｗの値が０以下である（ｗ≦０：ＮＯ）と判定された場合には、ステップＳ２５に進む。
【００４０】
ステップＳ２４では、一次元配列ｋ［］の第ｊ番目（ｋ［ｊ］）に１が代入され、また、ステップＳ２５では、一次元配列ｋ［］の第ｊ番目（ｋ［ｊ］）に０が代入される。そして、ステップＳ２６に進むことになる。
【００４１】
従って、画素ｘ１（または、ｘ３，ｘ５，ｘ７）の画素値が中心画素ｘ４の画素値に値１６を加算した値よりも大きい場合（ｘ１＞ｘ４＋１６）には、配列ｋ［］に１が代入され、また、画素ｘ１（または、ｘ３，ｘ５，ｘ７）の画素値が中心画素ｘ４の画素値に値１６を加算した値以下である場合（ｘ１≦ｘ４＋１６）には、配列ｋ［］に０が代入されることになる。即ち、中心画素とその周辺の画素の画素値の大小関係に応じて１または０とされる付加コード（非線形コード）が生成されることになる。
【００４２】
ステップＳ２６では、変数ｊの値が１だけインクリメントされ、ステップＳ２７に進む。ステップＳ２７では、変数ｊの値が、４よりも小さいか否かが判定される。その結果、変数ｊの値が４より小さい（ｊ＜４：ＹＥＳ）と判定された場合は、ステップＳ２２に戻り、前述の場合と同様の処理が繰り返される。また、変数ｊの値が４以上である（ｊ≧４：ＮＯ）と判定された場合には処理を終了する（エンド）。
【００４３】
以上の処理により得られた付加コードは、コード化回路１ｄに供給される。
【００４４】
コード化回路１ｄは、プリフィルタ回路１ｂから供給された画素値ｙ４と、付加コード生成回路１ｃから供給された付加コードに対して所定の演算を施し、得られたデータを圧縮画像データとして出力する。即ち、コード化回路１ｄは、以下に示す演算を実行する。
【００４５】
ｄ１２＝（２４０＆ｙ４）｜（ｋ［３］，ｋ［２］，ｋ［１］，ｋ［０］）
・・・  （４）
【００４６】
なお、ｄ１２は出力データを示している。また、＆は論理積を示し、｜は論理和を示している。更に、（，，，）は、連接を表している。即ち、（ａ，ｂ）の場合では、変数ａが上位ビット、変数ｂが下位ビットとして、１まとめのデータとされることを示している。
【００４７】
このような演算によれば、最初の（）内の演算により、画素値ｙ４の上位４ビットが抽出され（２４０は、２進法では１１１１００００である）、次の（）内の演算により、付加コードが４ビットのデータに変換される。そして、これらの（）の論理和を演算することにより、上位４ビットと下位４ビットとが重畳されることになる。
【００４８】
図１０は、図１に示すデコーダ４の詳細な構成例を示すブロック図である。
【００４９】
この図に示すように、デコーダ４は、ブロック化回路４ａ、デコード回路４ｂ、予測フィルタ回路４ｃ、および、非ブロック化回路４ｄにより構成されている。
【００５０】
ブロック化回路４ａは、入力されたデータをブロック化するようになされている。デコード回路４ｂは、ブロック化回路４ａによりブロック化されたデータに対してデコード処理を施す。予測フィルタ係数格納回路５は、予測フィルタ係数生成回路６により生成された予測フィルタ係数を格納するようになされている。予測フィルタ回路４ｃは、予測フィルタ係数格納回路５から供給される係数に応じて、デコード回路４ｂから出力されるデータに対してフィルタリング処理を施す。非ブロック化回路４ｄは、予測フィルタ回路４ｃからの出力信号をもとの画像信号（シリアル信号）に変換するようになされている。
【００５１】
なお、予測フィルタ係数生成回路６における予測フィルタ係数の生成方法に関しては後述する。
【００５２】
次に、デコーダ４の動作について説明する。
【００５３】
図１１は、ブロック化回路４ａの動作を説明する図である。画像データ（圧縮処理が施されているデータ）は、ライン＃１乃至＃６に示す順序で、ブロック化回路４ａに入力される。なお、この図において、破線で示す丸は、圧縮により間引かれた画素を示しており、実線で示す丸は圧縮後に残った画素を示している。
【００５４】
ブロック化回路４ａは、ライン＃１乃至＃６の順に入力された画素データを図示せぬメモリに記憶させ、所定量のデータが記憶されたところで、ブロック＠１乃至＠６を形成し、各ブロックのデータをデコード回路４ｂに対して順に出力する。
【００５５】
図１２は、デコード回路４ｂにおいて実行される処理の一例を示している。この処理が実行されると、ステップＳ４０において、変数ｊが１に初期設定され、ステップＳ４１に進む。ステップＳ４１では、以下の演算が実行される。即ち、図１１に示す圧縮後に残った実線領域内の画素を左上から順に、ｄ０乃至ｄ２４とすると、ｋ［ｊ］は、ｄ１２を用いて以下のように表すことができる。
【００５６】
ｋ［ｊ］＝（ｄ１２＆２j）／２j  ・・・  （５）
【００５７】
ここで、ｄ１２は、入力データを示している。また、＆は前述のように論理積を示している。例えば、ｊ＝０の場合では、ｄ１２と１（＝２0）の論理積が演算され、得られた値が１（＝２0）で除算され、配列ｋ［０］に代入される。即ち、ｊ＝０では、ｄ１２の最下位ビットに格納されている付加コードの最下位ビット（ｋ１）が取り出されることになる。ｊ＝１，２，３では、最下位ビットから第１乃至第３ビット目の情報（ｋ３，ｋ５，ｋ７）が取り出される。
【００５８】
続くステップＳ４２では、変数ｊの値が１だけインクリメントされ、ステップＳ４３において、変数ｊの値が４よりも小さいか否かが判定される。その結果、変数ｊの値が４よりも小さい（ＹＥＳ）と判定された場合は、ステップＳ４１に戻り、前述の場合と同様の処理が繰り返されることになる。また、変数ｊの値が４以上である（ＮＯ）と判定された場合には、ステップＳ４４に進む。
【００５９】
以上の繰り返し処理の結果、ｊ＝１では、入力データｄ１２からｋ３が抽出され、以下、ｊ＝２ではｋ５、ｊ＝３ではｋ７が順次抽出され、それぞれ、ｋ［１］，ｋ［２］，ｋ［３］に格納されることになる。
【００６０】
ステップＳ４４では、変数ｊが０に再設定される。そして、ステップＳ４５に進み、配列ｋの第ｊ番目の要素（ｋ［ｊ］）の値が１であるか否かが判定される。その結果、ｋ［ｊ］が０である（ＮＯ）と判定された場合は、ステップＳ４７に進み、配列ｙ’［］の第ｊ番目（ｙ’［ｊ］）に、０が代入された後、ステップＳ４８に進む。一方、ｋ［ｊ］＝１である（ＹＥＳ）と判定された場合には、ステップＳ４６に進み、以下の演算が実行される。
【００６１】
ｙ’［ｊ］＝２４０＆ｄ１２−１６  ・・・  （６）
【００６２】
即ち、入力データｄ１２の上位４ビットには、プリフィルタ後の画素値（ｙ４）が格納されているので、ｄ１２と２４０の論理積を演算することにより、ｙ４が抽出され、得られた値に１６を加算した値が、配列ｙ’の第ｊ番目の要素（ｙ’［ｊ］）として格納される。
【００６３】
ステップＳ４８では、変数ｊの値が１だけインクリメントされ、ステップＳ４９に進み、変数ｊの値が４よりも小さいか否かが判定される。その結果、変数ｊの値が４よりも小さい（ＹＥＳ）と判定された場合には、ステップＳ４５に戻り、前述の場合と同様の処理が繰り返される。また、変数ｊの値が４以上である（ＮＯ）と判定された場合には、ステップＳ５０に進む。
【００６４】
ステップＳ５０では、以下の処理が実行される。
【００６５】
ｋ１＝ｋ［０］  ・・・  （７）
ｋ３＝ｋ［１］  ・・・  （８）
ｋ５＝ｋ［２］  ・・・  （９）
ｋ７＝ｋ［３］  ・・・  （１０）
【００６６】
即ち、配列ｋの第０乃至第３番目の要素が、変数ｋ１，ｋ３，ｋ５，ｋ７にそれぞれ代入される。
【００６７】
そして、ステップＳ５０の処理が終了すると、ステップＳ５１に進み、以下の式に示す処理が実行される。
【００６８】
ｙ１’＝ｙ’［０］  ・・・  （１１）
ｙ３’＝ｙ’［１］  ・・・  （１２）
ｙ４’＝ｄ１２     ・・・  （１３）
ｙ５’＝ｙ’［２］  ・・・  （１４）
ｙ７’＝ｙ’［３］  ・・・  （１５）
【００６９】
即ち、配列ｙ’の第０番目乃至第３番目の要素が、変数ｙ１’，ｙ３’，ｙ５’，ｙ７’にそれぞれ代入されるとともに、入力データｄ１２の値がｙ４’に代入される。そして、これらの変数に代入された値が、予測フィルタ回路４ｃに出力され、処理を終了する（エンド）。
【００７０】
以上の処理により、図１３に示すように、入力されたデータｄ１２より、代表画素の値（ｙ１’，ｙ３’，ｙ４’，ｙ５’，ｙ７’）と、付加コード（ｋ１，ｋ３，ｋ５，ｋ７）とを得る。
【００７１】
図１４は、予測フィルタ回路４ｃの構成例を示している。この図に示すように、予測フィルタ回路４ｃは、クラス分類回路４ｃ−１およびフィルタ回路４ｃ−２により構成されている。クラス分類回路４ｃ−１は、付加コードと１ブロック分の画素とから、クラスコードを生成して、フィルタ回路４ｃ−２に供給する。フィルタ回路４ｃ−２は、クラスコードに対応する係数を、予測フィルタ係数格納回路５から読み出し、入力データとの間で所定の処理を行うことで、元の画素データを再生するようになされている。
【００７２】
図１５は、クラス分類回路４ｃ−１が実行する処理の一例を示す図である。この処理が実行されると、ステップＳ６０において、変数ｍａｘに、図１６に示す、ｄ７，ｄ１１，ｄ１２，ｄ１３，ｄ１７の中で、最大の値が選択されて代入される。続くステップＳ６１では、ｄ７，ｄ１１，ｄ１２，ｄ１３，ｄ１７の中で、最小の値が選択されて変数ｍｉｎに代入される。
【００７３】
ステップＳ６２では、変数ｄｒに値（ｍａｘ−ｍｉｎ＋１）が代入される。そして、ステップＳ６３に進み、変数ｄｒの値が１であるか否かが判定される。その結果、変数ｄｒの値が１である（ＹＥＳ）と判定された場合には、ステップＳ６６に進み、変数ｚ１２に０が代入されてステップＳ７０に進む。また、変数ｄｒの値が０である（ＮＯ）と判定された場合には、ステップＳ６４に進む。
【００７４】
ステップＳ６４では、以下の演算が実行される。
【００７５】
ｗ＝２（ｄ１２−ｍｉｎ＋０．５）／ｄｒ  ・・・  （１６）
【００７６】
そして、続くステップＳ６５では、ステップＳ６４で得られたｗの値が、０よりも小さいか否かが判定される。その結果、ｗの値が０よりも小さい（ＹＥＳ）と判定された場合は、ステップＳ６６に進み、変数ｚ１２に値０が代入され、ステップＳ７０に進む。また、ｗの値が０以上である（ＮＯ）と判定された場合には、ステップＳ６７に進み、変数ｗの値が１よりも大きいか否かが判定される。その結果、変数ｗの値が１よりも大きい（ＹＥＳ）と判定された場合には、ステップＳ６８に進み、変数ｚ１２に値１が代入され、ステップＳ７０に進む。また、変数ｗの値が１以下である（ＮＯ）と判定された場合には、ステップＳ６９に進み、変数ｗの値の小数点以下を切り捨てた整数値が変数ｚ１２に代入される。
【００７７】
ステップＳ７０では、以下の計算が実行される。
【００７８】
ｉ＝（ｋ７，ｋ５，ｚ１２，ｋ３，ｋ１）  ・・・  （１７）
【００７９】
なお、ここで、（，，，，）は、連接を表しており、（）内の変数をそれぞれ１ビットとみなして順に結合して形成される２進数が変数ｉに代入される。そして、以上の演算が終了すると、得られた変数ｉの値がクラスコードとして出力され、処理を終了する（エンド）。
【００８０】
以上のような処理により、クラス分類回路４ｃ−１がクラスコードｉを生成すると、得られたクラスコードｉは、フィルタ回路４ｃ−２に供給される。フィルタ回路４ｃ−２は、クラスコードｉに対応するフィルタ係数を、予測フィルタ係数格納回路５から読み出す。
【００８１】
予測フィルタ係数格納回路５は、予測フィルタ係数生成回路６により生成された、クラスコードｉに対応する予測フィルタ係数係数ｂｉｊ０乃至ｂｉｊ２４およびｃｉｊ１，ｃｉｊ３，ｃｉｊ５，ｃｉｊ７を、フィルタ回路４ｃ−２に供給する。なお、これらの予測フィルタ係数は、図１７に示すように、復号化しようとする部分の代表画素に対応する係数ｃｉｊ１，ｃｉｊ３，ｃｉｊ５，ｃｉｊ７と、２５画素からなるブロックのそれぞれの画素に対応する係数ｂｉｊ０乃至ｂｉｊ２４から構成されている。
【００８２】
フィルタ回路４ｃ−２は、以上の予測フィルタ係数と、デコード回路４ｂにより得られたｙ１’，ｙ３’，ｙ５’，ｙ７’と、１ブロック分の画素データｄ０乃至ｄ２４の間で以下の演算を行い、図１７に示す、デコード後のデータであるｘ０’乃至ｘ８’を得る。
【００８３】
ｘｊ’＝ｂｉｊ０×ｄ０＋ｂｉｊ１×ｄ１＋ｂｉｊ２×ｄ２＋
ｂｉｊ３×ｄ３＋ｂｉｊ４×ｄ４＋ｂｉｊ５×ｄ５＋
ｂｉｊ６×ｄ６＋ｂｉｊ７×ｄ７＋ｂｉｊ８×ｄ８＋
ｂｉｊ９×ｄ９＋ｂｉｊ１０×ｄ１０＋ｂｉｊ１１×ｄ１１＋
ｂｉｊ１２×ｄ１２＋ｂｉｊ１３×ｄ１３＋ｂｉｊ１４×ｄ１４＋
ｂｉｊ１５×ｄ１５＋ｂｉｊ１６×ｄ１６＋ｂｉｊ１７×ｄ１７＋
ｂｉｊ１８×ｄ１８＋ｂｉｊ１９×ｄ１９＋ｂｉｊ２０×ｄ２０＋
ｂｉｊ２１×ｄ２１＋ｂｉｊ２２×ｄ２２＋ｂｉｊ２３×ｄ２３＋
ｂｉｊ２４×ｄ２４＋
ｃｉｊ１×ｙ１'＋ｃｉｊ３×ｙ３'＋ｃｉｊ５×ｙ５'＋ｃｉｊ７×ｙ７'
・・・  （１８）
【００８４】
なお、ここで、ｉは、前述のようにコードデータであり、０≦ｉ≦３１とされている。また、ｊは、図１５に示すように、圧縮画素と、圧縮時に間引いた画素を全て復元するために０≦ｊ≦８とされている。
【００８５】
以上のような処理により得られたブロックデータは、非ブロック化回路４ｄに供給されることになる。
【００８６】
非ブロック化回路４ｄでは、予測フィルタ回路４ｃより出力されたブロックデータ＠１乃至＠６が、内蔵されているメモリに記憶され、図１８に示すように、ライン＃１乃至＃６の順序で、１ライン毎に順次読み出されて出力される。
【００８７】
次に、図１９を参照して、図１に示す実施の形態のプリフィルタ係数生成回路３と予測フィルタ係数生成回路６における、プリフィルタ係数と、予測フィルタ係数の生成方法について説明する。
【００８８】
図１９は、プリフィルタ係数と予測フィルタ係数を生成する処理を説明するフローチャートである。いま、学習用のサンプルとして、ｎ種類の画像（原画）が準備されており、その原画に基づいて、係数が生成されるものとする。
【００８９】
図１９の処理が実行されると、ステップＳ１００において、プリフィルタ係数生成回路３にプリフィルタ係数の初期値（初期プリフィルタ係数）が設定される。
【００９０】
例えば、初期係数として、以下のような値を用いることができる。
【００９１】
１１１
１１１
１１１
【００９２】
そして、ステップＳ１０１では、以上のような初期プリフィルタ係数を用いて、エンコーダ１において、前述のような、原画の圧縮処理が実行され、１／９に圧縮された画像が生成される。
【００９３】
続くステップＳ１０２では、予測フィルタ係数の学習が行われる。即ち、学習用の原画と、デコーダ４から出力されるデコード画像との間で、最小２乗法に基づく計算がなされ、予測フィルタ係数が決定されることになる。以下にその詳細を説明する。
【００９４】
いま、第ｋ番目の原画が圧縮処理されたとすると、その出力の一部は、図２０に示すようになる。また、学習用の原画のうち、図２０の画素ｄ１２ｋを中心画素とする中心ブロックの画素をｘ０ｋ乃至ｘ８ｋとする。このとき、エンコーダ１から出力された画像データをＤｉｊとし、また、予測フィルタ係数をＢｊとすると、これらの間には以下の関係が成立する。なお、ｉは、フィルタのクラス数を表しており、また、ｊはモード数を表しており、それぞれ、０≦ｉ≦３１，０≦ｊ≦８である。
【００９５】
Ｘｊ’＝ＤｉｊＢｊ  ・・・  （１９）
【００９６】
なお、式（１９）は、次のように表わすことができる。
【００９７】
【数１】
0004434215.tif 000002
【００９８】
ここで、学習用の原画をＸｊとすると、予測フィルタ係数は、以下のような条件を満足することが望まれる。なお、ｍｉｎは最小値を意味する。
【００９９】
｜Ｘｊ’−Ｘｊ｜2  →ｍｉｎ  ・・・  （２１）
【０１００】
ここで、式（１９）を式（２１）に代入すると、以下の式を得る。
【０１０１】
｜ＤｉｊＢｊ−Ｘｊ｜2→ｍｉｎ  ・・・  （２２）
【０１０２】
制約条件として｜Ｂｊ｜2≦１を課した場合に、式（２２）を解くと以下の式を得る。
【０１０３】
Ｂｉｊ＝（ＤｉｊtＤｉｊ＋αＩ）-1ＤｉｊtＸｊ  ・・・  （２３）
【０１０４】
ここで、ｔは転置を、また、−１は、逆行列を表している。更に、Ｉは、ｎ×ｍの単位行列を表している。
【０１０５】
図２１は、以上に示したような最小２乗法に基づいて、予測フィルタ係数を計算する処理の一例を説明するフローチャートである。
【０１０６】
この処理が実行されると、ステップＳ２００において、行列（ＤｉｊtＤｉｊ）の全ての要素の絶対値の和が計算され、得られた値が変数ｍａｘに代入される。続くステップＳ２０１では、処理の開始値を格納する変数ｌｏｏｐ＿ｓｔａｒｔが１に初期設定される。続くステップＳ２０２では、変数ｍａｘの値の対数を取った値の整数部分が、処理の終了値を格納する変数ｌｏｏｐ＿ｅｎｄに格納される。
【０１０７】
続くステップＳ２０３では、自然対数ｅの変数ｌｏｏｐ＿ｓｔａｒｔ乗の値（＝ｅｘｐ（ｌｏｏｐ＿ｓｔａｒｔ））が計算され、変数αに代入される。
【０１０８】
ステップＳ２０４では、前述の式（２３）に従って、予測フィルタの係数Ｂｉｊが計算されることになる。
【０１０９】
次のステップＳ２０５では、｜Ｂｉｊ｜2の値が１以下であるか否かが判定される。即ち、予測フィルタ係数のノルムが１以下であるか否かが判定される。その結果、｜Ｂｉｊ｜2の値が１以下である（ＹＥＳ）と判定された場合には、処理を終了する（エンド）。また、｜Ｂｉｊ｜2の値が１よりも大きい（ＮＯ）と判定された場合にはステップＳ２０６に進む。
【０１１０】
ステップＳ２０６では、変数ｌｏｏｐ＿ｓｔａｒｔの値が１だけインクリメントされ、ステップＳ２０７に進む。ステップＳ２０７では、ｅｘｐ（ｌｏｏｐ＿ｓｔａｒｔ）が演算され、得られた値が変数αに代入される。そして、ステップＳ２０８に進む。
【０１１１】
ステップＳ２０８では、変数ｌｏｏｐ＿ｓｔａｒｔの値が変数ｌｏｏｐ＿ｅｎｄの値以上であるか否かが判定される。その結果、変数ｌｏｏｐ＿ｓｔａｒｔの値が変数ｌｏｏｐ＿ｅｎｄの値以上である（ＹＥＳ）と判定された場合には、処理を終了する（エンド）。また、変数ｌｏｏｐ＿ｓｔａｒｔの値が変数ｌｏｏｐ＿ｅｎｄの値よりも小さい（ＮＯ）と判定された場合には、ステップＳ２０４に戻り、前述の場合と同様の処理が繰り返されることになる。
【０１１２】
以上の処理により、最小２乗法に基づいて、予測フィルタの係数の最適値が算出されることになる。
【０１１３】
図１９に戻って、以上のようにして、予測フィルタ係数が決定されると、ステップＳ１０３に進み、デコード（復号化）画像が生成されることになる。この処理は、前述の場合と同様であり、ステップＳ１０２において生成された予測フィルタ係数を用いて、エンコーダ１から出力された画像が復号化されることになる。
【０１１４】
続くステップＳ１０４では、原画とデコード画（デコーダ４の出力画像）との間で、以下の式により、ＳＮＲ（Signal-to-noise Ratio）が計算される。
【０１１５】
ＳＮＲ＝２０ｌｏｇ10（２５５／誤差の標準偏差）  ・・・  （２４）
【０１１６】
ここで、誤差の標準偏差は、以下の式により求めることができる。
【０１１７】
【数２】
0004434215.tif 000003
【０１１８】
即ち、全画素に亘って、誤差の２乗平均の平方根が求められる。なお、ここで、Ｎは、全データ（画素）数を示している。
【０１１９】
ＳＮＲが算出されると、ステップＳ１０５に進む。そして、ＳＮＲの変化量が小さいか、または、処理回数が所定値を超過したか否かが判定される。即ち、前回の処理により得られたＳＮＲと今回の処理により得られたＳＮＲの差が０．０５ｄＢ以下であるか、または、処理回数が５０回を超過したか否かが判定される。その結果、変化量が小さいかまたは所定の処理回数を超過した（ＹＥＳ）と判定された場合は、処理を終了する（エンド）。また、これらの何れも満足していない（ＮＯ）と判定された場合には、ステップＳ１０６に進む。
【０１２０】
ステップＳ１０６では、プリフィルタ係数の学習が実行される。即ち、図２３に示すように、エンコード処理では、第ｋ番目の原画の１５×１５画素のブロックに対して所定の演算がなされ、５×５画素の圧縮画像が得られることになるが、このとき、中心画素ブロックの値は以下の式により求めることができる。
【０１２１】
ｘ１２ｊｋ＝ｂｉｊ０×（ａｐ０×ｘ００ｋ＋ａｐ１×ｘ０１ｋ＋・・・＋
ａｐ８×ｘ０８ｋ）＋ｂｉｊ１×（・・・）＋
ｂｉｊ２×（・・・）＋ｂｉｊ３（・・・）＋
ｂｉｊ４×（ａｑ０×ｘ４０ｋ＋ａｑ１×ｘ４１ｋ・・・＋
ａｑ８×ｘ４８ｋ）＋・・・＋
ｃｉｊ１×ｙ１’ｋ＋ｃｉｊ３×ｙ３’ｋ＋ｃｉｊ５×ｙ５’ｋ＋
ｃｉｊ７×ｙ７’ｋ  ・・・  （２６）
【０１２２】
この式において、予測フィルタ係数ｂｉｊ０，ｂｉｊ１，ｂｉｊ２，・・・，ｃｉｊ１，ｃｉｊ３，ｃｉｊ５，ｃｉｊ７は、ステップＳ１０２の処理において既に決定されているので、既知である。また、付加コードｙ１’ｋ，ｙ３’ｋ，ｙ５’ｋ，ｙ７’ｋも既知である。従って、これらの既知の値をもとにして、プリフィルタ係数である、ａｐ０，ａｐ１，ａｐ８，・・・，ａｑ０，ａｑ１，・・・，ａｑ８，・・・を求めることを考える。
【０１２３】
式（２６）において、既知であるｃｉｊ１×ｙ１’ｋ＋ｃｉｊ３×ｙ３’ｋ＋ｃｉｊ５×ｙ５’ｋ＋ｃｉｊ７×ｙ７’ｋを左辺に移行し、これを行列式で表すと、以下のようになる。
【０１２４】
【数３】
0004434215.tif 000004
【０１２５】
この式に対して、前述の場合と同様に、２乗最小法を適用することにより、プリフィルタ係数の最適値を求めることができる。即ち、式（２７）をＸ＝ＢＡと表すと、以下の式を計算することにより最適値を得る。
【０１２６】
Ａ＝（ＢtＢ＋αＩ）-1ＢtＸ  ・・・  （２８）
【０１２７】
具体的には、図２１のフローチャートと同様の処理を行うことにより、最適なプリフィルタ係数を求めることができる。
【０１２８】
図１９に戻り、ステップＳ１０６の処理が終了し、プリフィルタ係数の最適値が計算されると、ステップＳ１０１に戻り、前述の場合と同様の処理が繰り返されることになる。その結果、原画とデコード画とのＳＮＲの変化量が小さくなった場合（値が収束した場合）もしくは、処理回数が所定の回数を超過した場合には処理が終了する（エンド）。
【０１２９】
以上のような処理によれば、学習用の原画を用いて、予測フィルタとプリフィルタの特性を、画像に合わせて最適化することが可能となるので、画質の劣化を最小限にとどめて圧縮伸長処理することが可能となる。
【図面の簡単な説明】
【０１３０】
【図１】本発明の一実施の形態の構成例を示すブロック図である。
【図２】図１に示すエンコーダの構成例を示すブロック図である。
【図３】図２に示すブロック化回路で実行される処理の一例を説明する図である。
【図４】原画の一例を示す図である。
【図５】図２に示すプリフィルタ回路の詳細な構成例を示すブロック図である。
【図６】中心画素と代表画素を説明する図である。
【図７】図５のクラス分類回路が実行する処理の一例を説明するフローチャートである。
【図８】プリフィルタによる演算処理の様子を説明する図である。
【図９】図２に示す付加コード生成回路が実行する処理の一例を説明するフローチャートである。
【図１０】図１に示すデコーダの構成例を示すブロック図である。
【図１１】図１０に示すブロック化回路の実行する処理の様子を説明する図である。
【図１２】図１０に示すデコード回路が実行する処理の一例を説明するフローチャートである。
【図１３】図１０に示すデコード回路が実行する処理の様子を説明する図である。
【図１４】図１０に示す予測フィルタ回路の詳細な構成例を示すブロック図である。
【図１５】図１４に示すクラス分類回路が実行する処理の一例を説明するフローチャートである。
【図１６】図１５の処理において対象となる画素の一例を説明する図である。
【図１７】予測フィルタ回路において実行される処理の様子を説明する図である。
【図１８】図１０に示す非ブロック化回路において実行される処理の様子を説明する図である。
【図１９】プリフィルタ係数および予測フィルタ係数の最適値を求める処理の一例を説明するフローチャートである。
【図２０】圧縮処理後の画像の一例を説明する図である。
【図２１】予測フィルタ係数の最適値を求める処理の一例を説明するフローチャートである。
【図２２】原画と復号処理後の画像の一例を説明する図である。
【図２３】エンコード処理における、原画とプリフィルタ係数との関係を示す図である。
【符号の説明】
【０１３１】
１  エンコーダ，  １ａ  ブロック化回路，  １ｂ  プリフィルタ回路，  １ｃ  付加コード生成回路，  １ｄ  コード化回路，  ２  プリフィルタ係数格納回路，  ３  プリフィルタ係数生成回路，  ４  デコーダ，  ４ａ  ブロック化回路，  ４ｂ  デコード回路，  ４ｃ  予測フィルタ回路，  ４ｄ  非ブロック化回路４ｄ，  ５  予測フィルタ係数格納回路，  ６  予測フィルタ係数生成回路
【図１】
0004434215.tif 000005
【図２】
0004434215.tif 000006
【図３】
0004434215.tif 000007
【図４】
0004434215.tif 000008
【図５】
0004434215.tif 000009
【図６】
0004434215.tif 000010
【図７】
0004434215.tif 000011
【図８】
0004434215.tif 000012
【図９】
0004434215.tif 000013
【図１０】
0004434215.tif 000014
【図１１】
0004434215.tif 000015
【図１２】
0004434215.tif 000016
【図１３】
0004434215.tif 000017
【図１４】
0004434215.tif 000018
【図１５】
0004434215.tif 000019
【図１６】
0004434215.tif 000020
【図１７】
0004434215.tif 000021
【図１８】
0004434215.tif 000022
【図１９】
0004434215.tif 000023
【図２０】
0004434215.tif 000024
【図２１】
0004434215.tif 000025
【図２２】
0004434215.tif 000026
【図２３】
0004434215.tif 000027