영상의 밝기 조절

매일 공부(ML)·2021년 11월 10일
0

OPEN CV

목록 보기
7/45

영상 화소 처리 기법

  1. 화소 처리(Point processing)
  • 입력 영상의 특정 좌표 픽설 값을 변경하여 출력 영상의 해당 좌표 픽셀 값으로 설정하는 연산.

    • 출력값 : [0,255] / 입력값 : [0,255]
  • 결과 영상의 픽셀 값이 정해지진 범위에 있어야 한다.

  • 반전, 밝기 조절, 명암비 조절 등

  1. 밝기 조절
  • 영상을 더 밝게 혹은 어둡게 한다

  • 수식

    *saturate

    : 포화상태로, 일정 값 이상 또는 이하로 넘어가지 않게 하는 역할

  • 영상의 덧셈 연산

cv2.add(src1, src2, dst=None, mask=None, dtype=None) -> dst
- scr1: 입력,  첫 번째 영상 또는 스칼라

- src2: 입력, 두 번째 영상 또는 스칼라

- dst: 출력, 덧셈 연산의 결과 영상

- mask: 마스크 영상

- dtype: 출력 영상(dst)의 타입. 

       ex) cv2.CV_8U, cv2.CV_32F
       
- 참고사항

		- 스칼라는 실수 값 하나 혹은 네 개로 구성되어있는 튜플
        
        - dst를 함수 인자로 전달 시, dst의 크기가 src1, src2와 같고 타입 적절
        
        
        
  1. 그레이스케일 영상의 밝기 100만큼 증가
src = cv2.imread('lenna.bmp', cv2.IMREAD_GRAYSCALE)
dst1 = cv2.add(src, 100)
dst2 = src + 100 # 255 넘어갈 시, dst는 그 값 - 255
dst2 = np.clip(src + 100., 0, 255).astype(np.uint8) #clip함수 -> 포화 상황 대비
dst = cv2.add(src, 100) # 제일 간단한 방식
  • clip or add함수 사용

  • clip 함수 사용 안함

  1. 컬러 영상의 밝기 100만큼 증가
src = cv2.imread('lenna.bmp')
dst1 = cv2.add(src, (100, 100, 100, 0)) # blue성분 100만 추가
dst2 = np.clip(src + 100., 0, 255).astype(np.uint8)


# 비교를 위해서 사이즈 조절

src = cv2.resize(src, dsize=(0, 0), fx=0.5, fy=0.5)
dst1 = cv2.resize(dst1, dsize=(0, 0), fx=0.5, fy=0.5)
dst2 = cv2.resize(dst2, dsize=(0, 0), fx=0.5, fy=0.5)

  • dst1, dst2의 결과들이 모두 같다

  • dst1 = cv2.add(src,100) 입력

profile
성장을 도울 아카이빙 블로그

0개의 댓글