본문 바로가기
영상처리 프로그래밍/파이썬과 코랩 기반 OpenCV 영상처리

영상의 화질 향상 기법- 전역 임계값 적용하기(Global Thresholding)

by Glory_Choi 2022. 7. 26.
반응형

화질 향상 기법

  • 히스토그램(Histogram) 만들기
  • 임계값 적용하기(Thresholding)
  • 전역 임계값 적용하기(Global Thresholding)
  • 적응적 임계값 적용하기(Adaptive Thresholding)
  • 히스토그램 스트레칭(Histogram Stretching)
  • 히스토그램 평활화(Histogram Equalization)

 

 

전역 임계값 적용하기(Global Thresholding)

영상으로부터 적절한 임계값을 매번 인위적으로 결정한다는 것은 매우 어려운 일입니다. 따라서 임계값을 자동으로 결정하기 위한 방법으로 전역 임계값 적용 방법을 소개하려고 합니다.

 

전역 임계값 적용 방법은 영상을 두 개의 그룹으로 분할하고 각 그룹마다 평균값을 계산하여 이 값들을 임계값 계산에 적용하는 방법을 사용합니다.

 

 

 

전역 임계값 적용 알고리즘

  • 초기 임계값 T를 결정한다
  • 임계값 T를 이용하여 영상을 분할한다. 분할 결과로 2개의 그룹이 생성되는데, 임계값 T보다 큰 픽셀로 이루어진 그룹을 G1, 반대의 그룹을 G2로 표시한다,
  • 그룹 G1과 G2의 색상 평균(mean1, mean2)을 계산한다.
  • 두 그룹의 평균값으로 임계값을 갱신한다.  T=(1/2)(mean1 + mean2)
  • 이전 임계값과 새로운 임계값의 차이가 미리 정의된 파라미터 T0보다 작을 동안 단계 2부터 단계 4를 반복한다.

 

 

소스 코드

코랩 환경에서 OpenCV를 사용하기 위해 cv2_imshow를 import하고 코랩 환경에서 구글 드라이브와 연동하기 위해 drive를 import합니다. 영상을 저장할때 numpy배열을 사용하기 위해 numpy를 import하고 영상을 표현할때 matplotlib을 사용하기 위해서 matplotlib을 import합니다. OpenCV를 사용하기 위해서 cv2도 import 해줍니다.

 

drive.mount('/상대 경로')를 입력하여 드라이브와 연동을 한후 Open CV의 cv2.imread함수를 통해서 영상을 불러옵니다.

cv2.cvtColor함수는 영상을 다른 형식으로 바꿀 때 사용하고 위에서 color영상에서 gray영상으로 바꾸기 위해 사용합니다.

임계값을 위해 설정해주고 임계값을 적용한 후에 이진 영상을 담기 위해서 numpy배열을 생성해줍니다.

평균값으로 새로운 임계값을 계산하는 함수는 다음과 같이 정의합니다.

함수를 통해 새로운 임계값으로 다시 작업해줍니다.

전역 임계값을 적용하면 다음과 같이 추출할 수 있습니다.

반응형