7-4. 모폴로지 (1): 침식과 팽창

모폴로지(Mopology) 연산

    영상을 형태학적 측면에서 다루는 기법으로 다양한 처리 시스템에서 전처리(Pre-processing)/후처리(post-processing)에 사용

    필터와 비슷하게 커널(=마스크, 윈도우)로 연산 결과가 결정됨

 

침식과 팽창

  침식(Erosion) 팽창(Dilation)
연산 방식 구조 요소가 객체 영역 내부에 완전히 포함될 경우 고정점 픽셀을 255로 고정하고 외각에 해당되는 픽셀을 깎아내는 연산 구조 요소와 객체 영역이 한 픽셀이라도 만나는 경우 고정점 픽셀은 255로 설정함으로써 객체 외과을 확산하는 연산
연산 예시
(3x3 커널 사용)
     
(원본)  
 

효과 객체의 크기는 감소, 배경은 확대 객체 크기는 증가, 배경은 축소
사용 방식 작은 크기의 객체 및 잡음 제거에 효과적 객체 내부 빈 공간(Hole)을 매우는데 효과적
연산 함수 cv2.erode(src, kernel, dst, anchor, iterations, borderType, borderValue) -> dst cv2.dilate(src, kernel, dst, anchor, iteration, borderType, borderValue) -> dst
인자 설명 src는 입력 영상, dst는 src와 동일한 크기와 타입을 갖는 출력 영상
kernel는 구조 요소로써 getStructuringElement() 함수에 의해 생성 가능하며 None일 경우 3x3으로 설정
anchor는 kernel의 고정점 위치로 (-1,-1)일 경우 중앙점 사용
iterations는 반복 횟수로 기본값은 1
borderType는 가장자리 픽셀 확장 방식으로 기본값은 cv2.BORDER_CONSTANT
borderValue는 cv2.BORDER_CONSTANT인 경우 확장된 가장자리를 채울 값
구조 요소 생성 cv2.getStructuringElement(shape, ksize, anchor) -> retval
인자 설명 shape는 구조 요소 모양을 나타내는 플래그

ksize는 구조 요소 크기로 (width, height) 튜플 형식 사용
anchor는 shape가 MORPH_CROSS일 경우 구조 요소의 고정점 좌표로 (-1,-1)일 경우 중앙점 사용

 

모폴로지 팽창과 침식 연산 함수 적용 결과. 5x3 커넬을 사용했으며 dst1이 침식, dst2가 팽창 결과 (출처: FastCampus)
모폴로지 팽창과 침식 연산 함수 적용 결과. 9x7 커넬을 사용했으며 dst1이 침식, dst2가 팽창 결과


7-5. 모폴로지(2): 열기와 닫기

열기와 닫기

  열기(Opening) 닫기(Closing)
연산 방식 침식 -> 팽창 팽창 -> 침식
연산 예시
(3x3 커널 사용)

(원본)
효과 작은 돌기, 객체가 사라지고 얇은 연결선이 끊어짐 작은 홈, 홀이 사라지고 얇은 연결선이 두꺼워짐
범용 연산 함수 cv2.morphoogyEx(src, op, kernel, dst, anchor, iterations, borderType, borderValue) -> dst
인자 설명 src는 입력 영상, dst는 출력 영상
op는 모폴로지 연산 플래그

ksize는 구조 요소 크기로 (width, height) 튜플 형식 사용
anchor는 shape가 MORPH_CROSS일 경우 구조 요소의 고정점 좌표로 (-1,-1)일 경우 중앙점 사용
iterations는 반복 횟수로 기본값은 1
borderType는 가장자리 픽셀 확장 방식으로 기본값은 cv2.BORDER_CONSTANT
borderValue는 cv2.BORDER_CONSTANT인 경우 확장된 가장자리를 채울 값

지역 이진화된 영상에 열기와 닫기 수행한 결과. dst2가 열기, dst3가 닫기 결과 영상
dst1,2,3에서 검출된 객체 수

지역 이진화한 영상에서 보면 쌀알이 아닌 흰 점들도 카운팅되기 때문에 열기 연산이 된 영상보다 더 많은 객체가 카운팅 된 것을 볼 수 있다. 반면 닫기 연산이 된 영상의 경우 팽창 후 침식 되었기 때문에 갯수가 좀 줄어들긴 했지만 역시 정확하다고 보기 어렵다.


인증 타임

술 한 잔 하고 블로그 글 쓰려니 너무 힘들다 ㅠㅠ 겹치는 객체에 대하여 처리 방식을 다른 것을 배웠던거 같은데 모폴로지라는 새로운 처리 방식을 배워서 흥미로웠다. 맨 처음 강의에 나왔던 질문, 우리는 사과를 어떻게 사과라고 판단하는가?,에 대한 답을 컴퓨터로 내리기 위해서 영상이 매우 많은 단계를 거쳐야함이 점점 실감이 난다.

 

7-4. 공부 인증 영상
7-5. 공부 인증 영상


#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #OpenCV를 활용한 컴퓨터비전과 딥러닝 올인원 패키지 Online

 

패스트캠퍼스(FastCampus) 강의 둘러보러 가기 

   

https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.


 

+ Recent posts