動画ファイルや連番画像から、チラつき(フリッカー)を取り除くためのC++製ビデオプロセッシングツールです。使いやすいImGuiベースのGUIを備えています。
本ツールは、フリッカーの種類に合わせて選べる 2つの強力な除去アルゴリズム を搭載しています。
「画面全体の明るさがパカパカと点滅する」ような昔の蛍光灯の下での撮影や、タイムラプス動画で太陽が雲に隠れたり出たりする際に起きる現象(Global Flicker)に特化しています。
- 仕組み: 毎フレームの「画面全体の明るさの平均値」を計算します。前後の数フレーム(Window Sizeで指定)の平均と比べ、現在のフレームが「本来あるべき平均の明るさより異常に明るい(または暗い)」場合、ピクセルごとの数値を強制的になだらかな平均値に合わせるように補正(Luminance Smoothing)します。
生成AI動画(Sora, Runway, Pika, Stable Video Diffusionなど)にありがちな、「画面全体の明るさは変わらないが、局所的な模様がウニョウニョと変形する」「ディテールや形が毎フレーム微妙に違ってチカチカする」ような高周波ノイズに特化しています。
- 仕組み: 単純に明るさを合わせるのではなく、前後のフレームのピクセルデータそのものを直接ブレンド(Temporal Blending / 時間的ブレンディング)します。「前のフレームの絵柄」と「現在のフレームの絵柄」を滑らかに合成し続けることで、AI特有の微かな形のブレやノイズを強力に押さえ込みます。
AIが生成したノーマルマップ(法線マップ)動画特有の、フレームごとの「法線ベクトル(表面の向き)のガタつき」を平滑化する専用モードです。
- 仕組み: 画像の色(RGB)を単なる色ではなくXYZ空間における「向き(ベクトル)」として捉え直します。過去数フレームとのベクトルの平均を計算し、さらにベクトルの長さを必ず「1(単位長さ)」へと再正規化(Re-normalize)する処理を行うことで、ディテール(凹凸感)が潰れるのを防ぎつつノイズだけを強力に滑らかにします。
-
2つの除去モード切替 (照明用 vs AI用)
-
マルチパス・フィルタリング (Passes): 効果が弱い場合、1枚の画像に対して処理を数回重ね掛けしてより強力にフリッカーを潰すことができます。
-
一発プリセットボタン (Low / Medium / High): クリックするだけで最適な設定値が入力されます。
-
リアルタイムプレビュー: 調整結果をすぐにGUI上で確認できます。
-
UI独立化: パラメータ操作やプレビューは1つのメインウィンドウに集約し、「文字サイズの変更(UI Settings)」だけを独立した小ウィンドウで行えます。
-
入出力の柔軟性:
.mp4$mkvなどの動画入力だけでなく、出力先として「連番画像(Image Sequence)」のフォルダ出力にも対応しています。
-
CMake (3.16以上)
-
C++17対応コンパイラ (Windows環境ならVisual Studio / MSBuild)
-
OpenCV (バージョン4.x推奨。core / videoio / imgprocモジュール)
-
※GLFWおよびDear ImGuiは、CMakeビルド時に自動的にダウンロード&構築されます。
- opencv.org からOpenCV 4.x (Windows版) をダウンロードし、
C:/opencv等の分かりやすい場所に展開します。 - Windowsの「環境変数」設定から、システム環境変数
PATHに OpenCVのbinフォルダ (C:\opencv\build\x64\vc16\binなど) を追加してください。 (重要: これをやらないと、ビルド後にアプリを実行した際 「opencv_world480.dllが見つからない」 というエラーが出ます)
VS Code等のターミナルを開き、プロジェクトの一番上のディレクトリ(このREADMEがある場所)で以下のコマンドを順番に実行します。
# 1. ビルド用ファイルの生成
cmake -B build
# 2. プロジェクトのコンパイル (Releaseモード)
cmake --build build --config Releaseビルドが成功すると、build/Release フォルダに実行ファイルが作成されます。
ターミナルから以下を打ち込んで起動します。
.\build\Release\FlickerRemovalTool.exe- Input Video: 「Browse...」ボタンを押して、処理したい動画ファイルを選択します。(選択すると自動的に画面下にプレビューが出ます)
- Text Size(文字サイズ調整): 画面端にある小さな「UI Settings」ウィンドウのスライダーを動かすと、文字を大きくしたり小さくしたりできます。
- Flicker Removal Type(除去モードの選択):
- 画面が明るくなったり暗くなったりするチラつきなら 「Lighting Flicker」 を選択します。
- AI動画の模様がウニョウニョ変わるチラつきなら 「AI Generation Flicker」 を選択します。
- ノーマルマップ(法線マップ)のガタつきなら 「Normal Map Smoothing」 を選択します。
- Presets(強度の設定):
- 基本は 「Medium (中)」 をクリックしてください。チラつきが酷い場合は「High (強)」を試します。
- Output(出力形式の選択):
Video File(mp4動画として保存する)か、Image Sequence Folder(画像連番としてフォルダにドバッと保存する)かを選び、「Browse...」で保存先を指定します。
- Start Processing:
- 最後に「Start Processing」ボタンを押すと、書き出し処理が始まります。プログレスバーが100%になれば完了です!