이번 포스팅은 OpenCV에서 Meanshift를 이용한 Object Detection에 대해 알아보겠습니다. 포스팅 관련 내용은 아래에서 출처를 얻어 사용하였습니다. https://docs.opencv.org/4.5.2/d7/d00/tutorial_meanshift.html GOAL - 물체를 추적하는 Meanshift 알고리즘에 대해 공부할 것입니다. Meanshift - Meanshift는 말 그대로 Mean (평균) Shift (이동) 알고리즘입니다. Meanshift는 매우 직관적으로 이해할 수 있었는데 아래 그림처럼 어떤 데이터 포인트 셋이 있을 때 원 모양의 윈도를 그리고 가장 많은 데이터를 가지고 있는 원의 영역으로 이동합니다. - 그림을 보시면 초기 윈도우 창은 C1이며 중심은 C1_o입..
python opencv
이번 포스팅은 OpenCV에서 Haar Cascades을 이용한 얼굴 검출에 대해 알아보겠습니다. 포스팅 관련 내용은 아래에서 출처를 얻어 사용하였습니다. https://docs.opencv.org/4.5.0/db/d28/tutorial_cascade_classifier.html GOAL - Haar Cascade로 object detection을 어떻게 하는지 알아본다. - Haar Feature-based Cascade Classifiers를 사용하여 기본적인 얼굴 감지 및 눈 감지를 해본다. - OpenCV에서 Haar Cascade로 어떻게 detection 하는지 알아본다. Theory - Haar feature-based cascade classifiers (Haar feature을 기반으로 ..
이번 포스팅은 SVM 알고리즘에 대해 알아보고 OpenCV에서 어떻게 사용하는지 알아보겠습니다. 포스팅 관련 내용은 아래에서 출처를 얻어 사용하였습니다. https://docs.opencv.org/4.4.0/d1/d73/tutorial_introduction_to_svm.html GOAL - SVM이 무엇인지? - OpenCV에서 SVM의 사용 방법 Theory - What is SVM? - SVM(Support Vector Machine)은 레이블이 지정된 훈련 데이터가 주어지면 최적으로 데이터들을 분류하게 만드는 초평면(hyperplane) 출력 알고리즘입니다. - 빨간색과 파란색 두 클래스를 선형으로 분리 가능한 직선을 구하는 문제가 있을 때 위 그림처럼 다양한 선이 있음을 알 수 있습니다. 저 선..
이번 포스팅은 Watershed 알고리즘을 이용하여 Image segmentation을 하는 방법을 알아보고 OpenCV에서 어떻게 사용하는지 알아보겠습니다. 포스팅 관련 내용은 아래에서 출처를 얻어 사용하였습니다. https://docs.opencv.org/4.0.1/d3/db4/tutorial_py_watershed.html Goal - Watershed 알고리즘을 이용한 이미지 구분 - cv2.watershed() 사용 Theory - 밑의 예시처럼 grayscale 이미지를 픽셀 값 ( 0 ~ 255 )에 따른 분포도를 그려보면 값이 높은 부분과 낮은 부분으로 되어있습니다. - 여기서 값이 높은 부분을 봉우리로 값이 낮은 부분을 계곡이라 부르기로 하고 이렇게 만들어진 봉우리와 계곡에 물을 붓는다고..
이번 포스팅은 Image Thresholding에 대해 알아보고 OpenCV에서 사용하는 threshold에 대해 알아보겠습니다. 포스팅 관련 내용은 아래에서 출처를 얻어 사용하였습니다. https://docs.opencv.org/4.5.2/d7/d4d/tutorial_py_thresholding.html Thresholding(스레시홀딩) - thresholding은 binary image(바이너리 이미지)를 만드는 대표적인 방법입니다. 바이너리 이미지는 검은색과 흰색만으로 나타내는 이미지이며 스레시홀딩이란 임계점을 기준으로 검은색(0)과 흰색(255), 두 가지로 나누는 것을 의미합니다. 바이너리 이미지를 만드는 이유는 1) 배경과 객체 구분 2) 관심 영역과 비관심 영역의 구분 mask도 바이너리 ..
이번 포스팅은 k-means 알고리즘에 대해 알아보고 OpenCV에서 사용하는 k-means Clustering에 대해 알아보겠습니다. 포스팅 관련 내용은 아래에서 출처를 얻어 사용하였습니다. https://docs.opencv.org/4.5.2/d1/d5c/tutorial_py_kmeans_opencv.html k-평균(k-means) 알고리즘 - k-means 알고리즘은 대표적인 Clustering 알고리즘 중 하나입니다. 1) 각 군집은 하나의 중심(centroid)을 가집니다. 2) 각 개체는 가장 가까운 중심에 할당됩니다. 3) 같은 중심에 할당된 개체들이 모여 하나의 군집을 형성하는 알고리즘입니다. - k(군집 수)를 정해야 알고리즘을 실행할 수 있으며 이는 k가 하이퍼파라미터라는 의미입니다...
이번 포스팅은 객체 추적 중 하나의 방법인 배경 제거(Background Subtraction)에 대해 알아보겠습니다. 포스팅 관련 내용은 아래에서 출처를 얻어 사용하였습니다. https://docs.opencv.org/3.4/d1/dc5/tutorial_background_subtraction.html Background Subtraction (배경 제거) 배경 제거는 영상에서 객체가 있는 배경에서 객체가 없는 배경을 빼서 출력해주는 것을 말합니다. 이는 객체를 추적할 때 객체가 무엇인지 어디에 있는지 파악하게 해주는 방법입니다. 아래의 그림을 보면 이해가 쉬울 거예요! 위 그림을 보시면 객체(배)가 있는 사진에서 객체(배)가 없는 사진을 빼서 결국 객체만 얻는 것을 볼 수 있습니다. Backgroun..
이번 포스팅은 https://docs.opencv.org/4.5.2/df/d3d/tutorial_py_inpainting.html 을 보고 공부한 것을 정리 했습니다. 1. Inpaint 란? - 오래된 사진에서 작은 노이즈를 제거하는 방법입니다. - OpenCV를 통해 Inpaint 함수를 알아보고 구현해보겠습니다. Inpaint 함수 - python-opencv 에서 inpaint 함수를 사용하기 위한 원형은 - cv2.inpaint(src, inpaintMask, inpaintRadius, flags[, dst]) 입니다. - inpaintMask : 8비트 1채널 이미지 ( 흑백 이미지 ) - inpaintRadius : 알고리즘에 의해 포인트의 circular neighborhood 의 Radi..