写真の物理学 ㊱ フレームレートと運動知覚

Share
📐
写真の物理学シリーズ ㊱
このシリーズでは、写真にまつわる現象を物理学の言葉で記述する。「なんとなくそうなる」を「なぜそうなるか」に変換することが目的である。

なぜ24 fpsの映画が滑らかに見え、60 fpsのゲームがさらに滑らかに見えるのか。この問いに答えるには、光の物理学だけでなく、人間の視覚系が時間的な変化をどう処理するかという心理物理学の知見が必要になる。本記事では、フレームレートと運動知覚の関係を物理学と心理物理学の両面から記述する。

仮現運動:静止画が動いて見える条件

映画もテレビもモニターも、表示しているのは静止画の連続だ。しかし私たちはそこに「運動」を知覚する。この現象は仮現運動(apparent motion)と呼ばれ、1912年にマックス・ヴェルトハイマーがゲシュタルト心理学の文脈で体系的に研究した。

仮現運動の最も基本的な形式がベータ運動(beta movement)だ。位置Aに表示された図形が消え、短い時間間隔の後に位置Bにほぼ同じ図形が表示されると、観察者は一つの図形がAからBへ移動したと知覚する。

ベータ運動が成立する条件はコルテの法則(Korte's laws, 1915)で記述される。空間的な距離が大きいほど、運動知覚が成立するためにはより長い刺激間間隔(ISI: Interstimulus Interval)が必要になる。最適な運動知覚は、ISIが約60ミリ秒のときに得られるとされている。

ISIが極端に短いと、二つの図形が同時に存在するように見える(同時提示)。ISIが極端に長いと、二つの図形が順次出現するだけに見える(継時提示)。その中間の範囲でのみ、運動の知覚が生まれる。

映画やテレビが「動いて見える」のは、このベータ運動の原理に基づいている。毎秒10から12フレーム以上の速度で静止画を連続提示すると、個々のフレームの切り替わりは運動として統合され、滑らかな動きとして知覚される。

臨界フリッカー融合周波数(CFF)

フレームレートに関するもう一つの基本的な閾値が臨界フリッカー融合周波数(Critical Flicker Fusion Frequency, CFF)だ。明滅する光の周波数を徐々に上げていくと、ある周波数を超えたところでちらつきが知覚されなくなり、光が一定の明るさで連続しているように見える。この閾値がCFFである。

CFFは固定値ではない。観察条件によって大きく変動する。主な変動要因は以下の通りだ。

  • 輝度: 明るい光ほどCFFは高くなる。明所視(photopic vision)条件下では平均的なCFFは約60 Hzだが、暗所視(scotopic vision)では約15〜20 Hz程度まで低下する
  • 網膜上の位置: 周辺視野は中心視野よりCFFが高い傾向がある。ただしこれは人間の眼の光学で詳述した桿体細胞の時間解像度が錐体細胞より高いためではない(実際には錐体の方が時間応答は速い)。周辺視野でCFFが高くなる主な要因は、周辺網膜の神経節細胞の受容野が大きく空間的加算が増すことや、大細胞経路(magnocellular pathway)の寄与が大きいことにある
  • 刺激の大きさ: 大きな刺激ほどCFFが高くなる(Granit-Harperの法則)
  • 個人差: 健康な成人間でもCFFには有意な個人差があり、一部の個人は90から100 Hzのフリッカーを知覚できるとの報告がある

CFFが実用的に重要なのは、ディスプレイのリフレッシュレートの設計基準になるからだ。ディスプレイの物理学で論じるように、テレビやモニターのリフレッシュレートが60 Hz以上に設定されているのは、大多数の人間のCFFを超えてちらつきが知覚されないという条件を満たすためである。

ただし注意が必要なのは、CFFは「ちらつきが見えなくなる閾値」であって、「運動が滑らかに見える閾値」ではないという点だ。60 Hzでちらつきは消えるが、フレームレートが60 fpsであっても120 fpsと比較すると運動の滑らかさに差が知覚される。これはCFFとは異なるメカニズム(運動の時間解像度)が関与しているためであり、両者を混同してはならない。

フェリー=ポーターの法則

CFFと輝度の関係を定量的に記述するのがフェリー=ポーターの法則(Ferry-Porter law)だ。1892年にE.S. フェリーが、1902年にT.C. ポーターがそれぞれ独立に見出した。

$$ \text{CFF} = a \log_{10}(L) + b $$

ここで $L$ は網膜照度(トロランド, Td)、 $a$ と $b$ は実験条件に依存する定数だ。CFFは輝度の対数に対して線形に増加する。この対数依存性は、視覚の知覚心理物理学で論じたウェーバー=フェヒナーの法則と同じ枠組みに属している。

この法則は広い輝度範囲(およそ $10^4$ トロランドまで)で実験的に確認されている。定数 $a$ の典型的な値は刺激条件によるが、中心窩での測定では約10 Hz/log unit程度だ。

フェリー=ポーターの法則の物理的含意は明確だ。光源の輝度が高いほど、フリッカーが知覚されやすくなる。高輝度で駆動されるLED照明やディスプレイのPWMフリッカーが気になるのに、同じ光源を低輝度にすると気にならなくなるのはこのためだ。

写真との関連でいえば、ストロボで動きが止まる物理的根拠と限界で論じた閃光時間の知覚にも、この法則は間接的に関わる。ストロボの高輝度パルスが知覚に与える影響は、CFFの輝度依存性を無視しては理解できない。

タルボ=プラトーの法則

CFFを超える周波数で明滅する光の「明るさ」はどう知覚されるのか。この問いに答えるのがタルボ=プラトーの法則(Talbot-Plateau law)だ。1834年にウィリアム・ヘンリー・フォックス・タルボが、1835年にジョゼフ・プラトーがそれぞれ記述した。

法則の内容は次の通りだ。CFFを超えて融合した光の知覚的な明るさは、その光の時間平均強度に等しい定常光の明るさに一致する。

数式で表すと、デューティ比 $D$ (1周期のうち点灯している時間の割合)、光源のピーク強度 $I_0$ の矩形波フリッカーの場合、

$$ I_{\text{perceived}} = D \cdot I_0 $$

となる。50%のデューティ比で明滅する光は、ピーク強度の半分の明るさに知覚される。

この法則はPWM(パルス幅変調)調光の物理的基盤そのものだ。LEDの輝度制御では、電流を連続的に変えるのではなく、高周波で点灯・消灯を繰り返し、点灯時間の比率(デューティ比)を変えることで明るさを調整する。CFFを超える周波数でPWMを行えば、タルボ=プラトーの法則により、人間の目にはデューティ比に応じた明るさの定常光として知覚される。

映像分野では、ディスプレイのバックライトの輝度制御にもこの原理が使われている。

フレームレートの比較:24, 30, 60, 120 fps

各フレームレートの物理的特性と知覚的特性を記述する。

24 fps

映画の標準フレームレートだ。1927年にトーキー(有声映画)の普及に伴い、音声の再生品質を確保するために必要な最低限の速度として標準化された。無声映画時代の16から18 fpsでは音声の帯域幅が不足していた。

24 fpsでは、1フレームの表示時間は約41.7ミリ秒になる。

$$ t_{\text{frame}} = \frac{1}{24} \approx 41.7 \text{ ms} $$

このフレーム間隔はベータ運動が成立する時間範囲内にあるため、運動の連続性は十分に知覚される。しかし、カメラが高速にパンする場面やアクションシーンでは、モーションブラーが顕著になる。これは各フレームの露光時間内に被写体が移動することによる物理的なぼけだ。シャッターアングルとモーションブラーで詳述する180度シャッター角度の慣例では、露光時間はフレーム間隔の半分、すなわち約20.8ミリ秒になる。

映画館の映写機は、各フレームを2回または3回表示する(ダブルシャッターまたはトリプルシャッター)。24 fpsのフィルムをダブルシャッターで映写すると、実効的なフリッカー周波数は48 Hzになる。映画館の暗い環境ではCFFが低下するため、48 Hzでもフリッカーはほぼ知覚されない。

30 fps(29.97 fps)

NTSC方式のテレビの標準フレームレートだ。厳密には29.97 fpsであり、これは白黒テレビの30 fpsからカラー信号の互換性のために0.1%減速したことに由来する。1フレームの表示時間は約33.4ミリ秒だ。

60 fps(59.94 fps)

ゲームや一部のスポーツ中継で使われるフレームレートだ。1フレームの表示時間は約16.7ミリ秒で、24 fpsの約2.5倍の時間解像度がある。

60 fpsが24 fpsより滑らかに見える主な理由は二つある。第一に、フレーム間の被写体移動量が小さくなるため、仮現運動のISIが短くなり、運動知覚の質が向上する。第二に、モーションブラーの量が減少するため、各フレームの鮮明度が高まる。

120 fps以上

VR(仮想現実)ヘッドセットや高リフレッシュレートモニターで使われる。1フレームの表示時間は約8.3ミリ秒以下だ。

120 fpsと60 fpsの差は、60 fpsと24 fpsの差ほど劇的ではないが、知覚可能だ。特に高速な視線追従(スムースパシュート)を伴う場面や、VR環境での酔いの軽減において差が現れる。VRにおいてフレームレートが重要なのは、頭部の回転に対する映像の追従遅延が前庭感覚と視覚情報の不一致(感覚コンフリクト)を引き起こし、VR酔いの原因となるためだ。

ジャダーの原因

ジャダー(judder)は、映像がカクついて見える現象だ。ジャダーの主な原因は、コンテンツのフレームレートとディスプレイのリフレッシュレートが整数比にならないことにある。

24 fpsの映画を120 Hzのディスプレイで表示する場合、120 ÷ 24 = 5 であるから、各フレームを正確に5回ずつ表示すれば均等な表示時間配分が可能だ。ジャダーは発生しない。

一方、24 fpsの映画を60 Hzのディスプレイで表示する場合、60 ÷ 24 = 2.5 であり、整数にならない。各フレームを均等に表示することが原理的にできない。この不均等な表示時間配分がジャダーとして知覚される。

具体的には、あるフレームが2回表示され(表示時間 33.3 ms)、次のフレームが3回表示される(表示時間 50.0 ms)。同じ動きの中でフレームの表示時間が33.3 msと50.0 msの間で交互に変動するため、動きが均一ではなくなる。この変動が視覚系に検出され、不自然なカクつきとして知覚される。

ジャダーが知覚されやすいのは、カメラのゆっくりとしたパンニングや、画面全体が一方向にスクロールする場面だ。こうした場面では全画素が一定速度で移動するため、フレーム表示時間の不均一さが特に目立つ。

3:2プルダウンの数学

24 fpsの映画フィルムをNTSC方式(29.97 fps、59.94フィールド/秒のインターレース)に変換する技術が3:2プルダウン(telecine)だ。

まず、24 fpsのフィルムを0.1%減速して23.976 fpsにする。これにより、NTSC方式の29.97 fps(= 23.976 × 5/4)と整合する。

変換の手順は次の通りだ。フィルムの各フレームは2つのフィールド(奇数走査線と偶数走査線)に分解される。24フレームを60フィールドに変換するために、フレームAは3フィールド、フレームBは2フィールド、フレームCは3フィールド、フレームDは2フィールドという周期パターンで配分する。

4フレーム(A, B, C, D)から 3 + 2 + 3 + 2 = 10 フィールド = 5ビデオフレームが生成される。フレームレートの比率は

$$ \frac{5}{4} = \frac{30}{24} = 1.25 $$

であり、24 fpsから30 fps(60フィールド/秒)への変換が達成される。

3:2プルダウンの問題は、各フィルムフレームの表示時間が均等ではない点にある。3フィールド分のフレームは約50.0 ms、2フィールド分のフレームは約33.4 ms表示される。この不均等さがジャダーの原因だ。

逆テレシネ(inverse telecine)は、この3:2パターンを検出して除去し、元の24 fpsプログレッシブ映像を復元する処理だ。現代のテレビやメディアプレーヤーの多くがこの機能を搭載している。

インターレースとプログレッシブ

映像の走査方式には、インターレース(interlaced scanning)とプログレッシブ(progressive scanning)の二方式がある。

インターレース走査

インターレース走査では、1フレームの画像を2つのフィールドに分割して伝送する。第1フィールド(奇数フィールド)は奇数行の走査線のみ、第2フィールド(偶数フィールド)は偶数行の走査線のみを含む。2つのフィールドが交互に表示され、1フレームが完成する。

1080iの場合、1フレームは1080本の走査線からなるが、1フィールドには540本しか含まれない。フィールドレートが60 Hz(59.94 Hz)であるとき、フレームレートはその半分の30 fps(29.97 fps)だ。

インターレースが採用された歴史的理由は帯域幅の節約だ。アナログ放送時代、毎秒60枚のフルフレームを伝送する帯域幅は確保できなかったが、フィールドレートを60 Hzに保つことでフリッカーの知覚を防ぎつつ、実効的な帯域幅を半分に抑えた。

プログレッシブ走査

プログレッシブ走査では、1フレームのすべての走査線を順番に一度で走査する。1080pの60 fpsであれば、毎秒60枚のフルフレーム(各1080本の走査線)が伝送される。

プログレッシブ走査はインターレースに比べて以下の利点がある。

  • 動体の再現性: インターレースでは2つのフィールドの撮影時刻が異なるため、高速に移動する被写体がコーミング(櫛状のギザギザ)を生じる。プログレッシブではフレーム内のすべての画素が同じ時刻に撮影されるため、コーミングは発生しない
  • 静止画の品質: インターレースの1フレームは2つの異なる時刻のフィールドを合成しているため、動きのある場面で静止画として切り出すと品質が低下する
  • デジタル処理との親和性: スケーリング、圧縮、編集などのデジタル処理はプログレッシブの方が単純で効率的だ

現代のデジタルシネマカメラ、ミラーレスカメラの動画機能、そしてストリーミングサービスのほとんどがプログレッシブ走査を採用しており、Log収録とシネマカラーサイエンスで論じるカラーパイプラインもプログレッシブのフレーム構造を前提としている。止まったように見える景色の先へで触れた計算写真の進化と軌を一にして、インターレースは主にレガシーの放送規格に残存するのみとなった。

可変フレームレートとスローモーションの原理

通常の撮影と異なるフレームレートで記録し、標準のフレームレートで再生することで、時間軸を操作できる。

スローモーション

カメラが標準の再生フレームレートより高いフレームレートで撮影すると、再生時にスローモーションとなる。240 fpsで撮影した映像を24 fpsで再生すると、

$$ \text{スローモーション倍率} = \frac{240}{24} = 10 $$

実時間の10倍に引き延ばされる。1秒間の出来事が10秒間かけて再生される。

スローモーションの物理的な制約は露光量だ。フレームレートを10倍にすると、1フレームあたりの露光時間は最大でも1/240秒に制限される。通常の24 fps撮影の1/24秒と比較して、1フレームあたりに得られる光量は1/10になる。同じ露出を維持するには、ノイズの物理学で論じたSNR低下を覚悟のうえで感度を10倍に上げるか、絞りを約3.3段( $\log_2 10 \approx 3.32$ 段)開けるか、照明を10倍にする必要がある。

タイムラプス

逆に、低いフレームレートで撮影して標準フレームレートで再生すると、時間を圧縮するタイムラプスとなる。1秒に1フレーム(1 fps)で撮影し、24 fpsで再生すると、

$$ \text{圧縮倍率} = \frac{24}{1} = 24 $$

24秒間の出来事が1秒間に圧縮される。

ハイスピードカメラの物理

極端に高いフレームレートで撮影するハイスピードカメラには、光量に関する深刻な物理的制約がある。

フレームレートを $f_{\text{fps}}$ とすると、1フレームの最大露光時間は

$$ t_{\text{max}} = \frac{1}{f_{\text{fps}}} $$

だ。100,000 fpsで撮影する場合、1フレームの露光時間は最大10 μs(マイクロ秒)に制限される。

適正露出を得るために必要な照度を見積もる。標準的な24 fps撮影(180度シャッター、露光時間約20.8 ms)で適正露出が得られる照度を $E_0$ とする。100,000 fpsで同じセンサー感度、同じ絞り値で撮影する場合に必要な照度 $E$ は、

$$ E = E_0 \times \frac{20.8 \times 10^{-3}}{10 \times 10^{-6}} = E_0 \times 2080 $$

約2000倍の照度が必要になる。これが、ハイスピード撮影に強力な照明が不可欠である物理的根拠だ。実際のハイスピード撮影では、キセノンランプやハロゲンランプ、あるいは高出力LEDによる集中照明が使用される。

光電効果とフォトダイオードで論じたセンサーの読み出し構造に起因する制約もある。高速読み出しを実現するために、ハイスピードカメラは読み出す画素数を減らす(解像度を下げる)か、特殊な読み出し回路を使う。多くのハイスピードカメラが高フレームレートになるほど解像度が低下するのはこのためだ。

ストロボスコープ効果

ストロボスコープ効果(stroboscopic effect)は、離散的なサンプリング(フレーム撮影やストロボ照明)が連続的な運動を誤って再現する現象だ。ベイヤー配列とデモザイキングの数学でも論じたエイリアシング(aliasing)と本質的に同じ現象だ。

角速度 $\omega$ (rad/s)で回転する物体を、フレームレート $f$ で撮影する状況を考える。1フレーム間に物体が回転する角度は

$$ \Delta\theta = \frac{\omega}{f} $$

だ。 $\Delta\theta = 2\pi n$ ( $n$ は正の整数)のとき、すなわち

$$ \omega = 2\pi n f $$

のとき、各フレームで物体は完全に同じ角度位置にあるため、回転が停止しているように見える。

回転数で書き直すと、回転周波数 $f_{\text{rot}}$ (Hz)がフレームレートの整数倍

$$ f_{\text{rot}} = n \cdot f $$

のとき静止して見える。

$f_{\text{rot}}$ がこの条件からわずかにずれると、フレームごとに回転角のずれが蓄積し、ゆっくりとした回転として知覚される。実際の回転方向と逆方向に見えることもある。

$$ f_{\text{rot}} = n \cdot f + \delta $$

のとき、 $\delta > 0$ なら順方向にゆっくり、 $\delta < 0$ なら逆方向にゆっくり回転して見える。見かけの回転周波数は $|\delta|$ だ。

これが「高速道路を走る車のホイールが逆回転して見える」現象の正体だ。映像の場合、フレームレートが離散サンプリング周波数に相当し、ナイキスト周波数( $f/2$ )を超える回転周波数はエイリアシングにより正しく再現できない。

ストロボで動きが止まる物理的根拠と限界で論じたストロボによる動体停止も、本質的には同じ原理だ。ストロボの閃光が離散的なサンプリングとして機能し、閃光間に被写体が正確に1回転( $2\pi$ の整数倍)すれば、静止像として記録される。

まとめ

フレームレートと運動知覚の関係は、物理学と心理物理学の交差点に位置する。

仮現運動は、毎秒10から12フレーム以上で静止画が運動として統合されることを示す。臨界フリッカー融合周波数は、輝度に依存してちらつきが消える閾値を与え、フェリー=ポーターの法則はその対数関係を定量化する。タルボ=プラトーの法則は、融合した光の知覚的明るさが時間平均に等しいことを記述する。

24 fpsの映画が滑らかに見えるのは仮現運動の条件を満たすからであり、60 fpsのゲームがさらに滑らかに見えるのは時間解像度の向上による。ジャダーはフレームレートとリフレッシュレートの不整合が生む必然的な帰結であり、3:2プルダウンはその不整合の中で最善を尽くす数学的妥協だ。

ハイスピードカメラが要求する膨大な光量は、フレームレートと露光時間の逆比例関係から物理的に導かれる。ストロボスコープ効果は離散サンプリングとエイリアシングの直接的な帰結であり、まぶたの裏に残る灰色の光で触れた視覚系のノイズや閾値の問題と同様に、人間の知覚には物理的な限界が存在することを示している。

フレームレートは単なる技術仕様ではない。人間の視覚系がどこまで時間を分解できるかという生理学的限界と、光をどれだけ集められるかという物理学的制約の間で、常にバランスを取っている。

Read more

Dependabotの対応が面倒なのでRenovateを導入する

Dependabotくんはある程度の依存関係の更新を通知してくれるが、山のようにprojectを抱えているとなんとも痒いところに手が届かない。 ということで、Renovateを使ってみる。 Build software better, togetherGitHub is where people build software. More than 150 million people use GitHub to discover, fork, and contribute to over 420 million projects.GitHub ここからGitHub Appを入れる。 あとは、指示に従ってポチポチするだけで、超かんたんだった。 感想 自動化最高。

By Sakashita Yasunobu

nodejsのバグを見つけたのでPRを投げてみた

概要 要するに、node --testで特定のバイナリを標準出力に書くと、テストランナーが固まったり、異常終了したりするバグです。 バグ自体は既知のものだったようで、修正がされていました。 test_runner: infinite loop in FileTest#drainRawBuffer when child stdout contains FF 0F followed by large size bytes · Issue #62693 · nodejs/nodeVersion v25.9.0 (also reproduced on v24.14.1 LTS, v22.21.0 LTS, v23.4.0) Platform Darwin 25.

By Sakashita Yasunobu
青空文庫のParser

青空文庫のParser

青空文庫のParserを作ってます。 GitHub - P4suta/aozora: Pure-functional Rust parser for 青空文庫記法 (Aozora Bunko notation): ルビ, 傍点, 縦中横, 外字, 返り点, indent containers, page breaks.Pure-functional Rust parser for 青空文庫記法 (Aozora Bunko notation): ルビ, 傍点, 縦中横, 外字, 返り点, indent containers, page breaks. - P4suta/aozoraGitHubP4suta Rustで作ってますが、配布物はcargoのほかにnpm/pypiでも入手できます Documentation * Playground — try it in

By Sakashita Yasunobu