(57)【要約】【課題】  フレーム間圧縮のレート制御に制限がある場合に、フリッカの影響を受けたフレームをオリジナルのまま記録しても、フリッカの影響によって画質が低下することを軽減する。【解決手段】  フレーム間予測を行わないフレーム（Ｉスライス）と、フレーム間予測を行うフレーム（Ｐ、Ｂスライス）とを含むグループ（ＧＯＰ）単位で纏めて記憶する際に、まず、フレームにおけるフリッカの状態を判定する。そして、フリッカが継続している場合には、当該フリッカが発生しているフレームをＧＯＰの最後に位置させ、ＧＯＰの先頭に位置させないようにする。また、フリッカが発生した後、当該フリッカが終了した場合には、当該フリッカが終了したフレームをＧＯＰの先頭に位置させる。そして、時間的に前のＧＯＰのフレームのうち、フリッカの影響を受けたフレームを参照しないで画を作成する（符号化する）。【選択図】  図１
2012049810.tif 000002
【特許請求の範囲】
【請求項１】
フレーム間圧縮を行って動画像を符号化する画像符号化装置であって、
前記動画像を構成するフレームにおけるフリッカを検出する検出手段と、
前記フレームを符号化する符号化手段と、
複数のフレームで構成されるグループの単位で、前記符号化したフレームを纏めて記憶する記憶手段と、
前記フリッカの影響があるフレームが、前記グループの最後になるように、前記グループに含めるフレームの数を調整する調整手段と、を有することを特徴とする画像符号化装置。
【請求項２】
前記調整手段は、前記グループの先頭に、前記フリッカの影響がないフレームが位置するように、前記グループに含めるフレームの数を調整することを特徴とする請求項１に記載の画像符号化装置。
【請求項３】
前記検出手段は、撮影手段からフレームが入力されるたびに、当該フレームにフリッカが発生しているかどうかを検出することを特徴とする請求項１又は２に記載の画像符号化装置。
【請求項４】
前記調整手段は、直前に得られた前記フレームにフリッカの影響がなく、且つ、前記グループに含めるフレームの数が予め設定された数になった場合には、その数のフレームが１つのグループとなるように、当該グループに含めるフレームの数を調整することを特徴とする請求項１〜３の何れか１項に記載の画像符号化装置。
【請求項５】
撮像手段から入力されたフレームを一時的に記憶する一時記憶手段を有し、
前記検出手段は、前記一時記憶手段により記憶されたフレームにおけるフリッカを検出し、
前記調整手段は、前記フリッカの影響があるフレームが、複数の前記グループをまたがず、且つ、前記一時記憶手段により記憶された複数のフレームの少なくとも一部が前記グループに含まれるように、前記グループに含めるフレームの数を調整することを特徴とする請求項１〜３の何れか１項に記載の画像符号化装置。
【請求項６】
前記検出手段は、フレームに関連付けられているフリッカの情報に基づいて、フリッカを検出することを特徴とする請求項１〜５の何れか１項に記載の画像符号化装置。
【請求項７】
前記フリッカの情報は、当該フリッカの情報に関連付けられているフレームにフリッカの影響が現れているかどうかを示す情報であることを特徴とする請求項６に記載の画像符号化装置。
【請求項８】
前記符号化手段は、時間的に前に得られたグループの中のフレームのうち、フリッカの影響があるフレームを参照せずに、フレームを符号化することを特徴とする請求項１〜７の何れか１項に記載の画像符号化装置。
【請求項９】
フレーム間圧縮を行って動画像を符号化する画像符号化方法であって、
前記動画像を構成するフレームにおけるフリッカを検出する検出工程と、
前記フレームを符号化する符号化工程と、
複数のフレームで構成されるグループの単位で、前記符号化したフレームを纏めて記憶する記憶工程と、
前記フリッカの影響があるフレームが、前記グループの最後になるように、前記グループに含めるフレームの数を調整する調整工程と、を有することを特徴とする画像符号化方法。
【請求項１０】
前記調整工程は、前記グループの先頭に、前記フリッカの影響がないフレームが位置するように、前記グループに含めるフレームの数を調整することを特徴とする請求項９に記載の画像符号化方法。
【請求項１１】
前記検出工程は、撮影工程からフレームが入力されるたびに、当該フレームにフリッカが発生しているかどうかを検出することを特徴とする請求項９又は１０に記載の画像符号化方法。
【請求項１２】
前記調整工程は、直前に得られた前記フレームにフリッカの影響がなく、且つ、前記グループに含めるフレームの数が予め設定された数になった場合には、その数のフレームが１つのグループとなるように、当該グループに含めるフレームの数を調整することを特徴とする請求項９〜１１の何れか１項に記載の画像符号化方法。
【請求項１３】
撮像工程から入力されたフレームを一時的に記憶する一時記憶工程を有し、
前記検出工程は、前記一時記憶工程により記憶されたフレームにおけるフリッカを検出し、
前記調整工程は、前記フリッカの影響があるフレームが、複数の前記グループをまたがず、且つ、前記一時記憶工程により記憶された複数のフレームの少なくとも一部が前記グループに含まれるように、前記グループに含めるフレームの数を調整することを特徴とする請求項９〜１１の何れか１項に記載の画像符号化方法。
【請求項１４】
前記検出工程は、フレームに関連付けられているフリッカの情報に基づいて、フリッカを検出することを特徴とする請求項９〜１３の何れか１項に記載の画像符号化方法。
【請求項１５】
前記フリッカの情報は、当該フリッカの情報に関連付けられているフレームにフリッカの影響が現れているかどうかを示す情報であることを特徴とする請求項１４に記載の画像符号化方法。
【請求項１６】
前記符号化工程は、時間的に前に得られたグループの中のフレームのうち、フリッカの影響があるフレームを参照せずに、フレームを符号化することを特徴とする請求項９〜１５の何れか１項に記載の画像符号化方法。
【請求項１７】
フレーム間圧縮を行って動画像を符号化することをコンピュータに実行させるためのコンピュータプログラムであって、
前記動画像を構成するフレームにおけるフリッカを検出する検出工程と、
前記フレームを符号化する符号化工程と、
複数のフレームで構成されるグループの単位で、前記符号化したフレームを纏めて記憶媒体に記憶する記憶工程と、
前記フリッカの影響があるフレームが、前記グループの最後になるように、前記グループに含めるフレームの数を調整する調整工程と、をコンピュータに実行させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像符号化装置、画像符号化方法、及びコンピュータプログラムに関し、特に、フレーム間圧縮を行って動画像を符号化するために用いて好適なものである。
【背景技術】
【０００２】
フレーム間圧縮を行う場合において、レート制御に対して、ビットレートの制限や、Ｉフレーム、Ｐフレーム、及びＢフレームの各フレームの割り当て符号量の制限が課せられている場合がある。このような制限がある場合、環境光のフリッカの影響がある場所で高フレームレートの撮影を行うと、フリッカの影響を受けたフレームが、ＩフレームやＧＯＰの先頭の方に記録されることがあり、画質の低下を招く。特許文献１では、高いフレームレートで撮影された画像に含まれるフリッカの影響を軽減させる方法が提案されている。特許文献１では、基準時刻より前に撮影した過去の画像を用いて、フリッカ特徴量（輝度値の平均値）が画像間で等しくなるように画素値を修正することにより、フリッカの影響を取り除いた基準時刻の画像を生成するようにしている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−１７３０１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術では、フレーム間圧縮のレート制御に制限がある場合に、フリッカの影響を受けたフレームをオリジナルのまま、除去や補正を行わずに記録すると、フリッカの影響によって画質が低下する虞がある。
本発明は、このような課題に鑑みてなされたものであり、フレーム間圧縮のレート制御に制限がある場合に、フリッカの影響を受けたフレームをオリジナルのまま記録しても、フリッカの影響によって画質が低下することを軽減することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の画像符号化装置は、フレーム間圧縮を行って動画像を符号化する画像符号化装置であって、前記動画像を構成するフレームにおけるフリッカを検出する検出手段と、前記フレームを符号化する符号化手段と、複数のフレームで構成されるグループの単位で、前記符号化したフレームを纏めて記憶する記憶手段と、前記フリッカの影響があるフレームが、前記グループの最後になるように、前記グループに含めるフレームの数を調整する調整手段と、を有することを特徴とする。
【発明の効果】
【０００６】
本発明によれば、複数のフレームで構成されるグループの単位で、前記符号化したフレームを纏めて記憶するに際し、フリッカの影響があるフレームが、当該グループの最後になるようにした。したがって、フレーム間圧縮のレート制御に制限がある場合に、フリッカの影響を受けたフレームをオリジナルのまま記録しても、フリッカの影響によって画質が低下することを軽減することができる。
【図面の簡単な説明】
【０００７】
【図１】動画符号化装置の構成を示すブロック図である。
【図２】フレームを、時間軸上に左から順番に並べて示した図である。
【図３】動画符号化装置の符号化時の第１の処理を示すフローチャートである。
【図４】図３のステップＳ３０３０の詳細を示すフローチャートである。
【図５】動画符号化装置の復号時の処理を示すフローチャートである。
【図６】動画符号化装置の符号化時の第２の処理を示すフローチャートである。
【図７】図６のステップＳ６０９０の詳細を示すフローチャートである。
【発明を実施するための形態】
【０００８】
以下、本発明の実施形態を、図面を参照して詳細に説明する。
＜第１の実施形態＞
まず、本実施形態で扱う画像について説明する。
本実施形態では、カメラ上で動作する動画の符号化を、ソフトウェアを用いて行う。動画像の符号化で扱う動画像のフォーマットには、Motion JPEG、MPEG2、H.264と色々な種類がある。本実施形態では、フレーム間圧縮を行う動画像のフォーマットは、H.264であるとする。もちろん、動画像のフォーマットは、H.264以外のものでもよい。
【０００９】
H.264のフレーム間圧縮で符号化したフレームは、単一のスライス、もしくは、複数のスライスで構成されている。スライスには、フレーム間予測を行わないＩスライスと、フレーム間予測を行う、Ｐスライス及びＢスライスとがある。Ｐスライスは、順方向予測で作成される。Ｂスライスは、双方向予測で作成される。
フレーム間予測を行わないフレームと、フレーム間予測を行うフレームとを一つのグループとしてまとめた単位としてMPEGで利用されているＧＯＰ（Group Of Pictures）とよばれる単位がある。
以下に、動画符号化装置（画像符号化装置）のユーザが、動画像の撮影の開始を指示した後、撮影を終了するまでに、ＧＯＰ長を調整して動画像を記録する方法の一例と、記録した動画像を再生する方法の一例とを説明する。尚、ＧＯＰ長とは、１ＧＯＰ内のフレーム数のことである。
【００１０】
図１は、動画符号化装置の構成の一例を示すブロック図である。
図１において、制御部１０１は、動画符号化装置１００全体を制御する。制御部１０１は、例えばCentral Processing Unit（ＣＰＵ）である。ＲＯＭ（Read Only Memory）１０２は、変更を必要としないプログラムやパラメータを格納する。ＲＡＭ（Random Access Memory）１０３は、外部装置等から供給されるプログラムやデータを一時的に記憶する。
【００１１】
外部記憶装置１０４は、例えば、動画符号化装置１００に固定して設置された「ハードディスク及びメモリカード」の少なくとも何れか一方を含む。また、外部記憶装置１０４は、これらに加えて、又はこれらに代えて、動画符号化装置１００から着脱可能な記憶媒体を含んでいてもよい。着脱可能な記憶媒体としては、例えば、フレキシブルディスク（ＦＤ）、ＣＤ（Compact Disk）等の光ディスク、磁気カード、光カード、及びＩＣカード等の少なくとも何れか１つが挙げられる。操作部１０５は、ユーザの操作を受け付け、データを入力する。操作部１０５は、例えば、タッチパネルや操作ボタン等を含む。表示部１０６は、動画符号化装置１００の保持するデータや、動画符号化装置１００に供給されたデータを表示するためのものである。
【００１２】
ネットワーク通信部１０７は、インターネット等のネットワーク回線に接続し通信するためのものである。撮像部１０８は、画像を入力するＣＣＤ（Charge Coupled Devices）等を有する。システムバス１０９は、制御部１０１〜撮像部１０８の各ユニットを通信可能に接続する。
尚、図１では、撮像部１０８が、動画符号化装置１００の内部にある場合を例に挙げて説明しているが、撮像部１０８は、動画符号化装置とは別に（動画符号化装置の外部に）設けられてもよい。
【００１３】
ＲＯＭ１０２には、後述する動画符号化プログラムや動画復号化プログラムが、制御部１０１に読み取り可能なプログラムコードとして格納されており、このプログラムコードを制御部１０１が実行する構成になっている。
動画符号化プログラムは、動画像をフレーム間圧縮で符号化する方法で、フリッカを検出する機能と、フリッカの影響を受けたフレームがＧＯＰの最後になるようにＧＯＰ長を調整する機能とを含む機能を実現するものである。
本実施形態で扱うフリッカは、蛍光灯やＬＥＤ等の点滅や、フラッシュ等の瞬間的な点灯や、瞬時電圧の低下等による瞬間的な消灯等による点滅のことを指す。
以上のように構成された動画符号化プログラムでの動作例を説明する。
【００１４】
本実施形態では、撮像部１０８から入力されたフレームからフリッカを判定し、その結果に応じてＧＯＰ長を調整する場合を例に挙げて説明する。
フレームにフリッカがあるか否かの判定方法には、例えば、以下の方法がある。まず、撮像部１０８に入力されたフレームの輝度値の平均値を取得しておき、対象となるフレームの輝度値に、その平均値から大きく外れたものがある場合、そのフレームにはフリッカがあると判定する方法がある。また、環境光を計測する装置を動画符号化装置１００に追加し、当該装置により輝度値の変化の周期を測定し、測定した結果に基づいてフリッカを検出する方法がある。本実施形態では、前述のどちらの方法を利用しても実現できる。尚、フリッカを検出する方法は、公知の技術で実現できるので、ここでは、その詳細な説明を省略する。また、フレームにフリッカがあるか否かを判定できれば、必ずしも前述の方法を採用しなくてもよい。
フリッカの検出のために、撮像部１０８に入力されたフレームの輝度値の計測を開始するタイミングや、環境光を計測する装置で輝度値の変化の計測を開始するタイミングは、以下のどちらであってもよい。すなわち、カメラ（動画符号化装置１００）の電源を入れてから当該計測を開始しても、動画像の撮影モードになってから当該計測を開始してもよい。
【００１５】
動画符号化プログラムは、ユーザが操作部１０５に対して動画像を録画する操作を行うことによって起動する。動画符号化プログラムが起動すると、制御部１０１は、表示部１０６上に、撮像部１０８から入力されたフレームを表示する。
図２は、撮像部１０８から次々と入力されたフレームの一例を、時間軸上に紙面に向かって左から順番に並べて示した図である。また、図２では、符号化後のＧＯＰ構造もフレームに併せて示す。
フレーム２０１０は、撮影を開始したときのフレームである。フレーム２１００は、撮影を終了したときのフレームである。フレーム２０１０、２０４０、２０５０、２０６０、２０９０は、フリッカの影響を受けていないフレームを示す。一方、フレーム２０２０、２０３０、２０７０、２０８０、２１００は、フリッカの影響を受けて暗くなっているフレームを示す。図２に示す「ＧＯＰ長＝」の後に示している数字は、符号化したときに決定されたＧＯＰ長を示している。すなわち、ＧＯＰ２１１０のＧＯＰ長は３であり、ＧＯＰ２１２０のＧＯＰ長は１５であり、ＧＯＰ２１３０のＧＯＰ長は１５であり、ＧＯＰ２１４０のＧＯＰ長は１３である。
【００１６】
ここで、図３のフローチャートを参照しながら、動画像の撮影の開始が指示されてから動画像を符号化するときの動画符号化装置１００における処理の一例を説明する。
ここで、動画符号化装置１００が行う符号化の方式は、H.264であるとする。また、動画符号化装置１００の制限で、基準となるＧＯＰ長（基準ＧＯＰ長）が、予めある任意の値で決められているものとする。本実施形態では、基準ＧＯＰ長を１５枚とする。フレームレートやビットレート等は、ユーザが設定した任意の値、又は、撮影のモードに合わせて（自動的に）設定された任意の値に設定されるものとする。
まず、ステップＳ３０１０において、制御部１０１は、操作部１０５の操作の内容に基づいて、動画像の撮影開始指示を受け付けると、フラグの初期化を行う。フラグとして、フリッカフラグとＧＯＰ完結フラグとがＲＡＭ１０３等に設定される。制御部１０１は、それらのフラグの状態をＯＦＦにする。フリッカフラグは、撮像部１０８から入力されたフレームにフリッカの影響が発生しているかどうかを示すフラグである。ＧＯＰ完結フラグは、フリッカの影響を受けたフレームによる影響が終了したことを示すフラグである。
【００１７】
次に、ステップＳ３０２０において、制御部１０１は、撮像部１０８からフレームを取得する。制御部１０１は、撮像部１０８から動画撮影のフレームレートの設定に従ったタイミングでフレームの取得を行う。
次に、ステップＳ３０３０において、制御部１０１は、撮像部１０８から取得したフレームにおけるフリッカの状態を判定するフリッカ状態判定処理を行う。このステップＳ３０３０で、フリッカフラグ及びＧＯＰ完結フラグに、フリッカの状態を判定した結果が設定される。フリッカ状態判定処理の詳細は、後述する（図４を参照）。
【００１８】
次に、ステップＳ３０４０において、制御部１０１は、フリッカの状態の判定の結果として設定された「フリッカフラグ及びＧＯＰ完結フラグ」を取得する。
次に、ステップＳ３０５０において、制御部１０１は、ＧＯＰ完結フラグがＯＮかどうかを判断する。この判断の結果、ＧＯＰ完結フラグがＯＮの場合には、ステップＳ３１００へ移行する。一方、それ以外の場合には、ステップＳ３０６０へ移行する。図２に示す例で、ステップＳ３０５０からステップＳ３１００へ移行して作成されるＧＯＰは、ＧＯＰ２１１０、２１３０となる。一方、ステップＳ３０５０からステップＳ３０６０へ移行して作成されるＧＯＰは、ＧＯＰ２１２０、２１４０となる。図２に示すＧＯＰ２１４０では、最後のフレーム２１００にフリッカが現れている。しかし、このフレーム２１００で撮影を終了しているため、フリッカが終了しているか否かを判定できずにＧＯＰ完結フラグがＯＦＦとなる。フリッカが終了しているか否かを判定する方法は、後述する（図４を参照）。
【００１９】
ステップＳ３０６０に進むと、制御部１０１は、フリッカフラグがＯＮであり、かつ、ＧＯＰ長が基準ＧＯＰ長＋１に達したかどうかを判断する。このステップＳ３０６０では、フリッカが検出されずに符号化されたフレームをＧＯＰに含めると、当該ＧＯＰのＧＯＰ長が基準ＧＯＰ長に達していた場合に、当該ＧＯＰを完結する処理を行うための判定を行う。本実施形態では、基準ＧＯＰ長の１５を超えないように、作成中のＧＯＰ長が、基準ＧＯＰ長＋１の１６枚とならないようにする。
【００２０】
このステップＳ３０６０の判断の結果、フリッカフラグがＯＮであり、かつ、ＧＯＰ長が基準ＧＯＰ長＋１に達した場合には、ステップＳ３１００へ移行する。一方、それ以外の場合には、ステップＳ３０７０へ移行する。図２に示す例で、ステップＳ３０６０からステップＳ３１００へ移行して作成されるＧＯＰは、ＧＯＰ２１２０となる。一方、ステップＳ３０６０からステップＳ３０７０へ移行して作成されるＧＯＰは、ＧＯＰ２１４０となる。
【００２１】
ステップＳ３０７０に進むと、制御部１０１は、ステップＳ３０２０で撮像部１０８から取得したフレームを符号化する。
次に、ステップＳ３０８０において、制御部１０１は、ステップＳ３０７０で符号化したフレームを外部記憶装置１０４に出力する。
次に、ステップＳ３０９０において、制御部１０１は、撮影の終了指示がなされたかどうかを判断する。この判断の結果、撮影の終了指示があった場合には、動画像の符号化処理を終了する。一方、それ以外の場合には、ステップＳ３０２０へ移行する。図２に示す例において、ステップＳ３０９０で撮影が終了するときのＧＯＰは、ＧＯＰ２１４０となる。
【００２２】
ステップＳ３０５０又はＳ３０６０からステップＳ３１００に進むと、制御部１０１は、ステップＳ３１００を行う直前にステップＳ３０８０で出力した「符号化されたフレーム」でＧＯＰを完結させる。そして、制御部１０１は、ステップＳ３１００を行う直前にステップＳ３０２０で撮像部１０８から取得したフレームをＧＯＰの先頭とする。ここでは、次に符号化するフレームの属するＧＯＰを、新規のＧＯＰにする。そして、フリッカの影響を受けていないフレームについては、（時間的に）前のＧＯＰのフリッカの影響を受けたフレームを参照しないで画を作成する（符号化する）フレームとして符号化するように動画符号化プログラムの内部状態を変更する。一方、フリッカの影響を受けているフレームについては、通常通りに符号化が行われる。ステップＳ３１００の処理が終了すると、前述したステップＳ３０７０に進む。尚、このとき、Ｂスライスについては、Ｂスライスが属するフレームよりも時間的に後ろのフレームも参照しないで画を作成する（符号化する）ようにして画質を向上させるようにしてもよい。
【００２３】
図４は、図３のステップＳ３０３０のフリッカ状態判定処理の詳細を説明するフローチャートである。
まず、ステップＳ４０１０において、制御部１０１は、フリッカフラグを取得する。
次に、ステップＳ４０２０において、制御部１０１は、撮像部１０８から取得したフレームにフリッカの影響が発生しているか否かを判断する。この判断の結果、フリッカが発生していると判断した場合には、ステップＳ４０３０に移行する。一方、それ以外の場合には、ステップＳ４０５０へ移行する。
ステップＳ４０３０に進むと、制御部１０１は、フリッカフラグをＯＮにする。図２の例で、このときに、図３のステップＳ３０２０で撮像部１０８から取得したフレームは、フレーム２０２０、２０３０、２０７０、２０８０、２１００となる。
【００２４】
次に、ステップＳ４０４０において、制御部１０１は、ＧＯＰ完結フラグをＯＦＦにする。ステップＳ４０３０からステップＳ４０４０に移行した場合には、撮像部１０８から次に取得するフレームが、フリッカの影響があるかどうかを判断できないため、ＧＯＰ完結フラグをＯＦＦにすることで、ＧＯＰを完結しないようにする。図２に示す例で、このときに、撮像部１０８から取得するフレームは、フレーム２０２０、２０３０、２０７０、２０８０、２１００となる。一方、ステップＳ４０５０からステップＳ４０４０に移行した場合には、直前にステップＳ３０２０で撮像部１０８から取得したフレームにフリッカが発生していない状態なので、ＧＯＰ完結フラグは、ＯＦＦとなる。図２に示す例で、このときに、撮像部１０８から取得するフレームは、フレーム２０１０、２０５０となる。
【００２５】
ステップＳ４０２０からステップＳ４０５０に進むと、制御部１０１は、フリッカフラグがＯＮであるかどうかを判断する。この判断の結果、フリッカフラグがＯＮの場合には、ステップＳ４０６０へ移行する。この条件になるのは、フリッカの影響が発生した後、フリッカの影響が終了した場合である。図２に示す例で、このときに、撮像部１０８から取得するフレームは、フレーム２０４０、２０９０となる。一方、それ以外の場合には、ステップＳ４０４０へ移行する。図２に示す例で、このときに、撮像部１０８から取得したフレームは、フレーム２０１０、２０５０となる。
【００２６】
ステップＳ４０６０に進むと、制御部１０１は、フリッカの影響が終了したので、フリッカフラグをＯＦＦにする。
次に、ステップＳ４０７０において、制御部１０１は、ＧＯＰ完結フラグをＯＮにする。ＧＯＰ完結フラグをＯＮとすることで、図２に示す例では、撮像部１０８から取得したフレーム２０４０、２０９０が、ＧＯＰの先頭になるようにＧＯＰ長が調整され符号化される。
【００２７】
図２に示す例では、ＧＯＰ２１１０のＧＯＰ長を３、ＧＯＰ２１３０のＧＯＰ長を１５、ＧＯＰ２１４０のＧＯＰ長を１３に調整することで、フリッカの影響を受けたフレームがＧＯＰの最後になるようにした。ＧＯＰ２１２０は、基準ＧＯＰでＧＯＰ長の調整を行ったものであるため、フリッカの影響を受けたフレームが一枚も存在していない状態となっている。
以上の処理によって、図２に示す例では、フリッカの影響を受けたフレームがＧＯＰの最後にくるようにフレーム２０１０〜２０３０を一つのＧＯＰ２１１０に属するようにＧＯＰ長を調整し符号化できる。同様に、フレーム２０４０〜２０５０を一つのＧＯＰ２１２０に、フレーム２０６０〜２０８０を一つのＧＯＰ２１３０に、フレーム２０９０〜２１００を一つのＧＯＰ２１４０に属するようにＧＯＰ長を調整し符号化できる。
【００２８】
次に、動画復号化プログラムについて説明する。ここでは、動画符号化プログラムにより、前述したようにしてＧＯＰ長が調整されて符号化されたフレームを復号化して、早送り再生及び巻戻し再生を実行する場合を説明する。
図５は、動画像の早送り再生又は巻戻し再生の開始が指示されてから動画像を復号化するときの動画符号化装置１００における処理の一例を説明するフローチャートである。
まず、ステップＳ５０１０において、制御部１０１は、再生対象の動画像におけるＧＯＰを１つ選択する。早送り再生の場合には、時間的に昇順にＧＯＰを選択し、巻戻し再生の場合には、時間的に降順にＧＯＰを選択する。
【００２９】
次に、ステップＳ５０２０において、制御部１０１は、ステップＳ５０１０で選択したＧＯＰに含まれるフレームを１つ選択する。
次に、ステップＳ５０３０において、制御部１０１は、ステップＳ５０２０で選択したフレームがＧＯＰの先頭のフレーム（時間的に最も早く符号化されたフレーム）であるかどうかを判断する。この判断の結果、ステップＳ５０２０で選択したフレームがＧＯＰの先頭のフレームである場合には、ステップＳ５０４０に移行する。一方、それ以外の場合には、ステップＳ５０２０に移行する。このステップＳ５０３０によって、ＧＯＰの先頭のフレームだけが復号化され、フリッカの影響を受けたフレームを復号しないようにすることができる。
【００３０】
ステップＳ５０４０に進むと、制御部１０１は、ステップＳ５０２０で選択したＧＯＰの先頭のフレームを復号化する。
次に、ステップＳ５０５０において、制御部１０１は、再生を終了するかどうかを判断する。この判断の結果、再生を終了する場合には、再生処理（図５のフローチャートによる処理）を終了する。一方、それ以外の場合には、ステップＳ５０１０に移行する。尚、再生を終了するかどうかは、再生（早送り又は巻戻し）終了の指示があるか否かや、ステップＳ５０２０で選択したフレームが再生の対象となる動画像の終端（早送りの場合）又は先頭（巻戻しの場合）であるか否かを判断することによって行う。
尚、Ｉスライスのフレームの代わりに、ＧＯＰの先頭のフレームを選択するようにしてもよい。また、通常の再生の処理は、公知の技術で実現できるので、ここでは、その詳細な説明を省略する。
【００３１】
以上のように本実施形態では、フレーム間予測を行わないフレーム（Ｉスライス）と、フレーム間予測を行うフレーム（Ｐ、Ｂスライス）とを含むグループ（ＧＯＰ）単位で纏めて記憶する際に、まず、フレームにおけるフリッカの状態を判定する。そして、フリッカが継続している場合には、当該フリッカが発生しているフレームをＧＯＰの最後に位置させ、ＧＯＰの先頭に位置させないようにする。また、フリッカが発生した後、当該フリッカが終了した場合には、当該フリッカが終了したフレームをＧＯＰの先頭に位置させる。そして、時間的に前のＧＯＰのフレームのうち、フリッカの影響を受けたフレームを参照しないで画を作成する（符号化する）。したがって、フレーム間圧縮のレート制御に制限がある場合に、フリッカの影響を受けたフレームをオリジナルのまま記録しても、フリッカの影響によって画質が低下することを軽減することができる。
また、本実施形態では、フリッカがあるか否かの判定をフレーム単位で逐次行うようにしたので、フラッシュ等の影響で輝度値が急に大きくなった場合でも、ＧＯＰの先頭にフリッカの影響のないフレームを位置させることができる。
【００３２】
また、本実施形態では、早送り再生や巻戻し再生の際に、ＧＯＰの先頭のフレームを選択して復号化するようにしたので、暗い画像が再生されることを防止することができ、早送り再生や巻戻し再生の画像を見やすくすることができる。
【００３３】
尚、本実施形態では、符号化されたフレームの出力先を外部記憶装置１０４とした場合を例に挙げて説明したが、当該出力先は、ＲＡＭ１０３やネットワーク通信部１０７等であってもよい。
【００３４】
＜第２の実施形態＞
本実施形態では、フリッカの周期に合わせて、フリッカ１周期分のＧＯＰ長とＧＯＰ数との組み合わせ（ＧＯＰ構造）を予め決定しておく。そして、撮像部１０８で取得したフレームをＲＡＭ１０３（バッファ）に入力し、バッファに一時記憶したフレームに対してフリッカの有無を判定し、その結果に応じて事前に決定したＧＯＰ長を調整する処理を行う。このように、本実施形態と第１の実施形態とは、符号化時にＧＯＰ長を調整するための処理の一部が主として異なる。したがって、本実施形態の説明において、第１の実施形態と同一の部分については、図１〜図５に付した符号と同一の符号を付す等して詳細な説明を省略する。
【００３５】
ＧＯＰ構造を最初に決定するときに利用するフリッカの周期は、カメラ（動画符号化装置１００）の電源を入れた直後、又は動画像の撮影モードになった直後からすでに計測されているものとする。もし、符号化処理を開始する段階で、フリッカの周期を計測できていない場合には、動画符号化プログラムに設定されている「ＧＯＰ長の初期値（ＧＯＰ長の最大値、又はその他の所定値）」でＧＯＰ構造を決定する。
【００３６】
本実施形態のフリッカの有無の判定方法には、撮像部１０８に入力されたフレームの輝度値の平均値を取得しておき、フレームの輝度値に、その平均値から大きく外れたものがある場合、そのフレームにはフリッカがあると判定する方法がある。フリッカの検出のために撮像部１０８に入力されたフレームの輝度値の計測を開始するタイミングは、カメラの電源を入れてから行う場合と、動画の撮影モードになってから行う場合とがあり、何れの場合を採用してもよい。尚、フリッカを検出する方法、及びフリッカの周期を測定する方法は、公知の技術で実現できるので、ここでは、その詳細な説明を省略する。
【００３７】
本実施形態では、バッファの大きさを、動画符号化プログラムで設定できる最大のＧＯＰ長（最大ＧＯＰ長）と同じ大きさとする。また、最大ＧＯＰ長を２０とする。また、フレームレートを６０ｆｐｓとする。フリッカの周期は、１秒間に１回とする。更に、本実施形態では、ＧＯＰが全てＣｌｏｓｅｄＧＯＰである場合を例に挙げて説明する。
【００３８】
動画符号化プログラムは、ユーザが操作部１０５を操作して動画像を録画する操作を行うことによって起動する。動画符号化プログラムが起動すると、制御部１０１は、表示部１０６上に、撮像部１０８から入力されたフレームを表示する。
ここで、図６のフローチャートを参照しながら、動画像の撮影の開始が指示されてから動画像を符号化するときの動画符号化装置１００における処理の一例を説明する。
まず、ステップＳ６０１０において、制御部１０１は、動画符号化プログラムで設定できる最大のＧＯＰ長（最大ＧＯＰ長）を取得する。
次に、ステップＳ６０２０において、制御部１０１は、記録するフレームレートを取得する。前述したように、本実施形態では、フレームレートは６０ｆｐｓであるとする。
【００３９】
次に、ステップＳ６０３０において、制御部１０１は、フリッカの周期を取得する。前述したように、本実施形態では、フリッカの周期は、１秒間に１回であるとする。
次に、ステップＳ６０４０において、制御部１０１は、フリッカの１周期分のＧＯＰ構造を決定する。ＧＯＰ構造の決定に際しては、まず、フレームレートとフリッカの周期とに基づいて、フリッカ１周期分のフレーム数を算出する。そして、ステップＳ６０１０で取得した最大ＧＯＰ長から、フリッカの影響を受けるフレームがＧＯＰをまたいでしまうことの無い値を、ＧＯＰ構造として決定する。例えば、最大ＧＯＰ長よりも、フリッカ１周期分のフレームの数の方が少ない場合、フリッカ１周期分のフレームの数でＧＯＰ構造を決定する。一方、最大ＧＯＰ長よりも、フリッカ１周期分のフレームの数の方が多い場合、最大ＧＯＰ長を超えない値で、ＧＯＰ長が出来るだけ変わらない値をＧＯＰ構造として選択する。
そこで、本実施形態では、フリッカ１周期のフレーム数は、６０枚となる。そして、ＧＯＰ構造は、１５枚＋１５枚＋１５枚＋１５枚の構造と決定する。
【００４０】
次に、ステップＳ６０５０において、制御部１０１は、撮影の終了指示がなされたかどうかを判断する。この判断の結果、撮影の終了指示があった場合には、ステップＳ６０６０へ移行する。一方、それ以外の場合には、ステップＳ６０８０へ移行する。
次に、ステップＳ６０６０において、制御部１０１は、バッファに残っている全てのフレームを符号化する。バッファの中のフレームの数が、最大ＧＯＰ長を超えた場合には、当該バッファに残っている全てのフレームを必ず符号化するように、ステップＳ６１１０〜Ｓ６１８０でバッファ内のフレームを、ＧＯＰ長を調整した上で出力している。よって、本実施形態では、当該バッファの中に残っているフレームの数がＧＯＰ長となる。ただし、このステップＳ６０６０において、例えば、バッファに残っているフレームの数と、動画符号化プログラムで設定できる最大のＧＯＰ長（最大ＧＯＰ長）とに基づいて、ＧＯＰ長を調整するようにしてもよい。
【００４１】
次に、ステップＳ６０７０において、制御部１０１は、符号化したフレームを外部記憶装置１０４に出力する。
一方、ステップＳ６０５０からステップＳ６０８０に進むと、制御部１０１は、撮像部１０８からフレームを取得し、バッファに入力する。
次に、ステップＳ６０９０において、制御部１０１は、バッファに入力済みのフレームからフリッカを検出するバッファ内フリッカ検出処理を実行する。バッファ内フリッカ検出処理の詳細については、後述する（図７を参照）。
次に、ステップＳ６１００において、制御部１０１は、ステップＳ６０９０のバッファ内フリッカ検出処理における検出結果を取得する。
【００４２】
次に、ステップＳ６１１０において、制御部１０１は、バッファ内フリッカ検出処理における検出結果に基づき、バッファに入力済みのフレームにフリッカが終了したフレームがあるかどうか（フリッカの検出結果が「フリッカ終了」かどうか）を判断する。この判断の結果、フリッカが終了したフレームがある場合には、ステップＳ６１２０へ移行する。一方、それ以外の場合には、ステップＳ６１４０へ移行する。
ステップＳ６１２０に進むと、制御部１０１は、ＧＯＰ長を調整するために、フリッカの影響を最後に受けたフレームまでをバッファから取り出して符号化する。図２に示す例では、このときに符号化されるフレームは、ＧＯＰ長が３となったフレーム２０１０〜２０３０の組み合わせ、ＧＯＰ長が１５となったフレーム２０６０〜２０８０の組み合わせとなる。このとき、バッファの中にあるフレームは、それぞれフレーム２０１０〜フレーム２０４０、フレーム２０６０〜フレーム２０９０となる。
【００４３】
次に、ステップＳ６１３０において、制御部１０１は、符号化したフレームを外部記憶装置１０４に出力する。ここでは、制御部１０１は、１ＧＯＰ分のデータを外部記憶装置１０４に出力する。このように、１ＧＯＰ分のデータを出力したので、次のフレームは、ＧＯＰの先頭となる。そして、ステップＳ６０３０へ移行する。
一方、ステップＳ６１１０からステップＳ６１４０に進むと、制御部１０１は、バッファに保持されているフレームの数が最大ＧＯＰ長＋１に達したかどうかを判断する。この判断の結果、バッファに保持されているフレームの数が最大ＧＯＰ長＋１に達した場合には、ステップＳ６１５０へ移行する。一方、それ以外の場合には、ステップＳ６０５０へ移行する。
【００４４】
ステップＳ６１５０に進むと、制御部１０１は、ステップＳ６０９０のバッファ内フリッカ検出処理における検出結果に基づき、バッファに入力済みのフレームでフリッカが発生中であるかどうか（フリッカの検出結果が「フリッカ発生中」かどうか）を判断する。この判断の結果、バッファに入力済みのフレームでフリッカが発生中である場合には、ステップＳ６１６０へ移行する。一方、それ以外の場合には、ステップＳ６１６０を省略してステップＳ６１７０へ移行する。
ステップＳ６１６０に進むと、制御部１０１は、ＧＯＰ長を調整するために、バッファから取り出す１ＧＯＰ分のフレームの数を決定する。バッファ内のフレームは、フリッカの影響を受けて、まだその影響が続いている状態である。よって、制御部１０１は、ＧＯＰの先頭がフリッカの影響を受けたフレームとならないようにＧＯＰ長の調整を行う。例えば、フリッカの影響を受けていないフレームの数より少し減らした値をＧＯＰ長とする。
【００４５】
次に、ステップＳ６１７０において、制御部１０１は、バッファから１ＧＯＰ分のフレームを取り出して符号化する。１ＧＯＰ分のフレームの数は、ステップＳ６１６０を通っていない場合、ステップＳ６０４０で決めたＧＯＰ構造から得られるＧＯＰ長となる。一方、ステップＳ６１６０を通っていた場合、１ＧＯＰ分のフレームの数は、ステップＳ６１６０で決めたＧＯＰ長となる。
次に、ステップＳ６１８０において、制御部１０１は、符号化したフレームを外部記憶装置１０４に出力する。ここでは、制御部１０１は、１ＧＯＰ分のデータを外部記憶装置１０４に出力する。このように、１ＧＯＰ分のデータを出力したので、次のフレームは、ＧＯＰの先頭となる。そして、ステップＳ６０５０へ移行する。
【００４６】
次に、図７のフローチャートを参照しながら、図６のステップＳ６０９０のバッファ内フリッカ検出処理の詳細を説明する。
まず、ステップＳ７０１０において、制御部１０１は、バッファ内に、フリッカの発生したフレームがあるかどうかを判断する。この判断の結果、フリッカが発生したフレームがあった場合には、ステップＳ７０３０へ移行する。一方、それ以外の場合には、ステップＳ７０２０へ移行する。図２に示す例では、フリッカの発生したフレームというのは、フレーム２０２０、２０３０、２０７０、２０８０、２１００である。
【００４７】
ステップＳ７０２０に進むと、制御部１０１は、フリッカの検出結果を、バッファ内のフレームが、フリッカの影響が始まっていない状態であるとして、「フリッカなし」とする。
一方、ステップＳ７０３０に進むと、制御部１０１は、バッファ内に、フリッカの終了したフレームがあるかどうかを判断する。この判断の結果、フリッカの終了したフレームがあった場合には、ステップＳ７０４０へ移行する。一方、それ以外の場合には、ステップＳ７０５０へ移行する。図２に示す例では、フリッカの終了したフレームというのは、フレーム２０４０、２０９０となる。
【００４８】
ステップＳ７０４０に進むと、制御部１０１は、フリッカの検出結果を、バッファ内のフレームが、フリッカの影響が始まって終了した状態であるとして、「フリッカ終了」とする。
一方、ステップＳ７０５０に進むと、制御部１０１は、フリッカの検出結果を、バッファ内のフレームが、フリッカの影響が始まってまだ終了していない状態であるとして、「フリッカ発生中」とする。図２に示す例では、フリッカ発生中のフレームというのは、フレーム２０２０、２０３０、２０７０、２０８０、２１００となる。
以上の処理によって、フリッカの影響を受けたフレームがＧＯＰの最後にくるようにＧＯＰ長を調整し符号化できる。図２に示す例では、フレーム２０１０〜２０３０を１つのＧＯＰ２１１０としてＧＯＰ長を調整し符号化できる。同様に、フレーム２０４０〜２０５０を１つのＧＯＰ２１２０、フレーム２０６０〜２０８０を１つのＧＯＰ２１３０、フレーム２０９０〜２１００を１つのＧＯＰ２１４０として、それぞれＧＯＰ長を調整して符号化できる。
【００４９】
以上のように本実施形態では、フリッカの周期からＧＯＰ構造を予め決定しておく。その後、撮像部１０８から入力され、バッファに格納されたフレームから、フリッカの状態を判定し、その判定の結果に基づいて、最終的なＧＯＰ長を調整するようにした。したがって、フリッカの周期に突発的な変化が無ければ、フリッカの周期に合わせた最適なＧＯＰ構造の符号化データを生成することが出来る。更に、バッファからフリッカの判定も行うので、フリッカの周期に突発的な変化があった場合でも、フリッカの影響を受けたフレームがＧＯＰの最後になるＧＯＰ長に調整できる。
【００５０】
本実施形態では、撮像部１０８に入力されたフレームの輝度値の平均値を取得しておき、その平均値から大きく外れたものをフリッカの有りと判定する方法を例に挙げて説明したが、フリッカの有無を判定する方法は、このようなものに限定されない。例えば、環境光を計測する装置から得られたフリッカの情報と、撮像部１０８に入力されたフレームとの同期を取り、これらを関連付けさせてバッファ内のフレームにおけるフリッカの有無を判定するようにしてもよい。ここで、フリッカの情報は、例えば、関連するフレームにフリッカの影響が現れているかどうかを示す情報である。
また、本実施形態では、符号化されたフレームの出力先を外部記憶装置１０４とした場合を例に挙げて説明したが、当該出力先は、ＲＡＭ１０３やネットワーク通信部１０７等であってもよい。
また、本実施形態では、ＧＯＰを全てＣｌｏｓｅｄＧＯＰとして扱った。しかしながら、フリッカの影響を受けたフレームの次のＧＯＰにおけるフレームを、過去のフリッカの影響を受けたフレームを参照しないように符号化することで、ＯｐｅｎＧＯＰ、ＣｌｏｓｅｄＧＯＰを混在させても、本実施形態の処理を実現できる。
【００５１】
尚、前述した実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【００５２】
（その他の実施例）
本発明は、以下の処理を実行することによっても実現される。即ち、まず、以上の実施形態の機能を実現するソフトウェア（コンピュータプログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）が当該コンピュータプログラムを読み出して実行する。
【符号の説明】
【００５３】
１００  動画符号化装置、１０１  制御部、１０８  撮像部
【図１】
2012049810.tif 000003
【図２】
2012049810.tif 000004
【図３】
2012049810.tif 000005
【図４】
2012049810.tif 000006
【図５】
2012049810.tif 000007
【図６】
2012049810.tif 000008
【図７】
2012049810.tif 000009