ページ 11

画像処理について

Posted: 2009年5月23日(土) 00:09
by クロウ
大学の画像処理の授業で出たこの課題に躓いています。
「画像中のランダムに選んだ画素に対し、その画素を中心にエッジの方向と大きさに比例した傾きと大きさの楕円で塗りつぶすプログラムを作成せよ」

現在のところ、「ランダムに選んだ画素を中心に決められた半径の円で塗りつぶす」ところまでは出来ましたが、その先にあるであろう「エッジの方向と大きさに比例した傾きと大きさの楕円」を実装することができません。

「エッジの方向と大きさに比例した傾きと大きさの楕円」について、どうすれば実装できるか丸一日考えてみましたが、結局上手くいかなかったのでここでアドバイスをいただくべく、質問させていただきます。



とりあえず、今現在の「ランダムに選んだ画素を中心に決められた半径の円で塗りつぶす」ところまでのソースコードを挙げておきます。
PImage src;

void setup(){
  size(200, 150);
  src = loadImage("picture.jpg");
}


int r1 = 7;
int r2 = 7;
void draw(){
  int i = int(random(src.width));
  int j = int(random(src.height));
  color c = src.get(i, j); // 画素(i, j)の画素値の取得
  noStroke();
  fill(c);
  ellipse(i, j,r1,r2);
}
コンパイラはprocessingで言語はjavaです。

Re:画像処理について

Posted: 2009年5月24日(日) 20:18
by Dixq (管理人)
回答でなくてごめんなさい。

「エッジの方向と大きさに比例した傾き」という事がよくわからないので、
その辺の説明を詳しくしていただけると回答が集まるかもしれませんm(_ _;)m

Re:画像処理について

Posted: 2009年5月25日(月) 23:11
by クロウ
どうやら、わかりにくかったようです。すみません。
つまり、
「明暗の差を楕円の大きさで表わし、明暗の向きを楕円の傾きで表わす。」
ということです。

例として、ある部分の画素をランダムに選びます。
///////////////////////////////////////////////
//             //             //             //
//(128,128,128)//   (0,0,0)   //(128,128,128)//
//             //             //             //
///////////////////////////////////////////////
//             //             //             //
//(128,128,128)//(255,255,255)//   (0,0,0)   //
//             //             //             //
///////////////////////////////////////////////
//             //             //             //
//(128,128,128)//(255,255,255)//(128,128,128)//
//             //             //             //
///////////////////////////////////////////////
ある画素のRGB値は(255,255,255)となっていたとき、周辺の画素を調べると次のようになっていた場合、

楕円の向きは
(255,255,255)→(0,0,0)、(255,255,255)→(128,128,128)、(255,255,255)→(255,255,255)
となり、(255,255,255)→(0,0,0)の方向には(255,255,255)の大きな楕円
(255,255,255)→(128,128,128)の方向には(255,255,255)の小さな楕円で表わします。
また、(255,255,255)→(255,255,255)の場合は明暗の変化がないので楕円は描かれません。