import cv2 import numpy as np import matplotlib.pyplot as plt 1. Convexity Defects 이전에 Convex Hull을 통해 Contour Points를 모두 포함하는 볼록체에 대해 살펴보았다. 그러면서 cv2.isContourConvex 함수를 통해 Contour에 볼록 결함(Convexity Defect)가 있는지 살펴보기도 하였다. 이번에는 단순히 해당 이미지가 볼록한지 아닌지를 판단하는 것 뿐만 아니라 볼록 결함이 있는, 즉 오목한 지점의 위치를 찾아보자. cv2.convexHull 함수를 통해 해당 Contours에서 볼록한 부분을 찾을 수 있다. 필요한 인자로는 points로 2차원 포인터들의 집합을 입력으로 받으며 cv2.findCo..
Computer Vision 검색 결과
import cv2 import numpy as np import matplotlib.pyplot as plt import random Contour Hierarchy 이전에 findContours로 Contours Points와 Hierarhcy를 반환받는다고 하였다. Image에는 여러가지 Contours가 존재하고, 그 사이에는 상관관계가 존재하며, 그 관계를 Contours Hierarchy라고 한다. 이들의 상관관계를 통해서 Parent, Child 혹은 동등한 상관관계에서의 이웃을 파악할 수 있다. Contours를 찾다보면 해당 Contours가 독립적으로 존재하는 Contours일 경우도 있고 내부에 Contour가 존재하는 경우도 있다. 각각 동일한 수준에서 Contour가 존재하는 경우..
import cv2 import numpy as np import matplotlib.pyplot as plt Contour Features 1. Contour Approximation (Contour 근사) cv2.findContours 함수를 통해 찾은 Contours line에는 각각의 Contours point를 가지고 있다. 보통은 이 Point를 drawContours 함수를 이용하여 Line을 그리게 된다. 이 때 우리가 지정한 정밀도에 따라 Point의 꼭짓점의 수를 줄여가면서 기존의 Contours line에 근사한 line을 그릴 수 있다. 이 Point의 수를 줄이는데 Douglas-Peucker 알고리즘을 사용한다. cv2.approxPolyDP(curve, epsilon, clos..
import cv2 import numpy as np import matplotlib.pyplot as plt Contours Contour는 동일한 색 또는 동일한 픽셀값(강도, intensity)을 가지고 있는 영역의 경계선 정보이다. 물체의 윤곽선, 외형을 파악하는데 사용된다. openCV의 findContour 함수로 이미지의 Contour 정보와 Contour 계층구조(hierarchy) 정보를 출력한다. 흑백 이미지 또는 이진화된 이미지에만 적용할 수 있다. findContours 함수로 반환받는 Contour 값은 Contour를 구성하는 점들로 이루어진 배열의 리스트로 len(contours)로는 hierarchy의 갯수를, len(contours[i])로는 각각의 hierarchy를 이루..
import cv2 import numpy as np import matplotlib.pyplot as plt Contour Contour는 등고선이라는 뜻으로 같은 값을 가진 곳을 연결한 선이라고 생각하면 된다. 이미지에서 Contours는 동일한 색 또는 동일한 강도를 가지고 있는 영역의 경계선을 연결한 선이다. 물체의 모형 분석이나 객체 감지 및 인식 알고리즘에 주로 사용하는 툴이다. 1. 정확도를 높이기 위해 주로 Binary 이미지를 사용한다. 그래서 Contours를 찾기 전에 threshold나 Canny 경계선 탐지 등을 이미지에 먼저 적용한다. 2. cv2.drawContours() 함수는 원본 이미지를 직접 수정하기 때문에, 원본 이미지를 보존하려면 copy() 함수를 사용해야 한다. ..
import cv2 import numpy as np import matplotlib.pyplot as plt 이미지 피라미드 (Image Pyramids) 이미지의 스케일(scale)과 해상도를 조절하는 작업으로 동일한 이미지를 가지고 여러 다양한 크기로 조절하여 작업할 필요가 있을 때도 있다. 예를 들어 이미지에서 사람의 얼굴과 같이 객체에서 특정한 무언가를 탐색하려고 할 때가 대표적이다. 우리가 확보한 얼굴 이미지가 있다고 가정하자. 다른 이미지에서 이 얼굴과 동일한 이미지를 탐색한다고 할 때, 우리가 가진 이미지에서 얼굴 크기와 다른 이미지에서 보이는 얼굴 크기가 다를 수 있다. 이럴 경우에는 탐색 대상 이미지의 해상도를 다단계로 만들어 각 단계에서 얼굴을 탐색하면 좀 더 나은 결과를 보일 수 있..
import cv2 import numpy as np import matplotlib.pyplot as plt Canny Edge Detection 경계선 검출 방식에서 가장 많이 사용하는 알고리즘이다. 일반적으로 경계선 검출기는 잡음에 매우 민감한 특성을 가지고 있다. 따라서 잡음으로 인해 잘못된 경계선을 계산하는 것을 방지하기 위해 개발 된 알고리즘이다. Canny 알고리즘은 다음의 5가지 단계를 거친다. 1. Gaussian Filter로 이미지의 잡음을 제거한다. 2. Sobel Filter를 사용하여 Gradient의 크기(intensity)를 구한다. 3. Non-maximum suppression을 적용하여 경계선 검출기에서 거짓 반응을 제거한다. 4. 경계선으로써 가능성 있는 픽셀을 골라내..
import cv2 import numpy as np import matplotlib.pyplot as plt Morphological Transformation 이미지 프로세싱에서 Morphology(형태학)는 이미지를 Segmentation 하여 단순화, 제거, 보정을 통해 형태를 파악하는 목적으로 사용된다. 기본적으로 바이너리 이미지 상에서 이루어지며 원본 이미지와 이미지에 가해지는 변형을 결정하는 구조화된 요소(커널과 같은 역할), 2개의 입력값을 가진다. 그래서 Morphological Transformation(형태학적 변환)역시 이미지 필터링을 사용하여 영역을 변화시키는 방법중 하나라고 인식할 수 있다. 일반적으로 Binary나 Grayscale 이미지에 사용되며, Dilation(팽창), ..
[OpenCV Practice 10 - 1] 이미지 필터링 (Image Filtering & Blurring) OpenCV: Smoothing Images Goals Learn to: Blur images with various low pass filters Apply custom-made filters to images (2D convolution) 2D Convolution ( Image Filtering ) As in one-dimensional signa.. dsbook.tistory.com def onChange(x): pass def blurringTrackbar(): img = cv2.imread('atom-4.png') cv2.namedWindow('blurring', cv2.WINDOW_..
OpenCV: Smoothing Images Goals Learn to: Blur images with various low pass filters Apply custom-made filters to images (2D convolution) 2D Convolution ( Image Filtering ) As in one-dimensional signals, images also can be filtered with various low-pass filters (LPF), high-pass filt docs.opencv.org import cv2 import numpy as np import matplotlib.pyplot as plt 이미지 주파수 이미지도 음성 신호처럼 주파수로 표현할 수 있다. 일반..
최근댓글