現在地: メニュー >> 発展編05 >> 発展編05::グレイスケール化

グレイスケール化


RGB3色をグレイスケール変換する式として、例えば
輝度値 = 0.299 * Red + 0.587 * Green + 0.114 * Blue
がある。

手順


  1. 一度「カラーバッファ」にカラーで書きこむ。
  2. 各チャネルでglPixelTransfer()を設定し、「GL_LUMINANCE」を指定してglReadPixels()を呼ぶ。
  3. 読み込んだデータをカラーバッファに書き込む

となる。

「GL_LUMINANCE」を指定してglReadPixels()を実行する場合、以下の式が使われる。
luminance = (red * redScale + redBias) + (green * greenScale + greenBias) + (blue * blueScale + blueBias)

これを使って以下のように書ける。
[例]
	glDrawPixels(w,h,GL_BGR,GL_UNSIGNED_BYTE,rgb);	//1度カラーバッファに書き込む
	//グレイスケール変換
	glPixelTransferf(GL_RED_SCALE, 0.299f);
	glPixelTransferf(GL_GREEN_SCALE, 0.587f);
	glPixelTransferf(GL_BLUE_SCALE, 0.114f);

	//グレイスケールで読み込む
	glReadPixels(0,0,w, h, GL_LUMINANCE, GL_UNSIGNED_BYTE, gray);
	
	glPixelTransferf(GL_RED_SCALE, 1.0f);
	glPixelTransferf(GL_GREEN_SCALE, 1.0f);
	glPixelTransferf(GL_BLUE_SCALE, 1.0f);

※注意点
スケール変換したら元にもどす。



サンプルコード

目次

― その他 ―

Wiki内検索

計測中...(07.10.8〜)

Save The World






▲よろしければ広告のクリックもお願いします


▲ランキングに参加しました

管理人/副管理人のみ編集できます