JP2019502275A - 映像安定化 - Google Patents
映像安定化 Download PDFInfo
- Publication number
- JP2019502275A JP2019502275A JP2018501254A JP2018501254A JP2019502275A JP 2019502275 A JP2019502275 A JP 2019502275A JP 2018501254 A JP2018501254 A JP 2018501254A JP 2018501254 A JP2018501254 A JP 2018501254A JP 2019502275 A JP2019502275 A JP 2019502275A
- Authority
- JP
- Japan
- Prior art keywords
- frame
- mathematical transformation
- computing system
- video
- transformation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000006641 stabilisation Effects 0.000 title claims abstract description 51
- 238000011105 stabilization Methods 0.000 title claims abstract description 51
- 230000009466 transformation Effects 0.000 claims abstract description 126
- 238000000034 method Methods 0.000 claims abstract description 72
- 230000033001 locomotion Effects 0.000 claims abstract description 67
- 230000009467 reduction Effects 0.000 claims abstract description 39
- 230000000694 effects Effects 0.000 claims abstract description 16
- 239000011159 matrix material Substances 0.000 claims description 79
- 230000008859 change Effects 0.000 claims description 11
- 230000000087 stabilizing effect Effects 0.000 claims description 8
- 230000015654 memory Effects 0.000 description 33
- 230000008569 process Effects 0.000 description 23
- 238000004891 communication Methods 0.000 description 15
- 238000003860 storage Methods 0.000 description 13
- 238000004422 calculation algorithm Methods 0.000 description 10
- 238000006073 displacement reaction Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 208000003443 Unconsciousness Diseases 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 239000004973 liquid crystal related substance Substances 0.000 description 3
- 238000010606 normalization Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000002269 spontaneous effect Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000002547 anomalous effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013016 damping Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000004091 panning Methods 0.000 description 2
- 238000005096 rolling process Methods 0.000 description 2
- 238000009966 trimming Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000011426 transformation method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 230000001755 vocal effect Effects 0.000 description 1
- 230000002747 voluntary effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/18—Image warping, e.g. rearranging pixels individually
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/73—Deblurring; Sharpening
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/68—Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/10—Image enhancement or restoration using non-spatial domain filtering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/20—Image enhancement or restoration using local operators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/20—Analysis of motion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/20—Analysis of motion
- G06T7/246—Analysis of motion using feature-based methods, e.g. the tracking of corners or segments
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/68—Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
- H04N23/682—Vibration or motion blur correction
- H04N23/683—Vibration or motion blur correction performed by a processor, e.g. controlling the readout of an image memory
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/69—Control of means for changing angle of the field of view, e.g. optical zoom objectives or electronic zooming
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/80—Camera processing pipelines; Components thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10016—Video; Image sequence
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Studio Devices (AREA)
- Image Analysis (AREA)
- Image Processing (AREA)
- Transforming Electric Information Into Light Information (AREA)
Abstract
概して、本主題は、コンピューティングシステムが、映像の第1および第2フレームを用いて、これらのフレームに対するカメラの移動を示す変換を特定するための、方法、システムおよびプログラムプロダクトにおいて実現することができる。コンピューティングシステムは、最近の移動に対する上記変換の代表性が低くなるように、修正された数学的変換を生成する。コンピューティングシステムは、上記変換と上記修正された変換とを用いて第2の変換を生成する。コンピューティングシステムは、安定化された第2フレームに存在するであろう予測される歪みを特定する。コンピューティングシステムは、安定化効果の低減量を決定する。コンピューティングシステムは、第2の変換を第2フレームに適用することにより第2フレームを安定化し、安定化効果は、決定した安定化効果の低減量に基づいて低減されている。
Description
技術分野
本明細書は概して映像安定化に関する。
本明細書は概して映像安定化に関する。
背景
映像記録はかつて、映像記録専用装置の専門分野であったが、映像記録が可能な携帯電話およびタブレットコンピュータ等の身近な装置がより一般的になっている。大抵の携帯映像記録装置の問題点は、これらの装置では映像のブレが生じる点であり、ユーザが記録装置を持ちながら行なう無意識の動きが映像の品質に影響する。
映像記録はかつて、映像記録専用装置の専門分野であったが、映像記録が可能な携帯電話およびタブレットコンピュータ等の身近な装置がより一般的になっている。大抵の携帯映像記録装置の問題点は、これらの装置では映像のブレが生じる点であり、ユーザが記録装置を持ちながら行なう無意識の動きが映像の品質に影響する。
記録装置を振動させると、その振動をたとえば映像安定化機構によって補償しない限り、同様にブレた映像になる可能性がある。光学式映像安定化は、レンズまたは画像センサ等の記録装置の構成部品を機械的に動かすことによって映像のブレを減じることができる。しかしながら、光学式映像安定化装置は、記録装置の材料および製造コストを増大させる場合がある。また、光学式映像安定化装置は、記録装置のサイズを増大させる場合があり、記録装置は小型に設計することが望まれることが多い。
概要
本明細書は、映像を安定化させるための技術、方法、システム、およびその他の機構を説明する。
本明細書は、映像を安定化させるための技術、方法、システム、およびその他の機構を説明する。
下記実施形態に追加する説明として、本開示は以下の実施形態を説明する。
実施形態1は、コンピュータによって実現される方法である。この方法は、コンピューティングシステムが、カメラ等の記録装置によって取込まれた映像の第1フレームおよび第2フレームを受信するステップを含む。この方法は、コンピューティングシステムが、映像の第1フレームおよび第2フレームを用いて、映像によって取込まれたシーン(すなわち映像において描写されているシーン)に対する、第1フレームが取込まれた時点から第2フレームが取込まれた時点までのカメラの移動を示す数学的変換を特定するステップを含む。この方法は、コンピューティングシステムが、最近始まった移動に対する数学的変換の代表性が低くなるように、上記シーンに対するカメラの移動を示す数学的変換を修正することにより、修正された数学的変換を生成するステップを含む。この方法は、コンピューティングシステムが、数学的変換と修正された数学的変換とを用いて、第2フレームに適用されて第2フレームを安定化することができる第2の数学的変換を生成するステップを含む。この方法は、コンピューティングシステムが、第2の数学的変換を第2フレームに適用した結果得られる、安定化された第2フレームに存在する、予測される歪みを、(i)第2の数学的変換を第2フレームに適用した結果生じる水平方向の歪み量と、(ii)第2の数学的変換を第2フレームに適用した結果生じる鉛直方向の歪み量との差に基づいて、特定するステップを含む。この方法は、コンピューティングシステムが、第2フレームに先行する映像の複数のフレームにおける歪みから算出された歪みの許容可能な変化を、予測される歪みが超過する程度に基づいて、第2の数学的変換を第2フレームに適用した結果得られる安定化効果の低減量を決定するステップを含む。この方法は、コンピューティングシステムが、第2の数学的変換を第2フレームに適用することにより、安定化された第2フレームを生成するステップを含み、第2の数学的変換を第2フレームに適用することによる安定化効果は、決定した安定化効果の低減量に基づいて低減されている。
実施形態1は、コンピュータによって実現される方法である。この方法は、コンピューティングシステムが、カメラ等の記録装置によって取込まれた映像の第1フレームおよび第2フレームを受信するステップを含む。この方法は、コンピューティングシステムが、映像の第1フレームおよび第2フレームを用いて、映像によって取込まれたシーン(すなわち映像において描写されているシーン)に対する、第1フレームが取込まれた時点から第2フレームが取込まれた時点までのカメラの移動を示す数学的変換を特定するステップを含む。この方法は、コンピューティングシステムが、最近始まった移動に対する数学的変換の代表性が低くなるように、上記シーンに対するカメラの移動を示す数学的変換を修正することにより、修正された数学的変換を生成するステップを含む。この方法は、コンピューティングシステムが、数学的変換と修正された数学的変換とを用いて、第2フレームに適用されて第2フレームを安定化することができる第2の数学的変換を生成するステップを含む。この方法は、コンピューティングシステムが、第2の数学的変換を第2フレームに適用した結果得られる、安定化された第2フレームに存在する、予測される歪みを、(i)第2の数学的変換を第2フレームに適用した結果生じる水平方向の歪み量と、(ii)第2の数学的変換を第2フレームに適用した結果生じる鉛直方向の歪み量との差に基づいて、特定するステップを含む。この方法は、コンピューティングシステムが、第2フレームに先行する映像の複数のフレームにおける歪みから算出された歪みの許容可能な変化を、予測される歪みが超過する程度に基づいて、第2の数学的変換を第2フレームに適用した結果得られる安定化効果の低減量を決定するステップを含む。この方法は、コンピューティングシステムが、第2の数学的変換を第2フレームに適用することにより、安定化された第2フレームを生成するステップを含み、第2の数学的変換を第2フレームに適用することによる安定化効果は、決定した安定化効果の低減量に基づいて低減されている。
実施形態2は、実施形態1の方法であり、第2フレームは、映像の第1フレームの直後の映像のフレームである。
実施形態3は、実施形態1の方法であり、カメラの移動を示す数学的変換はホモグラフィ変換行列を含む。
実施形態4は、実施形態3の方法であり、数学的変換を修正するステップは、ローパスフィルタをホモグラフィ変換行列に適用するステップを含む。
実施形態5は、実施形態3の方法であり、予測される歪みは、第2の数学的変換における水平ズーム値と第2の数学的変換における鉛直ズーム値との差に基づく。
実施形態6は、実施形態1の方法であり、数学的変換を修正するステップは、数学的変換を修正して、修正された数学的変換が、数学的変換よりも、長期にわたって発生した移動に対する代表性が高くなるようにするステップを含む。
実施形態7は、実施形態1の方法であり、第2の数学的変換を第2フレームに適用した結果得られる安定化効果の低減量を決定するステップは、第2フレームに先行する映像の複数のフレーム間のカメラの移動の速度に基づいて算出された、カメラの移動速度の許容可能な変化を超える、第1フレームから第2フレームまでのカメラの決定した移動速度に、さらに基づく。
実施形態8は、実施形態1の方法であり、安定化された第2フレームを生成するステップは、第2の数学的変換を第2フレームに適用することによって生成された第2フレームのバージョンをズームインするステップを含む。
実施形態9は、実施形態1の方法であり、第2フレームのバージョンのズームイン領域を、水平方向または鉛直方向にシフトすることにより、第2フレームのズームイン領域が無効領域を提示しないようにするステップをさらに含む。
実施形態10は、命令が格納された記録可能媒体を含むシステムに関し、この命令は1つ以上のプロセッサによって実行されると実施形態1〜9のいずれか1つの方法に従う動作を実行させる。
特定の実装例は、場合に応じて、以下の利点のうちの1つ以上を実現できる。本明細書に記載の映像安定化技術は、3以上の自由度の移動(たとえば水平移動および鉛直移動だけでない移動)を、たとえば8自由度の移動(たとえば並進方位、回転方位、ズーム方位、および非固定(non-rigid)ローリングシャッター歪み)を補償することにより、補償することができる。本明細書に記載の映像安定化技術は、装置による映像の撮影中に機能することができ、未来のフレームからの情報はなくてもよい。言い換えると、この映像安定化技術は、最新記録フレームを安定化するときに、過去のフレームのみからの情報を使用することができるので、システムは、映像ストリームを取込むときに、安定化された映像ストリームを格納することができる(たとえば、現在記録中のまたは記録済の映像に、1、100、500、1000、または5000を超える不安定な映像フレームを格納しないといったように、複数の不安定な映像フレームを格納しない)。したがって、システムは、映像の安定化を、全映像の記録が終わるまで待つ必要がない。本明細書に記載の映像安定化技術は、複雑でなくてもよいので、処理能力がそれほど高くない装置(たとえばスマートフォンの一部)上でも実行し得る。加えて、本明細書に記載の映像安定化技術は、第1段階でフレーム間動き予測が失敗する状況でも機能し得る。
1つ以上の実装例の詳細が添付の図面および以下の説明において示される。その他の特徴、目的、および利点は、本明細書および図面ならびに請求項から明らかになるであろう。
各種図面における同様の参照符号は同様の要素を示す。
詳細な説明
本明細書は概して映像の安定化について説明する。映像安定化は、直近の受信映像フレームと過去の受信映像フレームとの間の変換を特定し(この変換は、シーンに対する、フレームとフレームとの間のカメラの移動を示す)、過去のフレームからの情報に基づいてこの変換を修正し、上記変換と上記修正された変換とに基づいて第2の変換を生成し、第2の変換を現在受信中のフレームに適用することにより、現在受信中のフレームを安定化したものを生成することによって、実行し得る。このプロセスは、概要が図1に基づいて説明され、詳細が図2に基づいて説明される。
詳細な説明
本明細書は概して映像の安定化について説明する。映像安定化は、直近の受信映像フレームと過去の受信映像フレームとの間の変換を特定し(この変換は、シーンに対する、フレームとフレームとの間のカメラの移動を示す)、過去のフレームからの情報に基づいてこの変換を修正し、上記変換と上記修正された変換とに基づいて第2の変換を生成し、第2の変換を現在受信中のフレームに適用することにより、現在受信中のフレームを安定化したものを生成することによって、実行し得る。このプロセスは、概要が図1に基づいて説明され、詳細が図2に基づいて説明される。
図1は、映像安定化プロセスによって安定化中の映像ストリームの図を示す。この図は、3つの映像フレーム110a〜110cを含む。これらのフレームは連続していてもよく、フレーム110bはフレーム110aが取込まれた直後に取込まれたフレームであってもよく、フレーム110cはフレーム110bが取込まれた直後に取込まれたフレームであってもよい。本明細書は、映像の2つのフレームを、映像の第1フレームおよび映像の第2フレームと呼ぶ場合があるが、「第1」という表記は、第1フレームが映像全体における最初のフレームであることを必ずしも意味しない。
フレーム110a〜110cは、ライン112a〜112bの間またはその近くに配置されて示されているが、これらのラインは、これらのフレームによって表わされるシーン相互の相対的な位置を示す。この図面においてこれらのラインは、カメラがフレーム110a〜110cを取込んだときに移動していたことを示す。たとえば、カメラは、フレーム110aを取込んだときよりもフレーム110bを取込んだときの方が下を向いており、フレーム110aおよび110bを取込んだときよりもフレーム110cを取込んだときの方が上を向いていたことになる。
コンピューティングシステムは、第1フレーム110bから第2フレーム110cまでのカメラの移動を示す数学的変換(ボックス120)を特定する。この特定は、(図中の矢印で示されるように)フレーム110b〜110cを用いて実施することができる。フレーム110cは直近に取込まれたフレームであってもよい。これら2つのフレーム110b〜110cは、コンピューティングシステムに装着されているカメラセンサまたはカメラモジュールから受けてもよく、または、映像フレーム110b〜110cを取込んだ遠隔装置から受けてもよい。上記数学的変換を特定することは、数学的変換を生成することを含み得る。数学的変換は、図2A〜図2Bのボックス210との関連でより詳細に説明するように、ホモグラフィ変換行列であってもよい。
次に、コンピューティングシステムは、修正された変換(ボックス125)を生成する。このとき、コンピューティングシステムは、最近始まった移動に対する、修正された変換(ボックス125)の代表性が、最初の変換と比べて低くなるように、最初の変換(ボックス120)を修正する。言い換えると、修正された変換を生成することは、最初の変換を、第1および第2フレーム110b〜110cよりも前の1つ以上の映像フレームからの情報に基づいて修正することを含む。修正された変換は、最初の変換をローパスフィルタにかけたものであってもよい。そうすることにより得られる修正された数学的変換(ボックス125)は、最近始まった移動ではなく長期にわたって発生した移動に対する代表性が、最初の変換(120)よりも高い。
一例として、修正された数学的変換(ボックス125)は、数分の1秒前に始まった振動ではなく長い秒数にわたって発生したパニングの動きを、より十分に代表することができる。このやり方で変換を修正することは、図1においてフレーム110a〜110bからボックス122を指している矢印で示されるように、映像の過去のフレームを考慮している。たとえば、過去のフレームを用いて算出した変換を用いることで、より長い期間にわたって発生した移動と、ごく最近始まった移動とを特定することができる。修正された変換を、過去のフレームを用いて算出する方法の一例は、図2A〜図2Bのボックス220との関連でより詳細に説明する、ローパスフィルタをホモグラフィ変換行列に適用することであってもよい。
ボックス130は、最初の変換(ボックス120)と修正された変換(ボックス125)とから生成される第2の変換を示す。第2の変換は、最初の変換と修正された変換との差であってもよい。第2の変換を最初の変換と修正された変換とから生成することは、図2A〜図2Bのボックス230との関連でより詳細に説明する。
ボックス132は、(i)第2の数学的変換を第2フレーム110cに適用した結果生じる水平方向の歪み量と、(ii)第2の数学的変換を第2フレーム110cに適用した結果生じる鉛直方向の歪み量との差に基づいて、第2の変換を第2フレーム110cに適用した結果得られる安定化された第2フレーム110cの、予測される歪みを、コンピューティングシステムが如何にして特定するかを示す。予測される歪みの算出については、図2A〜図2Bのボックス250との関連でより詳細に説明する。
ボックス134は、予測される歪みが許容可能な歪み変化をどの程度超過しているかに基づいて、第2の数学的変換を第2フレーム110cに適用することにより得られる安定化効果の低減量を、コンピューティングシステムが如何にして決定するかを示す。許容可能な歪み変化は、図1においてフレーム110a〜110bからボックス134を指している矢印で示されるように、第2フレーム110cに先行する映像の複数のフレームを用いて算出することができる。一例として、過去の複数のフレームにおける歪みを解析してもよく、現在のフレーム110cを安定化した結果生じる歪みが、フレーム間の歪みの変化量から大幅に外れている場合、コンピューティングシステムは、現在のフレーム110cの安定化を低減することにより、歪みが映像を見る者にとって明らかになり過ぎないようにすることができる。映像安定化の低減量の決定については、図2のボックス250および260との関連でより詳細に説明する。コンピューティングシステムが、決定した映像安定化の低減量を使用することは、決定した量を用いて、修正された第2の変換(ボックス140)を生成することを含み得る。
コンピューティングシステムは、修正された第2の変換(ボックス140)を第2フレーム110cに適用することにより、安定化された第2フレーム110c(ボックス150)を生成する。修正された第2の変換(ボックス140)は、決定した安定化の低減量に基づいて修正されているので、コンピューティングシステムによる、安定化された第2フレーム(ボックス150)の生成は、決定した安定化効果の低減量に基づいて低減されていると考えられる。
いくつかの実装例において、安定化効果の低減量を決定することは、さらに、または代わりに、シーンに対するカメラの許容可能な速度変化を超える、シーンに対する第1フレーム110bから第2フレーム110cまでのカメラの決定した移動速度に基づく。カメラの許容可能な速度変化は、図2A〜図2Bのボックス240および260に関連してより詳細に説明する第2フレーム110cに先行する映像の複数のフレームから算出してもよい。
いくつかの実装例において、安定化された第2フレームを生成することは、第2の数学的変換を第2フレームに適用することにより生成された第2フレームのバージョンをズームインすることを含む。コンピューティングシステムは、ズームイン領域を、水平方向、鉛直方向、またはこれら両方の方向にシフトさせることにより、ズームイン領域が、安定化された第2フレームのエッジに現れ得る無効領域を提示しないようにすることができる。これについては、図2A〜図2Bのボックス280および290との関連でより詳細に説明する。
図2A〜図2Bは映像安定化プロセスのフローチャートを示す。このプロセスは、以下で説明するボックス210〜290で示される。これらのボックスに関連付けて説明する動作は、以下で示す順序または図2A〜図2Bに示される順序で実行されなくてもよい。
ボックス210で、コンピューティングシステムは、2つの映像フレームを入力として用いてフレーム間の動き(「H_interframe」)を表わす行列を推定する。このフレーム間動き行列は、ホモグラフィ変換行列であってもよい。ホモグラフィ変換行列は、シーンの、または、映像の2つのフレーム間のシーンを取込んだカメラの移動を表わすことができる。一例として、映像の各フレームは二次元画像を表示し得る。第1フレームが、正方形をその真正面から撮影して、映像フレームの中で辺の長さが等しく角度が90度の正方形となるように(言い換えると正方形に見えるように)したとする。次に、カメラを側方に移動させて(または正方形自体を移動させて)、次の映像フレームが、辺のうちのいつくかが他の辺よりも長く角度が90度ではない歪んだ正方形を表示するようにしたとする。第1フレーム内の正方形の4つのコーナーポイントの位置を第2フレームの4つのコーナーポイントの位置にマッピングすることにより、第1フレームから次のフレームまでにカメラまたはシーンがどのように移動したかを特定することができる。
フレーム内のこれらのコーナーポイントの相互のマッピングを用いることにより、カメラが記録しているシーンに対するカメラの視点の動きを表わすホモグラフィ変換行列を生成することができる。このようなホモグラフィ変換行列の場合、第1フレームを、生成したホモグラフィ変換行列とともに使用して、たとえば既知のホモグラフィ変換方法に従って第1フレーム内の画素を異なる場所に移動させることにより、第2フレームを再度生成することができる。
上記ホモグラフィ変換行列は、並進移動だけでなく、回転、ズーム、および非固定ローリングシャッター歪みも表わすことができる。このように、ホモグラフィ変換行列を使用することにより、8自由度の移動に対して映像を安定化することができる。比較として、いくつかの映像安定化機構は、専ら画像を安定化することによって並進移動(たとえば上下および左右の移動)を説明する。
上述のホモグラフィ変換行列は、3×3のホモグラフィ変換行列であってもよいが、その他の種類のホモグラフィ行列を使用してもよい(ホモグラフィ行列でなくても、または行列でなくても、1つのフレームから別のフレームまでの移動のその他の数学的表現を使用してもよい)。3×3行列(H_interframeと呼ぶ)は以下のようにして決定することができる。第1に、コンピューティングシステムは、現在の画像の中で一組の特徴点(通常コーナーポイント)を見つける。これらのポイントを[x’_i,y’_i],i=1....N(Nは特徴点の数)で表わす。次に、前のフレームにおける対応する特徴点を見つける。この対応する特徴点を[x_i,y_i]で表わす。なお、これらのポイントは、GL座標系にあるものとして説明する(すなわちxおよびyの範囲はフレーム中心を起点として−1〜1)。これらのポイントが、xの範囲が0〜画像の幅で、yの範囲が0〜画像の高さである画素座標系の中にある場合、ポイントをGL座標系に変換することができる、または、得られた行列を変換して補償することができる。
上記H_interframe行列は、9の要素を含む3×3行列である。
・z_i'*[x'_i, y'_i, 1]' = H_interframe * [x_i, y_i, 1]'
[x'_i,y'_i,1]'は、[x'_i,y'_i,1]ベクトルの転置行列である3×1ベクトルである。[x_i,y_i,1]'は、[x_i,y_i,1]ベクトルの転置行列である3×1ベクトルである。z_i'はスケールファクタである。
一組の対応する特徴点を想定した場合、行列を推定するためのアルゴリズムの例は、ftp://vista.eng.tau.ac.il/dropbox/aviad/Hartley,%20Zisserman
%20-%20Multiple%20View%20Geometry%20in%20Computer%20Vision.pdfから入手できるコンピュータビジョンの書籍「Hartley, R., Zisserman, A.: Multiple View Geometry in Computer Vision. Cambridge University Press (2000)」のアルゴリズム4.1(91頁)およびアルゴリズム4.6(123頁)に記載されている。
%20-%20Multiple%20View%20Geometry%20in%20Computer%20Vision.pdfから入手できるコンピュータビジョンの書籍「Hartley, R., Zisserman, A.: Multiple View Geometry in Computer Vision. Cambridge University Press (2000)」のアルゴリズム4.1(91頁)およびアルゴリズム4.6(123頁)に記載されている。
ボックス220で、コンピューティングシステムは、ローパス変換行列(H_lowpass)を推定する。ローパス変換行列を後にH_interframe行列と組合わせることにより、ビデオカメラの無意識の「高周波の」移動の結果を取除くために使用できる新たな行列(H_compensation)を生成することができる。システムがすべての移動を取除こうとする場合(言い換えると本明細書に記載のローパスフィルタリングを実行しない場合)、ユーザは、カメラを意識的に動かすことができず映像によって示されるシーンも動かすことができないかもしれない。このため、コンピューティングシステムは、高周波の移動をフィルタ処理して取除くためにローパス変換を生成する。高周波の移動は、短期間の前後移動のような、不規則であって多数のフレームを通して表わされるのではない移動であり得る。逆に、低周波の移動は、数秒間のユーザによるビデオカメラのパニングのような、多数のフレームを通して表わされる移動であり得る。
このフィルタリングを実施するために、コンピューティングシステムは、長い時系列にわたって発生した低周波移動を強調するために重み付けされた値を含むローパス変換行列(H_lowpass)を生成する。ローパス変換行列は、ローパスフィルタをH_interframe行列に適用した結果であってもよい。ローパス変換行列の各要素は、(1)前のフレームからのローパス変換行列の自身の時系列と、(2)前のフレームと現在のフレームとの間の移動を表わすH_interframe行列と、(3)ユーザによって指定された減衰比とから、要素ごとに個別に生成される。言い換えると、注目すべき値で重み付けされた行列内の要素は、多くのフレームにわたってH_interframeに存在している移動を表わす要素であってもよい。H_lowpassを生成するための等式は次のように表わすことができる。
・H_lowpass = H_previous_lowpass * transform_damping_ratio + H_interframe * (1 - transform_damping_ratio)
この等式は、2タップ無限インパルス応答フィルタの一例である。
・H_lowpass = H_previous_lowpass * transform_damping_ratio + H_interframe * (1 - transform_damping_ratio)
この等式は、2タップ無限インパルス応答フィルタの一例である。
ボックス230で、コンピューティングシステムは、補償変換行列(H_compensation)を算出する。補償行列は、ローパス行列(H_lowpass)とフレーム間動き行列(H_interframe)との組合わせであってもよい。これら2つの行列を組合わせることにより、あるフレームから次のフレームまでの移動を保つのに必要な行列(H_compensation)が生成されるが、これは、最近の「無意識の」移動の除外までの、妥当な期間に発生した移動のみである。H_compensation行列は、H_interframeとH_lowpassとの間の移動の相違を表わし得る。よって、H_lowpassを最後のフレームに適用することにより、最後のフレームと現在のフレームとの間に発生した自発的な移動を表わす、最後のフレームを修正したものを生成する一方で、H_compensationを現在のフレームに適用することにより、最後のフレームと現在のフレームとの間に発生した自発的な移動を表わす、現在のフレームを修正し(安定化し)たものを生成することができる。簡単に言うと、H_compensationを現在のフレームに適用することにより、そのフレームから無意識の移動を取除く。具体的には、この算出されたH_compensation行列を想定すると、システムは、映像の現在のフレームを取込み、変換プロセスを用いてH_compensation行列をこのフレームに適用し、現在のフレームと同様であるが突然の小さな移動を除外する、新たに生成されたフレームを取得することができるはずである。言い換えると、システムは、現在のフレームをできる限り最後のフレームの近くで維持しようとするが、長期の「自発的な」移動は許可する。
補償変換行列は以下の等式を用いて生成することができる。
・H_compensation = Normalize( Normalize( Normalize(H_lowpass) *
H_previous_compensation ) * Inverse(H_interframe))
H_previous_compensation行列は、このプロセスにおいて後に算出されるが、前のフレームのために算出された、H_constrained_compensation行列である。Inverse()は、変換を反転させることにより最後のフレームの元のバージョンを生成するために使用される行列反転演算である。最後のフレームの元のバージョンをローパスフィルタ行列と組合わせることにより、自発的な移動を許容する。H_previous_compensationと組合わせることにより、前の補償値を補償する。
・H_compensation = Normalize( Normalize( Normalize(H_lowpass) *
H_previous_compensation ) * Inverse(H_interframe))
H_previous_compensation行列は、このプロセスにおいて後に算出されるが、前のフレームのために算出された、H_constrained_compensation行列である。Inverse()は、変換を反転させることにより最後のフレームの元のバージョンを生成するために使用される行列反転演算である。最後のフレームの元のバージョンをローパスフィルタ行列と組合わせることにより、自発的な移動を許容する。H_previous_compensationと組合わせることにより、前の補償値を補償する。
Normalize()は、3×3行列をその第2の特異値によって正規化する演算である。正規化プロセスを実行する理由は、このプロセスのステップのうちのいくつかが、他に良い言葉がないのであるが、現実世界においてあまり意味をなさないであろう変換を生じさせる可能性があるからである。このため、正規化プロセスは、各プロセスステップから妥当な結果が得られることを保証できる。正規化は、プロセスのステップごとに実行されるので、1つのステップの変則的な出力がこのプロセスの残りのステップを汚染することはない(たとえば、この変則的な出力が、これらのステップのうちの残りのステップの出力もゼロの近くに引き寄せるゼロに近い値を与えた場合を想定する)。下記理由により、追加の処理によって映像安定化プロセスの結果を向上させることができる。
ボックス240で、コンピューティングシステムは、減速値を算出する。減速値は、カメラが非常に素早く移動し、フレーム間の動きが信頼できない可能性があるので映像安定化が歓迎されなくなったときに、映像安定化をどの程度低減するかを判断するために使用される値であってもよい。映像安定化を低減し得る量を算出するために、フレーム間の移動の速度を先ず算出する。この例において、コンピューティングシステムは、フレームの中心の速度を生成する。x方向の速度は、以下のように、H_interframeの行1列3の要素から取出される(ボックス242)。
・speed_x = H_interframe[1, 3] * aspect_ratio
y方向の速度は、以下のように、H_interframe行列の行2列3の要素から取出される(ボックス242)。
・speed_y = H_interframe[2, 3]
上記aspect_ratioは、frame_widthをframe_heightで除算したものである。これらの速度の特定は2つのフレーム間の並進移動を説明するだけかもしれないが、他の例において速度は回転、ズーム、またはその他の種類の移動を説明し得る。
・speed_x = H_interframe[1, 3] * aspect_ratio
y方向の速度は、以下のように、H_interframe行列の行2列3の要素から取出される(ボックス242)。
・speed_y = H_interframe[2, 3]
上記aspect_ratioは、frame_widthをframe_heightで除算したものである。これらの速度の特定は2つのフレーム間の並進移動を説明するだけかもしれないが、他の例において速度は回転、ズーム、またはその他の種類の移動を説明し得る。
システムは次に、長期にわたるカメラ(またはシーン)の速度を説明し突然の素早い「無意識の」移動を除外する、ローパス動き速度を決定することができる。これはたとえば以下のように行なわれる。現在の速度を取得し、それを前に(previous)算出したローパス速度(lowpass speed)と組合わせ、さらに、前に算出したローパス速度に対して現在の速度を逆に重み付けする減衰比(damping ratio)を適用する。
・lowpass_speed_x = lowpass_speed_x_previous * speed_damping_ratio +
speed_x * (1 - speed_damping_ratio)
この等式は実質的に、前に計算した速度を取得し、それを、減衰比によって特定される量だけ減じることにより、ローパス速度を生成する。この低減分は現在の速度によって補償される。このように、映像の現在の速度は、全lowpass_speed値に影響するが、lowpass_speed値における排他的ファクタではない。上記等式は、無限インパルス応答フィルタを表わす。たとえば以下のようにy速度についても同じプロセスを実行してローパスy速度(lowpass y speed)を生成することができる。
・lowpass_speed_y = lowpass_speed_y_previous * speed_damping_ratio +
speed_y * (1 - speed_damping_ratio)
このプロセスの減衰比はユーザによって設定され、その値の一例は0.99である。
・lowpass_speed_x = lowpass_speed_x_previous * speed_damping_ratio +
speed_x * (1 - speed_damping_ratio)
この等式は実質的に、前に計算した速度を取得し、それを、減衰比によって特定される量だけ減じることにより、ローパス速度を生成する。この低減分は現在の速度によって補償される。このように、映像の現在の速度は、全lowpass_speed値に影響するが、lowpass_speed値における排他的ファクタではない。上記等式は、無限インパルス応答フィルタを表わす。たとえば以下のようにy速度についても同じプロセスを実行してローパスy速度(lowpass y speed)を生成することができる。
・lowpass_speed_y = lowpass_speed_y_previous * speed_damping_ratio +
speed_y * (1 - speed_damping_ratio)
このプロセスの減衰比はユーザによって設定され、その値の一例は0.99である。
このプロセスは次に、たとえば以下の等式を用いて、これらの値を組合わせることにより、x方向およびy方向における移動を説明するローパス速度の1つの表現を生成する(ボックス244)。
・lowpass_speed = sqrt(lowpass_speed_x *lowpass_speed_x +
lowpass_speed_y * lowpass_speed_y)
算出されたこのローパス速度は実質的に、長期にわたるフレーム間の移動の速度を表わす。言い換えると、lowpass_speedは、最近の速度変化に対する説明性は低く、より長期の速度傾向をより十分に説明する。
・lowpass_speed = sqrt(lowpass_speed_x *lowpass_speed_x +
lowpass_speed_y * lowpass_speed_y)
算出されたこのローパス速度は実質的に、長期にわたるフレーム間の移動の速度を表わす。言い換えると、lowpass_speedは、最近の速度変化に対する説明性は低く、より長期の速度傾向をより十分に説明する。
ローパス速度が算出された状態で、システムは、減速値を算出することができる。いくつかの例において、減速値は0と1の間の値であり(その他の境界値も可能)、システムは、ローパス速度と低しきい値および高しきい値との比較に基づいて減速値を生成することができる。ローパス速度(lowpass speed)が低しきい値(low threshold)を下回る場合、減速値(speed reduction)は境界値0に設定してもよい。ローパス速度が高しきい値(high threshold)を上回る場合、減速値は境界値1に設定してもよい。ローパス速度が2つのしきい値の間であるとき、コンピューティングシステムは、たとえば減速値が境界値0と1の間にある場合は、しきい値の間のローパス速度のスケーリングされた値を表わす減速値を選択してもよい。減速値の算出は、以下のアルゴリズムで表わすことができる(ボックス246)。
・lowpass_speed < low_speed_thresholdの場合、speed_reduction = 0
・lowpass_speed > high_speed_thresholdの場合、speed_reduction = max_speed_reduction
・さもなければ、speed_reduction = max_speed_reduction * (lowpass_speed -
low_speed_threshold) / (high_speed_threshold - low_speed_threshold)
このアルゴリズムにより、low_speed_threshold、high_speed_threshold、およびmax_speed_reductionはすべて、ユーザにより特定される。値の例は、low_speed_threshold = 0.008、high_speed_threshold = 0.016、およびmax_speed_reduction = 1.0を含む。
・lowpass_speed < low_speed_thresholdの場合、speed_reduction = 0
・lowpass_speed > high_speed_thresholdの場合、speed_reduction = max_speed_reduction
・さもなければ、speed_reduction = max_speed_reduction * (lowpass_speed -
low_speed_threshold) / (high_speed_threshold - low_speed_threshold)
このアルゴリズムにより、low_speed_threshold、high_speed_threshold、およびmax_speed_reductionはすべて、ユーザにより特定される。値の例は、low_speed_threshold = 0.008、high_speed_threshold = 0.016、およびmax_speed_reduction = 1.0を含む。
ボックス250で、コンピューティングシステムは歪み低減値を算出する。補償変換は映像フレームに適用されたときに非固定(non-rigid)歪みを過剰に生成し得るので、コンピューティングシステムは歪み低減値を算出してもよい。言い換えると、映像安定化は現実的に見えないかもしれない。たとえばその理由は、1方向において別の方向よりも大きく画像を引き延ばすことにより発生する歪みは、発生するのが速すぎてユーザには異常に見えることにある。
歪み低減値を算出するために、コンピューティングシステムは先ず、H_compensation行列におけるズームファクタの値を調べることにより、以下のように補償ズームファクタを算出してもよい。
・zoom_x = H_compensation[1,1] これはH_compensation行列の行1列1の要素
・zoom_y = H_compensation[2,2] これはH_compensation行列の行2列2の要素
ズームファクタは、如何にして変換が画像をある次元において引き延ばすかを特定するファクタであってもよい。
・zoom_x = H_compensation[1,1] これはH_compensation行列の行1列1の要素
・zoom_y = H_compensation[2,2] これはH_compensation行列の行2列2の要素
ズームファクタは、如何にして変換が画像をある次元において引き延ばすかを特定するファクタであってもよい。
次に、コンピューティングシステムは、2つのズームファクタ間の差を求めることにより、以下のように、1方向において別の方向よりも大きく画像を引き延ばすことにより画像が歪む(distortion)程度を求めることができる(ボックス252)。
・distortion=abs(zoom_x-zoom_y)
ローパスフィルタをこの歪みに適用することにより、歪みを変化させることが許容されるレートに制限を課し、したがって、以下の式を用いて歪みの突然の変化を確実に最少にする(ボックス254)。
・lowpass_distortion = previous_lowpass_distortion * distortion_damping_ratio + distortion * (1 - distortion_damping_ratio)
言い換えると、このアルゴリズムは、歪み量をゆっくりと変化させるように構成されている。上記式において、distortion_damping_ratioは、ユーザが指定した歪みIIRフィルタの減衰比である。値の一例は0.99である。
・distortion=abs(zoom_x-zoom_y)
ローパスフィルタをこの歪みに適用することにより、歪みを変化させることが許容されるレートに制限を課し、したがって、以下の式を用いて歪みの突然の変化を確実に最少にする(ボックス254)。
・lowpass_distortion = previous_lowpass_distortion * distortion_damping_ratio + distortion * (1 - distortion_damping_ratio)
言い換えると、このアルゴリズムは、歪み量をゆっくりと変化させるように構成されている。上記式において、distortion_damping_ratioは、ユーザが指定した歪みIIRフィルタの減衰比である。値の一例は0.99である。
ローパス歪みが算出された状態で、コンピューティングシステムは、歪み低減値を算出することができる。いくつかの例において、歪み低減値は0と1の間の値であり(その他の境界値も可能)、システムは、ローパス歪みと低しきい値および高しきい値との比較に基づいて歪み低減値を生成してもよい。ローパス歪みが低しきい値を下回る場合、ローパス低減値は境界値0に設定してもよい。ローパス歪み値が高しきい値を上回る場合、歪み低減値は境界値1に設定してもよい。ローパス歪み値が2つのしきい値の間である場合、しきい値間のローパス歪みのスケーリングされた値を表わす値を選択してもよい(たとえば結果として得られた歪み低減値が境界値0と1の間である場合)。歪み低減値の算出は以下のアルゴリズムで表わすことができる(ボックス256)。
・lowpass_distortion < low_distortion_thresholdである場合、distortion_reduction = 0
・lowpass_distortion > high_distortion_thresholdである場合、max_distortion_reduction
・さもなければ、distortion_reduction = max_distortion_reduction *
(lowpass_distortion - low_distortion_threshold) / (high_distortion_threshold
- low_distortion_threshold)
このアルゴリズムにより、low_distortion_threshold、high_distortion_threshold、およびmax_distortion_reductionはすべて、ユーザにより特定される。値の例は、low_distortion_threshold = 0.001、high_distortion_threshold = 0.01、およびmax_distortion_reduction = 0.3を含む。
・lowpass_distortion < low_distortion_thresholdである場合、distortion_reduction = 0
・lowpass_distortion > high_distortion_thresholdである場合、max_distortion_reduction
・さもなければ、distortion_reduction = max_distortion_reduction *
(lowpass_distortion - low_distortion_threshold) / (high_distortion_threshold
- low_distortion_threshold)
このアルゴリズムにより、low_distortion_threshold、high_distortion_threshold、およびmax_distortion_reductionはすべて、ユーザにより特定される。値の例は、low_distortion_threshold = 0.001、high_distortion_threshold = 0.01、およびmax_distortion_reduction = 0.3を含む。
ボックス260で、コンピューティングシステムは、求めた減速値および歪み低減値に基づいて、映像安定化の強度を低減する。そうするために、コンピューティングシステムは、以下のように、この例では減速値(speed reduction value)と歪み低減値(distortion reduction value)の最大値(maximum)として特定される低減値(reduction value)を算出する(ボックス262)。
・reduction = max(speed_reduction, distortion_reduction)
その他の例では、この低減値は、各値の一部を説明するこれら2つの値の組合わせであってもよい(たとえば、これらの値を合算または乗算し、可能であればその後0.5等の予め定められた値で乗算してもよい)。低減値は、境界値0および1またはその間の値であってもよく、コンピューティングシステムは低減値が1に近づくほど映像安定化の強度を減じてもよい。
・reduction = max(speed_reduction, distortion_reduction)
その他の例では、この低減値は、各値の一部を説明するこれら2つの値の組合わせであってもよい(たとえば、これらの値を合算または乗算し、可能であればその後0.5等の予め定められた値で乗算してもよい)。低減値は、境界値0および1またはその間の値であってもよく、コンピューティングシステムは低減値が1に近づくほど映像安定化の強度を減じてもよい。
次に、コンピューティングシステムは、補償変換行列を修正することにより、低減された補償変換行列を生成してもよい(ボックス264)。コンピューティングシステムはこれを、1から低減値(reduction)を減算したもので補償減算行列を乗算することにより、行なってもよい。言い換えると、低減値が1に非常に近い場合(画像安定化が大幅に低減されることを示す)、補償行列内の値は、ゼロに近い数で乗算されることになるので、大幅に減じられるであろう。次に、修正された補償変換行列内の数字を、低減値(reduction value)で乗算された単位行列(identity matrix)に加算する。等式の一例は次の通りである。
・H_reduced_compensation = Identity * reduction + H_compensation * (1 - reduction)
ボックス270で、コンピューティングシステムは、得られた映像安定化が出力フレームの無効領域(たとえばフレーム外の領域)を示すことがないように、補償を制限してもよい。あるバックグラウンドとして、画像安定化プロセスから得られた画像を補償は歪めるかもしれないので、この画像は実質的にその境界の外側の無効領域を表示する場合がある。これらの無効領域が確実に表示されないようにするために、コンピューティングシステムは、この画像をズームインして、無効領域を含み得る画像の外側を切取ってもよい。
・H_reduced_compensation = Identity * reduction + H_compensation * (1 - reduction)
ボックス270で、コンピューティングシステムは、得られた映像安定化が出力フレームの無効領域(たとえばフレーム外の領域)を示すことがないように、補償を制限してもよい。あるバックグラウンドとして、画像安定化プロセスから得られた画像を補償は歪めるかもしれないので、この画像は実質的にその境界の外側の無効領域を表示する場合がある。これらの無効領域が確実に表示されないようにするために、コンピューティングシステムは、この画像をズームインして、無効領域を含み得る画像の外側を切取ってもよい。
ボックス270のプロセスに戻ると、カメラが素早く大幅に移動した場合、安定化は、古い場所の表示に固定される可能性がある。なぜなら、素早い大きな移動はフィルタ処理で落とされる場合があり、そうすると、上記無効領域が安定化後のフレームの表示の中に導入される可能性がある。そのような場合、下記の制限プロセスは、映像が無効領域を表示しようとしている場合に表示されるフレームの領域の完全制御を映像安定化が実質的に停止することを保証できる。この、安定化がフレームの何らかの制御をあきらめる必要があるか否かに関する判断は、最初に出力画像のコーナーポイントを設定し、これらのコーナーポイントが予め指定されたトリミング領域の外側にあるか否か判断することにより、開始されてもよい。補償(compensation)およびズームの最大量は、トリミング比(cropping ratio)の2倍に定めてもよく、このトリミング比はユーザによって指定されてもよい(たとえば両側で15%または以下の等式で0.15)。
・max_compensation = cropping_ratio * 2
コンピューティングシステムは次に、H_reduced_compensation行列を使用することにより、GL座標における単位正方形の4つのコーナー(x01, y01) = (-1, -1)、(x02, y02) = (1, -1)、(x03, y03) = (-1,1)、(x04, y04) = (1,1)を、4つのコーナーポイント(x1, y1)、(x2, y2)、(x3, y3)、(x4, y4)に変換してもよい。(なお、映像フレームは単位正方形である必要はないが、単位正方形の寸法がGL座標の単位正方形にマッピングされる)。より具体的には、以下の式を用いて(x0i, y0i)を(xi, yi)に変換する。
・dzi * [xi, yi, 1]' = H_reduced_compensation * [x0i, y0i, 1]'
この例において、[x0i, y0i, 1]'は、[x0i, y0i, 1]ベクトルの転置行列である3×1ベクトルである。[xi, yi, 1]'は、[xi, yi, 1]ベクトルの転置行列である3×1ベクトルである。
・max_compensation = cropping_ratio * 2
コンピューティングシステムは次に、H_reduced_compensation行列を使用することにより、GL座標における単位正方形の4つのコーナー(x01, y01) = (-1, -1)、(x02, y02) = (1, -1)、(x03, y03) = (-1,1)、(x04, y04) = (1,1)を、4つのコーナーポイント(x1, y1)、(x2, y2)、(x3, y3)、(x4, y4)に変換してもよい。(なお、映像フレームは単位正方形である必要はないが、単位正方形の寸法がGL座標の単位正方形にマッピングされる)。より具体的には、以下の式を用いて(x0i, y0i)を(xi, yi)に変換する。
・dzi * [xi, yi, 1]' = H_reduced_compensation * [x0i, y0i, 1]'
この例において、[x0i, y0i, 1]'は、[x0i, y0i, 1]ベクトルの転置行列である3×1ベクトルである。[xi, yi, 1]'は、[xi, yi, 1]ベクトルの転置行列である3×1ベクトルである。
次に、コンピューティングシステムは、以下のようにして、変換された各映像フレームのコーナーから単位正方形のエッジまでの、各方向(左(left)、右(right)、上(top)および下(bottom))における最大(max)変位量(displacement)を特定することができる。
・max_left_displacement = 1 + max(x1, x3)
・max_right_displacement = 1 - min(x2, x4)
・max_top_displacement = 1 + max(y1, y2)
・max_bottom_displacement = 1 - min(y3, y4)
特定された変位量のうちのいずれかが最大補償量(上記のようにトリミング比の2倍であり、単位正方形のズームイン領域の表示領域内に無効領域があることを示す)を上回った場合、無効領域が表示されないように、フレームのコーナーポイントは同じ量だけ単位正方形のエッジからシフトされる。コーナーポイントをシフトするための式はしたがって次の通りである。
・max_left_displacement > max_compensationの場合、4つのコーナーポイントを左に4 max_left_displacement - max_compensationだけシフトし、
・max_right_displacement > max_compensationの場合、4つのコーナーポイントを右にmax_right_displacement - max_compensationだけシフトし、
・max_top_displacement > max_compensationの場合、4つのコーナーポイントを上にmax_top_displacement - max_compensationだけシフトし、
・max_bottom_displacement > max_compensationの場合、4つのコーナーポイントを下にmax_bottom_displacement - max_compensationだけシフトする。
コーナーポイントをシフトすることは、ディスプレイがトリミングされたとしても無効領域が示されていたことを明らかにすることである(ボックス272)。
・max_left_displacement = 1 + max(x1, x3)
・max_right_displacement = 1 - min(x2, x4)
・max_top_displacement = 1 + max(y1, y2)
・max_bottom_displacement = 1 - min(y3, y4)
特定された変位量のうちのいずれかが最大補償量(上記のようにトリミング比の2倍であり、単位正方形のズームイン領域の表示領域内に無効領域があることを示す)を上回った場合、無効領域が表示されないように、フレームのコーナーポイントは同じ量だけ単位正方形のエッジからシフトされる。コーナーポイントをシフトするための式はしたがって次の通りである。
・max_left_displacement > max_compensationの場合、4つのコーナーポイントを左に4 max_left_displacement - max_compensationだけシフトし、
・max_right_displacement > max_compensationの場合、4つのコーナーポイントを右にmax_right_displacement - max_compensationだけシフトし、
・max_top_displacement > max_compensationの場合、4つのコーナーポイントを上にmax_top_displacement - max_compensationだけシフトし、
・max_bottom_displacement > max_compensationの場合、4つのコーナーポイントを下にmax_bottom_displacement - max_compensationだけシフトする。
コーナーポイントをシフトすることは、ディスプレイがトリミングされたとしても無効領域が示されていたことを明らかにすることである(ボックス272)。
上記すべてのシフト演算後、新たな4つのコーナーポイントは、(x1', y1')、(x2', y2')、(x3', y3')、(x4', y4')と表記することができる。次に、コンピューティングシステムは、制限された補償変換行列H_constrained_compensationを算出する。この行列は、以下のように、GL座標の単位正方形の4つのコーナー(x01, y01) = (-1, -1)、(x02, y02) = (1, -1)、(x03, y03) = (-1,1)、(x04, y04) = (1,1)を、4つの制限されたコーナーポイント(x1', y1')、(x2', y2')、(x3', y3')、(x4', y4')にマッピングする。
・zi' * [xi', yi', 1]' = H_constrained_compensation * [x0i, y0i, 1]'
この例において、[x0i, y0i, 1]'は、[x0i, y0i, 1]ベクトルの転置行列である3×1ベクトルである。[xi', yi', 1]'は、[xi', yi', 1]ベクトルの転置行列である3×1ベクトルである。zi'はスケールファクタである。4対のポイント[x0i, y0i, 1]'および[xi', yi', 1]'を想定した場合の、行列を推定するためのアルゴリズムの例は、ftp://vista.eng.tau.ac.il/dropbox/aviad/Hartley,%20Zisserman%20-%20Multiple%20View%20Geometry%20in%20Computer%20Vision.pdfから入手できるコンピュータビジョンの書籍「Hartley, R., Zisserman, A.: Multiple View Geometry in Computer Vision. Cambridge University Press (2000)」のアルゴリズム4.1(91頁)に記載されている。
・zi' * [xi', yi', 1]' = H_constrained_compensation * [x0i, y0i, 1]'
この例において、[x0i, y0i, 1]'は、[x0i, y0i, 1]ベクトルの転置行列である3×1ベクトルである。[xi', yi', 1]'は、[xi', yi', 1]ベクトルの転置行列である3×1ベクトルである。zi'はスケールファクタである。4対のポイント[x0i, y0i, 1]'および[xi', yi', 1]'を想定した場合の、行列を推定するためのアルゴリズムの例は、ftp://vista.eng.tau.ac.il/dropbox/aviad/Hartley,%20Zisserman%20-%20Multiple%20View%20Geometry%20in%20Computer%20Vision.pdfから入手できるコンピュータビジョンの書籍「Hartley, R., Zisserman, A.: Multiple View Geometry in Computer Vision. Cambridge University Press (2000)」のアルゴリズム4.1(91頁)に記載されている。
次に、H_constrained_compensationを、H_previous_compensationとして保存する。これは、ボックス230に関して先に述べたように、次のフレームを安定化するための計算で使用することができる。
ボックス280で、コンピューティングシステムは、安定化された画像をズームして境界をトリミングするように、制限された補償行列を修正する。いくつかの例において、コンピューティングシステムは先ず以下のようにズームファクタ(zoom factor)を特定する。
・zoom_factor = 1 / (1 - 2 * cropping_ratio)
そうするときに、コンピューティングシステムは、トリミング比(crop ratio)を(たとえば15%値0.15を2倍にして0.3にすることにより)2倍にし、得られた値を1から減算し(たとえばその結果0.7を得る)、次にその結果で1を除算することによりズームファクタを得る(たとえば、1÷0.7=ズームファクタ1.42)。次に、コンピューティングシステムは、以下のように、一定量ディスプレイをズームインするために、制限補償行列の特定の特徴を分割することができる。
・H_constrained_compensation[3,1]=H_constrained_compensation[3,1]/zoom_factor
・H_constrained_compensation[3,2]=H_constrained_compensation[3,2]/zoom_factor
・H_constrained_compensation[3,3]=H_constrained_compensation[3,3]/zoom_factor
ボックス290で、コンピューティングシステムは、トリミングされ安定化された現在のフレームを生成するために、修正された制限補償行列を現在のフレームに適用する。入力フレームに対して制限補償行列(H_constrained_compensation)を適用して出力画像を生成する方法の1例は、次のように説明できる。
・z' * [x', y', 1]' = H_constrained_compensation * [x, y, 1]'
・[x, y, 1]'は、入力フレームにおける座標を表わす3×1ベクトル
・[x', y', 1]'は、出力フレームにおける座標を表わす3×1ベクトル
・z'はスケールファクタ
・H_constrained_compensationは、以下の9要素を含む3×3行列:
・zoom_factor = 1 / (1 - 2 * cropping_ratio)
そうするときに、コンピューティングシステムは、トリミング比(crop ratio)を(たとえば15%値0.15を2倍にして0.3にすることにより)2倍にし、得られた値を1から減算し(たとえばその結果0.7を得る)、次にその結果で1を除算することによりズームファクタを得る(たとえば、1÷0.7=ズームファクタ1.42)。次に、コンピューティングシステムは、以下のように、一定量ディスプレイをズームインするために、制限補償行列の特定の特徴を分割することができる。
・H_constrained_compensation[3,1]=H_constrained_compensation[3,1]/zoom_factor
・H_constrained_compensation[3,2]=H_constrained_compensation[3,2]/zoom_factor
・H_constrained_compensation[3,3]=H_constrained_compensation[3,3]/zoom_factor
ボックス290で、コンピューティングシステムは、トリミングされ安定化された現在のフレームを生成するために、修正された制限補償行列を現在のフレームに適用する。入力フレームに対して制限補償行列(H_constrained_compensation)を適用して出力画像を生成する方法の1例は、次のように説明できる。
・z' * [x', y', 1]' = H_constrained_compensation * [x, y, 1]'
・[x, y, 1]'は、入力フレームにおける座標を表わす3×1ベクトル
・[x', y', 1]'は、出力フレームにおける座標を表わす3×1ベクトル
・z'はスケールファクタ
・H_constrained_compensationは、以下の9要素を含む3×3行列:
次に、本明細書でボックス210〜290について記載されているプロセスを、次のフレームに対して繰返してもよく、そのときに、現在のフレームの処理の値のうちのいくつかを次のフレームに使用する。
さまざまな実装例において、別の動作「に応じて」または別の動作の「結果として」実行される動作(たとえば決定または特定)は、先行する動作が不成功の場合(たとえば決定がなされなかった場合)は、実行されない。「自動的に」実行される動作は、ユーザの介入(たとえば介入するユーザ入力)なしで実行される動作である。本明細書において条件の表現を用いて記載されている特徴は、任意である実装例を説明している場合がある。いくつかの例において、第1装置から第2装置への「送信」は、第1装置がデータを第2送信による受信のためにネットワークに置くことを含むが、第2装置が当該データを受信することを含まない場合がある。逆に、第1装置からの「受信」は、ネットワークからデータを受信することを含み得るが、第1装置がデータを送信することは含まない場合がある。
コンピューティングシステムが「決定する」ことは、コンピューティングシステムが、別のデバイスに対し、その決定を行ない結果を当該コンピューティングシステムに提供することを要求することを、含み得る。加えて、コンピューティングシステムが「表示する」または「提示する」ことは、コンピューティングシステムが、参照された情報を別のデバイスが表示または提示するためのデータを送信することを含み得る。
さまざまな実装例において、行列に対して実行されると記載されている演算は、当該行列に対して実行される演算、または、本開示に記載されている動作によって修正された当該行列に対して実行される演算、またはその均等物を意味する。
図3は、本明細書に記載のシステムおよび方法を実現するために、クライアントまたはサーバまたは複数のサーバとして使用し得る、コンピューティングデバイス300、350のブロック図である。コンピューティングデバイス300は、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、およびその他適切なコンピュータ等の、さまざまな形態のデジタルコンピュータを代表することを意図している。コンピューティングデバイス350は、携帯情報端末、携帯電話、スマートフォン、およびその他同様のコンピューティングデバイス等の、さまざまな形態のモバイルデバイスを代表することを意図している。本明細書に示される構成要素、それらの接続および関係、ならびに機能は、専ら例示を意図しているのであって、本明細書において記載されているおよび/またはクレームされている実装例を限定することを意図しているのではない。
コンピューティングデバイス300は、プロセッサ302と、メモリ304と、記憶装置306と、メモリ304および高速拡張ポート310に接続している高速インターフェイス308と、低速バス314および記憶装置306に接続している低速インターフェイス312とを含む。これらのコンポーネント302、304、306、308、310、および312の各々は、さまざまなバスを使用して相互接続されており、共通のマザーボード上にまたは他の態様で適宜搭載されてもよい。プロセッサ302は、コンピューティングデバイス300内で実行される命令を処理可能であり、これらの命令は、GUIのためのグラフィック情報を、高速インターフェイス308に結合されたディスプレイ316等の外部入出力デバイス上に表示するために、メモリ304内または記憶装置306上に格納された命令を含む。他の実装例では、複数のプロセッサおよび/または複数のバスが、複数のメモリおよび複数のタイプのメモリとともに適宜使用されてもよい。加えて、複数のコンピューティングデバイス300が接続されてもよく、各デバイスは(たとえば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして)必要な動作の一部を提供する。
メモリ304は、情報をコンピューティングデバイス300内に格納する。一実装例では、メモリ304は1つまたは複数の揮発性メモリユニットである。別の実装例では、メモリ304は1つまたは複数の不揮発性メモリユニットである。メモリ304はまた、磁気ディスクまたは光ディスクといった別の形態のコンピュータ読取可能媒体であってもよい。
記憶装置306は、コンピューティングデバイス300のための大容量記憶を提供可能である。一実装例では、記憶装置306は、フロッピー(登録商標)ディスクデバイス、ハードディスクデバイス、光ディスクデバイス、またはテープデバイス、フラッシュメモリもしくは他の同様のソリッドステートメモリデバイス、または、ストレージエリアネットワークもしくは他の構成におけるデバイスを含むデバイスのアレイといった、コンピュータ読取可能媒体であってもよく、または当該コンピュータ読取可能媒体を含んでいてもよい。コンピュータプログラムプロダクトが情報担体において有形に具体化され得る。コンピュータプログラムプロダクトはまた、実行されると上述のような1つ以上の方法を行なう命令を含んでいてもよい。情報担体は、メモリ304、記憶装置306、またはプロセッサ302上のメモリといった、コンピュータ読取可能媒体または機械読取可能媒体である。
高速コントローラ308はコンピューティングデバイス300のための帯域幅集約的な動作を管理し、一方、低速コントローラ312はより低い帯域幅集約的な動作を管理する。機能のそのような割当ては例示にすぎない。一実装例では、高速コントローラ308は、メモリ304、ディスプレイ316に(たとえば、グラフィックスプロセッサまたはアクセラレータを介して)、および、さまざまな拡張カード(図示せず)を受付け得る高速拡張ポート310に結合される。この実装例では、低速コントローラ312は、記憶装置306および低速拡張ポート314に結合される。さまざまな通信ポート(たとえば、USB、Bluetooth(登録商標)、イーサネット(登録商標)、無線イーサネット)を含み得る低速拡張ポートは、キーボード、ポインティングデバイス、スキャナ等の1つ以上の入出力デバイスに、または、スイッチもしくはルータ等のネットワーキングデバイスに、たとえばネットワークアダプタを介して結合されてもよい。
コンピューティングデバイス300は、図に示すように多くの異なる形態で実現されてもよい。たとえばそれは、標準サーバ320として、またはそのようなサーバのグループで複数回実現されてもよい。それはまた、ラックサーバシステム324の一部として実現されてもよい。加えて、それは、ラップトップコンピュータ322等のパーソナルコンピュータにおいて実現されてもよい。これに代えて、コンピューティングデバイス300からのコンポーネントは、デバイス350等のモバイルデバイス(図示せず)における他のコンポーネントと組合されてもよい。そのようなデバイスの各々は、コンピューティングデバイス300、350のうちの1つ以上を含んでいてもよく、システム全体が、互いに通信する複数のコンピューティングデバイス300、350で構成されてもよい。
コンピューティングデバイス350は、数あるコンポーネントの中でも特に、プロセッサ352と、メモリ364と、ディスプレイ354等の入出力デバイスと、通信インターフェイス366と、トランシーバ368とを含む。デバイス350にはまた、追加の記憶容量を提供するために、マイクロドライブまたは他のデバイス等の記憶装置が設けられてもよい。コンポーネント350、352、364、354、366、および368の各々は、さまざまなバスを使用して相互接続されており、当該コンポーネントのうちのいくつかは、共通のマザーボード上にまたは他の態様で適宜搭載されてもよい。
プロセッサ352は、メモリ364に格納された命令を含む、コンピューティングデバイス350内の命令を実行可能である。プロセッサは、別個の複数のアナログおよびデジタルプロセッサを含むチップのチップセットとして実現されてもよい。加えて、プロセッサは多数のアーキテクチャのうちのいずれかを用いて実現されてもよい。たとえば、プロセッサは、CISC(Complex Instruction Set Computer:複合命令セットコンピュータ)プロセッサ、RISC(Reduced Instruction Set Computer:縮小命令セットコンピュータ)プロセッサ、またはMISC(Minimal Instruction Set Computer:最小命令セットコンピュータ)プロセッサであってもよい。プロセッサは、たとえば、ユーザインターフェイス、デバイス350が実行するアプリケーション、およびデバイス350による無線通信の制御といった、デバイス350の他のコンポーネント同士の連携を提供してもよい。
プロセッサ352は、ディスプレイ354に結合された制御インターフェイス358およびディスプレイインターフェイス356を介してユーザと通信してもよい。ディスプレイ354は、たとえば、TFT LCD(Thin-Film-Transistor Liquid Crystal Display:薄膜トランジスタ液晶ディスプレイ)、またはOLED(Organic Light Emitting Diode:有機発光ダイオード)ディスプレイ、または他の適切なディスプレイ技術であってもよい。ディスプレイインターフェイス356は、ディスプレイ354を駆動してグラフィカル情報および他の情報をユーザに提示するための適切な回路を含んでいてもよい。制御インターフェイス358は、ユーザからコマンドを受信し、それらをプロセッサ352に送出するために変換してもよい。加えて、デバイス350と他のデバイスとの近接エリア通信を可能にするために、外部インターフェイス362がプロセッサ352と通信した状態で設けられてもよい。外部インターフェイス362は、たとえば、ある実装例では有線通信を提供し、他の実装例では無線通信を提供してもよく、複数のインターフェイスが使用されてもよい。
メモリ364は、情報をコンピューティングデバイス350内に格納する。メモリ364は、1つもしくは複数のコンピュータ読取可能媒体、1つもしくは複数の揮発性メモリユニット、または、1つもしくは複数の不揮発性メモリユニットのうちの1つ以上として実現されてもよい。拡張メモリ374が設けられて拡張インターフェイス372を介してデバイス350に接続されてもよく、拡張インターフェイス372は、たとえばSIMM(Single In Line Memory Module)カードインターフェイスを含んでいてもよい。そのような拡張メモリ374は、デバイス350に余分の格納スペースを提供してもよく、または、デバイス350のためのアプリケーションまたは他の情報も格納してもよい。具体的には、拡張メモリ374は、上述のプロセスを実行または補足するための命令を含んでいてもよく、安全な情報も含んでいてもよい。このため、たとえば、拡張メモリ374はデバイス350のためのセキュリティモジュールとして設けられてもよく、デバイス350の安全な使用を許可する命令でプログラミングされてもよい。加えて、ハッキング不可能な態様でSIMMカード上に識別情報を乗せるといったように、安全なアプリケーションが追加情報とともにSIMMカードを介して提供されてもよい。
メモリはたとえば、以下に説明されるようなフラッシュメモリおよび/またはNVRAMメモリを含んでいてもよい。一実装例では、コンピュータプログラムプロダクトが情報担体において有形に具体化される。コンピュータプログラムプロダクトは、実行されると上述のような1つ以上の方法を実行する命令を含む。情報担体は、メモリ364、拡張メモリ374、またはプロセッサ352上のメモリといった、コンピュータ読取可能媒体または機械読取可能媒体であり、たとえばトランシーバ368または外部インターフェイス362を通して受信されてもよい。
デバイス350は、必要に応じてデジタル信号処理回路を含み得る通信インターフェイス366を介して無線通信してもよい。通信インターフェイス366は、とりわけ、GSM(登録商標)音声通話、SMS、EMS、またはMMSメッセージング、CDMA、TDMA、PDC、WCDMA(登録商標)、CDMA2000、またはGPRSといった、さまざまなモードまたはプロトコル下での通信を提供してもよい。そのような通信は、たとえば無線周波数トランシーバ368を介して生じてもよい。加えて、Bluetooth、Wi−Fi(登録商標)、または他のそのようなトランシーバ(図示せず)等を使用して、短距離通信が生じてもよい。加えて、GPS(Global Positioning System:全地球測位システム)レシーバモジュール370が、追加のナビゲーション関連および位置関連無線データをデバイス350に提供してもよく、当該データは、デバイス350上で実行されるアプリケーションによって適宜使用されてもよい。
デバイス350はまた、ユーザから口頭情報を受信してそれを使用可能なデジタル情報に変換し得る音声コーデック360を使用して、音声通信してもよい。音声コーデック360はまた、たとえばデバイス350のハンドセットにおいて、スピーカを介すなどして、ユーザに聞こえる音を生成してもよい。そのような音は、音声電話通話の音を含んでいてもよく、録音された音(たとえば、音声メッセージ、音楽ファイル等)を含んでいてもよく、デバイス350上で動作するアプリケーションが生成する音も含んでいてもよい。
コンピューティングデバイス350は、図に示すように多くの異なる形態で実現し得る。たとえばそれは、携帯電話380として実現されてもよい。それはまた、スマートフォン382、携帯情報端末、または他の同様のモバイルデバイスの一部として実現されてもよい。
加えて、コンピューティングデバイス300または350は、ユニバーサルシリアルバス(Universal Serial Bus:USB)フラッシュドライブを含み得る。USBフラッシュドライブは、オペレーティングシステムおよびその他のアプリケーションを格納し得る。USBフラッシュドライブは、別のコンピューティングデバイスのUSBポートに挿入し得るUSBコネクタまたは無線送信機等の入出力コンポーネントを含み得る。
本明細書に記載のシステムおよび手法のさまざまな実装例は、デジタル電子回路、集積回路、特別に設計されたASIC(application specific integrated circuit:特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組合わせで実現することができる。これらのさまざまな実装例は、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステム上で実行可能および/または解釈可能な1つ以上のコンピュータプログラムにおける実装例を含んでいてもよく、当該プロセッサは専用であっても汎用であってもよく、ストレージシステム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスからデータおよび命令を受信するとともに、これらにデータおよび命令を送信するように結合されてもよい。
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーションまたはコードとしても知られている)は、プログラマブルプロセッサのための機械命令を含み、高レベル手続き型および/またはオブジェクト指向プログラミング言語で、および/またはアセンブリ/機械言語で実現することができる。本明細書で使用する、「機械読取可能媒体」、「コンピュータ読取可能媒体」という用語は、機械命令および/またはデータをプログラマブルプロセッサに提供するために使用される任意のコンピュータプログラムプロダクト、装置および/またはデバイス(たとえば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(Programmable Logic Device:PLD))を指し、機械命令を機械読取可能信号として受信する機械読取可能媒体を含む。「機械読取可能信号」という用語は、機械命令および/またはデータをプログラマブルプロセッサに提供するために使用される任意の信号を指す。
ユーザとのインタラクションを提供するために、本明細書に記載のシステムおよび手法は、情報をユーザに表示するためのディスプレイデバイス(たとえば、CRT(cathode ray tube:陰極線管)またはLCD(liquid crystal display:液晶ディスプレイ)モニタ)と、ユーザが入力をコンピュータに提供できるようにするキーボードおよびポインティングデバイス(たとえば、マウスまたはトラックボール)とを有するコンピュータ上で実現することができる。他の種類のデバイスを使用してユーザとの対話を提供することもでき、たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック(たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバック)であってもよく、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形態で受信されてもよい。
本明細書に記載のシステムおよび手法は、(たとえばデータサーバとしての)バックエンドコンポーネントを含む、またはミドルウェアコンポーネント(たとえばアプリケーションサーバ)を含む、またはフロントエンドコンポーネント(たとえば、ユーザが本明細書に記載のシステムおよび手法の実装例とやりとりできるようにするグラフィカルユーザインターフェイスもしくはウェブブラウザを有するクライアントコンピュータ)を含む、もしくは、そのようなバックエンド、ミドルウェア、またはフロントエンドコンポーネントの任意の組合わせを含む、コンピューティングシステムにおいて実現することができる。システムのコンポーネントは、任意の形態または媒体のデジタルデータ通信(たとえば通信ネットワーク)によって相互接続されてもよい。通信ネットワークの例は、ローカルエリアネットワーク(local area network:LAN)、ワイドエリアネットワーク(wide area network:WAN)、ピアツーピアネットワーク(アドホックまたは静的メンバを有する)、グリッドコンピューティングインフラストラクチャ、およびインターネットを含む。
コンピューティングシステムは、クライアントおよびサーバを含み得る。クライアントおよびサーバは一般に互いにリモートであり、典型的には通信ネットワークを介してやりとりする。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行されて互いにクライアント−サーバ関係を有するコンピュータプログラムによって生じる。
ここまでいくつかの実装例を詳細に説明してきたが、その他の修正形態が可能である。また、本明細書に記載のシステムおよび方法を実施するためのその他の機構を使用することもできる。加えて、図面に示されている論理フローは、所望の結果を得るために、示されている通りの順序または一連の順序である必要はない。記載されているフローにその他のステップを設けるまたは記載されているフローからいくつかのステップを削除する場合もあり、記載されているシステムにその他のコンポーネントを追加するまたは記載されているシステムからコンポーネントを削除する場合もある。したがって、その他の実装例は、以下の特許請求の範囲に含まれる。
Claims (18)
- コンピュータにより実現される方法であって、
コンピューティングシステムが、カメラによって取込まれた映像の第1フレームおよび第2フレームを受信するステップと、
前記コンピューティングシステムが、前記映像の前記第1フレームおよび前記第2フレームを用いて、前記映像によって取込まれたシーンに対する、前記第1フレームが取込まれた時点から前記第2フレームが取込まれた時点までの前記カメラの移動を示す数学的変換を特定するステップと、
前記コンピューティングシステムが、最近始まった移動に対する前記数学的変換の代表性が低くなるように、前記数学的変換を修正することにより、修正された数学的変換を生成するステップと、
前記コンピューティングシステムが、前記数学的変換と前記修正された数学的変換とを用いて、前記第2フレームに適用されて前記第2フレームを安定化することができる第2の数学的変換を生成するステップと、
前記コンピューティングシステムが、前記第2の数学的変換を前記第2フレームに適用した結果得られる、安定化された前記第2フレームに存在する、予測される歪みを、
(i)前記第2の数学的変換を前記第2フレームに適用した結果生じる水平方向の歪み量と、
(ii)前記第2の数学的変換を前記第2フレームに適用した結果生じる鉛直方向の歪み量との差に基づいて、
特定するステップと、
前記コンピューティングシステムが、前記第2フレームに先行する前記映像の複数のフレームにおける歪みから算出された歪みの許容可能な変化を、前記予測される歪みが超過する程度に基づいて、前記第2の数学的変換を前記第2フレームに適用した結果得られる安定化効果の低減量を決定するステップと、
前記コンピューティングシステムが、前記第2の数学的変換を前記第2フレームに適用することにより、前記安定化された前記第2フレームを生成するステップとを含み、前記第2の数学的変換を前記第2フレームに適用することによる安定化効果は、前記決定した安定化効果の低減量に基づいて低減されている、コンピュータにより実現される方法。 - 前記第2フレームは、前記映像の前記第1フレームの直後の前記映像のフレームである、請求項1に記載のコンピュータにより実現される方法。
- 前記カメラの移動を示す前記数学的変換はホモグラフィ変換行列を含む、請求項1に記載のコンピュータにより実現される方法。
- 前記数学的変換を修正するステップは、ローパスフィルタを前記ホモグラフィ変換行列に適用するステップを含む、請求項3に記載のコンピュータにより実現される方法。
- 前記予測される歪みは、前記第2の数学的変換における水平ズーム値と前記第2の数学的変換における鉛直ズーム値との差に基づく、請求項3に記載のコンピュータにより実現される方法。
- 前記数学的変換を修正するステップは、前記数学的変換を修正して、前記修正された数学的変換が、前記数学的変換よりも、長期にわたって発生した移動に対する代表性が高くなるようにするステップを含む、請求項1に記載のコンピュータにより実現される方法。
- 前記第2の数学的変換を前記第2フレームに適用した結果得られる安定化効果の低減量を決定するステップは、前記第2フレームに先行する前記映像の複数のフレーム間の前記カメラの移動の速度に基づいて算出された、前記カメラの移動速度の許容可能な変化を超える、前記第1フレームから前記第2フレームまでの前記カメラの決定した移動速度に、さらに基づく、請求項1に記載のコンピュータにより実現される方法。
- 前記安定化された前記第2フレームを生成するステップは、前記第2の数学的変換を前記第2フレームに適用することによって生成された前記第2フレームのバージョンをズームインするステップを含む、請求項1に記載のコンピュータにより実現される方法。
- 前記第2フレームの前記バージョンのズームイン領域を、水平方向または鉛直方向にシフトすることにより、前記第2フレームの前記ズームイン領域が無効領域を提示しないようにするステップをさらに含む、請求項8に記載のコンピュータにより実現される方法。
- 1つ以上のプロセッサによって実行されると動作を実行させる命令を含む1つ以上の非一時的なコンピュータ読取可能装置であって、前記動作は、
コンピューティングシステムが、カメラによって取込まれた映像の第1フレームおよび第2フレームを受信するステップと、
前記コンピューティングシステムが、前記映像の前記第1フレームおよび前記第2フレームを用いて、前記映像によって取込まれたシーンに対する、前記第1フレームが取込まれた時点から前記第2フレームが取込まれた時点までの前記カメラの移動を示す数学的変換を特定するステップと、
前記コンピューティングシステムが、最近始まった移動に対する前記数学的変換の代表性が低くなるように、前記数学的変換を修正することにより、修正された数学的変換を生成するステップと、
前記コンピューティングシステムが、前記数学的変換と前記修正された数学的変換とを用いて、前記第2フレームに適用されて前記第2フレームを安定化することができる第2の数学的変換を生成するステップと、
前記コンピューティングシステムが、前記第2の数学的変換を前記第2フレームに適用した結果得られる、安定化された前記第2フレームに存在する、予測される歪みを、
(i)前記第2の数学的変換を前記第2フレームに適用した結果生じる水平方向の歪み量と、
(ii)前記第2の数学的変換を前記第2フレームに適用した結果生じる鉛直方向の歪み量との差に基づいて、
特定するステップと、
前記コンピューティングシステムが、前記第2フレームに先行する前記映像の複数のフレームにおける歪みから算出された歪みの許容可能な変化を、前記予測される歪みが超過する程度に基づいて、前記第2の数学的変換を前記第2フレームに適用した結果得られる安定化効果の低減量を決定するステップと、
前記コンピューティングシステムが、前記第2の数学的変換を前記第2フレームに適用することにより、前記安定化された前記第2フレームを生成するステップとを含み、前記第2の数学的変換を前記第2フレームに適用することによる安定化効果は、前記決定した安定化効果の低減量に基づいて低減されている、1つ以上の非一時的なコンピュータ読取可能装置。 - 前記第2フレームは、前記映像の前記第1フレームの直後の前記映像のフレームである、請求項10に記載の1つ以上の非一時的なコンピュータ読取可能装置。
- 前記カメラの移動を示す前記数学的変換はホモグラフィ変換行列を含む、請求項10に記載の1つ以上の非一時的なコンピュータ読取可能装置。
- 前記数学的変換を修正するステップは、ローパスフィルタを前記ホモグラフィ変換行列に適用するステップを含む、請求項12に記載の1つ以上の非一時的なコンピュータ読取可能装置。
- 前記予測される歪みは、前記第2の数学的変換における水平ズーム値と前記第2の数学的変換における鉛直ズーム値との差に基づく、請求項12に記載の1つ以上の非一時的なコンピュータ読取可能装置。
- 前記数学的変換を修正するステップは、前記数学的変換を修正して、前記修正された数学的変換が、前記数学的変換よりも、長期にわたって発生した移動に対する代表性が高くなるようにするステップを含む、請求項10に記載の1つ以上の非一時的なコンピュータ読取可能装置。
- 前記第2の数学的変換を前記第2フレームに適用した結果得られる安定化効果の低減量を決定するステップは、前記第2フレームに先行する前記映像の複数のフレーム間の前記カメラの移動の速度に基づいて算出された、前記カメラの移動速度の許容可能な変化を超える、前記第1フレームから前記第2フレームまでの前記カメラの決定した移動速度に、さらに基づく、請求項10に記載の1つ以上の非一時的なコンピュータ読取可能装置。
- 前記安定化された前記第2フレームを生成するステップは、前記第2の数学的変換を前記第2フレームに適用することによって生成された前記第2フレームのバージョンをズームインするステップを含む、請求項10に記載の1つ以上の非一時的なコンピュータ読取可能装置。
- 前記動作は、前記第2フレームの前記バージョンのズームイン領域を、水平方向または鉛直方向にシフトすることにより、前記第2フレームの前記ズームイン領域が無効領域を提示しないようにするステップをさらに含む、請求項17に記載の1つ以上の非一時的なコンピュータ読取可能装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/883,515 US9967461B2 (en) | 2015-10-14 | 2015-10-14 | Stabilizing video using transformation matrices |
US14/883,515 | 2015-10-14 | ||
PCT/US2016/053252 WO2017065952A1 (en) | 2015-10-14 | 2016-09-23 | Stabilizing video |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019131289A Division JP6843192B2 (ja) | 2015-10-14 | 2019-07-16 | 映像安定化 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019502275A true JP2019502275A (ja) | 2019-01-24 |
JP6559323B2 JP6559323B2 (ja) | 2019-08-14 |
Family
ID=57124128
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018501254A Active JP6559323B2 (ja) | 2015-10-14 | 2016-09-23 | 映像安定化 |
JP2019131289A Active JP6843192B2 (ja) | 2015-10-14 | 2019-07-16 | 映像安定化 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019131289A Active JP6843192B2 (ja) | 2015-10-14 | 2019-07-16 | 映像安定化 |
Country Status (13)
Country | Link |
---|---|
US (4) | US9967461B2 (ja) |
EP (1) | EP3362983B1 (ja) |
JP (2) | JP6559323B2 (ja) |
KR (1) | KR102000265B1 (ja) |
CN (2) | CN113344816A (ja) |
AU (2) | AU2016338497B2 (ja) |
CA (1) | CA2992600C (ja) |
DE (1) | DE112016004730T5 (ja) |
GB (1) | GB2555991B (ja) |
MX (2) | MX2018000636A (ja) |
RU (1) | RU2685031C1 (ja) |
WO (1) | WO2017065952A1 (ja) |
ZA (1) | ZA201708648B (ja) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9967461B2 (en) | 2015-10-14 | 2018-05-08 | Google Inc. | Stabilizing video using transformation matrices |
US20170358101A1 (en) * | 2016-06-10 | 2017-12-14 | Apple Inc. | Optical Image Stabilization for Depth Sensing |
KR102374404B1 (ko) * | 2017-07-25 | 2022-03-15 | 삼성전자주식회사 | 콘텐트를 제공하기 위한 디바이스 및 방법 |
US10462370B2 (en) | 2017-10-03 | 2019-10-29 | Google Llc | Video stabilization |
US10171738B1 (en) | 2018-05-04 | 2019-01-01 | Google Llc | Stabilizing video to reduce camera and face movement |
US10929982B2 (en) * | 2019-01-25 | 2021-02-23 | Google Llc | Face pose correction based on depth information |
CN109905565B (zh) * | 2019-03-06 | 2021-04-27 | 南京理工大学 | 基于运动模式分离的视频去抖动方法 |
CN112422805B (zh) * | 2019-08-22 | 2022-02-18 | 华为技术有限公司 | 一种拍摄方法及电子设备 |
EP3979617A4 (en) * | 2019-08-26 | 2022-06-15 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | METHOD AND DEVICE FOR ANTI-BLUR RECORDINGS, TERMINAL DEVICE AND STORAGE MEDIA |
US11190689B1 (en) | 2020-07-29 | 2021-11-30 | Google Llc | Multi-camera video stabilization |
CN112367460B (zh) * | 2020-10-23 | 2022-10-11 | 上海掌门科技有限公司 | 一种视频防抖方法与设备 |
CN112333385B (zh) * | 2020-10-28 | 2022-02-22 | 维沃移动通信有限公司 | 电子防抖控制方法及装置 |
US11228702B1 (en) * | 2021-04-23 | 2022-01-18 | Gopro, Inc. | Stabilization of face in video |
CN116797497B (zh) * | 2023-08-24 | 2023-11-14 | 摩尔线程智能科技(北京)有限责任公司 | 一种图像处理方法、装置、设备及存储介质 |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4637571A (en) | 1985-09-03 | 1987-01-20 | The United States Of America As Represented By The Secretary Of The Army | Electronic image stabilization |
GB2220319B (en) | 1988-07-01 | 1992-11-04 | Plessey Co Plc | Improvements in or relating to image stabilisation |
US6239811B1 (en) * | 1997-11-07 | 2001-05-29 | Raymond John Westwater | Method and apparatus to measure relative visibility of time-varying data in transform space |
US20020145610A1 (en) * | 1999-07-16 | 2002-10-10 | Steve Barilovits | Video processing engine overlay filter scaler |
US20030038927A1 (en) | 2001-08-27 | 2003-02-27 | Alden Ray M. | Image projector with integrated image stabilization for handheld devices and portable hardware |
WO2003107090A1 (en) * | 2002-06-12 | 2003-12-24 | Silicon Optix, Inc. | Automatic keystone correction system and method |
JP4566591B2 (ja) * | 2004-03-19 | 2010-10-20 | キヤノン株式会社 | 画像変形推定方法および画像変形推定装置 |
JP2006074678A (ja) | 2004-09-06 | 2006-03-16 | Mitsubishi Electric Corp | カメラ付き携帯機器 |
US7649549B2 (en) * | 2004-09-27 | 2010-01-19 | Texas Instruments Incorporated | Motion stabilization in video frames using motion vectors and reliability blocks |
CN101189870A (zh) * | 2005-04-28 | 2008-05-28 | 德州仪器公司 | 运动稳定 |
JP4500875B2 (ja) * | 2005-07-12 | 2010-07-14 | エヌエックスピー ビー ヴィ | モーションブラー効果を除去する方法および装置 |
JP4340915B2 (ja) * | 2006-02-01 | 2009-10-07 | ソニー株式会社 | 撮像画像信号の歪み補正方法、撮像画像信号の歪み補正装置、撮像方法および撮像装置 |
US7697725B2 (en) | 2006-04-03 | 2010-04-13 | Sri International | Method and apparatus for autonomous object tracking |
US7944482B2 (en) * | 2006-07-28 | 2011-05-17 | Sanyo Electric Co., Ltd. | Pixel information readout method and image pickup apparatus |
JP4702233B2 (ja) * | 2006-09-11 | 2011-06-15 | ソニー株式会社 | 画像データ処理装置および画像データ処理方法 |
US20080112630A1 (en) * | 2006-11-09 | 2008-05-15 | Oscar Nestares | Digital video stabilization based on robust dominant motion estimation |
JP2009077383A (ja) * | 2007-08-27 | 2009-04-09 | Sony Corp | 画像処理装置および方法、並びにプログラム |
US8325280B2 (en) * | 2009-08-06 | 2012-12-04 | Freescale Semiconductor, Inc. | Dynamic compensation of display backlight by adaptively adjusting a scaling factor based on motion |
US8599238B2 (en) * | 2009-10-16 | 2013-12-03 | Apple Inc. | Facial pose improvement with perspective distortion correction |
US9131155B1 (en) * | 2010-04-07 | 2015-09-08 | Qualcomm Technologies, Inc. | Digital video stabilization for multi-view systems |
RU2587425C2 (ru) * | 2010-09-14 | 2016-06-20 | Дайнэмик Диджитл Депс Рисерч Пти Лтд | Способ получения карты глубины изображения повышенного качества |
US8493459B2 (en) * | 2011-09-15 | 2013-07-23 | DigitalOptics Corporation Europe Limited | Registration of distorted images |
TWI469062B (zh) | 2011-11-11 | 2015-01-11 | Ind Tech Res Inst | 影像穩定方法及影像穩定裝置 |
JP5997645B2 (ja) | 2013-03-26 | 2016-09-28 | キヤノン株式会社 | 画像処理装置及び方法、及び撮像装置 |
US9967461B2 (en) | 2015-10-14 | 2018-05-08 | Google Inc. | Stabilizing video using transformation matrices |
-
2015
- 2015-10-14 US US14/883,515 patent/US9967461B2/en active Active
-
2016
- 2016-09-23 GB GB1800295.6A patent/GB2555991B/en active Active
- 2016-09-23 AU AU2016338497A patent/AU2016338497B2/en active Active
- 2016-09-23 EP EP16779244.9A patent/EP3362983B1/en active Active
- 2016-09-23 KR KR1020187000326A patent/KR102000265B1/ko active IP Right Grant
- 2016-09-23 RU RU2018100943A patent/RU2685031C1/ru active
- 2016-09-23 WO PCT/US2016/053252 patent/WO2017065952A1/en active Application Filing
- 2016-09-23 CN CN202110655510.2A patent/CN113344816A/zh active Pending
- 2016-09-23 JP JP2018501254A patent/JP6559323B2/ja active Active
- 2016-09-23 DE DE112016004730.4T patent/DE112016004730T5/de active Pending
- 2016-09-23 CN CN201680039070.5A patent/CN107851302B/zh active Active
- 2016-09-23 CA CA2992600A patent/CA2992600C/en active Active
- 2016-09-23 MX MX2018000636A patent/MX2018000636A/es unknown
-
2017
- 2017-12-19 ZA ZA2017/08648A patent/ZA201708648B/en unknown
-
2018
- 2018-01-15 MX MX2022004190A patent/MX2022004190A/es unknown
- 2018-04-02 US US15/942,983 patent/US10375310B2/en active Active
-
2019
- 2019-03-29 AU AU2019202180A patent/AU2019202180B2/en active Active
- 2019-07-16 US US16/513,123 patent/US10609287B2/en active Active
- 2019-07-16 JP JP2019131289A patent/JP6843192B2/ja active Active
-
2020
- 2020-03-23 US US16/827,183 patent/US10986271B2/en active Active
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6559323B2 (ja) | 映像安定化 | |
CN109788189B (zh) | 将相机与陀螺仪融合在一起的五维视频稳定化装置及方法 | |
US9386234B2 (en) | Auto filter extent management | |
WO2020146911A2 (en) | Multi-stage multi-reference bootstrapping for video super-resolution | |
JP2019505868A (ja) | 画像における動きの検出 | |
CN104754180A (zh) | 降低视频画面抖动的方法与装置 | |
WO2010093040A1 (ja) | モーションブラー制御装置、方法、及びプログラム | |
US20200090309A1 (en) | Method and device for denoising processing, storage medium, and terminal | |
KR20150024733A (ko) | 왜곡제거장치 및 방법 | |
US9953448B2 (en) | Method and system for image processing | |
JP2015154334A (ja) | 撮像装置、その制御方法、および制御プログラム | |
CN102625046A (zh) | 照相防抖装置及方法 | |
US20230217109A1 (en) | Device motion aware temporal denoising | |
CN112929562B (zh) | 视频抖动的处理方法、装置、设备以及存储介质 | |
JP6570304B2 (ja) | 映像処理装置、映像処理方法およびプログラム | |
KR20140127049A (ko) | 흔들림 영상 안정화 방법 및 이를 적용한 영상 처리 장치 | |
BR112018000825B1 (pt) | Método implementado por computador e meio legível por computador não transitório | |
JP2016053848A (ja) | 信号処理装置および信号処理方法、固体撮像素子、撮像装置、電子機器、並びにプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20190618 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20190716 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6559323 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |