Computer Vision/opencv(python)

[12] 기본적인 영상 처리 기법 1)영상의 밝기 조절

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

  • 결과 영상의 픽셀 값이 정해진 범위에 있어야함
  • 반전, 밝기, 조절, 명암비 조절등

 

  • 밝기 조절이란?
    • 영상을 전체적으로 더욱 밝거나 어둡게 만드는 연산

  • 밝기 조절 수식

saturate 연산을 통해 값이 0~255 사이의 값만 갖게 해준다

 

  • 영상의 밝기 조절을 위한 영상의 덧셈 연산
cv2.add(src1,src2,dst=None,mask=None,dtype=None) -> dst

 • src1: ( 입력 ) 첫 번째 영상 또는 스칼라
 • src2: ( 입력 ) 두 번째 영상 또는 스칼라
 • dst:  ( 출력 ) 덧셈 연산의 결과 영상
 • mask: 마스크 영상

 • dtype: 출력영상(dst) 의 타입. ex)cv2.CV_8U, cv2.CV_32F 등

 • 참고사항
 스칼라는 실수 값 하나 또는 실수 값 네 개로 구성된 튜플
 dst 를 함수 인자로 전달하려면 dst 의 크기가 src1, src2 와 같아야 하며 , 타입이 적절해야 함

 

  • 그레이스케일, 컬러 영상의 밝기 100만큼 증가시키기
import sys
import numpy as np
import cv2

#흑백
src=cv2.imread('lenna.bmp',cv2.IMREAD_GRAYSCALE)
dst=cv2.add(src,100)

#컬러
src2=cv2.imread('lenna.bmp')
dst2=cv2.add(src2,(100,100,100,0))    # (b,g,r, 알파채널=쓰이지 않음) 만약 100이라고만 넣으면 100=(100,0,0,0)
#dst=np.clip(src+100.,0,255).astype(np.uint8)
''' 
dst=src+100 라고 한다면
src는 그레이스케일 이기 때문에 각각의 픽셀값은 
unsigned character (uint8) 이다.
그러므로 0~255 값을 갖는데 255보다 커질경우 
0에 가까운 값으로 바꾸어 버린다
ex)257->1
그러므로 
dst=np.clip(src+100.,0,255).astype(np.uint8)
함수를 사용하거나 add함수를 사용한다

'''

cv2.imshow('src',src)
cv2.imshow('dst',dst)
cv2.waitKey()
cv2.destroyAllWindows()

cv2.imshow('src2',src2)
cv2.imshow('dst2',dst2)
cv2.waitKey()
cv2.destroyAllWindows()