スマホでテレシネ

「スマホでテレシネ」を作ってみる(14)

更新日:

どうもこんにちは、根岸です。
さて、今回は14話目でございます

調整について

LED電流の調整

パーフォレーションセンサーがフィルムの「穴」と「穴ではない部分」をしっかり区別できるように、フォトインタラプタの発光側のLEDと5Vの電源の間に入れる電流制限抵抗の大きさを適当な範囲で調整します。

(発光側LEDの電流制限抵抗)

この電流制限抵抗の役目は第一に「LEDに電流が流れすぎて壊れるのを防ぐ」ということなのですが、抵抗を大きくすればそれだけ光は弱くなりますし、逆に小さくすれば光は強くなります。センサーのオン・オフは受光側に届く光の量で決まるので、センサーの動作が不安定な場合は発光側のLEDの光の強さを調節することで改善できる可能性があります。

具体的な値は使用するLEDのデータシートを読んで検討する必要があるのですが、たとえば次のような条件の場合を考えてみます。

 電源の電圧:5V (今回の設計上USB電源に合わせた電圧)
 順方向電圧:3.1V (データシートにある平均の順方向電圧)
 電流の上限:10mA (データシートの絶対最大定格を超えない、任意の順方向電流)

この場合電源の5Vのうち3.1VをLEDが分担し、残りの5V - 3.1V = 1.9Vを抵抗に分担させることになりますから、抵抗値はオームの法則により1.9(V) ÷ 0.01(A) = 190(Ω)と求めることができます。これが最低値で、抵抗がこれより大きければ…たとえば500Ωなら1.9(V) ÷ 500(Ω) = 0.0038(A) = 3.8mAと、LEDの電流はより少なく、暗くなります。

これを実現する回路は220Ωの固定抵抗と500Ωのボリュームを直列に組み合わせた回路でも良いでしょう。あるいはボリュームを使わずに、たとえば最初は470Ω程度の固定抵抗にして、もし問題が起きる場合はその前後の抵抗値に(ただし小さくなりすぎない範囲で)取り替えてみるという方法でも良いと思います。

またここでは仮に電流の上限を10mAとして計算しましたが、たとえば絶対最大定格が30mAのLEDの場合に20mAを上限に設定して計算しても、もちろんかまいません。ただし電源電圧や抵抗値の誤差、LEDの順方向電圧のばらつき、温度による変化を考慮するとあまりギリギリは好ましくありません。それに電流が大きすぎるとLEDよりも先にボリュームの方が焼けてしまうでしょう。

バックライトの電源をコイン電池ではなく外部電源から供給するように改造した場合の電流制限抵抗も同様に考えることができます。

フィルム速度の調整

フィルムが動く速度はモーターコントローラー基板についているSPEEDツマミで変えることができます。

スマホをコマ撮りアプリのカメラモードにして、画面のシャッターボタンが赤く表示されている時は「撮影可能」の状態です。シャッターが切れるとボタンは白く表示され、すぐにまた赤に戻ります。

(撮影可能な状態:左  処理中で撮影できない状態:右)

ボタンが白く表示されている間はスマホ内部の「処理中」なので、次のコマはまだ撮影できない状態です。赤いボタンの表示に戻るまでかかる時間は、カメラのシャッター速度が遅いほど長くかかります。シャッター速度が速ければその分早く赤に戻りますが、それでもある程度の時間はかかります。

何度もシャッターを切っていると時々赤に戻るのに特に長い時間がかかることがありますが、これはスマホ内部で保存するべき写真がメモリーに溜まって、ストレージに書き込む処理が必要になったときのようです。
モーターのスピードは速いほうが短い時間でテレシネが終わるわけですが、ずっと白くなってほとんど赤に戻らないような状態では写真の格納が間に合わず、コマを撮り逃すおそれがあります。赤に戻るまでの時間は変動するので、多少余裕をみて赤い状態の時間がある程度長くあるほうが安全でしょう。

またフィルムの初めと終わりではフィルムが移動する速度がだいぶ変化して、だんだん速くなるようです。これはリールがフィルムを引っ張る力の変化が影響しているのだろうと思います。

フレーミングの調整

フィルムの移動によって絵は下から上にゆっくり移動します。絵がある位置に来たときシャッターが切れます。シャッターが切れるタイミングは、ビューワーとパーフォレーションセンサーの距離を調整することで変えることができます。絵と絵の境目が画面の端に消えて見えなくなった瞬間にシャッターを切ることができれば、コマ撮りした動画を見ても画面の境目は見えないはずです。

調整の手順としては、まずカメラのズームは引き気味にして画面の上下に境目が見えている状態を作り、撮りたい絵ができるだけ中央に来たときシャッターが切れるようにセンサーの位置を決めます。その後カメラのズームで拡大ぎみにして、カメラに写らない範囲を作ります。(そのぶん、フィルムの一部は動画からカットされてしまうことになりますが、普通の8ミリ映写機でも実はかなり縁がカットされて映写されるようになっています。)

コマのブレ

テレシネした動画のブレにはいくつか原因が考えられます。

①フィルムの撮影時にカメラがブレたため
②フィルムに劣化やダメージがあるため
③フィルムとビューワー内部のフィルムガイド溝との間に隙間があるため
④シャッターのタイミングが変動しているため

実際にはこのすべてが同時に組み合わさったものだと考えてよいでしょう。

①、②はテレシネ以前の問題なので調整はできません。③はビューワーの設計に起因する問題ですが、コマの左右の位置はビューワの内側のフィルムガイド溝で決まるので基本的には動きませんし、調整もできません。ガイド溝とフィルムとの隙間は最小限に抑えているのでブレは大きくはないのですが、ビューワーが摩耗するとその分大きくブレるようになるかもしれません。

実際にテレシネした動画を見るとコマのブレは上下方向が最も大きく、目につきます。これについては④のシャッターのタイミングの問題になります。
常に同じ位置にコマの境界が見える状態であれば、それはセンサーの位置をずらすことで調整できるのですが、上下の位置がコマごとに微妙にブレて定まらないのは、シャッターのタイミングに変動が生じているということなのです。

シャッターのタイミングに影響を与える要素のうち、パーフォレーションセンサーと有線式のシャッターリモコンについては、タイミングが変動する要素を最大限排除しています。しかし手を出せないのがスマホ内部での処理です。
スマホ内部でのソフトウェアの動作はとても複雑なので、シャッターリモコンから信号が来ても実際にカメラが撮影を実行するまでわずかな時間差があり、その遅れ時間は毎回変動する、という問題があるようなのです。

このようなブレはデジタルには無いレトロなフィルムの「雰囲気」が出るといえば出るので、目的によってはこのままでも良いかもしれません。でも8ミリは家庭用ではあっても玩具ではないので、本来ならもっとしっかりブレずに映るものなのです。

「手振れ補正」フィルター

動くフィルムをスマホで撮影する原理上ブレは無くせないので、ここでは考え方を変えて、いったん動画にしてからソフトウェアで補正するという方法を考えてみました。
スマホで動画を作るところまでは達成できています。あとは動画を編集するためのソフトウェアにある「手振れ補正」フィルターを使えばこのテレシネのブレも修正することができるのではないかというアイデアです。
今回はスマホで完結させるというのがひとつのテーマなので、パソコンを使わないでできればもっと良かったのですが、適当なスマホアプリが見つからなかったため、テレシネした動画をWindowsのパソコンに転送して、その動画ファイルに処理をしてみます。

FFmpeg

使用したのは FFmpeg(エフエフエムペグ)というフリーソフトウェアで、64bit Windows用の安定版 ffmpeg-4.2-win64-static です。
FFmpegはコマンドラインから使うソフトなのでそれだけでも敷居が高いかもしれませんが、インストール方法や使い方に関してはインターネットにたくさんの情報があります。インストール後のPathの設定と、動画ファイルのあるディレクトリで実行する点だけ注意すれば難しくはありません。

FFmpegの手振れ補正の処理は、ひとつの動画ファイルに対して別々のフィルターで2回処理する「2パス方式」で行われます。

1パス目はvidstabdetectというフィルターで、指定された動画の画面から動きの情報を抽出してログファイルを出力します。

2パス目はvidstabtransformというフィルターで、指定された動画を読み込みながら1パス目で出力されたログファイルに従って補正をかけ、補正後の動画を出力します。

たとえばコマ撮りした動画ファイルとして INFILE.MOV、手振れ補正をかけた動画ファイルを OUTFILE.MP4 とすると、次のようなコマンドで手振れ補正処理をすることができます。

1パス目
ffmpeg -i INFILE.MOV -vf vidstabdetect=shakiness=10 -an -f null -y

2パス目
ffmpeg -i INFILE.MOV -vf vidstabtransform=smoothing=8:maxangle=0,unsharp -an -y OUTFILE.MP4

手振れ補正フィルターは上下の動きだけを補正するためのものではないので、デフォルトのまま処理すると過剰に補正してしまい、かなり画面が歪んでしまいます。そのためvidstabtransformフィルターでの補正を制限するようにmaxangle=0オプションを指定しました。

ゴルフ

万博


(手ブレ補正の比較動画 元の動画:左 補正した動画:右)

効果が分かりやすいように、テレシネ時にフィルムの穴まで写るようにズームの設定をしてあります。万博の動画で時々コマが飛ぶのはモーターの速度が早すぎてコマを保存するのが間に合わなかったためのようです。
左側の処理前の動画はフィルムの穴も含めて常にブレが起きていますが、右側の動画では画面内のブレがほとんど気にならないレベルになっているのが分かると思います。

右側の画面でもフィルムの穴が止まらず少し動いているのは、8ミリの撮影時にカメラが手ブレしていたものが補正されたためです。よく見ると8ミリで撮影された画面の内容はブレずに止まっていて、その分フィルムの穴が動いていることが分かります。

これで画面は見やすくなりますが、オリジナルのフィルムに元々ある手振れまで含めて動画に残したいという場合には、これは欠点になるかもしれません。
撮影時の手振れは残してテレシネのブレだけ補正するには、①テレシネする段階で動画内にパーフォレーションを含めて撮影しておき、②その動画からさらに画像部分をマスクしてパーフォレーションだけが写っている中間処理用の動画を作成し、③これを1パス目の入力ファイルとして動き(=ブレ)を解析させ、④2パス目にはマスクしていない画像部分まで含んだ動画ファイルを入力して補正処理させるようにすれば良いかもしれません。試してみられた方はぜひ結果を教えていただけると嬉しいです。

スマホでテレシネ(15)-最終話-を読む

-スマホでテレシネ
-, , , , , , , , , , , , , , , , , , , , , , ,

Copyright© digital-write Blog , 2020 All Rights Reserved Powered by STINGER.