본문 바로가기
AI/컴퓨터 비전

09. 모폴로지 변환

by 사라리24 2024. 7. 23.



1. 모폴로지 변환

영상의 밝은 영역이나 어두운 영역을 축소 또는 확대 하는 기법

 

모폴로지 처리


       
      cv2.getStructuringElement(구조 요소의 모양, 사이즈)
 
 
 [ 구조 영상의 모양 ]

    1. 직사각형(cv2.MORPH_RECT)
    - 가장 단순한 형태로, 모든 요소가 같은 값을 가지는 정사각형 또는 직사각형
    - 행창과 침식 연산에서 동일하게 작동
    - 객체 가장자리를 따라 명확한 변화를 줄 때 유용

    2. 타원형(cv2.MORPH_ELLIPSE)
    - 가장자리 부분을 더 부드럽게 처리
    - 객체의 둥근 모양을 유지하면서 노이즈를 제거할 때 유용

    3. 십자형(cv2.MORPH_CROSS)
    - 중심을 기준으로 수직 및 수평 방향으로 영향
    - 얇은 라인 구조를 강화하거나 제거하는 데 유용

 

 

침식(erosion) 연산

       

     cv2.erode(영산, 구조요소, 출력영상, 고정점 위치)


- 이미지를 깎아 내는 연산
- 객체 크기는 감소하고 배경은 확대
- 작은 크기의 객체(잡음)제거 효과가 있음
- 어두운 부분의 노이즈를 제고하는 효과

 

 

 

팽창(dilation) 연산


       
         cv2.dilate(영상, 구조요소, 출력영상, 고정점 위치)


- 물체의 주변을 확장하는 연산
- 팽창 연산은 객체 외곽을 확대시키는 연산
- 객체 크기는 증가되고 배경은 감소
- 객체 내부의 홀이 있다면 홀을 채울 수 있음
- 밝은 부분의 노이즈를 제거하는 효과

 


모폴로지 연산 중 침식과 팽창


       
        import cv2

        img = cv2.imread('./circuit.bmp', cv2.IMREAD_GRAYSCALE)
        gse = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 3))

        dst1 = cv2.erode(img, gse)
        dst2 = cv2.dilate(img, None)

        cv2.imshow('img' ,img)
        cv2.imshow('dst1' ,dst1)
        cv2.imshow('dst2' ,dst2)

        cv2.waitKey()


 

 

열림(opening)

- 팽창 연산과 침식 연산의 조합
- 침식 연산을 적용한 다음, 팽창연산을 적용
- 침식 연산으로 인해 밝은 영역이 줄어들고, 어두운 영역이 늘어남
- 객체 크기 감소를 원래대로 복구할 수 있음
- 작은 객체를 제거하고 구멍을 복구 할 수 있음

 

닫힘(closing)

- 팽창 연산과 친식 연산의 조합
- 팽창 연산을 적용한 다음, 침식 연산을 적용
- 어두운 영역이 줄어들고 밝은 영역이 늘어남
- 작은 구멍을 메우고 끊어진 객체를 연결하는 데 사용
- 늘어남 영역을 다시 복구하기 위해 침식 연산을 적용하면 밝은 영역이 줄어들고 어두운 영역이 늘어남

 

그레디언트(gradient)

- 팽창 연산과 친식 연산의 조합
- 열림 연산이나 닫힘 연산과 달리 입력 이미지에 각각 챙창 연산과 침식 연산을 적용하고 감산을 진행

 

 

 

'AI > 컴퓨터 비전' 카테고리의 다른 글

11. OCR  (1) 2024.07.23
10. 레이블링  (2) 2024.07.23
08. 필터링, 블러링  (0) 2024.07.22
07. 이미지 유사도, 영상의 변환  (0) 2024.07.18
06. 이진화  (0) 2024.07.18