Python OpenCV Morphology

Woohojin·2022년 10월 19일

OpenCV

목록 보기
1/7

Image Filtering(Morphology)

참조링크1 참조링크2 Docs

커널의 종류

cv2.getStructuringElement(shape, ksize, anchor)

shape: 구조화 요소 커널 모양 (MORPH_RECT, MORPH_ELLIPSE, MORPH_CROSS)

ksize: 커널 크기

anchor(optional): 구조화 요소의 기준점, MORPH_CROSS에만 의미 있으며 기본 값은 중심점 (-1, -1)

kernal = cv2.getStructuringElement(cv2.MORPH_RECT, (2,2))

연산의 종류

src: 입력 영상, 바이너리

kernel: 구조화 요소 커널

anchor(optional): cv2.getStructuringElement()와 동일

iterations(optional): 침식 연산 적용 반복 횟수

boderType(optional): 외곽 영역 보정 방법

boderValue(optional): 외곽 영역 보정 값

침식(erosion)

cv2.erode(src, kernel, anchor, iterations, borderType, borderValue)
erosion = cv2.erode(thresh, kernal)

팽창(dilate)

cv2.dilate(src, kernel, dst, anchor, iterations, bordeType, borderValue)
dilate = cv2.dilate(thresh, kernal)

src: 입력 영상

op: 연산 종류 - 설명은 밑에

kernel: 구조화 요소 커널

dst(optional): 결과 영상

anchor(optional): 커널의 기준점

iteration(optional): 연산 반복 횟수

borderType(optional): 외곽 영역 보정 방법

borderValue(optional): 외곽 영역 보정 값

cv2.morphologyEx(src, op, kernel, dst, anchor, iteration, borderType, borderValue)
opening = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernal)

MORPH_OPEN - 열림

열림 = 침식 + 팽창

열림 연산은 주변보다 밝은 노이즈를 제거하는데 효과적입니다.

또한 맞닿아 있는 것처럼 보이는 독립된 개체를 분리하거나 돌출된 모양을 제거하는 데 효과적입니다


MORPH_CLOSE - 닫힘

닫힘 = 팽창 + 침식

닫힘 연산은 주변보다 어두운 노이즈를 제거하는데 효과적입니다.

또한 끊어져 보이는 개체를 연결하거나 구멍을 메우는 데 효과적입니다.


MORPH_GRADIENT - 그레디언트

그레디언트 = 팽창 - 침식

팽창 연산을 적용한 이미지에서 침식 연산을 적용한 이미지를 빼면 경계 픽셀만 얻게 되는데, 경계 검출과 비슷합니다.


MORPH_TOPHAT - 탑햇

탑햇 = 원본 - 열림

원본에서 열림 연산 적용 결과를 빼면 값이 크게 튀는 밝은 영역을 강조할 수 있습니다.


MORPH_BLACKHAT - 블랙햇

블랙햇 = 닫힘 - 원본

닫힘 연산 적용 결과에서 원본을 빼면 어두운 부분을 강조할 수 있습니다.


profile
인생을 컴퓨터와 함께

0개의 댓글