画像変化の即時性と画質との両立を図るため、様々な圧縮方式が提案されている。特許文献1には、圧縮画像を生成するの際の誤差データを、圧縮画像とともに伝送するシステムが開示されている。画像は複数のブロックに分けられており、各ブロックの画素値のダイナミックレンジに応じて、前記誤差データを伝送するかどうかを決定するようにしている。
また、特許文献2には、画像フレーム間の差分を算出し、それを圧縮して保存し、これを伸長してフレームを更新する装置を開示している。
上記の従来技術においては、データ量に比べて伝送帯域の狭い伝送路(無線LANなど)を用いる場合には、画像変化の即時性と画質との両立が困難である。つまり、画像変化の即時性を重視すると極端に画像品質が悪くなったり、画像品質を重視すると即時性が損なわれるという問題があった。また、一般に用いられている動画圧縮方式は処理による遅延が大きく、動画の上でマウスカーソルなどを動かした場合には、カーソル表示に遅延が生じてしまうという問題もあった。
特にこのような問題は、一画面中に、動画、静止画、文字などが混在する場合に顕著であった。動画には動画に適した圧縮方法(たとえばMPEG)があり、静止画には静止画に適した圧縮方法(たとえばJPEG)がある。一画面中に、静止画と動画が混在する場合、静止画領域と動画領域とを判別し、それぞれの領域について最適な圧縮方法を用いるということも考えられる。しかし、そのような判別は極めて煩雑であり、また、圧縮に多くの時間を要し、結局のところ即時性を満足することができなくなる。
上記のような問題は、動画、静止画、文字などが混在する場合だけでなく、動画でありながら背景が変化しない場合等においても同様に生じる問題である。
この発明は上記のような問題点を解決して、画像変化の即時性と画質との両立を図ることのできる画像伝送技術を提供することを目的とする。
(1)この発明に係る画像送信装置は、対象フレームの画像と前フレームの画像の差分画像を取得する差分画像取得手段と、差分画像取得手段によって得た差分画像を、伝送路の伝送容量に適合するように第1の圧縮方法によって圧縮し、圧縮差分画像を生成する第1圧縮手段と、第1の圧縮方法による圧縮により、差分画像から失われた誤差データを得て記録する誤差データ取得手段と、圧縮差分画像を送信すると伝送路の伝送容量に余裕がない場合には、圧縮差分画像を伝送路を介して送信するよう決定し、圧縮差分画像を送信しても伝送路の伝送容量に余裕がある場合、あるいは送信すべき圧縮差分画像がなく伝送路の伝送容量に余裕がある場合には、前記対象フレームより前のフレームの、前記記録された誤差データを伝送路を介して送信するよう決定する送信制御手段とを備えている。
伝送路の伝送容量に適合するように圧縮率を決定して、差分画像を圧縮するようにしている。したがって、即時性を保持しつつ伝送路の容量に合致した最適な画質を送信することができる。さらに、圧縮した差分画像を送信しても伝送容量に余裕がある場合には、既に送信した以前のフレームにおける圧縮誤差データを併せて送信するようにしている。したがって、伝送路の伝送容量の範囲内において、画質の向上を図ることができる。
(2)この発明に係る画像送信装置は、送信制御手段が、誤差データを第2の圧縮方法によって圧縮して誤差圧縮データを生成する第2圧縮手段を備えており、当該圧縮誤差データを送信するよう決定するものであることを特徴としている。
圧縮方法として、差分画像を圧縮した第1の圧縮方法とは異なる第2の圧縮方法を用いているので、より効率的に誤差データを圧縮することができる。
(3)この発明に係る画像送信装置は、送信制御手段が、第2の圧縮方法による圧縮により、誤差データから失われた第2誤差データを得て記録する第2誤差データ取得手段を備えており、伝送路の伝送容量に余裕がある場合には、前記対象フレームより前のフレームの、前記記録された第2誤差データを伝送路を介して送信するよう決定することを特徴としている。
したがって、さらに画質の向上を図ることができる。
(4)この発明に係る画像送信装置は、1フレームの画像を複数のブロックに分割し、各ブロックのそれぞれの画像を対象として処理を行うことを特徴としている。
したがって、ブロック単位にて処理をすることができ、処理を簡単化することができる。
(5)この発明に係る画像送信装置は、送信制御手段が、当該誤差データの絶対値が最も大きい画素を有するブロックの誤差データを優先して送信するよう制御することを特徴としている。
したがって、視覚的に画質低下が知覚されやすい誤差の大きい画素を含むブロックが優先的に画質改善される。
(6)この発明に係る画像送信装置は、送信制御手段が、前記差分画像を得るために用いた対象フレームの画像または前フレームの画像において最も大きなエッジ成分を有するブロックの誤差データを優先して送信するよう制御することを特徴としている。
したがって、第1の圧縮方法によってエッジ近傍に誤差が生じやすい場合であっても、当該誤差の大きい画素を含むブロックが優先的に画質改善される。
(7)この発明に係る画像送信装置は、送信制御手段が、前記差分画像を得るために用いた対象フレームの画像または前フレームの画像において空間的な濃度変化が所定値より小さいブロックのうち、当該誤差データの絶対値が最も大きい画素を有するブロックの誤差データを優先して送信するよう制御することを特徴としている。
したがって、視覚的に画質低下が知覚されやすい平坦な輝度部分を有するブロックが優先的に画質改善される。
(8)この発明に係る画像送信装置は、送信制御手段が、前記差分画像を得るために用いた対象フレームの画像または前フレームの画像の輝度に対して、当該差分画像の輝度が相対的に大きいブロックを優先して送信するよう制御することを特徴としている。
したがって、視覚的に画質低下が知覚されやすい低輝度部分の誤差を有するブロックが優先的に画質改善される。
(9)この発明に係る画像送信装置は、第1の圧縮方法がJPEGもしくはJPEG2000であることを特徴としている。静止画としての圧縮方式を用いているので、フレーム間予測を用いた動画に対する圧縮処理よりも処理が迅速である。
(10)この発明に係る画像送信装置は、誤差データの輝度データのみを抽出して圧縮誤差データとすることを特徴としている。
したがって、知覚されやすい輝度データを抽出することで、データ容量を小さくしつつ画質改善効果を維持することができる。
(11)この発明に係る画像送信装置は、抽出した輝度データを、仮数部と指数部に分けた後圧縮を行い、圧縮誤差データとすることを特徴としている。
したがって、高い圧縮率を得つつ、画質改善効果を維持することができる。
(12)この発明に係る画像送信装置は、伝送路の現在の伝送容量を取得し、第1圧縮手段および送信制御手段に与える伝送容量取得手段をさらに備えたことを特徴としている。
したがって、現在の伝送容量に応じた適切な送信制御を行うことができる。
(13)この発明に係る画像送信方法は、対象フレームの画像と前フレームの画像の差分画像を取得し、差分画像取得手段によって得た差分画像を、伝送路の伝送容量に適合するように第1の圧縮方法によって圧縮して、圧縮差分画像を生成し、第1の圧縮方法による圧縮により、差分画像から失われた誤差データを得て記録しと、圧縮差分画像を送信すると伝送路の伝送容量に余裕がない場合には、圧縮差分画像を伝送路を介して送信し、圧縮差分画像を送信しても伝送路の伝送容量に余裕がある場合、あるいは送信すべき圧縮差分画像がなく伝送路の伝送容量に余裕がある場合には、前記対象フレームより前のフレームの、前記記録された誤差データを伝送路を介して送信することを特徴としている。
伝送路の伝送容量に適合するように圧縮率を決定して、差分画像を圧縮するようにしている。したがって、即時性を保持しつつ伝送路の容量に合致した最適な画質を送信することができる。さらに、圧縮した差分画像を送信しても伝送容量に余裕がある場合には、既に送信した以前のフレームにおける圧縮誤差データを併せて送信するようにしている。したがって、伝送路の伝送容量の範囲内において、画質の向上を図ることができる。
「差分画像取得手段」は、実施形態においては、図2の差分ブロック抽出部3、図11のステップS1がこれに対応する。
「第1圧縮手段」は、図2の圧縮レート制御部18、第1圧縮部20がこれに対応する。
「誤差データ取得手段」は、実施形態においては、図2の量子化部24がこれに対応する。
「送信制御手段」は、実施形態においては、図2の、優先度決定部38、圧縮誤差ブロック圧縮部40、パケット化部44がこれに対応する。また、図11のステップS6〜S11がこれに対応する。
「送信」とは、有線・無線を問わず、受信側にデータを送る行為をいう。
発明を実施するための形態
1.全体的構成
図1に、この発明の一実施形態による画像送信装置の機能ブロック図を示す。差分画像取得手段2は、順次入力されるフレームごとの画像を受け取り、前のフレームとの差分画像を生成する。第1圧縮手段4は、差分画像を受け取り、第1の圧縮方法によって圧縮を行う。この際、圧縮後の差分画像の容量が、伝送路の伝送容量に適合するように、圧縮率を決定する。差分画像を圧縮して得られた圧縮差分画像は、送信制御手段6に与えられる。誤差データ取得手段8は、第1圧縮手段4によって圧縮処理がされた際の圧縮による誤差データを取得して、記録部10に記録する。送信制御手段6は、伝送路の伝送容量に余裕があれば、圧縮差分画像だけでなく、既に記録済みの以前のフレームの誤差データを送信する。
受信側では、画像が変化した場合には、圧縮差分画像を適時に受け取ることができ、その後の伝送路の余裕によって、誤差データを受け取って画質を改善することができる。
2.ハードウエアロジックによって実現した例
図2に、図1に示す各機能を実現したハードウエアのブロック図を示す。フレームを構成する各画素のRGB画像データ(R成分、G成分、B成分のデータ)が、変換部12に順次与えられる。変換部12は、受け取ったRGB画像データを、輝度データY、色差データCr、Cbに変換する。ここで、色差データCrはR成分−Y(輝度)成分にて算出したものであり、色差データCbはB成分−Y(輝度)成分にて算出したものである。変換された画像データは、差分ブロック抽出部3およびフレームバッファ14に与えられる。
フレームバッファ14には、現在フレームと前フレームとの2フレーム分の画像データを蓄積するためのバッファが設けられている。変換部12からの画像データは、現在フレーム用のバッファに順次蓄積される。なお、現在フレームバッファは、次のフレームにおいては、前フレームバッファとなる。
差分ブロック抽出部3は、変換部12から与えられた現在のフレーム(対象フレーム)の画像データと、前のフレームの画像データとを順次比較してその差分画像を抽出する。なお、前のフレームの画像データは、フレームバッファ14の前フレームバッファに記録されているものを用いる。
ブロックバッファ16は、差分ブロック抽出部3からの差分画像データを順次蓄積する。
ここで、差分ブロック抽出部3は、図3に示すように、現在フレームの画像データFcおよび前フレームの画像データFpを複数のブロックに分割して取り扱うようにしている。たとえば、32画素×32画素を1ブロックとする。差分ブロック抽出部3は、各フレームごとに画像を比較し、変化があるか否かを判断している。変化があれば、いずれのブロックに変化があったかというテーブルFtや当該ブロックの差分画像をブロックバッファ16に記録する。たとえば、図3のテーブルFtにおいて「1」であるものを、画像の変化があったものとする。ブロックを構成する画素のうち、1つでも変化があれば、当該ブロックは変化があったものとして扱う。画像の変化がなかったブロックについては、送信対象としない。
図4に、ブロックバッファ16に記録されたあるブロックにおける差分画像データの例を示す。縦32画素、横32画素のマトリクスである。各画素ごとに、差分がY、Cr、Cbにて記録されている。なお、この実施形態では、画像の情報を間引かずにそのまま用いている(つまり、Y、Cr、Cb=4:4:4)。しかし、Cb、Crの成分を間引いてもよい(つまり、Y、Cr、Cb=4:2:2やY、Cr、Cb=4:2:0)。
圧縮レート制御部18は、差分ブロック抽出部3の抽出結果(ブロックバッファ16の記録内容)と、帯域幅取得部42によって取得された伝送路の今の帯域幅とに基づいて、圧縮レートを決定する。
図2aに、送信部46のバッファ部分の構成と、帯域幅取得部42である全体制御部102を示す。バッファ部分は、書込制御部104,バッファ106、読出制御部108を備えている。
バッファ106は、先入れ先出し方式のメモリである。書込制御部104は、パケット部44に対して、データを要求する。これに応じて、パケット部44はデータを送信する。書込制御部104は、受け取ったデータを、順次バッファ106に記録する。このようにして、バッファ106には、送信すべきデータが蓄積されていく。なお、バッファが一杯になって書込ができなくなれば、全体制御部102が、停止信号を出して、書込制御部104を停止させる。
読出制御部108は、送信回路よりのデータ要求信号を受けて、バッファ106からデータを読み出す。送信の帯域が広い場合には、読み出しが早くなる(読み出しアドレスが早く移動する)。一方、送信の帯域が狭い場合には、読み出しが遅くなる(読み出しアドレスの移動が遅い)。
全体制御部102は、この書込アドレスと読出アドレスとの差を見て、現在の帯域幅を推定する。これを、余剰容量(帯域幅)として圧縮レート制御部18に出力する。
圧縮レート制御部18は、図3のテーブルFtに基づき、変化のあったブロックをかたまりとして認識する。つまり、縦または横に連続する「1」のブロックを1かたまりとして扱う。
図3では、領域a、b、c、dの4つを認識することになる。そして、各領域のブロック数に応じて、圧縮レートを決定する。この実施形態では、領域に含まれるブロック数が4個以下のブロックについては圧縮率(圧縮後のデータ量/元のデータ量)を10%程度(JEPG2000)として、画質を優先した圧縮を行うようにしている。一方、領域に含まれるブロック数が5個以上のブロックについては、圧縮後のデータが帯域幅に収まるように圧縮率を決定する。ただし、帯域幅に余裕があっても、PSNR=40db程度の画質を保った圧縮率(30%程度)(実質的に非可逆圧縮となる程度)の圧縮は最低限行うようにする。
なお、この実施形態において、所定数以下のブロックしか含まない領域について、画質を優先した圧縮としたのは、画素数が少ないとDWT処理による歪みが多くなるため、画質が大きく劣化するためである。また、データ量が少ないと、大きく圧縮しようとしても余り圧縮の効果がないからである。
たとえば、図3に示すような場合であれば、ブロック数が4個以下である領域b、cに対しては圧縮率10%が決定される。したがって、圧縮レート制御部18は、領域b、cを圧縮して得られる圧縮差分画像のデータ容量を算出することができる。ブロック数が5個以上である領域a、dに対しては、次のようにして圧縮率を決定する。伝送路の帯域幅(伝送容量)から領域b、cの圧縮差分画像データ量を減じ、残存伝送容量を算出する。領域a、dの差分画像データを圧縮したときの圧縮差分画像データのデータ量が、残存伝送容量に収まるように(たとえば圧縮後のデータ量が残存伝送容量の95%になるように)圧縮率を決定する。ただし、帯域幅に余裕があっても、圧縮率30%程度(実質的に非可逆圧縮となる程度)の圧縮は最低限行うようにする。したがって、帯域幅に余裕がある場合には、圧縮差分画像を送信しても、まだ余裕が生じる場合もある。
第1圧縮部20は、領域a、b、c、dの各ブロックにつき、圧縮レート制御部18の決定した圧縮率により圧縮を行う。この実施形態では、第1圧縮部20における圧縮手法としてJPEG2000を用いている。第1圧縮部20は、直交変換部(DWT)22、量子化部(Q)24、符号化部(EBCOT)26を備えている。符号化部26からの圧縮差分画像は、パケット化部44に与えられる。これら圧縮差分画像は、圧縮レート制御部18によって適切に算出された圧縮率となっているので、送信路の帯域幅に収まることが保証される。
一方、量子化部24からは、量子化の際の輝度差データも出力される。この輝度差データは、逆直交変換部30に与えられる。逆直交変換部(IDWT)30は、輝度差データを逆直交変換し、輝度誤差データを得る。この輝度誤差データは、各ブロックの画素ごとにRAM34に記録される。このようにしてRAM34に記録された誤差輝度データは、今回のフレーム処理および次フレーム以降の処理において、伝送帯域に余裕があれば、以下のようにして送信されることになる。
優先度決定部38は、次のようにして、誤差輝度データを伝送すべきブロックの優先度を決定する。まず、ブロックごとに、最も大きい輝度誤差データを抽出し、これを当該ブロックの代表輝度誤差データとする。図5に、あるブロックの輝度誤差データを示す。この輝度誤差データのうち最も大きいもの(図では「8」)が代表輝度誤差データとなる。
優先度決定部38は、上記のようにして算出した各ブロックの代表輝度誤差データをRAM34に記録する。これを図6に示す。図6において、「−」は、差分画像が無いブロックを示している。
なお、優先度決定部38は、前回以前のフレームにおいて送信未了でRAM34に記録されているブロックも含めて、代表輝度誤差データの大きいブロック順に優先度を決定する。つまり、各ブロックの代表輝度誤差データの大きいものから順に、ブロックの識別子をRAM34に記録する(図7参照)。この実施形態では、ブロック識別子として、行I、列Jを用いてる。
図6に示すように、前回以前のフレームにおける代表輝度誤差データ(未送信のもの)も記録されている。例えば、ブロック(4,2)、ブロック(4,3)がそうである。ここでは、代表輝度誤差データ「27」の記録されているブロック(4,3)の優先度が最も高くなる(図7参照)。
優先度決定部38は、優先度の高いブロックから順に(図7の上から順に)RAM34より当該ブロックに含まれる輝度誤差データを読み出し、圧縮誤差ブロック圧縮部40に与える。圧縮誤差ブロック圧縮部40は、与えられたブロックの各画素の輝度誤差データを圧縮する。
圧縮誤差ブロック圧縮部40のハードウエア構成を、図8に示す。CPU232には、RAM34、入出力回路(I/O)234、ハードディスク236が接続されている。入出力回路234は、パケット化部44に接続されている。ハードディスク236には、圧縮処理プログラムが記録されている。圧縮処理プログラムは、第1圧縮部20における圧縮方式とは異なった圧縮方式にて圧縮を行う。
図9、図10に、圧縮処理プログラムのフローチャートを示す。まず、CPU232は、優先度の最も高いブロックを対象ブロックとし、画像データを読み出す(ステップS101)。
次に、CPU232は、輝度誤差データを指数部画像データと仮数部画像データに分離する(ステップS103)。これにより、図11の「符号ビット」「仮数部」「指数部」に示すようなデータが得られる。なお、仮数部を4ビットとしているため、「再現される2進数値」に示すように、若干の誤差が生じている。
CPU232は、このようにして得た、仮数部画像データと指数部画像データを、図12に示すように互いに対応付けて、RAM34に記録する。この際、画素を特定する座標「y、x」も併せて記録される。
仮数部画像データと指数部画像データを模式的に表すと、図13Bのようになる。この図では、2進数にて示している。上段が指数部、下段が仮数部である。
次に、CPU32は、指数部画像データを圧縮する(ステップS104)。この実施形態では、エントロピ符号化によって圧縮を行っている。CPU232は、図14に示すように、対象画素P(2,2)の左上、真上、右上、左の画素P(1,1)、P(1,2)、P(1,3)、P(2,1)について、指数部画像データを取得する。つまり、隣接する画素であって既に処理済みの画素の、指数部画像データをRAM34から読み出す。
続いて、CPU232は、読み出した周囲の画素の指数部画像データに基づいて、対象画素P(2,2)の指数部画素データを予測する。この実施形態では、隣接する画素の指数部画像データと同じような指数部画素データを取る確率が高いことを考慮して予測するようにしている。
具体的には、図15に示すように、予測した指数部画素データをe’とし、実際の指数部画素データをeとして、正規分布曲線αを想定する。図15では、「e’」が「e」と等しくなる確率が0.5265、「e」が「e’−1」と等しくなる確率が0.125・・・・となっている。つまり、CPU232は、図16Aに示すように、確率を記録する。なお、この確率は、周囲の指数部画像データのパターンごとに予め算出したものを、テーブルとして用意しておいてもよい。
次に、CPU232は、算出した出現確率に基づいて、各数値に割り当てる符号を決定する。この実施形態では、上記確率に基づいてハフマン木を生成し、各数値ごとのハフマン符号を、図16Bに示すように割り当てている。
たとえば、上記の例であれば、「e’」に「1」を、「e’+1」に「011」を、「e’−1」に「010」を・・・というように割り当てた符号テーブルを作成する。このようにして、出現確率の高いデータに対しては、短い符号が割り当てられる。
次に、CPU232は、作成した符号テーブルに基づいて、対象画素P(2,2)の指数部画像データを符号化する。図14Aにおいて、対象画素P(2,2)の予測指数部画像データe’が「+01」であれば、実際の指数部画像データe’の「+01」と等しいので、e’=eとなり、図16Bより符号「1」が割り当てられる。CPU232は、このようにして算出した指数部圧縮画像データを、RAM34に記録する。図17に、記録された指数部圧縮画像データを示す。
次に、CPU232は、対象ブロック内の全ての画素について指数部圧縮画像データを算出したかどうかを判断する(ステップS105)。未処理の画素が残っていれば、次の画素を対象としてステップS101以下を繰り返し実行する。全ての画素について指数部圧縮画像データを算出すれば、ステップS106に進む。
ステップS106では、CPU232は、RAM34に記録された対象ブロックの指数部圧縮画像データを読み出し、I/O234を介してパケット化部44に与える(ステップS106)。
次に、CPU232は、全てのブロックについて処理したかどうかを判断する(ステップS107)。残りのブロックが残っていれば、次に優先順位の高いブロックを対象ブロックとして、ステップS101以下の処理を繰り返す。
全てのブロックについて、処理を行って、指数部圧縮画像データをパケット化部44に与え終わると、CPU232は、伝送路に余裕があるかどうかを判断する(ステップS108)。
伝送路の帯域に余裕がなければ、CPU232は、次のフレームの画像の処理に移る。伝送路の帯域に余裕があれば、CPU232は、仮数部画像データの伝送処理を行う。まず、CPU232は、最も優先度の高いブロックの最初の画素の仮数部画像データをRAM34から読み出す。この仮数部画像データは、ステップS103において生成し、図12に示すようにRAM34に記録したものである。この仮数部画像データの読み出し順序も、指数部画像データの読み出し順序と同じである。つまり、左上の画素から右下の画素に向けて、ジグザグに1画素ずつ読み出されることになる。
たとえば、図14Bに示すように、画素P(2,2)の仮数部画像データを読み出したものとする。CPU232は、読み出した仮数部画像データの上位2ビットだけを取り出し、エントロピ符号化によって圧縮を行う。指数部画像データと同じように、予測を行って符号を決定する。なお、この段階では、周囲8画素の指数部画像データの値が分かっているので、これらも用いて予測を行う。
たとえば、図14Bに示すように、対象画素がP(2,2)である場合には、周囲の画素P(1,1)、P(1,2)、P(1,3)、P(2,1)、P(2,3)、P(3,1)、P(3,2)、P(3,3)の輝度誤差データに基づいて予測を行う。
この際、画素P(1,1)、P(1,2)、P(1,3)、P(2,1)については、指数部画像データと仮数部画像データの双方が判っているので、これらに基づいて輝度誤差データを復元して予測に用いる。また、画素P(2,3)、P(3,1)、P(3,2)、P(3,3)については、指数部画像データのみが判明しているので、仮数部画像データとして中央値を採用して輝度誤差データを復元し、これを予測に用いる。
CPU32は、周囲の画素P(1,1)、P(1,2)、P(1,3)、P(2,1)、P(2,3)、P(3,1)、P(3,2)、P(3,3)の輝度誤差データに基づいて、対象画素P(2,2)の輝度誤差データを予測する。予測手法は、指数部画像データの予測と同じ方法である。
予測した輝度誤差データe’と実際の輝度誤差データeとの差の確率に基づいて、ハフマン符号を割り当てる点も指数部画像データの符号化と同じである。このようにして、仮数部画像データが符号化される。
次に、CPU232は、対象ブロックの全ての画素について処理を行ったかどうかを判断する(ステップS111)。対象ブロックの全ての画素について仮数部圧縮画素データを生成すれば、RAM34に記録した仮数部圧縮画素データを読み出して、パケット化部44に与える。これにより、送信部46は、仮数部圧縮画素データを送信する。
次に、CPU232は、全てのブロックについて処理をしたかどうかを判断する(ステップS113)。未処理のブロックが残っていれば、次の優先順位のブロックを対象ブロックとしてステップS108以下を実行する。
伝送路に余裕がなくなるか、全てのブロックについての処理が終了すると、CPU232は、次のフレームの画像データの処理に移る。以上のようにして、画像データが圧縮して送信される。
なお、上記実施形態では、ステップS109において、上位2ビットを抽出し下位ビットは送信対象としていない。しかし、全ての画素について上位2ビットの仮数部圧縮画像データを送信した後、これら下位ビットの仮数部圧縮画像データを送信するようにしてもよい(図18の2回目送信参照)。
さらに、指数部と仮数部に分離した際に生じた誤差をRAM34に記録しておき、これを上記下位ビットの送信後に送信するようにしてもよい。
また、図11に示す、指数部と仮数部への分離において、図中QとRの部分については、指数部が「00」でなく、かつ仮数部の先頭ビットが「1」であると言う点において他と区別できる。したがって、仮数部の先頭ビットの「1」を省略して、図19に示すように仮数部を構成してもよい。これにより、Q、Rの部分に付いて、精度を上げることができる。なお、受信側では、指数部が「00」でない場合、仮数部の先頭ビットとして「1」を付加することによって、元の数を再現することができる。
パケット部44は、第1圧縮部20からの圧縮差分画像データも考慮し、圧縮誤差ブロック圧縮部40からの輝度誤差圧縮データを、現在の帯域幅にて送信可能かどうかを判断する。圧縮誤差ブロック圧縮部40からは、優先度の高い順に、各ブロックの輝度誤差圧縮データが送られてくるので、帯域幅を超えて送信不可能になっ場合には、送信不能である旨を圧縮誤差ブロック圧縮部40に返送する。
圧縮誤差ブロック圧縮部40は、パケット化部44に与えた各ブロックの輝度誤差圧縮データのうち、送信できたものについて、図7の優先度リストから削除する。
パケット化部44は、第1圧縮部20からの圧縮差分画像データと、圧縮誤差ブロック圧縮部40からの輝度誤差圧縮データとを、パケット化し送信部46に与える。送信部46は、これを、無線通信路を介して、ディスプレイ装置に送信する。
ディスプレイ装置のブロック図を図20に示す。メモリ64には、1フレーム分の画像データが記録される。受信部60は、送信されてきた圧縮差分画像データ・輝度誤差圧縮データを受信し、演算書換部62に与える。演算書換部62は、受信したデータの圧縮を解き、差分画像データ・輝度誤差データを得る。演算書換部62は、差分画像データや輝度誤差データに基づいて、メモリ64に記録されている対象となる画素の画像データを書き換える。つまり、元の画像データに差分画像データまたは輝度誤差データを加算して、新たな画像データを得る。表示制御装置66は、メモリ64に記録されている画像データを、表示部に与える。
図21に、上記の伝送方式による画像データの送信と、これによってディスプレイ装置において表示される画像を示す。図において、画像フレームの欄は、変換部12に与えられる画像を示している。表示画像の欄は、ディスプレイ装置において表示される画像を示している。
フレーム(1)において、画像フレームに変化はなく、差分画像データが生じなかったものとする。したがって、フレーム(1)の伝送する画像の欄が空白になっている。
次のフレーム(2)において、画像データに変化がある。したがって、フレーム(2)の伝送する画像の欄に示すように、差分画像データが生成される。この差分画像データは、伝送帯域に入るように圧縮して送信される。さらに、この差分画像データを圧縮した際の輝度誤差データが生成される。ただし、誤差輝度データは、伝送容量が不足して送れなかったものとする。
したがって、ディスプレイ装置における表示は、フレーム(2)の表示画像に示すように、元の画像に差分画像データを足した画像が表示される。
次のフレーム(3)では、前フレーム(2)の画像フレームと変化がない。したがって、差分画像データは生成されない。伝送容量に余裕があるので、フレーム(2)において発生した輝度誤差データを圧縮して送信する。ディスプレイ装置では、この輝度誤差データによって対象となる画素の輝度を修正し、画質の向上を図る。
次のフレーム(4)では、前フレーム(3)とは画像が変化しており、差分画像データが生成される。さらに、この差分画像データを圧縮した際の輝度誤差データが生成される。圧縮差分画像データは、伝送帯域に入るように圧縮して送信される。ただし、誤差輝度データは、伝送容量が不足して送れなかったものとする。
したがって、ディスプレイ装置における表示は、フレーム(4)の表示画像に示すように、元の画像に差分画像データを足した画像が表示される。
次のフレーム(5)では、前フレーム(4)から画像が変化している。したがって、フレーム(5)の伝送する画像の欄に示すような差分画像データが生成される。この差分画像データは、圧縮されて送信される。
圧縮の際の輝度誤差データは、前のフレーム(4)において生成された輝度誤差データと領域が一部重なっている。この重なっている部分については、前フレーム(4)における輝度誤差データを消去し、今回のフレーム(5)において生成された輝度誤差データを記録する(つまり、上書きする)。図において、フレーム(5)の圧縮保証データの欄にこれが示されている。
上記のような処理をするのは、既に当該領域についての新しい画像が送られてきたので、古い画像についての輝度誤差データは不要となるからである。
次のフレーム(6)では、フレーム画像に変化がない。したがって、輝度誤差データのうち、優先度の高いものを送信している。
このように、差分画像データは遅れることなく送信してリアルタイム性を保証しつつ、伝送帯域の余裕に応じて輝度誤差データを送信して、画質の向上を図るようにしている。
3.DSPを用いて実現した例
図22に、図1の機能の一部をDSPによって実現した場合のハードウエア構成を示す。変換部12、パケット化部44、送信部46、第1圧縮部20は、図2の実施形態と同じである。この実施形態では、差分画像取得手段や送信制御手段を、プログラムによるDSP72の機能によって実現している。ROM74には、処理プログラムが記録されており、DSP72は、この処理プログラムにしたがって処理を実行する。メモリ70は、画像データなどを記録するために用いられる。
図23に、ROM74に記録された処理プログラムのフローチャートを示す。メモリ70に1フレーム分の画像データを記録すると、変換部12はDSP72に記録完了信号を与える。これにより、DSP72は1フレーム分の画像データの記録完了を知ることができる。なお、DSP72が、画像データのクロックを取得して、記録完了を判断するようにしてもよい。
メモリ70には、現在フレームと前フレームとの2フレーム分の画像データを蓄積するためのバッファが設けられている。記録完了を知ると、DSP72は、前フレームと現在フレームの画像データの差を計算し、差分画像とする(ステップS1)。DSP72は、算出した差分画像データをメモリ70に記録する。
次に、DSP72は、差分画像データについてブロック化処理を行う(ステップS2)。たとえば、32画素×32画素を1ブロックとし、各ブロックごとに、差分画像データがあるかどうかを判断する。ブロックを構成する全ての画素において差分画像データがない場合(つまり画像が変化していない場合)には、当該ブロックのフラグを「0」とする。ブロックを構成するいずれかの画素において差分画像データがある場合(つまり画像が変化してる場合)には、当該ブロックのフラグを「1」とする。DSP72は、上記のようにして図3のテーブルFtを生成し、メモリ70に記録する。
次に、DSP72は、テーブルFtにしたがって、変化のあったブロック(フラグが「1」のブロック)をかたまりとして認識する。つまり、縦または横に連続する「1」のブロックを1かたまり(ブロック群)として扱い、それぞれについてラベリングを行う。この際、各ブロック群のブロック数も算出して記録する。図3では、領域a、b、c、dの4つを認識することになる。
続いて、DSP72は、ラベリングをしたブロック群のそれぞれについて、第1圧縮部20で使用する圧縮率を決定する。DSP72は、各部ロック群のブロック数が、所定数(たとえば5個)以上であるかどうかを判断する(ステップS3)。
たとえば、ブロック群aはブロック数が4個以下であるので、DSP72は、圧縮率(圧縮後のデータ量/元のデータ量)を10%程度(JEPG2000)として、画質を優先した圧縮率を設定する。DSP72は、当該ブロック群の各画素の差分画像データをメモリ70から読み出し、設定した圧縮率とともに第1圧縮部20に与える(ステップS4)。
これを受けて第1圧縮部20は、当該ブロック群の各ブロックごとに差分画像データを圧縮し、各ブロックごとに圧縮差分画像データを生成してパケット化部44に与える。パケット化部44は、圧縮差分画像データをパケット化し、送信部46に与える。送信部46は、パケット化された圧縮差分画像データを送信する。
一方、ブロック数が5個以上のブロック群については、DSP72は、5個以上のブロックを有するブロック群全体の圧縮後のデータが帯域幅に収まるように圧縮率を決定する(ステップS5)。なお、DSP72は、送信部46から、通信路の現在の帯域幅を取得する。
DSP72は、帯域幅に余裕があっても、最低限、圧縮率30%程度(JPEGにおいて実質的に非可逆圧縮となる程度)の圧縮は行うように、圧縮率を設定する。DSP72は、当該ブロック群の各画素の差分画像データをメモリ70から読み出し、設定した圧縮率とともに第1圧縮部20に与える(ステップS5)。
これを受けて第1圧縮部20は、当該ブロック群の各ブロックごとに差分画像データを圧縮し、圧縮差分画像データを生成してパケット化部44に与える。パケット化部44は、圧縮差分画像データをパケット化し、送信部46に与える。送信部46は、パケット化された圧縮差分画像データを送信する。
圧縮差分画像データは、帯域幅に収まるように圧縮されているので、必ず送信されることになる。
第1圧縮部20は、上記圧縮の際に生じる輝度誤差データをメモリ70に記録する。輝度誤差データの例を図5に示す。各画素ごとに、圧縮の際に生じた輝度誤差データが記録されている。
次に、DSP72は、取得した前記帯域幅が、メモリ70に記録された圧縮差分画像データを送信しても余っているかどうかを判断する(ステップS6)。余っていなければ、今回のフレーム画像についての処理を終了し、次のフレーム画像がメモリ70に記録されるのを待つ。
帯域に余裕があれば(所定値以上の伝送容量が残っていれば)、メモリ70に記録されている輝度誤差データを、その優先度にしたがってブロックごとに送信する。DSP72は、図24に示すフローチャートにしたがって、輝度誤差データの各ブロックの優先度を決定する。
まず、輝度誤差データをブロック化し、ブロック内で最も絶対値が大きい輝度誤差データを当該ブロックの代表輝度誤差データとする(ステップS72)。図5に、あるブロックの輝度誤差データを示す。この輝度誤差データのうち最も絶対値の大きいもの(図では「8」)が代表輝度誤差データとなる。
DSP72は、各ブロックについて代表輝度誤差データを算出し、代表輝度誤差テーブルとしてメモリ7−0に記録する。代表輝度誤差テーブルを図6に示す。図6において、「−」は、差分画像が無いブロックを示している。なお、代表輝度誤差テーブルには、前回以前のフレームにおいて送信未了となっているブロックの代表輝度誤差データも記録されている。
DSP72は、代表輝度誤差テーブルにおいて、代表輝度誤差データの絶対値の大きいブロック順に、メモリ70の優先テーブルに記録する。優先テーブルの例を、図7に示す。優先度の高い順にブロック識別子(行I、列J)が記述されている。
次に、DSP72は、図23のステップS8において、優先テーブルを参照し、第1優先順位のブロックの輝度誤差データをメモリ70から読み出す(ステップS8)。続いて、読み出した当該ブロックの輝度誤差データを圧縮して、輝度誤差圧縮データを生成する(ステップS9)。
図28に、輝度誤差データの圧縮処理のフローチャートを示す。DSP72は、対象ブロックの輝度誤差圧縮データを、仮数部と指数部に分ける(ステップS91)。たとえば、輝度誤差データが「01010110」の場合、仮数部を「1010」とし、指数部を「011」とする。まず、対象ブロックの仮数部のデータについて、同一のデータが多い順にソートする(ステップS92)。次に、DSP72は、各仮数部データごとにその出現頻度を算出して、頻度表を生成する(ステップS93)。DSP72は、この頻度表に基づいて各仮数部データをハフマン符号化して、圧縮処理を行う。なお、出現頻度の高いものほど、短い符号を割り当てるようにする。
DSP72は、上記と同じようにして、指数部のデータについても、符号化による圧縮処理を行う。
次に、DSP72は、上記の圧縮仮数部データと圧縮指数部データに頻度表などを付加して、輝度誤差圧縮データを生成する。
DSP72は、生成した輝度誤差圧縮データを、パケット化部44に与える。パケット化部44は、受け取った輝度誤差圧縮データが帯域幅に収まるかどうかを判断する。収まれば、送信部46に与えて、送信する。収まらない場合には、DSP72に対して、送信不可である旨を伝える。
DSP72は、パケット部44に与えた輝度誤差圧縮データが送信されれば(送信不可の通信がなければ)、図7の優先テーブルから当該ブロックの識別子を削除する。送信できない場合には、このフレームについての処理を終了すし、次のフレームが記録されるのを待つ(ステップS11)。
輝度誤差圧縮データが送信された場合、DSP72は、優先テーブルの第1順位にあるブロックを対象として、ステップS8以下を繰り返す。したがって、帯域幅が許す限り、輝度誤差圧縮データが送信される。
4.他の実施形態
(1)上記各実施形態では、輝度誤差の絶対値の大きさに基づいて優先度を決定するようにしている(図24)。しかし、図25に示すように、画像のエッジ成分の大きい部分を含むブロックを優先するようにしてもよい。エッジ近傍において、圧縮誤差が生じやすいからである。
DSP72は、画像データの輝度(Y)データに基づいて、エッジ成分の大きさを検出する(ステップS71a)。高周波成分を残すようなフィルタ処理を行うことによってこれを実現できる。DSP72は、各ブロックごとに、そのブロックにおける最も絶対値の大きいエッジ成分を代表エッジ成分データとして算出する(ステップS72a)。次に、DSP72は、代表エッジ成分データの絶対値の大きい順に、各ブロックを順位付ける(ステップS73a)。なお、この処理はハードウエアロジックによっても実現できる。
(2)さらに、図26に示すように、輝度が平坦な領域を優先するようにしてもよい。平坦部の輝度誤差は、人間の目に目立って認識されるからである。
DSP72は、まず、画像データの輝度(Y)データに基づいて、輝度が平坦な領域を抽出する(ステップS71b)。低周波成分を残すようなフィルタ処理を行うことによってこれを実現できる。DSP72は、各ブロックについて、平坦度を算出する。ここで、平坦度としては、たとえば、フィルタ処理後の輝度データにおいて、ブロックを構成する画素における平均値と、ブロックを構成するその各画素の輝度データとの差を合計し、この逆数を用いることができる。
DSP72は、平坦度が所定値より大きいブロックを選択する(ステップS72b)。選択したブロックについて、輝度誤差データを算出する(ステップS73b)。さらに、選択した各ブロックの代表輝度誤差データを算出し(ステップS74b)、輝度差の絶対値の大きいブロックから順に順位付ける(ステップS75b)。
(3)さらに、図27に示すように、元の画像のダイナミックレンジに対して輝度誤差(圧縮誤差)の大きい部分を含むブロックを優先するようにしてもよい。このような部分が、目立って認識されるからである。DSP72は、まず、各画素について、元の画素の輝度と、圧縮による輝度誤差とに基づき、信号対誤差比(=所定の定数×輝度誤差/元の画素の輝度)を算出する(ステップS71c)。続いて、ブロック中の画素のうち、最も大きい信号対雑音比を、そのブロックの代表信号対雑音比として算出する。これを全てのブロックについて行う(ステップS72c)。次に、DSP72は、代表信号対雑音比の大きいブロック順に順位付けを行う。
(4)上記実施形態では、図1の機能を全てハードウエアロジックにて構成した場合と、一部をDSPによって構成した場合を説明した。しかし、図1のいずれの機能についても、DSPやCPUによって実現可能である。場合によっては、全ての機能を、DSP・CPUによって実現することもできる。
(5)また、第1圧縮部20を、図29に示すように構成することもできる。差分画像データは、離散ウエーブレット変換(直交変換(DCT))回路90によって変換される。次に、量子化器92によて量子化される。ビットプレーン符号化回路94は、これを、ビットプレーン符号化により符号化する。続いて、MQ符号化を経て、ポスト量子化係数順序制御回路98に与えられる。なお、上記の処理は、JPEG2000のlosslessモードあるいはlossyモードのいずれかにて実現することができる。
DSP72は、差分画像データのブロックごとに圧縮率をポスト量子化係数制御回路98に与える。これを受けて、ポスト量子化係数制御回路98は、指定された圧縮率に合致するように、差分画像データのMSB側のプレーンから所定プレーンを選択する。選択したプレーンを、圧縮データとして出力する。
なお、DSP72は選択されなかったプレーン(圧縮誤差データ)について、メモリ70に記録する。
DSP72は、伝送容量に余裕があれば、メモリ70にブロックごとに蓄積されているプレーンデータ(圧縮誤差データ(前フレーム以前の圧縮誤差データを含む))のうち、優先度の高いものから順に、送信するように処理する。ブロック中でもっと大きい圧縮誤差データを算出し、これをそのブロックの代表圧縮誤差データとする。これを全ブロックについて行う。代表圧縮誤差データの絶対値の大きいブロックの順に、優先度を決定する。
DSP72は、送信すると決定したプレーンデータ(圧縮誤差データ)を、メモリ70から読み出して、パケット化部44に与える。これにより、圧縮誤差データを送信することができる。
この実施形態によれば、第1圧縮部20によって、第2圧縮部を兼ねることができる。
(6)また、図29の実施形態では、ビットプレーン符号化したもののうち、送信しなかったものをメモリ70に記録するようにしている。しかし、図30に示すような構成としてもよい。
DSP72は、差分画像データのブロックごとに圧縮率をビットプレーン符号化器94に与える。これを受けて、ビットプレーン符号化器94は、指定された圧縮率に合致するように、差分画像データのMSB側のプレーンから所定プレーンだけのビットプレーンを生成する。生成したプレーンを、圧縮データとして出力する。
なお、DSP72の制御により、ビットプレーン生成の対象とならなかったデータ(圧縮誤差データ)については、メモリ70に記録しておく。
DSP72は、帯域幅に余裕があるので送信すると決定した圧縮誤差データを、メモリ70から読み出して、ビットプレーン符号化器94に与える。これにより、圧縮誤差データを送信することができる。
(7)なお、図29、図30において、量子化器92を設けない構成としてもよい。これにより、より精度の高い画像を送信することができる。
(8)上記各実施形態では、第1圧縮部20における圧縮方式をJPEG2000としている。しかし、他の圧縮方式(JPEGなど)を用いてもよい。ただし、JPEG2000のように、予め、圧縮後のデータ容量が正確に算出できるものの方が好ましい。つまり、スケーラビリティのある圧縮方式を用いることが好ましい。
(9)上記各実施形態では、第2の圧縮方式において、ランレングス圧縮を用いている。しかし、BWT等の圧縮を用いてもよい。
(10)上記各実施形態では、第2の圧縮方式において、ハフマン符号化を用いている。しかし、算術符号化、レンジコーダ符号化などを用いてもよい。
(11)上記実施形態では、輝度誤差データを送るようにしているが、その他圧縮処理時に生じる誤差データを送信するようにしてもよい。
(12)また、輝度誤差データを圧縮処理した際の圧縮誤差データを記録しておき、伝送容量に余裕があるときに送信するようにしてもよい。これによって、さらなる画質の向上を図ることができる。
この発明の一実施形態による画像送信装置のブロック図である。
図1の各機能を、ハードウエアロジックによって実現した例を示す図である。
送信部46のバッファ部分および帯域幅取得部42の構成を示す図である。
現在フレームの画像データと、前フレームの画像データに基づいて、画像変化を示すテーブルを生成する処理を示す図である。
1つのブロックの画像データの例である。
1つのブロックの輝度誤差データの例である。
1つのフレームの代表輝度誤差データを示すテーブルである。
優先テーブルの例である。
圧縮誤差ブロック圧縮部40の構成を示す図である。
圧縮処理プログラムのフローチャートである。
圧縮処理プログラムのフローチャートである。
輝度誤差データと仮数部データと指数部データとの対応関係を示す図である。
RAM34に記録された仮数部データと指数部データを示す図である。
輝度誤差データと仮数部データと指数部データとの対応関係を示す図である。
予測処理を説明するための図である。
正規部分布に基づく確率の算出を示す図である。
ハフマン符号化を説明するための図である。
指数部圧縮画像データを示す図である。
誤差データの伝送を示す図である。
輝度誤差データと仮数部データと指数部データとの対応関係を示す図である。
受信装置のブロック図である。
本発明の方式による画像伝送の状況を示す図である。
図1の各機能のうち、一部分をDSPによって実現した場合のハードウエア構成図である。
ROM74に記録された処理プログラムのフローチャートである。
輝度誤差の絶対値によって優先度を決定する処理を示すフローチャートである。
画像のエッジ成分の大きさによって優先度を決定する処理を示すフローチャートである。
平坦面における輝度誤差によって優先度を決定する処理を示すフローチャートである。
信号対誤差比によって優先度を決定する処理を示すフローチャートである。
輝度誤差データの圧縮処理を示すフローチャートである。
他の実施形態による第1圧縮部20の構成を示す図である。
他の実施形態による第1圧縮部20の構成を示す図である。
符号の説明
2・・・差分画像取得手段
4・・・第1圧縮手段
6・・・送信制御手段
8・・・誤差データ取得手段
10・・・記録部