전체 글
[OpenCV with Python] 이진 영상 처리 : 레이블링
객체 단위 분석 객체 단위 분석은 객체를 분할하여 특징을 분석하는 것을 의미한다. 영상이 입력되었을 때 객체와 배경이 분리될 수 있다고 가정하며 이진화를 통해 객체와 배경을 분리한다. 각각의 객체의 모양과 크기를 분석해서 내가 원하는 객체가 어디에 이쓰지 확인하고 싶을 때 객체단위 분석이 필요하다. 객체 위치 및 크기 정보, ROI 추출, 모양 분석 등을 할 수 있다. 객체 단위 분석 방법은 레이블링과 외곽선 검출이 있다. 레이블링 - Labeling 레이블링은 객체 구역을 영역 단위로 분석하는 것이다. 서로 연결되어 있는 객체 픽셀에 고유한 번호를 지정하는 작업(레이블맵) 일반적으로 이진 영상에서 수행한다. 레이블링 속도가 외곽선 검출보다 빨라서 더 효율적이다. 4-이웃 연결 관계(4-neighbor ..
[OpenCV with Python] 이진 영상 처리 : 모폴로지(Morphology) - 열기와 닫기
이진 영상의 열기(opening) 연산 이진 연산의 열기 연산은 이진 영상에 침식을 적용하고 팽창을 적용하는 기법이다. 열기 연산을 적용함으로써 작은 돌기, 작은 객체가 사라지고 얇은 연결선이 끊어진다. 열기 연산은 노이즈를 제거하는 용도로 많이 이용한다. 이진 영상의 닫기(closing) 연산 닫기 연산은 팽창을 적용하고 침식을 적용하는 기법이다. 작은 홈, 작은 홀들이 사라지고, 얇은 연결선이 두꺼워 진다. ✔︎ 범용 모폴로지 연산 함수 - cv2.morphologyEx 범용 모폴로지 연산 함수는 침식과 팽창, 열기와 닫기 그 외에도 모폴로지 그래디언트를 지원한다. dst = cv2.morphologyEx(src, op, kernel, dst=None, anchor=None, iterations=No..
[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 ..