def linear_sRGB(c):
ย ย if c <= 0.04045:
ย ย ย ย return c / 12.92
ย ย else:
ย ย ย ย return pow((c + 0.055) / 1.055, 2.4)
def sRGB_to_XYZn(r, g, b):
ย ย Rlin = linear_sRGB(r / 255.0)
ย ย Glin = linear_sRGB(g / 255.0)
ย ย Blin = linear_sRGB(b / 255.0)
ย ย Xn = Rlin * 0.4124 + Glin * 0.3576 + Blin * 0.1805
ย ย Yn = Rlin * 0.2126 + Glin * 0.7152 + Blin * 0.0722
ย ย Zn = Rlin * 0.0193 + Glin * 0.1192 + Blin * 0.9505
ย ย return Xn, Yn, Zn
def gamma_sRGB(c):
ย ย if c <= 0.0031308:
ย ย ย ย return 12.92 * c
ย ย else:
ย ย ย ย return 1.055 * pow(c, 1/2.4) - 0.055
def XYZn_to_sRGB(Xn, Yn, Zn):
ย ย Rlin = Xn * 3.2406255 + Yn *-1.5372080 + Zn *-0.4986286
ย ย Glin = Xn *-0.9689307 + Yn * 1.8757561 + Zn * 0.0415175
ย ย Blin = Xn * 0.0557101 + Yn *-0.2040211 + Zn * 1.0569959
ย ย R = round(255 * gamma_sRGB(Rlin))
ย ย G = round(255 * gamma_sRGB(Glin))
ย ย B = round(255 * gamma_sRGB(Blin))
ย ย return R, G, B
def linear_AdobeRGB(c):
ย ย if c <= 0.0:
ย ย ย ย return 0.0
ย ย return pow(c, 2.19921875)
def AdobeRGB_to_XYZn(R, G, B):
ย ย Rlin = linear_AdobeRGB(R / 255.0)
ย ย Glin = linear_AdobeRGB(G / 255.0)
ย ย Blin = linear_AdobeRGB(B / 255.0)
ย ย Xn = Rlin * 0.57667 + Glin * 0.18556 + Blin * 0.18823
ย ย Yn = Rlin * 0.29734 + Glin * 0.62736 + Blin * 0.07529
ย ย Zn = Rlin * 0.02703 + Glin * 0.07069 + Blin * 0.99134
ย ย return Xn, Yn, Zn
def gamma_AdobeRGB(c):
ย ย if c <= 0.0:
ย ย ย ย return 0.0
ย ย return pow(c, 1/2.19921875)
def XYZn_to_AdobeRGB(Xn, Yn, Zn):
ย ย Rlin = Xn * 2.04159 + Yn *-0.56501 + Zn *-0.34473
ย ย Glin = Xn *-0.96924 + Yn * 1.87597 + Zn * 0.04156
ย ย Blin = Xn * 0.01344 + Yn *-0.11836 + Zn * 1.01517
ย ย R = round(255 * gamma_AdobeRGB(Rlin))
ย ย G = round(255 * gamma_AdobeRGB(Glin))
ย ย B = round(255 * gamma_AdobeRGB(Blin))
ย ย return R, G, B
๊ฒ์ํด์ ๊ธ์ด์ด
sRGB -> Linear_sRGB -> XYZN(์ ๊ทํ๊ณต๊ฐ) -> Linear_Adobe RGB -> Adobe_RGB ๋ก ๋ฐ๊พธ๋๊ฑฐ๊ฐ์๋ฐ
๊ทธ๋ผ ์ด๊ฑฐ ๊ทธ๋๋ก ๋ณต๋ถํด์ ์ปค์คํ ์์ด๋์ ๊ฐ๋ค์ฐ๋ฉด ํฌํ ์ต Adobe RGB์ฒ๋ผ ์ธ์ ์๋๊ฑด๊ฐ
๊ทผ๋ฐ ๋นํธ๋ RGBA ๊ฐ๊ฐ 8๋นํธ๋ก ํ์ ๋์์ํ ๋ฐ ์ด๋ฐ ๋ณํํจ์๋ง์ผ๋ก ์๊ณต๊ฐ์ด ๋์ด๋๋ค๋๊ฒ ์ ์ดํด๊ฐ ์๊ฐ๋น
์ด๋ก ์์ผ๋ก๋ ๊ฐ๋ฅํจ....... ๋ค๋ง ์ ์ ๋ชจ๋ํฐ๊ฐ adobe RGB ์์ฌํ์ ๋ชปํ๋ฉด ๋ฌด์ธ๋ชจ๋ผ ๊ฒ์์์๋ ์ ๊ฒฝ์์ฐ๋๊ฑธ๋ก.....ใ ใ
์ ์๊ฐํด๋ณด๋ ๋ฌด์ธ๋ชจ๋ฅผ ๋์ด์ color space๊ฐ ์ค์ด๋๋ ์คํ๋ ค ์ฝ๊ฐ ์์ธ์ฑ์ด ๋จ์ด์ง๊ฒ ........
์ผ์ ์ด๊ฒ๋ ๋ป๋์ด์ผ ใ ใ
์ด์ ๋๊ธ์๋ ๋ฌ์์ง๋ง ๊ณต๊ฐ์ ๋๋ฆฌ๋๊ฒ ์๋๋ผ ๊ณต๊ฐ์ ์ฑ์ฐ๋ ๊ณก์ ์ ๋ณํํ๋๊ฑฐ๋ผ๋๊น.... ๊ณ์ฐ์ ์ ๋ด๋ด ๊ฐ๋ง์ง์๊ณก์ ๋งตํํ๊ณ ์์์
ใฑใ ใฑใ ๋๋ถ์ ์ดํดํจ ์กฐ์ธ ใฑใ ใณ ๊ทผ๋ฐ ์ค๋ช ์ด ์์๋ฟ์์ ์ข๋ ์ง๊ด์ ์ผ๋ก ๋งํด์คฌ์ผ๋ฉด ์ข์์๋ฏ
sRGB๋ 0~1 ์์ 0~1๊ฐ์ ๊ฐ๊น์ธ์๋ก ๋น์ค์ด ๋์์ง๋๋ก ์ํ๋ง๋์ด์ง ์ธ์ฝ๋ฉ ๋ฐฉ์์ด๊ณ Adobe RGB๋ ๊ทธ๊ฒ๋ณด๋ค๋ ์กฐ๊ธ๋ ๊ท ์ผํ๊ฒ ์ํ๋งํ ์ ์๋ ๋ฐฉ์? ์ด๋ผ๊ณ ์ค๋ช ํด์คฌ์ผ๋ฉด ์ข์์๋ฏ?
์ฝ๋๋จ ์ฃผ๋ฑํ์ ์ค๋ช ์ ์์ธํ๊ฒ ๋ชป์ ๊ฒ ๋ค