(57)【特許請求の範囲】
【請求項１】
ビデオ信号を複数の異なる量子化スケール値に基づき量子化して量子化スケール値毎の量子化値を得る量子化手段と、
上記量子化スケール値毎の量子化値のうちの、上記量子化値の整数部と、上記量子化値の小数部の、上記量子化による演算誤差を含まない桁部とが共に０ではないサンプルである有効サンプルを、上記量子化スケール値毎に計数して、上記量子化スケール値毎の有効サンプル数を得る計数手段と、
上記量子化値の小数部を上記量子化スケール値毎に積算して、上記量子化スケール値毎の積算値を得る積算手段と、
上記複数の異なる量子化スケール値のうち、上記有効サンプル数が閾値を超える量子化スケール値に対応する積算値を用いて、上記ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するバックサーチ手段と
を有し、
上記バックサーチ手段は、
上記複数の異なる量子化スケール値のひとつを、注目する第１の量子化スケール値として順次設定し、
上記注目する第１の量子化スケール値に対応する上記積算手段による第１の積算値と、該第１の量子化スケール値を示す量子化スケールコードと１異なる量子化スケールコードが示す第２および第３の量子化スケール値にそれぞれ対応する上記積算手段による第２および第３の積算値とを用い、
上記第１の積算値が第１の閾値より小さく、且つ、上記第２の積算値が該第１の閾値より大きい第２の閾値より大きく、且つ、第３の積算値が該第１の閾値より大きい第３の閾値よりも大きいときに、該第１の積算値に対応する量子化スケール値を上記ビデオ信号の値を割ったときに余りがゼロと見なされる候補量子化スケール値とし、上記候補量子化スケール値のうち最大の量子化スケール値を、前回の符号化の際に用いられた量子化スケール値であると検出する
画像処理装置。
【請求項２】
請求項１に記載の画像処理装置において、
上記バックサーチ手段は、
上記第１の量子化スケール値を示す量子化スケールコードと２異なる量子化スケールコードが示す第４の量子化スケール値に対応する上記積算手段による第４の積算値をさらに用い、
上記第１の積算値と上記第４の積算値との差が第４の閾値より大きいときに、該第１の積算値に対応する上記第１の量子化スケール値を上記ビデオ信号に対して前回の符号化の際に用いられた量子化スケールであると検出するようにした
画像処理装置。
【請求項３】
請求項２に記載の画像処理装置において、
上記第４の量子化スケールコードを示す上記量子化スケールコードは、上記第１の量子化スケール値を示す量子化スケールコードより２大きい量子化スケールコードであって、上記第４の閾値は、上記第２および第３の量子化スケールコードのうち上記第４の量子化スケールコードと上記第１の量子化スケールコードとの間にある量子化スケールコードが示す量子化スケール値に対応する上記閾値より大きい
画像処理装置。
【請求項４】
請求項１に記載の画像処理装置において、
上記ビデオ信号は、ベースバンドビデオ信号に対して変換符号化がなされた被変換信号であって、
上記候補決定手段は、被変換信号の値を割ったときに余りがゼロと見なされる量子化スケール値を上記候補量子化スケール値とする
画像処理装置。
【請求項５】
ビデオ信号を複数の異なる量子化スケール値に基づき量子化して量子化スケール値毎の量子化値を得る量子化のステップと、
上記量子化スケール値毎の量子化値のうちの、上記量子化値の整数部と、上記量子化値の小数部の、上記量子化による演算誤差を含まない桁部とが共に０ではないサンプルである有効サンプルを、上記量子化スケール値毎に計数して、上記量子化スケール値毎の有効サンプル数を得る計数のステップと、
上記量子化値の小数部を上記量子化スケール値毎に積算して、上記量子化スケール値毎の積算値を得る積算のステップと、
上記複数の異なる量子化スケール値のうち、上記有効サンプル数が閾値を超える量子化スケール値に対応する積算値を用いて、上記ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するバックサーチのステップと
を有し、
上記バックサーチのステップは、
上記複数の異なる量子化スケール値のひとつを、注目する第１の量子化スケール値として順次設定し、
上記注目する第１の量子化スケール値に対応する上記積算のステップによる第１の積算値と、該第１の量子化スケール値を示す量子化スケールコードと１異なる量子化スケールコードが示す第２および第３の量子化スケール値にそれぞれ対応する上記積算のステップによる第２および第３の積算値とを用い、
上記第１の積算値が第１の閾値より小さく、且つ、上記第２の積算値が該第１の閾値より大きい第２の閾値より大きく、且つ、第３の積算値が該第１の閾値より大きい第３の閾値よりも大きいときに、該第１の積算値に対応する量子化スケール値を上記ビデオ信号の値を割ったときに余りがゼロと見なされる候補量子化スケール値とし、上記候補量子化スケール値のうち最大の量子化スケール値を、前回の符号化の際に用いられた量子化スケール値であると検出する
画像処理方法。
【請求項６】
ビデオ信号を複数の異なる量子化スケール値に基づき量子化して量子化スケール値毎の量子化値を得る量子化のステップと、
上記量子化スケール値毎の量子化値のうちの、上記量子化値の整数部と、上記量子化値の小数部の、上記量子化による演算誤差を含まない桁部とが共に０ではないサンプルである有効サンプルを、上記量子化スケール値毎に計数して、上記量子化スケール値毎の有効サンプル数を得る計数のステップと、
上記量子化値の小数部を上記量子化スケール値毎に積算して、上記量子化スケール値毎の積算値を得る積算のステップと、
上記複数の異なる量子化スケール値のうち、上記有効サンプル数が閾値を超える量子化スケール値に対応する積算値を用いて、上記ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するバックサーチのステップと
を有し、
上記バックサーチのステップは、
上記複数の異なる量子化スケール値のひとつを、注目する第１の量子化スケール値として順次設定し、
上記注目する第１の量子化スケール値に対応する上記積算のステップによる第１の積算値と、該第１の量子化スケール値を示す量子化スケールコードと１異なる量子化スケールコードが示す第２および第３の量子化スケール値にそれぞれ対応する上記積算のステップによる第２および第３の積算値とを用い、
上記第１の積算値が第１の閾値より小さく、且つ、上記第２の積算値が該第１の閾値より大きい第２の閾値より大きく、且つ、第３の積算値が該第１の閾値より大きい第３の閾値よりも大きいときに、該第１の積算値に対応する量子化スケール値を上記ビデオ信号の値を割ったときに余りがゼロと見なされる候補量子化スケール値とし、上記候補量子化スケール値のうち最大の量子化スケール値を、前回の符号化の際に用いられた量子化スケール値であると検出する前回の符号化の際に用いられた量子化スケール値であると検出する
ようにした画像処理方法をコンピュータ装置に実行させる
画像処理プログラム。
【請求項７】
ビデオ信号を複数の異なる量子化スケール値に基づき量子化して量子化スケール値毎の量子化値を得る量子化手段と、
上記量子化スケール値毎の量子化値のうちの、上記量子化値の整数部と、上記量子化値の小数部の、上記量子化による演算誤差を含まない桁部とが共に０ではないサンプルである有効サンプルを、上記量子化スケール値毎に計数して、上記量子化スケール値毎の有効サンプル数を得る計数手段と、
上記量子化値の小数部を上記量子化スケール値毎に積算して、上記量子化スケール値毎の積算値を得る積算手段と、
上記量子化スケール値毎の積算値を対応する計数値を用いて正規化して正規化積算値を得る正規化手段と、
上記正規化積算値を用いて、上記ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するバックサーチ手段と
を有し、
上記バックサーチ手段は、
上記複数の異なる量子化スケール値のひとつを、注目する第１の量子化スケール値として順次設定し、
上記注目する第１の量子化スケール値に対応する上記正規化手段による第１の正規化積算値と、該第１の量子化スケール値を示す量子化スケールコードと１異なる量子化スケールコードが示す第２および第３の量子化スケール値にそれぞれ対応する上記正規化手段による第２および第３の正規化積算値とを用い、
上記第１の正規化積算値が第１の閾値より小さく、且つ、上記第２の正規化積算値が該第１の閾値より大きい第２の閾値より大きく、且つ、第３の正規化積算値が該第１の閾値より大きい第３の閾値よりも大きいときに、該第１の正規化積算値に対応する量子化スケール値を上記ビデオ信号の値を割ったときに余りがゼロと見なされる候補量子化スケール値とし、上記候補量子化スケール値のうち最大の量子化スケール値を、前回の符号化の際に用いられた量子化スケール値であると検出する
画像処理装置。
【請求項８】
請求項７に記載の画像処理装置において、
上記バックサーチ手段は、
上記第１の量子化スケール値を示す量子化スケールコードと２異なる量子化スケールコードが示す第４の量子化スケール値に対応する上記正規化手段による第４の正規化積算値をさらに用いて、
上記第１の正規化積算値と上記第４の正規化積算値との差が第４の閾値より大きいときに、該第１の正規化積算値に対応する量子化スケール値を上記ビデオ信号に対して前回の符号化の際に用いられた量子化スケールであると検出するようにした
画像処理装置。
【請求項９】
請求項８に記載の画像処理装置において、
上記第４の量子化スケールコードを示す上記量子化スケールコードは、上記第１の量子化スケール値を示す量子化スケールコードより２大きい量子化スケールコードであって、上記第４の閾値は、上記第２および第３の量子化スケールコードのうち上記第４の量子化スケールコードと上記第１の量子化スケールコードとの間にある量子化スケールコードが示す量子化スケール値に対応する上記閾値より大きい
画像処理装置。
【請求項１０】
請求項７に記載の画像処理装置において、
上記ビデオ信号は、ベースバンドビデオ信号に対して変換符号化がなされた被変換信号であって、
上記候補決定手段は、被変換信号の値を割ったときに余りがゼロと見なされる量子化スケール値を上記候補量子化スケール値とする
画像処理装置。
【請求項１１】
ビデオ信号を複数の異なる量子化スケール値に基づき量子化して量子化スケール値毎の量子化値を得る量子化のステップと、
上記量子化スケール値毎の量子化値のうちの、上記量子化値の整数部と、上記量子化値の小数部の、上記量子化による演算誤差を含まない桁部とが共に０ではないサンプルである有効サンプルを、上記量子化スケール値毎に計数して、上記量子化スケール値毎の有効サンプル数を得る計数のステップと、
上記量子化値の小数部を上記量子化スケール値毎に積算して、上記量子化スケール値毎の積算値を得る積算のステップと、
上記量子化スケール値毎の積算値を対応する計数値を用いて正規化して正規化積算値を得る正規化のステップと、
上記正規化積算値を用いて、上記ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するバックサーチのステップと
を有し、
上記バックサーチのステップは、
上記複数の異なる量子化スケール値のひとつを、注目する第１の量子化スケール値として順次設定し、
上記注目する第１の量子化スケール値に対応する上記正規化のステップによる第１の正規化積算値と、該第１の量子化スケール値を示す量子化スケールコードと１異なる量子化スケールコードが示す第２および第３の量子化スケール値にそれぞれ対応する上記正規化のステップによる第２および第３の正規化積算値とを用い、
上記第１の正規化積算値が第１の閾値より小さく、且つ、上記第２の正規化積算値が該第１の閾値より大きい第２の閾値より大きく、且つ、第３の正規化積算値が該第１の閾値より大きい第３の閾値よりも大きいときに、該第１の正規化積算値に対応する量子化スケール値を上記ビデオ信号の値を割ったときに余りがゼロと見なされる候補量子化スケール値とし、上記候補量子化スケール値のうち最大の量子化スケール値を、前回の符号化の際に用いられた量子化スケール値であると検出する
する画像処理方法。
【請求項１２】
ビデオ信号を複数の異なる量子化スケール値に基づき量子化して量子化スケール値毎の量子化値を得る量子化のステップと、
上記量子化スケール値毎の量子化値のうちの、上記量子化値の整数部と、上記量子化値の小数部の、上記量子化による演算誤差を含まない桁部とが共に０ではないサンプルである有効サンプルを、上記量子化スケール値毎に計数して、上記量子化スケール値毎の有効サンプル数を得る計数のステップと、
上記量子化値の小数部を上記量子化スケール値毎に積算して、上記量子化スケール値毎の積算値を得る積算のステップと、
上記量子化スケール値毎の積算値を対応する計数値を用いて正規化して正規化積算値を得る正規化のステップと、
上記正規化積算値を用いて、上記ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するバックサーチのステップと
を有し、
上記バックサーチのステップは、
上記複数の異なる量子化スケール値のひとつを、注目する第１の量子化スケール値として順次設定し、
上記注目する第１の量子化スケール値に対応する上記正規化のステップによる第１の正規化積算値と、該第１の量子化スケール値を示す量子化スケールコードと１異なる量子化スケールコードが示す第２および第３の量子化スケール値にそれぞれ対応する上記正規化のステップによる第２および第３の正規化積算値とを用い、
上記第１の正規化積算値が第１の閾値より小さく、且つ、上記第２の正規化積算値が該第１の閾値より大きい第２の閾値より大きく、且つ、第３の正規化積算値が該第１の閾値より大きい第３の閾値よりも大きいときに、該第１の正規化積算値に対応する量子化スケール値を上記ビデオ信号の値を割ったときに余りがゼロと見なされる候補量子化スケール値とし、上記候補量子化スケール値のうち最大の量子化スケール値を、前回の符号化の際に用いられた量子化スケール値であると検出する
ようにした画像処理方法をコンピュータ装置に実行させる
画像処理プログラム。
【請求項１３】
ビデオ信号を複数の異なる量子化スケール値に基づき量子化して量子化スケール値毎の量子化値を得る量子化手段と、
上記量子化スケール値毎の量子化値のうちの、上記量子化値の整数部と、上記量子化値の小数部の、上記量子化による演算誤差を含まない桁部とが共に０ではないサンプルである有効サンプルを、上記量子化スケール値毎に計数して、上記量子化スケール値毎の有効サンプル数を得る計数手段と、
上記量子化値の小数部を上記量子化スケール値毎に積算して、上記量子化スケール値毎の積算値を得る積算手段と、
上記複数の異なる量子化スケール値のうち、上記有効サンプル数が閾値を超える量子化スケール値に対応する積算値を用いて、上記ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するバックサーチ手段と
を有し、
上記バックサーチ手段は、
上記複数の異なる量子化スケール値のひとつを、注目する第１の量子化スケール値として順次設定し、
上記注目する第１の量子化スケール値に対応する上記積算手段による第１の積算値と、該第１の量子化スケール値を示す量子化スケールコードと１異なる量子化スケールコードが示す第２および第３の量子化スケール値にそれぞれ対応する上記積算手段による第２および第３の積算値とを用い、
上記第１の積算値が第１の閾値より小さく、且つ、上記第２の積算値が該第１の閾値より大きい第２の閾値より大きく、且つ、第３の積算値が該第１の閾値より大きい第３の閾値よりも大きいときに、該第１の積算値に対応する量子化スケール値を上記ビデオ信号の値を割ったときに余りがゼロと見なされる候補量子化スケール値とし、上記候補量子化スケール値のうち最大の量子化スケール値を、前回の符号化の際に用いられた量子化スケール値であると検出する第１のバックサーチ処理と、
上記第１、第２および第３の積算値と、上記第１の量子化スケール値を示す量子化スケールコードと２異なる量子化スケールコードが示す第４の量子化スケールコードに対応する上記積算手段による第４の積算値とを用い、
上記第１の積算値が第４の閾値より小さく、且つ、上記第２の積算値が該第４の閾値より大きい第５の閾値より大きく、且つ、上記第３の積算値が該第１の閾値より大きい第６の閾値よりも大きく、且つ、上記第４の積算値が、上記第２および第３の量子化スケールコードのうち上記第４の量子化スケールコードと上記第１の量子化スケールコードとの間にある量子化スケールコードが示す量子化スケール値に対応する上記閾値より大きいときに、該第１の積算値に対応する量子化スケール値を上記ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値であると検出する第２のバックサーチ処理と
を組み合わせて、上記ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するようにした
画像処理装置。
【請求項１４】
請求項１３に記載の画像処理装置において、
上記第４の閾値は、上記第１の閾値より大きい値とされ、上記第５および第６の閾値は、スケールコード値がそれぞれ対応する上記第２および第３の閾値よりも小さい値とされる
画像処理装置。
【請求項１５】
請求項１３に記載の画像処理装置において、
上記第２のバックサーチ処理に対応する上記有効サンプル数の閾値は、上記第１のバックサーチ処理に対応する上記有効サンプル数の閾値よりも大きい値とされる
画像処理装置。
【請求項１６】
請求項１３に記載の画像処理装置において、
上記ビデオ信号は、ベースバンドビデオ信号に対して変換符号化がなされた被変換信号であって、
上記候補決定手段は、被変換信号の値を割ったときに余りがゼロと見なされる量子化スケール値を上記候補量子化スケール値とする
画像処理装置。
【請求項１７】
ビデオ信号を複数の異なる量子化スケール値に基づき量子化して量子化スケール値毎の量子化値を得る量子化のステップと、
上記量子化スケール値毎の量子化値のうちの、上記量子化値の整数部と、上記量子化値の小数部の、上記量子化による演算誤差を含まない桁部とが共に０ではないサンプルである有効サンプルを、上記量子化スケール値毎に計数して、上記量子化スケール値毎の有効サンプル数を得る計数のステップと、
上記量子化値の小数部を上記量子化スケール値毎に積算して、上記量子化スケール値毎の積算値を得る積算のステップと、
上記複数の異なる量子化スケール値のうち、上記有効サンプル数が閾値を超える量子化スケール値に対応する積算値を用いて、上記ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するバックサーチのステップと
を有し、
上記バックサーチのステップは、
上記複数の異なる量子化スケール値のひとつを、注目する第１の量子化スケール値として順次設定し、
上記注目する第１の量子化スケール値に対応する上記積算のステップによる第１の積算値と、該第１の量子化スケール値を示す量子化スケールコードと１異なる量子化スケールコードが示す第２および第３の量子化スケール値にそれぞれ対応する上記積算のステップによる第２および第３の積算値とを用い、
上記第１の積算値が第１の閾値より小さく、且つ、上記第２の積算値が該第１の閾値より大きい第２の閾値より大きく、且つ、第３の積算値が該第１の閾値より大きい第３の閾値よりも大きいときに、該第１の積算値に対応する量子化スケール値を上記ビデオ信号の値を割ったときに余りがゼロと見なされる候補量子化スケール値とし、上記候補量子化スケール値のうち最大の量子化スケール値を、前回の符号化の際に用いられた量子化スケール値であると検出する第１のバックサーチ処理と、
上記第１、第２および第３の積算値と、上記第１の量子化スケール値を示す量子化スケールコードと２異なる量子化スケールコードが示す第４の量子化スケールコードに対応する上記積算のステップによる第４の積算値とを用い、
上記第１の積算値が第４の閾値より小さく、且つ、上記第２の積算値が該第４の閾値より大きい第５の閾値より大きく、且つ、上記第３の積算値が該第１の閾値より大きい第６の閾値よりも大きく、且つ、上記第４の積算値が、上記第２および第３の量子化スケールコードのうち上記第４の量子化スケールコードと上記第１の量子化スケールコードとの間にある量子化スケールコードが示す量子化スケール値に対応する上記閾値より大きいときに、該第１の積算値に対応する量子化スケール値を上記ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値であると検出する第２のバックサーチ処理と
を組み合わせて、上記ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するようにした
画像処理方法。
【請求項１８】
ビデオ信号を複数の異なる量子化スケール値に基づき量子化して量子化スケール値毎の量子化値を得る量子化のステップと、
上記量子化スケール値毎の量子化値のうちの、上記量子化値の整数部と、上記量子化値の小数部の、上記量子化による演算誤差を含まない桁部とが共に０ではないサンプルである有効サンプルを、上記量子化スケール値毎に計数して、上記量子化スケール値毎の有効サンプル数を得る計数のステップと、
上記量子化値の小数部を上記量子化スケール値毎に積算して、上記量子化スケール値毎の積算値を得る積算のステップと、
上記複数の異なる量子化スケール値のうち、上記有効サンプル数が閾値を超える量子化スケール値に対応する積算値を用いて、上記ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するバックサーチのステップと
を有し、
上記バックサーチのステップは、
上記複数の異なる量子化スケール値のひとつを、注目する第１の量子化スケール値として順次設定し、
上記注目する第１の量子化スケール値に対応する上記積算のステップによる第１の積算値と、該第１の量子化スケール値を示す量子化スケールコードと１異なる量子化スケールコードが示す第２および第３の量子化スケール値にそれぞれ対応する上記積算のステップによる第２および第３の積算値とを用い、
上記第１の積算値が第１の閾値より小さく、且つ、上記第２の積算値が該第１の閾値より大きい第２の閾値より大きく、且つ、第３の積算値が該第１の閾値より大きい第３の閾値よりも大きいときに、該第１の積算値に対応する量子化スケール値を上記ビデオ信号の値を割ったときに余りがゼロと見なされる候補量子化スケール値とし、上記候補量子化スケール値のうち最大の量子化スケール値を、前回の符号化の際に用いられた量子化スケール値であると検出する第１のバックサーチ処理と、
上記第１、第２および第３の積算値と、上記第１の量子化スケール値を示す量子化スケールコードと２異なる量子化スケールコードが示す第４の量子化スケールコードに対応する上記積算のステップによる第４の積算値とを用い、
上記第１の積算値が第４の閾値より小さく、且つ、上記第２の積算値が該第４の閾値より大きい第５の閾値より大きく、且つ、上記第３の積算値が該第１の閾値より大きい第６の閾値よりも大きく、且つ、上記第４の積算値が、上記第２および第３の量子化スケールコードのうち上記第４の量子化スケールコードと上記第１の量子化スケールコードとの間にある量子化スケールコードが示す量子化スケール値に対応する上記閾値より大きいときに、該第１の積算値に対応する量子化スケール値を上記ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値であると検出する第２のバックサーチ処理と
を組み合わせて、上記ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出する
ようにした画像処理方法をコンピュータ装置に実行させる
画像処理プログラム。
【請求項１９】
ビデオ信号を複数の異なる量子化スケール値に基づき量子化して量子化スケール値毎の量子化値を得る量子化手段と、
上記量子化スケール値毎の量子化値のうちの、上記量子化値の整数部と、上記量子化値の小数部の、上記量子化による演算誤差を含まない桁部とが共に０ではないサンプルである有効サンプルを、上記量子化スケール値毎に計数して、上記量子化スケール値毎の有効サンプル数を得る計数手段と、
上記量子化値の小数部を上記量子化スケール値毎に積算して、上記量子化スケール値毎の積算値を得る積算手段と、
上記量子化スケール値毎の積算値を対応する計数値を用いて正規化して正規化積算値を得る正規化手段と、
上記正規化積算値を用いて、上記ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するバックサーチ手段と
を有し、
上記バックサーチ手段は、
上記複数の異なる量子化スケール値のひとつを、注目する第１の量子化スケール値として順次設定し、
上記注目する第１の量子化スケール値に対応する上記正規化手段による第１の積算値と、該第１の量子化スケール値を示す量子化スケールコードと１異なる量子化スケールコードが示す第２および第３の量子化スケール値にそれぞれ対応する上記正規化手段による第２および第３の積算値とを用い、
上記第１の正規化積算値が第１の閾値より小さく、且つ、上記第２の正規化積算値が該第１の閾値より大きい第２の閾値より大きく、且つ、第３の正規化積算値が該第１の閾値より大きい第３の閾値よりも大きいときに、該第１の正規化積算値に対応する量子化スケール値を上記ビデオ信号の値を割ったときに余りがゼロと見なされる候補量子化スケール値とし、上記候補量子化スケール値のうち最大の量子化スケール値を、前回の符号化の際に用いられた量子化スケール値であると検出する第１のバックサーチ処理と、
上記第１、第２および第３の正規化積算値と、上記第１の量子化スケール値を示す量子化スケールコードと２異なる量子化スケールコードが示す第４の量子化スケールコードに対応する上記正規化手段による第４の正規化積算値とを用い、
上記第１の正規化積算値が第４の閾値より小さく、且つ、上記第２の正規化積算値が該第４の閾値より大きい第５の閾値より大きく、且つ、上記第３の正規化積算値が該第１の閾値より大きい第６の閾値よりも大きく、且つ、上記第４の正規化積算値が、上記第２および第３の量子化スケールコードのうち上記第４の量子化スケールコードと上記第１の量子化スケールコードとの間にある量子化スケールコードが示す量子化スケール値に対応する上記閾値より大きいときに、該第１の正規化積算値に対応する量子化スケール値を上記ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値であると検出する第２のバックサーチ処理と
を組み合わせて、上記ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するようにした
画像処理装置。
【請求項２０】
請求項１９に記載の画像処理装置において、
上記第４の閾値は、上記第１の閾値より大きい値とされ、上記第５および第６の閾値は、スケールコード値がそれぞれ対応する上記第２および第３の閾値よりも小さい値とされる
画像処理装置。
【請求項２１】
請求項１９に記載の画像処理装置において、
上記第２のバックサーチ処理に対応する上記有効サンプル数の閾値は、上記第１のバックサーチ処理に対応する上記有効サンプル数の閾値よりも大きい値とされる
画像処理装置。
【請求項２２】
請求項１９に記載の画像処理装置において、
上記ビデオ信号は、ベースバンドビデオ信号に対して変換符号化がなされた被変換信号であって、
上記候補決定手段は、被変換信号の値を割ったときに余りがゼロと見なされる量子化スケール値を上記候補量子化スケール値とする
画像処理装置。
【請求項２３】
ビデオ信号を複数の異なる量子化スケール値に基づき量子化して量子化スケール値毎の量子化値を得る量子化のステップと、
上記量子化スケール値毎の量子化値のうちの、上記量子化値の整数部と、上記量子化値の小数部の、上記量子化による演算誤差を含まない桁部とが共に０ではないサンプルである有効サンプルを、上記量子化スケール値毎に計数して、上記量子化スケール値毎の有効サンプル数を得る計数のステップと、
上記量子化値の小数部を上記量子化スケール値毎に積算して、上記量子化スケール値毎の積算値を得る積算のステップと、
上記量子化スケール値毎の積算値を対応する計数値を用いて正規化して正規化積算値を得る正規化のステップと、
上記正規化積算値を用いて、上記ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するバックサーチのステップと
を有し、
上記バックサーチのステップは、
上記複数の異なる量子化スケール値のひとつを、注目する第１の量子化スケール値として順次設定し、
上記注目する第１の量子化スケール値に対応する上記正規化のステップによる第１の積算値と、該第１の量子化スケール値を示す量子化スケールコードと１異なる量子化スケールコードが示す第２および第３の量子化スケール値にそれぞれ対応する上記正規化のステップによる第２および第３の積算値とを用い、
上記第１の正規化積算値が第１の閾値より小さく、且つ、上記第２の正規化積算値が該第１の閾値より大きい第２の閾値より大きく、且つ、第３の正規化積算値が該第１の閾値より大きい第３の閾値よりも大きいときに、該第１の正規化積算値に対応する量子化スケール値を上記ビデオ信号の値を割ったときに余りがゼロと見なされる候補量子化スケール値とし、上記候補量子化スケール値のうち最大の量子化スケール値を、前回の符号化の際に用いられた量子化スケール値であると検出する第１のバックサーチ処理と、
上記第１、第２および第３の正規化積算値と、上記第１の量子化スケール値を示す量子化スケールコードと２異なる量子化スケールコードが示す第４の量子化スケールコードに対応する上記正規化のステップによる第４の正規化積算値とを用い、
上記第１の正規化積算値が第４の閾値より小さく、且つ、上記第２の正規化積算値が該第４の閾値より大きい第５の閾値より大きく、且つ、上記第３の正規化積算値が該第１の閾値より大きい第６の閾値よりも大きく、且つ、上記第４の正規化積算値が、上記第２および第３の量子化スケールコードのうち上記第４の量子化スケールコードと上記第１の量子化スケールコードとの間にある量子化スケールコードが示す量子化スケール値に対応する上記閾値より大きいときに、該第１の正規化積算値に対応する量子化スケール値を上記ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値であると検出する第２のバックサーチ処理と
を組み合わせて、上記ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するようにした
画像処理方法。
【請求項２４】
ビデオ信号を複数の異なる量子化スケール値に基づき量子化して量子化スケール値毎の量子化値を得る量子化のステップと、
上記量子化スケール値毎の量子化値のうちの、上記量子化値の整数部と、上記量子化値の小数部の、上記量子化による演算誤差を含まない桁部とが共に０ではないサンプルである有効サンプルを、上記量子化スケール値毎に計数して、上記量子化スケール値毎の有効サンプル数を得る計数のステップと、
上記量子化値の小数部を上記量子化スケール値毎に積算して、上記量子化スケール値毎の積算値を得る積算のステップと、
上記量子化スケール値毎の積算値を対応する計数値を用いて正規化して正規化積算値を得る正規化のステップと、
上記正規化積算値を用いて、上記ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するバックサーチのステップと
を有し、
上記バックサーチのステップは、
上記複数の異なる量子化スケール値のひとつを、注目する第１の量子化スケール値として順次設定し、
上記注目する第１の量子化スケール値に対応する上記正規化のステップによる第１の積算値と、該第１の量子化スケール値を示す量子化スケールコードと１異なる量子化スケールコードが示す第２および第３の量子化スケール値にそれぞれ対応する上記正規化のステップによる第２および第３の積算値とを用い、
上記第１の正規化積算値が第１の閾値より小さく、且つ、上記第２の正規化積算値が該第１の閾値より大きい第２の閾値より大きく、且つ、第３の正規化積算値が該第１の閾値より大きい第３の閾値よりも大きいときに、該第１の正規化積算値に対応する量子化スケール値を上記ビデオ信号の値を割ったときに余りがゼロと見なされる候補量子化スケール値とし、上記候補量子化スケール値のうち最大の量子化スケール値を、前回の符号化の際に用いられた量子化スケール値であると検出する第１のバックサーチ処理と、
上記第１、第２および第３の正規化積算値と、上記第１の量子化スケール値を示す量子化スケールコードと２異なる量子化スケールコードが示す第４の量子化スケールコードに対応する上記正規化のステップによる第４の正規化積算値とを用い、
上記第１の正規化積算値が第４の閾値より小さく、且つ、上記第２の正規化積算値が該第４の閾値より大きい第５の閾値より大きく、且つ、上記第３の正規化積算値が該第１の閾値より大きい第６の閾値よりも大きく、且つ、上記第４の正規化積算値が、上記第２および第３の量子化スケールコードのうち上記第４の量子化スケールコードと上記第１の量子化スケールコードとの間にある量子化スケールコードが示す量子化スケール値に対応する上記閾値より大きいときに、該第１の正規化積算値に対応する量子化スケール値を上記ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値であると検出する第２のバックサーチ処理と
を組み合わせて、上記ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出する
ようにした画像処理方法をコンピュータ装置に実行させる
画像処理プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ビデオデータを量子化スケールに基づき量子化する画像処理装置および方法、ならびに、画像処理プログラムに関する。
【０００２】
【従来の技術】
ディジタルＶＴＲ(Video Tape Recorder) に代表されるように、ディジタルビデオ信号およびディジタルオーディオ信号を記録媒体に記録し、また、記録媒体から再生するようなデータ記録再生装置が知られている。ディジタルビデオ信号は、データ容量が膨大となるため、所定の方式で圧縮符号化されて記録媒体に記録されるのが一般的である。近年では、ＭＰＥＧ２(Moving Picture Experts Group 2)方式が圧縮符号化の標準的な方式として知られている。
【０００３】
ＭＰＥＧ２では、動き検出を用いた予測符号化とＤＣＴ(Discrete Cosine Transform)とで得られたデータを量子化して圧縮符号化を行い、さらに、可変長符号化を用いて圧縮効率を高めている。放送局などの使用では、編集の容易さや画質の維持などのため、動き検出による時間軸方向での圧縮は用いられないことが多い。ディジタルビデオ信号は、ブロック単位でＤＣＴされ、得られたＤＣＴ係数がブロック単位で所定に選択された量子化スケール値により量子化される。
【０００４】
ところで、上述のようにして圧縮符号化されたビデオデータを編集する際には、圧縮符号化されたビデオデータが一旦復号化されてベースバンドのビデオデータとされる。そして、編集終了後、ベースバンドビデオデータが再び同様にして圧縮符号化され、磁気テープなどの記録媒体に記録される。このとき、編集の前後のビデオデータに対してなされた圧縮符号化に用いられた量子化スケール値が等しければ、特に問題が生じないが、編集の前後で異なる量子化スケール値を用いて圧縮符号化が行われると、編集後のビデオデータの画質が編集前の画質よりも劣化してしまうことになる。
【０００５】
ここで、例えば一旦圧縮符号化された記録されたビデオデータを単純ダビング(non-shift Dubbing)などの処理のために再生および復号化し、処理後に再度、圧縮符号化して記録媒体に記録する場合に、前回の符号化で用いられた量子化スケール値を検出し、この検出した同じ量子化スケール値を適用して再度符号化することにより、ダビングデータの画質劣化を防止するようにしたアルゴリズムが提案されている。以下では、このような前回の量子化スケール値を検出するアルゴリズムをバックサーチと称する。
【０００６】
このようなバックサーチを行なう構成としては、例えばＭＰＥＧ２による圧縮方式を用いたビデオテープレコーダにおいて、プリエンコードを行なうために設けられたＭＰＥＧエンコーダ内で、ＭＰＥＧ２に基づく多段ステップの量子化演算を行なう場合に、各ステップの除算後に得られる「余り」を合計することにより、その合計値に基づいて前回の量子化スケール値を判定する方法が特開平６−３１９１１２として提案されている。
【０００７】
すなわち、プリエンコードの際には、実際の符号化に先んじて符号量の見積もりが行われる。このとき、多段ステップの量子化演算により、ＭＰＥＧ２で定められた量子化スケール値のそれぞれについて量子化が行われる。この、それぞれの量子化の際の除算後に得られる「余り」が用いられる。
【０００８】
【発明が解決しようとする課題】
このように、量子化後の「余り」を利用してバックサーチを行なう手法では、ハードウェアの演算手法の構成によっては「余り」を求めるために除算結果の小数部に対して除数を乗じなければならない場合があり、その分、演算処理が煩雑になる場合があるという問題点があった。
【０００９】
また、このように小数部に除数をかけて「余り」を求めるようにした場合、除数が大きいほど「余り」の値も大きくなる。しかしながら、この「余り」の値が大きくなると、演算精度を考えた場合に、一律のパラメータ設定値との比較だけでは、正確に割りきれたか否かを判定することが難しいといった不具合も生じるという問題点があった。
【００１０】
したがって、この発明の目的は、前回の符号化で用いられた量子化スケール値を高精度に検出可能な画像処理装置および方法、ならびに、画像処理プログラムを提供することにある。
【００１１】
【課題を解決するための手段】
上述した課題を解決するために、第１の発明は、ビデオ信号を複数の異なる量子化スケール値に基づき量子化して量子化スケール値毎の量子化値を得る量子化手段と、量子化スケール値毎の量子化値のうちの、量子化値の整数部と、量子化値の小数部の、量子化による演算誤差を含まない桁部とが共に０ではないサンプルである有効サンプルを、量子化スケール値毎に計数して、量子化スケール値毎の有効サンプル数を得る計数手段と、量子化値の小数部を量子化スケール値毎に積算して、量子化スケール値毎の積算値を得る積算手段と、複数の異なる量子化スケール値のうち、有効サンプル数が閾値を超える量子化スケール値に対応する積算値を用いて、ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するバックサーチ手段とを有し、バックサーチ手段は、複数の異なる量子化スケール値のひとつを、注目する第１の量子化スケール値として順次設定し、注目する第１の量子化スケール値に対応する積算手段による第１の積算値と、第１の量子化スケール値を示す量子化スケールコードと１異なる量子化スケールコードが示す第２および第３の量子化スケール値にそれぞれ対応する積算手段による第２および第３の積算値とを用い、第１の積算値が第１の閾値より小さく、且つ、第２の積算値が第１の閾値より大きい第２の閾値より大きく、且つ、第３の積算値が第１の閾値より大きい第３の閾値よりも大きいときに、第１の積算値に対応する量子化スケール値をビデオ信号の値を割ったときに余りがゼロと見なされる候補量子化スケール値とし、候補量子化スケール値のうち最大の量子化スケール値を、前回の符号化の際に用いられた量子化スケール値であると検出する画像処理装置である。
【００１２】
また、第２の発明は、ビデオ信号を複数の異なる量子化スケール値に基づき量子化して量子化スケール値毎の量子化値を得る量子化のステップと、量子化スケール値毎の量子化値のうちの、量子化値の整数部と、量子化値の小数部の、量子化による演算誤差を含まない桁部とが共に０ではないサンプルである有効サンプルを、量子化スケール値毎に計数して、量子化スケール値毎の有効サンプル数を得る計数のステップと、量子化値の小数部を量子化スケール値毎に積算して、量子化スケール値毎の積算値を得る積算のステップと、複数の異なる量子化スケール値のうち、有効サンプル数が閾値を超える量子化スケール値に対応する積算値を用いて、ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するバックサーチのステップとを有し、バックサーチのステップは、複数の異なる量子化スケール値のひとつを、注目する第１の量子化スケール値として順次設定し、注目する第１の量子化スケール値に対応する積算のステップによる第１の積算値と、第１の量子化スケール値を示す量子化スケールコードと１異なる量子化スケールコードが示す第２および第３の量子化スケール値にそれぞれ対応する積算のステップによる第２および第３の積算値とを用い、第１の積算値が第１の閾値より小さく、且つ、第２の積算値が第１の閾値より大きい第２の閾値より大きく、且つ、第３の積算値が第１の閾値より大きい第３の閾値よりも大きいときに、第１の積算値に対応する量子化スケール値をビデオ信号の値を割ったときに余りがゼロと見なされる候補量子化スケール値とし、候補量子化スケール値のうち最大の量子化スケール値を、前回の符号化の際に用いられた量子化スケール値であると検出する画像処理方法である。
【００１３】
また、第３の発明は、ビデオ信号を複数の異なる量子化スケール値に基づき量子化して量子化スケール値毎の量子化値を得る量子化のステップと、量子化スケール値毎の量子化値のうちの、量子化値の整数部と、量子化値の小数部の、量子化による演算誤差を含まない桁部とが共に０ではないサンプルである有効サンプルを、量子化スケール値毎に計数して、量子化スケール値毎の有効サンプル数を得る計数のステップと、量子化値の小数部を量子化スケール値毎に積算して、量子化スケール値毎の積算値を得る積算のステップと、複数の異なる量子化スケール値のうち、有効サンプル数が閾値を超える量子化スケール値に対応する積算値を用いて、ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するバックサーチのステップとを有し、バックサーチのステップは、複数の異なる量子化スケール値のひとつを、注目する第１の量子化スケール値として順次設定し、注目する第１の量子化スケール値に対応する積算のステップによる第１の積算値と、第１の量子化スケール値を示す量子化スケールコードと１異なる量子化スケールコードが示す第２および第３の量子化スケール値にそれぞれ対応する積算のステップによる第２および第３の積算値とを用い、第１の積算値が第１の閾値より小さく、且つ、第２の積算値が第１の閾値より大きい第２の閾値より大きく、且つ、第３の積算値が第１の閾値より大きい第３の閾値よりも大きいときに、第１の積算値に対応する量子化スケール値をビデオ信号の値を割ったときに余りがゼロと見なされる候補量子化スケール値とし、候補量子化スケール値のうち最大の量子化スケール値を、前回の符号化の際に用いられた量子化スケール値であると検出する画像処理方法をコンピュータ装置に実行させる画像処理プログラムである。
【００１４】
また、第４の発明は、ビデオ信号を複数の異なる量子化スケール値に基づき量子化して量子化スケール値毎の量子化値を得る量子化手段と、量子化スケール値毎の量子化値のうちの、量子化値の整数部と、量子化値の小数部の、量子化による演算誤差を含まない桁部とが共に０ではないサンプルである有効サンプルを、量子化スケール値毎に計数して、量子化スケール値毎の有効サンプル数を得る計数手段と、量子化値の小数部を量子化スケール値毎に積算して、量子化スケール値毎の積算値を得る積算手段と、量子化スケール値毎の積算値を対応する計数値を用いて正規化して正規化積算値を得る正規化手段と、正規化積算値を用いて、ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するバックサーチ手段とを有し、バックサーチ手段は、複数の異なる量子化スケール値のひとつを、注目する第１の量子化スケール値として順次設定し、注目する第１の量子化スケール値に対応する正規化手段による第１の正規化積算値と、第１の量子化スケール値を示す量子化スケールコードと１異なる量子化スケールコードが示す第２および第３の量子化スケール値にそれぞれ対応する正規化手段による第２および第３の正規化積算値とを用い、第１の正規化積算値が第１の閾値より小さく、且つ、第２の正規化積算値が第１の閾値より大きい第２の閾値より大きく、且つ、第３の正規化積算値が第１の閾値より大きい第３の閾値よりも大きいときに、第１の正規化積算値に対応する量子化スケール値をビデオ信号の値を割ったときに余りがゼロと見なされる候補量子化スケール値とし、候補量子化スケール値のうち最大の量子化スケール値を、前回の符号化の際に用いられた量子化スケール値であると検出する画像処理装置である。
【００１５】
また、第５の発明は、ビデオ信号を複数の異なる量子化スケール値に基づき量子化して量子化スケール値毎の量子化値を得る量子化のステップと、量子化スケール値毎の量子化値のうちの、量子化値の整数部と、量子化値の小数部の、量子化による演算誤差を含まない桁部とが共に０ではないサンプルである有効サンプルを、量子化スケール値毎に計数して、量子化スケール値毎の有効サンプル数を得る計数のステップと、量子化値の小数部を量子化スケール値毎に積算して、量子化スケール値毎の積算値を得る積算のステップと、量子化スケール値毎の積算値を対応する計数値を用いて正規化して正規化積算値を得る正規化のステップと、正規化積算値を用いて、ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するバックサーチのステップとを有し、バックサーチのステップは、複数の異なる量子化スケール値のひとつを、注目する第１の量子化スケール値として順次設定し、注目する第１の量子化スケール値に対応する正規化のステップによる第１の正規化積算値と、第１の量子化スケール値を示す量子化スケールコードと１異なる量子化スケールコードが示す第２および第３の量子化スケール値にそれぞれ対応する正規化のステップによる第２および第３の正規化積算値とを用い、第１の正規化積算値が第１の閾値より小さく、且つ、第２の正規化積算値が第１の閾値より大きい第２の閾値より大きく、且つ、第３の正規化積算値が第１の閾値より大きい第３の閾値よりも大きいときに、第１の正規化積算値に対応する量子化スケール値をビデオ信号の値を割ったときに余りがゼロと見なされる候補量子化スケール値とし、候補量子化スケール値のうち最大の量子化スケール値を、前回の符号化の際に用いられた量子化スケール値であると検出するする画像処理方法である。
【００１６】
また、第６の発明は、ビデオ信号を複数の異なる量子化スケール値に基づき量子化して量子化スケール値毎の量子化値を得る量子化のステップと、量子化スケール値毎の量子化値のうちの、量子化値の整数部と、量子化値の小数部の、量子化による演算誤差を含まない桁部とが共に０ではないサンプルである有効サンプルを、量子化スケール値毎に計数して、量子化スケール値毎の有効サンプル数を得る計数のステップと、量子化値の小数部を量子化スケール値毎に積算して、量子化スケール値毎の積算値を得る積算のステップと、量子化スケール値毎の積算値を対応する計数値を用いて正規化して正規化積算値を得る正規化のステップと、正規化積算値を用いて、ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するバックサーチのステップとを有し、バックサーチのステップは、複数の異なる量子化スケール値のひとつを、注目する第１の量子化スケール値として順次設定し、注目する第１の量子化スケール値に対応する正規化のステップによる第１の正規化積算値と、第１の量子化スケール値を示す量子化スケールコードと１異なる量子化スケールコードが示す第２および第３の量子化スケール値にそれぞれ対応する正規化のステップによる第２および第３の正規化積算値とを用い、第１の正規化積算値が第１の閾値より小さく、且つ、第２の正規化積算値が第１の閾値より大きい第２の閾値より大きく、且つ、第３の正規化積算値が第１の閾値より大きい第３の閾値よりも大きいときに、第１の正規化積算値に対応する量子化スケール値をビデオ信号の値を割ったときに余りがゼロと見なされる候補量子化スケール値とし、候補量子化スケール値のうち最大の量子化スケール値を、前回の符号化の際に用いられた量子化スケール値であると検出するようにした画像処理方法をコンピュータ装置に実行させる画像処理プログラムである。
また、第７の発明は、ビデオ信号を複数の異なる量子化スケール値に基づき量子化して量子化スケール値毎の量子化値を得る量子化手段と、量子化スケール値毎の量子化値のうちの、量子化値の整数部と、量子化値の小数部の、量子化による演算誤差を含まない桁部とが共に０ではないサンプルである有効サンプルを、量子化スケール値毎に計数して、量子化スケール値毎の有効サンプル数を得る計数手段と、量子化値の小数部を量子化スケール値毎に積算して、量子化スケール値毎の積算値を得る積算手段と、複数の異なる量子化スケール値のうち、有効サンプル数が閾値を超える量子化スケール値に対応する積算値を用いて、ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するバックサーチ手段とを有し、バックサーチ手段は、複数の異なる量子化スケール値のひとつを、注目する第１の量子化スケール値として順次設定し、注目する第１の量子化スケール値に対応する積算手段による第１の積算値と、第１の量子化スケール値を示す量子化スケールコードと１異なる量子化スケールコードが示す第２および第３の量子化スケール値にそれぞれ対応する積算手段による第２および第３の積算値とを用い、第１の積算値が第１の閾値より小さく、且つ、第２の積算値が第１の閾値より大きい第２の閾値より大きく、且つ、第３の積算値が第１の閾値より大きい第３の閾値よりも大きいときに、第１の積算値に対応する量子化スケール値をビデオ信号の値を割ったときに余りがゼロと見なされる候補量子化スケール値とし、候補量子化スケール値のうち最大の量子化スケール値を、前回の符号化の際に用いられた量子化スケール値であると検出する第１のバックサーチ処理と、第１、第２および第３の積算値と、第１の量子化スケール値を示す量子化スケールコードと２異なる量子化スケールコードが示す第４の量子化スケールコードに対応する積算手段による第４の積算値とを用い、第１の積算値が第４の閾値より小さく、且つ、第２の積算値が第４の閾値より大きい第５の閾値より大きく、且つ、第３の積算値が第１の閾値より大きい第６の閾値よりも大きく、且つ、第４の積算値が、第２および第３の量子化スケールコードのうち第４の量子化スケールコードと第１の量子化スケールコードとの間にある量子化スケールコードが示す量子化スケール値に対応する閾値より大きいときに、第１の積算値が対応する量子化スケール値をビデオ信号に対して前回の符号化の際に用いられた量子化スケール値であると検出する第２のバックサーチ処理とを組み合わせて、ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するようにした画像処理装置である。
また、第８の発明は、ビデオ信号を複数の異なる量子化スケール値に基づき量子化して量子化スケール値毎の量子化値を得る量子化のステップと、量子化スケール値毎の量子化値のうちの、量子化値の整数部と、量子化値の小数部の、量子化による演算誤差を含まない桁部とが共に０ではないサンプルである有効サンプルを、量子化スケール値毎に計数して、量子化スケール値毎の有効サンプル数を得る計数のステップと、量子化値の小数部を量子化スケール値毎に積算して、量子化スケール値毎の積算値を得る積算のステップと、複数の異なる量子化スケール値のうち、有効サンプル数が閾値を超える量子化スケール値に対応する積算値を用いて、ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するバックサーチのステップとを有し、バックサーチのステップは、複数の異なる量子化スケール値のひとつを、注目する第１の量子化スケール値として順次設定し、注目する第１の量子化スケール値に対応する積算のステップによる第１の積算値と、第１の量子化スケール値を示す量子化スケールコードと１異なる量子化スケールコードが示す第２および第３の量子化スケール値にそれぞれ対応する積算のステップによる第２および第３の積算値とを用い、第１の積算値が第１の閾値より小さく、且つ、第２の積算値が第１の閾値より大きい第２の閾値より大きく、且つ、第３の積算値が第１の閾値より大きい第３の閾値よりも大きいときに、第１の積算値に対応する量子化スケール値をビデオ信号の値を割ったときに余りがゼロと見なされる候補量子化スケール値とし、候補量子化スケール値のうち最大の量子化スケール値を、前回の符号化の際に用いられた量子化スケール値であると検出する第１のバックサーチ処理と、第１、第２および第３の積算値と、第１の量子化スケール値を示す量子化スケールコードと２異なる量子化スケールコードが示す第４の量子化スケールコードに対応する積算のステップによる第４の積算値とを用い、第１の積算値が第４の閾値より小さく、且つ、第２の積算値が第４の閾値より大きい第５の閾値より大きく、且つ、第３の積算値が第１の閾値より大きい第６の閾値よりも大きく、且つ、第４の積算値が、第２および第３の量子化スケールコードのうち第４の量子化スケールコードと第１の量子化スケールコードとの間にある量子化スケールコードが示す量子化スケール値に対応する閾値より大きいときに、第１の積算値に対応する量子化スケール値をビデオ信号に対して前回の符号化の際に用いられた量子化スケール値であると検出する第２のバックサーチ処理とを組み合わせて、ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するようにした画像処理方法である。
また、第９の発明は、ビデオ信号を複数の異なる量子化スケール値に基づき量子化して量子化スケール値毎の量子化値を得る量子化のステップと、量子化スケール値毎の量子化値のうちの、量子化値の整数部と、量子化値の小数部の、量子化による演算誤差を含まない桁部とが共に０ではないサンプルである有効サンプルを、量子化スケール値毎に計数して、量子化スケール値毎の有効サンプル数を得る計数のステップと、量子化値の小数部を量子化スケール値毎に積算して、量子化スケール値毎の積算値を得る積算のステップと、複数の異なる量子化スケール値のうち、有効サンプル数が閾値を超える量子化スケール値に対応する積算値を用いて、ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するバックサーチのステップとを有し、バックサーチのステップは、複数の異なる量子化スケール値のひとつを、注目する第１の量子化スケール値として順次設定し、注目する第１の量子化スケール値に対応する積算のステップによる第１の積算値と、第１の量子化スケール値を示す量子化スケールコードと１異なる量子化スケールコードが示す第２および第３の量子化スケール値にそれぞれ対応する積算のステップによる第２および第３の積算値とを用い、第１の積算値が第１の閾値より小さく、且つ、第２の積算値が第１の閾値より大きい第２の閾値より大きく、且つ、第３の積算値が第１の閾値より大きい第３の閾値よりも大きいときに、第１の積算値に対応する量子化スケール値をビデオ信号の値を割ったときに余りがゼロと見なされる候補量子化スケール値とし、候補量子化スケール値のうち最大の量子化スケール値を、前回の符号化の際に用いられた量子化スケール値であると検出する第１のバックサーチ処理と、第１、第２および第３の積算値と、第１の量子化スケール値を示す量子化スケールコードと２異なる量子化スケールコードが示す第４の量子化スケールコードに対応する積算のステップによる第４の積算値とを用い、第１の積算値が第４の閾値より小さく、且つ、第２の積算値が第４の閾値より大きい第５の閾値より大きく、且つ、第３の積算値が第１の閾値より大きい第６の閾値よりも大きく、且つ、第４の積算値が、第２および第３の量子化スケールコードのうち第４の量子化スケールコードと第１の量子化スケールコードとの間にある量子化スケールコードが示す量子化スケール値に対応する閾値より大きいときに、第１の積算値に対応する量子化スケール値をビデオ信号に対して前回の符号化の際に用いられた量子化スケール値であると検出する第２のバックサーチ処理とを組み合わせて、ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するようにした画像処理方法をコンピュータ装置に実行させる画像処理プログラムである。
また、第１０の発明は、ビデオ信号を複数の異なる量子化スケール値に基づき量子化して量子化スケール値毎の量子化値を得る量子化手段と、量子化スケール値毎の量子化値のうちの、量子化値の整数部と、量子化値の小数部の、量子化による演算誤差を含まない桁部とが共に０ではないサンプルである有効サンプルを、量子化スケール値毎に計数して、量子化スケール値毎の有効サンプル数を得る計数手段と、量子化値の小数部を量子化スケール値毎に積算して、量子化スケール値毎の積算値を得る積算手段と、量子化スケール値毎の積算値を対応する計数値を用いて正規化して正規化積算値を得る正規化手段と、正規化積算値を用いて、ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するバックサーチ手段とを有し、バックサーチ手段は、複数の異なる量子化スケール値のひとつを、注目する第１の量子化スケール値として順次設定し、注目する第１の量子化スケール値に対応する正規化手段による第１の積算値と、第１の量子化スケール値を示す量子化スケールコードと１異なる量子化スケールコードが示す第２および第３の量子化スケール値にそれぞれ対応する正規化手段による第２および第３の積算値とを用い、第１の正規化積算値が第１の閾値より小さく、且つ、第２の正規化積算値が第１の閾値より大きい第２の閾値より大きく、且つ、第３の正規化積算値が第１の閾値より大きい第３の閾値よりも大きいときに、第１の正規化積算値に対応する量子化スケール値をビデオ信号の値を割ったときに余りがゼロと見なされる候補量子化スケール値とし、候補量子化スケール値のうち最大の量子化スケール値を、前回の符号化の際に用いられた量子化スケール値であると検出する第１のバックサーチ処理と、第１、第２および第３の正規化積算値と、第１の量子化スケール値を示す量子化スケールコードと２異なる量子化スケールコードが示す第４の量子化スケールコードに対応する正規化手段による第４の正規化積算値とを用い、第１の正規化積算値が第４の閾値より小さく、且つ、第２の正規化積算値が第４の閾値より大きい第５の閾値より大きく、且つ、第３の正規化積算値が第１の閾値より大きい第６の閾値よりも大きく、且つ、第４の正規化積算値が、第２および第３の量子化スケールコードのうち第４の量子化スケールコードと第１の量子化スケールコードとの間にある量子化スケールコードが示す量子化スケール値に対応する閾値より大きいときに、第１の正規化積算値に対応する量子化スケール値をビデオ信号に対して前回の符号化の際に用いられた量子化スケール値であると検出する第２のバックサーチ処理とを組み合わせて、ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するようにした画像処理装置である。
また、第１１の発明は、ビデオ信号を複数の異なる量子化スケール値に基づき量子化して量子化スケール値毎の量子化値を得る量子化のステップと、量子化スケール値毎の量子化値のうちの、量子化値の整数部と、量子化値の小数部の、量子化による演算誤差を含まない桁部とが共に０ではないサンプルである有効サンプルを、量子化スケール値毎に計数して、量子化スケール値毎の有効サンプル数を得る計数のステップと、量子化値の小数部を量子化スケール値毎に積算して、量子化スケール値毎の積算値を得る積算のステップと、量子化スケール値毎の積算値を対応する計数値を用いて正規化して正規化積算値を得る正規化のステップと、正規化積算値を用いて、ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するバックサーチのステップとを有し、バックサーチのステップは、複数の異なる量子化スケール値のひとつを、注目する第１の量子化スケール値として順次設定し、注目する第１の量子化スケール値に対応する正規化のステップによる第１の積算値と、第１の量子化スケール値を示す量子化スケールコードと１異なる量子化スケールコードが示す第２および第３の量子化スケール値にそれぞれ対応する正規化のステップによる第２および第３の積算値とを用い、第１の正規化積算値が第１の閾値より小さく、且つ、第２の正規化積算値が第１の閾値より大きい第２の閾値より大きく、且つ、第３の正規化積算値が第１の閾値より大きい第３の閾値よりも大きいときに、第１の正規化積算値に対応する量子化スケール値をビデオ信号の値を割ったときに余りがゼロと見なされる候補量子化スケール値とし、候補量子化スケール値のうち最大の量子化スケール値を、前回の符号化の際に用いられた量子化スケール値であると検出する第１のバックサーチ処理と、第１、第２および第３の正規化積算値と、第１の量子化スケール値を示す量子化スケールコードと２異なる量子化スケールコードが示す第４の量子化スケールコードに対応する正規化のステップによる第４の正規化積算値とを用い、第１の正規化積算値が第４の閾値より小さく、且つ、第２の正規化積算値が第４の閾値より大きい第５の閾値より大きく、且つ、第３の正規化積算値が第１の閾値より大きい第６の閾値よりも大きく、且つ、第４の正規化積算値が、第２および第３の量子化スケールコードのうち第４の量子化スケールコードと第１の量子化スケールコードとの間にある量子化スケールコードが示す量子化スケール値に対応する閾値より大きいときに、第１の正規化積算値に対応する量子化スケール値をビデオ信号に対して前回の符号化の際に用いられた量子化スケール値であると検出する第２のバックサーチ処理とを組み合わせて、ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するようにした画像処理方法である。
また、第１２の発明は、ビデオ信号を複数の異なる量子化スケール値に基づき量子化して量子化スケール値毎の量子化値を得る量子化のステップと、量子化スケール値毎の量子化値のうちの、量子化値の整数部と、量子化値の小数部の、量子化による演算誤差を含まない桁部とが共に０ではないサンプルである有効サンプルを、量子化スケール値毎に計数して、量子化スケール値毎の有効サンプル数を得る計数のステップと、量子化値の小数部を量子化スケール値毎に積算して、量子化スケール値毎の積算値を得る積算のステップと、量子化スケール値毎の積算値を対応する計数値を用いて正規化して正規化積算値を得る正規化のステップと、正規化積算値を用いて、ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するバックサーチのステップとを有し、バックサーチのステップは、複数の異なる量子化スケール値のひとつを、注目する第１の量子化スケール値として順次設定し、注目する第１の量子化スケール値に対応する正規化のステップによる第１の積算値と、第１の量子化スケール値を示す量子化スケールコードと１異なる量子化スケールコードが示す第２および第３の量子化スケール値にそれぞれ対応する正規化のステップによる第２および第３の積算値とを用い、第１の正規化積算値が第１の閾値より小さく、且つ、第２の正規化積算値が第１の閾値より大きい第２の閾値より大きく、且つ、第３の正規化積算値が第１の閾値より大きい第３の閾値よりも大きいときに、第１の正規化積算値に対応する量子化スケール値をビデオ信号の値を割ったときに余りがゼロと見なされる候補量子化スケール値とし、候補量子化スケール値のうち最大の量子化スケール値を、前回の符号化の際に用いられた量子化スケール値であると検出する第１のバックサーチ処理と、第１、第２および第３の正規化積算値と、第１の量子化スケール値を示す量子化スケールコードと２異なる量子化スケールコードが示す第４の量子化スケールコードに対応する正規化のステップによる第４の正規化積算値とを用い、第１の正規化積算値が第４の閾値より小さく、且つ、第２の正規化積算値が第４の閾値より大きい第５の閾値より大きく、且つ、第３の正規化積算値が第１の閾値より大きい第６の閾値よりも大きく、且つ、第４の正規化積算値が、第２および第３の量子化スケールコードのうち第４の量子化スケールコードと第１の量子化スケールコードとの間にある量子化スケールコードが示す量子化スケール値に対応する閾値より大きいときに、第１の正規化積算値に対応する量子化スケール値をビデオ信号に対して前回の符号化の際に用いられた量子化スケール値であると検出する第２のバックサーチ処理とを組み合わせて、ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するようにした画像処理方法をコンピュータ装置に実行させる画像処理プログラムである。
【００２３】
上述したように、第１、第２および第３の発明は、ビデオ信号を複数の異なる量子化スケール値に基づき量子化して得た量子化スケール値毎の量子化値のうちの有効なサンプルを、量子化スケール値毎に計数して量子化スケール値毎の有効サンプル数を得ると共に、量子化値の小数部を量子化スケール値毎に積算した量子化スケール値毎の積算値を得て、複数の異なる量子化スケール値のうち、有効サンプル数が閾値を超える量子化スケール値に対応する積算値を用いて、ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するようにしているため、検出結果の信頼性が向上される。
【００２４】
また、第４、第５および第６の発明は、ビデオ信号を複数の異なる量子化スケール値に基づき量子化して得た量子化スケール値毎の量子化値のうちの有効なサンプルを量子化スケール値毎に計数した量子化スケール値毎の有効サンプル数を得ると共に、量子化値の小数部を量子化スケール値毎に積算した量子化スケール値毎の積算値を得て、量子化スケール値毎の積算値を対応する計数値を用いて正規化した正規化積算値を用いて、ビデオ信号に対して前回の符号化の際に用いられた量子化スケール値を検出するようにしているため、検出結果における量子化スケール値毎の積算サンプル数の違いによる影響を排除できる。
【００２７】
【発明の実施の形態】
以下、この発明の実施の一形態について説明する。この発明の実施の一形態では、例えばＭＰＥＧ２による量子化過程で発生する小数部を用いて前回の符号化における量子化スケール値を検出し、検出された量子化スケール値を用いて今回の符号化を行う。すなわち、単純ダビング時には、前回の符号化における量子化スケール値あるいはその約数となる量子化スケール値において、ＤＣＴ係数が割り切れる。したがって、量子化過程で発生する小数部を積算した値に基づきＤＣＴ係数が量子化スケール値で割り切れたか否かを判断して、前回の符号化における量子化スケール値を検出する。以下では、前回の符号化における量子化スケール値を検出することを、バックサーチ検出と呼ぶ。
【００２８】
また、この発明の実施の一形態では、積算サンプル数の違いによる影響を排除するため、有効なサンプル数を計数し、小数部の積算値を有効サンプル数で除して正規化する。この正規化された積算値を用いてバックサーチ検出を行う。
【００２９】
さらに、この発明の実施の一形態では、量子化過程で発生する小数部の積算値に基づきＤＣＴ係数がある量子化スケール値で割り切れたか否かを判断するときに、その量子化スケール値を示す量子化スケールコードに対して前後の、すなわち、当該量子化スケールコードに対して１異なる量子化スケールコードが示す量子化スケール値による量子化の過程で発生した小数部の積算結果も用いる。
【００３０】
また、当該量子化スケールコードに対して１異なる量子化スケールコードに加えて、当該量子化スケールコードに対して２異なる量子化スケールコードが示す量子化スケール値による量子化の過程で発生した小数部の積算結果をさらに用いて、上述の判断を行う。
【００３１】
なお、検出精度を高めるため、１６画素×１６ラインからなるマクロブロック毎にＹ／Ｃｂ／Ｃｒの全てのＤＣＴブロック（８画素×８ライン）の、ＤＣ成分を除く全てのＡＣ係数を対象として量子化演算処理を行い、量子化過程で発生する小数部を累積した結果を用いて判定する。例えば、クロマフォーマットが４：２：２の場合は、６３ＡＣ係数×８ＤＣＴブロック＝５０４ＡＣ係数であるので、５０４係数分の小数部を累積して判定する。
【００３２】
以下に説明する実施の一形態は、この発明の好適な具体例であり、技術的に好ましい種々の限定が付されているが、この発明の範囲は、以下の説明において、特にこの発明を限定する旨の記載がない限り、これらの態様に限定されないものとする。
【００３３】
次に、この発明の実施の一形態について説明する。図１は、この発明の実施の一形態が適用されたディジタルＶＴＲの一例の構成を示す。このディジタルＶＴＲは、ＭＰＥＧ方式により圧縮符号化されたディジタルビデオ信号を記録媒体に直接的に記録することができるようにしたものである。
【００３４】
先ず、このディジタルＶＴＲにおける記録系の構成および処理動作について説明する。この記録系に外部より入力される信号は、ＳＤＩ(Serial Data Interface)信号およびＳＤＴＩ(Serial Data Transport Interface)信号の２種類のシリアルディジタルインターフェイス信号および制御信号である外部基準信号ＲＥＦである。
【００３５】
なお、ＳＤＩは、（４：２：２）コンポーネントビデオ信号とディジタルオーディオ信号と付加的データとを伝送するために、ＳＭＰＴＥによって規定されたインターフェイスである。また、ＳＤＴＩは、ディジタルビデオ信号がＭＰＥＧ方式で圧縮符号化されたストリームであるＭＰＥＧエレメンタリストリーム（以下、ＭＰＥＧ  ＥＳと称する）が伝送されるインターフェイスである。ＥＳは、４：２：２のコンポーネントであり、また、上述したように、全てＩピクチャのストリームであり、１ＧＯＰ＝１ピクチャの関係を有する。ＳＤＴＩ−ＣＰ(Content Package)のフォーマットでは、ＭＰＥＧ  ＥＳがアクセスユニットへ分離され、また、フレーム単位のパケットにパッキングされている。ＳＤＴＩ−ＣＰでは、十分な伝送帯域（クロックレートで２７ＭHzまたは３６ＭHz、ストリームビットレートで２７０Ｍ bpsまたは３６０Ｍ bps）を使用しており、１フレーム期間で、バースト的にＥＳを送ることが可能である。
【００３６】
ＳＤＩにより伝送されるＳＤＩ信号は、ＳＤＩ入力部１０１に入力される。ＳＤＩ入力部１０１では、入力されたＳＤＩ信号をシリアル信号からパラレル信号に変換して出力すると共に、ＳＤＩ信号に含まれる入力の位相基準である入力同期信号を抽出し、タイミングジェネレータＴＧ１０２に出力する。
【００３７】
また、ＳＤＩ入力部１０１は、変換したパラレル信号からビデオ信号とオーディオ信号とを分離する。分離されたビデオ入力信号とオーディオ入力信号は、それぞれＭＰＥＧエンコーダ１０３とディレイ回路１０４に出力される。
【００３８】
タイミングジェネレータＴＧ１０２は、入力された外部基準信号ＲＥＦから基準同期信号を抽出する。タイミングジェネレータＴＧでは、この基準同期信号とＳＤＩ入力部１０１から供給された入力同期信号とのうち、所定に指定された基準信号に同期して、このディジタルＶＴＲで必要なタイミング信号を生成し、タイミングパルスとして各ブロックに供給する。
【００３９】
ＭＰＥＧエンコーダ１０３は、入力されたビデオ入力信号を、ＤＣＴ変換して係数データに変換し、係数データを量子化した後、可変長符号化する。ＭＰＥＧエンコーダ１０３から出力される可変長符号化（ＶＬＣ）データは、ＭＰＥＧ２に準拠したエレメンタリストリーム（ＥＳ）である。この出力は、記録側のマルチフォーマットコンバータ（以下、記録側ＭＦＣと称する）１０６の一方の入力端に供給される。
【００４０】
なお、この実施の一形態では、ＭＰＥＧエンコーダ１０３において、前回の符号化における量子化スケール値を検出するバックサーチを行い、バックサーチで検出された量子化スケール値で以て、今回の符号化を行うことができるようにされている。
【００４１】
ディレイ回路１０４は、入力されたオーディオ入力信号を、非圧縮データのままで、ＭＰＥＧエンコーダ１０３でのビデオ信号に対する処理のディレイに合わせるためのディレイラインの働きをするものである。このディレイ回路１０４で所定に遅延されたオーディオ信号は、ＥＣＣエンコーダ１０７に出力される。これは、この実施の一形態によるディジタルＶＴＲにおいて、オーディオ信号が非圧縮信号として扱われるためである。
【００４２】
外部からＳＤＴＩにより伝送され供給されたＳＤＴＩ信号は、ＳＤＴＩ入力部１０５に入力される。ＳＤＴＩ信号は、ＳＤＴＩ入力部１０５で同期検出される。そして、バッファに一旦溜め込まれ、エレメンタリストリームが抜き出される。抜き出されたエレメンタリストリームは、記録側ＭＦＣ１０６の他方の入力端に供給される。同期検出されて得られた同期信号は、上述したタイミングジェネレータＴＧ１０２に供給される（図示しない）。
【００４３】
なお、ＳＤＴＩ入力部１０５では、さらに、入力されたＳＤＴＩ信号からディジタルオーディオ信号を抽出する。抽出されたディジタルオーディオ信号は、ＥＣＣエンコーダ１０７に供給される。
【００４４】
このように、この実施の一形態によるディジタルＶＴＲは、ＳＤＩ入力部１０１から入力されるベースバンドのビデオ信号と独立して、ＭＰＥＧ  ＥＳを直接的に入力することができる。
【００４５】
記録側ＭＦＣ回路１０６は、ストリームコンバータとセレクタとを有し、ＭＰＥＧエンコーダ１０３およびＳＤＴＩ入力部１０５から供給されたＭＰＥＧ  ＥＳのうち、何れかが選択され、選択されたＭＰＥＧ  ＥＳのＤＣＴ係数を、１マクロブロックを構成する複数のＤＣＴブロックを通して周波数成分毎にまとめ、まとめた周波数成分を低周波数成分から順に並び替える。ＭＰＥＧ  ＥＳの係数が並べ替えられたストリームを、以下、変換エレメンタリストリームと称する。このようにＭＰＥＧ  ＥＳを再配置することにより、サーチ再生時にもなるべく多くのＤＣ係数と低次のＡＣ係数を拾い、サーチ画の品位向上に貢献している。変換エレメンタリストリームは、ＥＣＣエンコーダ１０７に供給される。
【００４６】
ＥＣＣエンコーダ１０７は、大容量のメインメモリが接続され（図示しない）、パッキングおよびシャフリング部、オーディオ用外符号エンコーダ、ビデオ用外符号エンコーダ、内符号エンコーダ、オーディオ用シャフリング部およびビデオ用シャフリング部などを内蔵する。また、ＥＣＣエンコーダ１０７は、シンクブロック単位でＩＤを付加する回路や、同期信号を付加する回路を含む。なお、実施の第１の形態では、ビデオ信号およびオーディオ信号に対するエラー訂正符号としては、積符号が使用される。積符号は、ビデオ信号またはオーディオ信号の２次元配列の縦方向に外符号の符号化を行い、その横方向に内符号の符号化を行い、データシンボルを２重に符号化するものである。外符号および内符号としては、リードソロモンコード(Reed-Solomon code) を使用できる。
【００４７】
ＥＣＣエンコーダ１０７には、ＭＦＣ回路１０６から出力された変換エレメンタリストリームが供給されると共に、ＳＤＴＩ入力部１０５およびディレイ回路１０４から出力されたオーディオ信号が供給される。ＥＣＣエンコーダ１０７では、供給された変換エレメンタリストリーム及びオーディオ信号に対してシャフリング及びエラー訂正符号化を施し、シンクブロック毎にＩＤおよび同期信号を付加し記録データとして出力する。
【００４８】
ＥＣＣエンコーダ１０７から出力された記録データは、記録アンプを含むイコライザＥＱ１０８で記録ＲＦ信号に変換される。記録ＲＦ信号は、回転ヘッドが所定に設けられた回転ドラム１０９に供給され、磁気テープ１１０上に記録される。回転ドラム１０９には、実際には、隣接するトラックを形成するヘッドのアジマスが互いに異なる複数の磁気ヘッドが取り付けられている。
【００４９】
記録データに対して必要に応じてスクランブル処理を行っても良い。また、記録時にディジタル変調を行っても良く、さらに、パーシャル・レスポンスクラス４とビタビ符号を使用しても良い。なお、イコライザ１０８は、記録側の構成と再生側の構成とを共に含む。
【００５０】
次に、このディジタルＶＴＲにおける再生系の構成および処理動作について説明する。再生時には、磁気テープ１１０から回転ドラム１０９で再生された再生信号が再生アンプなどを含むイコライザ１０８の再生側の構成に供給される。イコライザ１０８では、再生信号に対して、等化や波形整形などがなされる。また、ディジタル変調の復調、ビタビ復号等が必要に応じてなされる。イコライザ１０８の出力は、ＥＣＣデコーダ１１１に供給される。
【００５１】
ＥＣＣデコーダ１１１は、上述したＥＣＣエンコーダ１０７と逆の処理を行うもので、大容量のメインメモリと、内符号デコーダ、オーディオ用およびビデオ用それぞれのデシャフリング部ならびに外符号デコーダを含む。さらに、ＥＣＣデコーダ１１１は、ビデオ用として、デシャフリングおよびデパッキング部、データ補間部を含む。同様に、オーディオ用として、オーディオＡＵＸ分離部とデータ補間部を含む。
【００５２】
ＥＣＣデコーダ１１１では、再生データに対して同期検出を行い、シンクブロックの先頭に付加されている同期信号を検出してシンクブロックを切り出す。再生データは、シンクブロック毎の内符号のエラー訂正がなされ、その後、シンクブロックに対してＩＤ補間処理がなされる。ＩＤが補間された再生データは、ビデオデータとオーディオデータとに分離される。ビデオデータおよびオーディオデータは、それぞれデシャフリング処理され、記録時にシャフリングされたデータ順が元に戻される。デシャフリングされたデータは、それぞれ外符号のエラー訂正が行われる。
【００５３】
ＥＣＣデコーダ１１１において、エラー訂正能力を超え、訂正できないエラーがあるデータに関しては、エラーフラグがセットされる。ここで、ビデオデータのエラーに関しては、エラーを含むデータを指し示す信号ＥＲＲが出力される。
【００５４】
エラー訂正された再生オーディオデータは、ＳＤＴＩ出力部１１５に供給されると共に、ディレイ回路１１４で所定の遅延を与えられてＳＤＩ出力部１１６に供給される。ディレイ回路１１４は、後述するＭＰＥＧデコーダ１１３でのビデオデータの処理による遅延を吸収するために設けられる。
【００５５】
一方、エラー訂正されたビデオデータは、再生変換エレメンタリストリームとして再生側ＭＦＣ回路１１２に供給される。上述した信号ＥＲＲも、再生側ＭＦＣ回路１１２に供給される。再生側ＭＦＣ１１２は、上述した記録側ＭＦＣ１０６と逆の処理を行うものであって、ストリームコンバータを含む。ストリームコンバータでは、記録側のストリームコンバータと逆の処理がなされる。すなわち、ＤＣＴブロックに跨がって周波数成分毎に並べられていたＤＣＴ係数を、ＤＣＴブロック毎に並び替える。これにより、再生信号がＭＰＥＧ２に準拠したエレメンタリストリームに変換される。このとき、ＥＣＣデコーダ１１１から信号ＥＲＲが供給された場合は、対応するデータをＭＰＥＧ２に完全に準拠する信号に置き換えて出力する。
【００５６】
再生側ＭＦＣ回路１１２から出力されたＭＰＥＧ  ＥＳは、ＭＰＥＧデコーダ１１３およびＳＤＴＩ出力部１１５に供給される。ＭＰＥＧデコーダ１１３は、供給されたＭＰＥＧ  ＥＳを復号し、非圧縮の元のビデオ信号に戻す。すなわち、ＭＰＥＧデコーダ１１３は、供給されたＭＰＥＧ  ＥＳに対して逆量子化処理と、逆ＤＣＴ処理とを施す。復号されたビデオ信号は、ＳＤＩ出力部１１６に供給される。
【００５７】
上述したように、ＳＤＩ出力部１１６には、ＥＣＣデコーダ１１１でビデオデータと分離されたオーディオデータがディレイ１１４を介して供給されている。ＳＤＩ出力部１１６では、供給されたビデオデータとオーディオデータとを、ＳＤＩのフォーマットにマッピングし、ＳＤＩフォーマットのデータ構造を有するＳＤＩ信号へ変換される。このＳＤＩ信号が外部に出力される。
【００５８】
一方、ＳＤＴＩ出力部１１５には、上述したように、ＥＣＣデコーダ１１１でビデオデータと分離されたオーディオデータが供給されている。ＳＤＴＩ出力部１１５では、供給された、エレメンタリストリームとしてのビデオデータと、オーディオデータとをＳＤＴＩのフォーマットにマッピングし、ＳＤＴＩフォーマットのデータ構造を有するＳＤＴＩ信号へ変換される。このＳＤＴＩ信号が外部に出力される。
【００５９】
なお、システムコントローラ１１７（図１中ではシスコン１１７と略記する）は、例えばマイクロコンピュータからなり、信号ＳＹ＿ＩＯにより各ブロックと通信を行うことにより、このディジタルＶＴＲの全体の動作を制御する。また、図示されない操作パネルに設けられたスイッチ類が操作されると、操作に応じた制御信号がシステムコントローラ１１７に供給される。この制御信号に基づき、このディジタルＶＴＲでの記録、再生などの動作がシステムコントローラ１１７により制御される。
【００６０】
サーボ１１８は、信号ＳＹ＿ＳＶによりシスコンシステムコントローラ１１７と互いに通信を行いながら、信号ＳＶ＿ＩＯにより、磁気テープ１１０の走行制御や回転ドラム１０９の駆動制御などを行う。
【００６１】
図２は、上述したＭＰＥＧエンコーダ１０３の一例の構成を示す。また、図２の各部において転送されるストリームの構成例を、図３〜図９にそれぞれ示す。
【００６２】
ＭＰＥＧエンコーダ１０３は、入力フィールドアクティビティ平均化処理部１０３Ａ、プリエンコード処理部１０３Ｂおよびエンコード部１０３Ｃからなる。入力フィールドアクティビティ平均化処理部１０３Ａでは、入力されたビデオデータのアクティビティの平均値が求められてプリエンコード処理部１０３Ｂに渡される。プリエンコード処理部１０３Ｂでは、このアクティビティの平均値を用いて入力ビデオデータの量子化による発生符号量が見積もられる。この見積もり結果に基づき、エンコード部１０３Ｃにおいて、符号量制御しながら入力ビデオデータに対する実際の量子化が行われ、量子化されたビデオデータに対しさらに可変長符号化がなされ、ＭＰＥＧ  ＥＳとされて出力される。
【００６３】
なお、タイミングジェネレータＴＧ２２０は、例えば図１のタイミングジェネレータＴＧ１０２から供給された水平同期信号ＨＤ、垂直同期信号ＶＤおよびフィールド同期信号ＦＬＤに基づき、ＭＰＥＧエンコーダ１０３内で必要とされるタイミング信号を生成し出力する。また、ＣＰＵ  Ｉ／Ｆブロック２２１は、図１のシステムコントローラ１１７とのインターフェイスであり、ＣＰＵ  Ｉ／Ｆブロック２２１を介してやりとりされた制御信号やデータにより、ＭＰＥＧエンコーダ１０３における動作が制御される。
【００６４】
先ず、入力フィールドアクティビティ平均化処理部１０３Ａの処理について説明する。ＳＤＩ入力部１０１から出力されＭＰＥＧエンコーダ１０３に入力されたビデオデータは、入力部２０１に供給され、メインメモリ２０３に格納するのに適したインターフェイスに変換されると共に、パリティチェックがなされる。入力部２０１から出力されたビデオデータは、ヘッダ作成部２０２に供給され、垂直ブランキング区間などを利用してＭＰＥＧにおける、sequence_header 、 quantizer_matrix、 gop_header などの各ヘッダが作成される。作成された各ヘッダは、メインメモリ２０３に格納される。これらのヘッダは、主に、ＣＰＵ  Ｉ／Ｆブロック２２１から指定される。また、ヘッダ作成部２０２において、垂直ブランキング区間以外では、入力部２０１から供給されたビデオデータがメインメモリ２０３に格納される。
【００６５】
メインメモリ２０３は、画像のフレームメモリであり、ビデオデータの再配列やシステムディレイの吸収などが行われる。ビデオデータの再配列は、例えば図示されないアドレスコントローラによりメインメモリ２０３からの読み出しアドレスを制御されることによりなされる。なお、図２中、メインメモリ２０３のブロック中に記載される８ライン、０．５フレームおよび１フレームは、ディレイ値であり、メインメモリ２０３からのリードタイミングが示される。これらは、タイミングジェネレータＴＧ２２０の指令に基づき適切に制御される。
【００６６】
ラスタスキャン／ブロックスキャン変換部２０４は、ライン毎にメインメモリ２０３に格納されたビデオデータを、ＭＰＥＧで扱うマクロブロック毎に切り出して後段のアクティビティ部２０５に送る。この実施の一形態では、第１フィールドだけを用いてアクティビティの計算を行うため、ラスタスキャン／ブロックスキャン変換部２０４から出力されるマクロブロックは、第１フィールド分のビデオデータにより構成される。
【００６７】
ラスタスキャン／ブロックスキャン変換部２０４から出力データとして出力されたストリームは、図３Ａに一例が示されるように、垂直および水平方向のマクロブロックのアドレス情報が先頭に配され、所定サイズの空き領域の後ろに、１マクロブロック分のビデオデータが格納される。
【００６８】
なお、ストリームは、例えば８ビットを１ワードとして、５７６ワードのデータ長を有し、後半の５１２ワード（データ部と称する）が１マクロブロック分のビデオデータを格納する領域に割り当てられている。前半の６４ワード（ヘッダ部と称する）は、先頭に上述のマクロブロックのアドレス情報が格納され、その他の部分は、後段の各部にて埋め込まれるデータやフラグなどのため空き領域とされる。
【００６９】
ＭＰＥＧで扱うマクロブロックは、１６画素×１６ラインのマトリクスである。一方、この入力フィールドアクティビティ平均化処理部１０３Ａでは、第１フィールドだけによるアクティビティを求める処理を行う。そのため、第１フィールドの８ラインまでがメインメモリ２０３に格納された時点で処理を開始することができる。なお、実際には、タイミングジェネレータＴＧ２２０からの指令にて処理が適切に開始される。
【００７０】
アクティビティ部２０５は、マクロブロック毎のアクティビティを計算する。このＭＰＥＧエンコーダ１０３においては、第１フィールドだけからアクティビティが計算され、その計算結果がフィールドアクティビティ信号field_actとして出力される。信号field_actは、平均化部２０６に供給され、１フィールド分が積算され、その平均値avg_actが求められる。平均値avg_actは、後述するプリエンコード処理部１０３Ｂのアクティビティ部２０９に供給される。アクティビティ部２０９では、第１フィールドの平均値avg_actを用いてマクロブロック毎にアクティビティの正規化処理が行われる。
【００７１】
したがって、第１フィールドにおけるアクティビティの平均値avg_actが判明した後、その平均値を用いて、適応量子化を考慮したプリエンコード処理を行うことが可能となる。
【００７２】
次に、プリエンコード処理部１０３Ｂについて説明する。ラスタスキャン／ブロックスキャン変換部２０７Ａは、上述したラスタスキャン／ブロックスキャン変換部２０４と基本的には同様の処理を行う。但し、このラスタスキャン／ブロックスキャン変換部２０７Ａは、符号量の見積もりを行うプリエンコード処理のために行われるため、第１フィールドおよび第２フィールドのビデオデータが共に必要とされる。そのため、ラスタスキャン／ブロックスキャン変換部２０７Ａでは、第２フィールドの８ラインまでがメインメモリ２０３に格納された時点で、ＭＰＥＧで扱う１６画素×１６ラインのサイズのマクロブロックを構成することが可能となり、この時点で処理を開始することができる。なお、実際には、タイミングジェネレータＴＧ２２０からの指令によって、処理が適切に開始される。
【００７３】
ラスタスキャン／ブロックスキャン変換部２０７Ａから出力されたビデオデータは、ＤＣＴモード部２０８に供給される。ＤＣＴモード部２０８は、フィールドＤＣＴ符号化モードおよびフレームＤＣＴ符号化モードの何れを用いて符号化するかを決める。
【００７４】
ここでは、実際に符号化するのではなく、垂直方向に隣接した画素間差分値の絶対値和をフィールドＤＣＴ符号化モードで計算したものと、フレームＤＣＴ符号化モードで計算したものとが比較され、その値が小さい符号化モードが選択される。選択結果は、ＤＣＴモードタイプデータdct_typとしてストリーム中に一時的にフラグとして挿入され、後段に伝えられる。ＤＣＴモードタイプデータdct_typは、図３Ｂに示されるように、ヘッダ部中の空き領域の後端側に格納される。
【００７５】
アクティビティ部２０９は、上述したアクティビティ部２０５と、基本的には同様の処理を行う。ただし、このアクティビティ部２０９では、上述のように、プリエンコード処理を行うためのもので、第１フィールドおよび第２フィールドのデータが共に用いられて、マクロブロック毎のアクティビティが計算される。アクティビティ部２０９により、先ず、アクティビティactが求められ、図３Ｃに示されるように、ヘッダ部のマクロブロックアドレスに続けて格納される。次に、このアクティビティactと上述した平均化部２０６から得られるフィールドアクティビティの平均値avg_actとを用いて、正規化アクティビティNactが求められる。
【００７６】
正規化アクティビティNactは、正規化アクティビティデータnorm_actとして、図４Ａに示されるように、ストリーム中のヘッダ部に一時的にフラグとして挿入され、後段に伝えられる。なお、上述のアクティビティactは、ストリーム中で、正規化アクティビティデータnorm_actに上書きされる。
【００７７】
アクティビティ部２０９の出力は、ＤＣＴ部２１０Ａに供給される。ＤＣＴ部２１０Ａでは、供給されたマクロブロックを８画素×８ラインからなるＤＣＴブロックに分割し、ＤＣＴブロックに対して２次元ＤＣＴが行われ、ＤＣＴ係数が生成される。ＤＣＴ係数は、図４Ｂに示されるように、ストリームのデータ部に格納され、量子化テーブル部２１１Ａに供給される。
【００７８】
量子化テーブル部２１１Ａでは、ＤＣＴ部２１０Ａで変換されたＤＣＴ係数に対して量子化マトリクス(quantizer_matrix)による量子化が行われる。量子化テーブル部２１１Ａで量子化されたＤＣＴ係数は、図４Ｃに示されるように、ストリームのデータ部に格納され、出力される。量子化テーブル部２１１Ａの出力は、複数の量子化ブロック２１２、２１２、・・・、ＶＬＣ部２１３、２１３、・・・、積算部Σ２１４、２１４、・・・、ならびに、積算部Σ２１５、２１５、・・・とからなる多段階の量子化部に供給される。量子化テーブル部２１１Ａで量子化されたＤＣＴ係数は、この多段階ステップの量子化部で多段階に量子化される。
【００７９】
ＤＣＴ係数は、量子化ブロック２１２、２１２、・・・において、それぞれ異なった量子化スケール(quantizer_scale)値Ｑを用いて量子化される。なお、量子化スケール値Ｑは、例えばＭＰＥＧ２の規格によって予め決められており、量子化ブロック２１２、２１２、・・・は、この規格に基づき、例えばｎ＝３１個の量子化器で構成される。そして、各量子化ブロック２１２、２１２、・・・がそれぞれに割り振られた量子化スケールＱｎを用いて、ＤＣＴ係数の量子化が合計で３１ステップ、行われる。以下では、Ｑ＿ｎ部２１２、２１２、・・・において、それぞれに対応する量子化スケール値を量子化スケール値Ｑｎとする。
【００８０】
量子化ブロック２１２、２１２、・・・において、それぞれの量子化スケール値Ｑｎにより量子化が行われる。量子化ブロック２１２、２１２、・・・における量子化の結果は、整数部と小数部とに分けられて出力される。整数部は、量子化スケール値Ｑｎ毎のＤＣＴ係数として、それぞれ図５Ａに示されるようにストリーム中のデータ部に格納され、ＶＬＣ部２１３、２１３、・・・にそれぞれ供給される。量子化スケールＱｎ毎のＤＣＴ係数は、ＶＬＣ部２１３、２１３、・・・において、ジグザグスキャンなどのスキャニングが施され、２次元ハフマンコードなどに基づくＶＬＣテーブルが参照されてそれぞれ可変長符号化される。
【００８１】
ＶＬＣ部２１３、２１３、・・・で可変長符号化されたデータは、図５Ｂに示されるようにストリーム中のデータ部に格納され、それぞれ出力される。ＶＬＣ部２１３、２１３、・・・の出力は、それぞれ対応する積算部Σ２１４、２１４、・・・に供給される。
【００８２】
積算部Σ２１４、２１４、・・・では、それぞれマクロブロック毎に発生符号量が積算される。上述のように３１種類の量子化器を用いる場合には、それぞれに対応する３１種類の発生符号量がマクロブロック毎に得られることになる。マクロブロック毎の発生符号量は、図６Ａに示されるように、積算部Σ２１４、２１４、・・・において積算された発生符号量がストリーム中のヘッダ部に、各々格納される。すなわち、量子化ブロック２１２、２１２、・・・のそれぞれの量子化による発生符号量が、マクロブロック毎に、ストリームのヘッダ部に格納される。なお、ストリームのデータ部は、削除される。
【００８３】
このマクロブロック毎の発生符号量が埋め込まれたストリームは、メインメモリ２０３に供給され、後述するエンコード部１０３Ｃに供給される。
【００８４】
また、積算部Σ２１４、２１４、・・・から出力されたマクロブロック毎の発生符号量を用いて適応量子化が行われる。すなわち、上述のアクティビティ部２０９で得られた正規化アクティビティデータnorm_actを用いて、次式により、視覚特性を考慮した量子化スケールであるmqauntを求める。
mqaunt＝Ｑ＿ｎ×norm_act
【００８５】
積算部Σ２１５、２１５、・・・は、視覚特性を考慮したquantizer_scale（＝mquant）で量子化した場合のマクロブロック毎の発生符号量に対応する符号量を、積算部Σ２１４で求めたマクロブロック毎の発生符号量の中から選択し、それを１フレーム分積算する。
【００８６】
積算部Σ２１５、２１５、・・・で量子化スケールＱｎ毎にそれぞれ１フレーム分積算された値は、そのフレームにおける発生符号量（フレームデータレート）とされて、図６Ｂに示されるように、ｎワードのストリームとされる。このフレームデータレートが埋め込まれたストリームは、後述するレートコントロール部２１７に供給される。なお、上述のように３１種類の量子化器を用いる場合には、それぞれに対応する３１種類の発生符号量がフレーム毎に得られることになる。
【００８７】
発生符号量を求める方法を、より具体的に説明する。例えば、「Ｑ＿４部２１２に対応する積算部Σ２１５によるフレームにおける発生符号量」は、次のようにして求められる。
【００８８】
例えば、
norm_act[1]=1.3
norm_act[2]=1.5
norm_act[3]=0.8
norm_act[4]=1.0
・・・
である場合、
mqaunt[1]=4x1.3=5.2
：量子化スケール値Ｑｎ＝５である量子化ブロック２１２による発生符号量を、図６Ａのヘッダ部から求める。
mqaunt[2]=4x1.5=6.0
：量子化スケール値Ｑｎ＝６である量子化ブロック２１２による発生符号量を、図６Ａのヘッダ部から求める。
mqaunt[3]=4x0.8=3.2
：量子化スケール値Ｑｎ＝３である量子化ブロック２１２による発生符号量を、図６Ａのヘッダ部から求める。
mqaunt[4]=4x1.0=4.0
：量子化スケール値Ｑｎ＝４である量子化ブロック２１２による発生符号量を、図６Ａのヘッダ部から求める。
・・・
以上を、１フレーム分、積算する。これを、Ｑ＿１部２１２〜Ｑ＿ｎ部２１２に対応する積算部Σ２１５、２１５、・・・対してそれぞれ行い、１フレーム分の発生符号量を求める。
【００８９】
上述した、量子化ブロック２１２、２１２、・・・から出力された小数部は、積算部Σ２３１に供給される。積算部Σ２３１は、図２では省略されているが、実際には量子化ブロック２１２、２１２、・・・のそれぞれに対応して設けられ、量子化ブロック２１２、２１２、・・・から出力された小数部がそれぞれ積算される。積算部Σ２３１で積算された積算値は、それぞれバックサーチ検出部２３２に供給される。
【００９０】
さらに、量子化ブロック２１２、２１２、・・・から出力された整数部および小数部が有効サンプル数カウント部２３３（図２では、「Ｃ」と略記）に供給される。有効サンプル数カウント部２３３は、図２では省略されているが、実際には量子化ブロック２１２、２１２、・・・のそれぞれに対応して設けられる。有効サンプル数カウント部２３３では、供給された整数部および小数部が共に「０」ではないサンプル数がカウントされる。カウント値non_zeroは、それぞれバックサーチ検出部２３２に供給される。
【００９１】
バックサーチ検出部２３２は、図２ではプリエンコード処理部１０３Ｂに含まれるように示されているが、実際には、プリエンコード処理部１０３Ｂおよびエンコード部１０３Ｃとに跨って構成される。
【００９２】
バックサーチ検出部２３２では、後述する方法により、供給された積算値およびカウント値non_zeroに基づき前回の符号化の際に用いられた量子化スケール値が検出される。なお、実際には、バックサーチ検出部２３２で検出された量子化スケール値Ｑは、ストリーム中のヘッダ部の空き領域内にフラグとして挿入され（図示しない）、後段に伝えられる。
【００９３】
次に、エンコード処理部１０３Ｃについて説明する。エンコード処理部１０３Ｃでは、最終的なエンコード処理が行われる。上述したように、プリエンコード処理部１０３Ｂにおいて、様々な量子化を行った場合の１フレーム分の発生符号量が見積もられる。エンコード処理部１０３Ｃでは、この１フレーム分で見積もられた発生符号量に基づき、予め設定された目標発生符号量を絶対に超えないようにエンコードが行われ、ＭＰＥＧ  ＥＳが出力される。
【００９４】
エンコード処理部１０３Ｃで用いられるデータは、既にメインメモリ２０３に格納されているが、上述したように、プリエンコード処理部１０３Ｂにより様々な量子化を行った場合の１フレームにおける発生符号量が見積もられた時点で処理を開始することができる。エンコード処理部１０３Ｃの各部における処理は、上述と同様に、タイミングジェネレータＴＧ２２０からの指令に基づき適切に開始される。
【００９５】
メインメモリ２０３から読み出されたビデオデータは、ラスタスキャン／ブロックスキャン変換部２０７Ｂにおいて、上述のラスタスキャン／ブロックスキャン変換部２０７Ａと同様の処理をされて１６画素×１６ラインのマクロブロックが切り出される。切り出されたマクロブロックは、図７Ａに示されるように、上述した図６Ａに示されるヘッダ部に対応するデータ部に格納され、ＤＣＴモード部２１６に供給される。
【００９６】
ＤＣＴモード部２１６では、上述のＤＣＴモード部２０８と同様に、フィールドＤＣＴ符号化モードおよびフレームＤＣＴ符号化モードのうち何れを用いて符号化するかが決められる。このとき、既にＤＣＴモード部２０８において符号化モードが決められ、その結果がＤＣＴタイプデータdct_typとしてストリーム中に一時的に挿入されている（図７Ａ参照）。ＤＣＴモード部２１６では、ストリームからこのＤＣＴタイプデータdct_typを検出し、検出されたＤＣＴタイプデータdct_typに基づきフィールド符号化モードおよびフレーム符号化モードを切り換える。ＤＣＴモード部２１６の出力を図７Ｂに示す。
【００９７】
ＤＣＴモード部２１６から出力されたマクロブロックは、ＤＣＴ部２１０Ｂに供給され、上述のＤＣＴ部２１０Ａと同様にして８画素×８ラインのＤＣＴブロック単位で２次元ＤＣＴされる。２次元ＤＣＴされたＤＣＴ係数は、図７Ｃに示されるように、ストリーム中のデータ部に格納されて、ＤＣＴ部２１０Ｂから出力される。
【００９８】
量子化テーブル部２１１Ｂは、上述の量子化テーブル部２１１Ａと同様に構成することができ、ＤＣＴ部２１０Ｂで変換されたＤＣＴ係数に対して量子化マトリクスによる量子化が行われる。量子化テーブル部２１１Ｂで量子化されたＤＣＴ係数は、図８Ａに示されるように、ストリーム中のデータ部に格納されてレートコントロール部２１７に供給される。
【００９９】
レートコントロール部２１７には、上述したプリエンコード処理部１０３Ｂにおいて積算部Σ２１５、２１５、・・・で得られた、各量子化スケールＱｎ毎のフレームデータレートの中から、システムコントローラ１１７により設定される１フレーム当たりの最大発生符号量を超えないもので、且つ、最も設定値に近いものが選択されると共に、選択されたフレームデータレートに対応する量子化スケール値Ｑが取得される。
【０１００】
レートコントロール部２１７では、この取得された符号量制御による量子化スケール値Ｑと、バックサーチ検出部２３２においてバックサーチにより得られた量子化スケール値と、残り符号量とに基づき、実際の量子化において用いられる量子化スケール値Ｑが求められる。例えば、バックサーチ検出部２３２において、前回の符号化の際に用いられた量子化スケール値Ｑが検出されなかった場合には、符号量制御に基づく量子化スケール値Ｑが実際の量子化で用いられる。求められたこのマクロブロック毎の量子化スケール値Ｑは、図８Ｂに示されるように、ストリーム中のヘッダ部の後端側にqauntiser_scaleとして格納され、量子化部２１８に伝えられる。
【０１０１】
なお、残り符号量は、レートコントロール部２１７において、例えばシステムコントローラ１１７により設定されＣＰＵ  Ｉ／Ｆ２２１を介して供給される、１フレーム当たりの最大発生符号量（目標符号量）と、積算部Σ２１５、２１５、・・・から供給される各量子化スケール値Ｑｎ毎のフレームデータレートとから求めることができる。
【０１０２】
また、システムコントローラ１１７で設定されＣＰＵ  Ｉ／Ｆ２２１を介して伝えられる、１フレームあたりの最大発生符号量と、レートコントロール部２１７で選択された、フレームデータレートの示す１フレーム当たりの発生符号量との差分を超えない範囲で、マクロブロック毎に量子化スケール(mquant)の値を１サイズ小さくするようにできる。これにより、システムコントローラ１１７で設定されＣＰＵ  Ｉ／Ｆ２２１を介して伝えられる１フレーム当たりの最大発生符号量に近付け、高画質を実現することが可能である。
【０１０３】
量子化部２１８では、レートコントロール部２１７により上述のようにして指定される量子化スケール(quantizes_scale)値をストリーム中から取り出し、取り出された量子化スケール値に基づき量子化テーブル部２１１Ｂで量子化されたＤＣＴ係数の量子化が行われる。このとき、レートコントロール部２１７から与えられる量子化スケール値は、正規化アクティビティデータnorm_actから求められた量子化スケール(mquant)の値であるため、視覚特性が考慮された適応量子化が行われることになる。
【０１０４】
量子化部２１８で量子化されたＤＣＴ係数は、図８Ｃに示されるようにストリーム中のデータ部に格納され、ＶＬＣ部２１９に供給される。量子化されＶＬＣ部２１９に供給されたＤＣＴ係数は、ジグザグスキャンなどのスキャンニングが施され、２次元ハフマンコードに基づくＶＬＣテーブルが参照されてそれぞれ可変長符号化される。
【０１０５】
このとき、ＶＬＣ部２１９までストリームの前半部を構成していたヘッダ部が図９に示されるようにスライス層以下のＭＰＥＧのヘッダ情報が格納されるＭＰＥＧのヘッダ部にすげ替えられて出力される。可変長符号は、ストリームの後半側のデータ部に格納される。さらに、可変長符号に対して、バイト単位で整列するようにビットシフトが施され、ＭＰＥＧ  ＥＳとされて出力される。
【０１０６】
なお、上述では、ＭＰＥＧエンコーダ１０３における処理がハードウェアにより行われるように説明したが、これはこの例に限定されない。ＭＰＥＧエンコーダ１０３の処理は、ソフトウェアによっても同様に実現可能なものである。例えば、コンピュータ装置にディジタルビデオ信号の入力インターフェイスを設け、コンピュータ上に搭載されたソフトウェアによりＣＰＵおよびメモリなどを利用して実行することができる。また、上述のディジタルＶＴＲの構成において、ＭＰＥＧエンコーダ１０３をＣＰＵおよびメモリに置き換えたような構成としてもよい。
【０１０７】
図１０、図１１および図１２は、ＭＰＥＧエンコーダ１０３の処理をソフトウェアで行う場合の一例のフローチャートである。これら図１０、図１１および図１２のフローチャートによる処理は、上述したハードウェアによる処理と同様なものであるので、以下では、ハードウェアにおける処理と対応させながら、概略的に説明する。なお、これら図１０、図１１および図１２において、符号Ａ、Ｂは、図１０、図１１および図１２間でそれぞれ対応する符号に処理が移行されることを示す。
【０１０８】
図１０、図１１および図１２に示される処理のうち、図１０に示されるステップＳ１〜Ｓ７は、上述の入力フィールドアクティビティ平均化処理部１０３Ａによる処理に対応する。図１１に示されるステップＳ１１〜Ｓ２１は、上述のプリエンコード処理部１０３Ｂに対応する。また、図１２に示されるステップＳ３１〜Ｓ３８は、上述のエンコード処理部１０３Ｃに対応する。
【０１０９】
図１０に示される最初のステップＳ１で、入力インターフェイスを介してビデオデータが取り込まれる。次のステップＳ２で、取り込まれたビデオデータから、垂直ブランキング区間でＭＰＥＧにおける各ヘッダが作成されメモリに格納される。垂直ブランキング区間以外では、取り込まれたビデオデータがメモリに格納される。
【０１１０】
ステップＳ３では、ビデオデータがラスタスキャンからブロックスキャンへと変換され、マクロブロックが切り出される。これは、例えばメモリに格納されたビデオデータを読み出す際の読み出しアドレスを制御することでなされる。ステップＳ４で、マクロブロックに切り出されたビデオデータに対して第１フィールドによるアクティビティ計算がなされ、計算結果のアクティビティActibity(act)がステップＳ５で積算され、積算値sumとしてメモリに格納される。これらステップＳ３〜Ｓ５までの処理は、ステップＳ６において第１フィールドの最終マクロブロックの処理が終了したと判断されるまで繰り返される。すなわち、積算値sumは、１フィールド分のマクロブロックのアクティビティの合計となる。
【０１１１】
ステップＳ６において１フィールドの最終マクロブロックまで処理が終了したと判断されたら、ステップＳ７で、メモリに格納された積算値sumが１フィールド分のマクロブロック数で除され、１フィールド分のアクティビティが平均化されたフィールドアクティビティの平均値Actibity(avg_act)が求められ、メモリに格納される。
【０１１２】
フィールドアクティビティの平均値Actibity(avg_act)が求められると、処理は図１１のステップＳ１１に移行する。ステップＳ１１では、上述のステップＳ３と同様に、メモリに格納されたビデオデータがラスタスキャンからブロックスキャンへと変換され、マクロブロックが切り出される。
【０１１３】
次のステップＳ１２で、ＤＣＴをフィールドＤＣＴ符号化モードおよびフレームＤＣＴ符号化モードの何れで行うかが選択され、選択結果がＤＣＴモードタイプデータdct_typとしてメモリに格納される。ステップＳ１３では、第１および第２フィールドが共に用いられて、マクロブロック毎のアクティビティが計算され、上述のステップＳ７で求められメモリに格納されたフィールドアクティビティの平均値Actibity(avg_act)を用いて正規化アクティビティActibity(norm_act)が求められる。求められた正規化アクティビティActibity(norm_act)は、メモリに格納される。
【０１１４】
次のステップＳ１４で、上述のステップＳ１１でビデオデータから切り出されたマクロブロックが８画素×８ラインからなるＤＣＴブロックに分割され、このＤＣＴブロックに対して２次元ＤＣＴが行われる。２次元ＤＣＴによりＤＣＴブロックが変換されたＤＣＴ係数は、ステップＳ１５で量子化テーブル(quantizer_table)による量子化がなされ、処理はステップＳ１６に移行される。
【０１１５】
ステップＳ１６〜Ｓ１９の処理を、量子化スケール(quantizer_scale)値Ｑｎそれぞれについて行うように繰り返すことで、上述のＱ＿ｎ部２１２、２１２、・・・、ＶＬＣ部２１３、２１３、・・・、積算部Σ２１４、２１４、・・・、ならびに、積算部Σ２１５、２１５、・・・に相当する処理が行われる。すなわち、ステップＳ１６で、ＤＣＴ係数に対して量子化スケール値Ｑ＝１での量子化が行われる。
【０１１６】
ステップＳ１６での量子化の際に、小数部が量子化スケール値Ｑ毎に積算される。積算された小数部は、量子化スケール値Ｑ毎およびマクロブロック毎にメモリに格納される。
【０１１７】
ステップＳ１６で量子化されたＤＣＴ係数は、ステップＳ１７で、ＶＬＣテーブルが参照されて可変長符号化される。そして、ステップＳ１８で可変長符号化によるマクロブロックにおける発生符号量が計算され、メモリに格納される。ステップＳ１９で次の量子化スケール値Ｑがあるか否かが判断され、次の量子化スケール値Ｑがあると判断されたら、処理はステップＳ１６に戻され、次の量子化スケール値Ｑに基づく処理が行われる。
【０１１８】
ステップＳ１９で、全ての量子化スケール値Ｑｎの値について、マクロブロックにおける発生符号量の積算値が求められたとされれば、ステップＳ２０で、ステップＳ１８で求められたマクロブロック毎の発生符号量が１フレーム分、積算される。このとき、上述したmquantによる視覚特性を利用した適応量子化が行われる。ステップＳ２１で、１フレームの最終マクロブロック（ＭＢ）まで処理が終了したかどうかが判断され、最終マクロブロックまでの処理が終了していないと判断されたら、処理がステップＳ１１に戻される。一方、最終マクロブロックまでの処理が終了され、１フレーム分の発生符号量が見積もられれば、量子化スケール値Ｑｎ毎の適応量子化による１フレーム分の発生符号量は、それぞれメモリに格納され、処理は図１２のステップＳ３１に移行され、実際のエンコード処理が行われる。
【０１１９】
ステップＳ３１では、上述のステップＳ１１と同様に、メモリに格納されたビデオデータがラスタスキャンからブロックスキャンへと変換され、マクロブロックが切り出される。次のステップＳ３２では、上述のステップＳ１２でメモリに格納されたＤＣＴモードタイプデータdct_typに基づきＤＣＴ符号化モードが設定される。
【０１２０】
ステップＳ３３では、ステップＳ３１でビデオデータから切り出されたマクロブロックが８画素×８ラインからなるＤＣＴブロックに分割され、このＤＣＴブロックに対して２次元ＤＣＴが行われる。２次元ＤＣＴによりＤＣＴブロックが変換されたＤＣＴ係数は、ステップＳ３４で量子化テーブル(quantizer_table)による量子化がなされ、処理はステップＳ３５に移行される。
【０１２１】
ステップＳ３５では、上述したステップＳ１１〜Ｓ２１において見積もられた、量子化スケール値Ｑ毎の１フレーム分の発生符号量に基づき、実際のエンコード処理において発生される符号量の制御を行うために、後述するステップＳ３６で用いられる量子化スケール値Ｑがマクロブロック毎に設定される。
【０１２２】
このとき、後述する方法により、上述したステップＳ１６でメモリに格納された、量子化スケール値Ｑ毎およびマクロブロック毎の量子化の際に発生された小数部に基づき、バックサーチ検出が行われる。バックサーチにより前回の符号化の際の量子化スケール値Ｑが検出されれば、この検出された量子化スケール値Ｑと符号量制御による量子化スケール値Ｑとに基づき、ステップＳ３６で用いられる量子化スケール値Ｑの値が設定される。例えば、バックサーチにより前回の符号化の際に用いられた量子化スケール値Ｑが検出されなかった場合には、符号量制御による量子化スケール値ＱがステップＳ３６で用いられる量子化スケール値Ｑとして設定される。
【０１２３】
次のステップＳ３６では、ステップＳ３５で設定された量子化スケール値Ｑを用いて、ステップＳ３４で量子化テーブルを用いて量子化されたＤＣＴ係数の量子化が行われる。
【０１２４】
ステップＳ３６で量子化されたＤＣＴ係数は、次のステップＳ３７でＶＬＣテーブルが参照され可変長符号化される。そして、ステップＳ３８で１フレームの最終マクロブロックまで処理が行われたか否かが判断され、１フレームの最終マクロブロックまで処理されていないと判断されれば、処理がステップＳ３１に戻され、次のマクロブロックに対する量子化処理および可変長符号化処理が行われる。一方、ステップＳ３８で、１フレームの最終マクロブロックまで処理が行われたと判断されれば、１フレーム分のエンコード処理が終了したとされる。
【０１２５】
なお、上述では、ステップＳ１１〜Ｓ２１までのプリエンコード処理と、ステップＳ３１〜Ｓ３８までのエンコード処理とを別々の処理として説明したが、これはこの例に限定されない。例えば、ステップＳ１１〜Ｓ２１において発生符号量の見積もりにより得られたデータをメモリに格納し、そこから実際のエンコード処理により得られるデータを選択して取り出すようにする。これにより、ステップＳ３１〜Ｓ３８の処理をステップＳ１１〜Ｓ２１による処理に含まれるループとして組み込むことができる。
【０１２６】
次に、バックサーチの原理について概略的に説明する。上述のように、この実施の一形態で用いられるバックサーチは、逆量子化されたＤＣＴ係数が量子化スケール値の整数倍になるという特徴を利用して、前回の符号化で用いられた量子化スケール値を検出する。図１３は、バックサーチの原理を説明するための具体的数値の例を示す。図１３Ａは、この実施の一形態に適用可能なＤＣＴ係数が示される。上述のように、実際のＤＣＴ係数は、８画素×８ラインの構造を有していが、ここでは説明を簡略化するため、４画素×４ラインの構造を有する場合について説明する。
【０１２７】
図１３Ｂは、図１３Ａに示すＤＣＴ係数を、前回の記録時に量子化スケール値〔８〕で量子化し、さらにこれを再生時に逆量子化した結果を示す。ここで、先頭画素（左上端の画素）は、ＭＰＥＧデータストリームに用いられるＤＣ成分であり、それ以外の１５個の画素がＡＣ係数となっている（なお、８画素×８ラインの場合は６３個のＡＣ係数となる）。
【０１２８】
このようなＤＣＴ係数を入力して量子化を行なう場合について考える。先ず、図１３Ｂに示すＤＣＴ係数を、量子化スケール値〔７〕で量子化（除算）し、ＡＣ係数の小数部を積算する。なお、図１３Ａ、図１３Ｂ、図１３Ｃ、図１３Ｄおよび図１３Ｅに示す積算演算では、ＤＣＴを含めた演算精度の問題や量子化マトリクスにおける量子化の影響もあるため、小数部を最も近い整数との誤差に変換した後に積算している。
【０１２９】
この結果、図１３Ｂに示すＤＣＴ係数を量子化スケール値〔７〕で量子化（除算）すると、図１３Ｃの左図に示すような値となる。さらに、そのＡＣ係数の小数部を、上述した方法で変換すると、図１３Ｃの右図に示すような値となる。そして、この値を積算すると、積算値ｆｒａｃｔｉｏｎは、〔２．２７〕となる。
【０１３０】
また、図１３Ｂに示すＤＣＴ係数を、量子化スケール値〔８〕で量子化（除算）し、ＡＣ係数の小数部を上述のように変換すると、図１３Ｄに示すような値となり、これを積算した積算値ｆｒａｃｔｉｏｎは、〔０〕となる。
【０１３１】
また、図１３Ｂに示すＤＣＴ係数を、量子化スケール値〔１０〕で量子化（除算）し、ＡＣ係数の小数部を上述のように変換すると、図１３Ｅに示すような値となり、これを積算した積算値ｆｒａｃｔｉｏｎは、〔２．４０〕となる。
【０１３２】
このように、前回の符号化の際の量子化スケール値「８」を用いて量子化した場合には、ＡＣ係数の小数部の積算値が〔０〕となる。したがって、この値を測定することにより、前回の量子化スケール値を判定することができる。
【０１３３】
図１４は、以上のような演算による積算値の一例の結果を示す。図１４において、縦軸が小数部の積算値ｆｒａｃｔｉｏｎ、横軸が量子化スケール値Ｑに対してそれぞれ割り当てられた量子化スケールコード(quantizer_scale_code)である。上述の図１３Ａ、図１３Ｂ、図１３Ｃ、図１３Ｄおよび図１３Ｅに示す例では、前回の符号化の際の量子化スケール値を〔８〕として量子化した場合に積算値ｆｒａｃｔｉｏｎが〔０〕となっている。この場合、図１４に示されるように、〔８〕の約数である〔１〕、〔２〕および〔４〕でも同様に積算値が〔０〕となる。
【０１３４】
つまり、この例では、量子化スケールコード〔１〕、〔２〕および〔４〕で示される量子化スケール値Ｑも前回の符号化の際の量子化スケール値の候補であるといえる。
【０１３５】
そこで、このように積算値ｆｒａｃｔｉｏｎが〔０〕となる量子化スケール値が複数ある場合には、最も大きい量子化スケール値（この場合には〔８〕）を、前回の符号化の際の量子化スケール値として判定する。
【０１３６】
なお、上述のように積算値ｆｒａｃｔｉｏｎの値が〔０〕となるのは、理論上のものであり、実際の演算においては演算精度長は有限であることから、一定の誤差を含む値となり、正確には〔０〕とならない。そこで、バックサーチ検出を、積算値ｆｒａｃｔｉｏｎと〔０〕との一致を判定して行うのではなく、積算値ｆｒａｃｔｉｏｎが閾値未満であるか否かを判定して行うような方法を採用する。
【０１３７】
すなわち、積算値ｆｒａｃｔｉｏｎが閾値未満であった場合は、その積算値ｆｒａｃｔｉｏｎの値が〔０〕であると見なし、ＤＣＴ計数が当該積算値ｆｒａｃｔｉｏｎに対応する量子化スケール値Ｑで割り切れるものとする。
【０１３８】
この場合、実際的には、積算値ｆｒａｃｔｉｏｎとして算出される値は様々であり、閾値として固定的な値を用いた場合には、有効な判定を行えない場合がある。例えば、閾値としてより小さい値を用いた場合、〔０〕から離れた積算値ｆｒａｃｔｉｏｎを排除することができ、誤検出は防止されるが、本来検出されるべき量子化スケール値についても排除され易くなる。一方、閾値としてより大きな値を用いた場合、より多くの量子化スケール値が検出されるが、本来検出すべきでない量子化スケール値を誤検出してしまう可能性が高まる。また、固定的な閾値を用いて正確な判定を行うためには、高い演算精度が要求されることになる。
【０１３９】
この発明の実施の一形態では、この点を鑑みて、上述したように、積算値ｆｒａｃｔｉｏｎを算出する際に用いられたサンプルのうち、意味のある値を有するサンプルを有効サンプルとして計数し、計数された有効サンプル数を用いて積算値ｆｒａｃｔｉｏｎを正規化する。さらに、積算値ｆｒａｃｔｉｏｎが正規化された値（以下、正規化積算値と称する）と、対象としている量子化スケール値Ｑを示す量子化スケールコードの前後、すなわち値が〔１〕異なる量子化スケールコードが示す量子化スケール値Ｑによる正規化積算値との関係を用いて、バックサーチ検出を行う。
【０１４０】
以下、この発明の実施の一形態によるバックサーチ検出方法について、より詳細に説明する。
【０１４１】
有効サンプルの計数および計数された有効サンプル数に基づく積算値ｆｒａｃｔｉｏｎの正規化について説明する。図１５は、量子化ブロック２１２で量子化されたデータの一例の構造を示す。量子化後のデータは、整数部Ｄ１および小数部Ｄ２から構成される。整数部Ｄ１は、ＶＬＣ部２１３に供給される。小数部Ｄ２は、量子化による演算誤差など所定桁以下の部分Ｄ４を含み、所定桁より上位桁の部分Ｄ３（以下、積算部Ｄ３と称する）が積算部Σ２３１により積算される。部分Ｄ４は、積算部Σ２３１による積算対象とされる値より小さな値であり、例えば量子化演算などによる誤差精度以下の値である。
【０１４２】
整数部Ｄ１および小数部Ｄ２のうち積算部Ｄ３が共に〔０〕であれば、そのデータは、量子化前のＤＣＴ係数が元々〔０〕であったか、または、例えば量子化の際に大きな量子化スケール値Ｑで除されるなどにより、量子化により誤差精度以下の値になったかの何れかであると判断できる。そこで、整数部Ｄ１および積算部Ｄ３が共に〔０〕である場合、そのデータを有効サンプルとして計数しないようにする。また、少なくとも整数部Ｄ１または積算部Ｄ３の何れか一方が〔０〕でなければ、そのデータを有効サンプルとして計数する。
【０１４３】
積算部Ｄ３が１マクロブロック分、すなわち６３ＡＣ係数×８ＤＣＴブロック＝５０４ＡＣ係数分、積算された積算値ｆｒａｃｔｉｏｎが、対応する１マクロブロック分の有効サンプルを計数した有効サンプル数で除され、正規化される。この積算値ｆｒａｃｔｉｏｎが正規化された正規化積算値を用いてバックサーチ検出を行う。
【０１４４】
ある量子化スケール値quantiser_scaleで量子化を行った際の、有効サンプル数のカウントおよび有効サンプル数を用いた積算値ｆｒａｃｔｉｏｎの正規化について、下記の式を用いてより具体的に説明する。なお、下記に示す式は、コンピュータ装置などのプログラムの記述言語として用いられるＣ言語の記述法に基づく。また、先頭の数字＋「：」は、説明に用いる行番号を示す。
【０１４５】
1:for(i=0;i<=7;i++) {
2:    for(j=1;j<=63;j++) {
3:        quantised_dct_coeff=dct_coeff/quantiser_scale;
4:        fraction=abs(quantised_dct_coeff-int(quantised_dct_coeff));
5:        if(fraction>=0.5) fraction=1.0-fraction;
6:        frac_ttl+=fraction;
7:        if(quantised_dct_coeff!=0.0) non_zero++;
8:    }
9:}
10:if(main_nz<sub_nz)  min_nz=main_nz;
11:else                min_nz=sub_nz;
12:if(non_zero<min_nz) non_zero=min_nz;
13:avg_frac=frac_ttl/non_zero;
【０１４６】
先ず、１行目でマクロブロックを構成するＤＣＴブロック数が設定される。この例では、クロマフォーマットが４：２：２であるため、１マクロブロックがＹ１、Ｙ２、Ｙ３、Ｙ４、Ｃｂ１、Ｃｒ１、Ｃｂ２、Ｃｒ２の８ＤＣＴブロックとされる。２行目で、ＤＣＴブロック毎のＤＣＴ係数の数が設定される。ＤＣ係数を除いた６３ＡＣ係数とされる。これにより、３行目〜７行目に示される処理を、各ＤＣＴブロックおよび各ＡＣ係数毎に順次、６３係数×８ブロック分、繰り返すように設定される。
【０１４７】
３行目で、ＤＣＴ係数dct_coeffが量子化スケール値quantiser_scaleで除されて量子化され、量子化ＤＣＴ係数quantised_dct_coeffが求められる。４行目で、量子化ＤＣＴ係数quantised_dct_coeffから整数部が減ぜられ絶対値化され、量子化ＤＣＴ係数quantised_dct_coeffの小数部fractionが求められる。また、次の５行目で、小数部fractionが〔０．５〕を超える場合の直近の整数値からの誤差が求められ、これが新たな小数部fractionとされる。小数部fractionは、６行目で、積算値frac_ttlに対して積算される。なお、ここでは、小数部fractionと上述の積算値ｆｒａｃｔｉｏｎとを区別して用いている。上述の積算値ｆｒａｃｔｉｏｎは、ここでいう積算値frac_ttlに対応する。
【０１４８】
７行目では、量子化ＤＣＴ係数quantised_dct_coeffの整数部および小数部が共に〔０〕でないか否かが判断され、これらが共に〔０〕でないと判断されれば、有効サンプル数non_zeroが１、カウントアップされる。
【０１４９】
以上の処理が１マクロブロック分、すなわち５０４ＡＣ係数分、終了したら、１０行目〜１３行目で、有効サンプル数non_zeroを用いて積算値frac_ttlが正規化される。このとき、有効サンプル数non_zeroが極めて小さな値であった場合、積算値frac_ttlの正規化を正しく行えなくなる。そのため、有効サンプル数non_zeroが所定値に満たない場合に、有効サンプル数non_zeroの値に対して制限がかけられる。
【０１５０】
１０行目および１１行目で、後述するメインバックサーチおよびサブバックサーチにおける有効サンプル数の下限値main_nzおよびsub_nzに基づき、小さい方の値に制限値min_nzが設定される。なお、値main_nzおよびsub_nzは、予め与えられるパラメータである。１２行目で、制限値min_nzと有効サンプル数non_zeroとが比較され、有効サンプル数non_zeroが制限値min_nz未満であった場合に、有効サンプル数non_zeroが制限値min_nzに制限される。そして、１３行目で、積算値frac_ttlが有効サンプル数non_zeroで除され、積算値frac_ttlが有効サンプル数non_zeroで正規化された正規化積算値avg_fracが求められる。
【０１５１】
次に、正規化積算値avg_fracに基づくバックサーチ検出について説明する。上述の正規化積算値avg_fracを、全ての量子化スケール値Ｑついて求める。既に述べたように、この全ての量子化スケール値Ｑにおける正規化積算値avg_fracに基づき、この発明の実施の一形態では、２つの方法を用いてバックサーチ検出を行う。
【０１５２】
第１の方法は、対象となる正規化積算値avg_fracに対応する量子化スケール値Ｑを示す量子化スケールコードｑに対し、１大きい量子化スケールコード（ｑ＋１）および１小さい量子化スケールコード（ｑ−１）によりそれぞれ示される量子化スケール値Ｑに対応する、２つの正規化積算値avg_fracを用いてバックサーチを行う方法である。
【０１５３】
すなわち、ある量子化スケール値Ｑにおける正規化積算値avg_frac[q]に対して、量子化スケール値Ｑを示す量子化スケールコードｑより１大きい量子化スケールコード（ｑ＋１）により示される量子化スケール値における正規化積算値avg_frac[q+1]と、１小さい量子化スケールコード（ｑ−１）により示される量子化スケール値における正規化積算値avg_frac[q-1]とを用いて、バックサーチを行う。この第１の方法によるバックサーチを、以下では、メインバックサーチと称する。
【０１５４】
第２の方法は、上述の第１の方法に加え、量子化スケールコード（ｑ＋１）よりさらに１大きい量子化スケールコード（ｑ＋２）により示される量子化スケール値における正規化積算値avg_frac[q+2]を用いてバックサーチを行う方法である。この第２の方法によるバックサーチは、以下では、サブバックサーチと称する。
【０１５５】
メインバックサーチについて、図１６を用いて説明する。図１６は、連続する量子化スケールコード（ｑ−１）、ｑおよび（ｑ＋１）それぞれに対応する正規化積算値avg_frac[q-1]、avg_frac[q]およびavg_frac[q+1]を、折れ線グラフで示す。メインバックサーチは、注目している正規化積算値avg_frac[q]が量子化スケールコードにおいて両隣の正規化積算値avg_frac[q-1]およびavg_frac[q+1]より小さい場合に、正規化積算値avg_frac[q]の点をディップポイントと称すれば、ディップポイントがより明確に現れるときに、このメインバックサーチが適用される。
【０１５６】
すなわち、ディップポイントそのものの値が大きい、および／または、ディップポイントにおける正規化積算値avg_frac[q]を求める際に用いた有効サンプル数non_zeroが所定値以下であっても、注目している正規化積算値avg_frac[q]が、正規化積算値avg_frac[q-1]およびavg_frac[q+1]に対して十分小さければ、ディップポイントがより深く現れることになる。
【０１５７】
このように、深いディップポイントが現れた量子化スケール値Ｑは、ＤＣＴ計数を当該ディップポイントに対応する量子化スケール値Ｑで除したときの余りが〔０〕になったと見なし、ＤＣＴ係数が当該ディップポイントに対応する量子化スケール値Ｑで割り切れたものと判定する。
【０１５８】
より具体的には、図１６を参照し、Ｃ言語的に表現された下記の式に基づき判定が行われる。なお、各行頭の数字＋「：」は、説明に用いる行番号を示す。
【０１５９】
1:for(q=1;q<=31;q++) {
2:main_bsr[q]=(non_zero[q]>main_nz) &
3:            (avg_frac[q]<main_th) &
4:            (avg_frac[q]+main0mgn<avg_frac[q-1]) &
5:            (avg_frac[q]+main1mgn<avg_frac[q+1])
6:}
【０１６０】
なお、この式において、項目main_nz、main_th、main0mgn、main1mgnは、パラメータであって、例えば下記のように設定値が与えられる。なお、これは、演算語長が３０ビットの例である。
main_nz=64
main_th=20480/2^21
main0mgn=4096/2^21
main1mgn=8192/2^21
【０１６１】
上述の式において、１行目で、全て（３１個）の量子化スケールコードｑに対応する正規化積算値avg_frac[q]に対して順次、処理が行われることが設定される。
【０１６２】
２行目〜５行目は、上述した各項目によるディップポイントの判定条件が示される。２行目は、注目している正規化積算値avg_frac[q]を求める際に用いられた有効サンプル数non_zero[q]の下限値が項目main_nzにより示される。すなわち、１マクロブロックにおいてバックサーチに用いられる５０４個のＤＣＴ係数のうち、有効サンプル数non_zeroが下限値main_mzで示される個数（この例では６４個）を超えることが条件として示される。
【０１６３】
３行目は、注目している正規化積算値avg_frac[q]が項目main_thで示される閾値（この例では２０４８０／２＾２１）未満であることが条件として示される。
【０１６４】
４行目および５行目は、正規化積算値avg_frac[q]と、正規化積算値avg_frac[q-1]およびavg_frac[q+1]との関係が示される。マージン値main0mgnおよびmain1mgnにより、注目している正規化積算値avg_frac[q]と正規化積算値avg_frac[q-1]およびavg_frac[q+1]との差がそれぞれ定義される。すなわち、正規化積算値avg_frac[q]と量子化スケールコードにおいて１小さい正規化積算値avg_frac[q-1]との差は、マージン値main0mgnより大きくなければならない。同様に、正規化積算値avg_frac[q]と量子化スケールコードにおいて１大きい正規化積算値avg_frac[q+1]との差は、マージン値main1mgnより大きくなければならない。
【０１６５】
なお、この例では、マージン値main1mgnがマージン値main0mgnの２倍の値とされている。このように、ディップポイントの正規化積算値avg_frac[q-1]および[q+1]に対する深さの閾値を与えるマージン値main0mgnおよびmain1mgnは、それぞれ異なる値を設定することができる。勿論、マージン値main0mgnとmain1mgnとを同一の値としてもよいし、マージン値main0mgnとmain1mgnとが互いに倍数関係になっていなくてもよい。マージン値main0mgnおよびmain1mgnは、実験的に求めることができる。
【０１６６】
上述の２行目〜５行目で示される判定条件を全て満足する量子化スケールコードｑに基づき、メインバックサーチによるバックサーチ検出値main_bsr[q]=1が求められる。すなわち、バックサーチ検出値main_bsr[q]で示される量子化スケールコードｑに対応する量子化スケール値Ｑにより、ＤＣＴ係数が割り切れたとされる。
【０１６７】
次に、サブバックサーチについて、図１７を用いて説明する。図１７は、連続する量子化スケールコード（ｑ−１）、ｑ、（ｑ＋１）、（ｑ＋２）それぞれに対応する正規化積算値avg_frac[q-1]、avg_frac[q]、avg_frac[q+1]およびavg_frac[q+2]を、折れ線グラフで示す。サブバックサーチは、ディップポイントが上述したメインバックサーチに比べて明確に現れない場合に、より制約を厳しくしたうえでバックサーチを行う。
【０１６８】
すなわち、正規化積算値avg_frac[q]が、量子化スケールコードにおいて両隣の正規化積算値avg_frac[q-1]およびavg_frac[q+1]に対して充分小さい値でなく、正規化積算値avg_frac[q]によるディップポイントの深さが十分に現れていない場合、ディップポイントそのものの値が大きいと、当該ディップポイントに対応する正規化積算値avg_frac[q]の値は、ノイズの影響を大きく受けている可能性が高い。また、正規化積算値avg_frac[q]を求める際の有効サンプル数non_zeroが少ない場合には、誤検出の可能性が高くなる。さらに、ディップポイントが繰り返し現れる場合も、ノイズの影響を大きく受けている可能性が高いといえる。
【０１６９】
したがって、この発明の実施の一形態では、ディップポイントが比較的明確に現れていないような場合のバックサーチ検出は、当該ディップポイントにおける正規化積算値avg_frac[q]が十分な数の有効サンプル数non_zeroを用いて求められており、当該正規化積算値avg_frac[q]の信頼性が高く、且つ、当該正規化積算値avg_frac[q]そのものの値が充分小さい場合に、ノイズの影響による誤検出を防ぐため、次の条件を満たした場合に、ＤＣＴ係数を当該ディップポイントに対応する量子化スケール値Ｑで除したときの余りが〔０〕になったと見なし、当該ディップポイントに対応する量子化スケール値ＱでＤＣＴ係数が割り切れたと判定する。
【０１７０】
すなわち、ディップポイントの正規化積算値avg_frac[q]に対して量子化スケールコードにおいて１異なる正規化積算値avg_frac[q-1]およびavg_frac[q+1]に加えて、ディップポイントの正規化積算値avg_frac[q]に対して量子化スケールコードにおいて２大きい、正規化積算値avg_frac[q+2]を用いて判定を行う。正規化積算値avg_frac[q+2]が正規化積算値avg_frac[q+1]に対して再び小さい値にならないことを判定条件に加える。
【０１７１】
より具体的には、図１７を参照し、Ｃ言語的に表現された下記の式に基づき判定が行われる。なお、各行頭の数字＋「：」は、説明に用いる行番号を示す。
【０１７２】
1:for(q=1;q<=31;q++) {
2:sub_bsr[q]=(non_zero[q]>sub_nz) &
3:            (avg_frac[q]<sub_th) &
4:            (avg_frac[q]+sub0mgn<avg_frac[q-1]) &
5:            (avg_frac[q]+sub1mgn<avg_frac[q+1]) &
6:            (avg_frac[q]+sub2mgn<avg_frac[q+2])
7:}
【０１７３】
なお、この式において、項目sub_nz、sub_th、sub0mgn、sub1mgn、sub2mgnは、パラメータであって、例えば下記のように設定値が与えられる。なお、これは、演算語長が３０ビットの例である。
sub_nz=128
sub_th=14336/2^21
sub0mgn=2048/2^21
sub1mgn=2048/2^21
sub2mgn=4096/2^21
【０１７４】
上述の式において、１行目で、全て（３１個）の量子化スケールコードｑに対応する正規化積算値avg_frac[q]に対して順次、処理が行われることが設定される。
【０１７５】
２行目〜６行目は、上述した各項目によるディップポイントの判定条件が示される。２行目は、注目している正規化積算値avg_frac[q]を求める際に用いられた有効サンプル数non_zero[q]の下限値が項目sub_nzにより示される。すなわち、１マクロブロックにおいてバックサーチに用いられる５０４個のＤＣＴ係数のうち、有効サンプル数non_zeroが項目sub_nzで示される個数（この例では１２８個）を超えることが条件として示される。項目sub_nzは、このように、上述したメインバックサーチにおける項目main_nzに対して大きい値が設定される。
【０１７６】
３行目は、注目している正規化積算値avg_frac[q]が項目sub_thで示される値（この例では１４３３６／２＾２１）未満であることが条件として示される。項目sub_thは、このように、上述したメインバックサーチにおける項目main_thに対して小さい値が設定される。
【０１７７】
４行目および５行目は、正規化積算値avg_frac[q]と、正規化積算値avg_frac[q-1]およびavg_frac[q+1]との関係が示される。マージン値sub0mgnおよびsub1mgnにより、注目している正規化積算値avg_frac[q]と正規化積算値avg_frac[q-1]およびavg_frac[q+1]との差がそれぞれ定義される。すなわち、正規化積算値avg_frac[q]と量子化スケールコードにおいて１小さい正規化積算値avg_frac[q-1]との差は、マージン値sub0mgnより大きくなければならない。同様に、正規化積算値avg_frac[q]と量子化スケールコードにおいて１大きい正規化積算値avg_frac[q+1]との差は、マージン値sub1mgnより大きくなければならない。
【０１７８】
サブバックサーチでは、さらに、６行目において、正規化積算値avg_frac[q]と正規化積算値avg_frac[q+2]との関係が示される。注目している正規化積算値avg_frac[q]量子化スケールコードにおいて２大きい正規化積算値avg_frac[q+2]との差は、マージン値sub2mgnより大きくなければならない。また、マージン値sub2mgnは、上述のマージン値sub1mgnより大きな値とされる。
【０１７９】
上述の２行目〜７行目で示される判定条件を全て満足する量子化スケールコードｑに基づき、サブバックサーチによるバックサーチ検出値sub_bsr[q]=1が求められる。すなわち、バックサーチ検出値sub_bsr[q]で示される量子化スケールコードｑに対応する量子化スケール値Ｑにより、ＤＣＴ係数が割り切れたとされる。
【０１８０】
こうしてメインバックサーチおよびサブバックサーチにより求められたバックサーチ検出値main_bsr[q]およびsub_bsr[q]に基づき、マクロブロックにおけるＤＣＴ係数が割り切れたとされる量子化スケール値Ｑが最終的に決定される。
【０１８１】
なお、サブバックサーチにおいて設定されるマージン値sub0mgnおよびsub1mgnは、メインバックサーチにおける対応するマージン値main0mgnおよびmain1mgnより、それぞれ小さい値とされる。この例では、マージン値sub0mgnがメインバックサーチの対応するマージン値main0mgnの１／２、マージン値sub1mgnがメインバックサーチの対応するマージン値main1mgnの１／４の値とされる。これにより、サブバックサーチでは、メインバックサーチよりもより浅いディップポイントによる検出を可能としている。
【０１８２】
なお、ここでは、マージン値sub0mgnおよびsub1mgnが同一の値とされているが、これはこの例に限られず、これらマージン値sub0mgnおよびsub1mgnが異なる値としてもよい。また、マージン値sub0mgnと対応するメインバックサーチのマージン値main0mgn、ならびに、マージン値sub1mgnと対応するメインバックサーチのマージン値main1mgnは、それぞれ必ずしも倍数関係にある必要はない。
【０１８３】
ここで、一度符号化されたＤＣＴ係数は、前回の符号化の後に行われた復号化の際の逆量子化で用いられた量子化スケール値の整数倍となっている。したがって、一度符号化されたＤＣＴ係数は、この逆量子化で用いられた量子化スケール値の約数である量子化スケール値においても整数倍となっている。
【０１８４】
そこで、前回の符号化の後に行われた復号化の際に逆量子化されたＤＣＴ係数が整数倍であると判定された量子化スケール値に対して割り当てられた量子化スケールコードのうち、最大の量子化スケールコードを、前回の符号化の際に用いられた量子化スケール値を示す量子化スケールコードとする。
【０１８５】
例えば、上述したバックサーチ検出値main_bsr[q]およびsub_bsr[q]を用いて、Ｃ言語的な表現により記述される次の式により、最終的に決定される量子化スケール値Ｑを示す量子化スケールコードcodedQを求めることができる。
【０１８６】
0004135427.tif 000002
この式では、量子化スケールコードを[q]として、量子化スケールコード[q]を最大値から１ずつ減じて値が〔１〕になる値cd[q]を探し、値が〔１〕になる値cd[q]が見つかったところで、処理から抜ける(break)。以上により、cd[q]=1である最大の量子化スケールコード[q]を選択する。
【０１８７】
なお、最終的な量子化スケール値Ｑの決定の際に、上述したメインバックサーチおよびサブバックサーチを実行するか否か、あるいは、メインバックサーチおよびサブバックサーチにより検出されたバックサーチ検出値main_bsr[q]およびsub_bsr[q]を用いるか否かを、量子化スケールコード毎に設定することができる。例えば、量子化スケールコードｑ＝１および３１では、それぞれ当該量子化スケールコードよりも１小さい量子化スケールコードや１大きい量子化スケールコードが存在しないため、メインバックサーチおよびサブバックサーチを行わないように設定できる。同様に、量子化スケールコードｑ＝３０では、当該量子化スケールコードより２大きい量子化スケールコードが存在しないため、サブバックサーチを行わないように設定できる。
【０１８８】
図１８は、上述したようなバックサーチ検出を行う一例の構成を示す。なお、図１８は、上述した図２に示す構成の一部を抽出して示したもので、上述した図２と共通する部分には同一の符号を付し、詳細な説明を省略する。図２において上述した多段階の量子化ブロック２１２には、それぞれ固有の量子化スケール値Ｑが割り当てられている。なお、量子化スケール値Ｑは、例えばＭＰＥＧ２によって規定されたもので、〔１〕から〔８〕の連続数および〔１０〕から〔１１２〕までの間欠数よりなる合計３１個の数値である。この量子化スケール値Ｑに対応して、３１個の量子化部（Ｑ＿ｎ部）２１２、２１２、・・・がそれぞれ設けられる。
【０１８９】
量子化テーブル部２１１Ａから出力されたＤＣＴ係数は、量子化部２１２、２１２、・・・に供給され、量子化部２１２、２１２、・・・にそれぞれ割り当てられた量子化スケール値Ｑにより各々量子化される。各量子化部２１２、２１２、・・・において、量子化された値のうち整数部（上述の図１５における整数部Ｄ１）が対応するＶＬＣ２１３、２１３、・・・にそれぞれ供給され、可変長符号化され出力される。ＶＬＣ部２１３、２１３、・・・の出力は、図２を用いて既に説明したように、それぞれ対応する積算部Σ２１４、２１４、・・・に供給される。
【０１９０】
一方、量子化部２１２、２１２、・・・において、量子化された値のうち小数部（上述の図１５における積算部Ｄ３）は、それぞれ積算部Σ２３１、２３１、・・・に供給される。積算部Σ２３１、２３１、・・・では、供給された小数部を、上述のように、〔０．５〕を超える場合、直近の整数値からの誤差としてマクロブロック毎に積算する。積算された各量子化スケール値Ｑ毎の積算値frac_ttlは、それぞれバックサーチ検出部２３２に供給される。
【０１９１】
さらに、量子化部２１２、２１２、・・・において、量子化された値の整数部および小数部がそれぞれ有効サンプルカウント部２３３、２３３、・・・に供給される。有効サンプルカウント部２３３、２３３、・・・では、図１５を用いて説明したように、整数部Ｄ１と積算部Ｄ３とが共に〔０〕でないＤＣＴ係数が、１マクロブロック分の５０４個（６３ＡＣ係数×８ＤＣＴブロック）のＤＣＴ係数にわたり、計数される。計数された各量子化スケール値Ｑ毎の有効サンプル数non_zeroは、それぞれバックサーチ検出部２３２に供給される。
【０１９２】
バックサーチ検出部２３２では、積算部Σ２３１、２３１、・・・から供給された各量子化スケール値Ｑ毎の積算値frac_ttlと、有効サンプルカウント部２３３、２３３、・・・から供給された各量子化スケール値Ｑ毎の有効サンプル数non_zeroとを用いて、上述したような方法でメインバックサーチおよびサブバックサーチを行い、前回の符号化の際の量子化スケール値Ｑ（codedQ）を判定する。
【０１９３】
また、バックサーチにおいて量子化スケール値Ｑが検出されなかった場合、codedQ=0がレートコントロール部２１７に供給されて、符号量制御による量子化スケールＱ値を用いてレートコントロールが行われる。
【０１９４】
図１９、図２０、図２１および図２２は、バックサーチ検出部２３２の一例の構成を示す。なお、図１９、図２０、図２１および図２２は、全体としてバックサーチ検出部２３２の一例の構成を示し、各図に示される符号ＡＡ〜ＡＨ、ＢＡ〜ＢＤ、ならびに、ＣＡ〜ＣＤは、図１９、図２０、図２１および図２２間において符号が対応する信号経路が接続されることを示す。積算部Σ２３１、２３１、・・・から供給された積算値frac_ttl_Qxx(xx=01,02,...,31)は、それぞれ時系列化回路３００に供給され、例えばタイミングジェネレータＴＧ２２０から供給されたタイミング信号に基づき、積算値frac_ttl_Qxxに対応する量子化スケールコードの順に時系列化される。時系列化された積算値frac_ttlは、ラッチ回路３０２でラッチされた後、除算回路３０３の一方の被除数入力端に入力される。
【０１９５】
有効サンプルカウント部２３３、２３３、・・・から供給された有効サンプル数non_zero_Qxx(xx=01,02,...,31)は、それぞれ時系列化回路３０１に供給され、例えばタイミングジェネレータＴＧ２２０から供給されたタイミング信号に基づき、量子化スケール値Ｑのステップの順すなわち量子化スケールコードの順に時系列化される。時系列化された有効サンプル数non_zeroは、比較器３０８および３０９に供給されると共に、リミッタ３０４に供給される。リミッタ３０４に供給された有効サンプル数non_zeroは、最小値(min)選択回路３０５で下限値main_nzおよびsub_nzから選択された値に基づき制限される。すなわち、リミッタ回路３０４では、最小値選択回路３０５で下限値main_nzおよびsub_nzから選択された下限値min_nzに基づき、有効サンプル数non_zeroが下限min_nz未満であれば、有効サンプル数non_zeroが下限値min_nzに制限される。
【０１９６】
リミッタ回路３０４から出力された有効サンプル数non_zeroは、ラッチ回路３０６でラッチされた後、除算回路３０３の除数入力端に入力される。除算回路３０３では、時系列化回路３００および３０１で時系列化された順に、積算値frac_ttlが有効サンプル数non_zeroで除され、正規化された正規化積算値avg_fracが出力される。
【０１９７】
正規化積算値avg_fracは、ラッチ回路３０７Ａ、３０７Ｂ、３０７Ｃおよび３０７Ｄにより、量子化スケールコード毎にそれぞれラッチされる。すなわち、３番目のラッチ回路３０７Ｃに、量子化スケールコード[q]に対応する正規化積算値avg_frac[q]がラッチされているとすれば、ラッチ回路３０７Ａおよび３０７Ｂには、それぞれ正規化積算値avg_frac[q+2]およびavg_frac[q+1]が、ラッチ回路３０７Ｄには正規化積算値avg_frac[q-1]がラッチされていることになる。
【０１９８】
ラッチ回路３０７Ｂにラッチされた正規化積算値avg_frac[q+1]が比較器３１３Ｂの一方の入力端に入力される。ラッチ回路３０７Ｄにラッチされた正規化積算値avg_frac[q-1]が比較器３１３Ｃの一方の入力端に入力される。また、ラッチ回路３０７Ｃにラッチされた正規化積算値avg_frac[q]は、加算器３１２Ａおよび３１２Ｂでそれぞれマージン値main1mgnおよびマージン値main0mgnを加算されて、比較器３１３Ｂおよび３１３Ｃの他方の入力端にそれぞれ供給される。それと共に、正規化積算値avg_frac[q]は、比較器３１３Ａの一方の入力端に入力される。比較器３１３Ａの他方の入力端には、閾値main_thが入力される。
【０１９９】
このように、比較器３１３Ａ、３１３Ｂおよび３１３Ｃにおいて、量子化スケールコードが連続する正規化積算値avg_frac[q-1]、avg_frac[q]およびavg_frac[q+1]と、注目する正規化積算値avg_frac[q]にマージン値main0mgnおよびmain1mgnをそれぞれ加えた値、ならびに、閾値main_thとが比較される。
【０２００】
一方、上述した比較器３０８の他方の入力端に対し、下限値main_nzが入力される。比較器３０８では、一方および他方の入力端にそれぞれ入力された下限値main_nzおよび有効サンプル数non_zeroが比較され、有効サンプル数non_zeroが下限値main_nzを超えているか否かが判断される。若し超えていれば、例えば値〔１〕が、超えていなければ〔０〕が、判断結果main_nz_okとして出力される。
【０２０１】
比較器３１３Ａ、３１３Ｂおよび３１３Ｃの出力は、４入力のアンド回路３１４に入力される。アンド回路３１４には、さらに、比較器３０８から出力された判断結果main_nz_okが入力される。判断結果main_nz_okは、ラッチ回路３１０Ａ、３１０Ｂ、３１０Ｃおよび３１０Ｄでそれぞれラッチされ、正規化積算値avg_frac[q]とタイミングを合わせられている。アンド回路３１４の出力がメインバックサーチによるバックサーチ検出値main_bsr[q]となる。このようにして、図１６を用いて説明した、メインバックサーチが行われる。
【０２０２】
アンド回路３１４から出力されたバックサーチ検出値main_bsrは、アンド回路３１５の一方の入力端に入力される。アンド回路３１５の他方の入力端には、メインバックサーチを行うか否かを指示する信号bsrmd[1]が入力される。アンド回路３１５の出力は、オア回路３１６の一方の入力端に入力される。
【０２０３】
サブバックサーチも、上述のメインバックサーチと略同様にして行われる。ラッチ回路３０７Ａにラッチされた正規化積算値avg_frac[q+2]が比較器３２１Ｃの一方の入力端に入力される。ラッチ回路３０７Ｂにラッチされた正規化積算値avg_frac[q+1]が比較器３２１Ｂの一方の入力端に入力される。ラッチ回路３０７Ｄにラッチされた正規化積算値avg_frac[q-1]が比較器３２１Ａの一方の入力端に入力される。
【０２０４】
ラッチ回路３０７Ｃにラッチされた正規化積算値avg_frac[q]は、加算器３２０Ａ、３２０Ｂおよび３２０Ｃでそれぞれマージン値sub0mgn、sub1mgnおよびsub2mgnを加算され、比較器３２１Ａ、３１２Ｂおよび３２１Ｃの他方の入力端に入力される。それと共に、正規化積算値avg_frac[q]は、比較器３２１Ｄの一方の入力端に入力される。比較器３２１Ｄの他方の入力端には、閾値sub_thが入力される。
【０２０５】
このように、比較器３２１Ａ、３２１Ｂ、３２１Ｃおよび３２１Ｄにおいて、量子化スケールコードが連続する正規化積算値avg_frac[q-1]、avg_frac[q]、avg_frac[q+1]およびavg_frac[q+2]と、注目する正規化積算値avg_frac[q]にマージン値sub0mgn、sub1mgnおよびsub2mgnをそれぞれ加えた値、ならびに、閾値sub_thとが比較される。
【０２０６】
なお、比較器３２１Ａ、３２１Ｂ、３２１Ｃおよび３２１Ｄ、ならびに、上述の比較器３１３Ａ、３１３Ｂおよび３１３Ｃによる処理は、実際のハードウェアにおいては並列的に行われる。
【０２０７】
一方、上述した比較器３０９の他方の入力端に対し、下限値sub_nzが入力される。比較器３０９では、一方および他方の入力端にそれぞれ入力された下限値sub_nzおよび有効サンプル数non_zeroが比較され、有効サンプル数non_zeroが下限値sub_nzを超えているか否かが判断される。若し超えていれば、例えば値〔１〕が、超えていなければ〔０〕が、判断結果sub_nz_okとして出力される。
【０２０８】
比較器３２１Ａ、３２１Ｂ、３２１Ｃおよび３２１Ｄの出力は、５入力のアンド回路３２２に入力される。アンド回路３２２には、さらに、比較器３０９から出力された判断結果sub_nz_okが入力される。判断結果sub_nz_okは、ラッチ回路３１１Ａ、３１１Ｂ、３１１Ｃおよび３１１Ｄでそれぞれラッチされ、正規化積算値avg_frac[q]とタイミングを合わせられている。アンド回路３２２の出力がサブバックサーチによるバックサーチ検出値sub_bsrとなる。このようにして、図１７を用いて説明した、サブバックサーチが行われる。
【０２０９】
アンド回路３２２から出力されたバックサーチ検出値sub_bsrは、アンド回路３２３の一方の入力端に入力される。アンド回路３２３の他方の入力端には、サブバックサーチを行うか否かを指示する信号bsrmd[0]が入力される。アンド回路３２３の出力は、オア回路３１６の他方の入力端に入力される。オア回路３１６の出力は、アンド回路３３０の一方の入力端に入力される。
【０２１０】
一方、時系列化回路３２４に、メインバックサーチおよびサブバックサーチにより検出されたバックサーチ検出値main_bsr[q]およびsub_bsr[q]を用いるか否かを量子化スケールコード[q]毎に示す信号cd_off_Qxx(xx=01,02,...,31)が入力される。信号cd_off_Qxxは、例えばタイミングジェネレータＴＧ２２０から供給されたタイミング信号に基づき、信号cd_off_Qxxに対応する量子化スケールコードの順に時系列化される。時系列回路３２４から出力された信号cd_off[q]は、インバータを介してアンド回路３３０の他方の入力端に入力される。なお、信号cd_off_Qxxは、アンド回路３３０に供給されるバックサーチ検出値main_bsr[q]およびsub_bsr[q]と、タイミングが合わされる。
【０２１１】
アンド回路３３０の出力が上述した値cd[q]とされる。この値cd[q]は、回路３３１に供給され、値cd[q]が〔１〕となる最大の量子化スケールコード[q]が求められる。求められた量子化スケールコード[q]が前回の符号化の際に用いられた量子化スケールコードcodedQとされる。
【０２１２】
なお、上述したように、この発明の実施の一形態によるバックサーチ機能は、ハードウェアおよびソフトウェアの何れでも実現可能である。バックサーチ処理を例えばコンピュータ装置に実行させるためのプログラムは、例えばＣＤ−ＲＯＭ(Compact Disc-Read Only Memory)といった記録媒体に記録されて提供される。このＣＤ−ＲＯＭをコンピュータ装置のＣＤ−ＲＯＭドライブに装填し、ＣＤ−ＲＯＭに記録されたプログラムを所定にコンピュータ装置にインストールすることで、上述の処理をコンピュータ装置上で実行可能な状態とすることができる。なお、コンピュータ装置の構成は、極めて周知であるため、説明は省略する。
【０２１３】
また、上述では、この発明の実施の一形態をディジタルＶＴＲに適用した例について説明したが、これはこの例に限定されない。例えば、この発明は、バックサーチ機能を有する量子化演算回路単体として構成することも可能である。
【０２１４】
【発明の効果】
以上説明したように、この発明の実施の一形態によるバックサーチ機能では、量子化の際に発生する小数部を累積した累積値を、累積時の有効サンプル数によって正規化しているため、累積サンプル数の違いによる影響を排除することができる。これにより、一律のパラメータ設定値との比較を行うことができ、より精度よくバックサーチ検出が可能となる。
【０２１５】
また、注目する量子化スケール値による正規化積算値avg_fracと、当該量子化スケール値に対して量子化スケールコードが連続する複数の量子化スケール値による正規化積算値avg_fracとを用いて、ＤＣＴ係数が割り切れたか否かを判定するため、バックサーチの誤検出を防止できる。
【図面の簡単な説明】
【図１】この発明の実施の一形態が適用されたディジタルＶＴＲの一例の構成を示すブロック図である。
【図２】ＭＰＥＧエンコーダの一例の構成を示すブロック図である。
【図３】ＭＰＥＧエンコーダの各部において転送されるストリームの構成例を示す略線図である。
【図４】ＭＰＥＧエンコーダの各部において転送されるストリームの構成例を示す略線図である。
【図５】ＭＰＥＧエンコーダの各部において転送されるストリームの構成例を示す略線図である。
【図６】ＭＰＥＧエンコーダの各部において転送されるストリームの構成例を示す略線図である。
【図７】ＭＰＥＧエンコーダの各部において転送されるストリームの構成例を示す略線図である。
【図８】ＭＰＥＧエンコーダの各部において転送されるストリームの構成例を示す略線図である。
【図９】ＭＰＥＧエンコーダの各部において転送されるストリームの構成例を示す略線図である。
【図１０】ＭＰＥＧエンコーダの処理をソフトウェアで行う場合の一例のフローチャートである。
【図１１】ＭＰＥＧエンコーダの処理をソフトウェアで行う場合の一例のフローチャートである。
【図１２】ＭＰＥＧエンコーダの処理をソフトウェアで行う場合の一例のフローチャートである。
【図１３】バックサーチの原理を説明するための具体的数値の例を示す略線図である。
【図１４】量子化の際の小数部を積算した積算値の一例の結果を示す略線図である。
【図１５】量子化ブロックで量子化されたデータの一例の構造を示す略線図である。
【図１６】メインバックサーチについて説明するための図である。
【図１７】サブバックサーチについ説明するための図である。
【図１８】バックサーチ検出を行う一例の構成を示すブロック図である。
【図１９】バックサーチ検出部の一例の構成の部分を示すブロック図である。
【図２０】バックサーチ検出部の一例の構成の部分を示すブロック図である。
【図２１】バックサーチ検出部の一例の構成の部分を示すブロック図である。
【図２２】バックサーチ検出部の一例の構成の部分を示すブロック図である。
【符号の説明】
１０３  ＭＰＥＧエンコーダ
２１２  量子化部
２３１  積算部
２３２  バックサーチ検出部
２３３  有効サンプル数カウント部
【図１】
0004135427.tif 000003
【図２】
0004135427.tif 000004
【図３】
0004135427.tif 000005
【図４】
0004135427.tif 000006
【図５】
0004135427.tif 000007
【図６】
0004135427.tif 000008
【図７】
0004135427.tif 000009
【図８】
0004135427.tif 000010
【図９】
0004135427.tif 000011
【図１０】
0004135427.tif 000012
【図１１】
0004135427.tif 000013
【図１２】
0004135427.tif 000014
【図１３】
0004135427.tif 000015
【図１４】
0004135427.tif 000016
【図１５】
0004135427.tif 000017
【図１６】
0004135427.tif 000018
【図１７】
0004135427.tif 000019
【図１８】
0004135427.tif 000020
【図１９】
0004135427.tif 000021
【図２０】
0004135427.tif 000022
【図２１】
0004135427.tif 000023
【図２２】
0004135427.tif 000024