🐍Python/OpenCV

    [OpenCV] 07-1. Camera Calibration

    이번 장에서는카메라상에서 왜곡, 카메라의 내재/외적 파라미터 등이러한 파라미터들과 왜곡되지않은 이미지등을 찾아볼 것이다.Basics오늘날의 값싼 핀홀 카메라는 이미지에 많은 왜곡을 불러온다. 두 가지 주요한 왜곡은 방사형 왜곡(radial distortion)과 접선형 왜곡(tangential distortion)이다.방사형 왜곡은 직선을 곡선처럼 보이게 한다. 이미지를 화면 중앙에서 멀어지게 한다면 이는 더 많은 영향을 미치게 된다. 예를 들어서, 아래의 이미지를 보면, 체스 보드의 양 끝 가장자리를 빨간 선으로 표시를 해두었다. 하지만 가장자리가 직선이 아니고, 빨간 선과도 일치하지 않는 것을 볼 수 있다. 예측된 직선들은 돌출되어있다. 왜곡(dist..

    [OpenCV] 06-3. Background Subtraction

    이번 장에서는OpenCV에서 가능한 배경 제거 방법에 대해서 알아볼 것이다.Basics배경 제거는 많은 비전 기반의 응용의 전처리 단계에서 주로 이뤄진다. 예를 들어, 정적인 카메라로 방을 들어오는 / 나가는 방문자들의 수를 세거나, 차량으로 부터 교통 정보를 추출하는 등의 경우가 존재한다. 이 모든 경우에, 사람이나 차량만들 추출할 필요가 있다. 기술적으로, 정적인 배경으로부터 움직이는 전경(foreground)을 추출할 필요가 있다.만약 방문자 없는 방, 차량 없는 도로같이, 배경만 있는 이미지라면, 매우 쉬운 일이 된다. 배경으로 부터 새로운 이미지를 빼기만 하면 된다. 그러면 전경만 얻을 수 있다. 하지만 많은 경우에, 이런 이미지와 같지 않기에, 가..

    [OpenCV] 06-2. Optical Flow

    이번 장에서는,광학 흐름의 개념에 대해서 이해하고 Lucas-Kanade 방법을 사용한 추정을 해보고cv2.calcOpticalFlowPyrLK() 함수를 사용해서 비디오에서의 특성 점을 추적해볼 것이다.Optical Flow광학 흐름은 물체나 카메라의 움직임에 의해 발생하는 두 개의 연속되는 프레임사이에서 객체의 외관상 움직임의 패턴이다. 각 벡터는 첫 번째 프레임에서 점이 두 번째 프레임으로 점으로의 움직임을 보여주는 이동 벡터인 2D 벡터 필드이다. 아래 이미지를 보자!사진위 사진은 공의 움직임을 5개 연속적인 프레임으로 보여준다. 화살표는 이동 벡터를 나타낸다. 광학 흐름은 다음과 같은 분야에서 적용된다 :움직임을 통한 구조 분석비디오 압축비디오 안정화 : 깨끗한 영상..

    [OpenCV] 06-1. Meanshift and Camshift

    이번 장에서는비디오에서 물체를 찾고 트래킹하기 위해 사용되는 Meanshift 와 Camshift에 대해서 배워 볼 것이다.MeanshiftMeanshift의 알고리즘은 간단하다. 수 많은 포인트 셋을 가지고 있다고 생각해보자(히스토그램의 배경투사 같은 픽셀 분포일 수 있다.) 작은 창(아마 원)을 받고, 이 창을 픽셀 밀집도가 최대인 지역(또는 포인트의 수가 최대인 곳)으로 이동시켜야한다. 아래 그림을 보고 이해해보자.사진초기 창은 파란색 원으로 모이는 “C1”이다. 이 창의 중심은 파란색 직사각형으로 표시된 “C1_o”이다. 하지만 만약 창 안의 포인트들의 중심을 찾으면 “C1_r”(작은 파랑 동그라미, 창의 실제 중심이다.)을 얻을 것이다. 확실히 이는..

    [OpenCV] 05-10. Feature Matching + Homography to find Objects

    이번 장에서는Feature matching 과 calib3 모듈의 findHomography를 섞어서 복합적인 이미지에서 알고있는 객체를 찾아 볼 것이다.Basics이전 장에서는, queryImage를 사용해서 특성 포인트들을 찾고, 다른 이미지인 trainImage에서도 있는 특성 포인트를 찾고 가장 잘 맞는 매칭을 찾아냈다. 요약하자면, 객체 일부분의 위치를 찾아서 다른 뒤섞인 이미지 속에서 이를 찾아내는 것이다. 이 정보는 trainImage에서 객체를 찾기에 충분하다.그래서 우리는 calib3d 모듈에 있는 cv2.findHomography() 를 사용할 수 있다. 만약 우리가 두 이미지로부터의 포인트 집합을 ..

    [OpenCV] 05-9. Feature Matching

    이번 장에서는하나의 이미지가 다른 이미지에 대해 특성을 어떻게 매칭하는지OpenCV의 FLANN Matcher와 Brute-Force Matcher를 사용해볼 것이다.Basics of Brute-Force MatcherBrute-Force matcher는 간단하다. 첫 번째 세트 속 하나의 특성의 디스크립터를 취하고, 그리고 두 번째 세트의 다른 특성들과 거리 계산을 사용하여 매칭이 된다. 그리고 가까운 것이 반환된다.BF 매처에 대해, 먼저 우리는 cv2.BFMatcher()를 사용해서 BFMatcher 객체를 생성한다. 이는 두 개의 선택적 파라미터를 가지고 있다. 첫 번째로 normType이다. 이는 거리 측정법을 지정한다. 기본값으로는, cv2.NORM_L2로 ..