본문 바로가기

영상

(10)
[OpenCV][C++] 템플릿 매칭 (template matching) 총정리(2) - 영상 회전 rotated matchTemplate matchShape 모양 형태 정합 찾기 지난번에 템플릿 매칭의 기본에 대해 알아보았습니다. https://blog.naver.com/dorergiverny/223108149822 [OpenCV][C++] 템플릿 매칭 (template matching) 총정리(1) - matchTemplate minMaxLoc SQDIFF CCORR CCOEFF 이번에는 템플릿 매칭에 대해 알아보겠습니다. 템플릿 매칭(template matching)은 원본 영상에서 템플릿 영... blog.naver.com 이번에는 그 것을 좀 더 응용하여 좀 더 멋진 소스를 만들어 보겠습니다. 템플릿 매칭 함수 만들기 템플릿 매칭 방법에 따라 SQDIFF는 최소값을 갖는 위치가 매칭 위치이고, 나머지 CCORR 또는 CCOEFF 는 최대값을 갖는 위치가 매칭 위치입니다. ..
[OpenCV][C++] 영상 회전(image rotation)하는 방법 - getRotationMatrix2D(), warpAffine() 이번에는 영상을 특정 각도로 회전시키는 방법에 대해 알아보겠습니다. 2D 회전 행렬은 아래와 같습니다. ​ OpenCV에서는 회전 중심을 선택하고 영상의 크기를 조절할 수 있는 함수를 제공합니다. OpenCV에서 제공하는 함수의 수식은 아래와 같습니다. ​ Cx와 Cy는 영상 회전 중심 좌표를 의미하며, s는 scale 값을 의미합니다. 위의 행렬을 계산해주는 함수가 바로 getRotationMatrix2D() 함수 입니다. 함수의 원형은 아래와 같습니다. center 회전 중심 좌표 angle 회전 각도, degree 단위, (양수: 반시계 방향, 음수: 시계 방향) scale 영상 스케일 조정 값 반환값 회전 행렬 이 행렬을 이용해서 영상을 회전시키기 위해서는 warpAffine() 함수를 사용합니다..
[OpenCV][C++] 영상 분할 ( image segmentation ) 총정리(3) - GrabCut graphcut setmousecallback 지난번에는 워터쉐드 (watershed) 알고리즘에 대해 알아봤습니다. https://blog.naver.com/dorergiverny/223099559423 [OpenCV][C++] 영상 분할 image segmentation 총정리 (1) - 워터쉐드 watershed 알고리즘 rainfall inpaint 워터셰드 이번에는 영상 분할의 기본적인 방법인 워터쉐드 알고리즘에 대해 간단히 알아 본 후 영상 분할 실습을 해 ... blog.naver.com 이번에는 GrabCut 알고리즘에 대해 간단히 알아보도록 하겠습니다. Grabcut 알고리즘이란? GrabCut 알고리즘은 영상에서 배경과 전경을 구분하여 전경을 추출하는 알고리즘으로 그래프 컷(graph cut) 기반의 영역 분할 알고리즘 입니다. 그..
[OpenCV][C++] 영상 가장자리(Border) 픽셀 확장 방법 총정리 - 필터링 적용 copyMakeBorder 지난 시간에 평균 필터(Average Filter)에 대해 알아보면서 다루지 않은 부분이 있어요 https://m.blog.naver.com/dorergiverny/223096804790 [OpenCV][C++] 평균 필터 영상 스무딩smoothing 연산 블러링 blurring 총정리 - boxFilter filter2D image 부드럽 이번에는 필터링에 대해 간단히 알아 본 후에 영상 노이즈 제거하는 방법 중 가장 기본인 평균 필터에 대해... blog.naver.com 바로 가장자리 픽셀 확장 방법에 대한 내용이에요. cv::boxFilter()의 마지막 인자로 borderType이란 인자가 있었어요. base.hpp를 보면, 아래와 같이 가장자리 타입 상수값들이 있어요. 제가 직접 실험해 본 결..
[OpenCV][C++] 영상 외곽선(contour) 추출 총정리(3) - boundingRect, minAreaRect, minEnclosingCircle arcLength contourArea 이번에는 지난 시간에 이어 findContours() 함수로 얻어왔던 정보를 응용하여 추가적인 정보를 얻을 수 있는 방법에 대해 알아보겠습니다. https://m.blog.naver.com/dorergiverny/223077650900 [OpenCV][C++] 영상 외곽선(contour) 추출 총정리(1) - cv::findContours 윤곽선 경계 컨투어 inRange 검출 지난 시간에는 영상 레이블링에 대해 알아봤습니다. 레이블링을 하면서 object의 크기를 판별하고 크기를 ... blog.naver.com 이는 객체의 모양을 판단하는데 사용될 수 있습니다. boundingRect() 윤곽선 점들을 감싸는 가장 작은 크기의 사각형을 구하는 함수 입니다. 함수 원형은 아래와 같습니다. points ..
[OpenCV][C++] 영상 외곽선(contour) 추출 총정리(2) - cv::drawContours cvtColor 컨투어 찾기 바깥 라인 convexhull 지난번에 영상의 윤곽선을 추출하는 findContours()에 대해 자세히 알아 봤습니다. https://m.blog.naver.com/dorergiverny/223077650900 [OpenCV][C++] 영상 외곽선(contour) 추출 총정리(1) - cv::findContours 윤곽선 경계 컨투어 inRange 검출 지난 시간에는 영상 레이블링에 대해 알아봤습니다. 레이블링을 하면서 object의 크기를 판별하고 크기를 ... blog.naver.com 이번에는 findContours()로 찾은 윤곽선을 영상 위에 그리는 방법에 대해 알아보겠습니다. drawContours drawContours()의 원형은 아래와 같습니다. src 윤곽선을 그릴 영상, gray, color 영상 가능 conto..
[OpenCV][C++] 영상 라벨링(Labeling) 총정리(1) - 이미지 레이블링 connectedComponents ccl 이번에는 영상 라벨링(레이블링)이라고 하는 기법에 대해 설명할께요. 영상 라벨링 (Image Labeling) 이란? 영상 라벨링은 영상 내에서 주위 같은 밝기의 픽셀값을 가지는 픽셀들을 그룹화하여 그룹별로 번호를 매기는 방법을 말합니다. object detection, segmentation 등에 많이 사용되는 기법이에요. 이전에 이진화 기법을 통해 배경과 전경을 구분할 수 있었는데요. https://blog.naver.com/dorergiverny/223059732009 [OpenCV][C++] Thresholding 이진화 영상 만들기 총정리 (1) - image threshold binarization otsu triangle 히스토그램 지난번에는 함수 실행 시간을 측정하는 쉬운 방법에 대해 알아..
[OpenCV][C++] Thresholding 이진화 영상 만들기 총정리 (1) - image threshold binarization otsu triangle 히스토그램 지난번에는 함수 실행 시간을 측정하는 방법에 대해 알아봤습니다. https://blog.naver.com/dorergiverny/223079726064 [OpenCV][C++] 함수 실행 시간 측정 쉬운 방법 - TickMeter 사용법 총정리 elapsed time chrono getTimeMilli reset b 지난 번에 함수 실행 시간 측정하는 방법으로 chrono 라이브러리를 사용하는 방법에 대해 알아 보았습니다.... blog.naver.com 이번에는 그레이 영상을 이진화 하는 방법에 대해 알아보겠습니다. 이진화는 특정 밝기 범위 또는 밝은 영역과 어두운 영역 등으로 이분화해서 전경과 배경으로 나누는 방법입니다 Thresholding (이진화) 이진화는 영상의 픽셀들을 두 개의 부류로 나누는..