본문 바로가기
Computer Vision

영상의 밝기와 명암비 조절 - 1. 영상의 밝기 조절

by ksb0511 2020. 2. 15.

1. 그레이스케일 영상 다루기

  • 그레이스케일은 CV_8UC1 타입의 객체를 생성해야 함.
  • 만약 이미 세 채널 컬러 양상을 가지고 있는 걸 그레이스케일 영상으로 변환하려면 cvtColor() 함수를 사용해야 함.
  • 채널 색상 순서 : 파랑, 초록, 빨강

2. 영상의 밝기 조절

  • 픽셀에 일정 값을 더하거나 뺌으로써 영상의 밝기를 조절.

영상 밝기 조절 수식

  • src는 입력 영상, dst는 출력 영상, n은 밝기 값을 나타냄.
  • 그레이스케일의 최댓값은 255, 최솟값은 0이므로 결과 영상의 픽셀 값을 설정해 주어야 함.
  • 최대, 최소 값의 범위를 벗어나는 경우 255, 0 으로 설정하는 연산을 포화 연산이라고 부름.
  • 밝기 조절 결과를 자기 자신에게 저장하려면 += 연산자 재정의를 사용.

3. 영상의 밝기 조절 직접 구현하기

  • 연산자 함수를 사용하지 않고 밝기 조절을 하려면 입력 영상의 모든 픽셀을 방문하면서 픽셀 값에 일정한 상수를 더하거나 빼면 됨.
  • 직접 결과 영상 픽셀 값을 설정하려면 크기와 타입의 결과 영상을 미리 생성해야 함.
  • 연산자 함수가 아닌 직접 조절은 최댓값 255를 넘기면 자동으로 0으로 바뀌어 저장 됨.

// saturate_cast() 캐스팅 함수
template<> inline
uchar saturate_cast<uchar>( int v );

 

  • 포화 연산을 수행하는 함수
  • 자료형을 꼭 명시해야 함.

4. 트랙바를 이용한 영상의 밝기 조절

  • 트랙바(3번 내용 참고)

2020/02/13 - [Computer Vision] - OpenCV 주요 기능 - 3. 이벤트 처리

 

OpenCV 주요 기능 - 3. 이벤트 처리

1. 키보드 이벤트 처리 // 키보드 입력을 처리하는 함수 int waitKey(int delay = 0); delay : 키입력을 기다리는 시간. 지정하지 않거나 0 또는 음수일 경우 무한히 기다림. 반환값이 눌러진 키값(아스키 코드),..

ksb0511.tistory.com

  • dst 창에 트랙바를 부착하고 콜백 함수인 on_brightness를 등록.
  • 프로그램 동작을 매끄럽게 만들기 위해서는 on_brightness() 함수를 강제로 호출.
  • 강제로 호출하지 않을 경우 첫 화면에 사진이 뜨지 않음.

댓글