[안드로이드로 배우는 OpenCV] 바운딩 트라이앵글 구하기

Prerequisite : 윤곽선 길이 구하기 바운딩 트라이앵글 바운딩 트라이앵글(삼각형)이란 윤곽선을 외접하여 둘러싸는 가장 작은 삼각형을 의미한다. OpenCV에서는 minEnclosingTriangle라는 함수를 통해 바운딩 트라이앵글을 구할 수 있다. Imgproc.minEnclosingTriangle(contour, triangle) contour: 윤곽선 좌표triangle: 함수 호출 후 참조할 삼각형 정보 (Mat타입) minEnclosingTriangle 함수를 이용하여 이미지 내 도형을 감싸는 예제를 살펴보자. 예제코드: val contours = ArrayList<MatOfPoint>() 더보기…

[안드로이드로 배우는 OpenCV] 최소 크기의 회전된 바운딩 박스 구하기

Prerequisite : 윤곽선 길이 구하기, 바운딩 박스 최소 크기의 회전된 바운딩 박스 바운딩 박스를 회전시켜 구할 수 있다면, 더 작은 사각형으로 도형을 감쌀수 있다. OpenCV에서는 회전된 바운딩 박스를 구하는데 minAreaRect() 함수를 제공한다. Imgproc.minAreaRect(contour) contour: 윤곽선 좌표반환값: RotatedRect 타입의 회전된 사각형 정보 minAreaRect 함수를 사용하여 최소 크기의 회전된 바운딩 박스를 구하는 더보기…

[안드로이드로 배우는 OpenCV] 바운딩 써클 구하기

Prerequisite : 윤곽선 길이 구하기 바운딩 써클 바운딩 써클이란 윤곽선을 외접하여 둘러싸는 가장 작은 원을 의미한다. OpenCV에서는 minEnclosingCircle이라는 함수를 통해 바운딩 써클를 구할 수 있다. Imgproc.minEnclosingCircle(contour, center, radius) contour: 윤곽선 좌표center: 함수 호출 후 참조 가능한 도형의 중심점radius: 함수 호출 후 참조 가능한 바운딩 서클 반지름 minEnclosingCircle 함수를 이용하여 이미지 더보기…

[안드로이드로 배우는 OpenCV] 바운딩 박스 구하기

Prerequisite : 윤곽선 길이 구하기 바운딩 박스 바운딩 박스란 윤곽선을 외접하여 둘러싸는 가장 작은 사각형을 의미한다. OpenCV에서는 boundingRect라는 함수를 통해 바운딩 박스를 구할 수 있다. Imgproc.boundingRect(contour) contour: 외곽선 정보(좌표)반환값: 사각형 정보(Rect);(x,y,w,h) 정보를 포함 boundingRect함수를 이용하여 이미지내의 도형을 감싸는 예제를 살펴보자. 예제 코드: val contours = ArrayList<MatOfPoint>() val hierarchy = Mat() 더보기…

[안드로이드로 배우는 OpenCV] 윤곽선을 감싸는 면적의 크기를 구하기

OpenCV에서 제공하는 함수를 통해 윤곽선이 감싸는 영역의 면적을 구하는 방법을 알아보자. 윤곽선을 감싸는 면적 구하기 Imgproc.contourArea(contour) contour : 윤곽선 정보(좌표)oriented(optional) : true면 윤곽선 진행 방향에 따라 부호 있는 면적을 반환. 기본값은 false반환값 : 윤곽선으로 구성된 영역의 면적 위 함수를 이용하여 이미지 내에 포함된 도형들의 면적(픽셀갯수)을 구하는 예제를 만들어보자. 예제 코드:

[안드로이드로 배우는 OpenCV] 윤곽선 길이 구하기

지난 포스팅에서 윤곽선 검출 함수 findContours() 를 통해 윤곽선을 검출하는 방법에 대해 알아보았다. 이 포스팅에서는 검출한 윤곽선 정보를 가지고 윤곽선의 길이를 구하는 함수에 대해서 알아본다. 윤곽선 길이 구하기 contour: 윤곽선 정보(좌표)closed: true면 폐곡선반환값: 윤곽선의 길이 arcLength 함수를 사용하는 가장 긴 외곽선만 검출하는 예제를 만들어보자. Tip : findContours 함수로 찾은 윤곽선들의 더보기…

[안드로이드로 배우는 OpenCV] 윤곽선 검출하기

윤곽선(Contour)이란? 객체의 경계를 따라 연속적으로 결합되는 픽셀들을 윤곽선이라고 할 수 있다. 윤곽선은 모양 분석과 물체 감지 및 인식에 유용하다. 윤곽선을 찾을때는 더 나은 검출 정확도를 위해 이진화된 이미지를 사용하며, 검정 배경에서 흰색 객체를 찾는 것임을 기억하자. 윤곽선 알고리즘 윤곽선을 찾는 알고리즘이나 관련논문은 다음과 같다. Square tracing Moore-neighbor tracing Radial sweep 더보기…

글쓴이 Charlezz,

[안드로이드로 배우는 OpenCV] 모폴로지(Morphology)

모폴로지(Morphology) 모폴로지는 형태학적인 측면에서 이미지를 다루는 기법을 말한다. 다양한 영상 처리 시스템에서 전처리 (Pre-processing) 또는 후처리(Post-processing) 형태로 사용한다. 모폴로지 연산의 예를 들자면,이진화 된 이미지에서 노이즈를 제거하거나, 구멍을 채운다거나, 끊어진 선을 이어 붙일 때 등에 사용될 수 있다. 이 포스팅에서는 침식과 팽창 그리고 열기와 닫기 연산에 대해서 알아볼텐데, 이러한 연산들을 수행하기 더보기…

글쓴이 Charlezz,

[안드로이드로 배우는 OpenCV] 레이블링(Labeling)

레이블링(Labeling) 레이블링이란 일반적으로 이진화 된 이미지에서 연속된 픽셀에  대해 고유한 번호를 매기는 작업을 의미 한다. 이진화에 대한 내용은 이전 포스팅에서 확인할 수 있다. 이미지의 이진화 자동 이진화 임계값 결정(Otsu) 지역 이진화 적응형 이진화 레이블링을 수행하면 객체 단위로 이미지를 분석할 수 있게 된다. 객체의 위치, 크기, ROI 추출, 모양 분석등이 가능해진다. 더보기…

[안드로이드로 배우는 OpenCV] 적응형 이진화(Adaptive Threshold)

적응형 이진화 지난 포스팅에서 Otsu 및 지역 이진화를 적용 했을 때 다음과 같은 결과물을 얻는 것을 확인했다. Otsu나 지역 이진화를 통한 방법은 모든 이미지에서, 특히 이미지가 서로 다른영역에서 다른 밝기값을 가질 때 잘 수행되지 않는다. 이러한 경우 적응형 이진화를 진행할 수 있다. 적응형 이진화란 이미지의 각 픽셀에 대해 개별적으로 임계값을 더보기…

글쓴이 Charlezz,