ffmpeg 3.4でリリースしたRoberts cross operatorを用いたエッジ検出フィルタroberts
の使い方。同様のフィルタにsobel, prewitt
があり、他にもエッジ検出できるフィルタはいくつかある。
- ffmpeg でエッジマスク
- エッジ検出フィルタscharr
- エッジ検出フィルタ sobel, prewitt
- ffmpeg でエッジ検出をする edgedetect
- 鮮鋭化やぼかし、エンボス処理などができる convolution
基本コマンド
ffmpeg -i input -vf roberts=planes=15:scale=1:delta=0 output
ffmpeg -i input -vf roberts=15:1:0 output
ffplay -i input -vf roberts=15:1:0
公式ドキュメント:FFmpeg Filters Documentation : roberts
オプション
乗算、加算の値は増やせば線が増え、減らせば線が減る。
- planes[int]
フィルタを当てるチャンネル指定
詳しくは ffmpeg について | チャンネルの順番と注意点を参照
既定値:15(すべて) - scale[float]
フィルタを当てる乗算値の指定
範囲:0 から 65535 まで
既定値:1 - delta[float]
フィルタを当てる加算値の指定
範囲:-65535 から 65535 まで
既定値:0
サンプル画像
アニメ画像
実写画像
roberts_opencl
opencl を使ってroberts_opencl
フィルタを使う。
opencl が使えれば以下のコマンドを実行すると対応 CPU、または GPU が表示される。
ffmpeg -hide_banner -v verbose -init_hw_device opencl
出力コマンド例。
ポイントは opencl を使うデバイスを上の例では 0.0 から 1.1 から指定する。能力によって処理速度が大きく異なる。オプション指定は通常と同じ。
コマンド例。
ffmpeg -init_hw_device opencl=ocl:1.0 -filter_hw_device ocl -i input -vf hwupload,roberts_opencl output
通常のフィルタに切り替えるにはhwdownload,format=yuv420p
フィルタを挟む。
ffmpeg -init_hw_device opencl=ocl:1.0 -filter_hw_device ocl -i input -vf hwupload,roberts_opencl,hwdownload,format=yuv420p,lutyuv=val:128:128 output
いつもここでffmpegについて勉強させてもらっています。
「ffmpeg について | チャンネルの順番と注意点 」の表の読み方がわからないので、解説をお願いします。
YUVでいうと、1st planeがY、2nd planeがU、3rd planeがV、4th planeがアルファー
1st planeが1、2nd planeが2、3rd planeが3で表記
とは想像したのですが、1st planeに1と4が割り当てられたり、オプション番号との対応も???です。
2nd planeのみや、2nd planeと3rd planeの時は?と。
>1st planeが1、2nd planeが2、3rd planeが3で表記とは想像したのですが、
誤解を生む表記だったので plane の表記を削除し書き直しました。指摘ありがとうございます
>2nd planeのみ
2 を指定します
>2nd planeと3rd planeの時
6 を指定します
コメントが反映されていなかったので再コメントです。
解説ありがとうございます。
planeのを説明しているところがなかったので、とてもありがたがったです。
提案なのですが、二進法十進法を知らない人用の表に
https://pastebin.com/NLmZnNHK
はいかがでしょうか?
グラフありがとうございます。plane 順番ですが、必ずしも YUV の順番だけではなく、YVU の順番もあるのでそれも記載しておきます。
解説ありがとうございます。ようやくplaneが理解できました。
planeがチャンネルらしきことは解り始めていたのですが、???な状態から抜け出せたようです。
planeの解説は海外サイトでも見かけないのでとてもありがたいです。
ありがとうございます。
提案なのですが、二進数の十進表記を知らない人にもわかるようんい表を下のようにしてみるのはいかがでしょうか?
option\Plane |1st(Y,R,G) 2nd(U,G,B) 3rd(V,B,R) 4th(a)
|0=0x2^0(off) 0=0x2^1(off) 0=0x2^2(off) 0=0x2^3(off)
|1=1×2^0(on) 2=1×2^1(on) 4=1×2^2(on) 8=1×2^3(on)
——————————————————————————
0 |0 0 0 0
1 |1 0 0 0
2 |0 2 0 0
3 |0 0 3 0
4 |1 0 3 0
5 |0 2 4 0