본문 바로가기

난 이 분야 전문가야!/OpenCV

컴퓨터비전인강 3주차 :: 영상에서의 산술과 다양한 색 공간

Ch 03. 기본적인 영상 처리 기법 - 01. 영상의 밝기 조절

Ch 03. 기본적인 영상 처리 기법 - 02. 영상의 산술 및 논리 연산

Ch 03. 기본적인 영상 처리 기법 - 03. 컬러 영상 처리와 색 공간

 

 

오늘도 어김없이 컴퓨터비전 인강을 들으며 지식을 늘려보았습니다.

이제 개강도 하고 그래서 더 바빠진거 같은데 공부를 빼먹지 않도록 열심히 해야겠네요ㅜ

학생분들 모두 화이팅입니다!

 

이번에는 영상에서의 산술 및 논리 연산으로 영상이 어떻게 변하고 어떤 특징을 잡아낼 수 있는지 그리고 여러가지 색 공간과 표현법에 대해 배워 보았습니다.

 

 

>> 연산 시간 측정 방법

 

컴퓨터 비전에서는 대용량인 영상 데이터를 다루다 보니 연산 시간을 측정하여 관리할 필요가 있다.

 

cv2.TickMeter() class를 사용하여 편하게 시간을 측정할 수 있다.

 

cv2.TickMeter() -> tm

tm.start(): 시간 측정 시작

tm.stop(): 시간 측정 종료

tm.reset(): 시간 측정 초기화

(각 함수에 tm.start, tm.stop 함수를 호출하여 계산해도 전체 시간이 측정되기 때문에 reset을 사용해야함)

tm.getTimeSec():
측정 시간을 초 단위로 반환

tm.getTimeMilli(): 측정 시간을 초 단위로 반환

tm.getTimeMicro(): 측정 시간을 초 단위로 반환

 

영상 연산 시간을 측정 했을때 보통 30 fps 정도가 나와야지 느리지 않다고 말할 수 있다.

(fps = Frame Per Second)

더 나온다면 최적화할 방법을 생각해 봐야 한다.

시간을 측정하여 확인해 볼 때는 한번 만 확인하지 말고 여러 번 확인 후 평균 값으로 측정하는 것이 좋다.
간혹 첫번째 실행에 시간이 많이 걸릴 때도 있기 때문이다.

 

 

>> 영상의 밝기 조절

 

각 픽셀 값에 어떤 정수 값을 더하면 밝아지고 빼면 어두워진다.

cv2.add(img, scalar) 함수를 사용하여 밝기 조절이 가능하다.

grayscale 영상일 경우 ex) cv2.add(img, 100)

컬러 영상일 경우 ex) cv2.acc(img, (100, 100, 100, 0))

 

> 특정 부분 추출

cv2.subtract(src1, src2, dst=None, mask=None, dtype=None) -> dst

src1 – src2로 동작됨

 

> 두 영상 비교 

cv2.absdiff(src1, src2, dst=None) -> dst

영상에서 달라진 점을 찾을 때 사용됨

예를들어 CCTV 영상을 가져와 1시간 전과 후의 영상을 비교할 때 사용할 수 있음

 

 

> > 색 공간 변환 함수

 

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

code -> cv2.COLOR_BGR2HSV,

           cv2.COLOR_BGR2BGR ... 

          등등 여러 컬러 변환 코드를 제공하고 있다. 

 

> RGB 색을 grayScale로 변환 시

 

Y = 0.299R + 0.587G + 0.114B 비율로 변환이 된다.

이 수식으로 보아 GBR 순으로 중요도가 높다는 것을 알 수 있다.

 

gray scale 영상으로 변환 시

장점: 데이터 저장 용량 감소, 데이터 처리 속도 향상

단점: 색상 정보 손실

 

> HSV 색 공간

 

hue: 색상, 색의 종류

saturation: 채도, 색의 탁하고 선명한 정도

value: 명도, 빛의 밝기

 

hsv 색 공간은 어느 특정 색을 검출해 낼때 유용하게 사용된다.

 

 

 

 

 

강의 링크: bit.ly/2NTHHz7

728x90