728x90
반응형
SMALL
1. 모폴로지 처리
- 영상의 밝은 영역이나 어두운 영역을 축소, 확대하는 기법
- 모폴로지 구조 요소를 생성
- cv2.getStructuringElmement(구조 요소의 모양, 사이즈)
- 구조 요소의 모양
- cv2.MORPH_RECT: 사각형
- cv2.MORPH_ELLIPSE: 타원형
- cv2.MORPH_CROSS: 십자형
1-1. 침식(erosion) 연산
- 이미지를 깎아내는 연산
- 객체 크기는 감소하고 배경은 확대
- 작은 크기의 객체(노이즈)제거 효과가 있음
- cv2.erode(영상, 구조요소, 출력영상, 고정점 위치)
1-2. 팽창(dilation) 연산
- 물체의 주변을 확대하는 연산
- 객체가 커지는 연산
- 팽창 연산은 객체 외곽을 확대시키는 연산
- 객체 크기는 증가되고 배경은 감소되는 효과
- cv2.dilate(영상, 구조요소, 출력영상, 고정점 위치)
import cv2
img = cv2.imread('circuit.bmp', cv2.IMREAD_GRAYSCALE)
# 구조 요소를 생성
se = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 3)) # 사각형
dst1 = cv2.erode(img, se) # 얇은 선들이 없어지고 외곽선이 쭈굴쭈굴한 것이 얇아짐
dst2 = cv2.dilate(img, None) # 기본값은 3*3, 얇은 선들이 뚱뚱해지고 쭈굴쭈굴한 것이 두꺼워짐
cv2.imshow('img', img)
cv2.imshow('dst1', dst1)
cv2.imshow('dst2', dst2)
cv2.waitKey()
* 침식은 어두운 부분의 노이즈를 제거하는 효과
* 팽창은 밝은 부분의 노이즈를 제거하는 효과
* 노이즈 제거 효과는 좋지만 원래 모양이 홀쭉해지거나 뚱뚱해지는 변형이 일어남
1-3. 열림(Opening)
- 팽창 연산과 침식 연산의 조합
- 침식 연산을 적용한 다음, 팽창 연산을 적용
- 침식 연산으로 인해 밝은 영역이 줄어들고, 어두운 영역이 늘어남
- 객체의 크기 감소를 원래대로 복구할 수 있음
1-4. 닫힘(Closing)
- 팽창 연산과 침식 연산의 조합
- 팽창 연산을 적용한 다음, 침식 연산을 적용
- 어두운 영역이 줄어 들고 밝은 영역이 늘어남
- 늘어난 영역을 다시 복구하기 위해 침식 연산을 적용하면 밝은 영역이 줄어들고 어두운 영역이 늘어남
- 객체 내부의 홀이 사라지면서 발생한 크기 증가를 복구할 수 있음
* 열림/닫힘 연산은 팽창/침식 연산으로 변형된 원래 모습을 되돌릴 수 있음
1-5. 그래디언트(Gradient)
- 팽창 연산과 침식 연산의 조합
- 열림 연산이나 닫힘 연산과 달리 입력 이미지에 각각 팽창 연산과 침식 연산을 적용하고 감산을 진행
- cv2.morphologyEx(영상, 연산방법, 구조요소)
- 연산 방법
- cv2.MORPH_DILATE: 팽창연산
- cv2.MORPH_ERODE: 침식연산
- cv2.MORPH_OPEN: 열림연산
- cv2.MORPH_CLOSE: 닫힘연산
- cv2.MORPH_GRADIENT: 그래디언트
728x90
반응형
LIST
'Python > Computer Vision' 카테고리의 다른 글
[파이썬, Python] 컴퓨터 비전(Computer Vision)의 데이터셋 (0) | 2023.09.04 |
---|---|
[파이썬, Python] OpenCV - 레이블링(labeling)과 외곽선 검출 (0) | 2023.09.02 |
[파이썬, Python] OpenCV - 영상의 필터링, 블러링, 엣지(Edge)검출 (1) | 2023.09.01 |
[파이썬, Python] OpenCV - 영상의 변환 (0) | 2023.08.29 |
[파이썬, Python] OpenCV - 이미지 유사도 판단 (1) | 2023.08.27 |