본문 바로가기

3학년

(20)
[OpenCV] 15장 머신 러닝 15.1 머신 러닝과 OpenCV 15.1.1 머신 러닝 개요 머신러닝(machine learning): 주어진 데이터를 분석하여 규칙성, 패턴 등을 찾고, 이를 이용하여 의미 있는 정보를 추출하는 과정 나머지는 심층학습 내용과 동일 15.1.2 OpenCV 머신 러닝 클래스 virtual bool StatModel::train(InputArray samples, int layout, InputArray responses); samples: 훈련 데이터 행렬 layout: 훈련 데이터 배치 방법. ROW_SAMPLE 또는 COL_SAMPLE를 지정 responses: 각 훈련 데이터에 대응되는 응답(레이블) 행렬 반환값: 정상적으로 학습이 완료되면 true를 반환 virtual float StatMode..
[OpenCV] 14장 지역 특징점 검출과 매칭 14.1 코너 검출 14.1.1 해리스 코너 검출 방법 특징(feature): 영상으로부터 추출할 수 있는 유용한 정보를 의미. 평균 밝기, 히스토그램, 에지, 직선 성분, 코너 등이 특징이 될 수 있음 지역 특징(local feature): 코너처럼 영상 전체가 아닌 일부 영역에서 추출할 수 있는 특징 특징점 (feature point): 코너처럼 한 점의 형태로 표현할 수 있는 특징 void cornerHarris(InputArray src, OutputArray dst, int blockSize, int ksize, double k, int borderType = BORDER_DEFAULT); src: 입력 영상. CV_8UC1 또는 CV_32FC1 dst: 해리스 코너 응답 함수 값을 저장할 행렬..
[OpenCV] 13장 객체 검출 13.1 템플릿 매칭 템플릿 매칭(template matching): 입력 영상에서 작은 크기의 부분 영상 위치를 찾아내고 싶은 경우에 사용 템플릿: 찾고자 하는 대상이 되는 작은 크기의 영상 void matchTemplate(InputArray image, InputArray templ, OutputArray result, int method, InputArray mask = noArray()); image: 입력 영상. 8비트 또는 32비트 실수형 templ: 템플릿 영상. 입력 영상 image보다 같거나 작아야 하며, image와 타입이 같아야 한다 result: (출력) 비교 결과를 저장할 행렬. CV_32FC1 타입 method: 템플릿 매칭 비교 방법. TemplateMatchModes 열거형..
[OpenCV] 12장 레이블링과 외곽선 검출 12.1 레이블링 12.1.1 레이블링의 이해 레이블링(labeling): 배경과 객체를 구분한 후 각각의 객체를 구분하고 분석하는 작업. 영상 내에 존재하는 객체 픽셀 집합에 고유 번호를 매기는 작업으로 연결. 구성 레이블링이라고도 함 int connectedComponents(InputArray image, OutputArray labels, int connectivity = 8, int ltype = CV_32S); image: 입력 영상. CV_8UC1 또는 CV_8SC1 labels: 출력 레이블 맵 행렬 connectivity: 연결성. 8 또는 4를 지정할 수 있음 ltype: 출력 행렬 타입. CV_32S 또는 CV_16S를 지정할 수 있음 반환값: 레이블 개수. 반환값이 N이면 0부터 N..
[OpenCV] 11장 이진화와 모폴로지 11.1 영상의 이진화 11.1.1 이진화 영상의 이진화 (binarization): 영상의 각 픽셀을 두 개의 부류로 나누는 작업. 이진화가 적용된 이진 영상은 보통 흰색과 검은색 픽셀로만 구성된다. double threshold(InputArray src, OutputArray dst, double thresh, double maxval, int type); src: 입력 영상 dst: 출력 영상. 입력 영상과 같은 크기, 같은 타입을 갖는다 thresh: 임계값 maxval: THRESH_BINARY 또는 THRESH_BINARY_INV 방법을 사용할 때 결과 영상의 최댓값 type: 임계값 연산 방법. THresholdTypes 열거형 상수를 지정 반환값: 사용된 임계값, THRESH_OTSU 또..
[OpenCV] 10장 컬러 영상 처리 10.1 컬러 영상 다루기 10.1.1 컬러 영상의 픽셀 값 참조 일반적으로는 RGB 색상 순서를 사용하지만 OpenCV의 경우 BGR(파랑, 초록, 빨강) 순서로 저장된 Mat 객체를 사용. 각 색상 성분은 0부터 255 사이의 값을 가질 수 있다. void color_inverse() { Mat src = imread("butterfly.jpg", IMREAD_COLOR); if (src.empty()) { cerr
[OpenCV] 9장 에지 검출과 응용 9.1 에지 검출 9.1.1 미분과 그래디언트 에지(edge): 한쪽 방향으로 픽셀 값이 급격하게 바뀌는 부분. 즉, 어두운 영역에서 갑자기 밝아지거나, 또는 밝은 영역에서 급격하게 어두워지는 부분을 에지라고 한다. - 2차원 영상에서 에지를 찾는 기본적인 방법은 그래디언트 크기가 특정 값보다 큰 위치를 찾는 것. 에지 여부를 판단하기 위해 기준이 되는 값을 임계값(threshold) 9.1.2 마스크 기반 에지 검출 가장 널리 사용되고 있는 미분 마스크는 소벨 필터 마스크이다. void Sobel(InputArray src, OutputArray dst, int ddepth, int dx, int dy, int ksize =3, double scale = 1, double delta = 0, int b..
[OpenCV] 8장 영상의 기하학적 변환 8.1 어파인 변환 8.1.1 어파인 변환 영상의 기하학적 변환(geometric transfor): 영상을 구성하는 픽세르이 배치 구조를 변경함으로써 전체 영상의 모양을 바꾸는 작업 어파인 변환(affine transformation): 영상을 평행 이동시키거나 회전, 크기 변환 등을 통해 만들 수 있는 변환을 통칭 Mat getAffineTransform(const Point2f src[], const Point2f dst[]); Mat getAffineTransform(InputArray src, InputArray dst); src: 입력 영상에서 세 점의 좌표 dst: 결과 영상에서 세 점의 좌표 반환값: 2x3 어파인 변환 행렬. CV_64FC1 void wrapAffine (InputArra..
[OpenCV] 7장 필터 7.1 영상 필터링 7.1.1 필터링 연산 방법 필터 (filter): 무언가를 걸러 내고 일부만 통과시키는 장치 더보기 void filter2D(InputArray src, OutputArray dst, int ddepth, InputArray kernel, Point anchor = Point(-1, -1), double delta = 0, int borderType = BORDER_DEFAULT); src : 입력 영상 dst: 출력 영상, src와 같은 크기, 같은 채널 수를 갖는다 ddepth : 결과 영상의 깊이 kernel: 필터링 커널, 1채널 실수형 행렬 anchor: 고정점 좌표. Point(-1, -1)을 지정하면 커널 중심을 고정점으로 사용합니다. delta: 필터링 연산 후 추가적..
[OpenCV] 6장 영상의 산술 및 논리 연산 6.1 영상의 산술 연산 영상은 일종의 2차원 행렬이기 때문에 행렬의 산술 연산(arithmetic operation)을 그대로 적용할 수 있다 = 두개의 영상을 서로 더하거나 빼는 연산으로 새로운 결과 영상을 생성할 수 있음 영상의 덧셈 연산 수식: dst(x, y) = srcl(x, y) + src2(x, y) srcl, src2: 입력 영상 dst: 결과 영상 포화 연산도 함께 수행한 덧셈 연산 수식: dst(x, y) = saturate(srcl(x, y) + src2(x, y)) void add(InputArray src1, InputArray src2, OutputArray dst, InputArray mask = noArray(), int dtype = -1); src1: 첫 번째 입력 행렬..