🐍Python

    [OpenCV] 04-9. Contours (3)

    여기서는 고체성(Solidity), 등가 지름(Equivalent Diameter), 마스크 이미지, 평균 강도등과 같이 자주 사용되는 물체의 특성을 추출하는 방법을 배울 것이다. 자세한 내용은 Matlab regionprops문서에서 확인할 수 있다. Matlab regionprops documentation.1. Aspect Ratio이 비율은 객체의 bounding rect의 높이에 대한 폭의 비율이다.AspectRatio=WidthHeightx,y,w,h = cv2.boundRect(cnt) aspect_ratio = float(w)/h 2. ExtentExtent는 bounding rec 영역에 대한 contour 영역의 비율이다.Extent=ObjectA..

    [OpenCV] 04-9. Contours (2)

    이번에는contours의 다른 특징인, 영역(area), 둘레(perimeter), 중심(centroid), 경계 상자(bounding box)등을 찾을 것이다.contours와 관련된 수많은 함수를 볼 것이다.1. Moments이미지 모멘트(Image moments)는 객체의 무게중심, 객체의 면적과 같은 특성을 계산하는데 도움을 준다. 위키피디아 페이지를 참고하자! Image Momentscv2.moments() 함수는 계산된 모든 moments 값을 딕셔너리로 제공한다. 아래 코드를 보자!import cv2 import numpy as np img = cv2.imread('./images/golden.jpg',0) ret, thresh = cv2.threshold..

    [OpenCV] 04-9. Contours (1)

    윤곽(Contours)가 무엇인지 이해하자윤곽을 찾는 것, 윤곽을 그리는 것을 배우자cv2.findContours(), cv2.drawContours() 함수에 대해 볼 것이다.What are contours?윤곽은 같은 색이나 강도를 가지는 연속된 점들을 연결 시켜놓은 커브(경계를 따라)라고 간단히 설명될 수 있다(ex. 등고선). 윤곽은 형태 분석과 객채 탐지, 인식에 유용한 도구이다.더 나은 정확도를 위해, 이진 이미지를 사용한다. 그러니 윤관을 찾기 전에, threshold나 canny edge detection을 적용한다.findContours 함수는 원본 이미지를 수정한다. 윤곽을 찾은 후에도 원본 이미지를 원하는 경우 미리 다른 변수에 저..

    [OpenCV] 04-8. Image Pyramids

    이번 챕터에서는,Image Pyramids에 대해 배우고새로운 과일인 Orapple을 만들기 위해 Image Pyramids를 사용할 것이다.cv2.pyrUp(), cv2.pyrDown()Theory일반적으로, 변함없는 사이즈의 이미지를 사용했었다. 하지만 어떠한 상황에서는, 같은 이미지이지만 다른 해상도에서 작업할 필요가 있다. 예를 들어서, 이미지내에서 얼굴 과 같은 무언가를 찾을 때, 우리는 그 물체가 이미지에 어떤 크기로 나타날지 확신할 수 없다. 이 경우, 우리는 서로 다른 해상도의 이미지 세트를 생성하고 모든 이미지에 대해 객체를 찾아야한다. 이 서로 다른 해상도의 이미지셋을 “Image Pyramids”라고 부른다. (큰 것부터 작은 것이 아래서 위로..

    [OpenCV] 04-7. Canny Edge Detection

    이번 챕터에서는Canny edge detection의 개념OpenCV의 cv2.Canny() 함수에 대해 볼 것이다.TheoryCanny Edge Detection은 가장자리를 탐지하는 유명한 알고리즘이다. 1986년 canny에 의해서 개발되었다. 이는 다층 알고리즘이고, 각 층별로 봐볼 것이다. 1. Noise Reduction가장자리 검출이 이미지 내의 노이즈에 영향을 받기 쉽기에, 첫 번째로 5x5 가우시안 필터로 이미지의 노이즈를 제거해준다. 이전 챕터에서 봤었던 내용이다. 2. Finding Intensity Gradient of the ImageSmoothened 이미지는 수평 및 수직 방향으로 Sobel 커널로 필터링하여 수평 방향(Gx)..

    [OpenCV] 04-6. Image Gradients

    이미지의 gradients(경사도), edges(가장자리)를 찾는다.cv2.Sobel(), cv2.Scharr(), cv2.Laplacian()등의 함수에 대해서 볼 것 이다.TheoryOpenCV는 세 가지 유형의 gradients 필터 또는 High-pass 필터인 Sobel, Sharr, Laplacian을 제공한다.1. Sobel and Scharr DerivativesSobel 연산자는 joint Gaussian smoothing + 미분 연산이므로 노이즈에 대한 내성이 더 강하다. 수직, 수평으로 취할 미분(derivatives)의 방향을 지정할 수 있다. (argument의 yorder, xorder로 각각 가능하다.) 또한 ksize를 통해 커널의..