전체 글 39

OpenCV 이진 영상 처리

영상의 이진화 - 영상의 픽셀 값을 0 또는 255(1)로 만드는 연산 그레이스케일 영상 이진화 - 임계값 연산 사용 double threshold( InputArray src, OutputArray dst, double thresh, double maxval, int type ); 자동 임계값 결정법 - Otsu 이진화 방법 - 입력 영상이 배경과 객체 두 개로 구성되어 있다고 가정 - 임의의 임계값 T에 의해 나워지는 두 픽셀 분포 그룹의 분산이 최소가 되는 T를 선택 - 일종의 최적화 알고리즘 - threshhold() 함수의 tyoe 인자에 THRESH_OTSU 지정 지역 이진화 전역 이진화: 영상 전체에 대해 동일한 임계값을 사용하여 이진화를 수행하는 기법 균일하지 않은 조명의 영향을 해결 ->..

컴퓨터 비전 2023.10.26

OpenCV 영상의 특징 추출

에지 검출과 소벨 필터 에지 - 영상의 픽셀의 밝기 값이 급격하게 변하는 부분 기본적인 에지 검출 방법 - 영상을 x,y 변호의 함수로 간주했을 때 함수의 1차 미분 값이 크게 나타나는 부분을 검출 가우시안 블러와 에지 검출 - 입력 영상에 가우시안 블러를 적용하여 잡음 제거 후 에지 검출 OpenCV 에지 검출 for (int y = 1; y < src.rows - 1; y++) { for (int x = 1; x < src.cols - 1; x++) { int v1 = src.at(y - 1, x + 1) + src.at(y, x + 1) * 2 + src.at(y + 1, x + 1) - src.at(y - 1, x - 1) - src.at(y, x - 1) * 2 - src.at(y + 1, x ..

컴퓨터 비전 2023.10.25

OpenCV 특정점 검출과 매칭

크기 불변 특징점 - 스케일 스페이스 또는 이미지 피라미드를 구성하여 영상의 크기가 바뀌더라도 특징점을 찾아 응용에서 사용 - 주요 알고리즘: SIFT, SURF, KAZE, AKZE, ORB 등 SIFT 알고리즘 Detector 1. 스케일 스페이스 : DOG 영상 생성 2. 키포인트 찾기 : DOG 영상에서 주변 8개 점과 상/하 스케일 DOG 영상에서 18개 점, 총 26개 점을 비교하여 지역 최대 최솟값 선택 Descriptor 1. 방향 불변 특성을 위한 주 방향 성분 추출 - 키포인트 근방의 부분 영상 추출 - 부분 영상의 모든 픽셀에서 그래디언트 성분 계산 - 히스토그램 최댓값 방향과 최댓값의 80% 이상 크기를 갖는 빈 방향을 키포인트 방향으로 설정 2. 각 키포인트에 대해 기준 방향 성분..

컴퓨터 비전 2023.10.23

OpenCV 필터링

void copyMakeBorder(InputArray src, OutputArray dst, int top, int bottom, int left, int right, int borderType, const Scalar& value = Scalar() ); // 영상 가장자리 픽셀 확장 기본적인 2D 필터링 함수 void filter2D( InputArray src, OutputArray dst, int ddepth, InputArray kernel, Point anchor = Point(-1,-1), double delta = 0, int borderType = BORDER_DEFAULT ); 엠보싱 : 직물이나 종이, 금속판 등에 올록볼록한 형태로 만든 객체의 윤곽 또는 무늬 엠보싱 필터 : 입력영..

컴퓨터 비전 2023.10.20

OpenCV 영산의 산술

덧셈연산 - 두 영상의 같은 위치에 존재하는 픽셀 값을 더히여 결과 영상의 픽셀 값으로 설정 dst(x, y) = saturate(src1(x,y) + src2(x,y)) dst(x, y) = saturate(a*src1(x,y) + b*src2(x,y)) // 가중치 합 a+b=1이 되도록 설정 dst(x, y) = (1/2)*saturate(src1(x,y) + src2(x,y)) // 평균연산 뺄셈연산 - 두 영상의 같은 위치에 존재하는 픽셀 값을 뺄셈히여 결과 영상의 픽셀 값으로 설정 차이 연산 - 두 영상에 뺄셈 연산 수행 후 절댓값을 이용하여 결과 영상을 생성하는 연산 void add(InputArray src1, InputArray src2, OutputArray dst, InputArray..

컴퓨터 비전 2023.10.19

OpenCV 히스토그램

히스토그램 - 영상의 픽셀 값 분포를 그래프의 현태로 표현한 것 - 픽셀 값의 위치 정보는 알 수 없음 정규화된 히스토그램 - 히스토그램으로 구한 각 픽셀의 개수를 영상 전체 픽셀 개수로 나눈 것 OpenCV 히스토그램 계산 함수 void calcHist( const Mat* images, int nimages, const int* channels, InputArray mask, SparseMat& hist, int dims, const int* histSize, const float** ranges, bool uniform = true, bool accumulate = false ); Mat calcGrayHist(const Mat& img) { CV_Assert(img.type() == CV_8U);..

컴퓨터 비전 2023.10.19

OpenCV 유용한 기능

행렬 합, 평균, 최대/최소 구하기 Scalar sum(InputArray src); // 합 에시 unchar data[] = {1,2,3,4,5,6}; Mat mat1(2,3, CV_8UC1, data); int sum1 = (int)sum(mat1)[0]; ------------------------------- Scarlar mean(InputArray src, InputArray mask = noArray()); // 평균 예시 Mat img = imread("lenna.bmp", IMREAD_GRAYSCALE); double mean1 = mean(img); // m[0]: blue 평균 m[1]: green 평균 m[2]: red 평균 -------------------------------..

컴퓨터 비전 2023.10.18