반응형

OpenCV 90

[Open CV] 영상 분할과 객체 검출 _ 실전코딩 ( 스노우앱 )

2022.06.18 금일은 실전코딩 간단 스노우앱 만들기에 관한 강의였다. 간단 스노우앱? - 카메라 입력 영상에서 얼굴을 검출하여 재미있는 그래픽을 합성하는 프로그램 구현할 기능 - 카메라 입력 영상에서 얼굴&눈 검출하기 - 눈 위치와 맞게 투명한 PNG 파일 합성하기 ( 안경의 알 사이의 거리를 적당히 resize 해서 합성 ) - 합성된 결과를 동영상으로 저장하기 얼굴 & 눈 검출 - 캐스케이드 분류기 사용 XML 파일 다운로드 : https://github.com/opencv/opencv/tree/master/data/haarcascades 얼굴 검출 XML 파일 : haarcascade_frontalface_alt2.xml 눈 검출 XML 파일 : haarcascade_eye.xml 눈 위치와 ..

Program/OPEN_CV 2022.06.18

[Open CV] 영상 분할과 객체 검출 _ HOG 보행자 검출

2022.06.17 금일은 HOG 보행자 검출에 관한 강의였다. HOG ( Histogram of Oriented Gradients ) 란? - 영상의 지역적 그래디언트 방향 정보를 특징 벡터로 사용 - 2005년 CVPR 학회에서 보행자 검출 방법으로 소개되어 널리 사용되기 시작함 - 이후 다양한 객체 인식에서 활용됨 - HOG 특징벡터 추출 방법에다 SVM 머신러닝 알고리즘을 결합해서 사용했을 때 보행자 검출이 잘됨. * 전체 영상에서 부분 영상을 추출하여 그 부분영상에서 특징을 추출해서 그 부분 영상이 사람이 몸인지를 판단하는 알고리즘으로 동작 * 분할된 Cell 내부에서 전체 360도 방향에서 20도씩 9방향으로 나눈 뒤 히스토그램 계산 그런데 실제 8x8 크기의 셀로 분할하여 그냥 사용하게 되면..

Program/OPEN_CV 2022.06.17

[Open CV] 영상 분할과 객체 검출 _ 캐스케이드 분류기 ( 얼굴검출 )

2022.06.16 금일은 캐스케이드 분류기 얼굴검출에 관한 강의였다. Viola - Jones 얼굴 검출기 - Positive 영상 ( 얼굴 영상 ) 과 negative 영상 ( 얼굴이 아닌 영상 )을 훈련하여 빠르고 정확하게 얼굴 영역을 검출 - 기존 방법과의 차별점 유사 하르 ( Haar-like ) 특징을 사용 AdaBoost 에 기반한 강한 분류 성능 ( * 간단한 형태의 분류기를 여러개 모아서 강력한 형태의 분류기로 ) 캐스케이드 ( cascade ) 방식을 통한 빠른 동작 속도 - 기존 얼굴 검출 방법보다 약 15배 빠르게 동작 2001년 이전까지는 주먹구구식으로 얼굴을 검출했었는데 , ( 예를들면 살색을 검출하고 눈, 코등의 주변에서 엣지를 검출하는 등으로의 방식 ) 하지만 Viola-Jo..

Program/OPEN_CV 2022.06.16

[Open CV] 영상 분할과 객체 검출 _ 템플릿매칭 ( 인쇄체 숫자 인식 )

2022.06.15 금일은 템플릿매칭 이해하기에 관한 강의였다. 인식( Recognition ) 이란? - 어떤 사물을 보고 무엇인지 판단하는 것. - 완전히 새로운 것이 아닌 여러개의 클래스 중에서 가장 유사한 클래스를 선택하는 것. - Classifying a detected object into different categories 각각의 클래스의 특징과 가장 유사도가 높은 값을 선택. 숫자 템플릿 영상 생성 - Consolas 폰트로 쓰여진 숫자 영상을 digit0.bmp ~ digit0.bmp로 저장 - 각 숫자 영상의 크기는 100x150 크기로 정규화 새로 들어온 이미지를 10개의 숫자와 각각 비교해서 가장 유사도가 높은 값을 해당 숫자로 판단 인쇄체 숫자 인식 ( 템플릿 매칭 ) 방법 1...

Program/OPEN_CV 2022.06.15

[Open CV] 영상 분할과 객체 검출 _ 템플릿 매칭

2022.06.14 금일은 템플릿매칭 이해하기에 관한 강의였다. 템플릿 매칭 ( Template matching ) 이란? - 입력 영상에서 ( 작은 크기의 ) 템플릿 영상과 일치하는 부분을 찾는 기법 - 템플릿 : 찾을 대상이 되는 작은 영상. 패치 ( Patch , Kernel ) 이러한 템플릿 매칭이 동작하는 방식은 필터링에서의 동작방식과 상당히 유사하다 일단 템플릿 영상을 좌측 상단부터 시작해서 우측으로, 하단으로 전체스캔하면서 움직인다. 그렇게 유사도와 비유사도 나누게 된다. 그럼 실수형태의 행렬로 나오게되는데 이를 GrayScale 로 표현해서 볼 수 있다. 위와같이 유사도는 비슷한 부분을 밝게표시한것이고 비유사도는 비슷한 부분을 어둡게 표시했다고 볼 수 있다. 우측 유사도/비유사도 영상을 보..

Program/OPEN_CV 2022.06.14

[Open CV] 영상 분할과 객체 검출 _ 모멘트 기반 객체 검출

2022.06.13 금일은 모멘트 기반 객체 검출에 관한 강의였다. 모멘트 ( Moments ) 란? - 영상의 형태를 표현하는 일련의 실수값들의 집합 ( 특징 벡터 추출 방법 ) - 특정 함수 집합과의 상관관계 ( correlatjion ) 형태로 계산 - Geometric moments, Cetntral moments, Normalized moments, Legendre moments, Complex moments, Zernike moments, ART(Angular Radial Transform ), etc. Geometric moments, Cetntral moments, Normalized moments가 성능이 좋은 모멘트는 아니다. 위 3가지의 모멘트는 1960년대에 나왔던 모멘트 추출 방법..

Program/OPEN_CV 2022.06.13

[Open CV] 영상 분할과 객체 검출 _ 그랩컷

2022.06.12 금일은 그랩컷에 관한 강의였다. 그랩컷( GrabCut ) 이란? - 그래프 컷 ( graph cut ) 기반 영역 분할 알고리즘 - 영상의 픽셀을 그래프 정점으로 간주하고, 픽셀들을 두개의 그룹 ( 객체, 배경 ) 으로 나누는 최적의 컷 ( Max Flow Minimum Cut ) 을 찾는 방식 복잡한 그래프 구조를 가상으로 만들고 2개의 그룹으로 영역, 영상분할하여 컷을 찾아내는 방식 그랩컷 영상 분할 동작 방식 - 사각형 지정 자동 분할 - 사용자가 지정한 전경/배경 정보를 활용하여 영상 분할 그랩컷 함수 cv2.grabCut ( img, mask, rect, bgdModel, fgdModel, iterCount, mode ) -> mask, bgdModel, fgdModel i..

Program/OPEN_CV 2022.06.12

[Open CV] 이진 영상 처리 _ 다양한 외곽선 함수

금일은 findContour 로 구한 외곽선 좌표정보에 적용할 수 있는 다양한 외곽선 함수에 대해서 알아본다. 위와같이 Contours 에 적용할 수 있는 다양한 함수들이 있다. 위 설명에 나오지 않은 부가적인 설명을 한다. cv2.arcLength : 길이 계산함수인데 외곽선 좌표들로 구성되는 곡선, 폐곡선의 길이 계산 cv2. minAreaRect : 회전된 사각형의 회전된 각도도 반환 cv2.isContourConvex , convelHull, convexityDefects : Convex ( 볼록한 다각형 ) 즉, 꼭지점들을 모두 둘러싸는 다각형이라고 할 수 있다. 좀 더 자세한 정보는 Open CV doucumet 사이트에서 볼 수 있다. https://docs.opencv.org/4.x/d8/..

Program/OPEN_CV 2022.06.11

[Open CV] 이진 영상 처리 _ 외곽선 검출

레이블링과 더불어 영상을 객체단위로 분석할 때 사용할 수 있는 외곽선 검출에대해 알아본다. 외곽선 검출이란? - 객체의 외곽선 좌표를 모두 추출하는 작업. Boundary tracking. Contour tracing - 옵션에 따라 바깥쪽 또는 안쪽 또는 모든 (홀) 외곽선 -> 외곽선의 계층 구조도 표현 가능 계층구조 : 외곽선 바깥에 다른 외곽선이 있다면 어떤 순서로 있는지에대한 정보 등... 외곽선 객체 하나의 표현 방법 - numpy.ndarray - shape = ( K, 1, 2 ) ( K는 외곽선 좌표 개수 ) 3차원 행렬, K는 외곽선 좌표들의 개수, 1은고정, 2는 X , Y 좌표를 표현 - dtype = numpy.int32 ( 4byte 정수형태 ) 외곽선 검출 함수 cv2.find..

Program/OPEN_CV 2022.06.10

[Open CV] 이진 영상 처리 _ 레이블링

객체 단위 분석 - 영상을 불러왔을 때 이진화하여 객체와 배경을 분리할 수 있다는 가정하에 원하는 모양과 크기를 구분하여 추리고 싶을때 사용 - ( 흰색 ) 객체를 분할하여 특징을 분석 - 객체 위치 및 크기 정보, ROI 추출, 모양 분석등으로 사용됨 간략하게 설명하자면 레이블링 ( Connected Component Labeling ) - 서로 연결되어 있는 객체 픽셀에 고유한 번호를 지정 ( 레이블 맵 ) - 영역 기반 모양 분석 - 레이블맵 , 바운딩 박스, 픽셀 개수, 무게중심 좌표를 반환 외곽선 검출 ( Contour Tracing ) - 각 객체의 외곽선 좌표를 모두 검출 - 외곽선 기반 모양 분석 - 다양한 외곽선 처리 함수에서 활용 가능 ( 근사화, 컨벡스헐 등 ) * 컨벡스 헐 ( Co..

Program/OPEN_CV 2022.06.09
반응형