Color
- ์์ : ์์ ๋ช ์นญ, ์์ ํน์ฑ
- ๋ช ๋ : ๋ฐ์ ์ ๋๋ฅผ ๋ํ๋
- ์ฑ๋ : ์์ด ์ ๋ช ํ๊ฑฐ๋ ํํ ์ ๋๋ฅผ ๋ํ๋
RGB
- ์ผ์ค ์๊ทน ์ด๋ก
- ์์ถ์ธํฌ๋ ํ์ฅ 630nm, 530nm, 450nm์ ๊ฐ์ฅ ๋ฏผ๊ฐํ๊ฒ ๋ฐ์ํ๋ค.
- ๋น์ ์ผ์์์ด๋ฉฐ, ์ปฌ๋ฌ ๋ชจ๋ํฐ(๋์คํ๋ ์ด)์ ์ ํฉํ๋ค.
- RGB์ ๋ณด์์ CMY์ด๋ค.
- ์ง๊ด์ ์ด์ง ์๋๋ค๋ ๋จ์ ์ด ์๋ค.
์์ RGB ์์์์์ ๋ณํ์ฒ๋ผ ๋นจ๊ฐ์๋ง์ R์์์์ ๋ฐ์ ๋ช ์์ ๊ฐ์ง์ง๋ง, G์ B์์์์๋ ์ด๋ก๊ฒ ๋ํ๋๋ค.
์ด๋ก์ ์๋๋ G์์์์ ๋ฐ์ ๋ช ์์ ๊ฐ์ง ๊ฒ์ด๋ค.
ํ๋ฐฑ์์ grayscale์ RGB ์์์ผ๋ก ๋ฐ๊พธ๊ธฐ ์ค์ต ์ฝ๋
import cv2
# ํ๋ฐฑ ์์ ์ฝ๊ธฐ
gray_image = cv2.imread('gray_image.jpg', cv2.IMREAD_GRAYSCALE)
# ํ๋ฐฑ ์์์ RGB๋ก ๋ณํ
rgb_image = cv2.cvtColor(gray_image, cv2.COLOR_GRAY2RGB)
# ๋ณํ๋ RGB ์์ ์ถ๋ ฅ
cv2.imshow('RGB Image', rgb_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
CIE
- ๊ฐ์์ ์ผ์์
- ์ํ์ ์ผ๋ก ์ ๋ํจ
- Y = ๋ช ๋ / X, Z = ์์ ๊ฒฐ์
- ๋ชจ๋ ์์ ๋ค ๋ํ๋ผ ์ ์์. ๋ฌผ๊ฐ๊ณผ ๊ฐ์
RGB ์์์ CIE ์์์ผ๋ก ๋ฐ๊พธ๊ธฐ ์ค์ต ์ฝ๋
import numpy as np
def CIE(rgb):
matrix = np.array([[0.4124564, 0.3575761, 0.1804375],
[0.2126729, 0.7151522, 0.0721750],
[0.0193339, 0.1191920, 0.9503041]])
rgb_normalized = rgb / 255.0
xyz = np.dot(matrix, rgb_normalized)
return xyz
# RGB ๊ฐ [R, G, B]
rgb_color = np.array([255, 0, 0])
# RGB๋ฅผ CIE XYZ๋ก ๋ณํ
xyz_color = CIE(rgb_color)
print(xyz_color)
CMY
- ๊ฐ์ฐ ๋ชจ๋ธ์ด๋ค.
- ๋ฌผ๊ฐ์ ํฉ์ฑ์ ์ฌ์ฉ๋๋ฉฐ ํ๋ฆฐํฐ๊ธฐ์ ์ฌ์ฉ๋๋ค.
- C+M+Y = Black
- ๋ฌผ๊ฐ์ ์ผ์์์ CMY์ด๋ค. (๋น์ ์ผ์์์ธ RGB์ ํท๊ฐ๋ฆฌ์ง ๋ง์์ผํจ)
RGB ์์์ CMY ์์์ผ๋ก ๋ฐ๊พธ๊ธฐ ์ค์ต ์ฝ๋
def CMY(rgb):
cmy_color = [255 - rgb[0], 255 - rgb[1], 255 - rgb[2]]
return cmy_color
# RGB ๊ฐ [R, G, B]
rgb_color = [255, 0, 0]
# RGB๋ฅผ CMY๋ก ๋ณํ
cmy_color = CMY(rgb_color)
print(cmy_color)
HSV (HSB, HSI)
- RGB๋ชจ๋ธ์ ๋จ์ ์ ๋ณด์ํ ์ปฌ๋ฌ ๋ชจ๋ธ์ด๋ค.
- RGB์ ๋นํด ์ง๊ด์ ์ด๋ค.
- Hue(์์), Saturation(์ฑ๋), Value(๋ช ๋) - Brightness๋ผ๊ณ ๋ ํ๋ค.
- ์ธ๊ฐ์ด ์์ ๋๋ผ๊ณ ํํํ๋ ๊ด์ ์์ ์ข์ ์ปฌ๋ฌ ๋ชจ๋ธ์
๊ฐ์ด๋ฐ์์ ๋ฐ๊นฅ์ชฝ์ผ๋ก ๋๊ฐ์๋ก ์ฑ๋(S)๊ฐ ์ปค์ง๋ค.
๊ฐ์ด๋ฐ์์ ์ฌ๋ผ๊ฐ์๋ก ๋ช ์(I)๊ฐ ์ปค์ง๋ค.
CMS (Color Management System) - ์ปฌ๋ฌ ํธํ์ฑ
- ์ปฌ๋ฌ๋ชจ๋ธ, ์ฅ๋นํน์ฑ์ ๋ฐ๋ฅธ ์ค์ฐจ๋ฅผ ์ต์ํ
- ๊ฐ๋ณ ์ฅ๋น์ ์ปฌ๋ฌ๋ชจ๋ธ, ์ฅ๋นํน์ฑ์ ํ๋กํ ํํ๋ก ๋ํ๋
- ์ฅ๋น์ ๋ฌด๊ดํ ์ปฌ๋ฌ๊ณต๊ฐ์ผ๋ก ์ฌ์
์ปฌ๋ฌ ์์ ์ฒ๋ฆฌ
๊ฐ์ฅ ๋จ์ํ ๋ฐฉ๋ฒ์ ์ธ ์ฑ๋์ ๋ ๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ด๋ค.
์ฆ, R, G, B ์ฑ๋์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ์ฃผํ์ฌ, ๊ฐ๊ฐ์ ์ฐ์ฐ์ ์ํํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์๋ก์ด RGB ์์์ผ๋ก ์ทจํ๋ ๊ฒ์ด๋ค.
๊ทธ๋ผ ๋ ๋ฆฝ์ ์ผ๋ก ์ ์ฉํ๋ฉด ์ ์ ํ์ง ์์ ๊ฒฝ์ฐ๋ ์๋? ์๋ค.
ํ์คํ ๊ทธ๋จ ํํํ ์ ๊ฒฝ์ฐ์๋ ์ ์ ํ์ง ์๋ค.
๐ ์ด์ : R, G, B๊ฐ ์๋ก ๋ฐ๊ธฐ์ ์์ ์ฑ๋ถ์ด ์๊ด๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ ๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌํ ํ, ํฉ์น๋ฉด ์์์ด ์ด์ํ๊ฒ ๋ณํ๊ธฐ ๋๋ฌธ์ด๋ค.
๐ ํด๊ฒฐ ๋ฐฉ๋ฒ : RGB๋ฅผ HSI๋ YCbCr๋ก ๋ณํํ ํ I(ํน์ Y) ์ฑ๋ถ๋ง ์ฌ์ฉํด์ ํ์คํ ๊ทธ๋จ ํํํ๋ฅผ ์งํํด์ ํฉ์น๋ค. ์ด ๊ฒฝ์ฐ์๋ ์์์ ์ ์งํ๊ณ ๋ฐ๊ธฐ ์ฑ๋ถ์์๋ง ํ์คํ ๊ทธ๋จ ํํํ๊ฐ ๊ฐ๋ฅํ๋ค.
์ปฌ๋ฌ ๋ชจ๋ธ C์ธ์ด ์ค์ต ์ฝ๋