Computer Vision/opencv(python)

[14] 3) 컬러 영상과 색 공간

jwjwvison 2021. 3. 18. 10:19
  • OpenCV와 컬러 영상
    • 컬러 영상은 3차원 numpy.ndarry로 표현. img.shape=(h,w,3)
    • openCV 에서는 RGB 순서가 아니라 BGR 순서를 기본으로 사용

 

  • OpenCV 에서 컬러 영상 다루기
img1=cv2.imread('lenna.bmp',cv2.IMREAD_COLOR)

img2=np.zeros((480,640,3),np.uint8)

img3=cv2.imread('lenna.bmp',cv2.IMREAD_GRAYSCALE)
img4=cv2.cvtColor(img3,COLOR_GRAY2BGR)   # 이 경우 img4영상의 각 픽셀은 B,G,R 색 성분 값이 모두 같게 설정됨

 

  • (색상) 채널 분리
cv2.split(m,mv=None) -> dst

 • m: 다채널 영상 (ex) (B, G, R) 로 구성된 컬러 영상
 • mv: 출력 영상
 • dst 출력 영상의 리스트

 

  • (색상) 채널 결합
cv2.merge(mv,dst=None) -> dst

 • mv: 입력 영상 리스트 또는 튜플
 • dst: 출력 영상

 

  • RGB 색상 평면 나누기
import sys
import numpy as np
import cv2

src=cv2.imread('candies.png',cv2.IMREAD_COLOR)

if src is None:
    print('Image load failed!')
    sys.exit()

print('src.shape:',src.shape)          #(480, 640, 3)
print('src.dtype:',src.dtype)          # uint8

# RGB 색 평면 분할
b_plane, g_plane, r_plane = cv2.split(src)

#b_plane = src[:, :, 0]
#g_plane = src[:, :, 1]
#r_plane = src[:, :, 2]

cv2.imshow('src',src)
cv2.imshow('B',b_plane)
cv2.imshow('G',g_plane)
cv2.imshow('R',r_plane)
cv2.waitKey()
cv2.destroyAllWindows()

src_hsv=cv2.cvtColor(src,cv2.COLOR_BGR2HSV)
planes=cv2.split(src_hsv)

cv2.imshow('src',src)
cv2.imshow('plane[0]',planes[0]) 
cv2.imshow('plane[1]',planes[1])   
cv2.imshow('plane[2]',planes[2])   
cv2.waitKey()

cv2.destroyAllWindows()

 

  • 색 공간 변환
    • 영상 처리에서는 특정한 목적을 위해 RGB 색 공간을 HSV, YCrCb , Grayscale 등의 다른 색 공간으로 변환하여 처리

 

  • 색 공간 변환 함수
cv2.cvtColor(src,code,dst=None,dstCn=None) ->dst

 • src: 입력 영상

 • code: 색 변환 코드

 • dstCn : 결과 영상의 채널 수 . 0 이면 자동 결정
 • dst 출력 영상

 

  • RGB 색상을 그레이스케일로 변환

 • 장점: 데이터 저장 용량 감소, 데이터 처리 속도 향상
 • 단점: 색상 정보 손실

 

 

  • HSV 색 공간

 • Hue: 색상, 색의 종류
 • Saturation: 채도, 색의 탁하고 선명한 정도
 • Value: 명도, 빛의 밝기

 

  • HSV 값 범위

 • cv2.CV_8U 영상의 경우
 ▪ 0 ≤ 𝐻 ≤ 179
 ▪ 0 ≤ 𝑆 ≤ 255
 ▪ 0 ≤ 𝑉 ≤ 255

 

  • YCrCb 색 공간

 • PAL, NTSC, SECAM 등의 컬러 비디오 표준에 사용되는 색 공간
 • 영상의 밝기 정보와 색상 정보를 따로 분리하여 부호화 (흑백 TV 호환)
 • Y: 밝기 정보 (luma)
 • Cr, Cb : 색차 (chroma)

 

  • YCrCb 값 범위

 • cv2.CV_8U 영상의 경우
    0≤𝑌≤255
    0≤𝐶𝑟≤255
    0≤𝐶𝑏≤255