import cv2 import numpy as np import matplotlib.pyplot as plt Morphological Transformation 이미지 프로세싱에서 Morphology(형태학)는 이미지를 Segmentation 하여 단순화, 제거, 보정을 통해 형태를 파악하는 목적으로 사용된다. 기본적으로 바이너리 이미지 상에서 이루어지며 원본 이미지와 이미지에 가해지는 변형을 결정하는 구조화된 요소(커널과 같은 역할), 2개의 입력값을 가진다. 그래서 Morphological Transformation(형태학적 변환)역시 이미지 필터링을 사용하여 영역을 변화시키는 방법중 하나라고 인식할 수 있다. 일반적으로 Binary나 Grayscale 이미지에 사용되며, Dilation(팽창), ..
opencv 검색 결과
[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 이미지 주파수 이미지도 음성 신호처럼 주파수로 표현할 수 있다. 일반..
이미지 위에 임의의 4점을 선택하면 그 구역 내 이미지를 원근 변환하는 코드를 작성해보았다. homograpyTransformation 함수를 통해 4점을 입력받으면 calPoint 함수로 상하좌우를 지정해주기 때문에 전처럼 "좌상 → 좌하 → 우상 → 우하" 순으로 점을 찍지 않아도 되며, 변형 후 각 점의 좌표와 원근 변환한 이미지 크기도 같이 계산해준다. img = cv2.imread('athletic-field-1867053_1920.jpg') count = 0 blue, green, red, yellow = (255, 0, 0), (0, 255, 0), (0, 0, 255), (0, 255, 255) point_array = [] def calPoint(ary): total = np.sum(ar..
import numpy as np import cv2 import matplotlib.pyplot as plt 2D 이미지 기하학적 변형 (Transformation) → 행렬 변환 1. 강체변환 (Ridid-Body) : 크기와 형태를 유지한 채 위치와 방향을 바꾸는 변환 (ex. 위치변경(Translation), 회전(Rotation)) 2. 유사변환 (Similarity) : 강체변환에 크기의 변환도 허용 (ex. 크기변경(Scaling)) 3. 선형변환 (Linear) : Vector 공간에서의 이동. (회전, 크기변경 및 반전, 밀림도 가능하지만 위치변경은 못한다.) 4. Affine : 선형변환과 이동변환까지 포함. 선의 수평성은 유지 5. Perspective : Affine 변환에서 수평성..
import numpy as np import cv2 import matplotlib.pyplot as plt 2D 이미지 기하학적 변형 (Transformation) → 행렬변환 1. 강체변환 (Ridid-Body) : 크기와 형태를 유지한 채 위치와 방향을 바꾸는 변환 (ex. 위치변경(Translation), 회전(Rotation)) 2. 유사변환 (Similarity) : 강체변환에 크기의 변환도 허용 (ex. 크기변경(Scaling)) 3. 선형변환 (Linear) : Vector 공간에서의 이동. (회전, 크기변경 및 반전, 밀림도 가능하지만 위치변경은 못한다.) 4. Affine : 선형변환과 이동변환까지 포함. 선의 수평성은 유지 5. Perspective : Affine 변환에서 수평성이..
BFMatcher는 특징 디스크립터를 전수 조사하는 것이 특징이며, cv2.BFMatcher()를 사용할 때 상호 매칭까지 하게 되면 작업 속도가 느리다는 단점이 있다. [OpenCV Programming] 디스크립터(Descriptor) 특징을 나타내는 값을 매칭하기 위해서는 회전이나 크기 등에 영향이 없어야 하며, 이를 위해서는 feature descriptor(특징 디스크립터)가 필요하다. 특징 디스크립터는 keypoint의 주변의 밝기나 색상 dsbook.tistory.com 이를 개선한 것이 FLANN(Fast Library for Approximate Nearest Neighbors Matching)이다. FLANN은 가장 가까운 이웃의 근사 값으로 매칭을 수행하며, Machine Learni..
1. MeanShift MeanShift는 대상 객체의 색상 정보를 평균 이동에 대해 추적하는 알고리즘으로, 연산이 이루어지는 과정은 다음과 같다. 1) 영상에서 추적할 대상을 선정한 후 HSV 컬러 Space의 H(Hue)값 히스토그램 계산 2) 전체 영상을 과정 1의 히스토그램 계산 후 역투영 처리 3) 역투영된 영상에서 MeanShift로 추적 역투영이란 전체 영상의 색상 정보와 대상 객체의 색상 정보의 비율을 0~255 구간 내로 정규화한 것이다. opencv는 히스토그램 역투영 결과에서 평균 이동으로 대상 객체의 위치를 찾아주는 함수 cv2.meanShift()를 지원한다. import cv2 import numpy as np capture = cv2.VideoCapture("video.avi"..
import cv2 import numpy as np import matplotlib.pyplot as plt 전역 임계처리 (Global Thresholding) 하나의 이미지에 전역으로 적용될 하나의 문턱값을 이용해 thresholding 기능을 제공하는 함수가 있다. cv2.threshold(src, thresh, maxval, type [, dst]) → retval, dst threshold 함수는 멀티 채널 배열의 thresholding을 픽셀단위로 적용한다. 즉 컬러 이미지에도 사용할 수 있으나, 주로 Grayscale 이미지에서 바이너리 이미지를 얻기 위해 사용하거나 픽셀 값 중 너무 크거나 작은 값들을 필터링하여 노이즈를 제거하기 위해 사용한다. 1. src : threshold에 적용할..
지정된 객체의 위치의 이동 상황을 지속적으로 찾는 것을 객체 추적이라고 한다. 스포츠 경기에서 사람의 시선은 일반적으로 공이나 선수를 따라 움직이게 된다. 어떤 객체를 한번 인식하고 난 후에는 객체의 움직임을 쉽게 파악할 수 있다. 그러다가 움직임을 놓치면 다시 주변 환경을 파악해서 원하는 객체를 찾게 된다. 컴퓨터 역시 객체를 인식하고 검출하기 위해 사람이 눈을 움직이는 것처럼 객체를 추적하는 방법이 필요하다. 컴퓨터는 연속적인 장면에 대한 흐름에 따라 객체를 파악해낸다. OpenCV에서 지원되는 객체의 움직임을 파악할 수 있도록 영상에서 배경을 제거해주는 기능을 통해서 객체 인식이 가능하다. BackgroundSubtractorMOG2 import cv2 import numpy as np captur..
최근댓글