Program/OPEN_CV

[Open CV] 이진 영상 처리 _ 영상의 이진화

사막여유 2022. 6. 4. 22:37
728x90

 

영상의 이진화 ( 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 ) 처리를 해주어 사용하지 않는다는 표시를 해주어야한다.

 

좌 - 원본 / 중 - threshold 100 / 우 - threshold 210

 

 

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

https://bit.ly/3L3avNW

 

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

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

fastcampus.co.kr

728x90