이진 영상의 열기 ( Opening ) 연산
Opening ( 열기 ) = Erosion ( 침식 ) -> Dilation ( 팽창 )
이진 영상의 닫기 ( Closing ) 연산
Closing ( 닫기 ) = Dilation ( 팽창 ) -> Erosion ( 침식 )
아래 이미지를 활용하여 열기 연산 효과를 먼저 보면
먼저 열기 연산을 하게되면 침식 연산을 먼저 하게된다.
그럼 객체들을 깎아내게 되는데 객체 주변의 한두픽셀 노이즈객체들을 제거할 수 있게된다.
즉, 작은 돌기, 작은 객체가 사라지고, 얇은 연결선이 끊어지는 효과를 얻을 수 있다.
닫기 연산을 하게 되면 팽창 연산을 먼저 하게되는데
객체들 내부에 있는 작은 홀들을 채워주게된다.
즉, 작은 홈, 작은 홀들이 사라지고 얇은 연결선이 두꺼워 주는 효과를 얻을 수 있다.
* 대부분 열기연산을 통한 노이즈 제거효과로 많이 사용되고 있다.
이 전 강의에서 나왔던 침식, 팽창 연산을 모폴로지 연산 함수를 사용 연산할 수 있는데
열기와 닫기 연산도 수행할 수 있다.
범용 모폴로지 연산 함수
cv2.morphologyEx(src, op, kernel, dst, anchor, iterations, borderType, borderValue )
src : 입력 영상
op : 모폴로지 연산 플래그
kernel : 커널
dst : 출력 영상
이외의 인자들은 이 전 강의에서 나왔던 침식, 팽창 ( Erode , Dilate ) 의 인자와 같은 특성이다.
위 코드를 보게되면 rice 라는 파일을 지역이진화하여 Binary 시켜준 뒤
connectedComponents 함수를 사용하여 객체들의 갯수를 리턴 받는다.
그리고 금일 배운 MORPH_OPEN 인자를 사용하여 열기 연산을 해준 뒤 다시 객체들의 갯수를 리턴 받는다.실제 Run을 시켜보면 다음과 같은 결과를 얻을 수 있다.
위 영상을 보게되면 좌측 영상에 조그만 노이즈성 객체들도 보이는데 그 객체까지 한 덩어리로 보고 모두
객체카운팅을 하여 리턴해주게된다.
그런데 열기연산을 진행하고 난 이후에는 조그만 객체들은 모두 사라져 객체 카운팅이 줄어든것을 볼 수 있다.
그리고 위에서 본 것처럼 Opening = erode -> dilate 을 구현해줘도 같은 결과가 나오는 것을 볼 수 있다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
'Program > OPEN_CV' 카테고리의 다른 글
[Open CV] 이진 영상 처리 _ 외곽선 검출 (0) | 2022.06.10 |
---|---|
[Open CV] 이진 영상 처리 _ 레이블링 (0) | 2022.06.09 |
[Open CV] 이진 영상 처리 _ 모폴로지 _ 침식과 팽창 (0) | 2022.06.07 |
[Open CV] 이진 영상 처리 _ 모폴로지 _ 지역 이진화 (0) | 2022.06.06 |
[Open CV] 이진 영상 처리 _ 모폴로지 _ 자동이진화 ( OTSU ) (0) | 2022.06.05 |