
左が元、右が unsharp=7:7:2.0:7:7:0.5。縮小すると差が消えるため、両側とも等倍(1:1)の切り出しです。草の輪郭とコントラストの立ち方が変わります。
素材: Big Buck Bunny © Blender Foundation, CC BY 3.0
この記事でわかること
unsharpフィルタでシャープネスを強調するコマンドunsharpをブラーフィルタとして使う方法- 輝度(luma)と彩度(chroma)マトリクスを個別に設定する方法
- パラメータのチューニング指針
動作確認: FFmpeg 8.1 / Windows — 本記事のコマンド 7 件を検証スクリプトで実行し、全て成功しました(2026-09-06) 対象 OS: Windows / macOS / Linux
基本コマンド
シャープネスを強調する
ffmpeg -i input.mp4 -vf "unsharp=5:5:1.0:5:5:0.0" output.mp4
引数の順序は lx:ly:la:cx:cy:ca です。la=1.0(輝度の強さ)でシャープネスが上がります。
ソフトなぼかしをかける(ブラーとして使う)
ffmpeg -i input.mp4 -vf "unsharp=5:5:-1.0:5:5:0.0" output.mp4
la を 負の値 にするとブラーになります。単純に均一なぼかしをかけたいだけなら、boxblur フィルタでボックスブラーをかける方が軽量で扱いやすいです。
パラメータ詳細
unsharp=lx:ly:la:cx:cy:ca
| パラメータ | 意味 | デフォルト | 範囲 |
|---|---|---|---|
lx |
輝度マトリクスのX幅(奇数) | 5 |
3〜23 |
ly |
輝度マトリクスのY幅(奇数) | 5 |
3〜23 |
la |
輝度の強さ(正=シャープ、負=ブラー) | 1.0 |
-2.0〜5.0 |
cx |
彩度マトリクスのX幅(奇数) | 5 |
3〜23 |
cy |
彩度マトリクスのY幅(奇数) | 5 |
3〜23 |
ca |
彩度の強さ(正=シャープ、負=ブラー) | 0.0 |
-2.0〜5.0 |
マトリクス幅は奇数でなければなりません(3, 5, 7, 9, …)。
輝度のみシャープ、彩度は変えない(推奨)
ffmpeg -i input.mp4 -vf "unsharp=7:7:1.5:5:5:0.0" output.mp4
ca=0.0 で彩度は変化させません。これが最も自然な仕上がりになります。chromakey フィルタでグリーンバック合成する際に生じる輪郭の甘さを締めたいときも、輝度だけを軽くシャープにすると効果的です。
強いシャープネス(アクション映像向け)
ffmpeg -i input.mp4 -vf "unsharp=3:3:2.0:3:3:0.0" output.mp4
マトリクスを小さくして強度を上げると、エッジが際立つシャープ感になります。
ソフトブラー(ポートレート向け)
ffmpeg -i input.mp4 -vf "unsharp=13:13:-0.5:5:5:0.0" output.mp4
マトリクスを広くして負の値にするとソフトなボケが得られます。
アンシャープマスクの仕組み
unsharp はアンシャープマスク(USM)アルゴリズムを使います。
- 元画像をガウシアンブラーでぼかした「ブラー画像」を生成
- 元画像からブラー画像を引いて「エッジ成分」を抽出
- 元画像にエッジ成分を
laの強さで加算
負の la はエッジ成分を引くため、ブラー効果になります。
静止画への適用
ffmpeg -i input.jpg -vf "unsharp=5:5:1.5:5:5:0.0" output.jpg
よくある設定比較
| 用途 | コマンド例 |
|---|---|
| 標準シャープ | unsharp=5:5:1.0:5:5:0.0 |
| 強シャープ | unsharp=3:3:2.0:3:3:0.0 |
| 弱シャープ | unsharp=7:7:0.5:5:5:0.0 |
| ソフトブラー | unsharp=9:9:-0.5:5:5:0.0 |
| 強ブラー | unsharp=13:13:-1.5:5:5:0.0 |
NG例
NG例: マトリクス幅に偶数を指定する
ffmpeg -i input.mp4 -vf "unsharp=6:6:1.0:6:6:0.0" output.mp4
マトリクス幅(lx、ly、cx、cy)には奇数を指定してください。偶数を指定するとエラーになります。
実測: 処理時間とサイズ
計測したのは次のコマンドです。
ffmpeg -i input.mp4 -vf unsharp=5:5:1.0:5:5:0.0 -c:v libx264 -crf 23 -preset medium -an output.mp4
| 項目 | 実測値 |
|---|---|
| 処理時間 | 32.55 秒(実時間の 3.69 倍速) |
| 出力サイズ | 140.75 MB |
| フィルタ無し再エンコードとのサイズ差 | +63.2% |
計測環境: 1920x1080 / 30fps / 120秒 / 351.4 MB の素材(Big Buck Bunny のループ、CC BY 3.0)を、Core i9-14900KF(32スレッド)+ FFmpeg 8.1(gyan.dev)で 2026-09-05 に逐次実行。比較対象の「フィルタ無し再エンコード」は ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium -an output.mp4 で、27.97 秒 / 86.26 MB でした。いずれも音声を捨てた映像のみの数値です。生データはデータセットで公開しています。
重いのはフィルタではなくエンコード
32.55 秒という数字は、フィルタを何も掛けない 27.97 秒とほとんど変わりません。unsharp は 5x5 の畳み込みを 1 回通すだけなので、時間の大半は libx264 の再エンコードが占めています。同じ計測で boxblur は 59.37 秒、VP9 への変換は 729.16 秒でした。unsharp は「重いフィルタ」ではありません。
一方で、いったんピクセルに触れば再エンコードは避けられません。同じ計測でストリームコピー(-c copy)で済む操作は 0.41〜1.03 秒で終わっています。unsharp を挟むかどうかは、1 秒未満の世界と 30 秒台の世界を分ける選択です。
本当のコストはファイルサイズ
驚くのは時間ではなくサイズの方で、+63.2%、86.26 MB が 140.75 MB になりました。この記事は以前「同じ CRF でも 5〜15% 程度増える例があります」と書いていましたが、実測はその見積もりを大きく外しています。理由ははっきりしていて、アンシャープマスクは高周波成分(エッジとノイズ)を増幅する処理であり、CRF は品質目標を固定してビットレートを変動させるモードだからです。増えたディテールを CRF 23 の品質で保とうとすれば、その分ビットは増えます。
つまり unsharp は「同じサイズで見た目を良くする」処理ではありません。サイズを据え置きたいなら、la を下げるか CRF を上げて、シャープネス分のビットを別のところから捻出する必要があります。配信ビットレートが低い場合ほど、強いシャープネスは圧縮後に不利になります。
なお la を負にしたブラー用途のサイズは今回計測していません。細部が減る分だけ小さくなるはずですが、数値は手元にありません。
見た目のチューニング
実写素材では、シャープネスを強くかけるほど輪郭の白い縁取り、髪の毛のチラつき、暗部ノイズの増加が目立ちます。まず unsharp=5:5:0.5:5:5:0.0 で短い区間を書き出し、足りなければ la を 0.8、1.0 と上げる方が安全です。すでにスマートフォン側で強い輪郭補正が入っている素材に重ねると、細い線の周囲に白や黒の縁が出ます。確認は全体表示ではなく 100% 表示で、文字・髪・建物の輪郭を見てください。
フィルタチェーンの中では、スケール・ノイズ低減・色補正の後、圧縮の直前に置くのが基本です。強くシャープにしてから拡大縮小すると、強調したエッジが再サンプリングされて不自然になります。ノイズの多い素材は hqdn3d などで先に軽くノイズを抑えると、見た目もファイルサイズも安定します。unsharp は情報を増やす処理ではなく既存のエッジを強調する処理なので、ピンぼけ映像を復元することはできません。