728x90
728x90
영상의 화소 처리 기법
화소 처리(Point processing)
입력 영상의 특정 좌표 픽셀 값을 변경하여 출력 영상의 해당 좌표 픽셀 값으로
설정하는 연산
- f1 : 항등함수(반전)
- f2 : 영상의 밝기 조절(픽셀값 조절)
- f3 : 0 or 255 이진영상으로 변환
영상의 밝기 조절
cv2.add(src1, src2, dst=None, mask=None, dtype=None) -> dst
'''
src1: (입력) 첫 번째 영상 또는 스칼라
src2: (입력) 두 번째 영상 또는 스칼라
dst: (출력) 덧셈 연산의 결과 영상
mask: 마스크 영상, 픽셀값이 0이 아닌 부분에 대해서만 덧셈 연산이 된다
dtype: 출력 영상(dst)의 타입. (e.g.) cv2.CV_8U, cv2.CV_32F 등
'''
dst = src + 100(브로드캐스팅)
==> 255값보다 커지는 경우 그 값을 0에 가까운 값으로 바뀐다.
==> (256 = 0 , 257 = 1, ....) 반전 효과
밝은 부분이 검은색으로 변함/ so, cv2.add() 사용
* + : 255보다 커질 순 없으니 0 (포화, Saturate 연산)
* - : 영상의 이미지가 음수가 될 수 없으니 0 (포화, Saturate 연산)
스칼라(Scalar)는 실수 값 하나 또는 실수 값 네 개로 구성된 튜플
dst를 함수 인자로 전달하려면 dst의 크기가 src1, src2와 같아야 하며, 타입이 적절해야 함
src = cv2.imread('lenna.bmp')
# add or np.clip 사용시
# 컬러 영상의 밝기 100만큼 증가시키기
dst1 = cv2.add(src, (100, 100, 100, 0))
dst2 = np.clip(src + 100., 0, 255).astype(np.uint8)
'''
grayscale = (100, 0, 0, 0) = B, G, R, D
실수값 하나 지정하면 나머진 기본값 0으로 설정됨
numpy.clip(array, min, max)
array 내의 element들에 대해서
min 값 보다 작은 값들을 min값으로 바꿔주고
max 값 보다 큰 값들을 max값으로 바꿔주는 함수.
'''
영상의 산술 및 논리 연산
1. 덧셈 연산
# img2 검은 부분은 더해도 원래 의미가 없기 때문에 img1부분만 가져오고
# img2 흰 부분(값 = 255)를 더하면 해당 부분을 255으로 출력
dst1 = cv.add(img1, img2, dtype=cv.CV_8U)
2. 가중치 합(weighted sum)
cv2.addWeighted(src1, alpha, src2, beta, gamma, dst=None, dtype=None) -> dst
# cv.addWeighted = img1의 가중치 , img2의 가중치
# 두 이미지의 가중치 합은 되도록 1로 설정 => 두 입력 영상의 평균 밝기를 유지
dst2 = cv.addWeighted(img1, 0.5, img2, 0.5, 0)
3. 뺄셈 연산
cv2.subtract(src1, src2, dst=None, mask=None, dtype=None) -> dst
# 색이 있는 이미지는 보통 255에 가까운 색(특히 gray) - 가운데 검은색 이미지(0)
# 순서가 중요함
4. 차이 연산
cv2.absdiff(src1, src2, dst=None) -> dst
# cv.absdiff = 절대값
# 뺄셈 연산과 달리 입력 영상의 순서에 영향을 받지 않음
# ==> 정상 이미지(img1), 어떤 객체가 추가된 이미지(img2)
# ==> 추가된 객체를 반환
728x90
'OpenCV > OpenCV-Chapter' 카테고리의 다른 글
CH03 Opencv-Python Histogram backprojection (0) | 2021.12.18 |
---|---|
CH03 Opencv-Python Histogram, Contrast (0) | 2021.12.18 |
CH02 OpenCV-Python 기초(도형그리기) (0) | 2021.12.18 |
CH02 OpenCV-Python 기초(imread, mask,ROI) (0) | 2021.12.18 |
CH01 OpenCV-Python(Image? OpenCV?) (0) | 2021.12.18 |
댓글