임계값 자동 결정 방법
- 영상의 히스토그램이 bimodal ( 쌍봉분포 ) 이고, 전경 & 배경 픽셀 분포가 비슷하면
쌍봉 분포의 중앙값을 픽셀 값 평균으로 잡는다.
- 히스토그램이 binmodal 이지만, 전경&배경 픽셀 분포가 아래와 같이 크게 다르다면 어떻게 잡아야 되는가?
Otsu 이진화 방법
- 입력 영상이 배경 ( background ) 과 객체 ( object ) 두 개로 구성되어 있다고 가정
Bimodal histogram
- 임의의 임계값 T에 의해 나눠지는 두 픽셀 분포 그룹의 분산이 최소화되는 T를 선택
- 일종의 최적화 알고리즘 ( optimization algorithm )
* 1979년도에 발표된 논문으로 아주 오래된 알고리즘임에도 불구하고 접근이라든지 , 계산의 효율 등의 면에서
상당히 잘 기술해놨기 때문에 현재까지도 많이 사용되고 있는 자동 이진화 알고리즘이다.
위와 같이 하나의 GrayScale 영상에서 Bimodal 형태의 히스토그램이 나타나게 되면
임의의 T값을 설정하여 ( 0~255 ) 픽셀들의 그룹이 T보다 작은 그룹과 큰 그룹으로 나누고 난 뒤,
작은 그룹과 큰 그룹의 분산을 계산하여 이 분산 값이 최소가 되는 부분을 찾는
효율적으로 구분이 잘 되는 알고리즘을 사용하고 있다.
* 분산이 작다고 하는 것은 평균을 기준으로 많이 모여있다고 하는 것.
실제 오츠의 이진화를 적용한 결과 영상
위 이미지와 같이 T ( 임계값 ) 값을 0부터 시작하여 255까지 상승시키며 분산이 최소화되는 구간을 찾고
해당 구간을 찾게 되면 임계값을 기준으로 0 또는 255로 영상을 이진화시킨다.
* Otsu 알고리즘은 효율적이고 빠르게 동작되는 알고리즘이다.
실제 코딩 구현
* threshold 인자 중 Type 부분에서 cv2.THRESH_BINARY | cv2.THRESH_OTSU 처럼 사용해도 좋지만 일반적으로 cv2.THRESH_OTSU 만 사용해도 무방하다.
* 영상의 반전을 주고 싶을 때는 cv2.THRESH_BINARY_INV를 사용하여
cv2.THRESH_BIANRY_INV | cv2.THRESH_OTSU 와 같은 방식을 사용하여 반전시킬 수도 있다.
위와 같이 Otsu 알고리즘을 적용시켜도 하단 부분에 쌀알이 제대로 표현되지 않은 것을 볼 수 있다.
이런 부분들은 추후 지역 이진화 침식, 팽창, 열기, 닫기 등의 처리로 제대로 표현할 수 있다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
'Program > OPEN_CV' 카테고리의 다른 글
[Open CV] 이진 영상 처리 _ 모폴로지 _ 침식과 팽창 (0) | 2022.06.07 |
---|---|
[Open CV] 이진 영상 처리 _ 모폴로지 _ 지역 이진화 (0) | 2022.06.06 |
[Open CV] 이진 영상 처리 _ 영상의 이진화 (0) | 2022.06.04 |
[Open CV] 영상의 특징 추출 _ 실전코딩 ( 동전 카운터 ) (0) | 2022.06.03 |
[Open CV] 영상의 특징 추출 _ 허프변환 _ 원 검출 (0) | 2022.06.02 |