colorspaceパッケージのLab
Lab に注目したのは、色差が計算できる点です。
R言語のcolorspaceパッケージの LAB は、L*[0..100]、a*[-100..100]、b*[-100..100] と説明があります。しかし、この全域が表示可能なRGBに対応するわけではないので有効範囲のイメージが知りたいと思いました。
L*a*b* の概要は、a*=b*=0 がグレーで、このときL*=0は黒、L*=100は白を表します。
a* は、緑から赤への変化、b*は、青から黄への変化を表します。
 |
ここにある3枚の図は、b* を-30,0,30に固定して、L* と a* の関係を図示したものです。
b=0の図のa*=0の縦の線はグレーを表し、下が黒、上が白になる箇所です。
b=-30の図は、青色側へ少しずれた箇所です。
b=30の図は、黄色側へ少しずれた箇所です。
|
 |
 |
 |
ここにある3枚の図は、a* を-30,0,30に固定して、L* と b* の関係を図示したものです。
a=0の図のb*=0の縦の線はグレーを表し、下が黒、上が白になる箇所です。
a=-30の図は、緑色側へ少しずれた箇所です。
a=30の図は、赤色側へ少しずれた箇所です。
|
 |
 |
 |
この図は、L*に水平な面を示しています。前述の図から、有効範囲が広そうなL*=60を描きました。
前述の図を上から(あるいは下から)見た状態です。
縦が、a*軸で、下が緑、上が赤です。
横が、b*軸で、左が青、右が黄です。
「色」に、もう少し図があります。
|
この図は、下記のR言語のスクリプトで描きました。
L,a,bの入れ替えや図のタイトル軸名を書き換えながら作りました。
R言語の色の扱いは、「色の扱い」を参照ください。
いったんRGBを#で始まる16進文字列に変換していますが、「colorspaceパッケージのRGB」を参照ください。
- bm <- matrix(0, nrow=3,ncol=201*101)
- a = 0
- i <- 1
- for(L in 100:0)
- {
- for(b in -100:100)
- {
- rgb <- col2rgb(hex(LAB(L,a,b)))
- bm[,i] <- c(rgb[1],rgb[2],rgb[3])
- i = i + 1
- }
- }
- windows(4,4)
- par(mar=c(4,3,3,2))
- bm_image(bm,201,101,main="Lab a=0")
- axis(1,c(0,100,200),labels=c("-100","0","100"))
- axis(2,c(0,50,100),labels=c("0","50","100"))
- mtext("b",1,line=2,font=2)
- mtext("L",2,line=2,font=2)
|
|