安価なキャプチャーボードの画質を改善する
Mirabox HSV321 というキャプチャーボードを所有している。
5000円程度で購入できる割に、きちんと1080p/60fpsで録画できる。PCに接続するとUVCカメラとして認識され、USB 2.0で接続するとMJPGしか使用できないが、USB 3.0で接続するとMJPGに加えてYUYVフォーマットも使用できる。
もちろん自ら安価な製品を購入しているので承知の上ではあるが、キャプチャした映像の色味がよくない。印象としては中華スマホのカメラで撮影した画像のようなもので、色彩が派手に表現され、細部が潰れてしまっているように感じられた。
このキャプチャーボードをOBS Studioを通してゲーム画面の録画や配信に使いたくて、もうちょっと画質がマシにならないかなと思って調整していたらなんとかなった。
やったこと
改善する方法としては、キャプチャーボードが出力する映像の品質を向上させることと、出力に対して適切な補正をかけることが挙げられる。今回の環境では前者はあまりうまくいかなかったので、最終的には後者のみを使うことにした。
キャプチャーボードの色設定を変更する
いろいろと調べているうちに行き着いたのがこの記事 で、当初は自分もLinuxで使う予定だったので真似してみることにした。
試していくうちに、HSV321は30fpsと60fpsで出力される色味の傾向が異なることがわかった。
30fpsでは(brightness, contrast, saturation, hue) = (134, 151, 146, -2)
、60fpsでは(brightness, contrast, saturation, hue) = (142, 138, 100, -6)
あたりが最適パラメータのように思われる。
ちなみに、画像の入力にはMi Box SというAndroid TVデバイスを使い、入力用画像をスクリーンセーバーに設定して表示させ続けた。
素の状態よりはいくらかマシになったけど、次のLUTを用いた色補正だけでも自分としては満足できる改善が得られたのと、WindowsとOBS Studioを使用する場合のキャプチャーボードの色設定の変更が面倒だったので、この方法は使わないことにした。
Linuxであればv4l2-ctl
コマンドですぐに色設定を変更できるが、WindowsのOBS Studioでは色設定の数値設定がしづらい上に、OBS Studioを再起動するたびに設定値が吹き飛ぶのが煩わしかった。
LUTでキャプチャーボードの出力を補正する
参考にしていたサイト に、LUTはよいですよと書かれていた。なるほど~と思って調べてみたら、OBS Studioで適用可能なLUTを生成するツールを見つけたので、これに手を加えて活用することにした。
データベース から適当に色を選んで入力用の画像を作った。
上記のGitHubリポジトリを元にして、今回の用途に合わせてリファレンス画像を上の画像に差し替えたColab Notebookが以下。書き換えるとしたらStep 9
くらいで、他はそのまま実行していけばいいと思う。
今回の場合は、最終的に次のような画像が生成された。
結果
素の状態とLUTを適用した状態のそれぞれで録画した映像をくっつけた。
冒頭のロード画面を見比べると、黄色の発色が大きく異なることがわかるのではなかろうか。また、今回は少し明るめに調整したこともあり、調整後は暗い部分でも潰れがなくなっている。最終的には個人の好みだと思うけど、自分としては調整結果にとりあえず満足している。
その他
余計な事を考えずに高品質な映像を取得したければ、最初からきちんと調整された製品を買うべきだと思う。そのあたりも含めて遊ぶ余裕がある場合は、安価で雑な製品は楽しくてよい。
安価なキャプチャーボードに関しては、この記事がおもしろい。
(重複フレームによるごまかしではなく)60fpsでキャプチャできているかを確認するには、この動画が重宝した。