2色のグラデーションにするには normalize フィルタを使えばよいが、2色だけ、3色だけにするには lutyuv, lutrgb フィルタを使いこなすことで作ることが出来る。イメージとしては「ブラタモリ」のオープニングで見られる効果に似ている。

RGB を伸張させる normalize

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色効果

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

3色効果

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

4色効果

使ったフィルタの解説

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)