以下、図面を参照して、本発明の実施の形態について説明する。
図1は本発明を適用した画像処理装置100の一実施の形態に係る構成例を示すブロック図である。画像処理装置100は、例えば、入力された画像信号を、H.264/AVC(Advanced Video Coding)方式により圧縮されて符号化された画像データに変換する。
同図において、入力となる画像信号は、まず、A/D変換部141においてデジタルデータに変換される。
次に、出力となる画像圧縮情報のGOP(Group of Pictures)構造に応じ、画面並べ替えバッファ142においてフレームの並べ替えが行われる。
画面並べ替えバッファ142を介して供給される画像データは、その画像データの画素値と、イントラ予測部152または動き予測・補償部153から供給される画素値との差分情報が加算機143により演算され、直交変換部144に入力される。
入力される画像信号に対応する画像データがイントラ(画像内)符号化される画像データである場合、画面並べ替えバッファ142を介して供給される画像データは、その画像データの画素値と、イントラ予測部152がフレームメモリ151に蓄積されている画像データに基づいて生成する画素値との差分情報が加算機143により演算され、直交変換部144に入力され、その差分情報に対して離散コサイン変換(DCT:Discrete Cosine Transform)、カルーネン・レーベ変換等の直交変換処理が施される。
直交変換部144から出力される変換係数は、量子化部145において量子化処理が施される。なお、以下においては、主として直交変換部144が直交変換処理として、DCT処理を行う場合の例について説明する。
レート制御部154は、量子化部145による量子化処理に用いられる量子化スケールなどを必要に応じて変更するなどして制御することで、出力されるデータのビットレートを制御する。
量子化部145から出力される量子化された変換係数は、可逆変換部146に入力され、可逆変換部146により可変長符号化、算術符号化等の可逆符号化の処理が施された後、蓄積バッファ147に蓄積され、H.264/AVC方式で符号化された画像データとして出力される。
一方、量子化部145から出力される量子化された変換係数は、逆量子化部148にも供給されて逆量子化の処理が施された後、さらに逆直交変換部149において逆直交変換処理が施されて、復号された画像データとなる。
逆直交変換部149から出力される復号された画像データは、デブロックフィルタ150においてブロック歪の除去が施された後、フレームメモリ151に蓄積される。
なお、イントラ予測部152においては、符号化するマクロブロックに応じて、時間軸において前方向(過去側)のフレーム画像データのみを参照画像とする前方向予測モード、時間軸において後ろ方向(未来側)のフレーム画像データのみを参照画像とする後ろ方向予測モード、上記2枚のフレーム画像データの両方を参照画像とする双方向予測モードなどのモードを適用することが可能である。イントラ予測部152において、当該マクロブロックに対して適用されたイントラ予測モードに関する情報は、可逆符号化部146に伝送され、H.264/AVC方式で符号化された画像データにおけるヘッダ情報の一部として符号化される。
一方、入力される画像信号に対応する画像データがインター(画像間)符号化される画像データである場合、画面並べ替えバッファ142を介して供給される画像データは、まず、動き予測・補償部153に入力される。このとき、動き予測・補償部153は、フレームメモリ151から参照画像の画像データを取り出し、その画像データに対して動き予測・補償処理を施すことで予測画像データを生成する。
動き予測・補償部153から出力される予測画像データは、加算器143に入力され、加算器143は、画面並べ替えバッファ142を介して供給される画像データの画素値と、予測画像データの画素値との差分情報を演算する。なお、図1においては、イントラ予測部152と加算器143とが接続されるように示されているが、入力される画像信号に対応する画像データがインター(画像間)符号化される画像データである場合、動き予測・補償部153と加算器143とが接続されるものとする。
その後、イントラ符号化の場合と同様に、加算器143から出力されたデータが直交変換部144に入力され、量子化部145、可逆変換部146による処理を経て蓄積バッファ147に蓄積され、H.264/AVC方式で符号化された画像データとして出力される。
また、量子化部145から出力される量子化された変換係数は、やはり逆量子化部148にも供給され、逆直交変換部149の処理を経て復号された画像データが、デブロックフィルタ150の処理を経てフレームメモリ151に蓄積される。
なお、動き予測・補償部153は、画面並べ替えバッファ142を介して供給される画像データに基づいて生成される動きベクトルに関する情報を可逆符号化部146に供給し、可逆符号化部146により、その情報に対して可変長符号化、算術符号化などの可逆符号化処理が施され、H.264/AVC方式で符号化された画像データにおけるヘッダ情報の一部として符号化される。
また、画像処理装置100においては、画面並べ替えバッファ142を介して供給される画像データにおいて、画像に含まれる、例えば、テロップ、字幕などのキャプションを検出するキャプション検出部155が設けられている。
キャプション検出部155は、例えば、画像の所定のマクロブロックのエッジ数を検出するなどして、文字の画像が含まれるマクロブロックを検出(特定)することでマクロブロック単位にキャプションの検出を行う。そして、キャプション検出部155は、キャプションが検出された場合、キャプションが検出されたことを表す制御信号を、キャプションが検出されたマクロブロックを特定する情報と対応付けて直交変換部144、動き予測・補償部153、およびレート制御部154に供給するようになされている。
ここでマクロブロックは、符号化を行う画像データの中で、例えば、16×16個の画素で構成されるブロックであり、H.264/AVC方式で符号化処理を行う場合の処理単位とされる。
本発明の画像処理装置100においては、キャプション検出部155により検出された場合、画像の中のキャプション部分の劣化をできるだけ抑制するように、画像データの符号化の処理が行われる。すなわち、画像処理装置100は、符号化された画像データが復号されて表示されるとき、画像の中でユーザが注目するキャプション部分ができるだけ劣化しないように画像を処理するようになされている。
H.264/AVCなどの符号化方式による画像の符号化にあたっては、より高い符号化効率を得るためにビットレートの調整を行うことが一般的である。すなわち、画像の中の所定のピクチャ、またはマクロブロックを符号化する場合、通常、そのピクチャ、またはマクロブロックに割り当てられるビット数が少なくなるように符号化される。
このようなビットレートの調整(レート制御)の代表的な方式として、例えば、MPEG-2 TestModel5(TM5)があげられる。TM5のレート制御方法は、各ピクチャへのビット配分を行うステップ1、仮想バッファ制御を用いたレート制御を行うステップ2、及び、視覚特性を考慮した適応量子化を行うステップ3の3つの階層から構成されている。
ステップ1では、GOP内の各ピクチャに対する割当ビット量を、割当対象ピクチャを含めてGOP内で、未だ符号化が行われていないピクチャに対して割り当てられるビット量を元にして配分する。
ステップ2では、ステップ1で求められた各ピクチャに対する割当ビット量と、実際の発生符号量を一致させるため、ピクチャタイプごとに独立に設定した3種類の仮想バッファの容量を元に、量子化スケールをマクロブロック単位のフィードバック制御により求める。
ステップ3では、ステップ2で求められた量子化スケールについて、視覚的に劣化の目立ちやすい平坦部ではより細かく量子化され、劣化の比較的目立ちにくい絵柄の複雑な部分でより粗く量子化されるように、各マクロブロックのアクティビティによって変化させる。
例えば、j番目のマクロブロックのアクティビティactjは、式(1)により求められる。
ここで、var sblkは、1個のマクロブロックを、8×8個の画素で構成される4個のサブブロックに分割し、その分割されたサブブロックの画素値の分散値を表す値であり、式(2)および式(3)により求められる。
ここで、ここで、Pkは1つのマクロブロック内の画素値を表す値とされる。
すなわち、式(1)により、マクロブロックが、8×8個の画素で構成される4個のサブブロックに分割され、その分割されたサブブロックのそれぞれについてフレームDCT符号化モードの場合と、フィールドDCT符号化モードの場合の2通りの場合についての画素値の分散値が求められ、それにより得られた8通りのサブブロックの画素値の分散値(var sblk)のうちの最小のものが選択されることになる。
そして、式(4)により、その値が0.5〜2の範囲をとる正規化アクティビティNactjが求められる。
ここで、avgactは直前に符号化したピクチャでのactjの平均値である。
そして、最終的に求められる量子化スケールコードmquantjは、ステップ2で得られた量子化スケールコードQjを元に、式(5)により与えられる。
すなわち、TM5のレート制御のステップ3においては、符号化されたときの割り当てビット量が大きくなりやすいアクティビティの高いマクロブロックにおいては、大きい量子化スケールが設定されるように、量子化スケールを変化させる。
このように、アクティビティに基づいて量子化スケールを変化させた場合、符号化された画像のデータにおいてビット数ができるだけ少なくなるように(ビットレートが低くなるように)制御することは可能となるが、キャプション部分においては、ユーザに画像の劣化が意識されやすくなってしまう。
図2は、キャプション部分に含まれる文字の画像の例を示している。同図においては、「あ」の文字が示されており、マクロブロック(MB)A乃至Dの4個のマクロブロックの中に1文字が表示されている。また、同図において、マクロブロックA乃至Dは、16×16個の画素で構成されているものとし、上述したアクティビティの算出において、マクロブロックA乃至Dのそれぞれが、8×8個の画素で構成される4個のサブブロックに分割されるものとする。
いま、図2のマクロブロックBについて符号化する場合を考える。マクロブロックBは、サブブロックB-1乃至B-4のサブブロックに分割されており、サブブロックB-1、B-3およびB-4には、文字の画像の一部が含まれているが、サブブロックB-2には文字の画像が含まれていない。
上述したように、TM5のレート制御のステップ3では、式(1)により、マクロブロックが、8×8個の画素で構成される4個のサブブロックに分割され、その分割されたサブブロックのそれぞれの画素値の分散値のうちの最小のものが選択されることになる。画素値の分散値は、例えば、エッジの多い画像ほど大きくなり、エッジの少ない画像ほど小さくなるので、マクロブロックBにおいては、量子化スケールを特定するためのサブブロックの分散値としてサブブロックB-2の分散値が選択されることになる。
サブブロックB-2には、文字の画像が含まれていないので、エッジが存在せず、画素の分散値(アクティビティ)も低いものとなる。従って、TM5のレート制御のステップ3において、マクロブロックBは、アクティビティが低いマクロブロックと見なされ、大きい量子化スケールが設定されることはない。
これに対して、マクロブロックA、C、およびDにおいては、どのサブブロックにも文字の画像の一部がふくまれているので、TM5のレート制御のステップ3において、マクロブロックA、C、およびDは、アクティビティが高いマクロブロックと見なされ、大きい量子化スケールが設定されることになる。
量子化スケールが大きい場合、符号化された画像データを復号して得られる画像において、符号化される前の画像を正確に再生することが難しくなる。図3は、図2の画像を、通常のTM5のレート制御を用いて符号化し、その符号化された画像データを復号して得られた画像を示している。
同図に示されるように、復号して得られた画像において、マクロブロックBの位置では、画像が明瞭に表示されているが、マクロブロックA、C、およびDの位置では、画像が不明瞭(ぼけて)表示されている。このように、文字の一部がぼけて表示されるなどした場合、表示された画像をみているユーザに、画質が低いという印象を与えてしまう可能性が高い。
そこで、本発明の画像処理装置100においては、キャプションが検出された場合、キャプションが含まれるマクロブロックに対しては、TM5のレート制御のステップ3の処理が施されないようになされている。
すなわち、キャプション検出部155が画面並べ替えバッファ144から供給された画像の中のキャプションを検出すると、キャプションが検出されたことを表す情報とともに、検出されたキャプションのマクロブロックを特定する情報を、レート制御部154に出力する。
例えば、図2の画像を含む画像がキャプション検出部155に入力された場合、キャプション検出部155は、キャプションが検出されたことを表す情報と、マクロブロックA乃至Dのそれぞれを特定する情報(例えば、位置の情報など)をレート制御部154に出力することで、キャプション検出部155は、マクロブロックA乃至Dがキャプションのマクロブロックであることをレート制御部154に通知することになる。このとき、キャプションの検出と通知は、サブブロック単位ではなく、マクロブロック単位で行われるので、文字の画像を含まないサブブロックB-2を有するマクロブロックBも、当然、キャプションのマクロブロックとしてレート制御部154に通知されることになる。
レート制御部154は、キャプション検出部155から、キャプションのマクロブロックの通知を受けた場合、キャプションのマクロブロックに対しては、TM5のレート制御のステップ3の処理が施されないようにする。すなわち、マクロブロックA乃至Dについては、そのマクロブロックのアクティビティの高低に係らず、TM5のレート制御のステップ2の処理で求められた量子化スケールがそのまま(ステップ3の処理を施されずに)適用される。
その結果、キャプションのマクロブロック(文字の画像が含まれるマクロブロック)は、アクティビティが高いが、大きい量子化スケールが設定されることがなく、符号化された画像データを復号して得られる画像において、符号化される前の画像を、ほぼ正確に再生することが可能となる。
また、レート制御部154は、キャプション検出部155から、キャプションのマクロブロックの通知を受けていない場合、それらのマクロブロックに対しては、通常のTM5のレート制御の処理(ステップ3の処理を含む処理)が施されるようにする。すなわち、文字の画像が含まれないマクロブロックについては、TM5のレート制御のステップ1乃至3の処理が施される。
これにより、文字の画像が含まれないマクロブロックについては、レート制御部154がアクティビティに基づいて量子化部145を制御して量子化スケールを変化させて符号化の処理が行われるので、符号化された画像のデータにおいてビット数ができるだけ少なくなるように(ビットレートが低くなるように)制御することが可能となる。
一般に人間の視覚特性は、エッジの少ない低周波成分に敏感であるため、TM5のレート制御のステップ3の処理のように、エッジが多く含まれる画像を符号化する場合、量子化スケールを大きく設定することは、符号化されたデータのビット数を少なくする上で効果的な方式と言える。
しかしながら、キャプション部分には、文字などが表示されており、復号された画像を見るユーザは、通常、他の部分と比較してキャプション部分を、より注意して見ることになり、キャプション部分における画像の劣化は、ユーザに意識されやすい。このため、従来、エンコーダにおいて、ビットレートを低く抑えながら、復号した画像がより自然で美しい画像となるように符号化しても、実際に復号された画像を見たユーザに、画質が低いという印象を与えてしまう場合があった。
これに対して、本発明の画像処理装置100においては、キャプション部分のマクロブロックを符号化する場合、TM5のレート制御のステップ3の処理が行われないので、復号された画像を見たユーザに違和感を与えることがない。また、画像の中のキャプション部分における符号化効率は下がるものの、キャプション部分以外の部分では、TM5のレート制御のステップ3の処理が行われるので、画像全体としては、人間の視覚特性を考慮した効率的な符号化が行われることになる。その結果、本発明によれば、符号化された画像データのビットレートを低く抑えながら、再生された画像を見たユーザの満足度を高めることができる。
ここまで、レート制御部154によるレート制御の方式を変更することで、キャプション部分の劣化をできるだけ小さくするように符号化する例について説明したが、他の方式により、キャプション部分の劣化をできるだけ小さくするように符号化することもできる。
最初に、動き予測・補償部153による予測画像データの生成を、適切に制御することによりキャプション部分の劣化をできるだけ小さくするように符号化する例について説明する。
図4aと図4bは、動き予測・補償部153による動き補償予測の処理を説明する図である。H.264/AVCで符号化された画像データにおいては、画像データのフレーム構造がフレームストラクチャの場合、マクロブロックはトップフィールドとボトムフィールドがインターレースされた16画素×16ライン(輝度信号)のフレームブロックで構成され、フレーム動き補償予測、またはフィールド動き補償予測という動き補償予測が用いられる。
フレーム動き補償予測は、インターレースされた2つのフィールドが合成されたフレームで動き補償予測を行うもので、輝度信号はインターレースされた16画素×16ラインブロックごとに予測される。インターレース信号においては、1フレームを構成する2つのフィールドのうち、空間的に上にあるフィールドがトップフィールドと呼ばれ、空間的に下にあるフィールドがボトムフィールドと呼ばれる。
図4aは、例えば、1フレーム離れた参照フレーム(動き予測・補償部153から出力される予測画像データのフレーム)から前方向の動き補償予測を行う例を示す図である。同図においては、トップフィールドの画素が円で示され、またボトムフィールドの画素が四角形で示されており、「MV」で示される動きベクトルに従って、参照フレームに対応する入力フレーム(画面並べ替えバッファ142から出力される画像データのフレーム)の画素位置が特定される。
フレーム動き補償予測は、例えば、比較的ゆっくりした動きで、フレーム内での相関が高いまま等速度で動いている場合に有効な予測方式である。
一方、フィールド動き補償予測とは、フィールドごとに動き補償を行うもので、図4bに示されるように、トップフィールドに動きベクトル「MV1」、ボトムフィールドには動きベクトル「MV2」がそれぞれ設定され、「MV1」、または「MV2」のそれぞれの動きベクトルに従って、参照フレームに対応する入力フレームの画素位置が特定される。
また、入力フレーム中の画素に対応する参照フレーム中のフィールドはトップフィールドとされるようにすることもできるし、ボトムフィールドとされるようにすることもできる。図4bの例では、入力フレーム中のトップフィールドの画素、ボトムフィールドの画素のいずれに対しても参照フレーム中のトップフィールドが参照されている。なお、同図においてもトップフィールドの画素が円で示され、またボトムフィールドの画素が四角形で示されており、フィールド動き補償予測では、マクロブロック内の各フィールド別に予測されるため、16画素x8ラインのフィールドブロック単位で予測されることになる。
画像の中に、文字が表示されている場合、通常、時間の経過に伴って表示された文字が画面内で動いていく可能性は低いと考えられ、また、例えば、文字「あ」の形状は、時間的に前後する画像においても同じ形状とされる。そこで、本発明の画像処理装置100においては、キャプションが検出された場合、キャプションが含まれるマクロブロックに対しては、そのマクロブロックに設定される動きベクトルを、例えば、「0」に固定する。
文字または文字の一部が含まれるマクロブロックに対して、通常の動き補償予測の処理を行うと、個々のマクロブロックに対して異なる動きベクトルが設定されてしまう場合がある。すなわち、マクロブロックに含まれる文字ではなく、その背景の画像などに基づいて動きベクトルが設定されてしまう場合がある。なお、H.264/AVC方式の符号化では、1個のマクロブロックを、8×8個の画素で構成される4個のサブブロックに分割し、個々のサブブロックに対する動きベクトルが設定される。
図5は、図2の画像を、通常の動き補償予測の処理を行って符号化し、その符号化された画像データを復号して得られた画像の例を示している。同図において、個々の枠(サブブロック)に示される矢印のそれぞれが動きベクトルを表している。この例では、例えば、背景の画像の動きに伴って、個々のサブブロックのそれぞれに、別々の動きベクトルが設定されており、その結果、図5の画像に示される「あ」の文字が歪みのある状態で表示されている。
これに対して、本発明の画像処理装置100においては、キャプションが含まれるマクロブロックに対して設定される動きベクトルが、例えば、「0」に固定される。
例えば、図2の画像を含む画像がキャプション検出部155に入力された場合、キャプション検出部155は、キャプションが検出されたことを表す情報と、マクロブロックA乃至Dのそれぞれを特定する情報(例えば、位置の情報など)を動き予測・補償部153に出力することで、キャプション検出部155は、マクロブロックA乃至Dがキャプションのマクロブロックであることを動き予測・補償部153に通知することになる。
動き予測・補償部153は、キャプション検出部155から、キャプションのマクロブロックの通知を受けた場合、キャプションのマクロブロックに対しては、設定される動きベクトルが「0」に固定されるようにする。すなわち、マクロブロックA乃至Dについては、予測画像データにおける動きの補償が行われないことになる。
その結果、キャプションのマクロブロック(文字の画像が含まれるマクロブロック)は、背景の画像が動いたとしても、動きベクトルが「0」に固定され、符号化された画像データを復号して得られる画像において、文字(いまの場合「あ」)の画像を、ほぼ正確に再生することが可能となる。
また、動き予測・補償部153は、キャプション検出部155から、キャプションのマクロブロックの通知を受けていない場合、それらのマクロブロックに対しては、通常通り動きベクトルを設定する。すなわち、文字の画像が含まれないマクロブロックについては、画像の動きに応じた適切な予測画像が生成される。
これにより、復号された画像を見たユーザに違和感を与えることがなく、また、画像全体としては、動きを考慮した美しい画像を復号できるように、符号化が行われることになる。
なお、ここでは、動きベクトルを「0」に固定すると説明したが、固定される値は、「0」に限られるものではなく、例えば、「0」に近い予め設定された所定の比較的小さい範囲の値に固定されるようにしてもよい。
あるいはまた、動き予測・補償部153が、キャプション検出部155から、キャプションのマクロブロックの通知を受けた場合、キャプションが含まれるマクロブロックに対しては、動きベクトルが設定されるサブブロックのサイズを、大きく設定するようにしてもよい。
すなわち、動きベクトルの設定にあたっては、上述したように、通常、1つのマクロブロックが、8×8個の画素で構成される4個のサブブロックに分割され、個々のサブブロックに対する動きベクトルが設定されるが、キャプションが検出された場合、キャプションが含まれるマクロブロックに対しては、サブブロックのサイズを、例えば、16×16の画素で構成されるブロックとするようにしてもよい。このようにすることで、マクロブロックA乃至Dに対して、それぞれ1つの動きベクトルのみが設定されることになり、図5を参照して上述したような、例えば、背景の画像の動きに伴って、個々のサブブロックのそれぞれに、別々の動きベクトルが設定され、画像の文字が歪みのある状態で表示されることを抑止することが可能となる。
あるいはまた、キャプションが検出された場合、キャプションが含まれるマクロブロックに対しては、図4aに示されるフレーム動き補償予測のみが行われるようにし、フィールド動き補償予測が行われないようにしてもよい。
図6(a)乃至(c)は、文字「あ」の画像について、それぞれ全体を表示させた場合の図、インターレースのトップフィールドのみを表示させた場合の図、インターレースのボトムフィールドのみを表示させた場合の図である。同図に示されるように、文字の画像は、通常、動かないので、符号化を行うときには、文字の中のトップフィールドに属する部分は、トップフィールドを参照することが望ましく、文字の中のボトムフィールドに属する部分は、ボトムフィールドを参照することが望ましい。そのようにすることで、符号化された画像が復号されたとき、文字「あ」の画像が正確に表示されるようにすることが可能となる。
しかしながら、フィールド動き補償予測においては、図4bを参照して上述したように、トップフィールドの画素に対して、ボトムフィールドの画素を参照させたり、ボトムフィールドの画素に対して、トップフィールドの画素を参照させたりすることが可能であるので、キャプションが含まれるマクロブロックに対して、フィールド動き補償予測が行われると、符号化された画像が復号されたとき、文字「あ」の画像が正確に表示できなくなることがある。
そこで、キャプションが含まれるマクロブロックに対しては、図4aに示されるフレーム動き補償予測のみが行われるようする。この場合、動き予測・補償部153が、キャプション検出部155から、キャプションのマクロブロックの通知を受けたとき、キャプションのマクロブロックに対しては、フレーム動き補償予測のみを行って予測画像データを生成するようにすればよい。なお、H.264/AVC方式の符号化において、フレーム動き補償予測のみを行わせる場合、当該マクロブロックに対して設定される参照ピクチャ番号(ref_idx)を「0」、または、予め設定された値に設定するようにすればよい。
その結果、キャプションのマクロブロック(文字の画像が含まれるマクロブロック)は、動きベクトルを「0」に固定した場合と同様に、符号化された画像データを復号して得られる画像において、文字(いまの場合「あ」)の画像を、ほぼ正確に再生することが可能となる。
また、動き予測・補償部153は、キャプション検出部155から、キャプションのマクロブロックの通知を受けていない場合、それらのマクロブロックに対しては、通常通りフレーム動き補償予測またはフィールド動き補償予測を適応的に行って予測画像データを生成する。すなわち、文字の画像が含まれないマクロブロックについては、画像の動きに応じた適切な予測画像が生成される。
これにより、やはり復号された画像を見たユーザに違和感を与えることがなく、また、画像全体としては、動きを考慮した美しい画像を復号できるように、符号化が行われることになる。
あるいはまた、動き予測・補償部153が、キャプション検出部155から、キャプションのマクロブロックの通知を受けた場合、キャプションが含まれるマクロブロックに対しては、マクロブロックモードを、「スキップト・マクロブロック」というマクロブロックモードに固定するようにしてもよい。
「スキップト・マクロブロック」というマクロブロックモードが設定されたマクロブロックに対しては、参照面の画像(予測画像データの画像)との差分の抽出が行われず、符号化された画像データが復号されて得られる画像は、結果として参照面の画像と同じ画像となる。
キャプションに含まれる文字の画像は、通常、ほぼ動かないものであり、また、例えば、文字「あ」の形状は、時間的に前後する画像においても同じ形状とされるので、参照面の画像を、そのまま表示させた方が文字の画像を正確に表示することが可能となることが多い。
図7(a)は、文字「あ」の画像を符号化するときの、動き予測・補償部153により生成される予測画像データの画像(参照面の画像)の例を示している。図7(b)は、図7(a)に示される予測画像データとの差分を抽出して符号化された符号化データが復号されて得られた画像の例を示している。同図に示されるように、図7(b)の画像は、図7(a)の画像と比較して歪んだ画像となって表示されている。
「スキップト・マクロブロック」というマクロブロックモードが設定されたマクロブロックに対しては、参照面の画像(予測画像データの画像)との差分の抽出が行われないので、文字の画像を含むマクロブロック、すなわちキャプションのマクロブロックに対して、「スキップト・マクロブロック」というマクロブロックモードが設定されるようにすれば、図7(a)に示されるような歪みの少ない画像を表示させるようにすることが可能となる。
なお、キャプションのマクロブロックに対して、必ず「スキップト・マクロブロック」というマクロブロックモードが設定されるようにする必要はなく、他のマクロブロックモードと比較して「スキップト・マクロブロック」がより設定されやすくするようにすればよい。
あるいはまた、動き予測・補償部153が、キャプション検出部155から、キャプションのマクロブロックの通知を受けた場合、キャプションが含まれるマクロブロックに対しては、参照方向(予測方向)を1方向に制限するようにしてもよい。
例えば、H.264/AVC方式で符号化すべきマクロブロックが、Bスライスのマクロブロックである場合、前方予測、後方予測、または双方向予測の3通りの予測符号化が可能である。すなわち、動き予測・補償部153が、符号化すべきマクロブロックの画像よりも時間的に前の画像に基づく予測画像データを生成して符号化する前方予測、動き予測・補償部153が、符号化すべき画像よりも時間的に後の画像に基づく予測画像データを生成して符号化する後方予測、動き予測・補償部153が、符号化すべき画像よりも時間的に前の画像に基づく予測画像データ、および後の画像に基づく予測画像データを生成して符号化する双方向予測のうち、キャプションが含まれるマクロブロックに対しては、前方予測または後方予測のみが行われるようにしてもよい。
図8(a)乃至(c)は、文字「あ」の画像を符号化するときの、動き予測・補償部153により生成される予測画像データの画像(参照面の画像)の例を示している。図8(a)は、前方予測の場合の参照面の画像の例であり、図8(b)は、後方予測の場合の参照面の画像の例であり、図8(c)は、双方向予測の場合の参照面の画像の例である。同図に示されるように、図8(c)の画像は、図8(a)または図8(b)の画像と比較して歪んだ画像となって表示されている。
双方向予測の場合、予測画像データは、符号化すべきマクロブロックの画像より時間的に前の画像と、時間的に後の画像のそれぞれのマクロブロックに含まれる画素の平均値により生成される。従って、上述した時間的に前の画像と、時間的に後の画像において、わずかでも空間的なずれなどがある場合、生成される予測画像のデータの画像は、図8(c)に示されるように歪んだものとなってしまう。
キャプションが含まれるマクロブロックに対しては、前方予測または後方予測のみが行われるようにすることで、生成される予測画像データの画像を、図8(a)または図8(b)に示されるような歪みの少ない画像とすることが可能となり、その結果、符号化された符号化データが復号されて得られた画像においても、文字の画像を正確に表示することが可能となる。
あるいはまた、動き予測・補償部153が、キャプション検出部155から、キャプションのマクロブロックの通知を受けた場合、キャプションが含まれるマクロブロックに対しては、動き補償の精度を、整数画素精度、または1/2画素精度に制限するようにしてもよい。
例えば、H.264/AVC方式での符号化においては、動き補償の精度を、整数画素精度、1/2画素精度、1/4画素精度とすることが可能である。例えば、1/2画素精度の動き補償を行う場合、参照面の画像の中で動きベクトルにより特定される位置に画素がないとき、近隣の2つ画素値に基づいて、画素と画素の中間に位置する画素の画素値を仮想的に生成する処理が行われる。
図9は、動き補償の精度の例を説明する図であり、いま、参照面の画像の中に、画素E、F、G、H、I、およびJの6つの画素があるものとする。例えば、H.264/AVC方式における動き補償では、6tap Fair Filterと呼ばれるフィルタリング処理が施されることで1/2精度の画素の画素値の生成が行われる。例えば、同図の画素bの画素値を生成する場合、上述の画素E乃至Jのそれぞれの画素値に対して予め設定された係数を乗じるフィルタリング処理を行うことにより画素bの画素値が生成される。
例えば、画素aまたはcの画素値を生成する場合、1/4画素精度の動き補償が行われることになる。この場合、参照面の画像の中に、実在する画素E乃至Jのみから画素値を生成することができないので、画素aまたはcの画素値を生成にあたっては、1/2画素精度の動き補償により生成された画素bの画素値も用いられることになる。
すなわち、1/4画素精度の動き補償が行われる場合、参照面の画像の中に、実在しない画素に基づいて仮想的な画素が生成されることになる。
図10(a)乃至(c)は、文字「あ」の画像を符号化するときの、動き予測・補償部153により生成される予測画像データの画像(参照面の画像)の例を示している。図10(a)は、整数精度の動き補償の場合の参照面の画像の例であり、図10(b)は、1/2画素精度の動き補償の場合の参照面の画像の例であり、図10(c)は、1/4画素精度の動き補償の場合の参照面の画像の例である。同図に示されるように、図10(c)の画像は、図10(a)または図10(b)の画像と比較して歪んだ画像となって表示されている。
キャプションに含まれる文字の画像は、通常、ほぼ動かないものであり、また、例えば、文字「あ」の形状は、時間的に前後する画像においても同じ形状とされるので、仮想的に生成された画素に基づいて予測画像データを生成すると、歪んだ画像となることが多い。
キャプションが含まれるマクロブロックに対しては、動き補償の精度が、整数画素精度、または1/2画素精度に制限されるようにすることで、生成される予測画像データの画像を、図10(a)または図10(b)に示されるような歪みの少ない画像とすることが可能となり、その結果、符号化された符号化データが復号されて得られた画像においても、文字の画像を正確に表示することが可能となる。
次に、直交変換部144による直交変換に関する処理を、適切に制御することによりキャプション部分の劣化をできるだけ小さくするように符号化する例について説明する。
MPEG2符号化方式では、直交変換部144による直交変換処理としてDCTが行われる場合、2種類のDCT符号化モードが用いられる。図11(a)と図11(b)は、それぞれのDCT符号化モードを説明する図である。
フレームDCT符号化モードの場合、マクロブロックの輝度信号が、例えば、4個のサブブロックに分解される際に、各サブブロックが図11(a)示されるように、トップフィールドとボトムフィールドのそれぞれを含んで構成されるように分解される。
一方、フィールドDCT符号化モードの場合、マクロブロックの輝度信号が、例えば、4個のサブブロックに分解される際に、図11(b)に示されるように、各サブブロックのそれぞれが、トップフィールドまたはボトムフィールドのみで構成されるように分解される。
H.264/AVC符号化方式では、画像の中で上下に(垂直方向に)隣接する2つのマクロブロックで構成されるマクロブロックペア単位に、フレーム符号化するかフィールド符号化するかを適応的に選択できるようになされている。H.264/AVCのビットストリーム中の、シーケンスパラメタセットRBSP(Raw Byte Sequence Payloads)中に、mb_adaptive_frame_field_flag(マクロブロック適応フレーム・フィールド・フラグ)というパラメタが存在し、また、スライスヘッダの中に、field_pic_flag(フィールド・ピクチャ・フラグ)というパラメタが存在する。これらのフラグの設定によって、フレームおよびマクロブロック単位の符号化方式(フレーム符号化またはフィールド符号化)が定まる。
符号化すべき画像データが、インターレース(飛び越し走査)・フォーマットである場合は、ピクチャレベルまたはマクロブロックレベルでの符号化処理(個々のピクチャまたはマクロブロックペアを、フレーム符号化するか、またはフィールド符号化する処理)を適応的に行うようにすることが可能である。例えば、H.264/AVCのビットストリームのシーケンスパラメタセット中の、Mb_adaptive_frame_field_flagを「1」に設定し、スライスヘッダ中のfield_pic_flagを「0」に設定すると、ピクチャ全体としてフレーム符号化を行い、マクロブロックペアに対して、フィールド符号化またはフレーム符号化を行うことが可能である。
ところで、マクロブロックまたはサブブロックに対して直交変換処理と量子化処理を施して圧縮して符号化し、符号化されたデータを復号して得られる画像においては、量子化誤差によりエッジ周辺部に、モスキートノイズが発生する。
画像データを符号化するときの量子化誤差は、MPEG2符号化方式において、上述したフレームDCT符号化モードの場合、フレーム単位に発生することになり、上述したフィールドDCT符号化モードの場合、フィールド単位に発生することになる。すなわち、フレームDCT符号化モードによる符号化が行われる場合、量子化誤差によるモスキートノイズが、トップフィールドとボトムフィールドの双方にほぼ均等に生じるのに対して、フィールドDCT符号化モードによる符号化が行われる場合、量子化誤差によるモスキートのノイズが、トップフィールドまたはボトムフィールドのいずれか一方においてより顕著に発生することがある。
図12(a)と(b)は、文字「あ」の画像を符号化した符号化データと復号して得られた画像の例を示している。図12(a)は、フレームDCT符号化モードの場合の画像の例であり、図12(b)は、フィールドDCT符号化モードの場合の画像の例であり、図12(b)には、図中横方向の線状のモスキートノイズが発生している。このように、文字の画像の中で、トップフィールドまたはボトムフィールドのいずれか一方に(規則的に)、より顕著なモスキートノイズが発生すると、文字全体にモスキートノイズが発生している図12(a)の画像の場合と比較してより視覚されやすい歪みとなってしまう。
そこで、本発明の画像処理装置100においては、直交変換部144が、キャプション検出部155から、キャプションのマクロブロックの通知を受けた場合、キャプションのマクロブロックのマクロブロックペアに対しては、フレーム符号化による符号化のみを行うようになされている。
このようにすることで、キャプションの画像を符号化したデータを復号して得られる画像において、図12(b)に示されるような、ユーザに視覚されやすいモスキートノイズが発生することを抑止できる。
なお、直交変換部144が、マクロブロックペアに対して、フレーム符号化による符号化を行う場合、同時に動き予測・補償部153が図4(a)を参照して上述したフレーム動き補償予測を行うようにしてもよい。
あるいはまた、直交変換部144が、キャプション検出部155から、キャプションのマクロブロックの通知を受けた場合、キャプションが含まれるマクロブロックに対しては、直交変換処理に伴ってそのマクロブロックをサブブロックに分割するとき、分割されるサブブロックのサイズ(いわゆる直交変換サイズ)を、4×4個の画素で構成されるサブブロックに制限するようにしてもよい。
上述したように、直交変換処理と量子化処理を施して圧縮して符号化し、符号化されたデータを復号して得られる画像においては、量子化誤差によりモスキートノイズが発生するが、発生するモスキートノイズは、直交変換処理が施されるサブブロックを単位として伝播することになる。
図13(a)と(b)は、文字「あ」の画像を符号化した符号化データと復号して得られた画像の例を示している。図13(a)は、いわゆる直交変換サイズを4×4(個の画素)とした場合の画像の例であり、図13(b)は、いわゆる直交変換サイズを8×8(個の画素)とした場合の画像の例であり、図13(b)の画像の歪みは、図13(a)の画像の場合と比較してより視覚されやすい歪みとなってしまう。
すなわち、直交変換サイズが大きい場合、一度量子化誤差が発生すると、画像の中の広い範囲でモスキートノイズが発生するが、直交変換サイズが小さい場合、量子化誤差が発生しても、モスキートノイズは、画像の中の比較的狭い範囲に発生することになり、文字の画像を符号化する場合、直交変換サイズが小さい方が、符号化したデータを復号して得られる画像においてモスキートノイズが視覚されにくいことになる。
このように、直交変換サイズを4×4に制限することで、キャプションの画像を符号化したデータを復号して得られる画像において、図13(b)に示されるような、ユーザに視覚されやすいモスキートノイズが発生することを抑止できる。
次に、図14のフローチャートを参照して画像処理装置100による符号化処理について説明する。
ステップS101において、キャプション検出部155は、いまから符号化すべき画像の画像データを取得する。このとき、例えば、画面並べ替えバッファ142を介して供給される画像データがキャプション検出部155により取得される。
ステップS102において、キャプション検出部155は、ステップS101の処理で取得された画像データの画像を解析する。このとき、例えば、画像の所定のマクロブロックのエッジ数を検出するなどして、当該マクロブロックに文字が含まれているか否かがチェックされる。
ステップS103において、キャプション検出部155は、ステップS102の処理による解析の結果に基づいて、その画像のマクロブロックにおいて、キャプションが検出されたか否かを判定する。
ステップS103において、キャプションが検出されたと判定された場合、処理は、ステップS104に進む。このとき、キャプション検出部155は、例えば、キャプションが検出されたことを表す制御信号を、キャプションが検出されたマクロブロックを特定する情報と対応付けて直交変換部144、動き予測・補償部153、およびレート制御部154に供給する。
ステップS104においては、図15乃至図23を参照して後述するように、キャプション対応処理が実行される。
図15は、図14のステップS104のキャプション対応処理の詳細な例を説明するフローチャートである。
同図のステップS201では、キャプション検出部155から、キャプションのマクロブロックの通知を受けたレート制御部154が、キャプションのマクロブロックに対しては、TM5のレート制御のステップ1とステップ2のみを行う。すなわち、キャプションのマクロブロックに対しては、TM5のレート制御のステップ3の処理が施されないようにする。
これにより、図3を参照して上述したように、符号化された画像データを復号して得られた画像において、文字の一部がぼけて表示されることが抑止される。
図16は、図14のステップS104のキャプション対応処理の詳細についての別の例を説明するフローチャートである。
同図のステップS221では、キャプション検出部155から、キャプションのマクロブロックの通知を受けた動き予測・補償部153が、キャプションのマクロブロックに対して設定される動きベクトルを、「0」または「0」に近い所定の範囲の値とする。
これにより、図5を参照して上述したように、符号化された画像データを復号して得られた画像において、個々のサブブロックのそれぞれに、別々の動きベクトルが設定されて文字が歪みのある状態で表示されことが抑止される。
図17は、図14のステップS104のキャプション対応処理の詳細についてのさらに別の例を説明するフローチャートである。
同図のステップS241では、キャプション検出部155から、キャプションのマクロブロックの通知を受けた動き予測・補償部153が、キャプションのマクロブロックに対して、動きベクトルが設定されるサブブロックのサイズを、16×16の画素で構成されるブロックとする。
これにより、やはり、図5を参照して上述したように、符号化された画像データを復号して得られた画像において、個々のサブブロックのそれぞれに、別々の動きベクトルが設定されて文字が歪みのある状態で表示されことが抑止される。
図18は、図14のステップS104のキャプション対応処理の詳細についてのさらに別の例を説明するフローチャートである。
同図のステップS261では、キャプション検出部155から、キャプションのマクロブロックの通知を受けた動き予測・補償部153が、キャプションのマクロブロックに対して設定される参照ピクチャ番号(ref_idx)を「0」、または、予め設定された値に設定する。
これにより、キャプションが含まれるマクロブロックに対しては、図4aに示されるフレーム動き補償予測のみが行われるようになり、フィールド動き補償予測が行われることによる予想画像データの画像における歪みの発生が抑止される。
図19は、図14のステップS104のキャプション対応処理の詳細についてのさらに別の例を説明するフローチャートである。
同図のステップS281では、キャプション検出部155から、キャプションのマクロブロックの通知を受けた動き予測・補償部153が、キャプションのマクロブロックに対して設定されるマクロブロックモードについて、「スキップト・マクロブロック」が優先されて設定されるようにする。
これにより、図7(a)と図7(b)を参照して上述したように、予測画像データとの差分を抽出して符号化された符号化データが復号されて得られた画像ではなく、予測画像データの画像がそのまま表示される可能性が高くなり、歪みの少ない画像を表示させるようにすることが可能となる。
図20は、図14のステップS104のキャプション対応処理の詳細についてのさらに別の例を説明するフローチャートである。
同図のステップS301では、キャプション検出部155から、キャプションのマクロブロックの通知を受けた動き予測・補償部153が、キャプションのマクロブロックに対して前方予測、または後方予測を行う。
これにより、図8(a)乃至(c)を参照して上述したように、双方向予測により生成される予測画像データの画像が歪んだものとなることが抑止される。
図21は、図14のステップS104のキャプション対応処理の詳細についてのさらに別の例を説明するフローチャートである。
同図のステップS321では、キャプション検出部155から、キャプションのマクロブロックの通知を受けた動き予測・補償部153が、キャプションのマクロブロックに対する動き補償の画素精度を、整数画素制度、または1/2画素制度とする。
これにより、図10(a)乃至(c)を参照して上述したように、1/4画素精度の動き補償により予測画像データの画像が歪んだ画像となることが抑止される。
図22は、図14のステップS104のキャプション対応処理の詳細についてのさらに別の例を説明するフローチャートである。
同図のステップS341では、キャプション検出部155から、キャプションのマクロブロックの通知を受けた直交変換部144が、キャプションのマクロブロックのマクロブロックペアに対してフレーム符号化(フレームDCT符号化モード)による符号化を行う。
これにより、図12(a)と図12(b)を参照して上述したように、キャプションの画像に対してフィールド符号化の符号化が行われ、符号化したデータを復号して得られる画像において、ユーザに視覚されやすいモスキートノイズが発生することを抑止できる。
図23は、図14のステップS104のキャプション対応処理の詳細についてのさらに別の例を説明するフローチャートである。
同図のステップS361では、キャプション検出部155から、キャプションのマクロブロックの通知を受けた直交変換部144が、キャプションのマクロブロックのマクロブロックペアの直交変換サイズを4×4にする。
これにより、図13(a)と図13(b)を参照して上述したように、キャプションの画像に対して直交変換サイズが大きい状態で符号化が行われ、画像を符号化したデータを復号して得られる画像において、ユーザに視覚されやすいモスキートノイズが発生することを抑止できる。
以上のように、キャプション対応処理が実行される。図14のステップS104では、図15乃至図23を参照して上述した処理のうちの1つが実行されるようにしてもよいし、図15乃至図23を参照して上述した処理の全てが行われるようにしてもよい。さらに、図14のステップS104では、図15乃至図23を参照して上述した処理のうちの複数の処理が適宜選択されて実行されるようにしてもよい。
図14のステップS104の処理の後、ステップS105において、当該画像データのH.264/AVC方式による符号化が行われる。このとき、図1を参照して上述したように、加算器143乃至レート制御部154が動作するが、ステップS103の処理でキャプションが検出されたと判定されている場合、レート制御部154、動き予測・補償部153、または量子化部145のそれぞれは、図15乃至図23を参照して上述した処理に対応して動作するものとする。
ステップS106において、全ての画像データが符号化されたか否かが判定され、まだ全ての画像データが符号化されていないと判定された場合、処理は、ステップS101に戻り、それ以降の処理が繰り返し実行される。
ステップS106において、全ての画像データが符号化されたかと判定された場合、符号化処理は終了する。
以上においては、画像処理装置100において、H.264/AVCによる符号化が行われる例について説明したが、MPEG4など他の符号化方式(圧縮符号化方式)による符号化が行われる場合であっても本発明を適用することができる。
なお、上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。上述した一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば図24に示されるような汎用のパーソナルコンピュータ700などに、ネットワークや記録媒体からインストールされる。
図24において、CPU(Central Processing Unit)701は、ROM(Read Only Memory)702に記憶されているプログラム、または記憶部708からRAM(Random Access Memory)703にロードされたプログラムに従って各種の処理を実行する。RAM703にはまた、CPU701が各種の処理を実行する上において必要なデータなども適宜記憶される。
CPU701、ROM702、およびRAM703は、バス704を介して相互に接続されている。このバス704にはまた、入出力インタフェース705も接続されている。
入出力インタフェース705には、キーボード、マウスなどよりなる入力部706、CRT(Cathode Ray Tube)、LCD(Liquid Crystal display)などよりなるディスプレイ、並びにスピーカなどよりなる出力部707、ハードディスクなどより構成される記憶部708、モデム、LANカードなどのネットワークインタフェースカードなどより構成される通信部709が接続されている。通信部709は、インターネットを含むネットワークを介しての通信処理を行う。
入出力インタフェース705にはまた、必要に応じてドライブ710が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア711が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部708にインストールされる。
上述した一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、インターネットなどのネットワークや、リムーバブルメディア711などからなる記録媒体からインストールされる。
なお、この記録媒体は、図24に示される、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されている磁気ディスク(フロッピディスク(登録商標)を含む)、光ディスク(CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む)、光磁気ディスク(MD(Mini-Disk)(登録商標)を含む)、もしくは半導体メモリなどよりなるリムーバブルメディア711により構成されるものだけでなく、装置本体に予め組み込まれた状態でユーザに配信される、プログラムが記録されているROM702や、記憶部708に含まれるハードディスクなどで構成されるものも含む。
本明細書において上述した一連の処理を実行するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
100 画像処理装置, 142 画面並べ替えバッファ, 143 加算器, 144 直交変換部, 145 量子化部, 146 可逆符号化部, 147 蓄積バッファ, 153 動き予測・補償部, 154 レート制御部, 155 キャプション検出部