2色のグラデーションにするにはnormalize
フィルタを使えばよいが、2色だけ、3色だけにするにはlutyuv, lutrgb
フィルタを使いこなすことで作ることが出来る。イメージとしては「ブラタモリ」のオープニングで見られる効果に似ている。
2色効果
YUV
Y 輝度信号(輝度) が125 以下は 16、126 以上は 235 に変換し、UV 彩度信号は128の白黒に変換する。
ffplay -i input -vf lutyuv='(between(val,126,255)*219)+16':128:128,format=gray
RGB
RGB が125 以下は 0、126 以上は 255 の白黒に変換する。
ffplay -i input -vf format=rgb24,colorchannelmixer=.3:.59:.11:0:.3:.59:.11:0:.3:.59:.11:0,lutrgb='between(val,126,255)*255:between(val,126,255)*255:between(val,126,255)*255',format=gray
2色だけ、3色だけに減色する映像効果でも可能。
3色効果
YUV
Y 輝度信号(輝度) が120 以下は 16、121 以上 155 以下は 128、156 以上は 235 に変換し、UV 彩度信号は128の白グレー黒に変換する。
ffplay -i input -vf lutyuv='st(0,gt(val,120)+gt(val,155));eq(ld(0),0)*16+eq(ld(0),1)*128+eq(ld(0),2)*235':128:128,format=gray
RGB
RGB が121 以下は 0、122 以上 155 以下は 128、156 以上は 255 の白グレー黒に変換する。
ffplay -i input -vf format=rgb24,colorchannelmixer=.3:.59:.11:0:.3:.59:.11:0:.3:.59:.11:0,lutrgb='st(0,gt(val,120)+gt(val,155));eq(ld(0),0)*0+eq(ld(0),1)*128+eq(ld(0),2)*255':'st(0,gt(val,120)+gt(val,155));eq(ld(0),0)*0+eq(ld(0),1)*128+eq(ld(0),2)*255:''st(0,gt(val,120)+gt(val,155));eq(ld(0),0)*0+eq(ld(0),1)*128+eq(ld(0),2)*255',format=gray
4色以上
palettegen, paletteuse
フィルタを使う。白グレー黒の4色に変換する。
ffmpeg -i input -filter_complex format=gray,split[v],palettegen=4:0:lime:2[pal],[v][pal]paletteuse=0:0:1 -vframes 1 four_tone_colors.png
使ったフィルタの解説