YUVで色を作るソフト

YUVの数字を変えるとどうなるか、チンプンカンプンのKOHAママのために、KOHA兄が5分??で作ったソフトを紹介します。

ProcessingのZipダウンロードは、こちら

ソースコードは、こちら↓

color rgb(float y, float cr, float cb) {
  float[] o = {0, 0, 0};
  o[0] = y+(cr*1.402);
  o[1] = y-(cr*0.714)-(cb*0.344);
  o[2] = y+(cb*1.772);
  /*
  R  = Y+1.402Cr
   G  = Y-0.714Cr-0.344Cb
   B  = Y+1.772Cb
   */
  return color(o[0], o[1], o[2]);
}
float y = 0.5;
float u;
float v;
void setup() {
  size(800, 400);
  noStroke();
  background(0, 255, 0);
  PFont font = loadFont("font.vlw");
  textFont (font); // 選択したフォントを指定する
}
int mode = 0;
void draw() {
  background(rgb((y*512)-128, (v*255)-128, (u*255)-128));
  if (keyPressed) {
    if (key == 'y') {
      mode = 0;
    }
    if (key == 'u') {
      mode = 1;
    }
    if (key == 'v') {
      mode = 2;
    }
  }
  fill(0);
  String t = "";
  if (keyPressed) {
    if (keyCode == UP) {
      if (mode == 0) { 
        y += 0.01;
      }
      if (mode == 1) {
        u += 0.01;
      }
      if (mode == 2) {
        v += 0.01;
      }
    }
    if (keyCode == DOWN) {
      if (mode == 0) { 
        y -= 0.01;
      }
      if (mode == 1) {
        u -= 0.01;
      }
      if (mode == 2) {
        v -= 0.01;
      }
    }
  }
  if (mode == 0) { 
    t = "y";
  }
  if (mode == 1) {
    t = "u";
  }
  if (mode == 2) {
    t = "v";
  }
  text("mode:"+t, 0, 48);
  text("y:"+nf(y,1,3), 0, 48*2);
  text("u:"+nf(u,1,3), 0, 48*3);
  text("v:"+nf(v,1,3), 0, 48*4);
  if(y < 0)y = 0;
  if(y > 1)y = 1;
  if(u < 0)u = 0;
  if(u > 1)u = 1;
  if(v < 0)v = 0;
  if(v > 1)v = 1;
}

え?もうこんなに書いたの?

とにかく、あっという間に打ち込み完了。

そもそも、YUVとは、何なのか?は、ウィキペディアを見てください。

ウィキペディアより⇩

https://ja.wikipedia.org/wiki/YUV

この画像は、ウィキペディアから借りました。

動画で、Yの数字を1に近づけると白に、0に近づけると黒になります。

0.5は、灰色です。

で、Yが0.5・・・つまり程よい中間の明るさだった場合、

Uを上のカラー図のX軸と考えます。Uを下げると緑っぽくなり、Uを上げれば青っぽくなる。

Vは、Y軸と考えます。Vを下げればやはり緑っぽくなり、上げれば赤っぽくなります。

このY(明るさ)、U(X軸)、V(Y軸)の組み合わせで、画面の色が表示できるらしいです。

KOHA兄の殴り書き

 

動画です。⇩

少しだけ、意味がわかったKOHAママです。

 

Follow me!

コメントを残す