영상의 이진화 ( Binarization ) 란?
- 영상의 픽셀 값을 0 또는 255 (1) 로 만드는 연산
- 배경 ( Background ) vs 객체 ( Object )
관심 영역 vs 비관심 영역
위 이미지를 보게되면 염색되어있는 이미지 또는 글씨처럼 배경과 객체로 구분할 수도 있고
사과이미지처럼 관심영역과 비관심 영역으로 구분할수도 있다.
그레이스케일 영상의 이진화
그레이스케일의 이진화는 위 처럼 Threshold 라는 값을 임계값을 기준으로
기준값보다 낮으면 0 , 기준값보다 높으면 255로 변환시켜주어 영상전체를 이진화 시켜준다.
임계값 함수
cv2.threshol( src, thresh, maxval, type, dst ) -> retval, dst
src : 입력영상. 다채널, 8비트 또는 32비트 실수형
thresh : 사용자 지정 임계값
maxval : cv2.THRESH_BINARY 또는 cv2.THRESH_BINARY_INV 방법 사용 시 최댓값.
보통 255로 지정
type : cv2.THRESH_로 시작하는 플래그
임계값 함수 동작 지정 또는 자동 임계값 결정 방법 지정
retval : 사용된 임계값
dst : 출력 영상 . src와 동일크기, 동일 타입, 같은 채널 수
* binarization 하는 용도로는 사용할 수 있지만 완전히 2진화한 영상을 만들어내는 함수는 아니다
2진화 영상을 사용하기 위해서는 maxval 을 위 예처럼 255 로 사용해야 한다.
( Type : BINARY or BINARY_INV 사용시 )
1. cv2.THRESH_BINARY : 임계값 초과는 255 , 이하는 0으로 변환
2. cv2.THRESH_BINARY : 임계값 초과는 0 , 이하는 255로 변환
3. cv2.THRESH_TRUNC : 임계값 초과는 임계값으로 변환, 이하는 원본
4. cv2.THRESH_TOZERO : 임계값 초과는 원본, 이하는 0으로
5. cv2.THRESH_TOZERO_INV : 임계값 초과는 0 , 이하는 원본
6. cv2.THRESH_OTSU : Otus 알고리즘으로 임계값 자동 결정
7. cv2.THRESH_TRIANGLE : 삼각 알고리즘으로 임계값 자동 결정
* 3,4,5 번은 사용하는 경우가 거의없어 오늘은 1,2 번만 잘 알아놔도 무방하다.
위 코드를 보게되면 threshold 값을 - , dst 형태로 받는 것을 볼 수 있는데
cv2.threshold 의 리턴값을 보면 retval , dst 형태로 현재의 threshold 값을 첫번째 인자로 리턴해주기때문에
_ ( underbar ) 처리를 해주어 사용하지 않는다는 표시를 해주어야한다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
'Program > OPEN_CV' 카테고리의 다른 글
[Open CV] 이진 영상 처리 _ 모폴로지 _ 지역 이진화 (0) | 2022.06.06 |
---|---|
[Open CV] 이진 영상 처리 _ 모폴로지 _ 자동이진화 ( OTSU ) (0) | 2022.06.05 |
[Open CV] 영상의 특징 추출 _ 실전코딩 ( 동전 카운터 ) (0) | 2022.06.03 |
[Open CV] 영상의 특징 추출 _ 허프변환 _ 원 검출 (0) | 2022.06.02 |
[Open CV] 영상의 특징 추출 _ 허프변환 _ 직선 검출 (0) | 2022.06.01 |