メディアプログラミング演習 ―第1回(第1テーマ1日目)― 画像変換ーその1 概要:画像処理,画像変換 • デジタル画像:ピクセルの集まり 画像 : ピクセルの集まり 画像生成:ピクセルに色付け 処理の流れ buffer buffer file file display 内部構造 プログラムの雛形 • Sample2の概要 ・img_inに読み込む,表示 ・全てのx,yに対して 画像img_in のピクセル(x,y) への操作 → 画像img_out ・img_outの表示,書き出し PImage img; void setup() { img=loadImage("xxx.png"); size(img.width,img.height); noLoop(); } void draw() { image(img,0,0); img.loadPixels(); for(int i=0;i<img.width*img.height‐1;i++) { float r=red(img.pixels[i]); float g=green(img.pixels[i]); float b=blue(img.pixels[i]); float bw=0.299*r+0.587*g+0.144*b; img.pixels[i]=color(bw,bw,bw); } img.updatePixels(); img.save("upd.png"); image(img,0,0); } wnndow ピクセル単位の処理雛形 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) { int pos = x + y*img_org.width; color c = img_org.pixels[pos]; float r = red( c ); float g = green( c ); float b = blue( c ); float gray = 0.3 * r + 0.59 * g + 0.11 * b; img_upd.pixels[pos] = color(gray,gray,gray); } } グレースケール化(2-1) サンプル画像 演習の進め方 z演習報告をダウンロード z演習が終わる毎に画像を貼る, z時間内の提出(終了時にロックされる) 終わるたびに提出(が無難) 来週 画像変換のほかの例 <事前学習>を必ず自習のこと
© Copyright 2024 ExpyDoc