160128_한상훈.

Download Report

Transcript 160128_한상훈.

Pride
Power
P3 in VISION laboratory…
Passion
5th week Presentation
Vision System Lab, Sang-Hun Han
OpenCV
• OpenCV(Open Computer Vision)
– 오픈 소스 컴퓨터 비전 C 라이브러리이다. 원래는 인텔이 개발하였다.
– 윈도우, 리눅스 등의 여러 플랫폼에서 사용할 수 있으며 실시간 이미지 프로세싱에
중점을 둔 라이브러리이다.
OpenCV
• IplImage 구조체
OpenCV
• IplImage 구조체
–
–
–
–
–
실제 픽셀에 접근 방법
color(3ch) ex) IplImage* Img;
unsigned char B = Img->imageData[i * Img->width * 3 + j * 3];
unsigned char G = Img->imageData[i * Img->width * 3 + j * 3 + 1];
unsigned char R = Img->imageData[i * Img->width * 3 + j * 3 + 2];
(0,0)
(1,0)
(0,1)
OpenCV
• IplImage 구조체
– 실제 픽셀에 접근 방법
– gray(1ch) ex) IplImage* Img;
– unsigned char Intensity = Img->imageData[i * Img->width + j];
(0,0)
(0,1)
(1,0)
(1,1)
(2,0)
(3,0)
(4,0)
(0,2)
(0,3)
(0,4)
(2,2)
(3,3)
(4,4)
OpenCV
• Gray Image
– 일반적으로 흑백사진을 말함
– 일반적으로 흑백사진은 unsigned 8-bit values(0~255) 로 구성
OpenCV
– Source Code
타이머 구현
버튼 구현
OpenCV
– Source Code
클래스 함수 생성
클래스 함수 구현
OpenCV
– Result
OpenCV
• Sobel Edge
– Sobel Operator는 1968년 스탠포드 인공지능 연구소에서 어윈 소벨이 고안해낸 가
장자리 검출 알고리즘
– 3x3 크기의 행렬을 사용하여 연산을 하였을 때, 중심을 기준으로 각 방향의 앞뒤의
값을 비교하여서 변화량을 검출하는 알고리즘
OpenCV
– ex)
– y축 필터를 이용
– 각 부분에 맞은 y축 필터의 값을 곱한 값을 모두 더하면 중심 픽셀의 변화량이 나옴(
행렬의 곱이 아님, 각 위치의 값들끼리 곱한 뒤 모두 더한 값)
– 계산한 결과를 모두 더하면 중심 픽셀의 변화량이 나옴
– y축 필터의 경우 -1020, x축 필터의 경우 0
0
0
0
1
2
1
0
0
0
0
0
0
255
255
255
-1
-2
-1
0
0
0
0
0
0
-255
-510
-255
OpenCV
– Source Code
타이머 구현
클래스 함수 구현
OpenCV
– Result
OpenCV
• Canny Edge
– 에지(Edge)는 영상 요소를 기술하기 때문에 중요한 시각 정보를 포함
– 하지만 Sobel 함수나 Laplacian 과 같은 단순 이진 에지 맵을 사용한다면 두 가지 주
요 결점 때문에 손해를 봄
•
•
첫째, 검출한 에지가 필요 이상으로 두꺼워 객체를 훨씬 더 식별하기 어렵게 만듬
둘째, 영상의 모든 중요한 에지를 검출하기 위한 명확한 경계 값을 찾기란 불가능
– Canny Edge 검출 알고리즘
•
•
•
•
1. 가우시안 필터링을 하여 영상을 부드럽게 함
2. Sobel 연산자를 사용하여 기울기(Gradient) 벡터의 크기(Magnitude)를 계산
3. 가느다란 에지를 얻기 위해 3x3 윈도우를 사용하여 기울기 벡터 방향에서 기울기의 크기가 최대값인 화
소값인 화소만 남기고 나머지는 0으로 억제
4. 연결된 에지를 얻기 위해 두 개의 임계값을 사용. 높은 값의 임계값을 사용하여 기울기 방향에서 낮은
값의 임계값이 나올 때까지 추적하며 에지를 연결하는 히스테리시스 임계값(Hysteresis Thresholding) 방
식을 사용
OpenCV
• Canny Edge
– Non-Maxima Suppression(비 최대 억제법) : 최대가 아닌 부분을 억제
– 2개의 Threshold t1, t2가 존재
•
•
•
•
1. 픽셀 하나하나를 다 검사하여 그 픽셀의 값이 t1보다 클 경우 2단계로 넘어가고 아니면 다음 픽셀로 넘
어감
2. t1보다 큰 경우이므로 Sobel Operator 를 통해 얻은 sobel_x와 sobel_y 값을 이용하여 방향을 찾음
3. 픽셀이 급변하는 방향의 수직인 방향이 Edge의 연결선상이므로 기울기 방향에 수직인 방향에 있는 픽
셀을 살펴봄(양방향)
4. 그 픽셀의 기울기 값이 t2를 넘는 경우 Edge, 아닌 경우 0
OpenCV
– Source Code
타이머 구현
클래스 함수 구현
OpenCV
– Result
OpenCV
• Erode & Dilation
– 모폴로지 연산은 영상의 분리, 영상처리에 앞선 전처리 과정(노이즈 제거, 특징 추출
등)에 사용
– 디지털 영상처리에 있어서 수학적 모폴로지라 하면 이미지의 기하학적 형태를 분석
하는 것을 의미
– 기본적으로 두 가지의 모폴로지 연산이 존재, 침식(Erosion) 연산과 팽창(Dilation) 연
산
– 각 화소 주변의 화소 집합에서 정의된 구조 요소로 연산
– 침식 연산은 주로 잡음 제거에 주로 사용하며, 팽창 연산은 잡음 제거 후 줄어든 객
체의 크기를 다시 원상복구 시키고자 할 때 주로 사용
232
199
3
232
199
3
89
77
102
89
77->3
102
152
90
255
152
90
255
예제) 침식 연산
OpenCV
• Erode & Dilation
– Opening & Closing 연산
•
•
•
•
영상을 보정하는 다른 방법은 먼지가 들어간 작은 입자나 오브젝트의 구멍을 제거하는 것
이러한 작업은 보통 열기와 닫기 연산에 의해 보정
열기와 닫기 연산은 각 픽셀값을 인접 픽셀과의 기하학적인 관계에 의해 결정하기 때문에 Morphology 연
산으로 알려진 광범위한 연산의 일부임
이진화 영상에 대해 가장 유효하게 동작
– 열기 연산(Opening)
•
•
작은 입자 제거 이외에도 접촉하는 오브젝트의 지협(isthmuses) 또는 접하고 있는 부분을 제거
침식 연산 후 팽창 연산 수행
– 닫기 연산(Closing)
•
•
오브젝트의 홀을 채우는데 매우 유효
팽창 연산 후 침식 연산 수행
닫기 연산 예제
OpenCV
– Source Code
•
라디오박스
•
프로젝트명Dlg.h 에 라디오 버튼을 컨트롤할 변수 추가(컨트롤 변수)
•
프로젝트명Dlg.cpp 에 컨트롤 변수와 실제 리소스(라디오 버튼)의 ID를 연결
OpenCV
– Source Code
버튼 구현
OpenCV
– Source Code
타이머 구현
클래스 함수 구현
OpenCV
– Result
Erosion 연산
Dilation 연산
OpenCV
• Color Extraction
– Color Model
•
•
•
어떤 특정 상황에서 컬러의 특징을 설명하기 위한 방법을 위한 모델
하나의 컬러 모델을 사용하여 컬러의 모든 성질을 설명하기는 불가능
일반적으로 컬러의 특성을 표현하기 위하여 여러 종류의 컬러 모델을 정의
– RGB 모델
•
•
•
•
•
•
컬러 CRT 모니터와 컴퓨터 그래픽스 시스템들에서 사용
빛은 여러 색깔의 빛이 더해질수록 흰색을 나타내며, 빛이 전혀 없으면 검은색을 나타냄
RGB 모델은 이러한 빛의 성질을 이용하여 색을 표현하는 모델
기본이 되는 세 가지 색을 더하여 색을 만들어 내기 때문에 가산 모델(Additive Model)이라 함
적색, 녹색 그리고 청색의 요소들은 상호상관성(Cross Correlation)이 너무 크기 때문에 몇몇 영상처리 알
고리즘들은 수행이 어려움
히스토그램 평활화와 같은 많은 영상처리 기술들은 영상의 밝기 값만으로 영상을 처리
OpenCV
• Color Extraction
– YUV(YCbCr) Color Model
•
•
•
•
•
YCbCr은 컬러 정보로부터 밝기값과 색차 신호를 분리하여 표현하는 컬러 모델
밝기값은 Y로 기호화하고 색차신호는 CbCr로 기호화함
Subsampling이나 양자화 과정에서 압축을 하게 되는데, 사람의 눈이 컬러 정보에 둔감하기 때문에 사람의
눈으로 화질의 차이를 별로 느끼지 않으면서 압축율을 높일 수 있게 됨
RGB 컬러 모델은 3개의 요소가 시각적으로 균일한 정보를 가지는 반면, YUV는 밝기값과 색차 신호로 서
로 다른 정보를 가지고 있기 때문에 JPEG 압축과 MPEG 비디오 압축에서 주로 이용
즉, YUV는 중복되는 정보가 없음
OpenCV
• Color Extraction
– HSI Color Model
•
•
•
•
•
•
HSI는 Hue(색상), Saturation(채도), Intensity(명도)를 의미하며 이 3가지를 가지고 색을 표현하는 방법
색상은 그 색의 원색을 나타내며 채도는 색의 순수도를 나타내는 것으로서 원색에 어느 정도의 흰색이 혼
합되었는지를 나타냄
HSI 컬러 모델은 색의 변환을 용이하게 해줌, 예를 들면 빨간색을 분홍색으로 만들기 위해서는 단순히 채
도만 조절하면 되고, 어두운 색을 밝게 하기 위해선 명도를 높여주면 됨
HSI 컬러 모델은 원뿔 모양의 좌표계로 표현, 색상은 원뿔 둘레를 따라 0도에서 360도의 범위를 가진 각도
로 표현
채도는 0에서 1까지의 값을 가지며 원뿔 중심으로부터의 수평거리로 표현
명도는 세로축으로 가장 아래쪽이 명도가 0이고, 검정색을 나타내며 가장 위쪽이 명도가 1이고 흰색을 나
타냄
OpenCV
– Source Code
버튼 구현
타이머 구현
OpenCV
– Source Code
클래스 함수 구현
OpenCV
– Result
OpenCV
• 그 밖의..
–
–
–
–
–
Camshift(색 추적)
Hough Transform(직선, 원 검출 등)
Kalman Filter(예측)
차영상
등등.
허프 변환을 통한 직선 검출