目次
前
次
モノクロ変換
HSPでは、画像データを入力するには、組込みプロシージャ
picload
を利用します。
この組込みプロシージャを使い、画像を入力し
表示するHSPコードは、以下。
-----------------------------------------------------------
; set screen dimensions
screen 0,640,480
; get image
picload "NEC_0105.JPG",1
stop
-----------------------------------------------------------
携帯電話のカメラで撮影した、リゾートの看板を
表示してみると、次のようになります。
RGB成分取得
コンピュータの中では、画像データをR(Red)、G(Green)、B(Blue)の
各成分を8ビットに分割して扱っています。
実際には、8ビットx4=4バイトとして扱います。
4バイト中1バイトは、輝度に当てて使います。
8ビットx3で、どの程度の色を表現できるかを計算すると
256x256x256=16,777,216
になります。
人間の目では、仔細を判読できないほどの色数になります。
HSPでは、画像データの1ピクセルあたりの色情報を、RGBの3成分に
分けて取得します。
ginfo(16)
ginfo(17)
ginfo(18)
を利用します。
ginfoは、多分「GraphicINFOrmation」の略でしょう。
R、G、Bをそれぞれ指定するために、パラメータ16、17、18
を指定します。
ginfoは、単独利用ではなく、組込みプロシージャ
pget
と対にします。
pgetで、ピクセル位置をを指定後、情報を取得します。
次のコードで、色情報を取得できます。
; get informations of current pixel
pget i,j
; get color informations
r = ginfo(16)
g = ginfo(17)
b = ginfo(18)
変換式
画像をカラーからモノクロに変換するには、様々な方法があります。
最も簡単なのは、アナログテレビの中で使われている回路で
使われている変換式を応用します。
モノクロの場合は、カラーのRGB各成分の情報を輝度に変換して
足し算します。変換式は、人間の視覚特性を考慮して、次のように
定義しています。
s = 0.299 * r + 0.587 * g + 0.114 * b
この変換式は、RGBの各成分の最大値を100とした場合なので
8ビットの最大値255にするには、次の計算します。
s = 77 * r + 151 * g + 28 * b
s = s / 256
浮動小数点で計算しても、整数に変換しなければならないので
整数で計算して、結果を256で割った商を使います。
上の変換式を利用した、モノクロ変換のアプリケーション
コードは、次のようになります。
-----------------------------------------------------------
title "Make grayscale"
; set screen dimensions
screen 0,640,480
; constants
ylast = 480
xlast = 640
; get image
picload "NEC_0105.JPG",1
gosub *convert_gray
stop
*convert_gray
; raster
for j,0,ylast,1
; pixel
for i,0,xlast,1
; get informations of current pixel
pget i,j
; get color informations
r = ginfo(16)
g = ginfo(17)
b = ginfo(18)
; conversion
s = 77 * r + 151 * g + 28 * b
s /= 256
; set color
color s,s,s
; show
pset i,j
next
next
return
end
-----------------------------------------------------------
携帯電話で撮影した、カラー画像をモノクロに変換してみると
次のようになります。
モノクロ画像にすると、どこで反射が起きているのかが
わかります。
動物の中には、色盲である犬や猫がいます。
多分、食料を確保する場合に、色情報を使わないで
姿、形、光やそれまでに獲得した知識を合わせてる
のでしょう。
目次
前
次