図1は、送信側から画像データを間引いて伝送し、受信側で、間引かれた画素を生成して再生するシステムの構成例を示している。伝送するディジタルビデオデータは、送信装置1の入力端子201からサブサンプリング回路202に入力され、水平方向に1つおきの画素データが間引かれ、伝送すべきデータ量が半分になるようになされている。エンコーダ203は、サブサンプリング回路202から供給されたデータを、例えばDCT(Discrete Cosine Transform)などの直交変換符号や、ADRC(Adaptive Dynamic Range Coding)などにより高能率符号化し、データ量をさらに低減するようになされている。送信処理回路204は、エンコーダ203の出力に対して、エラー訂正符号化、フレーム化、チャンネル符号化などの処理を行い、出力端子205から伝送路3に出力したり、光ディスク、磁気ディスクなどの記録媒体2に記録する。
伝送路3または記録媒体2から供給されたデータは、受信装置4の入力端子211から受信処理回路212に入力され、チャンネル符号化の復号化処理、フレーム分解処理、エラー訂正処理などが行われるようになされている。デコーダ213は、送信装置1側のエンコーダ203に対応する復号処理を行うようになされている。デコーダ213の出力は、同時化回路215と合成回路214に供給されている。
同時化回路215は、デコーダ213の出力を、処理対象とする画素データが同じタイミングで発生するようにタイミング調整を行い、調整後のデータをADRC処理回路216とデータ生成回路219に出力している。ADRC処理回路216は、同時化回路215より供給されたデータを、1ビットでADRC処理し、処理結果をクラス分類回路217に出力する。クラス分類回路217は、ADRC処理回路216より供給されたデータに対応するクラス分類処理を行い、分類されたクラスを示す信号をROM(Read Only Memory)218にアドレスとして出力するようになされている。
ROM218は、クラス分類回路217より供給されるクラスに対応するアドレスに記憶されている係数データを読み出し、データ生成回路219に出力するようになされている。データ生成回路219は、同時化回路215より供給されたデータに、ROM218より供給された係数データを乗算し、新たな画素データを生成して、合成回路214に出力している。合成回路214は、デコーダ213より供給された、元々存在する画素データと、データ生成回路219により生成された画素データとを合成し、出力端子220から図示せぬCRTなどに出力し、表示させるようになされている。
次に、その動作について説明する。入力端子201より入力されたディジタル画像データは、例えば図2に示すように、水平方向に1つおきに、サブサンプリング回路202において間引かれる。図2において、○印は、間引かれて残った画素データを表し、×印は、間引かれて伝送されない画素データを表している。これにより、伝送すべき画素データが半分になる。
この画素データは、エンコーダ203によりエンコードされた後、送信処理回路204により所定の処理が施され、出力端子205から伝送路3または記録媒体2に伝送される。
受信処理回路212は、入力端子211から伝送路3または記録媒体2からの伝送データを受信し、デコーダ213に出力する。デコーダ213は、入力されたデータをデコードし、デコードした結果得られた画素データ(図2において、○印で示す画素データ)を合成回路214と同時化回路215に出力する。
同時化回路215は、処理対象とする画素データが、同じタイミングで発生するように、所定の遅延を施す処理などを実行する。これにより、例えば図2に示す、省略されている画素Y1の上(X1)、左(X2)、右(X3)および下(X4)に位置する画素データX1乃至X4が、ADRC処理回路216とデータ生成回路219に、同じタイミングで供給される。
ADRC処理回路216は、入力された4個の画素データX1乃至X4により構成される1個のブロックのADRC処理を実行する。この実施例においては、図3に示すように、各画素データXは、R,G,Bの各成分で規定される色空間上のベクトル(XR,XG,XB)で構成されている。XR,XG,XBは、それぞれ画素データXのR,G,Bのコンポーネント成分を表し、例えば、それぞれが8ビットで表現されている。ADRC処理回路216は、1ビットADRC処理を実行するため、例えば、画素データX1のR成分XR1を1ビットで表し、G成分XG1を1ビットで表し、またB成分XB1を1ビットで表す。すなわち、本来、24ビット(=3×8)で表されていた画素データX1を、3ビット(=3×1)のデータとする。他の画素データX2乃至X4も、同様に3ビットの画素データに変換され、それぞれが3ビットで表される画素データ(X1,X2,X3,X4)としてクラス分類回路217に供給される。
クラス分類回路217は、入力された合計12ビット(=4×3)のデータをクラスに分類し、その分類したクラスを表すクラスデータ信号を生成し、ROM218に出力する。すなわち、この実施例の場合、12ビットでクラスが表されるため、4096(=212)通りのクラスが存在することになる。
ROM218には、各クラス毎に予測係数wが記憶されており、クラス分類回路217から所定のクラスを表す信号が供給されると、そのクラスに対応するアドレスに記憶されている予測係数wが読み出され、データ生成回路219に供給される。
データ生成回路219は、ROM218より供給される予測係数wと、同時化回路215より供給される画素データX1乃至X4を用いて、次式に示すような演算を行って、図2に示す画素データY1を生成する。
YR1=w1(R)XR1+w2(R)XG1+w3(R)XB1
+w4(R)XR2+w5(R)XG2+w6(R)XB2
+w7(R)XR3+w8(R)XG3+w9(R)XB3
+w10(R)XR4+w11(R)XG4+w12(R)XB4
YG1=w1(G)XR1+w2(G)XG1+w3(G)XB1
+w4(G)XR2+w5(G)XG2+w6(G)XB2
+w7(G)XR3+w8(G)XG3+w9(G)XB3
+w10(G)XR4+w11(G)XG4+w12(G)XB4
YB1=w1(B)XR1+w2(B)XG1+w3(B)XB1
+w4(B)XR2+w5(B)XG2+w6(B)XB2
+w7(B)XR3+w8(B)XG3+w9(B)XB3
+w10(B)XR4+w11(B)XG4+w12(B)XB4
なお、wi(R),wi(G),wi(B)は、それぞれR,G,B用の予測係数を表している。
上記式より明らかなように、この実施例においては、画素データY1のR成分YR1が、周囲の画素X1乃至X4のR成分XR1乃至XR4だけでなく、G成分XG1乃至XG4、並びにB成分XB1乃至XB4から生成される。同様に、画素データY1のG成分YG1と、B成分YB1も、それぞれ画素データX1乃至X4の対応する成分だけでなく、すべての成分XR1乃至XR4,XG1乃至XG4,XB1乃至XB4から生成される。
画像、特に、テレビカメラを用いて撮影したような自然な画像は相関を有し、比較的近傍の画素ほど強い相関を有する。従って、新たな画素データを演算により生成する場合、より近傍の画素データをもとに、その演算を行う方が、より効率的に、また、高精度で新たな画素データを生成することができる。
すなわち、上記式に示すように、例えば、画素データY1のR成分YR1を求めるのに、XR1乃至XB4の合計12個のデータを用いているのであるが、例えば、このYR1を演算により求めるのに、12個のR成分だけを用いるようにするには、R成分は各画素に1個しか存在しないから、結局合計12画素のR成分を利用する必要がある。このようにすれば、必然的に、いま注目している画素Y1から、より遠くに離れている画素データを用いざるを得ず、効率と精度が劣化することになる。
そこで、本実施例のように、各画素が有するR,G,B成分を用いて、注目画素のR成分(G成分とB成分も同様)を生成するようにすれば、より近い位置の画素データから必要な数のデータを得ることができる。従って、それだけ効率的に、高精度の画素データを生成することができる。
合成回路214は、以上のようにして、データ生成回路219により生成された新たな画素データYと、デコーダ213より供給される元々存在する画素データXとを合成し、出力端子220から出力する。従って、出力端子220から出力される画素データは、受信回路212で受信した画素データXにより構成される画像より、空間解像度が高い画像となっている(図1のサブサンプリング回路202でサブサンプリングされる前の画像と同一の解像度の画像となっている)。
ROM218には、上記した式の予測係数wが記憶されているのであるが、この予測係数wのテーブルは、例えば図4に示す装置から得ることができる。
すなわち、図4の実施例においては、入力端子231からディジタルビデオ信号が入力され、同時化回路232に供給されている。この入力端子231に入力されるディジタルビデオ信号は、テーブルを作成する上において必要な標準的な信号(従って、間引かれる前の高解像度の画像の信号)であることが好ましく、例えば標準的な絵柄の静止画像からなる信号を採用することができる。同時化回路232は、図1の同時化回路215と同様に、図2に示す画素データX1乃至X4が同時に出力されるように、タイミング調整を行う。同時化回路232より出力された画素データは、ADRC処理回路233とデータメモリ237に供給される。
ADRC処理回路233は、入力された画素データを1ビットでADRC処理し、クラス分類回路234に出力する。クラス分類回路234は、ADRC処理回路233より入力されたデータをクラス分類し、分類したクラスに対応する信号をスイッチ235の接点Aを介してデータメモリ237にアドレスとして供給する。すなわち、同時化回路232、ADRC処理回路233、およびクラス分類回路234は、図1における同時化回路215、ADRC処理回路216、およびクラス分類回路217における場合と同様の処理を行う。
カウンタ236は、図示せぬ回路から供給されるクロックCKをカウントし、そのカウント値をスイッチ235の接点Cを介して、データメモリ237にアドレスとして供給している。
データメモリ237は、スイッチ235を介してクラス分類回路234からアドレスが供給されているとき、そのアドレスに同時化回路232から供給されるデータを書き込み、カウンタ236からスイッチ235を介してアドレスが供給されているとき、そのアドレスに記憶されているデータを読み出し、最小自乗法演算回路238に出力するようになされている。最小自乗法演算回路238は、データメモリ237から供給された画素データに対して、最小自乗法に基づく演算を行い、予測係数wiを演算し、メモリ239に出力するようになされている。メモリ239は、スイッチ235を介してカウンタ236から供給されるアドレスに、最小自乗法演算回路238から供給される予測係数wiを書き込むようになされている。
次に、その動作について説明する。予測係数を決定するための学習のためのディジタルビデオデータが同時化回路232において同時化され、ADRC処理回路233で1ビットのADRC処理が行われた後、クラス分類回路234に入力され、クラス分類される。いまの場合、図1における場合と同様に、4画素がクラス分類のための1ブロックとされ、各画素は、ADRC処理回路233において、各R,G,B成分が1ビットでADRC処理されるため、クラス分類回路234から12ビットのクラスデータがスイッチ235の接点Aを介してデータメモリ237にアドレスとして供給される。データメモリ237は、このアドレスに、同時化回路232より供給される画素データを記憶させる。
なお、ここで、記憶させる画素データは、図1のサブサンプリング回路202でサブサンプリングされる前の状態の、より高い空間解像度を有する画像の画素データである。従って、図2における○印の画素データXiはもとより、×印で示す画像データYiも記憶される。
上記式に示すように、1つの成分の画像データ、例えばYR1を演算する係数は、w1(R)乃至w12(R)の12個存在する。従って、これらの12個の予測係数を求めるには、12個の予測係数を未知数とする12個の連立方程式が各クラスにおいて必要となる。データメモリ237には、この連立方程式を解くのに必要な数の画素データが少なくとも記憶される。
必要な数の画素データがデータメモリ237に記憶された後、スイッチ235が接点C側に切り替えられる。カウンタ236は、クロックCKをカウントし、そのカウント値を出力しているので、データメモリ237には、1ずつインクリメントする値が、読み出しアドレスとして入力される。データメモリ237は、入力された読み出しアドレスに対応する画素データを読み出し、最小自乗法演算回路238に出力する。最小自乗法演算回路238は、上記した式に対して、具体的データを当てはめ、予測係数wiを変数とする連立方程式を生成し、その連立方程式を解き、予測係数wiを求める。
そして、演算により求めた予測係数wiを用いて、所定の画素データ(例えば、上記した画素データY1のR成分YR1)を求める(予測する)。そして、演算(予測)により求めたYR1の値と、実際の画素データYR1との誤差を演算し、その誤差の自乗が最小となるように予測係数wiを演算する。演算により求められた予測係数wiは、いまデータメモリ237から読み出された画素データのアドレスと対応するメモリ239のアドレスに書き込まれる。このようにして、メモリ239には、予測係数wiが記憶される。そして、この記憶内容が、図1に示すROM218に書き込まれる。
なお、上記実施例においては、ROM218(メモリ239)に、予測係数wiを書き込むようにしたが、係数が乗算された後のデータそのものを書き込むようにすることも可能である。このようにすれば、図1におけるデータ生成回路219は不要となる。
図5は、送信装置1の他の構成例を示している。
I/F(InterFace)11は、外部から供給される画像データの受信処理と、送信機/記録装置16に対しての、符号化データの送信処理を行うようになされている。ROM(Read Only Memory)12は、IPL(Initial Program Loading)用のプログラムその他を記憶している。RAM(Random Access Memory)13は、外部記憶装置15に記録されているシステムプログラム(OS(Operating System))やアプリケーションプログラムを記憶したり、また、CPU(Central Processing Unit)14の動作上必要なデータを記憶するようになされている。CPU14は、ROM12に記憶されているIPLプログラムに従い、外部記憶装置15からシステムプログラムおよびアプリケーションプログラムを、RAM13に展開し、そのシステムプログラムの制御の下、アプリケーションプログラムを実行することで、I/F11から供給される画像データについての、後述するような符号化処理を行うようになされている。外部記憶装置15は、例えば、磁気ディスク装置などでなり、上述したように、CPU14が実行するシステムプログラムやアプリケーションプログラムを記憶している他、CPU14の動作上必要なデータも記憶している。送信機/記録装置16は、I/F11から供給される符号化データを、記録媒体2に記録し、または伝送路3を介して伝送するようになされている。
なお、I/F11,ROM12,RAM13,CPU14、および外部記憶装置15は、相互にバスを介して接続されている。
以上のように構成される送信装置1においては、I/F11に画像データが供給されると、その画像データは、CPU14に供給される。CPU14は、画像データを符号化し、その結果得られる符号化データを、I/F11に供給する。I/F11は、符号化データを受信すると、それを、送信機/記録装置16に供給する。送信機/記録装置16では、I/F11からの符号化データが、記録媒体2に記録され、または伝送路3を介して伝送される。
図6は、図5の送信装置1の、送信機/記録装置16を除く部分の機能的なブロック図である。
符号化すべき画像データは、圧縮部21、ローカルデコード部22、および誤差算出部23に供給されるようになされている。圧縮部21は、画像データを、その画素を、単純に間引くことにより圧縮し、その結果得られる圧縮データ(間引きが行われた後の画像データ)を、判定部24からの制御に従って補正するようになされている。圧縮部21における補正の結果得られる補正データは、ローカルデコード部22および判定部24に供給するようになされている。
ローカルデコード部22は、圧縮部21からの補正データに基づいて、元の画像を予測し、その予測値を、誤差算出部23に供給するようになされている。なお、ローカルデコード部22は、後述するように、補正データとの線形結合により、予測値を算出するための予測係数を求める適応処理を行い、その予測係数に基づいて、予測値を求めるようになされており、上述したように、予測値を、誤差算出部23に供給する他、そのとき求めた予測係数を、判定部24に供給するようにもなされている。
誤差算出部23は、そこに入力される、元の画像データ(原画像)に対する、ローカルデコード部22からの予測値の予測誤差を算出するようになされている。この予測誤差は、誤差情報として、判定部24に供給されるようになされている。
判定部24は、誤差算出部23からの誤差情報に基づいて、圧縮部21が出力した補正データを、元の画像の符号化結果とすることの適正さを判定するようになされている。そして、判定部24は、圧縮部21が出力した補正データを、元の画像の符号化結果とすることが適正でないと判定した場合には、圧縮部21を制御し、さらに、圧縮データを補正させ、その結果得られる新たな補正データを出力させるようになされている。また、判定部24は、圧縮部21が出力した補正データを、元の画像の符号化結果とすることが適正であると判定した場合には、圧縮部21から供給された補正データを、最適な圧縮データ(以下、適宜、最適圧縮データという)として多重化部25に供給するとともに、ローカルデコード部22から供給された予測係数を多重化部25に供給するようになされている。
多重化部25は、判定部24からの最適圧縮データ(補正データ)と、予測係数とを多重化し、その多重化結果を、符号化データとして、送信機/記録装置16(図5)に供給するようになされている。
次に、図7のフローチャートを参照して、その動作について説明する。圧縮部21に対して、画像データが供給されると、圧縮部21は、ステップS1において、その画像データを間引くことにより圧縮し、最初は、補正を行わずに、ローカルデコード部22および判定部24に出力する。ローカルデコード部22では、ステップS2において、圧縮部21からの補正データ(最初は、上述したように、画像データを、単純に間引いた圧縮データそのもの)がローカルデコードされる。
即ち、ステップS2では、圧縮部21からの補正データとの線形結合により、元の画像の予測値を算出するための予測係数を求める適応処理が行われ、その予測係数に基づいて、予測値が求められる。ローカルデコード部22において求められた予測値は誤差算出部23に、また、予測係数は判定部24に供給される。
ここで、ローカルデコード部22が出力する予測値で構成される画像は、受信装置4側において得られる復号画像と同一のものである。
誤差算出部23は、ローカルデコード部22から、元の画像の予測値を受信すると、ステップS3において、元の画像データに対する、ローカルデコード部22からの予測値の予測誤差を算出し、誤差情報として、判定部24に供給する。判定部24は、誤差算出部23から誤差情報を受信すると、ステップS4において、その誤差情報に基づいて、圧縮部21が出力した補正データを、元の画像の符号化結果とすることの適正さを判定する。
即ち、ステップS4においては、誤差情報が所定の閾値ε以下であるかどうかが判定される。ステップS4において、誤差情報が所定の閾値ε以下でないと判定された場合、圧縮部21が出力した補正データを、元の画像の符号化データとするのは適正でないと認識され、ステップS5に進み、判定部24は、圧縮部21を制御し、これにより、圧縮データを補正させる。圧縮部21は、判定部24の制御に従って、補正量(後述する補正値△)を変えて、圧縮データを補正し、その結果得られる補正データを、ローカルデコード部22および判定部24に出力する。そして、ステップS2に戻り、以下、同様の処理が繰り返される。
一方、ステップS4において、誤差情報が所定の閾値ε以下であると判定された場合、圧縮部21が出力した補正データを、元の画像の符号化結果とするのは適正であると認識され、判定部24は、所定の閾値ε以下の誤差情報が得られたときの補正データを、最適圧縮データとして、予測係数とともに、多重化部25に出力する。多重化部25では、ステップS6において、判定部24からの最適圧縮データと予測係数とが多重化され、その結果得られる符号化データが出力されて、処理を終了する。
以上のように、誤差情報が所定の閾値ε以下となったときにおける、圧縮データを補正した補正データを、元の画像の符号化結果とするようにしたので、受信装置4側においては、その補正データに基づいて、元の画像(原画像)とほぼ同一の画像を得ることが可能となる。
次に、図8は、図6の圧縮部21の構成例を示している。
符号化すべき画像データは、間引き回路31に入力されるようになされており、間引き回路31は、入力された画像データを1/N(いまの場合、1/2)に間引くようになされている。従って、間引き回路31からは、画像データを、1/Nに圧縮した圧縮データが出力されるようになされている。この圧縮データは、間引き回路31から補正回路32に供給されるようになされている。
補正回路32は、判定部24(図6)からの制御信号に従って、補正値ROM33にアドレスを与え、これにより、補正値△を読み出すようになされている。そして、補正回路32は、間引き回路31からの圧縮データに対して、補正値ROM33からの補正値△を、例えば加算することで、補正データを生成し、ローカルデコード部22および判定部24に供給するようになされている。補正値ROM33は、間引き回路31が出力する圧縮データを補正するための、各種の補正値△の組合せ(例えば、1フレーム分の圧縮データを補正するための補正値の組合せなど)を記憶しており、補正回路32から供給されるアドレスに対応する補正値△の組合せを読み出して、補正回路32に供給するようになされている。
次に、図9を参照して、図8の圧縮部21の処理について説明する。
例えば、1フレーム(フィールド)分などの画像データが、間引き回路31に供給されると、間引き回路31は、ステップS11において、その画像データを1/Nに間引き、その結果得られる圧縮データを、補正回路32に出力する。
ここで、間引き回路31は、図2に示すように、画像データを、例えば、各ライン毎に1/2に間引くようになされている。なお、間引き回路31は、以上のような処理を、例えば、1フレーム(フィールド)単位で行うようになされている。従って、間引き回路31から補正回路32に対しては、1フレームの画像データが1/2に間引きされた圧縮データとして供給される。但し、間引き回路31における間引き処理は、その他、1フレームの画像を幾つかのブロックに分割し、そのブロック単位で行うようにすることも可能である。
補正回路32は、間引き回路31から圧縮データを受信すると、ステップS12において、判定部24(図6)から制御信号を受信したかどうかを判定する。ステップS12において、制御信号を受信していないと判定された場合、ステップS15に進み、補正回路32は、間引き回路31からの圧縮データを、そのまま補正データとして、ローカルデコード部22および判定部24に出力し、ステップS12に戻る。
即ち、判定部24は、上述したように、誤差情報に基づいて、圧縮部21(補正回路32)を制御するようになされており、間引き回路31から圧縮データが出力された直後は、まだ、誤差情報が得られないため(誤差情報が、誤差算出部23から出力されないため)、判定部24からは制御信号は出力されない。このため、間引き回路31から圧縮データが出力された直後は、補正回路32は、その圧縮データを補正せず(0を加算する補正をして)、そのまま補正データとして、ローカルデコード部22および判定部24に出力する。
一方、ステップS12において、判定部24からの制御信号を受信したと判定された場合、ステップS13において、補正回路32は、その制御信号に従ったアドレスを、補正値ROM33に出力する。これにより、ステップS13では、補正値ROM33から、そのアドレスに記憶されている、1フレーム分の圧縮データを補正するための補正値△の組合せ(集合)が読み出され、補正回路32に供給される。補正回路32は、補正値ROM33から補正値△の組合せを受信すると、ステップS14において、1フレームの圧縮データそれぞれに、対応する補正値△を加算し、これにより、圧縮データを補正した補正データを算出する。その後は、ステップS15に進み、補正データが、補正回路32からローカルデコード部22および判定部24に出力され、ステップS12に戻る。
以上のようにして、圧縮部21は、判定部24の制御に従って、圧縮データを、種々の値に補正した補正データを出力することを繰り返す。
なお、判定部24は、1フレームの画像についての符号化を終了すると、その旨を表す制御信号を、圧縮部21に供給するようになされており、圧縮部21は、その制御信号を受信すると、次のフレームの画像に対して、図9のフローチャートに従った処理を施すようになされている。
また、上述の場合においては、間引き回路31に、2画素に1個の割合で画素データ(画素値)を抽出させることにより、圧縮データを生成させるようにしたが、その他、例えば、3×3画素の平均値を算出し、その平均値を、3×3画素の中心の画素の画素値として、圧縮データを生成させるようにすることなども可能である。
次に、図10は、図6のローカルデコード部22の構成例を示している。
圧縮部21からの補正データは、クラス分類用ブロック化回路41および予測値計算用ブロック化回路42に供給されるようになされている。クラス分類用ブロック化回路41は、補正データを、その性質に応じて所定のクラスに分類するための単位であるクラス分類用ブロックにブロック化するようになされている。
即ち、いま、クラス分類用ブロック化回路41は、図2に示す4つの画素X1,X2,X3,X4の合計4画素で構成されるクラス分類用ブロックを構成するようになされている。このクラス分類用ブロックは、クラス分類適応処理回路43に供給されるようになされている。
なお、この場合、クラス分類用ブロックは、4画素でなる十文字形状のブロックで構成されることとなるが、クラス分類用ブロックの形状は、その他、例えば、長方形や、正方形、その他の任意な形とすることが可能である。また、クラス分類用ブロックを構成する画素数も、4画素に限定されるものではない。
予測値計算用ブロック化回路42は、補正データを、元の画像の予測値を計算するための単位である予測値計算用ブロックにブロック化するようになされている。この実施例の場合、そのブロックはクラス分類用のブロックと同一とされ、図2の画素データX1乃至X4により、そのブロックが構成される。
このように、この実施例の場合、予測値計算用ブロック化回路42は、クラス分類用ブロック化回路41と同一の範囲をブロック化するため、両者は共用するようにしてもよい。
予測値計算用ブロック化回路42において得られた予測値計算用ブロックは、クラス分類適応処理回路43に供給されるようになされている。
なお、予測値計算用ブロックについても、クラス分類用ブロックにおける場合と同様に、その画素数および形状は、上述したものに限定されるものではない。但し、予測値計算用ブロックを構成する画素数は、クラス分類用ブロックを構成する画素数以上とするのが望ましい。
また、上述のようなブロック化を行う場合において(ブロック化以外の処理についても同様)、画像の画枠付近では、対応する画素が存在しないことがあるが、この場合には、例えば、画枠を構成する画素と同一の画素が、その外側に存在するものとして処理を行う。
クラス分類適応処理回路43は、ADRC(Adaptive Dynamic Range Coding)処理回路、クラス分類回路45、および適応処理回路46で構成され、クラス分類適応処理を行うようになされている。
クラス分類適応処理とは、入力信号を、その特徴に基づいて幾つかのクラスに分類し、各クラスの入力信号に、そのクラスに適切な適応処理を施すもので、大きく、クラス分類処理と適応処理とに分かれている。
ここで、クラス分類処理および適応処理について簡単に説明する。
まず、クラス分類処理について説明する。
いま、例えば、図11(A)に示すように、ある注目画素と、それに隣接する3つの画素により、2×2画素でなるブロック(クラス分類用ブロック)を構成し、また、各画素は、1ビットで表現される(0または1のうちのいずれかのレベルをとる)ものとする。この場合、2×2の4画素のブロックは、各画素のレベル分布により、図11(B)に示すように、16(=(21)4)パターンに分類することができる。このようなパターン分けが、クラス分類処理であり、クラス分類回路45において行われる。
なお、クラス分類処理は、画像(ブロック内の画像)のアクティビティ(画像の複雑さ)(変化の激しさ)などをも考慮して行うようにすることが可能である。
ここで、通常、各画素には、例えば8ビット程度が割り当てられる。また、本実施例においては、上述したように、クラス分類用ブロックは、3×3の9画素で構成される。従って、このようなクラス分類用ブロックを対象にクラス分類処理を行ったのでは、(28)9という膨大な数のクラスに分類されることになる。
そこで、本実施例においては、ADRC処理回路44において、クラス分類用ブロックに対して、ADRC処理が施されるようになされており、これにより、クラス分類用ブロックを構成する画素のビット数を小さくすることで、クラス数を削減するようになされている。
即ち、例えば、いま、説明を簡単にするため、図12(A)に示すように、直線上に並んだ4画素で構成されるブロックを考えると、ADRC処理においては、その画素値の最大値MAXと最小値MINが検出される。そして、DR=MAX−MINを、ブロックの局所的なダイナミックレンジとし、このダイナミックレンジDRに基づいて、ブロックを構成する画素の画素値がKビットに再量子化される。
即ち、ブロック内の各画素値から、最小値MINを減算し、その減算値をDR/2Kで除算する。そして、その結果得られる除算値に対応するコード(ADRCコード)に変換される。具体的には、例えば、K=2とした場合、図12(B)に示すように、除算値が、ダイナミックレンジDRを4(=22)等分して得られるいずれの範囲に属するかが判定され、除算値が、最も下のレベルの範囲、下から2番目のレベルの範囲、下から3番目のレベルの範囲、または最も上のレベルの範囲に属する場合には、それぞれ、例えば、00B,01B,10B、または11Bなどの2ビットにコード化される(Bは2進数であることを表す)。そして、復号側においては、ADRCコード00B,01B,10B、または11Bは、ダイナミックレンジDRを4等分して得られる最も下のレベルの範囲の中心値L00、下から2番目のレベルの範囲の中心値L01、下から3番目のレベルの範囲の中心値L10、または最も上のレベルの範囲の中心値L11に変換され、その値に、最小値MINが加算されることで復号が行われる。
ここで、このようなADRC処理はノンエッジマッチングと呼ばれる。このようなノンエッジマッチングに対して、図12(C)に示すように、ダイナミックレンジDRを4等分して得られる最も下のレベルの範囲に属する画素値の平均値MIN’、またはその最も上のレベルの範囲に属する画素値の平均値MAX’に、ADRCコード00Bまたは11Bそれぞれを変換するとともに、MAX’−MIN’で規定されるダイナミックレンジDR’を等分(3等分)するレベルに、ADRCコード01Bと10Bを変換することにより、ADRCコードの復号を行うようなADRC処理があり、これは、エッジマッチングと呼ばれる。
なお、ADRC処理については、本件出願人が先に出願した、例えば、特開平3−53778号公報などに、その詳細が開示されている。
ブロックを構成する画素に割り当てられているビット数より少ないビット数で再量子化を行うADRC処理を施すことにより、上述したように、クラス数を削減することができ、このようなADRC処理が、ADRC処理回路44において行われるようになされている。
なお、本実施例では、クラス分類回路45において、ADRC処理回路44から出力されるADRCコードに基づいて、クラス分類処理が行われるが、クラス分類処理は、その他、例えば、DPCM(予測符号化)や、BTC(Block Truncation Coding)、VQ(ベクトル量子化)、DCT(離散コサイン変換)、アダマール変換などを施したデータを対象に行うようにすることも可能である。
次に、適応処理について説明する。
例えば、いま、元の画像の画素値yの予測値E[y]を、その周辺の幾つかの画素の画素値(以下、適宜、学習データという)x1,x2,・・・と、所定の予測係数w1,w2,・・・の線形結合により規定される線形1次結合モデルにより求めることを考える。この場合、予測値E[y]は、次式で表すことができる。
E[y]=w1x1+w2x2+・・・
・・・(1)
そこで、一般化するために、予測係数wの集合でなる行列W、学習データの集合でなる行列X、および予測値E[y]の集合でなる行列Y’を、
で定義すると、次のような観測方程式が成立する。
XW=Y’
・・・(2)
そして、この観測方程式に最小自乗法を適用して、元の画像の画素値yに近い予測値E[y]を求めることを考える。この場合、元の画像の画素値(以下、適宜、教師データという)yの集合でなる行列Y、および元の画像の画素値yに対する予測値E[y]の残差eの集合でなる行列Eを、
で定義すると、式(2)から、次のような残差方程式が成立する。
XW=Y+E
・・・(3)
この場合、元の画像の画素値yに近い予測値E[y]を求めるための予測係数w
iは、自乗誤差
を最小にすることで求めることができる。
従って、上述の自乗誤差を予測係数wiで微分したものが0になる場合、即ち、次式を満たす予測係数wiが、元の画像の画素値yに近い予測値E[y]を求めるため最適値ということになる。
そこで、まず、式(3)を、予測係数wiで微分することにより、次式が成立する。
式(4)および(5)より、式(6)が得られる。
さらに、式(3)の残差方程式における学習データx、予測係数w、教師データy、および残差eの関係を考慮すると、式(6)から、次のような正規方程式を得ることができる。
式(7)の正規方程式は、求めるべき予測係数wの数と同じ数だけたてることができ、従って、式(7)を解くことで、最適な予測係数wを求めることができる。なお、式(7)を解くにあたっては、例えば、掃き出し法(Gauss-Jordanの消去法)などを適用することが可能である。
以上のようにして、最適な予測係数wを求め、さらに、その予測係数wを用い、式(1)により、元の画像の画素値yに近い予測値E[y]を求めるのが適応処理であり、この適応処理が、適応処理回路46において行われるようになされている。
なお、適応処理は、間引かれた画像には含まれていない、元の画像に含まれる成分が再現される点で、補間処理とは異なる。即ち、適応処理では、式(1)だけを見る限りは、いわゆる補間フィルタを用いての補間処理と同一であるが、その補間フィルタのタップ係数に相当する予測係数wが、教師データyを用いての、いわば学習により求められるため、元の画像に含まれる成分を再現することができる。このことから、適応処理は、いわば画像の創造作用がある処理ということができる。
次に、図13のフローチャートを参照して、図10のローカルデコード部22の処理について説明する。
ローカルデコード部22においては、まず最初に、ステップS21において、圧縮部21からの補正データがブロック化される。即ち、クラス分類用ブロック化回路41において、補正データが、4画素のクラス分類用ブロックにブロック化され、クラス分類適応処理回路43に供給されるとともに、予測値計算用ブロック化回路42において、補正データが4画素の予測値計算用ブロックにブロック化され、クラス分類適応処理回路43に供給される。
クラス分類適応処理回路43には、上述したように、クラス分類用ブロックおよび予測値計算用ブロックの他、元の画像データが供給されるようになされており、クラス分類用ブロックはADRC処理部44に、予測値計算用ブロックおよび元の画像データは適応処理回路46に供給されるようになされている。
ADRC処理回路44は、クラス分類用ブロックを受信すると、ステップS22において、そのクラス分類用ブロックに対して、例えば、1ビットのADRC(1ビットで再量子化を行うADRC)処理を施し、これにより、補正データを、1ビットに変換(符号化)して、クラス分類回路45に出力する。クラス分類回路45は、ステップS23において、ADRC処理が施されたクラス分類用ブロックに対して、クラス分類処理を施し、そのクラス分類用ブロックが属するクラスを判定する。このクラスの判定結果は、クラス情報として、適応処理回路46に供給される。
なお、本実施例においては、R,G,Bの各成分が1ビットのADRC処理が施された4画素で構成されるクラス分類用ブロックに対して、クラス分類処理が施されるので、各クラス分類用ブロックは、4096(=(23)4)のクラスのうちのいずれかに分類されることになる。
そして、ステップS24に進み、適応処理回路46において、クラス分類回路45からのクラス情報に基づいて、各クラスごとに適応処理が施され、これにより、予測係数および元の画像データの予測値が算出される。
即ち、本実施例においては、例えば、ある1つの画素に注目した場合に、その注目画素の周りに隣接する4個の画素でなる予測値計算用ブロックを用いて、適応処理が行われる。
具体的には、例えば、いま、図2に示した4個の補正データX1,X2,X3,X4でなるクラス分類用ブロックについてのクラス情報Cが、クラス分類回路45から出力され、また、予測値計算用ブロックとして、4画素の補正データX1,X2,X3,X4でなる予測値計算用ブロックが、予測値計算用ブロック化回路42から出力されたものとすると、まず、その予測値計算用ブロックを構成する補正データを、学習データとするとともに、元の画像における、補正データY1を、教師データとして、式(7)に示した正規方程式がたてられる。
さらに、クラス情報Cにクラス分類される他の予測値計算用ブロックについても同様にして、正規方程式がたてられ、画素値YR1の予測値E[YR1]を求めるための予測係数w1(R)乃至w12(R)を算出することができるだけの数の正規方程式が得られると(従って、そのような数の正規方程式が得られるまでは、ステップS24では、正規方程式をたてる処理までが行われる)、その正規方程式を解くことで、クラス情報Cについて、画素値YR1の予測値E[YR1]を求めるのに最適な予測係数w1(R)乃至w12(R)が算出される。そして、式(1)に対応する次式に従って、予測値E[YR1]が求められる。YG1,YB1などについても同様である。
E[YR1]=w1(R)XR1+w2(R)XG1+w3(R)XB1
+w4(R)XR2+w5(R)XG2+w6(R)XB2
+w7(R)XR3+w8(R)XG3+w9(R)XB3
+w10(R)XR4+w11(R)XG4+w12(R)XB4
E[YG1]=w1(G)XR1+w2(G)XG1+w3(G)XB1
+w4(G)XR2+w5(G)XG2+w6(G)XB2
+w7(G)XR3+w8(G)XG3+w9(G)XB3
+w10(G)XR4+w11(G)XG4+w12(G)XB4
E[YB1]=w1(B)XR1+w2(B)XG1+w3(B)XB1
+w4(B)XR2+w5(B)XG2+w6(B)XB2
+w7(B)XR3+w8(B)XG3+w9(B)XB3
+w10(B)XR4+w11(B)XG4+w12(B)XB4
ステップS24において、以上のようにして各画素のR,G,Bの各成分についての予測係数が求められると、予測値が誤差算出部23に出力されるとともに、予測係数が判定部24に出力され、ステップS21に戻り、以下同様の処理が繰り返される。
次に、図14は、図6の誤差算出部23の構成例を示している。
ブロック化回路51には、元の画像データが供給されるようになされており、ブロック化回路51は、その画素データを、ローカルデコード部22から出力される予測値に対応する画素単位でブロック化し、その結果得られるブロックの画素(いまの場合、このブロックは1個の画素(図2のY1)により構成される)を、自乗誤差算出回路52に出力するようになされている。自乗誤差算出部52には、上述したように、ブロック化回路51から画素データが供給される他、ローカルデコード部22から予測値としての画素データが供給されるようになされており、自乗誤差算出回路52は、原画像に対する、予測値の予測誤差としての自乗誤差を算出し、積算部55に供給するようになされている。
即ち、自動誤差算出回路52は、演算器53および54で構成されている。演算器53は、ブロック化回路51からのブロック化された画像データそれぞれから、対応する予測値を減算し、その減算値を、演算器54に供給するようになされている。演算器54は、演算器53の出力(元の画像データと予測値との差分)を自乗し、積算部55に供給するようになされている。
積算部55は、自乗誤差算出回路52から自乗誤差を受信すると、メモリ56の記憶値を読み出し、その記憶値と自乗誤差とを加算して、再び、メモリ56に供給して記憶させることを繰り返すことで、自乗誤差の積算値(誤差分散)を求めるようになされている。さらに、積算部55は、所定量(例えば、1フレーム分など)についての自乗誤差の積算が終了すると、その積算値を、メモリ56から読み出し、誤差情報として、判定部24に供給するようになされている。メモリ56は、1フレームについての処理が終了するごとに、その記憶値をクリアしながら、積算部55の出力値を記憶するようになされている。
次に、その動作について、図15のフローチャートを参照して説明する。誤差算出部23では、まず最初に、ステップS31において、メモリ56の記憶値が、例えば0にクリアされ、ステップS32に進み、ブロック化回路51において、画像データが、上述したようにブロック化され、その結果得られるブロックが、自乗誤差算出回路52に供給される。自乗誤差算出回路52では、ステップS33において、ブロック化回路51から供給されるブロックを構成する、元の画像の画像データと、ローカルデコード部22から供給される予測値との自乗誤差が算出される。
即ち、ステップS33では、演算器53において、ブロック化回路51より供給されたブロック化された画像データそれぞれから、対応する予測値が減算され、演算器54に供給される。さらに、ステップS33では、演算器54において、演算器53の出力が自乗され、積算部55に供給される。
積算部55は、自乗誤差算出回路52から自乗誤差を受信すると、ステップS34において、メモリ56の記憶値を読み出し、その記憶値と自乗誤差とを加算することで、自乗誤差の積算値を求める。積算部55において算出された自乗誤差の積算値は、メモリ56に供給され、前回の記憶値に上書きされることで記憶される。
そして、積算部55では、ステップS35において、所定量としての、例えば、1フレーム分についての自乗誤差の積算が終了したかどうかが判定される。ステップS35において、1フレーム分についての自乗誤差の積算が終了していないと判定された場合、ステップS32に戻り、再び、ステップS32からの処理を繰り返す。また、ステップS35において、1フレーム分についての自乗誤差の積算が終了したと判定された場合、ステップS36に進み、積算部55は、メモリ56に記憶された1フレーム分についての自乗誤差の積算値を読み出し、誤差情報として、判定部24に出力する。そして、ステップS31に戻り、再び、ステップS31からの処理を繰り返す。
従って、誤差算出部23では、元の画像データをYiとするとともに、その予測値をE[Yi]とするとき、次式に従った演算が行われることで、誤差情報Qが算出される。
Q=(Σ(Yi)−E[Yi])2
但し、Σは、1フレーム分についてのサメーションを意味する。
次に、図16は、図6の判定部24の構成例を示している。
予測係数メモリ61は、ローカルデコード部22から供給される予測係数を記憶するようになされている。補正データメモリ62は、圧縮部21から供給される補正データを記憶するようになされている。
なお、補正データメモリ62は、圧縮部21において、圧縮データが新たに補正され、これにより、新たな補正データが供給された場合には、既に記憶している補正データ(前回の補正データ)に代えて、新たな補正データを記憶するようになされている。また、このように補正データが、新たなものに更新されるタイミングで、ローカルデコード部22からは、その新たな補正データに対応する、新たな予測係数のセットが出力されるが、予測係数メモリ61においても、このように新たな予測係数が供給された場合には、既に記憶している予測係数(前回の予測係数)に代えて、その新たな予測係数を記憶するようになされている。
誤差情報メモリ63は、誤差算出部23から供給される誤差情報を記憶するようになされている。なお、誤差情報メモリ63は、誤差算出部23から、今回供給された誤差情報の他に、前回供給された誤差情報も記憶するようになされている(新たな誤差情報が供給されても、さらに新たな誤差情報が供給されるまでは、既に記憶している誤差情報を保持するようになされている)。なお、誤差情報メモリ63は、新たなフレームについての処理が開始されるごとにクリアされるようになされている。
比較回路64は、誤差情報メモリ63に記憶された今回の誤差情報と、所定の閾値εとを比較し、さらに、必要に応じて、今回の誤差情報と前回の誤差情報との比較も行うようになされている。比較回路64における比較結果は、制御回路65に供給されるようになされている。
制御回路65は、比較回路64における比較結果に基づいて、補正データメモリ62に記憶された補正データを、元の画像の符号化結果とすることの適正(最適)さを判定し、最適でないと認識(判定)した場合には、新たな補正データの出力を要求する制御信号を、圧縮部21(補正回路32)(図8)に供給するようになされている。また、制御回路65は、補正データメモリ62に記憶された補正データを、元の画像の符号化結果とすることが最適であると認識した場合には、予測係数メモリ61に記憶されている予測係数を読み出し、多重化部25に出力するとともに、補正データメモリ62に記憶されている補正データを読み出し、最適圧縮データとして、やはり多重化部25に供給するようになされている。さらに、この場合、制御回路65は、1フレームの画像についての符号化を終了した旨を表す制御信号を、圧縮部21に出力し、これにより、上述したように、圧縮部21に、次のフレームについての処理を開始させるようになされている。
次に、図17を参照して、判定部24の動作について説明する。判定部24では、まず最初に、ステップS41において、誤差算出部23から誤差情報を受信したかどうかが、比較回路64によって判定され、誤差情報を受信していないと判定された場合、ステップS41に戻る。また、ステップS41において、誤差情報を受信したと判定された場合、即ち、誤差情報メモリ63に誤差情報が記憶された場合、ステップS42に進み、比較回路64において、誤差情報メモリ63に、いま記憶された誤差情報(今回の誤差情報)と、所定の閾値εとが比較され、いずれが大きいかが判定される。
ステップS42において、今回の誤差情報が、所定の閾値ε以上であると判定された場合、比較回路64において、誤差情報メモリ63に記憶されている前回の誤差情報が読み出される。そして、比較回路64は、ステップS43において、前回の誤差情報と、今回の誤差情報とを比較し、いずれが大きいかを判定する。
ここで、1フレームについての処理が開始され、最初に誤差情報が供給されたときには、誤差情報メモリ63には、前回の誤差情報は記憶されていないので、この場合には、判定部24においては、ステップS43以降の処理は行われず、制御回路65において、所定の初期アドレスを出力するように、補正回路32(図8)を制御する制御信号が出力されるようになされている。
ステップS43において、今回の誤差情報が、前回の誤差情報以下であると判定された場合、即ち、圧縮データの補正を行うことにより誤差情報が減少した場合、ステップS44に進み、制御回路65は、補正値△を、前回と同様に変化させるように指示する制御信号を、補正回路32に出力し、ステップS41に戻る。また、ステップS43において、今回の誤差情報が、前回の誤差情報より大きいと判定された場合、即ち、圧縮データの補正を行うことにより誤差情報が増加した場合、ステップS45に進み、制御回路65は、補正値△を、前回と逆に変化させるように指示する制御信号を、補正回路32に出力し、ステップS41に戻る。
なお、減少し続けていた誤差情報が、あるタイミングで上昇するようになったときは、制御回路65は、補正値△を、いままでの場合の、例えば1/2の大きさで、前回と逆に変化させるように指示する制御信号を出力するようになされている。
そして、ステップS41乃至S45の処理を繰り返すことにより、誤差情報が減少し、これにより、ステップS42において、今回の誤差情報が、所定の閾値εより小さいと判定された場合、ステップS46に進み、制御回路65は、予測係数メモリ61に記憶されている予測係数を読み出すとともに、補正データメモリ62に記憶されている補正データを読み出し、多重化部25に供給して、処理を終了する。
その後は、次のフレームについての誤差情報が供給されるのを待って、再び、図17に示すフローチャートに従った処理を繰り返す。
なお、補正回路32には、圧縮データの補正は、1フレームすべての圧縮データについて行わせるようにすることもできるし、その一部の圧縮データについてだけ行わせるようにすることもできる。一部の圧縮データについてだけ補正を行う場合においては、制御回路65に、例えば、誤差情報に対する影響の強い画素を検出させ、そのような画素についての圧縮データだけを補正するようにすることができる。誤差情報に対する影響の強い画素は、例えば、次のようにして検出することができる。即ち、まず最初に、間引き後に残った画素についての圧縮データをそのまま用いて処理を行うことにより、その誤差情報を得る。そして、間引き後に残った画素についての圧縮データを、1つずつ、同一の補正値△だけ補正するような処理を行わせる制御信号を、制御回路65から補正回路32に出力し、その結果得られる誤差情報を、圧縮データをそのまま用いた場合に得られた誤差情報と比較し、その差が、所定値以上となる画素を、誤差情報に対する影響の強い画素として検出すれば良い。
以上のように、誤差情報を所定の閾値εより小さくする(以下にする)まで、圧縮データの補正が繰り返され、誤差情報が所定の閾値εより小さくなったときにおける補正データが、画像の符号化結果として出力されるので、受信装置4においては、間引き後の画像を構成する画素の画素値を、元の画像を復元するのに最も適当な値にした補正データから、原画像と同一(ほぼ同一)の復号画像を得ることが可能となる。
また、画像は、間引き処理により圧縮される他、ADRC処理およびクラス分類適応処理などによっても圧縮されるため、非常に高圧縮率の符号化データを得ることができる。なお、送信装置1における、以上のような符号化処理は、間引きによる圧縮処理と、クラス分類適応処理とを、いわば有機的に統合して用いることにより、高能率圧縮を実現するものであり、このことから統合符号化処理ということができる。
次に、図18は、図1の受信装置4のさらに他の構成例を示している。
受信機/再生装置71においては、記録媒体2に記録された符号化データが再生され、または伝送路3を介して伝送されてくる符号化データが受信され、分離部72に供給される。分離部72では、符号化データが、補正データと予測係数に分離され、補正データは、クラス分類用ブロック化回路73および予測値計算用ブロック化回路77に供給され、予測係数は、予測回路76に供給される。
クラス分類用ブロック化回路73、ADRC処理回路74、クラス分類回路75、または予測値計算用ブロック化回路77は、図10におけるクラス分類用ブロック化回路41、ADRC処理回路44、クラス分類回路45、または予測値計算用ブロック化回路42それぞれと同様に構成されており、従って、これらのブロックにおいては、図10における場合と同様の処理が行われ、これにより、予測値計算用ブロック化回路77からは予測値計算用ブロックが出力され、また、クラス分類回路75からはクラス情報が出力される。これらの予測値計算用ブロックおよびクラス情報は、予測回路76に供給される。
予測回路76では、クラス情報に対応した予測係数と、予測値計算用ブロック化回路77から供給される予測値計算用ブロックを構成する補正データとを用い、式(1)に従って予測値が算出され、そのような予測値で構成される1フレームの画像が、復号画像として出力される。この復号画像は、上述したように、元の画像とほぼ同一の画像となる。
なお、受信側においては、図18に示すような受信装置4でなくても、間引きされた画像を単純な補間により復号する装置により、予測係数を用いずに、通常の補間を行うことで復号画像を得ることができる。但し、この場合に得られる復号画像は、画質(解像度)の劣化したものとなる。
ところで、上述の場合おいては、図6のローカルデコード部22において予測係数を求め、これを用いて、予測値を算出するようにしたが、ローカルデコード部22では、予測係数を求めずに、予測値を算出するようにすることが可能である。
即ち、図19は、図6のローカルデコード部22の他の構成例を示している。なお、図中、図10における場合と対応する部分については、同一の符号を付してある。即ち、図19のローカルデコード部22は、適応処理回路46に代えて、予測係数ROM81および予測回路82が設けられている他は、図10における場合と同様に構成されている。
予測係数ROM81は、あらかじめ学習(後述する)により求められたクラスごとの予測係数を記憶しており、クラス分類回路45が出力するクラス情報を受信し、そのクラス情報に対応するアドレスに記憶されている予測係数を読み出して、予測回路82に供給する。
予測回路82では、予測値計算用ブロック化回路42からの予測値計算用ブロックと、予測係数ROM81からの予測係数とを用いて、式(1)(具体的には、例えば、式(8))に示した線形1次式が計算され、これにより、元の画像の予測値が算出される。
従って、図19のクラス分類適応処理回路43によれば、元の画像を用いずに、その予測値が算出される。
次に、図20は、図19の予測係数ROM81に記憶されている予測係数を得るための学習を行う画像処理装置の構成例を示している。
学習用ブロック化回路91および教師用ブロック化回路92には、あらゆる画像に適用可能な予測係数を得るための(従って間引き処理が行われる前の)学習用の画像データ(学習用画像)が供給されるようになされている。
学習用ブロック化回路91は、入力される画像データから、例えば、4画素(例えば、図2のX1乃至X4)を抽出し、この4画素で構成されるブロックを、学習用ブロックとして、ADRC処理93および学習データメモリ96に供給する。
また、教師用ブロック化回路92では、入力される画像データから、例えば、1画素(図2のY1)で構成されるブロックが生成され、この1画素で構成されるブロックが、教師用ブロックとして、教師データメモリ98に供給される。
なお、学習用ブロック化回路91において、所定の数の画素で構成される学習用ブロックが生成されるとき、教師用ブロック化回路92では、対応する画素の教師用ブロックが生成されるようになされている。
ADRC処理回路93は、学習用ブロックを構成する4画素でなるブロックに対して、図19のADRC処理回路44における場合と同様に、1ビットのADRC処理を施す。ADRC処理の施された、4画素のブロックは、クラス分類回路94に供給される。クラス分類回路94では、ADRC処理回路93からのブロックがクラス分類され、それにより得られるクラス情報が、スイッチ95の端子aを介して、学習データメモリ96および教師データメモリ98に供給される。
学習データメモリ96または教師データメモリ98では、そこに供給されるクラス情報に対応するアドレスに、学習用ブロック化回路91からの学習用ブロックまたは教師用ブロック化回路92からの教師用ブロックが、それぞれ記憶される。
従って、学習データメモリ96において、4画素(図2のX1乃至X4)でなるブロックが学習用ブロックとして、あるアドレスに記憶されたとすると、教師データメモリ98においては、そのアドレスと同一のアドレスに、それに対応する1画素(図2のY1)のブロックが、教師用ブロックとして記憶される。
以下、同様の処理が、あらかじめ用意されたすべての学習用の画像について繰り返され、これにより、学習用ブロックと、図19のローカルデコード部22において、その学習用ブロックを構成する4画素と同一の位置関係を有する4個の補正データで構成される予測値計算用ブロックを用いて予測値が求められる1個の画素で構成される教師用ブロックとが、学習用データメモリ96と、教師用データメモリ98とにおいて、同一のアドレスに記憶される。
なお、学習用データメモリ96と教師用データメモリ98においては、同一アドレスに複数の情報を記憶することができるようになされており、これにより、同一アドレスには、複数の学習用ブロックと教師用ブロックを記憶することができるようになされている。
学習用画像すべてについての学習用ブロックと教師用ブロックとが、学習データメモリ96と教師データメモリ98に記憶されると、端子aを選択していたスイッチ95が、端子bに切り替わり、これにより、カウンタ97の出力が、アドレスとして、学習データメモリ96および教師データメモリ98に供給される。カウンタ97は、所定のクロックをカウントし、そのカウント値を出力しており、学習データメモリ96または教師データメモリ98では、そのカウント値に対応するアドレスに記憶された学習用ブロックまたは教師用ブロックが読み出され、演算回路99に供給される。
従って、演算回路99には、カウンタ97のカウント値に対応するクラスの学習用ブロックのセットと、教師用ブロックのセットとが供給される。
演算回路99は、あるクラスについての学習用ブロックのセットと、教師用ブロックのセットとを受信すると、それらを用いて、最小自乗法により、誤差を最小とする予測係数を算出する。
即ち、例えば、いま、学習用ブロックを構成する画素の画素値を、x1,x2,x3,・・・とし、求めるべき予測係数をw1,w2,w3,・・・とするとき、これらの線形1次結合により、教師用ブロックを構成する、ある画素の画素値yを求めるには、予測係数w1,w2,w3,・・・は、次式を満たす必要がある。
y=w1x1+w2x2+w3x3+・・・
そこで、演算回路99では、同一クラスの学習用ブロックと、対応する教師用ブロックとから、真値yに対する、予測値w1x1+w2x2+w3x3+・・・の自乗誤差を最小とする予測係数w1,w2,w3,・・・が、上述した式(7)に示す正規方程式をたてて解くことにより求められる。
演算回路99において求められた、クラスごとの予測係数は、メモリ100に供給される。メモリ100には、演算回路99からの予測係数の他、カウンタ97からカウント値が供給されており、これにより、メモリ100においては、演算回路99からの予測係数が、カウンタ97からのカウント値に対応するアドレスに記憶される。
以上のようにして、メモリ100には、各クラスに対応するアドレスに、そのクラスのブロックの画素を予測するのに最適な予測係数が記憶される。
図19の予測係数ROM81には、以上のようにしてメモリ100に記憶された予測係数が記憶されている。
なお、予測係数ROM81には、各クラスに対応するアドレスに、予測係数を記憶させるのではなく、教師用ブロックを構成する画素値の平均値などを記憶させるようにすることが可能である。この場合、クラス情報が与えられると、そのクラスに対応する画素値が出力されることになり、図19のローカルデコード部22において、予測値計算用ブロック化回路42および予測回路82を設けずに済むようになる。
また、図19に示したようにローカルデコード部22を構成する場合においては、図18に示した受信装置4は、受信機/再生装置71の後段を、図19のクラス分類適応処理回路43と同様に構成するようにすれば良い。
なお、本実施例においては、誤差情報として、誤差の自乗和を用いるようにしたが、誤差情報としては、その他、例えば、誤差の絶対値和や、その3乗以上したものの和などを用いるようにすることが可能である。いずれを誤差情報として用いるかは、例えば、その収束性などに基づいて決定するようにすることが可能である。
また、本実施例では、誤差情報が、所定の閾値ε以下になるまで、圧縮データの補正を繰り返し行うようにしたが、圧縮データの補正の回数には、上限を設けるようにすることも可能である。即ち、例えば、リアルタイムで画像の伝送を行う場合などにおいては、1フレームについての処理が、所定の期間内に終了することが必要であるが、誤差情報は、そのような所定の期間内に収束するとは限らない。そこで、補正の回数に上限を設けることにより、所定の期間内に、誤差情報が閾値ε以下に収束しないときは、そのフレームについての処理を終了し(そのときにおける補正データを、符号化結果とし)、次のフレームについての処理を開始するようにすることが可能である。
さらに、本実施例においては、1フレームの画像からブロックを構成するようにしたが、ブロックは、その他、例えば、時系列に連続する複数フレームにおける、同一位置の画素から構成するようにすることも可能である。
また、本実施例では、圧縮部21において、画像を、単純に間引き、即ち、2画素毎に1個の画素を抽出し、これを圧縮データとするようにしたが、圧縮部21には、その他、例えば、ブロックを構成する複数個の画素の平均値などを求めさせ、その平均値を、そのブロックにおける中心画素の画素値とすることにより、その画素数を少なくし(間引き)、これを圧縮データとするようにすることも可能である。
図21は、この場合における送信装置1の構成例を示している。
ブロック化回路111には、符号化すべき画像データが入力されるようになされており、ブロック化回路111は、画像データを、その性質に応じて所定のクラスに分類するための単位であるクラス分類用ブロックにブロック化し、ADRC処理回路112および遅延回路115に供給するようになされている。
ADRC処理回路112は、ブロック化回路111からのブロック(クラス分類用ブロック)に対してADRC処理を施し、その結果得られるADRCコードで構成されるブロックを、クラス分類回路113に供給するようになされている。
このADRC処理より、クラス分類用ブロックを構成する画素のビット数が低減されるようになされている。
クラス分類回路113は、ADRC処理回路112からのブロックを、その性質に応じて所定のクラスに分類するクラス分類処理を行い、そのブロックがいずれのクラスに属するかを、クラス情報として、マッピング係数メモリ114に供給するようになされている。
マッピング係数メモリ114は、後述するような学習(マッピング係数学習)により得られるマッピング係数を、クラス情報ごとに記憶しており、クラス分類回路113から供給されるクラス情報をアドレスとして、そのアドレスに記憶されているマッピング係数を読み出し、演算回路116に供給するようになされている。
遅延回路115は、ブロック化回路111から供給されるブロックを、そのブロックのクラス情報に対応するマッピング係数が、マッピング係数メモリ114から読み出されるまで遅延し、演算回路116に供給するようになされている。
演算回路116は、遅延回路115から供給されるブロックを構成する画素の画素値と、マッピング係数メモリ114から供給される、そのブロックのクラスに対応するマッピング係数とを用いて所定の演算を行うことにより、画像を、その画素数を間引いた(少なくした)符号化した符号化データを算出するようになされている。即ち、演算回路116は、ブロック化回路111が出力するブロックを構成する各画素の画素値(元の画像の画素値)をy1,y2,・・・とするとともに、マッピング係数メモリ114が出力する、そのブロックのクラスに対応するマッピング係数をk1,k2,・・・とするとき、それらを引数とする所定の関数値f(y1,y2,・・・,k1,k2,・・・)を演算し、その関数値f(y1,y2,・・・,k1,k2,・・・)を、ブロック化回路111が出力するブロック(クラス分類用ブロック)を構成する画素のうちの、例えば中心の画素の画素値として出力するようになされている。
従って、ブロック化回路111が出力するクラス分類用ブロックを構成する画素数をN画素とすると、演算回路116は、画像データを1/Nに間引き、これを、符号化データとして出力するようになされている。
なお、演算回路116が出力する符号化データは、N画素で構成されるブロックの中心の1個の画素を選択して出力するような、いわば単純な間引き処理により得られるものではなく、上述したように、そのブロックを構成するN画素により規定される関数値f(y1,y2,・・・,k1,k2,・・・)であるが、この関数値f(y1,y2,・・・,k1,k2,・・・)は、見方を変えれば、単純な間引き処理により得られる、ブロックの中心の画素の画素値を、その周辺の画素値に基づいて補正したものと考えることができる。そこで、マッピング係数と、ブロックを構成する画素との演算の結果得られるデータである符号化データを、以下、適宜、補正データともいう。
また、演算回路116における演算処理は、ブロック化回路111が出力するクラス分類用ブロックを構成する各画素の画素値を、関数値f(y1,y2,・・・,k1,k2,・・・)にマッピング(写像)する処理とも考えることができる。そこで、そのような処理に用いられる係数k1,k2,・・・をマッピング係数と呼んでいる。
送信機/記録装置117は、演算回路116から符号化データとして供給される補正データを、記録媒体2に記録し、または伝送路3を介して伝送するようになされている。
次に、図22のフローチャートを参照して、その動作について説明する。
ブロック化回路111には、例えば、1フレーム(フィールド)単位で画像データが供給されるようになされており、ブロック化回路111では、ステップS61において、1フレームの画像が、クラス分類用ブロックにブロック化される。即ち、ブロック化回路111は、例えば、5画素でなるクラス分類用ブロックに分割し、ADRC処理回路112および遅延回路115に供給する。
なお、この場合、クラス分類用ブロックは、5画素でなる十文字形状のブロックで構成されることとなるが、クラス分類用ブロックの形状は、その他、例えば、長方形や、正方形、その他の任意な形とすることが可能である。また、クラス分類用ブロックを構成する画素数も、5画素に限定されるものではない。さらに、クラス分類用ブロックは、隣接する画素どうしで構成するのではなく、離れた画素どうしで構成するようにすることも可能である。但し、その形状および画素数は、後述する学習(マッピング係数学習)時における場合のものと一致している必要がある。
ADRC処理回路112は、ブロック化回路111からクラス分類用ブロックを受信すると、ステップS62において、そのブロックのうちの中心の画素(図2のY1)を除く4個の画素(図2のX1乃至X4)に対して、例えば、1ビットのADRC処理を施し、これにより、R,G,Bの各画素が、それぞれ1ビットで表現される画素で構成されるブロックとする。ADRC処理の施されたクラス分類用ブロックは、クラス分類回路113に供給される。
クラス分類回路113では、ステップS63において、ADRC処理回路112からのクラス分類用ブロックがクラス分類され、その結果得られるクラス情報が、マッピング係数メモリ114に、アドレスとして供給される。これにより、マッピング係数メモリ114からは、クラス分類回路113より供給されたクラス情報に対応するマッピング係数が読み出され、演算回路116に供給される。
一方、遅延回路115では、ブロック化回路111からのクラス分類用ブロックの5画素データが遅延され、そのブロックのクラス情報に対応するマッピング係数が、マッピング係数メモリ114から読み出されるのを待って、演算器116に供給される。演算器116では、ステップS64において、遅延回路115からのクラス分類用ブロックを構成する各画素の画素値と、マッピング係数メモリ114からのマッピング係数を用いて、上述した関数値f(・)(この関数fのかっこ内の・は、画素値X1,X2,・・・と、マッピング係数k1,k2,・・・の集合を表すものとする)が演算されることにより、クラス分類用ブロックを構成する中心の画素(中心画素)の画素値を補正した補正データが算出される。いまの場合、図2の画素データX1乃至X4と画素データY1(X5)とから、画素データY1(X5)の位置の1個の画素データが生成される。また、このブロック化は、画素データに対して重複して行われ、最終的に、1/2の画素データが間引かれる。そして、この処理でも、上述したように、Rの成分(Gの成分もしくはBの成分)を生成するのに、Rの成分(Gの成分もしくはBの成分)だけでなく、Gの成分とBの成分(Rの成分とBの成分、またはRの成分とGの成分)が利用される。この補正データは、画像を符号化した符号化データとして、送信機/記録装置117に供給される。
送信機/記録装置117では、ステップS65において、演算回路116からの符号化データが、記録媒体2に記録され、または伝送路3を介して伝送される。
そして、ステップS66に進み、1フレーム分の画像データについての処理が終了したかどうかが判定される。ステップS66において、1フレーム分の画像データについての処理が、まだ終了していないと判定された場合、ステップS62に戻り、次のクラス分類用ブロックを対象に、ステップS62以下の処理が繰り返される。また、ステップS66において、1フレーム分の画像データについての処理が終了したと判定された場合、ステップS61に戻り、次のフレームを対象に、ステップS61以下の処理が繰り返される。
次に、図23は、図21のマッピング係数メモリ114に記憶されているマッピング係数を算出するための学習(マッピング係数学習)処理を行う画像処理装置の構成例を示している。
メモリ121には、学習に適したディジタル画像データ(以下、適宜、学習用画像という)が1フレーム以上記憶されている。ブロック化回路122は、メモリ121に記憶されている画像データを読み出し、図21のブロック化回路111から出力されるクラス分類用ブロックと同一のブロックを構成して、ADRC処理回路123および演算回路126に供給するようになされている。
ADRC処理回路123またはクラス分類回路124は、図21のADRC処理回路112またはクラス分類回路113における場合とそれぞれ同様の処理を行うようになされている。従って、クラス分類回路124からは、ブロック化回路122が出力するブロックのクラス情報が出力されるようになされている。そして、このクラス情報は、マッピング係数メモリ131に、アドレスとして供給されるようになされている。
演算回路126は、ブロック化回路122から供給されるブロックを構成する画素と、マッピング係数メモリ131から供給されるマッピング係数とを用いて、図21の演算回路116における場合と同一の演算を行い、その結果得られる補正データ(関数値f(・))を、ローカルデコード部127に供給するようになされている。
ローカルデコード部127は、演算回路126から供給される補正データに基づいて、元の学習用画像の予測値(ブロック化回路122が出力するブロックを構成する画素の画素値の予測値)を予測し(算出し)、誤差算出部128に供給するようになされている。誤差算出部128は、ローカルデコード部127から供給される予測値に対応する学習用画像の画素値(真値)をメモリ121から読み出し、その学習用画像の画素値に対する、予測値の予測誤差を算出(検出)し、その予測誤差を、誤差情報として、判定部129に供給するようになされている。
判定部129は、誤差算出部128からの誤差情報と、所定の閾値ε1とを比較し、その比較結果に対応して、マッピング係数設定回路130を制御するようになされている。マッピング係数設定回路130は、判定部129の制御に従って、クラス分類回路124におけるクラス分類の結果得られるクラス数と同一の数のマッピング係数のセットを設定(変更)し、マッピング係数メモリ131に供給するようになされている。
マッピング係数メモリ131は、マッピング係数設定回路130から供給されるマッピング係数を一時記憶するようになされている。なお、マッピング係数メモリ131は、クラス分類回路124においてクラス分類されるクラスの数だけのマッピング係数(マッピング係数のセット)を記憶することのできる記憶領域を有しており、各記憶領域においては、マッピング係数設定回路130から、新たなマッピング係数が供給されると、既に記憶しているマッピング係数に代えて、その新たなマッピング係数が記憶されるようになされている。
また、マッピング係数メモリ131は、クラス分類回路124から供給されるクラス情報に対応するアドレスに記憶されたマッピング係数を読み出し、演算回路126に供給するようにもなされている。
次に、図24のフローチャートを参照して、その動作について説明する。
まず最初に、マッピング係数設定回路130は、ステップS71においてマッピング係数の初期値のセットを、クラス分類回路124においてクラス分類されるクラスの数だけ設定し、マッピング係数メモリ131に供給する。マッピング係数メモリ131では、マッピング係数設定回路130からのマッピング係数(初期値)が、対応するクラスのアドレスに記憶される。
そして、ブロック化回路122は、ステップS72において、メモリ121に記憶されている学習用画像すべてを、図21のブロック化回路111における場合と同様に、5画素(図2のX1乃至X4,Y1)のブロックにブロック化する。さらに、ブロック化回路121は、そのブロックを、メモリ121から読み出し、ADRC処理回路123および演算回路126に順次供給する。
ADRC処理回路123では、ステップS73において、ブロック化回路122からのブロックのうちの4画素(図2のX1乃至X4)に対して、図21のADRC処理回路112における場合と同様に、1ビットのADRC処理が施され、クラス分類回路124に供給される。クラス分類回路124では、ステップS74において、ADRC処理回路123から供給されたブロックのクラスが決定され、そのクラス情報が、アドレスとして、マッピング係数メモリ131に供給される。これにより、ステップS75において、マッピング係数メモリ131の、クラス分類回路124から供給されるクラス情報に対応するアドレスから、マッピング係数が読み出され、演算回路126に供給される。
演算回路126は、ブロック化回路122からのブロックの5画素(図2のX1乃至X4,Y1)を受信するとともに、マッピング係数メモリ131から、そのブロックのクラスに対応するマッピング係数を受信すると、ステップS76において、そのマッピング係数と、ブロック化回路122から供給されるブロックを構成する5画素の画素値とを用いて、上述の関数値f(・)を演算する。この演算結果は、ブロック化回路122から供給されるブロックの中心画素の画素値を補正した補正データとして、ローカルデコード部127に供給される。
即ち、例えば、上述の図2において、X1乃至X4,Y1のブロックが、ブロック化回路122から出力されたものとすると、演算回路126では、その画素値を補正した補正データが求められ、ローカルデコード部27に出力される。
但し、演算回路26では、ブロック化回路122におけるブロック化が、画素データに対して重複して行われ、学習用画像を構成する画素数が、1/2に間引かれ、ローカルデコード部27に供給される。
図24に戻り、ステップS76で補正データが算出された後は、ステップS77に進み、メモリ121に記憶されたすべての学習用画像についての補正データが求められたかどうかが判定される。ステップS77において、すべての学習用画像についての補正データが、まだ求められていないと判定された場合、ステップS73に戻り、すべての学習用画像についての補正データが求められるまで、ステップS73乃至S77の処理を繰り返す。
また、ステップS77において、すべての学習用画像についての補正データが求められたと判定された場合、即ち、メモリ121に記憶されたすべての学習用画像を、1/2に間引いた間引き画像が得られた場合(但し、この間引き画像は、学習用画像を、単純に1/2に間引いたものではなく、マッピング係数との演算により画素値が求められたものである)、ステップS78に進み、ローカルデコード部127において、その間引き画像がローカルデコードされることにより、元の学習用画像の予測値が算出される。この予測値は、誤差算出部128に供給される。
ここで、このローカルデコード部127において得られる予測値で構成される画像(但し、後述するように、誤差算出部128から出力される誤差情報が閾値ε1より小さくなったときにおけるもの)は、受信装置4側において得られる復号画像と同一のものである。
誤差算出部128では、ステップS79において、メモリ121から学習用画像が読み出され、その学習用画像に対する、ローカルデコード部127から供給される予測値の予測誤差が算出される。即ち、学習用画像の画素値をYijと表すとともに、ローカルデコード部127から出力される、その予測値をE[Yij]と表すとき、誤差算出部128では、次式で示される誤差分散(誤差の自乗和)Qが算出され、これが、誤差情報として、判定部129に供給される。
Q=Σ(Yij−E[Yij])2
但し、上式において、Σは、学習用画像の画素すべてについてのサメーションを表す。
判定部129は、誤差算出部128から誤差情報を受信すると、その誤差情報と所定の閾値ε1とを比較し、ステップS80において、その大小関係を判定する。ステップS80において、誤差情報が閾値ε1以上であると判定された場合、即ち、ローカルデコード部127において得られる予測値で構成される画像が、元の学習用画像と同一であるとは認められない場合、判定部129は、マッピング係数設定回路130に制御信号を出力する。マッピング係数設定回路130は、ステップS81において、判定部129からの制御信号に従い、マッピング係数を変更し、その変更後のマッピング係数を、マッピング係数メモリ131に新たに記憶させる。
そして、ステップS73に戻り、マッピング係数メモリ131に記憶された、変更後のマッピング係数を用いて、再び、ステップS73以下の処理が繰り返される。
ここで、マッピング係数設定回路130における、マッピング係数の変更は、ランダムに行っても良いし、また、今回の誤差情報が、前回の誤差情報より小さくなった場合には、前回と同様の傾向で変化させ、今回の誤差情報が、前回の誤差情報より大きくなった場合には、前回と逆の傾向で変化させるようにすることもできる。
さらに、マッピング係数の変更は、すべてのクラスについて行うようにすることもできるし、その一部のクラスについてだけ行うようにすることもできる。一部のクラスについてのマッピング係数だけの変更を行う場合においては、例えば、誤差情報に対する影響の強いクラスを検出させ、そのようなクラスについてのマッピング係数だけを変更するようにすることができる。誤差情報に対する影響の強いクラスは、例えば、次のようにして検出することができる。即ち、まず最初に、マッピング係数の初期値を用いて処理を行うことにより、その誤差情報を得る。そして、マッピング係数を、1クラスごとに同一の量だけ変化させ、その結果得られる誤差情報を、初期値を用いた場合に得られた誤差情報と比較し、その差が、所定値以上となるクラスを、誤差情報に対する影響の強いクラスとして検出すれば良い。
また、マッピング係数が、上述したk1,k2,・・・のように複数で1セットとされている場合には、その中の誤差情報に対する影響の強いものだけを変更させるようにすることもできる。
さらに、上述の場合においては、マッピング係数を、クラスごとに設定するようにしたが、マッピング係数は、その他、例えば、ブロックごとに独立して設定したり、また、近接するブロック単位などで設定したりするようにすることが可能である。
但し、マッピング係数を、例えば、ブロックごとに独立して設定するようにした場合などにおいては、ある1つのクラスに対して、複数セットのマッピング係数が得られることがある(この逆に、マッピング係数が、1セットも得られないクラスが生じることもある)。マッピング係数は、最終的には、クラスごとに決める必要があるため、上述のように、あるクラスに対して、複数セットのマッピング係数が得られた場合には、複数セットのマッピング係数を対象に、何らかの処理を行うことで、1セットのマッピング係数を決める必要がある。
一方、ステップS80において、誤差情報が閾値ε1より小さいと判定された場合、即ち、ローカルデコード部127において得られる予測値で構成される画像が、元の学習用画像と同一であると認められる場合、処理を終了する。
この時点で、マッピング係数メモリ131に記憶されている、クラスごとのマッピング係数が、もとの画像と同一と認められる復号画像(予測値)を復元することができる補正データを得るために最適なものとして、図21のマッピング係数メモリ114にセットされている。
従って、このようなマッピング係数を用いて補正データを生成することで、受信装置4側においては、元の画像とほぼ同一の画像を得ることが可能となる。
なお、図23の実施例においては、上述したように、ブロック化回路122において、画像が4画素にブロック化され、また、ADRC処理回路123において、1ビットのADRC処理が行われるので、クラス分類回路124によるクラス分類により得られるクラス数は4096であり、従って、4096セットのマッピング係数が得られる。
次に、図25は、図23のローカルデコード部127の構成例を示している。
演算回路126からの補正データは、クラス分類用ブロック化回路141および予測値計算用ブロック化回路142に供給されるようになされている。クラス分類用ブロック化回路141は、補正データを、その性質に応じて所定のクラスに分類するための単位であるクラス分類用ブロックにブロック化するようになされている。
なお、図25のクラス分類用ブロック化回路141において得られるクラス分類用ブロックは、予測値を求めるブロックのクラスを決定するために構成されるものであり、この点で、補正データを算出するブロックのクラスを決定するために、図21のブロック化回路111で生成されるものとは異なる。
予測値計算用ブロック化回路142は、補正データを、元の画像(ここでは、学習用画像)の予測値を計算するための単位である予測値計算用ブロックにブロック化するようになされている。
予測値計算用ブロック化回路142において得られた予測値計算用ブロックは、予測回路146に供給されるようになされている。
なお、予測値計算用ブロックについても、クラス分類用ブロックにおける場合と同様に、その画素数および形状は、上述したものに限定されるものではない。但し、ローカルデコード部127において、予測値計算用ブロックを構成する画素数は、クラス分類用ブロックを構成する画素数よりも多くするのが望ましい。
また、上述のようなブロック化を行う場合において(ブロック化以外の処理についても同様)、画像の画枠付近では、対応する画素が存在しないことがあるが、この場合には、例えば、画枠を構成する画素と同一の画素が、その外側に存在するものとして処理を行う。
ADRC処理回路143は、クラス分類用ブロック化回路141が出力するブロック(クラス分類用ブロック)を対象に、例えば、1ビットのADRC処理を施し、クラス分類回路144に供給するようになされている。クラス分類回路144は、ADRC処理回路143からのブロックをクラス分類し、その分類結果としてのクラス情報を、予測係数ROM145に供給するようになされている。予測係数ROM145は、予測係数を記憶しており、クラス分類回路144からクラス情報を受信すると、そのクラス情報に対応するアドレスに記憶されている予測係数を読み出し、予測回路146に供給するようになされている。なお、予測係数ROM145に記憶されている予測係数は、後述する学習(予測係数学習)により得られたものである。
予測回路146は、予測値計算用ブロック化回路142からの予測値計算用ブロックと、予測係数ROM145からの予測係数とを用いて、元の画像(学習用画像)の予測値を算出(予測)するようになされている。
次に、図26のフローチャートを参照して、その動作について説明する。
ローカルデコード部127においては、まず最初に、ステップS91において、演算回路126からの補正データが順次受信されてブロック化される。即ち、クラス分類用ブロック化回路141において、補正データが、4画素(図2のX1乃至X4)のクラス分類用ブロックにブロック化され、ADRC処理回路143に供給されるとともに、予測値計算用ブロック化回路142において、補正データが4画素の予測値計算用ブロックにブロック化され、予測回路146に供給される。
なお、クラス分類用ブロック化回路141と予測値計算用ブロック化回路142では、対応するクラス分類用ブロックと予測値計算用ブロックが生成される。
ADRC処理回路143は、クラス分類用ブロックを受信すると、ステップS92において、そのクラス分類用ブロックに対して、例えば、1ビットのADRC(1ビットで再量子化を行うADRC)処理を施し、これにより、補正データを、1ビットに変換(符号化)して、クラス分類回路144に出力する。クラス分類回路144は、ステップS93において、ADRC処理が施されたクラス分類用ブロックに対して、クラス分類処理を施し、そのクラス分類用ブロックが属するクラスを判定する。このクラスの判定結果は、クラス情報として、予測係数ROM145に供給される。
なお、図25の実施例においては、R,G,Bの各成分がそれぞれ1ビットのADRC処理が施された4画素で構成されるクラス分類用ブロックに対して、クラス分類処理が施されるので、各クラス分類用ブロックは、4096(=212)のクラスのうちのいずれかに分類されることになる。
そして、ステップS94に進み、予測係数ROM145の、クラス分類回路144からのクラス情報に対応するアドレスから予測係数が読み出され、ステップS95において、予測回路146は、その予測係数と、予測値計算用ブロック化回路142からの予測値計算用ブロックを構成する4個の画素値とを用い、例えば、次のような線形1次式に従って、元の画像の画素値yの予測値E[y]を算出する。
E[y]=w1x1+w2x2+・・・
但し、w1,w2,・・・は予測係数を表し、x1,x2,・・・は予測値計算用ブロックを構成する画素の画素値(補正データ)を表す。但し、x1,x2,・・・は、それぞれR,G,Bの成分を有し、w1,w2,・・・も、R,G,B用の係数で構成される。
ここで、図25の実施例においては、上述したように、予測値計算用ブロックを構成する4画素から、1画素の予測値が算出されるようになされている。
即ち、例えば、いま、図2に示した補正データX1乃至X4でなるクラス分類用ブロックについてのクラス情報Cが、クラス分類回路144から出力され、また、予測値計算用ブロックとして、X1乃至X4でなる予測値計算用ブロックが、予測値計算用ブロック化回路142から出力されたものとする。
さらに、予測係数ROM145には、クラス情報Cに対応するアドレスに、予測係数のセットとして、w1(R)乃至w12(R)、w1(G)乃至w12(G)、w1(B)乃至w12(B)が記憶されているものとすると、これにより、上述した場合と同様に、例えば各画素の各成分YRi,YGi,YBiの予測値E[YRi],E[YGi],E[YBi]が算出される。
ステップS94において、以上のようにして予測値が求められると、ステップS91に戻り、以下、ステップS91乃至S94の処理が繰り返され、これにより、4画素単位で予測値が求められていく。
図25の予測係数ROM145に記憶されている予測係数を得るための学習(予測係数学習)を行う画像処理装置は、図20に示した場合と同様の構成となる。そこで、この説明は省略する。
次に、図27は、図21のマッピング係数メモリ114に記憶されているマッピング係数を算出するための学習(マッピング係数学習)処理を行う画像処理装置の他の構成例を示している。
なお、図23の画像処理装置によれば、関数fが、例えば、線形1次式で表される場合の他、非線形な式や、2次以上の式で表される場合も、最適な予測係数を求めることができるが、図27の画像処理装置では、関数fが、線形1次式で表される場合にのみ、最適な予測係数を求めることができるようになされている。
即ち、図27の画像処理装置は、図21において、ブロック化回路111が出力するブロックを構成する4画素(図2のX1,X2,X3,X4)の画素値をy1,y2,y3,y4(それぞれが、R,G,B成分を有する)とするとともに、マッピング係数メモリ114が出力するマッピング係数をk1,k2,k3,k4(それぞれが、R,G,B成分を有する)とする場合において、演算回路116が、次式に従って関数値f(y1,y2,・・・,k1,k2,・・・)を演算して補正データを求めるようになされているときに用いることができる。
f(・)=k1y1+k2y2+k3y3+k4y4
最適補正データ算出部170には、学習に適した学習用画像が、例えば、1フレーム単位などで供給されるようになされている。最適補正データ算出部170は、圧縮部171、補正部172、ローカルデコード部173、誤差算出部174、および判定部175で構成され、そこに入力される学習用画像から、その画素数を少なくして圧縮した画像であって、元の画像を予測するのに最適な画像を構成する画素値(以下、適宜、最適補正データという)を算出し、ラッチ回路176に供給するようになされている。
即ち、最適補正データ算出部170に供給された学習用画像は、圧縮部171および誤差算出部174に供給されるようになされている。圧縮部171は、図21の演算回路116が画素を間引く割合と同一の割合で、学習用画像を単純に間引き、即ち、本実施例においては、学習用画像を1/2に単純に間引き、これにより学習用画像を圧縮して補正部172に供給するようになされている。
補正部172は、圧縮部171から供給される、単純な間引きが行われて圧縮されたデータ(以下、適宜、圧縮データという)を、判定部175からの制御に従って補正するようになされている。補正部172における補正の結果得られるデータ(このデータも、図21の演算回路116の出力と同様に、5画素のブロックの中心画素の画素値を補正したものであるので、以下、適宜、補正データという)は、ローカルデコード部173に供給するようになされている。
ローカルデコード部173は、図23のローカルデコード部127における場合と同様にして、補正部172からの補正データに基づいて、元の画像(学習用画像)を予測し、その予測値を、誤差算出部174に供給するようになされている。
誤差算出部174は、図23の誤差算出部128における場合と同様にして、そこに入力される、元の画像データに対する、ローカルデコード部173からの予測値の予測誤差を算出するようになされている。この予測誤差は、誤差情報として、判定部175に供給されるようになされている。
判定部175は、誤差算出部174からの誤差情報に基づいて、補正部172が出力した補正データを、元の画像の圧縮結果とすることの適正さを判定するようになされている。そして、判定部175は、補正部172が出力した補正データを、元の画像の圧縮結果とすることが適正でないと判定した場合には、補正部172を制御し、さらに、圧縮データを補正させ、その結果得られる新たな補正データを出力させるようになされている。また、判定部175は、補正部172が出力した補正データを、元の画像の圧縮結果とすることが適正であると判定した場合には、補正部172から供給された補正データを、最適補正データとして、ラッチ回路176に供給するようになされている。
ラッチ回路176は、メモリ176Aを内蔵しており、そのメモリ176Aに、補正部172から供給される最適補正データを記憶させるようになされている。さらに、ラッチ回路176は、メモリ176Aに記憶された最適補正データのうち、ブロック化回路177のメモリ177Aから読み出されるブロックの中心画素に対応するものを読み出し、メモリ180に供給するようになされている。なお、ラッチ回路176は、メモリ176Aに、1フレーム分の補正データが記憶されると、その旨を示す制御信号を、ブロック化回路177に出力するようになされている。
ブロック化回路177には、最適補正データ算出部170と同様に、学習用画像が1フレーム単位で供給されるようになされている。ブロック化回路177は、メモリ177Aを内蔵しており、そのメモリ177Aに、そこに供給される学習用画像を記憶させるようになされている。また、ブロック化回路177は、ラッチ回路176から制御信号を受信すると、メモリ177Aに記憶された学習用画像を、図21のブロック化回路111における場合と同様に、5画素で構成されるブロックに分割し、そのブロックを順次読み出して、ADRC処理回路178およびメモリ180に供給するようになされている。
なお、ブロック化回路177は、その内蔵するメモリ177Aからブロックを読み出すときに、そのブロックの位置を示す制御信号を、ラッチ回路176に供給するようになされている。ラッチ回路176では、この制御信号に基づいて、メモリ177Aから読み出される5画素のブロックが認識され、上述したように、そのブロックの中心画素に対応する最適補正データが、メモリ176Aから読み出されるようになされている。即ち、これにより、メモリ180に対しては、ある5画素のブロックと、そのブロックに対応する最適補正データとが同時に供給されるようになされている。
ADRC処理回路178またはクラス分類回路179は、図21のADRC処理回路112またはクラス分類回路113とそれぞれ同様に構成されている。そして、クラス分類回路179が出力する、ブロック化回路177からのブロックについてのクラス情報は、メモリ180に対して、アドレスとして供給されるようになされている。
メモリ180は、クラス分類回路179から供給されるクラス情報に対応するアドレスに、ラッチ回路176から供給される最適補正データと、ブロック化回路177から供給されるブロックとを対応付けて記憶するようになされている。なお、メモリ180は、1つのアドレスに複数の情報を記憶することができるようになされており、これにより、あるクラス情報に対応する最適補正データおよびブロックを、複数セット記憶することができるようになされている。
演算回路181は、メモリ180に記憶された、学習用画像の5画素のブロックを構成する5画素y1,y2,y3,y4,y5と、そのブロックに対応付けられている最適補正データy’とを読み出し、これらに最小自乗法を適用することで、クラスごとに、マッピング係数k1乃至k5を求め、メモリ182に供給するようになされている。メモリ182は、演算回路181から供給されるクラスごとのマッピング係数k1乃至k5を、そのクラスに対応したアドレスに記憶するようになされている。
次に、図28のフローチャートを参照して、その動作について説明する。
学習用画像が入力されると、その学習用画像は、ブロック化回路177のメモリ177Aに記憶されるとともに、最適補正データ算出部170に供給される。最適補正データ算出部170は、学習用画像を受信すると、ステップS101において、その学習用画像についての最適補正データを算出する。
このステップS101の処理は、図7のフローチャートの処理と同様である。すなわち、まず、圧縮部171が、ステップS1において、学習用画像を、1/2に間引くことにより圧縮データを生成し、補正部172を介して、即ち、最初は、補正を行わずに、ローカルデコード部173に出力する。ローカルデコード部173では、ステップS2において、補正部172からの補正データ(最初は、上述したように、画像データを、単純に間引いた圧縮データそのもの)に基づいて、元の画像の予測値が算出される(ローカルデコードが行われる)。この予測値は、誤差算出部174に供給される。
誤差算出部174は、ローカルデコード部173から、元の画像の予測値を受信すると、ステップS3において、元の画像データに対する、ローカルデコード部173からの予測値の予測誤差を算出し、誤差情報として、判定部175に供給する。判定部175は、誤差算出部174から誤差情報を受信すると、ステップS4において、その誤差情報に基づいて、補正部172が出力した補正データを、元の画像の圧縮結果とすることの適正さを判定する。
即ち、ステップS4においては、誤差情報が所定の閾値ε以下であるかどうかが判定される。ステップS4において、誤差情報が所定の閾値ε以下でないと判定された場合、補正部172が出力した補正データを、元の画像の圧縮結果とするのは適正でないと認識され、ステップS5に進み、判定部175は、補正部172を制御し、これにより、圧縮部171から出力された圧縮データを補正させる。補正部172は、判定部175の制御に従って、補正量(補正値△)を変えて、圧縮データを補正し、その結果得られる補正データを、ローカルデコード部173に出力する。そして、ステップS2に戻り、以下、同様の処理が繰り返される。
なお、圧縮データの補正は、例えば、上述の図23で説明した、マッピング係数の変更と同様にして行うことが可能である。
一方、ステップS4において、誤差情報が所定の閾値ε以下であると判定された場合、補正部172が出力した補正データを、元の画像の圧縮結果とするのは適正であると認識され、判定部175は、所定の閾値ε以下の誤差情報が得られたときの補正データを、最適補正データとして、補正部172からラッチ回路176に出力させ、その内蔵するメモリ176Aに記憶させて、リターンする。
以上のようにして、誤差情報が所定の閾値ε以下となったときにおける、圧縮データを補正した補正データが、最適補正データとして、メモリ176Aに記憶させる。なお、この最適補正データは、誤差情報を所定の閾値ε以下とするものであるから、これを用いて、予測値を算出することにより、元の画像(原画像)とほぼ同一の画像を得ることができる。
図28に戻り、ラッチ回路176は、そのメモリ176Aに、1フレーム分の最適補正データを記憶すると、制御信号を、ブロック化回路177に出力する。ブロック化回路177は、ラッチ回路176から制御信号を受信すると、ステップS102において、メモリ177Aに記憶された学習用画像を、5画素で構成されるブロックに分割する。そして、ブロック化回路177は、メモリ177Aに記憶された学習用画像のブロックを読み出して、ADRC処理回路178およびメモリ180に供給する。
また、同時に、ブロック化回路177は、メモリ177Aからブロックを読み出すときに、そのブロックの位置を示す制御信号を、ラッチ回路176に供給し、ラッチ回路176は、その制御信号に対応して、メモリ177Aから読み出された5画素のブロックを認識し、そのブロックの中心画素に対応する最適補正データを読み出して、メモリ180に供給する。
そして、ステップS103に進み、ADRC処理回路178において、ブロック化回路177からのブロックがADRC処理され、さらに、クラス分類回路179において、そのブロックがクラス分類される。このクラス分類結果は、アドレスとして、メモリ180に供給される。
メモリ180では、ステップS104において、クラス分類回路179から供給されるクラス情報に対応するアドレスに、ラッチ回路176から供給される最適補正データと、ブロック化回路177から供給されるブロック(学習データ)とが対応付けられて記憶される。
そして、ステップS105に進み、メモリ180に、1フレーム分のブロックおよび最適補正データが記憶されたかどうかが判定される。ステップS105において、メモリ180に、1フレーム分のブロックおよび最適補正データが、まだ記憶されていないと判定された場合、ブロック化回路177から次のブロックが読み出されるとともに、ラッチ回路176からそのブロックに対応する最適補正データが読み出され、ステップS103に戻り、以下、ステップS103以降の処理を繰り返す。
また、ステップS105において、メモリ180に、1フレーム分のブロックおよび最適補正データが記憶されたと判定された場合、ステップS106に進み、学習用画像すべてについて処理が終了したかどうかが判定される。ステップS106において、学習用画像すべてについての処理が、まだ終了していないと判定された場合、ステップS101に戻り、次の学習用画像について、ステップS101からの処理が繰り返される。
一方、ステップS106において、学習用画像すべてについての処理が終了したと判定された場合、ステップS107に進み、演算回路181は、メモリ180に記憶された最適補正データとブロックとを、クラスごとに読み出し、これらにより、式(7)に示したような正規方程式をたてる。さらに、演算回路181は、ステップS108において、その正規方程式を解くことで、誤差を最小にする、クラスごとのマッピング係数を算出する。このマッピング係数は、ステップS109において、メモリ12に供給されて記憶され、処理を終了する。
関数fが、線形1次式で表される場合においては、以上のようにしてメモリ182に記憶されたマッピング係数を、図21のマッピング係数メモリ114に記憶させ、これを用いて画像の符号化を行うことができる。
なお、クラスによっては、マッピング係数を求めることができるだけの数の正規方程式が得られない場合がある。このような場合は、図21の演算回路116において、ブロック化回路111から出力されるブロックを構成する5画素の、例えば平均値などが出力されるようなマッピング係数、即ち、k1乃至k5=1/5などが、デフォルトの値として設定される。
次に、図29は、図21の送信装置に対応する受信装置4の構成例を示している。
受信機/再生装置191においては、記録媒体2に記録された符号化データが再生され、または伝送路3を介して伝送されてくる符号化データが受信され、デコード部192に供給される。
デコード部192は、図25に示したローカルデコード部127におけるクラス分類用ブロック化回路141乃至予測回路146にそれぞれ対応するクラス分類用ブロック化回路193乃至予測回路198で構成されており、従って、デコード部192では、図25のローカルデコード部127における場合と同様にして、補正データから予測値が求められ、この予測値で構成される画像が復号画像として出力される。
補正データは、誤差情報を所定の閾値以下とするものであり、従って、受信装置4においては、元の画像とほぼ同一の画像を得ることができる。
なお、受信側においては、図29に示すような受信装置4でなくても、間引きされた画像を補間により復号する装置により、通常の補間を行うことで復号画像を得ることができる。但し、この場合に得られる復号画像は、画質(解像度)の劣化したものとなる。
以上においては、R,G,Bのコンポーネント成分を用いて画素データを表現するようにしたが、コンポーネント信号としては、この他、それぞれ次の式で表される輝度信号Y、色信号I、および色信号Qの組み合わせ、輝度信号Y、色差信号R−Y、および色差信号B−Yの組み合わせ、または、主に印刷の分野において用いられているC(シアン)、M(マゼンダ)、Y(イエロー)、さらに必要に応じて加えられるK(ブラック)の組み合わせを用いることができる。
I=0.60R−0.28G−0.32B
Q=0.21R−0.52G+0.31B
R−Y= 0.7R−0.59G−0.11B
B−Y=−0.3R−0.59G+0.89B
C=255−R
M=255−G
Y=255−B
但し、C,M,Rは、R,G,Bをそれぞれ8ビットとする加法混色で表現されている。
1 送信装置, 2 記録媒体, 3 伝送路, 4 受信装置, 11 I/F, 12 ROM, 13 RAM, 14 CPU, 15 外部記憶装置, 16 送信機/記録装置, 21 圧縮部, 22 ローカルデコード部, 23 誤差算出部, 24 判定部, 25 多重化部, 31 間引き回路, 32 補正回路, 33 補正値ROM, 41 クラス分類用ブロック化回路, 42 予測値計算用ブロック化回路, 43 クラス分類適応処理回路, 44 ADRC処理回路, 45 クラス分類回路, 46 適応処理回路, 51 ブロック化回路, 52 自乗誤差算出回路, 53,54 演算器, 55 積算部, 56 メモリ, 61 予測係数メモリ, 62 補正データメモリ, 63 誤差情報メモリ, 64 比較回路, 65 制御回路, 71 受信機/再生装置, 72 分離部, 73 クラス分類用ブロック化回路, 74 ADRC処理回路, 75 クラス分類回路, 76 予測回路, 77 予測値計算用ブロック化回路, 81 予測係数ROM, 82 予測回路, 91 学習用ブロック化回路, 92 教師用ブロック化回路, 93 ADRC処理回路, 94 クラス分類回路, 95 スイッチ, 96 学習データメモリ, 97 カウンタ, 98 教師データメモリ, 99 演算回路, 100 メモリ