Ch 03. 기본적인 영상 처리 기법 - 07. 특정 색상 영역 추출하기
Ch 03. 기본적인 영상 처리 기법 - 08. 히스토그램 역투영
Ch 05. 기하학적 변환 - 01. 영상의 이동 변환과 전단 변환
오늘은 영상에서 특정 색상을 검출해 내는 방법과
영상의 변환에 대해서 공부해 보았습니다.
현재 AR 관한 프로젝트를 같이 진행하고 있는 사람으로서 영상의 변환 행렬 계산 쪽을
더 빨리 공부하고 싶다는 생각으로 ch4를 건너뛰게 됐네요..ㅎㅎ
RGB 색 공간에서 색 추출하기
mask 영상: 특정 부분(목표)을 흰색으로 나머지를 검은색으로 하는 이진 영상
RGB 색공간에서 녹색 추출하기
0 < R < 100
128 < G < 255
0 < B < 100
위의 영역만을 잡아 낸다면 녹색을 띠는 부분을 잡을 수 있음
하지만 특정 색을 검출할 때 RGB 값을 사용하여 검출하지 않고
hsv, YCrCb 등의 색 공간을 이용한다.
hsv 색공간에서 녹색 검출하기
50 < H < 80
150 < S < 255
0 < V < 255
색공간의 특정 범위를 나눠주는 함수
cv2.inRange(src, lowerb, upperb, dst=None) -> dst
lowerb와 upperb 에는 하한 값과 상한 값의 ndarray 혹은 스칼라 값을 넘겨준다.
mask 영상 반환.
rgb ex) cv2.inRange(src, (0, 128, 0), (100, 255, 100)) *bgr 순서임을 유의하자
hsv ex) cv2.inRange(src, (50, 150, 0), (80, 255, 255))
hsv 색공간을 사용하여 빨간색을 추출할 경우에는
빨간 부분을 나타내는 영역이 hsv 색공간에서 원 각도로 따지면
0 º 에서 15 º 그리고 345 º에서 360 º 정도 이기 때문에 or 연산자를 사용해줘야 한다.
히스토그램 역투영
영상의 각 픽셀이 주어진 히스토그램 모델에 얼마나 일치하는지를 검사하는 방법
임의의 색상 영역을 검출할 때 효과적
hsv는 주로 어떤 색상을 Hue값으로 표현하기 쉬울 때 (빨강, 파랑, 초록 등) 주로 사용되고
어떤 임의의 값을 알아내고 싶을 때 (살색 등) 주로 YCrCb 색공간이 사용된다. (Lab 색공간 자주 사용)
calcBackProject(images, channels, hist, ranges, scale, dst=None) -> dst
channels: 역투영 계산에 사용할 채널 번호 리스트
hist: 입력 히스토그램 (cv2.calcHist() 함수로 만들어진 히스토그램 입력)
ranges: 히스토그램 각 차원의 최솟값과 최댓값으로 구성된 리스트
scale: 출력 역투영에 추가적으로 곱해줄 값
영상의 기하학적 변환
영상을 구성하는 픽셀의 배치 구조를 변경함으로써 전체 영상의 모양을 바꾸는 작업
변환의 종류: translation, Euclidean, similarity, affine, projective
이동 변환(Translation transformation)
가로 또는 세로 방향으로 영상을 특정 크기만큼 이동시키는 변환
x' = x + a
y' = y + b
영상의 affine 변환 함수
cv2.warpAffine(src, M, dsize) -> dst
M: 2 x 3 affine 변환 행렬. (실수형)
np.array([[1, 0, a], [0, 1, b]], dtype=np.float32) 으로 데이터 타입을 실수형으로 변환시켜줘야 함
dsize: 경과 영상 크기. (w, h) 튜플. (0, 0)이면 src와 같은 크기로 설정
전단 변환(Shear transformation)
x방향 혹은 y방향으로 찌그러트림
강의 링크 및 사진출처: bit.ly/2NTHHz7
'난 이 분야 전문가야! > OpenCV' 카테고리의 다른 글
Silicon Mac(M1)에서 OpenCV C++ 개발환경 설정 정리 (Xcode) (0) | 2022.07.29 |
---|---|
컴퓨터비전인강 4주차 :: 영상의 변환 (2) | 2021.03.14 |
컴퓨터비전인강 3주차:: 영상에서의 히스토그램 (0) | 2021.03.07 |
컴퓨터비전인강 3주차 :: 영상에서의 산술과 다양한 색 공간 (0) | 2021.03.06 |
컴퓨터비전인강 2주차 :: 키보드, 마우스 이벤트 처리 및 트랙바 생성법 (0) | 2021.02.27 |