🐍Python/OpenCV

    [OpenCV] 05-2. Harris Corner Detection

    이번 장에서는Harris Corner Detection의 개념의 이해cv2.cornerHarris(), cv2.cornerSubPix()에 대해 볼 것 이다.Theory마지막 장에서, 모든 방향으로 채도의 변화가 큰 이미지에서 모서리는 영역이라는 것을 봤다. 초창기에 이 모서리를 찾기 위한 시도가 바로 지금에 와서 Harris Corner Detection라고 불리는 것이다. 그는 이 간단한 아이디어를 수학적 형태로 나타냈다. 이는 모든 방향에서 (u,v)의 이동에 의한 채도 차이를 찾는 것이다. 아래 처럼 나타내진다. E(u,v)=∑x,yw(x,y)[I(x+u,y+v)−I(x,y)]2w(x,y) : window functionI(x+u,y+v) : shi..

    [OpenCV] 05-1. Understanding Features

    이번 장에서는, 특성이 무엇인지, 왜 중요한지, 왜 모서리가 중요한지에 대해서 이해해 볼 것이다.Explanation퍼즐 게임을 해본 적이 있을 것이다. 이미지의 작은 조각들을 가지고 전체의 큰 이미지의 형태로 정확하게 맞춰야한다. 어떻게 할 수 있느냐가 질문이다! 같은 이론을 컴퓨터 프로그램에 투영시켜서 컴퓨터가 퍼즐을 플레이하게 할 수 있겠는가? 만약 컴퓨터가 퍼즐을 할 수 있다면, 왜 컴퓨터에게 자연의 일부 풍경을 주고 하나의 단일 이미지로 맞추라고 할 수 없을까? 만약 컴퓨터가 자연적인 이미지를 여러장 맞출 수 있다면, 건물이나 어떠한 구조물의 사진을 대량 주고 그 안에서 3D 모델을 만들라고 하는 것을 어떨까?답은, 우리는 쉽게 비교될 수 있는, 독..

    [OpenCV] 04-16. Interactive Foreground Extraction using GrabCut Algorithm

    이번 장에서는이미지에서 전경을 추출하기 위한 GrabCut 알고리즘이를 위한 상호작용 기능에 대해서 알아볼 것이다.TheoryGrabCut 알고리즘은 원저자의 논문인 “GrabCut”: interactive foreground extraction using iterated graph cuts에서 설계되었다. 알고리즘은 사용자 상호작용이 최소화된 전경을 추출하기해 필요했고, 결과가 GrabCut이다.사용자 관점에서 어떻게 작동하는가? 처음에 사용자는 전경을 중심으로 직사각형을 그린다. (전경 영역은 직사각형 내부에 위치해야만 한다.) 그리고 알고리즘은 최상의 결과를 얻기 위해 반복적으로 분할한다. ..

    [OpenCV] 04-15. Image Segmentation with Watershed Algorithm

    이번 장에서는,Watershed 알고리즘을 이용하여 marker-based 이미지 구분(segmentation)을 하는 법cv2.watershed 함수에 대해서 알아볼 것이다.Theory흑백스케일 이미지의 높은 채도는 봉우리와 언덕을 나타내는 지형 표면이며, 낮은 채도는 계곡을 나타낸다. 다른 색의 물들로 고립된 모든 계곡을 채우기 시작해보자. 물이 차오르면서 근처의 봉우리에 따라 분명히 다른 색깔의 물들이 합쳐지기 시작할 것이다. 이를 피하기 위해 물이 합쳐지는 곳에 장벽을 쌓는다. 봉우리가 물에 잠길 때까지, 물을 채우고 장벽을 세우는 것을 반복한다. 그러면 장벽이 분할(segmentation)의 결과를 반환한다. 이..

    [OpenCV] 04-14. Hough Circle Transform

    이번 장에서는이미지 내에서 원을 찾기 위한 Hough Transform을 사용하는 법cv2.HoughCircles() 함수에 대해 봐볼 것이다.Theory원은 수학적으로 (x−xcenter)2+(y−ycenter)2=r2으로 나타나는데, (xcenter,ycenter)는 원의 중앙을, r은 원의 반지름을 말한다. 방정식에서, 3개의 파라미터들을 볼 수 있는데, 그래서 hough transform을 위한 3D 축압기가 매우 비효율적이긴 하지만 필요하다. 그래서 OpenCV는 조금 더 트릭키한 방법인, 가장자리의 gradient 정보를 사용하는Hough Gradient Method 를 이용한다.여기서 쓰는 함수는 cv2.HoughCircles() 이다. 코드를 ..

    [OpenCV] 04-13. Hough Line Transform

    이번 장에서는Hough Transform에 대해서 이해하고이미지내의 선을 어떻게 탐지하는지 배우고cv2.HoughLines(), cv2.HoughLinesP() 함수에 대해 알아볼 것이다.TheoryHough Transform은 그 모양을 수학적 형태로 나타낼 수 있다면 어떤 형태든 감지하는 인기있는 기법이다. 형체가 조금 부러지거나 일그러져도 감지할 수 있다. 우리는 그것이 어떤 선에 어떻게 작용하는지 볼 것이다!선은 y=mx+c 또는 파라메트릭 형태로 나타낼 수 있으며, 여기 ρ=xcosθ+ysinθ 식에서, ρ는 원점에서 선까지의 수직 거리, θ는 이 수직선과 시계 반대 방향으로 측정한 수평 축에 의해 형성된 각도이다. 아래 이미지를 보자. 만약 선이 원점..