数学の得意な方、変換をお願い致します。

Excelとvbaを使って計算するシートを作るにあたって、下記の式を
Y= X= Z=
の形式に変換したいと思いますが、^ 1/3(三分の一乗)のところの変換の仕方がわかりません。
Y= X= Z=の形に式を変換して頂けませんでしょうか。

L*a*b*表色系からXYZ表色系へ値を変換するための式になります。

L* = 116(Y/100)^ 1/3 - 16
a* = 500[(X/98.072)^ 1/3 - (Y/100)^ 1/3]
b* = 200[(Y/100)^ 1/3 - (Z/118.225)^ 1/3]

なお、L*a*b*に具体的な数値を当てはめた例は下記のとおりです。
63.4 = 116(Y/100)^ 1/3 - 16
0.0= 500[(X/98.072)^ 1/3  - (Y/100)^ 1/3]
-1.6 = 200[(Y/100)^ 1/3 - (Z/118.225)^ 1/3]

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/12/05 10:42:07
  • 終了:2011/12/05 18:48:11

ベストアンサー

id:a-kuma3 No.3

a-kuma3回答回数4561ベストアンサー獲得回数19052011/12/05 12:14:56

ポイント50pt

X, Y, Z とも、全て 1/3 乗なので、X^(1/3) を X' というふうに (Y, Z も) 置き換えると、
普通の三元一次連立方程式になります。

L* = 116(Y/100)^ 1/3 - 16
  ↓
L* = 116(Y'/(100^1/3)) - 16


で、X'、Y'、Z' を求めて、それぞれを三乗すれば求まります。


でも、方程式が解きたいわけじゃないんですよね?

■色変換式集 Lab
http://image-d.isp.jp/commentary/color_cformula/Lab.html

http://image-d.isp.jp/commentary/color_cformula/formula/LabtoXYZ.png


前の CMYK の質問のときには、計算式じゃなくてソフトを求めてたようだったので回答しませんでしたが、
他の色表現についての変換式も載ってますので、確認してみてください。

他2件のコメントを見る
id:a-kuma3

他の変換式でXn,Yn,Znという形で提示されるD50とかD60とかA光源とかの変数が含まれていない

ぼくが引用したページでは、Xγ 、Yγ 、Zγ が、それに相当します。

ページの下の方にちいさーく、こんな但し書きもあります。

#ただし、XrYrZrは対象とする物体色と同一照明下の完全拡散反射面の3刺激値です。
 通常Yr=100となるように標準化されています。

2011/12/06 11:56:15
id:nakamura12go

そうなんですね。見逃しておりました。失礼しました。

2011/12/07 13:38:56

その他の回答(3件)

id:taknt No.1

きゃづみぃ回答回数13539ベストアンサー獲得回数11982011/12/05 10:46:35

ポイント25pt

aaa= 1/3
L = 116*(Y/100)^ aaa - 16

といった感じにすればいいかと思います。

id:nakamura12go

ありがとうございます。

2011/12/05 18:45:18
id:windofjuly No.2

うぃんど回答回数2625ベストアンサー獲得回数11492011/12/05 12:00:27

ポイント50pt

関数を作ってみた

Function CIELAB2XYZ(L As Double, a As Double, b As Double) As Double()
    Dim Xn, Yn, Zn As Double
    Dim delta As Double
    Dim fx, fy, fz As Double
    Dim XYZ(2) As Double
    
    delta = 6 / 29

    Xn = 0.950456
    Yn = 1
    Zn = 1.088754

    fy = (L + 16) / 116
    fx = fy + a / 500
    fz = fy - b / 200

    XYZ(0) = IIf(fx > delta, Xn * fx ^ 3, (fx - 16 / 116) * 3 * delta ^ 2)
    XYZ(1) = IIf(fy > delta, Yn * fy ^ 3, (fy - 16 / 116) * 3 * delta ^ 2)
    XYZ(2) = IIf(fz > delta, Zn * fz ^ 3, (fz - 16 / 116) * 3 * delta ^ 2)
    
    CIELAB2XYZ = XYZ
End Function

呼び出し例

Sub Macro1()
    Dim XYZ() As Double
    XYZ = CIELAB2XYZ(63.4, 0, -1.6)
    MsgBox "X = " & XYZ(0) & vbCrLf & "Y = " & XYZ(1) & vbCrLf & "Z = " & XYZ(2) & vbCrLf
End Sub

参考にさせていただいた記事
http://ja.wikipedia.org/wiki/Lab%E8%89%B2%E7%A9%BA%E9%96%93#CIE_XYZ_.E3.81.B8.E3.81.AE.E5.A4.89.E6.8F.9B
http://opencv.jp/opencv-1.0.0/document/opencvref_cv_filters.html
http://komozo.blogspot.com/2011/04/rgbcielab.html

他1件のコメントを見る
id:windofjuly

訂正

    XYZ(0) = IIf(fx > delta, Xn * fx ^ 3, (fx - 16 / 116) * 3 * delta ^ 2 * Xn)
    XYZ(1) = IIf(fy > delta, Yn * fy ^ 3, (fy - 16 / 116) * 3 * delta ^ 2 * Yn)
    XYZ(2) = IIf(fz > delta, Zn * fz ^ 3, (fz - 16 / 116) * 3 * delta ^ 2 * Zn)
2011/12/05 14:55:10
id:nakamura12go

大変ありがとうございます。参考になりました。

2011/12/05 18:47:19
id:a-kuma3 No.3

a-kuma3回答回数4561ベストアンサー獲得回数19052011/12/05 12:14:56ここでベストアンサー

ポイント50pt

X, Y, Z とも、全て 1/3 乗なので、X^(1/3) を X' というふうに (Y, Z も) 置き換えると、
普通の三元一次連立方程式になります。

L* = 116(Y/100)^ 1/3 - 16
  ↓
L* = 116(Y'/(100^1/3)) - 16


で、X'、Y'、Z' を求めて、それぞれを三乗すれば求まります。


でも、方程式が解きたいわけじゃないんですよね?

■色変換式集 Lab
http://image-d.isp.jp/commentary/color_cformula/Lab.html

http://image-d.isp.jp/commentary/color_cformula/formula/LabtoXYZ.png


前の CMYK の質問のときには、計算式じゃなくてソフトを求めてたようだったので回答しませんでしたが、
他の色表現についての変換式も載ってますので、確認してみてください。

他2件のコメントを見る
id:a-kuma3

他の変換式でXn,Yn,Znという形で提示されるD50とかD60とかA光源とかの変数が含まれていない

ぼくが引用したページでは、Xγ 、Yγ 、Zγ が、それに相当します。

ページの下の方にちいさーく、こんな但し書きもあります。

#ただし、XrYrZrは対象とする物体色と同一照明下の完全拡散反射面の3刺激値です。
 通常Yr=100となるように標準化されています。

2011/12/06 11:56:15
id:nakamura12go

そうなんですね。見逃しておりました。失礼しました。

2011/12/07 13:38:56
id:rsc96074 No.4

rsc回答回数4399ベストアンサー獲得回数4032011/12/05 18:34:40

ポイント25pt

 こちらは参考になるでしょうか。
U = 98.072, W = 118.225として、
X = ((29 a+125 L+2000)^3 U)/3048625000000 = (98.072*(29*a+125*L+2000)^3)/3048625000000
Y = (25 (L+16)^3)/390224
Z = -((29 b-50 L-800)^3 W)/195112000000 = -(118.225*(29*b-50*L-800)^3)/195112000000

※参考URL
http://www.wolframalpha.com/input/?i=solve%5B%7BL+%3D+116%28Y%2F100%29%5E+1%2F3+-+16%2Ca+%3D+500%5B%28X%2FU%29%5E+1%2F3+-+%28Y%2F100%29%5E+1%2F3%5D%2Cb+%3D+200%5B%28Y%2F100%29%5E+1%2F3+-+%28Z%2FW%29%5E+1%2F3%5D%7D%2C%7BX%2CY%2CZ%7D%5D

id:nakamura12go

ありがとうございます。式で計算できるおもしろいサイトですね。

2011/12/05 18:47:25

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません