컬러 스페이스 변환
by Cori컬러 이미지를 그레이 스킬로 변환하는 것은 이미지 연산의 양을 줄여 속도를 높이는데 꼭 필요하다. OpenCV의 cv2.cvtColor() 함수를 이용해 컬러 이미지를 그레이 스케일이나 다른 컬러 스페이스로 변환하는 방법에 대해 살펴본다.
* 해당 포스팅에서 다루고 있는 모든 내용은 다음 서적을 참고하였습니다.
컬러 스페이스 변환
* 평균값을 구하는 알고리즘을 사용할 때, dtype이 uint8인 경우 평균 값을 구하는 과정에서 3채널의 값을 합하면 255보다 큰 값이
나올 수 있기 때문에, dtype을 uint16으로 변경해서 계산을 마치고 다시 uint8로 변경하는 작업이 필요하다.
cvtColor 사용법
-> out = cv2.cvtColor(img, flag)
· cv2.COLOR_BGR2GRAY -> BGR 컬러 이미지를 그레이 스케일로 변환
· cv2.COLOR_GRAY2BGR -> 그레이 스케일 이미지를 BGR 컬러 이미지로 변환
· cv2.COOR_BGR2RGB
· cv2.COLOR_BGR2HSV
· cv2.COLOR_HSV2BGR
· cv2.COLOR_BGR2YUV
· cv2.COLOR_YUV2BGR
... 더 많은 명령어를 보려면 [i for i in dir(cv2) if i.startswith('COLOR_')] 와 같이 작성
* cv2.COLOR_GRAY2BGR 연산이 실제 흑백 사진을 컬러 사진으로 바꿔주는 것은 아니며, 2차원 배열 이미지를 3개 채널이 모두 같은 값을 갖는 3차원 배열로 변환하는 것이다. 영상 간 연산을 할 때 서로 차원이 다르면 연산을 할 수 없으므로 차원을 맞추는 용도로 -
HSV vs YuV
1) HSV (HSV, HSI, HSL)
-> RGB와 마찬가지로 3채널 컬러 이미지 (H: 색조, S: 채도, V: 명도)를 표시. 명도를 표현하는 방법에 따라 마지막 V를 I(Intensity, 밀도), L(Lightness, 명도)로 표기하는 컬러 시스템 존재
2) YuV
-> 사람이 색상을 인식할 때 밝기에 더 민감하고 색상은 상대적으로 둔감한 점을 고려해서 만든 컬러 스페이스 Y(Luma, 밝기), U(Chorma Blue: 밝기와 파란 색과의 색상 차), V(Chorma Red: 밝기와 빨간 색과의 색상 차)를 의미하며, Y(밝기)에 많은 비트수를 할당하고 U(Cb)와 V(Cr)에는 적은 비트 수를 할당하여 데이터를 압축하는 효과를 가짐
* YuV는 요즘들어 YCbCr로 인코딩된 파일 형식을 설명하는 용어로 사용되며, 밝기 정보와 컬러 정보를 분리해서 사용하기 때문에 명암 대비가 좋지 않은 영상을 좋게 만드는 데 대표적으로 활용됨
'AI > Computer Vision' 카테고리의 다른 글
영상 합성과 마스킹 (1) | 2021.09.22 |
---|---|
두 영상 간 다른 점 찾기 (차영상) (1) | 2021.09.21 |
영상 합성 (알파 블렌딩) (0) | 2021.09.20 |
오츠의 알고리즘 & 적응형 스레시홀드 (0) | 2021.09.19 |
관심영역 지정하기 (0) | 2021.09.17 |
블로그의 정보
코딩하는 오리
Cori