[DIP] cv2.convertSacleAbs(): contrast, brightness 수동조정

2024. 9. 23. 18:03·Programming/DIP
728x90
728x90

cv2.convertScaleAbs()

이 함수는 주로 image의 brightness(밝기)와 contrast(대비)를 조절하는데 사용됨.

  • alpha parameter로 contrast를 조절.
  • beta parameter로 brightness를 조절.

기본 구문

dst = cv2.convertScaleAbs(src[, dst[, alpha[, beta]]])
  • src: 입력 이미지 (numpy 배열)
  • dst: 출력 이미지 (선택적)
  • alpha: 스케일 팩터 (기본값 1)
  • beta: 추가할 값 (기본값 0)

동작 원리

이 함수는 각 픽셀에 대해 다음 연산을 수행:

dst(x,y) = saturate( |src(x,y) * alpha + beta| )

where,

  • saturate 함수는 결과값을 [0,255]로 제한.

주요 특징

  1. 입력 이미지 타입:
    • 다양한 데이터 타입(np.uint8, np.int16, np.float32 등)이 가능함.
  2. 출력 이미지 타입: 항상
    • np.uint8 타입([0,255] 의 integer)로 반환.
  3. 절대값 처리:
    • 모든 픽셀 값의 절대값을 취해짐.

사용 시 주의사항

  1. alpha와 beta를 지정하지 않으면 기본값(alpha=1, beta=0)이 사용됨.
  2. 입력 이미지의 범위에 따라 적절한 alpha와 beta 값을 설정해야 함:
    • 개발자 적절한 값을 수동으로 설정해야함.
    • 자동화를 위해서 cv2.normalize()를 고려할 것.

Examples

1. 기본 사용 (alpha와 beta 미지정)

import cv2
import numpy as np

src = np.array([-2.0, -1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype=np.float32)
dst = cv2.convertScaleAbs(src)
print("Input:", src)
print("Output:", dst)

출력:

Input: [-2. -1.  0.  1.  2.  3.  4.]
Output: [2 1 0 1 2 3 4]

2. 범위 조정을 위한 alpha와 beta 사용

import cv2
import numpy as np

src = np.random.uniform(-2.0, 4.0, (100, 100)).astype(np.float32)

src_min, src_max = np.min(src), np.max(src)
alpha = 255.0 / (src_max - src_min)
beta = -src_min * alpha

dst = cv2.convertScaleAbs(src, alpha=alpha, beta=beta)

print(f"원본 범위: [{src_min:.2f}, {src_max:.2f}]")
print(f"결과 범위: [{np.min(dst)}, {np.max(dst)}]")
728x90

'Programming > DIP' 카테고리의 다른 글

[DIP] Histogram Matching: Image Enhancement  (1) 2024.10.07
[DIP] Moirè (모아레) (and Beat)  (3) 2024.09.30
[DIP] Image 다루기: cv2-기본편 3 (Summary)  (1) 2024.09.22
[DIP] CV2.INTER_AREA  (0) 2024.09.22
[DIP] Interpolation (on Image)  (2) 2024.09.22
'Programming/DIP' 카테고리의 다른 글
  • [DIP] Histogram Matching: Image Enhancement
  • [DIP] Moirè (모아레) (and Beat)
  • [DIP] Image 다루기: cv2-기본편 3 (Summary)
  • [DIP] CV2.INTER_AREA
dsaint31x
dsaint31x
    반응형
    250x250
  • dsaint31x
    Dsaint31's blog
    dsaint31x
  • 전체
    오늘
    어제
    • 분류 전체보기 (787)
      • Private Life (15)
      • Programming (206)
        • DIP (116)
        • ML (35)
      • Computer (120)
        • CE (54)
        • ETC (33)
        • CUDA (3)
        • Blog, Markdown, Latex (4)
        • Linux (9)
      • ... (368)
        • Signals and Systems (115)
        • Math (176)
        • Linear Algebra (33)
        • Physics (43)
        • 인성세미나 (1)
      • 정리필요. (61)
        • 의료기기의 이해 (6)
        • PET, MRI and so on. (7)
        • PET Study 2009 (1)
        • 방사선 장해방호 (5)
        • 방사선 생물학 (3)
        • 방사선 계측 (9)
        • 기타 방사능관련 (3)
        • 고시 (9)
        • 정리 (18)
      • RI (0)
      • 원자력,방사능 관련법 (2)
  • 블로그 메뉴

    • Math
    • Programming
    • SS
    • DIP
  • 링크

    • Convex Optimization For All
  • 공지사항

    • Test
    • PET Study 2009
    • 기타 방사능관련.
  • 인기 글

  • 태그

    SS
    Probability
    cv2
    signals_and_systems
    ML
    SIGNAL
    Term
    math
    opencv
    random
    signal_and_system
    fourier transform
    linear algebra
    Vector
    Optimization
    Python
    numpy
    Programming
    function
    인허가제도
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dsaint31x
[DIP] cv2.convertSacleAbs(): contrast, brightness 수동조정
상단으로

티스토리툴바