メディアプログラミング演習 ―第1回(第1テーマ3日目)― 画像変換ーその2 プログラムの雛形 • Sample2の概要 ・img_inに読み込む,表示 ・全てのx,yに対して 画像img_in のピクセル(x,y) への操作 → 画像img_out ・img_outの表示,書き出し ピクセル単位の処理雛形 for ( int y = 0; y < img_in.height; y+=1) { for ( int x = 0; x < img_in.width; x+=1) { img_out.pixels[*] <- img_in.pixels[*] } } 実際の「処理」の記述 for ( int y = 0; y < img_in.height; y+=1) { for ( int x = 0; x < img_in.width; x+=1) { float gw=gray(x,y); int pos = x + y*img_in.width; img_out.pixels[pos] = color(gw,gw,gw); } } RGB ー> グレースケール float gray(int x, int y){ int pos = x + img_in.width*y; color c = img.pixels[pos]; float r = red( c ); float g = green( c ); float b = blue( c ); return( 0.3 * r + 0.59 * g + 0.11 * b); } • グレースケール化(2-1) サンプル画像 4階調変換(2-2) float gw=gray(x,y); gw=int(gw/64)*64; int pos = x + y*img_in.width; img_out.pixels[pos] = color(gw,gw,gw); 4階調変換(2-2) 反転画像(2-3) float gw=gray(x,y); gw=255‐gw; int pos = x + y*img_in.width; 反転画像(2-3) ミラー反転 int pos1 = x + y*img_in.width; int pos2 = (img_in.width‐x‐1) + y*img_in.width; img_out.pixels[pos2] = img_in.pixels[pos1]; ミラー反転(2-4) セピア化(2-5) colorMode[HSB,360,100,100] int pos = x + y*img_in.width; float h=hue(img_in.pixels[pos]); float s=saturation(img_in.pixels[pos]); float b=brightness(img_in.pixels[pos]); img_out.pixels[pos]=color(29,s,b); セピア化(2-5) 来週 画像変換 回転変換を中心に演習
© Copyright 2024 ExpyDoc