Color Image Processing

이주희·2022년 12월 6일
0

영상 불러올 떄 IMREAD_COLOR로 사용
BGR 색상으로 픽셀 값 표현

Vec3b(c++) 자료형 사용
크기가 3인 uchar 자료형 배열
바이트 크기가 정확히 3바이트

영상 반전
세개의 성분을 각각 255에서 뺀다

색 공간 변환

세 색성분 조합으로 색을 표현하는 방식을
RGB 색 모델 or RGB 색 공간 표현이라 함
보토은 YCrCb 또는 YUV 사용

cvtColor() 함수를 사용해서 공간변화 진행

BGR2GRAY, GRAY2BGR

BGR2GRAY 변환시 BGR에 위의 연산 진행

HSV2BGR

HSV는 색상, 채도, 명도로 색 모델 표현
색상 : 빨 초 노 와 같은 색의 종류
채도 : 색의 순도
명도 : 빛의 세기

HSV는 색 공간 모형에서 색상은 원뿔을 가로로 잘랐을 떄 나타나는 원형에서 각도로 정의됨

  • 0도일 떄 빨간색
  • 각도가 증가할 수록 노 녹 하 파 보 거쳐 360도 되면 다시 빨로 돌아옴

채도는 원뿔을 가로로 잘랐을 때 나타나는 운 모양 중심에서 최솟값 (s)
명도는 원뿔 아래 꼭지점에서 최소, 원뿔 축 따라 올라가면서 증가(v)

BGR을 HSV로 변환시 H값은 0~179 ( 360 표현이 안돼서 360/2 = 180 사용)
S와 V는 0 ~ 255 사이의 정수

YCrCb

  • Y : 휘도
    Y 성분 계산법은 그레이스캐일 계산 공식과 동일
  • Cr, Cb : 색상, 색차
    밝기에 대한 정보 미포함

YCrCb는 영상을 그레이스케일 정보색상 정보로 분리하여 처리할 떄 유용


CrCb 색 분포

컬러 영상 처리 기법

컬러 히스토그램 평활화

equalizeHist() 함수를 통해 평활화 진행 가능하지만 Grayscale만 가능함

RGB를 각 채널로 나누고 각 채널별 히스토그램 평활화 진행후 합침
-> 원본과 다른 색상의 결과 영상이 만들어진다

색감이 달라짐...

색감 변경하지 않으면서 명암비 높이려면 밝기 정보만 사용해야함
->YCrCb를 사용해 Y성분만 이용해서 히스토그램 평활화 진행

색상 범위 지정으로 영역 분할

특정 영역 색 추출하는 작업
대표적 색상 영역 구분시 RGB보다 HSV등의 색상 정보가 따로 설정되어 있는 색 공간 사용하는것이 유리

HSV는 H값이 60 근방으로 표현되기 때문에 찾아내기 쉬움

inRange() 함수 사용

히스토그램 역투영

주어진 히스토그램 모델과 일치하는 픽셀을 찾아내는 기법
ex) 피부색 색상 히스토그램 가지고 있다면 역투영 방법 사용하여 피부색 영역 검출 가능

0개의 댓글