Pixel Blender

橋本麦さんの Pixel Blender という名前の実験映像のようなものがあって、好きなんだけど見つからない。
このリールの46秒以降に少し出ていました。
vimeo.com




最近モザイクの時に、 i X j 行列をつかったので、それをそのまま使い回せばなんかできそうな気がする。


2枚の画像のピクセルの色を、それぞれの係数を掛けてあわせる。
係数は時間軸からとる。
colorのデータ型をそのまま使うとなんか良くなさそうな気がしたので、それぞれRGBに分けた。

    // PImage img1, img2
    // 2種類の画像を読む

    // pick , expode RGB
    color c1 = img1.get(i, j);
    int r1 = int(red(c1));
    int g1 = int(green(c1));
    int b1 = int(blue(c1));

    color c2 = img2.get(i, j);
    int r2 = int(red(c2));
    int g2 = int(green(c2));
    int b2 = int(blue(c2));

    // remap
    float m = abs(map(count, 0,600, -1, 1));


    // set color
    stroke(int(r1*m + r2*(1-m)), int(g1*m + g2*(1-m)), int(b1*m + b2*(1-m)));

    point(i, j);

    // あとは、 saveFrameで書き出す。


書き出された後の画像を gif にするなり、動画にするなりするとき、面倒な作業をしたくないのでFFmpegを入れてみた。

gif
f:id:ysok_na:20170610182751g:plain



FFmpegでの、連番の画像の動画化、動画の gif 化ができた。
なんか思ったような滑らかさが出ない。
多分、係数の単調増加(変化)とかそのへんか、素材か、1コマあたりの速度か。
細部のつめが必要です。

このプログラムでは2枚の画像がそれぞれ単調に変化している。
f:id:ysok_na:20170610182804j:plain


sin波のようなものも考えたが、m と (1-m)では、
和が1なので全体の色の明るさが変わらないが、sin波などでは1より小さいタイミングが出てきて、そこでは多分全体的に暗くなる。



あと考えられるのは、いまは一コマ一コマ同じ速度で進んでいるけど、その時間に差をつけてもいいのかもしれない。



.