시각
오감중에 가장 강력한 인지 기능.
컴퓨터 비전은 컴퓨터를 이용하여 시각 기능을 갖는 기계 장치를 만드는 기술 분야.
영상
광선 혹은 매체에 의한 정보를 시각적으로 표현한 것.
이미지.
전통적인 CS에서는 Gray image를 다룬다. Vs color image.
영상처리
영상을 대상으로 하는 신호처리의 한 분야.
영상의 화소값을 조작하여 여러 효과를 줌.
잡음제거, 화질향상, 영상압축, 영상와핑, 모핑 등.
아날로그 방식.
1960년 달 표면 사진 화질 복원에 대한 연구가 시초.
영상 처리 분야
화질 향상.
기하학적 변화.
영상 압축.
동영상 처리.
영상 분할.
객체의 모양 기술.
객체 인식.
컴퓨터 비전
컴퓨터에 시각을 주는 작업으로 시각으로부터 입력 받은 영상을 이용하여 인간이 할 수 있는 일을 자율적으로 수행하는 알고리즘에 대한 연구분야.
- 특정 물체의 사진을 컴퓨터에 입력.
- 사진안의 객체를 인식하는 일에 자동으로 수행.
영상 정보로부터 얻을 수 있는 밝기, 색상, 모양, 텍스쳐 등을 이용하여 업무 수행.
주로 머신러닝 기술을 이용하여 영상에 적용.
영상 처리와 컴퓨터 비전의 경계는 명확히 나누기 어려움.
- 많은 사람들이 혼용하여 사용.
수학 및 공학 이론이 차지하는 비중이 매우 큼.
- 선형대수, 미적분학, 확률과 통계, 기계학.
- 수치해석, 알고리즘, 최적화.
- 신호처리, 인지과학.
- 카메라 구조 및 영상 획득과 관련된 광학.
컴퓨터 그래픽스와 상대적인 개념이지만 함께 발전.
다양한 산업분야에서 활용.
- 병원, 공장, 상점.
스마트폰 카메라를 이용한 다양한 앱 개발.
하드웨어, 센서, 딥러닝 등 영향으로 더욱 발전할 것으로 기대.
다양한 영상 처리 응용
얼굴 검출(face detction)
- Detection, segmentation.
얼굴 인식(face recognition)
영상 검색(image retrieval)
화질 개선
- 해상도 개선.
문자인식(OCR).
의료 영상 처리(medical image processing).
머신 비전(machine vision)
인공지능 로봇
자율주행 자동차
영상 구조
영상의 획득과 표현 방법
- 피사체의 부딪혀 반사된 가시광선이나 특정 광원의 빛이 카메라 렌즈를 통해 카메라 내부로 들어옴.
- 렌즈는 빛을 굴절 시켜 이미지 센서로 모아 주고 전기적 신호로 변환.
- 빛의 많고 적음에 따라 명암이 있는 2차원 영상을 구성
영상의 최소 구성 단위 : 픽셀
픽셀의 개수로 카메라 해상도 측정.
영상은 픽셀이 바둑판 처럼 균일하게 배열 되어 있는 형태로 표현.
일반적으로 영상은 2차원 행렬로 표현.
영상의 종류
그레이스케일 영상
- 영상의 밝기 정보로만 구성
- 0~255 값을 가짐
- 256단계 밝기 정보
- 0 - 검은색, 255 - 흰색
컬러 영상
- 다양한 색상을 표현 할 수 있는 영상
- 각 채널 별로 0~255 값을 가짐
- R, G, B 색상 성분 조합으로 픽셀 표현
- 각 성분별 256단계로 표현
OpenCV
Open Source Computer Vision Library.
오픈소스로 개발되고 있는 컴퓨터 비전 및 머신러닝 라이브러리.
2500개가 넘는 최신 컴퓨터 비전 알고리즘과 머신 러닝 알고리즘 제공.
영상 파일 입출력, 화질 향상, 객체 검출과 인식, 추적 등 기능 제공.
다양한 머신러닝 기법 포함.
- K 최근접 이웃(KNN, k-Nearest Neighor) 알고리즘 제공.
- 서포트 벡터 머신(SVM, Support vector Machine) 알고리즘 제공.
- 딥러닝(DNN, Deep Neural Network) 모델 기능 제공.
실시간 처리를 고려하여 개발.
다양한 하드웨어 플랫폼에서 매우 빠르게 동작
기본적으로 C/C++ 언어로 작성되었지만 현재 널리 사용되는 Python, Java, Matlab, JavaScript 등 인터페이스 제공
Cross Platform 지원
안드로이드, IOS 같은 모바일 환경 지원
병렬 처리 동작
MMX, SSE, AVX, NEON 등 CPU 특화 명령어도 지원함
CUDA와 OpenCV를 통한 GPU활용 지원
학계 연구용이나 상업적 용도로 자유롭게 사용 가능
▶ 역사
1999년 인텔에서 개발된 IPL(Image Primitive Library)기반으로 만들어지기 시작
2000년에 일반에 공개되어 오픈 소스로 개발 진행
2006년 openCV 1.0 버전 정식 배포
- c언어 기반으로 구현
- 2.0부터 c++ 언어 기반으로 구현
- 메모리 관리가 좀 더 수월해지고 소스 코드 작성이 편리해짐
지속적인 소규모 버전업이 진행되면서 새로운 알고리즘 그현 함수, 성능 개선 병렬 처리 기능 강화 등 추가
2015년 6월 3.0버전 발표
- 프로젝트 구조가 크게 개선되고 전반적인 성능 향상
2017년 8월에 발표된 openCV 3.3버전 부터 심층 신경망을 지원하는 DNN 모듈이 기본 소스에 포함되기 시작
최신 c++ 11 문법도 지원하기 시작
2018년 11월 4.0버전 발표
- 가장 큰 변화는 c++ 11의 필수 지원
- c++ 11을 지원하는 컴파일러 환경에서 사용 할 수 있음
- 최신 c++ 문법 기본 사용
- 함수 포인터나 함수 객체 대신 람다 표현식 사용 가능
- DNN 모듈 기능이 강화되어 AlexNet, Inception v2, Resnet, VGG 같은 영상 분류기 뿐만 아니라 Mask-RCNN, tiny YOLO 같은 최신 딥러닝 네트워크 구조 지원
- QR코드로 검출하고 해석하는 기능 제공
- C API 지원 종료
'Python' 카테고리의 다른 글
[Python] openCV : Writer (0) | 2022.11.10 |
---|---|
[Python] openCV : Image display (0) | 2022.11.10 |
[Python] Regression (0) | 2022.11.10 |
[Python] Deep Learning (0) | 2022.11.03 |
[Python] Keras.initailizers(초기화 함수) (0) | 2022.10.31 |