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]
로 제한.
주요 특징
- 입력 이미지 타입:
- 다양한 데이터 타입(
np.uint8
,np.int16
,np.float32
등)이 가능함.
- 다양한 데이터 타입(
- 출력 이미지 타입: 항상
np.uint8
타입([0,255]
의 integer)로 반환.
- 절대값 처리:
- 모든 픽셀 값의 절대값을 취해짐.
사용 시 주의사항
alpha
와beta
를 지정하지 않으면 기본값(alpha=1, beta=0)이 사용됨.- 입력 이미지의 범위에 따라 적절한
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)}]")
'Programming > DIP' 카테고리의 다른 글
[DIP] Histogram Matching: Image Enhancement (0) | 2024.10.07 |
---|---|
[DIP] Moirè (모아레) (and Beat) (3) | 2024.09.30 |
[DIP] Image 다루기: 기본편 3;OpenCV 사용하기 (Summary) (0) | 2024.09.22 |
[DIP] CV2.INTER_AREA (0) | 2024.09.22 |
[DIP] Interpolation (on Image) (2) | 2024.09.22 |