상세 컨텐츠

본문 제목

컬러 영상과 색 공간

영상처리/OpenCV Python

by cepiloth 2021. 5. 25. 10:40

본문

728x90
반응형

OpenCV와 컬러 영상

컬러 영상은 3차원(RGB데이터) numpy.ndarray 로 표현. e.g) img.shape(h, w, 3)
OpenCV에서는 RGB순서가 아니라 BGR 순서를 기본으로 사용(초기 개발시에 BGR 로 시작 되었고 다른 의미는 없다)

 

OpenCV에서 컬러 영상 다루기

img1 = cv2.imread('lenna.bmp', cv2.IMREAD_COLOR)
#imread 메소드를 통하여 lenna.bmp 를 읽는다. IMREAD_COLOR FLAG 는 컬러 영상으로 읽는 다는 의미

img2 = np.zeros((400, 640, 3), np.uint8)
# 3차원의 빈 영상을 만든다는 의미

img3 = cv2.imread('lenna.bmp', cv2.IMREAD_GRAYSCALE)
#imread 메소드를 통하여 lenna.bmp 를 읽지만 IMREAD_GRAYSCALE FLAG 는 8비트 회색조 영상으로 읽는 다는 것을 의미한다.

img4 = cv2.cvtColor(img3, cv2.COLOR_GRAY2BGR)
#cvtColor 메소드는 img3영상을 3차원 영상으로 변환

 

RGB 색 공간

빛의 삼원색인 빨간색( RED), 녹색(GREEN), 파란색(B)을 혼합하여 색상을 표현(가산 혼합)
TV & 모니터, 카메라 센서 Bayer 필터, 비트맵

 

색상 채널 분리 예시 코드

cv2.split(m, mvNone) -> dst
m: 다채널 영상 (e.g)(B, G, R)로 구성된 컬러 영상
mv: 출력 영상
dst: 출력 영상의 리스트

 

색상 채널 결합

cv2.merge(mv, dst=None) -> dst
mv: 입력 영상 리스트 또는 튜플
dst: 출력 영상

 

color.py

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)  # src.shape: (480, 640, 3)
print('src.dtype:', 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_plane', b_plane)
cv2.imshow('G_plane', g_plane)
cv2.imshow('R_plane', r_plane)
cv2.waitKey()

cv2.destroyAllWindows()

 

색 공간 변환

영상 처리에서는 특정한 목적을 위해 RGB 색 공간을 HSV, YCrCb, Graysclale 등의 다른 색 공간으로 변환하여 처리
OpenCV 생 공간 변환 방법 : https://docs.opencv.org/master/de/d25/imgproc_color_conversions.html

 

색 공간 변환 함수

cv2.cvtColor(src, code, dst=None, dstCn=None) -> dst

 

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

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

Y = 0.299R + 0.587G + 0.114B

이외에도 HSL, HSI 등 다른 변환도 있고 약간의 수식이 다르다.

 

728x90
반응형

'영상처리 > OpenCV Python' 카테고리의 다른 글

영상의 명암비(Contrast) 조절  (0) 2021.05.25
히스토그램 분석  (0) 2021.05.25
영상의 논리 연산  (0) 2021.05.25
영상의 산술 연산  (0) 2021.05.25
영상의 화소 처리 방법  (0) 2021.05.25

관련글 더보기

댓글 영역