๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿค– Computer Vision

์ปดํ“จํ„ฐ ๋น„์ „ ์˜์ƒ์ฒ˜๋ฆฌ - ์ปฌ๋Ÿฌ Color (RGB, CIE, CMY, YCbCr, HSI, HSV ๋ชจ๋ธ), ์‹ค์Šต ์ฝ”๋“œ Python, openCV

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์–ธ์–ด ์‹ค์Šต ์ฝ”๋“œ

2023.10.02 - [๐Ÿค– Computer Vision] - ์ปดํ“จํ„ฐ ๋น„์ „ ์˜์ƒ์ฒ˜๋ฆฌ - ์ปฌ๋Ÿฌ Color (HSV, HSB, HSI๋ชจ๋ธ), ์‹ค์Šต ์ฝ”๋“œ C์–ธ์–ด, C++

 

 

728x90

'๐Ÿค– Computer Vision' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์ปดํ“จํ„ฐ ๋น„์ „ ์˜์ƒ์ฒ˜๋ฆฌ - ์ปฌ๋Ÿฌ Color (HSV, HSB, HSI๋ชจ๋ธ), ์‹ค์Šต ์ฝ”๋“œ C์–ธ์–ด, C++  (0) 2023.10.02
์ปดํ“จํ„ฐ ๋น„์ „ ์˜์ƒ์ฒ˜๋ฆฌ - ์—์ง€ ๊ฒ€์ถœ (๋””์ง€ํ„ธ ์˜์ƒ์˜ ๋ฏธ๋ถ„, ๊ณ„๋‹จ ์—์ง€, ๋žจํ”„ ์—์ง€, ์Šค๋ฌด๋”ฉ ๊ธฐ๋ฒ•, ์†Œ๋ฒจ ์—ฐ์‚ฐ์ž, ์˜๊ต์ฐจ ์ฐพ๊ธฐ)  (0) 2023.09.11
์ปดํ“จํ„ฐ ๋น„์ „ ์˜์ƒ์ฒ˜๋ฆฌ - (ํŒฝ์ฐฝ, ์นจ์‹, ์—ด๊ธฐ, ๋‹ซ๊ธฐ) openCV Python ์ฝ”๋“œ  (1) 2023.08.22
์ปดํ“จํ„ฐ ๋น„์ „ ์˜์ƒ์ฒ˜๋ฆฌ - ์ด์ง„ ๋ชจํด๋กœ์ง€, ๋ช…์•” ๋ชจํด๋กœ์ง€ (ํŒฝ์ฐฝ, ์นจ์‹, ์—ด๊ธฐ, ๋‹ซ๊ธฐ)  (0) 2023.07.31
์ปดํ“จํ„ฐ ๋น„์ „ ์˜์ƒ์ฒ˜๋ฆฌ - ์ ์—ฐ์‚ฐ, ์˜์—ญ์—ฐ์‚ฐ, ๊ธฐํ•˜์—ฐ์‚ฐ (๋””์กธ๋ธŒ, ์ปจ๋ณผ๋ฃจ์…˜, ๋ฉ”๋””์•ˆ ํ•„ํ„ฐ, ๊ฐ€์šฐ์‹œ์•ˆ, ๊ฐ๋งˆ ์ˆ˜์ •)  (0) 2023.07.29