기본 정의
영상
정보를 시각적으로 표현한 것 -> 이미지, 동영상
영상 처리
영상을 입력으로 받아서 조작하는 것
ex) 픽셀, 색상, 모양 조작 -> 화질 향상, 영상 압축 등
영상 처리의 분야
화질 향상, 기하학적 변환, 영상 압축, 동영상 처리
영상 처리 고수준 분야 (컴퓨터 비전 분야)
영상 분할(사진에서 사람이 담긴 부분만 분할), 객체의 모양 기술, 객체 인식
영상 처리 분류
저수준 영상처리 (영상 조작으로 화질 향상이나 압축 등을 함)
컴퓨터 비전 (영상 조작으로 유용한 정보를 얻음)
컴퓨터 비전
컴퓨터를 이용하여 정지 영상 또는 동영상으로부터 의미있는 정보를 추출하는 학문
-> 사람의 눈과 뇌가 하는 작업을 수학적 알고리즘을 통해 컴퓨터가 수행하도록 함
(현재) 사람의 눈과 뇌가 하는 작업을 딥 러닝을 통해 컴퓨터가 수행하도록 함
영상의 최소 구성 단위: 픽셀
영상을 구성하는 가장 작은 단위는 ‘픽셀’입니다.
위 그림은 영상의 ‘검은 박스’ 부분에 해당하는 픽셀만 살펴본 것입니다.
픽셀은 위와 같이 2차원 행렬 형태로 모여 있습니다.
행렬을 이루는 픽셀은 숫자를 담고 있습니다.
따라서 영상은 숫자들의 2차원 행렬이라고 생각할 수 있습니다.
그렇다면 그 숫자는 무엇을 의미할까요??
픽셀이 담는 숫자는 바로 영상의 밝기 값입니다.
흑백 영상은 흑백 성분으로만 256단계로 표현됩니다.
이 때 값이 클수록 밝은 것을 의미합니다.
칼라 영상은 R,G,B 각 성분 별로 256단계로 표현됩니다.
OpenCV: Open Source Computer Vision Library
OpenCV는 컴퓨터 비전 및 머신러닝 라이브러리입니다.
영상 파일 입출력, 화질 향상, 객체 검출과 인식 추적 등 기능을 제공합니다.
[영상 입출력과 디스플레이]에 관한 함수는 아래와 같습니다.
영상 입력
cv2.imread(filename[,flags])->retval
영상 파일 출력
cv2.imwrite(filename,img[,params]->retval
윈도우 생성
cv2.namedWindow(winname[,flags])
윈도우 표시
cv2.imshow(winname,mat)
키보드 입력대기
cv2.waitKey([,delay])->retbal
윈도우 파괴
cv2.destroyWindow(winname)
cv2.destroyAllWindows()
비디오 획득 객체 생성
cv2.VideoCapture() -> <VideoCapture object>
cv2.VideoCapture(filename) -> <VideoCapture object>
cv2.VideoCapture(device) -> <VideoCapture object>
프레임 획득
cv2.VideoCapture.read([image])->retbal,image
프레임 잡기
cv2.VideoCapture.grab() ->retval
프레임 획득
cv2.VideoCapture.retrieve([image[,channel]]) ->retval,image
영상 입/출력에 대한 파이썬 코드를 제공합니다.
설명은 주석으로 대체합니다.
다음은 비디오 영상에 대한 입/출력 코드입니다.
한 프레임씩 가져오면서 동영상을 출력하게 됩니다.