컬러 영상 처리의 기초

BERT·2023년 4월 25일
0

Computer Vision

목록 보기
29/56

OpenCV에서 컬러 영상 다루기

R G B 색 성분을 각각 256단계로 표현
CV_8UC3 타입
BGR 순서를 기본으로 사용

컬러 영상의 반전

Scalar(255)는 Scalar(255,0,0)과 동일 \rarr 3채널 영상에 부적합

Mat dst = Scalar(255) - src;
Mat dst = Scalar(255, 255, 255) - src;
Mat dst = ~src;
dst.at<Vec3b>(y, x) = Vec3b(255, 255, 255) - src.at<Vec3b>(y, x);

ColorOp

컬러 영상을 grayscale로 변환

Y=0.299R+0.587G+0.114BY=0.299R+0.587G+0.114B
데이터 저장 용량 감소, 연산 처리 속도 향상
색상 정보 손실

uchar gray = (uchar)(0.299 * r + 0.587 * g + 0.114 * b + 0.5);

실수 \rarr 정수 연산을 통한 연산 속도 최적화

uchar gray = (uchar)((299 * r + 587 * g + 114 * b) / 1000);

shift 연산자를 통한 속도 최적화

#define RGB2GRAY(r, g, b) ((4899*(r) + 9617*(g) + 1868*(b)) >> 14)

dst.at<uchar>(y, x) = (uchar)RGB2GRAY(r, g, b);

OpenCV API
src : 입력 영상
dst : 출력 영상
code : 색 변환 코드
dstCn : 결과 영상 채널 수

void cvtColor(InputArray src, 
			  OutputArray dst,
			  int code,
              int dstCn = 0);

ColorOp

0개의 댓글