Jooyoung Lee
기록 일지
Jooyoung Lee
  • 분류 전체보기 (27)
    • 임베디드 (9)
    • 딥러닝 (11)
      • ML (3)
      • Notions (4)
      • AI math (4)
      • 강의 리뷰 (0)
    • 논문 리뷰 (1)
    • 스터디 (1)
    • 컴퓨터 비전 (5)

블로그 메뉴

  • About me,
GitHub Contribution
Loading data ...
Jooyoung Lee

기록 일지

영상의 밝기 조절 과 산술 연산
컴퓨터 비전

영상의 밝기 조절 과 산술 연산

2023. 1. 5. 19:41

영상의 화소 처리 기법

화소 처리 (Point processing)

  • 입력 영상의 특정 좌표 픽셀 값을 변경하여 출력 영상의 해당 좌표 픽셀 값으로 설정하는 연산

\( dst(x,y) \ = \ f(src(x,y)) \quad f \) : 변환함수

  • 결과 영상의 픽셀 값이 정해진 범위 (e.g. 그레이 스케일)에 있어야 한다
  • 반전, 밝기 조절, 명암비 조절 등등

영상의 밝기 조절

 

밝기 조절 수식

\( dst(x,y) \ = \ saturate(src(x,y) + n) \)

 

 

밝기 조절을 위한 덧셈 연산 (함수)

cv2.add(src1, src2, dst=None, mask=None, dtype=None)
  • src1:            (입력) 첫 번째 영상 또는 스칼라
  • src2:            (입력) 두 번째 영상 또는 스칼라
  • dst:              (출력) 덧셈 연산의 결과 영상
  • mask:          마스크 영상
  • dtype:         출력 영상(dst)의 타입. (e.g.) cv2.CV_8U, cv2.CV_32F 등
  • 참고사항
    • 스칼라(Scalar)는 실수 값 하나 또는 실수 값 네 개로 구성된 튜플
    • dst를 함수 인자로 전달하려면 dst의 크기가 src1, src2와 같아야 하며, 타입이 적절해야 함

Grayscale , 밝기 100 증가 예제 코드

src = cv2. imread('lenna.bmp', cv2.IMREAD_GRAYSCALE)

dst1 = cv2.add(src, 100)

dst2 = src + 100

Color 영상 , 밝기 100 증가 예제 코드

src = cv2.imread('lenna.bmp')

dst1 = cv2.add(src, (100, 100, 100, 0))

dst2 = np.clip(src + 100., 0, 255).astype(np.uint8)

 


영상의 산술 연산

 

영상의 산술 연산

덧셈 연산

\( dst(x,y) = saturate(src1(x,y) + src2(x,y)) \)

  • 두 영상의 같은 위치에 존재하는 픽셀 값을 더하여 결과 영상의 픽셀 값으로 설정한다.
  • 덧셈 결과가 255보다 크다면 픽셀 값을 255로 설정 (포화 연산) 

 

cv2.add(src1, src2, dst=None, mask=None, dtype=None)

 함수 인자 정보는 위 서술한 세부내용 확인

 

가중치 합 (weighted sum)

\(  dst(x,y) = saturate(\alpha * src1(x,y) \ + \ \beta * src2(x,y)) \)

  • 두 영상의 같은 위치에 존재하는 픽셀 값에 대하여 가중합을 계산하여 결과 영상의 픽셀 값으로 설정
  • 보통 \(\alpha \ + \ \beta = 1\) 이 되도록 설정 ☞ 두 입력 영상의 평균 밝기를 유지한다.

cv2.addWeighted(src1, alpha, src2, beta, gamma, dst=None, dtype=None)
  • src1:        첫 번째 영상
  • alpha:      첫 번째 영상 가중치
  • src2:        두 번째 영상. src1과 같은 크기 & 같은 타입
  • beta:        두 번째 영상 가중치
  • gamma:   결과 영상에 추가적으로 더할 값
  • dst:          가중치 합 결과 영상
  • dtype:      출력 영상(dst)의 타입

 

평균 연산 (average)

  • 가중치를  \(\alpha \ = \ \beta \ = \ 0.5 \) 로 설정한 가중치 합

\( dst(x,y) = \frac{1}{2}(src1(x,y) + src2(x,y)) \)

 

 

뺄셈 연산

\( dst(x,y) = saturate(src1(x,y) - src2(x,y)) \)

  • 두 영상의 같은 위치에 존재하는 픽셀 값에 대하여 뺄셈 연산을 수행하여 결과 영상의 픽셀 값으로 설정
  • 뺄셈 결과가 0보다 작으면 픽셀 값을 0으로 설정 (포화 연산)
cv2.subtract(src1, src2, dst=None, mask=None, dtype=None)

src1:    첫 번째 영상 또는 스칼라 

src2:    두 번째 영상 또는 스칼라

dst:      뺄셈 연산 결과 영상

mask:  마스크 영상

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

 

차이 연산

\( dst(x,y) = |src1(x, y) src2(x, y)| \)

  • 두 영상의 같은 위치에 존재하는 픽셀 값에 대하여 뺄셈 연산을 수행한 후, 그 절댓값을 결과 영상의 픽셀 값으로 설정
  • 뺄셈 연산과 달리 입력 영상의 순서에 영향을 받지 않음
cv2.absdiff(src1, src2, dst=None)
  • src1:     첫 번째 영상 또는 스칼라
  • src2:     두 번째 영상 또는 스칼라
  • dst:       차이 연산 결과 영상 (차영상)

 

영상 산술연산

 

 

'컴퓨터 비전' 카테고리의 다른 글

OpenCV :: Mat Class (1)  (0) 2023.01.10
OpenCV :: 기본 자료형 클래스  (0) 2023.01.09
히스토그램 (Histogram)  (2) 2022.12.28
OpenCV 기초 - 영상 속성과 픽셀 값 처리  (0) 2022.12.19
    '컴퓨터 비전' 카테고리의 다른 글
    • OpenCV :: Mat Class (1)
    • OpenCV :: 기본 자료형 클래스
    • 히스토그램 (Histogram)
    • OpenCV 기초 - 영상 속성과 픽셀 값 처리
    Jooyoung Lee
    Jooyoung Lee
    Embedded software engineer

    티스토리툴바