OpenCV
[OpenCV with Python] 이진 영상 처리 : 모폴로지(Morphology) - 침식과 팽창
모폴로지 Morphology 모폴로지는 형태학이라는 의미를 갖고 있다. 영상을 형태학적인 측면으로 접근하는 것이 모폴로지이다. 모양에 대한 정보에 더 집중한다. 다양한 영상 처리 시스템에서 전처리(pre-processing) 또는 후처리(post-processing) 형태로 널리 이용된다. 구조 요소(structuring element)는 모폴로지 연산의 결과를 결정하는 커널, 마스크, 윈도우 입니다. 모폴로지는 필터링과 비슷한 연산을 내부에서 진행한다. 모폴로지에서는 필터가 structuring element 라고 한다. 다양한 형태가 있지만 주로 정방형 행렬(3X3)을 이용한다. 필터와 마찬가지로 중앙에 고정점(Anchor)이 있다. 이진 영상의 침식(erosion) 연산 침식 연산은 객체 외각을 깍..
[OpenCV with Python] 이진 영상 처리 : 지역 이진화 - cv2.adaptiveThreshold
지역 이진화 균일하지 않은 조명 환경에서 찰영된 영상에서 사용할 수 있다. 불균일한 조명이 있는 영상에서는 이진화 결과가 지저분하게 나온다. 이를 해결하기 위해서는 지역 이진화 방법을 이용해야 한다. 위의 문제 해결하기 불균일한 조명 성분 보상 후 이진화 수행 픽셀 주변에 윈도우 설정하여 지역 이진화 수행 윈도우 크기 윈도우 형태 : Uniform? Gaussian? 윈도우 겹칠건가? Overlap? Non-overlap? 원도우 안에 배경 혹은 객체만 존재 import sys import numpy as np import cv2 # 입력 영상 불러오기 src = cv2.imread('rice.png', cv2.IMREAD_GRAYSCALE) if src is None: print('Image load ..
[OpenCV with Python] 이진 영상 처리 : 자동 이진화 - Otsu 방법
자동 이진화 영상 이진화 처리시 임계값은 경험에 의존해 임계값을 설정하는 것이 일반적이다. 하지만 영상이 조명이나 환경에 따라서 픽셀 값이 미세하게 변화한다. 영상마다 사용할 수 있는 임계값이 있는데 임계값을 자동으로 설정해주는 방법이 있다. 가장 유명한 방법인 Otsu 이진화 방법에 대해 알아보자. Otsu 이진화 방법 이진화의 임계값을 구분하는 가장 좋은 방법으로 많이 이용하고 있다. 입력 영상이 배경(background)과 객체(object) 두 개로 구성되어 있다고 가정하면, 이를 Bimodal histogram 이라고 한다. Otsu 이진화는 Bimodal histogram인 경우에 적용이 가능하다. 임의의 임계값 T에 의해 나눠지는 두 픽셀 분포의 분산이 최소가 되는 T를 선택하는 방법이다. ..
[OpenCV with Python] 이진 영상 처리 : 영상의 이진화 - cv2.threshold
영상의 이진화 Binarization 란? 영상의 이진화는 영상의 픽셀 값을 0 또는 255(1)로 만드는 연산이다. 0은 검정색, 255는 흰색을 의미한다. 이진화를 하는 이유는 배경과 객체를 구분 관심 영역과 비관심 영역 구분 마스크 영상도 이진 영상의 한 형태라고 볼 수 있다. 그레이스케일 영상의 이진화 그레이스케일 영상의 이진화는 픽셀 값이 임계값을 넘으면 0(검은색) 임계값 보다 낮으면 255(흰색)으로 표현한다. 히스토그램을 보고 적절한 임계값을 설정하는 것이 중요하다. ✔︎ 임계값 함수 - cv2.threshold retval, dst = cv2.threshold(src, thresh, maxval, type, dst=None) src : 입력 영상. 다채널, 8비트 또는 32비트 실수형 t..