
左が元、右が unsharp=7:7:2.0:7:7:0.5。縮小すると差が見えなくなるので、両方とも等倍(1:1)で切り出しています。柄の線の輪郭がくっきりし、コントラストが強まっています。
素材: Tears of Steel (CC) Blender Foundation | mango.blender.org、CC BY 3.0。映画の1フレームを切り出し、フィルターで加工しています。
基本コマンド
シャープネスを強調する
ffmpeg -i input.mp4 -vf "unsharp=5:5:1.0:5:5:0.0" output.mp4
値は lx:ly:la:cx:cy:ca の順に並べます。la は輝度(明るさ)にかける強さです。la=1.0 にすると、輪郭がくっきりします。
ソフトなぼかしをかける(ブラーとして使う)
ffmpeg -i input.mp4 -vf "unsharp=5:5:-1.0:5:5:0.0" output.mp4
la をマイナスの値にすると、ぼかし(ブラー)になります。全体を強くぼかしたいなら、半径を大きく取れるboxblur フィルタのほうが扱いやすいです。ただし boxblur は1つのスレッドだけで処理するので、unsharp より軽いわけではありません。
パラメータ詳細
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, …)。
1つずつなら 3〜23 を指定できますが、X と Y の組み合わせにも上限があります。lx + ly(彩度は cx + cy)が 26 を超えるとエラーになります。13:13 は使えますが、15:15 は luma matrix size (lx/2+ly/2)*2=28 greater than maximum value 25 というエラーで止まります。
輝度のみシャープ、彩度は変えない(推奨)
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 に1つずつ順に実行。比較に使った「フィルタ無し再エンコード」は 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〜0.49 秒でした。unsharp を使うかどうかで、処理時間は 1 秒未満から 30 秒台に変わります。
本当のコストはファイルサイズ
大きく変わるのは、時間よりもファイルサイズです。86.26 MB が 140.75 MB になり、63.2% 増えました。アンシャープマスクは、輪郭や細かいノイズ(高周波成分)を強める処理です。一方 CRF は、画質を一定に保つためにビットレートを増減させる設定です。強まった細部を CRF 23 の画質で保とうとするので、そのぶんデータ量が増えます。
つまり unsharp は、同じサイズのまま見た目を良くする処理ではありません。サイズを増やしたくないときは、la を下げるか、CRF の値を上げてください。配信のビットレートが低いほど、強いシャープネスは圧縮後の画質に不利になります。
見た目のチューニング
実写の映像では、シャープネスを強くかけるほど、輪郭の白い縁取り、髪の毛のチラつき、暗い部分のノイズが目立ちます。まず unsharp=5:5:0.5:5:5:0.0 で短い区間だけ書き出して確かめます。足りなければ、la を 0.8、1.0 と少しずつ上げてください。スマートフォンなどで、すでに輪郭が強調されている映像に重ねると、細い線のまわりに白や黒の縁が出ます。確認するときは縮小せず、100% 表示で文字・髪・建物の輪郭を見てください。
ほかのフィルタと組み合わせるときは、サイズ変更・ノイズ除去・色補正のあと、エンコードの直前に置くのが基本です。強くシャープにしてから拡大・縮小すると、強めた輪郭が崩れて不自然になります。ノイズの多い映像は、先に hqdn3d などでノイズを軽く抑えておくと、見た目もファイルサイズも安定します。unsharp は、もともとある輪郭を強めるだけです。ピンぼけの映像をくっきり直すことはできません。