(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0020】
以下、各実施例について、添付図面を参照しながら詳細に説明する。
【0021】
[実施例1]
実施例1における画像復号装置は、復号画像に基底ベクトルのパターンが出現することを事前に判定し、基底ベクトルのパターンの出現を抑止し、画質の劣化を防ぐ。
【0022】
<構成>
図2は、実施例1における画像復号装置10の概略構成の一例を示すブロック図である。
図2に示すように、画像復号装置10は、受信部101、第1復号部102、逆量子化部103、係数分散部104、逆周波数変換部105、第2復号部106、動き補償部107、加算部108、及び復号画像蓄積部109を有する。各部についての概略を以下に説明する。
【0023】
受信部101は、画像符号化技術により符号化されたストリームを受信する。受信部101は、周波数変換係数に関連するストリームを第1復号部102に出力し、動きベクトルに関連するストリームを第2復号部106に出力する。なお、受信されたストリームには、ヘッダ情報などが存在するが、以下では説明を簡単にするため、本実施例に関係する周波数変換係数と動きベクトルとについて説明する。
【0024】
第1復号部102は、受信部101から取得したストリームをエントロピー復号し、周波数変換係数を取得する。第1復号部102は、復号した周波数変換係数を逆量子化部103に出力する。
【0025】
以降では、周波数変換係数の一例としてDCT係数を用いるが、本実施例では、これに限られない。例えば、周波数変換として、DCT以外にも、基底ベクトルで表現可能な、DST(離散サイン変換)、アダマール変換などを用いてもよい。
【0026】
逆量子化部103は、復号されたDCT係数を取得し、例えば8×8の画素サイズなどのブロック単位で逆量子化を行う。ブロックサイズは、8×8に限らず、4×4など他のサイズでもよい。逆量子化部103は、逆量子化したDCT係数を係数分散部104に出力する。例えば8×8のブロックの場合、最大64個のDCT係数が得られる。
【0027】
係数分散部104は、取得した各ブロックのDCT係数のうち、交流成分(AC成分)に基づいて、ブロックを復号した際に基底ベクトルのパターンを視認させる単独係数とみなせるブロックであるか否かを判定する。係数分散部104は、基底ベクトルのパターンを視認させる単独係数とみなせるブロックに対して、そのブロックの交流成分のDCT係数を、交流成分の他のDCT係数に分散させる。係数分散部104は、分散させたDCT係数を含むブロックのDCT係数を逆周波数変換部105に出力する。
【0028】
係数分散部104は、基底ベクトルのパターンを視認させる単独係数とみなせるブロックでないと判定したブロックに対して、処理を行わずに、逆量子化部103から取得したDCT係数をそのまま逆周波数変換部105に出力する。
【0029】
逆周波数変換部105は、係数分散部104から取得した各ブロックのDCT係数を逆周波数変換(例えば逆DCT)し、画像信号又は動き補償予測の差分画像信号を生成する。逆周波数変換部105は、生成された画像信号又は差分画像信号を加算部108に出力する。
【0030】
ここで、動き補償が行われる場合、第2復号部106は、受信部101から取得したストリームをエントロピー復号し、動きベクトルを取得する。第2復号部106は、取得した動きベクトルを動き補償部107に出力する。
【0031】
動き補償部107は、後述する復号画像蓄積部109から復号済みの参照画像を取得し、取得した動きベクトルを用いて動き補償処理が行われる。動き補償部107は、動き補償処理で生成した予測画像信号を、加算部108に出力する。
【0032】
加算部108は、動き補償が行われた場合、動き補償部107から取得した予測画像信号と、逆周波数変換部105から取得された差分画像信号とを加算し、最終的な復号画像を生成する。加算部108は、動き補償が行われていない場合は、逆周波数変換部105から取得した画像信号に基づき、最終的な復号画像を生成する。加算部108は、後の動き補償で用いられる可能性があるため、復号画像を復号画像蓄積部109に記憶する。
【0033】
復号画像蓄積部109は、加算部108から取得した復号画像を、参照画像として蓄積する。復号画像蓄積部109に蓄積された参照画像は、動き補償部107により読み出される。
【0034】
<係数分散部>
次に、実施例1における係数分散部の詳細について説明する。
図3は、実施例1における係数分散部104の構成の一例を示すブロック図である。
図3に示す係数分散部104は、出現判定部200、周波数判定部210、分散部220、及び成分判定部230を有する。
【0035】
出現判定部200は、復号されたストリームに含まれる、基底ベクトルで表現可能な周波数変換により符号化された各ブロックの周波数変換係数の交流成分が、基底ベクトルのパターンを視認させる単独係数とみなせるか否かを判定する。
【0036】
出現判定部200は、上記処理を実現するため、係数個数カウント部201、係数値測定部202、及び単独係数判定部203を有する。
【0037】
係数個数カウント部201は、例えば8×8のブロック内のDCT係数のうち、交流成分のDCT係数について非0の係数の個数をカウントする。係数個数カウント部201は、カウント値と非0のDCT係数とを係数値測定部202に出力する。
【0038】
係数値測定部202は、取得した交流成分の非0のDCT係数の絶対値を測定する。係数値測定部202は、カウント値と、非0のDCT係数のうち、最大DCT係数と、2番目に大きいDCT係数とを単独係数判定部203に出力する。
【0039】
単独係数判定部203は、取得したカウント値と、最大DCT係数と、2番目に大きいDCT係数とを用いて、ブロック内の直流成分以外の有効なDCT係数が単独(1個)とみなせるかどうかを判定する。
【0040】
単独係数判定部203は、カウント値が1つの場合は、その係数は、単独係数であると判定する。また、単独係数判定部203は、カウント値が2つ以上の場合、最大DCT係数と、2番目に大きいDCT係数との比を計算する。単独係数判定部203は、この比が、閾値(第1閾値)より大きい場合は、最大DCT係数を実質の単独係数とみなす。
【0041】
単独係数とは、そのブロック内の交流成分のうち、1つのみが存在するとみなせるDCT係数のことをいう。単独係数がブロック内にあるということは、ブロック内で基底ベクトルのパターンを視認させることを意味する。
【0042】
つまり、出現判定部200は、最大周波数変換係数が非0であり1つのみ、又は最大周波数変換係数と2番目に大きい周波数変換係数との比が第1閾値以上であれば、判定対象のブロックは、基底ベクトルのパターンを視認させる単独係数とみなせるブロックであると判定することを意味する。
【0043】
なお、第1閾値は、例えば10倍などであり、実験などにより適切な値が決められ、予め設定されていればよい。
【0044】
単独係数判定部203は、判定した単独係数を周波数判定部210に出力する。また、単独係数判定部203は、単独係数がないと判定した場合、ブロック内のDCT係数を逆周波数変換部105にそのまま出力する。
【0045】
周波数判定部210は、単独係数について、その周波数により分散処理を行うか否かを判定する。周波数判定部210は、例えば、単独係数である最大周波数変換係数の周波数が、所定の周波数(第2閾値)よりも高いか否かを判定する。
【0046】
図4は、所定の周波数(その1)を示す図である。
図4に示す例では、低周波方向の3×3以外の基底ベクトルで単独係数となれば、その単独係数の周波数は、所定の周波数よりも高いと判定される。
図4に示すように、周波数判定部210は、所定の周波数として、水平方向及び垂直方向で閾値を設定してもよい。
【0047】
図5は、所定の周波数(その2)を示す図である。
図5に示す例では、低周波方向で、かつ左上方向の10個の基底ベクトル以外で単独係数となれば、その単独係数の周波数は、所定の周波数よりも高いと判定される。周波数判定部210は、
図5に示すような、高周波と低周波の境界となる所定の周波数を設定してもよい。
【0048】
なお、周波数判定部210により、高周波の単独係数に対してのみ分散処理を行わせるようにしたのは、低周波の基底ベクトルは、自然画像にも存在しうるからである。自然画像で存在する可能性が低い高周波の基底ベクトルのパターンが、復号画像に視認できる場合に、ユーザは、違和感を覚えると考えられる。
【0049】
周波数判定部210は、単独係数が所定の周波数よりも高い場合は、その単独係数を分散部220に出力し、単独係数が所定の周波数よりも低い場合は、ブロック内のDCT係数を逆周波数変換部105に出力する。なお、周波数判定部210は、必ずしも必要な構成ではなく、単独係数判定部203と分散部220とを接続するようにしてもよい。
【0050】
図3に戻り、分散部220は、出現判定部200により基底ベクトルのパターンを視認させる単独係数とみなせると判定されたブロックに対し、このブロック内の交流成分の最大周波数変換係数を、交流成分の他の周波数変換係数に分散させる。また、分散部220は、周波数判定部210により、最大周波数変換係数の周波数が、前記所定の周波数よりも高いと判定された場合に、分散処理を行ってもよい。
【0051】
分散部220は、上記処理を実現するため、係数フィルタ部221及び正規化部222を有する。
【0052】
係数フィルタ部221は、分散処理を施すと判定された単独係数を含むブロックのみ、分散処理(以降では、フィルタ処理とも称す)を行う。フィルタ処理の基本的な目的は、単独係数を例えば周囲のDCT係数に分散させ、復号画像で基底ベクトルが視認できないようにするためである。次に、単独係数の分散方法について説明する。
【0053】
(分散方法1)
係数フィルタ部221は、単独係数から低周波数方向(左上方向)のDCT係数に、単独係数を分散させる。
図6は、分散方法1の一例を示す図である。
図6に示す例では、係数フィルタ部221は、単独係数の左上のDCT係数に対し、単独係数を分散させる。係数フィルタ部221は、例えば単独係数の所定%(例えば50%)を分散させる。
【0054】
これにより、自然画像として存在しない可能性が高い高周波の基底ベクトルよりも低周波の基底ベクトルを用いて復号画像をぼかすことができるようになる。
【0055】
分散処理が行われることで、例えば単独係数の左上のDCT係数が0から、単独係数の所定%の係数値となり、単独係数の係数値は、元々の係数値から所定%引かれた係数値となる。
【0056】
(分散方法2)
係数フィルタ部221は、成分判定部230の判定結果に基づいて、分散方向を決定してもよい。
【0057】
成分判定部230は、分散対象ブロックの上又は左に位置する復号済みブロックの周波数変換係数の分布を参照し、水平又は垂直どちらの成分が多いかを判定する。ブロック内で、水平、垂直どちらの成分が多いかは、ブロックの対角線の上半分と、下半分との係数個数又は係数個数×係数値の大小で判断することができる。
【0058】
図7は、分散方法2の一例を示す図である。
図7に示す例では、上ブロックでは、上半分に5個、下半分に1個の非0のDCT係数があり、左ブロックでは、上半分に5個、下半分に2個の非0の係数がある例を示す。
【0059】
この場合、係数フィルタ部221は、上ブロック及び左ブロックで上半分の係数が下半分の係数より多いため、右上方向に単独係数を分散させる。このとき、成分判定部230は、上及び左ブロックで上半分の係数が多いため、水平方向の高周波成分が多いと判定する。
【0060】
なお、係数フィルタ部221は、上及び左ブロックで下半分の係数が多い場合、左下方向に単独係数を分散させる。また、係数フィルタ部221は、少しでも低周波方向に分散させるため、上半分の係数が多い場合は上方向に、下半分の係数が多い場合は左方向に単独係数を分散させるようにしてもよい。
【0061】
これにより、係数フィルタ部221は、周囲の復号済みブロックの傾向に応じて、分散方向を決定することができる。
【0062】
(分散方法3)
係数フィルタ部221は、単独係数を、1つのDCT係数ではなく、複数のDCT係数に分散させてもよい。
【0063】
図8は、分散方法3の一例を示す図である。
図8に示す例では、係数フィルタ部221は、単独係数を、右上、左下のDCT係数に分散させる。なお、係数フィルタ部221は、
図8に示す例以外にも、単独係数を3つのDCT係数に分散させたり、分散させる位置を他の位置にしたりしてもよい。
【0064】
分散方法3は、成分判定部230により、上及び左ブロックの係数分布が水平方向と垂直方向とで均一であると判定された場合や、左と上のブロックで係数分布の偏りが異なると判定された場合に、適用されてもよい。
【0065】
図3に戻り、正規化部222は、フィルタ処理が行われたブロックのDCT係数に対して、正規化処理を行う。正規化部222は、フィルタ処理により分散されたDCT係数のノルムと、分散前のDCT係数のノルムが等しくなるように正規化を行う。なお、正規化部222は、係数フィルタ部221において、分散前後でノルムが同じになるように分散されるのであれば、必ずしも必要な構成ではない。
【0066】
以上の処理が、各ブロックで行われ、最終的に画像全体の復号画像が出力される。このとき、上記構成により、基底ベクトルのパターンを視認させる単独係数とみなせるブロックの発生を抑止し、画質の劣化を防ぐことができる。
【0067】
<動作>
次に、画像復号装置10の動作について説明する。
図9は、実施例1における画像復号処理の一例を示すフローチャートである。
図9に示す処理は、1つのブロックに対する処理を示す。
【0068】
ステップS101で、第1復号部102は、DCT係数に関するストリームをエントロピー復号し、DCT係数を取得する。
【0069】
ステップS102で、逆量子化部103は、ブロック単位のDCT係数に対して、逆量子化を行い、逆量子化後のDCT係数を取得する。
【0070】
ステップS103で、係数分散部104(係数個数カウント部201)は、DCT係数のうち、交流成分であり、非0の係数をカウントする。
【0071】
ステップS104で、係数分散部104(単独係数判定部203)は、カウントされた係数値は、1つだけであるか否かを判定する。カウント値が「1」であれば(ステップS104−YES)ステップS106に進み、カウント値が「1」でなければ(ステップS104−NO)ステップS105に進む。
【0072】
ステップS105で、係数分散部104(単独係数判定部203)は、交流成分のDCT係数の絶対値の最大値と、2番目に大きいDCT係数の絶対値との比が、閾値(第1閾値)より大きいか否かを判定する。比が第1閾値より大きければ(ステップS105−YES)ステップS106に進み、比が第1閾値以下であれば(ステップS105−NO)ステップS109に進む。
【0073】
ステップS106で、係数分散部104(周波数判定部210)は、最大のDCT係数の周波数が閾値(第2閾値)より高いか否かを判定する。最大DCT係数の周波数が第2閾値より高ければ(ステップS106−YES)ステップS107に進み、最大DCT係数の周波数が第2閾値より低ければ(ステップS106−NO)ステップS109に進む。
【0074】
ステップS107で、係数分散部104(係数フィルタ部221)は、最大DCT係数を、近傍のDCT係数に分散する。分散方法は、上記分散方法1〜3のいずれかが係数フィルタ部221に設定されていればよい。
【0075】
ステップS108で、係数分散部104(正規化部222)は、分散後のDCT係数に対して、分散前後のDCT係数のノルムが同じになるように正規化処理を行う。
【0076】
ステップS109で、逆周波数変換部105は、係数分散部104から取得したDCT係数に対し、逆DCTを行い、画像信号や差分画像信号を生成する。
【0077】
ステップS110で、加算部108は、動き補償が行われた場合は、差分画像信号と予測画像信号とが加算され、最終的な復号画像が生成される。加算部108は、動き補償が行われていない場合は、画像信号に基づき、最終的な復号画像を生成する。
【0078】
以上、実施例1によれば、基底ベクトルのパターンを視認させる単独係数とみなせるブロックの発生を抑止することで、画質の劣化を防ぐことができる。
【0079】
[実施例2]
図10は、実施例2における画像復号装置20の構成の一例を示すブロック図である。
図10に示す画像復号装置20は、上述した実施例1で説明した画像復号処理をソフトウェアで実装した装置の一例である。
【0080】
図10に示すように、画像復号装置20は、制御部301、主記憶部302、補助記憶部303、ドライブ装置304、ネットワークI/F部306、入力部307、表示部308を有する。これら各構成は、バスを介して相互にデータ送受信可能に接続されている。
【0081】
制御部301は、コンピュータの中で、各装置の制御やデータの演算、加工を行うCPU(Central Processing Unit)である。また、制御部301は、主記憶部302又は補助記憶部303に記憶された画像復号プログラムを実行する演算装置である。制御部301は、入力部307や記憶装置からデータを受け取り、演算、加工した上で、表示部308や記憶装置などに出力する。
【0082】
また、制御部301は、画像復号プログラムを実行することで、実施例1で説明した処理を実現することができる。
【0083】
主記憶部302は、ROM(Read Only Memory)やRAM(Random Access Memory)などである。主記憶部302は、制御部301が実行する基本ソフトウェアであるOS(Operating System)やアプリケーションソフトウェアなどのプログラムやデータを記憶又は一時保存する記憶装置である。
【0084】
補助記憶部303は、HDD(Hard Disk Drive)などであり、アプリケーションソフトウェアなどに関連するデータを記憶する記憶装置である。
【0085】
ドライブ装置304は、記録媒体305、例えばフレキシブルディスクからプログラムを読み出し、記憶部にインストールする。
【0086】
また、記録媒体305に、画像復号プログラムを格納し、この記録媒体305に格納されたプログラムはドライブ装置304を介して画像復号装置20にインストールされる。インストールされた画像復号プログラムは、画像復号装置20により実行可能となる。
【0087】
ネットワークI/F部306は、有線及び/又は無線回線などのデータ伝送路により構築されたLAN(Local Area Network)、WAN(Wide Area Network)などのネットワークを介して接続された通信機能を有する周辺機器と画像復号装置20とのインターフェースである。
【0088】
入力部307は、カーソルキー、数字入力及び各種機能キー等を備えたキーボード、表示部308の表示画面上でキーの選択等を行うためのマウスやスライドパット等を有する。表示部308は、LCD(Liquid Crystal Display)等により構成され、制御部301から入力される表示データに応じた表示が行われる。
【0089】
なお、
図2に示す復号画像蓄積部109は、例えば主記憶部302又は補助記憶部303により実現され、
図2に示す復号画像蓄積部109以外の構成は、例えば制御部301及びワークメモリとしての主記憶部302により実現されうる。
【0090】
画像復号装置20で実行されるプログラムは、実施例1で説明した各部を含むモジュール構成となっている。実際のハードウェアとしては、制御部301が補助記憶部303からプログラムを読み出して実行することにより上記各部のうち1又は複数の各部が主記憶部302上にロードされ、1又は複数の各部が主記憶部302上に生成されるようになっている。
【0091】
このように、上述した実施例1で説明した画像復号処理は、コンピュータに実行させるためのプログラムとして実現されてもよい。このプログラムをサーバ等からインストールしてコンピュータに実行させることで、実施例1で説明した処理を実現することができる。
【0092】
また、このプログラムを記録媒体305に記録し、このプログラムが記録された記録媒体305をコンピュータや携帯端末に読み取らせて、前述した画像復号処理を実現させることも可能である。なお、記録媒体305は、CD−ROM、フレキシブルディスク、光磁気ディスク等の様に情報を光学的,電気的或いは磁気的に記録する記録媒体、ROM、フラッシュメモリ等の様に情報を電気的に記録する半導体メモリ等、様々なタイプの記録媒体を用いることができる。また、上述した実施例で説明した処理は、1つ又は複数の集積回路に実装されてもよい。
【0093】
以上、各実施例について詳述したが、特定の実施例に限定されるものではなく、特許請求の範囲に記載された範囲内において、上記変形例以外にも種々の変形及び変更が可能である。