반응형

전체 글 169

[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

[Open CV] 이진 영상 처리 _ 모폴로지 _ 열기와 닫기

이진 영상의 열기 ( Opening ) 연산 Opening ( 열기 ) = Erosion ( 침식 ) -> Dilation ( 팽창 ) 이진 영상의 닫기 ( Closing ) 연산 Closing ( 닫기 ) = Dilation ( 팽창 ) -> Erosion ( 침식 ) 아래 이미지를 활용하여 열기 연산 효과를 먼저 보면 먼저 열기 연산을 하게되면 침식 연산을 먼저 하게된다. 그럼 객체들을 깎아내게 되는데 객체 주변의 한두픽셀 노이즈객체들을 제거할 수 있게된다. 즉, 작은 돌기, 작은 객체가 사라지고, 얇은 연결선이 끊어지는 효과를 얻을 수 있다. 닫기 연산을 하게 되면 팽창 연산을 먼저 하게되는데 객체들 내부에 있는 작은 홀들을 채워주게된다. 즉, 작은 홈, 작은 홀들이 사라지고 얇은 연결선이 두꺼워 ..

Program/OPEN_CV 2022.06.08

[Open CV] 이진 영상 처리 _ 모폴로지 _ 침식과 팽창

모폴로지 ( Morphology ) 연산이란? - 영상을 형태학적인 측면에서 다루는 기법 * 영상을 다룰때 모양정보에 대한 것을 다루는 기법 - 다양한 영상 처리 시스템에서 전처리 ( pre-processing ) 또는 후처리 ( post-processing ) 형태로 널리 사용 - 수학적 모폴로지 ( mathematical morphology ) 구조 요소 ( Structuring element ) - 모폴로지 연산의 결과를 결정하는 커널, 마스크, 윈도우 * 3x3 정방형 행렬을 정의하고 전체영상을 쭉 스캔하면서 모양정보를 조금씩 Modify 하는 연산 이진 영상의 침식 ( erosion ) 연산 - 구조 요소가 객체 영역 내부에 완전히 포함될 경우 고정점 픽셀을 255로 설정 - 침식 연산은 객체 ..

Program/OPEN_CV 2022.06.07

[Open CV] 이진 영상 처리 _ 모폴로지 _ 지역 이진화

불균일한 조명성분이 있는 영상에대한 조명 이진화 기법에 대한 설명이다. 저번 영상에서 쌀알들이 조명이 균일하지 않아 어떤 부분은 보이고 어떤부분은 보이지 않는 현상이 있었다. 위 이미지처럼 영상 하단 부분은 평균보다 어둡기때문에 쌀알이 잘 표현되지 않는 듯한 모습을 볼 수 있다. 그럼 이처럼 균일하지 않은 조명의 영향을 해결하기 위해서는 픽셀 주변에 작은 윈도우를 설정하여 지역 이진화를 수행해야한다. 고려해야할 상황으로는 - 윈도우의 크기는 ? - 윈도우 형태는? Uniform? Gaussain? 부분 영상을 잘라냈을때 중앙을 가중치를 더 줄것인지 등에 대한 고려 - 윈도우를 겹칠 것인가 ? Overlap? Non-Overlap? - 윈도우 안에 배경 또는 객체만 존재한다면 ? 부분영상내부에 Backgr..

Program/OPEN_CV 2022.06.06

[Open CV] 이진 영상 처리 _ 모폴로지 _ 자동이진화 ( OTSU )

임계값 자동 결정 방법 - 영상의 히스토그램이 bimodal ( 쌍봉분포 ) 이고, 전경 & 배경 픽셀 분포가 비슷하면 쌍봉 분포의 중앙값을 픽셀 값 평균으로 잡는다. - 히스토그램이 binmodal 이지만, 전경&배경 픽셀 분포가 아래와 같이 크게 다르다면 어떻게 잡아야 되는가? Otsu 이진화 방법 - 입력 영상이 배경 ( background ) 과 객체 ( object ) 두 개로 구성되어 있다고 가정 Bimodal histogram - 임의의 임계값 T에 의해 나눠지는 두 픽셀 분포 그룹의 분산이 최소화되는 T를 선택 - 일종의 최적화 알고리즘 ( optimization algorithm ) * 1979년도에 발표된 논문으로 아주 오래된 알고리즘임에도 불구하고 접근이라든지 , 계산의 효율 등의 면..

Program/OPEN_CV 2022.06.05

[Open CV] 이진 영상 처리 _ 영상의 이진화

영상의 이진화 ( Binarization ) 란? - 영상의 픽셀 값을 0 또는 255 (1) 로 만드는 연산 - 배경 ( Background ) vs 객체 ( Object ) 관심 영역 vs 비관심 영역 위 이미지를 보게되면 염색되어있는 이미지 또는 글씨처럼 배경과 객체로 구분할 수도 있고 사과이미지처럼 관심영역과 비관심 영역으로 구분할수도 있다. 그레이스케일 영상의 이진화 그레이스케일의 이진화는 위 처럼 Threshold 라는 값을 임계값을 기준으로 기준값보다 낮으면 0 , 기준값보다 높으면 255로 변환시켜주어 영상전체를 이진화 시켜준다. 임계값 함수 cv2.threshol( src, thresh, maxval, type, dst ) -> retval, dst src : 입력영상. 다채널, 8비트 ..

Program/OPEN_CV 2022.06.04
반응형