개발차

    [OpenCV] 04-4. Smoothing Images

    다양한 low pass filter(LPF)가 있는 흐릿한 이미지이미지에 커스텀 필터 적용하기2D Convolution ( Image Filtering )1차원 신호에 대해서, 이미지는 다양한 LPF, high-pass filters(HPF)등으로 필터링 할 수 있다. LPF는 노이즈를 제거하거나, 이미지를 흐릿하게 하는데 도움을 준다. HPF 필터들은 이미지에서 윤곽선을 찾도록 도와준다.OpenCV는 커널을 이미지로 확인하는 cv2.filter2D() 함수를 제공한다. 예를 들어서, 이미지에 대해서 평균 필터를 사용해 볼 것이다. 5x5 평균 필터 커널은 다음과 같이 정의될 수 있다.K=125⎡⎣⎢⎢⎢⎢⎢1111111111111111111111111⎤⎦⎥⎥⎥..

    [OpenCV] 04-3. Geometric Transformations of Images

    이미지를 변형시키는 다른 기하학적인 방법인 translation, rotation, affine transform 등에 대해서 배워볼 것이다.cv2.getPerspectiveTransform() 함수에 대해 볼 것이다.TransformationsOpenCV는 두 가지 변형 함수 cv2.warpAffine과 cv2.warpPerspective를 제공합니다. cv2.warpPerspective가 3x3 변환 매트릭스를 입력으로 받을 때, cv2.warpAffine은 2x3 변환 매트릭스를 받는다.Scaling스케일링은 그저 이미지를 resizing하는 것이다. OpenCV는 이러한 목적으로 cv2.resize 함수가 제공된다. 이..

    [OpenCV] 04-2. Image Thresholding

    이번에는, 간단한 thresholding, 적응성 있는 thresholding, Otsu’s의 thresholding에 대해서 배워볼 것 이다.cv2.threshold, cv2.adaptiveThreshold등에 대해서 볼 것 이다.Simple Thresholding만약에 픽셀 값이 임계값보다 크면 하나의 값(흰색일수도)이 할당되고, 그렇지 않으면 다른 값(검정색일수도)이 할당된다. 사용된 함수는 cv2.threshold이다. 첫 번째 argument는 그레이 스케일 이미지여야하는 소스 이미지이다. 두 번째 argument는 픽셀 값을 분류하는 데 사용되는 임계값이다. 세 번째 argument는 픽셀 값이 임계값보다 클 경우(혹은 그 보다 작을 경우) 주어..

    [OpenCV] 04-1. Changing Colorspaces

    이 튜토리얼에서는 하나의 컬러 공간의 이미지를 다른 공간으로 변환하는지를 배울 것이다. (ex. BGR -> Gray / BGR -> HSV 등)추가적으로, 비디오에서 색이 있는 객체를 추출하는 기능을 만들어 볼 것이다.cv2.cvtColor(), cv2.inRange()에 대해서 배울 것이다.Changing Color-spaceOpenCV에는 150개 이상의 색상 공간 변환 방법이 있다. 하지만 하지만 가장 자주 널리 사용되는 BGR -> Gray 와 BGR -> HSV를 볼 것이다.색상 변환에서, cv2.cvtColor(input_img,flag) 함수를 사용하는데 flag는 변환의 종류를 결정한다.BGR -> Gray 변환에 대해서는 cv2.COL..

    [OpenCV] 03-3. Performance Measurement and Improvement Techniques

    이미지 전처리과정에서, 초당 수많은 기능들을 다루기 때문에 코드가 정확한 해결책을 줄 뿐만 아니라, 빨라야하는게 필수적이다. 이번 장에서는 다음의 것들을 배울 것이다.코드의 성능을 측정코드의 성능을 향상시키는 조금의 방법cv2.getTickCount(), cv2.getTickFrequency() 함수OpenCV와 별개로, Python에서는 실행 시간을 측정할 수 있는 ‘time’ 모듈이 있다. 또 다른 모듈로는 ‘profile’로, 어떤 코드에 얼마나 시간이 걸렸는지, 함수가 몇 번 불렸는지등 자세하게 코드에 대한 리포트를 보여준다. 하지만 IPython을 사용중이라면, 이 모든 기능은 객체 지향적인 방식으로 통합된다. 중요한 몇 가지를 볼 것이고, 자세한 내용은 아래의 내용을 보면 된다!Measurin..

    [OpenCV] 03-2. Arithmetic Operations on Images

    덧셈, 뺄셈, 비트연산 등 이미지에 대한 다양한 산술 기능을 배워볼 것이다.cv2.add(), cv2.addWeighted() 에 대해서 알아볼 것이다.Image Additioncv2.add() 함수를 통해서 두 개의 이미지를 더할 수 있고 혹은 res = img1 + img2 처럼 numpy 연산으로도 가능하다. 두 개의 이미지는 동일한 깊이와 타입이거나 두 번째 이미지가 그냥 scalar이어도 된다.import numpy as np import cv2 x = np.uint8([250]) y = np.uint8([10]) # Saturation 연산 print(cv2.add(x,y)) # 255이상이어서 255로 표현함 # Modulo 연산 print(x+y) # 256보다 크기에 256으로 나눠준다...