グローバルシャッターとローリングシャッター

カメラには一コマ一コマ確実に露光/遮光するためのシャッターが搭載されています。大きく分けてグローバルシャッターとローリングシャッターというものが存在していて世の中にあるほとんどのカメラはローリングシャッターが使われています。このローリングシャッターは普通に使っている分には問題がないのですが早い動きのある被写体やカメラが振動などでブレたりすると画面が歪んでしまうという特性があります。走っている電車の窓が歪んでるとかプロペラの形が変になっているとか、ドローンやアクションカメラの映像がぐにょぐにょになっているとかよく説明で使われることと思います。そういった現象の出ないグローバルシャッターとともにカメラシャッターの説明をしていきます。

  高速で移動する物体は歪んでしまう
  プロペラ系はキモいくらい変な形になる

■ ローリングシャッターだとなぜ画像が歪むのか?
ローリングシャッターで高速で動いている物体や振動で画像が歪んでしまう理由は全く同じ時間に一画面を記録していないからです。デバイスの種類にもよりますが記録のタイミングが全画面同時ではなくシャッターの降りる時間内である方向からスキャンして記録していきます。この時間内で被写体が動いてしまうと歪みやブレとなって現れてしまいます。デジタルカメラデバイスでよく使われるCMOSイメージセンサーで説明していきます。

ローリングシャッターのCMOSイメージセンサーでは撮像をある方向から1ラインずつ露光してデータを取り込んでいく構造になっています。横棒の長さはシャッタースピード時間です。次のライン読み込みまで時間がかかってしまうためこの時間のずれが画像の歪む原因となります。同じ画面の上下で露光しているタイミングが違うので当然そうなってしまいますね。最近では高速読み取り技術を使ってほとんど歪みが出ないようにしているセンサーもありますが細かいブレは抑えらていません。

一方グローバルシャッターのセンサーでは全画素同じタイミングで露光しデータの読み出しも同じタイミングで行われます。なのでローリングシャッタのような歪みというのは起こらないことになります。(ただし全く歪みとかブレが出ないというわけではなくシャッタースピードと被写体の移動スピードが適切でなければブレはでます。)
こうしてみるとローリングシャッターダメじゃんと思われるかもしれませんがいくつかの理由でそれが別に構わないとされてきた経緯があります。フィルム時代のシャッターがどうなっていたか説明します。

映画用フィルムカメラのシャッターはロータリーシャッターと言って図の回転するパックマンのような形の口にあたる部分を広げたり狭めたりすることで調整します。映画のフレームレートは24なので90°なら1/96sec、180°なら1/48sec というような感じです。(普通は180°を使う)パックマンは1コマにつき1回転して遮光している間に次のコマにフィルムが送られます。というわけで映画用フィルムカメラは全画面同時露光でなかったのです。スチルカメラで使う上下に幕が移動するフォーカルプレーンシャッターも同じことです。CMOSイメージセンサーほどのブレや歪みは出ませんがそれでもカメラってそういうものというイメージがありました。

ちなみにCMOSイメージセンサーと機械式回転シャッターを組み合わせてローリングシャッター歪みを低減したカメラってのも存在します。(SONY F65RS) ただしメカニカルシャッターはそれ自体振動の元になったり故障の原因にもなったりします。最新のデジタルシネマカメラはそういった機構は付いてないようです。後継のVENICEには無さそうですしね。

■ デバイスによって変遷するシャッター方式
ビデオの場合はちょっと複雑で時代により使う撮像デバイスによってローリングシャッターだったりグローバルシャッターだったりしていました。
撮像管:ローリングシャッター 1980年代まで
CCD:グローバルシャッター 1980年代〜2000年代初めまで
CMOS:ローリングシャッター 1990年代後半〜

撮像管はテレビ創生期からあったデバイスで真空管の一種のようなものです。焼き付きがあったり振動に弱く、レジずれ調整とかいろいろ手間のかかるもので長らく業務でないと使わない代物でした。その後CCDイメージセンサーが出てきて撮像管の持つ物理的なデメリットが解消され民生用カメラにまで一気に使われることになります。しかもこいつは最初からグローバルシャッターです。2000年代初めまでイメージセンサーといえばCCDでした。ただしデメリットがなかったわけではありません。CCD一番のデメリットはその複雑すぎる構造です。それゆえ製造コストが高く高解像度化も難しい、消費電力も高いということで現在ではほとんどCMOSにとって代わってしまいました。(工業用とか特殊用途にはCCDが現在でも使われています)そしてつい最近になってグローバルシャッターのCMOSが出てきたということになります。

■ グローバルシャッターとローリングシャッターの使い分け
世の中のカメラが全てグローバルシャッターCMOSになったかというとそうではありません。ローリングシャッターCMOSと比べるとCCDほどじゃありませんが構造が複雑なためコストは高く、感度は若干低め(同じセンサーサイズなら)、消費電力はチョイ上がります。コスト重視のカメラならローリングシャッター1択になってしまいます。なのでまだまだローリングシャッターカメラがほとんどで撮影する被写体によって使い分けることが必要だと思ってます。
グローバルシャッターカメラで優位な撮影を挙げると
 ・動きの速い被写体の撮影(スポーツ中継とかカメラで被写体を追う場合)
 ・撮影時に振動がどうしても避けられない場合(ドローン撮影、車載映像など)
 ・後で画像解析が必要な場合(歪みがアーティファクトノイズとなる)
 ・VFXでクオリティの高い合成を実現させたい場合(ブラーは後処理でかければいい)
 ・複数のセンサーを使うVRカメラの後処理でスティッチング(VR用に複数センサー画面を貼り合わせて合成すること)をするケース
ということになります。単純にブレない映像を見せる場合やローリングシャッターの歪みが余計なアーティファクトになるのを防ぐといった感じになります。

グローバルシャッターカメラで撮った映像の例を挙げておきます。CIS VCC-4K2 4K60Pカメラを使用し首都高の車載映像です。
 Metropolitan Expressway 4K/60P HDR Shooting HLG Version

標識の看板も読めますし、段差の振動も自然。両脇の流れもブレずに収録されていますがグローバルシャッターならではといったところです。CISグローバルシャッターカメラの実例としては
 ・国内某サーキットのゴール判定での使用(300km/h近いスピードでも歪まずブレない)
 ・VFX用ロボットカメラとして使用(ブンブン振り回すらしいのでグローバルシャッターが適当)
 ・大御所海外ヘビメタバンドのドラマーがライブで自身の撮影に使用(ドラムはかなりの振動になります。しかもドラマー個人の所有物)
というのがあります。

撮り方を工夫すればローリングシャッターでもいいところまで追い込めたりしますがグローバルシャッターカメラを経験するとあんまりローリングシャッターで撮りたくなくなるのも事実です。

SRTでストリーミング

最近使われるようになったビデオストリーミングプロトコル SRT (Secure Reliable Transport) 。 従来のRTPとかRTMPとかに変わるものでリアルタイム性と信頼性を兼ね備えた新しい配信技術になります。オープンソースということもあり採用する企業が短期間でかなりの数伸びているということも人気の一つです。ちょっとSRTを使う機会があったので少し書いていきます。

SRT Logo


SRTはカナダの企業 Haivision社が提唱したストリーミング技術でSecure(安全)、Reliable(確実)、Transport(ネットワーク伝送)の頭文字をとったものです。類似の規格にZixiとかRISTなどがありますがオープンソースでアライアンス活動に積極的ということで450社以上のメンバーの参加、25,000以上の組織で使われているようです。(2020年12月時点)
ちなみに全米テレビ芸術科学アカデミー (NATAS) からエミー賞を受賞しています。(テクノロジー&エンジニアリング部門 2018年度)

 

 

■ 映像配信で使う通信プロトコル
ネットワーク通信の基本はWebやメール通信などで使われるTCPプロトコルを使っています。一般のインターネット回線は専用線に比べて信頼度は低く、どうしてもパケットロスやジッターによるデータ欠損が生じてしまいます。TCPはそんなときにもう一度データを送ってくれる仕掛けがあるプロトコルです。今見てるページを見て所々文章が無くなっているとか画像が見えないってことはありませんよね?TCP通信でデータ欠損してもその部分を再送信しているために全データを送ることができるからです。

映像配信だとTCPはどうなのかいうとパケットロスのたびに再送信とかやってるとその度に映像が止まってしまいます。それだとイライラして誰も見てくれなくなってしまうので一旦バッファと呼ばれるデータを溜め込むところにプールしておいて時間差で映像を流すということをしています。パケットロスの頻度に応じてプールする容量を増やしておけば映像が止まらずに視聴することができます。一般的な視聴ではTCPを使ったHLSやMPEG-DASHという技術で通信を行っていてこういったバッファ処理が含まれています。その代わり遅延は数十秒以上になることがあります。
視聴者側からするとその遅延はあんまり気になりませんがライブプロダクションなど番組を作る側からするととんでもないことになります。外からの中継で片方向に数十秒もかかっていたらやりとりが出来ませんよね?何処の星との中継だよと言いたくもなります。

プロトコルSMPTE-2110SMPTE-2022-6Evertz
ASPEN
SONY NMINewTek NDI
通信方式UDPUDPUDPUDPUDP/TCP

上の表は代表的な放送用IPフォーマットの一覧です。遅延はいずれも1フレーム以下(数ライン〜数十ライン)でほぼほぼTCPを使っていません。UDPはTCPと対となるプロトコルでTCPのようにちまちま処理をせずドッカンと送る方式です。リアルタイム性が高く放送向きである一方、データ欠損が起きた場合に再送信とかの処理は一切しません。(細かいことは気にしないタイプ)その代わりFEC(Forword Errror Correvtion, 前方誤り訂正)などの技術を併用して多少の欠損は復元させて問題がないようにしています。とはいえそれだけで対処するのは難しく放送用IPは専用線やガッツリ設計されたネットワーク網を使うのが前提で多分に怪しいインターネット網を使うことは想定していません。

■ インターネット回線で高品質を保持するSRT
インターネット網でリアルタイム性を追求した配信方式がSRTとなります。放送用IPと同じくUDPを使うのですが強力なエラー訂正により品質を保持するようになっています。
主な特徴として
・ARQ(Automatic Repeat reQuest)機能を搭載し送信受信側でパケットロスを検知すると自動でデータを再送信してくれる。
・低遅延(数百ms)
・ファイヤーウォール透過機能
・AES 128bit/256bitの暗号化
などがあります。
Caller、Listenerともにバッファを持ち常にデータの流れを監視していてデータロスがあればTCPと同じように再送信、処理が間に合わそうであればエンコーダーのパラメータを自動調整してストリームを途切れなくさせる仕組みが備わっています。
送受信合わせて数百msの遅延をどう捉えるかなのですが、例えば遠隔地から衛星中継のようなコンテンツであればさほど気にならないでしょうし一般のインターネット回線が使えるので高額な通信回線料を払わなくて済むようになるのは大きな利点だと思います。
ちょっと試してみたいところですがまだまだSRTが使える機材はまだまだ少なく、ハードウェアエンコーダー/デコーダーがほとんどのようです。

と、思ったら手元にSRT対応のカメラがッ!
とある用途で借りてたカメラですがSRT機能が使えるのはノーマークでした、、、手のひらサイズですが4K/60Pまでいける某社のOEM向けカメラです。(なので基盤剥き出し)さっそくセットアップしていきます。

■ SRTストリーミングを試してみる

SRTではカメラやエンコーダーなどの送信側をCaller、デコーダーなどの受信側をListenerと定義するようです。今回はListener側としてPCを使いフリーソフトウェアのFFmpegで受信してみます。SRT規格では1つのListenerに対し複数のCallerからのストリームが受信できますが今回は1対1で試しています。

・カメラ側の設定
 Destination IP   送信先のIPを設定します。ポートは1024以降で他の映像プロトコルで使用しない番号を選びます。(今回は8700としました)
 Latency      バッファ時間(デフォルトは120ms)
 Encryption     暗号化。AES-128、AES-256が選べます。
 Passphrase     暗号のパスワード。10文字以上79文字以下に設定する。

以上を設定してストリーミングをスタートさせます。

FFmpegからはコマンドプロンプトで

$ ffplay -i ‘srt://localhost:8700?mode=listener’

暗号化をした場合は

$ ffplay -i ‘srt://localhost:8700?mode=listener&passphrase=[Pass]’

とします。[Pass]の部分は設定したパスワードと読み替えてください。
走らせてみると結構すぐにズバンと動画が流れてきます。遅延的には2秒くらいですが(カメラ処理、SRT通信、PC側のデコードの総合時間)何にもチューニングしていないのでもう少し時間は縮められそうです。映像は解像度1920×1080 60fps、H.264 7Mbpsくらいで送っています。海外でスポーツ中継の事例では遅延0.5秒というのがあるらしいです。

 

放送用IPほどの遅延のなさはありませんが従来のRTPやRTMPに比べて十分短く、エラー訂正機能も強化されていることから制作コストを抑えて伝送できるのは十分魅力的だと思います。遠隔地への中継や、ちょっと広いところでwifiを使ってケーブルを使わず伝送など気軽にリアルタイム中継ができるようになるのではないでしょうか?