- 히스토그램 (Histogram)
- 영상의 픽셀 값 분포를 그래프의 형태로 표현한 것
- 예를 들어 그레이스케일 영상에서 각 그레이스케일 값에 해당하는 픽셀의 개수를 구하고, 이를 막대 그래프의 형태로 표현
- 정규화된 히스토그램 (Normalized histogram)
- 각 픽셀의 개수를 영상 전체 픽셀 개수로 나누어준 것
- 해당 그레이스케일 값을 갖는 픽셀이 나타날 확률
- 영상과 히스토그램의 관계
- 히스토그램 구하기
cv2.calHist(images,channels,mask,histSize,ranges,hist=None,accumulatE=None) -> hist
• images: 입력 영상 리스트
• channels: 히스토그램을 구할 채널을 나타내는 리스트
• mask: 마스크 영상 입력 영상 전체에서 히스토그램을 구하려면 None 지정
• histSize : 히스토그램 각 차원의 크기 빈 (bin) 의 개수 를 나타내는 리스트
• ranges: 히스토그램 각 차원의 최솟값과 최댓값으로 구성된 리스트
• hist: 계산된 히스토그램 (numpy.ndarray)
• accumulate: 기존의 hist 히스토그램에 누적하려면 True, 새로 만들려면 False.
- 그레이스케일 영상, 컬러 영상의 히스토그램 구하기
import cv2
import numpy as np
import sys
import matplotlib.pyplot as plt
src=cv2.imread('lenna.bmp',cv2.IMREAD_GRAYSCALE)
if src is None:
print('Image load failed!')
sys.exit()
hist=cv2.calcHist([src],[0],None,[256],[0,256])
cv2.imshow('src',src)
cv2.waitKey(1)
plt.plot(hist)
plt.show()
src=cv2.imread('lenna.bmp')
if src is None:
print('Image load failed!')
sys.exit()
colors=['b','g','r']
bgr_planes=cv2.split(src)
for(p,c) in zip(bgr_planes,colors):
hist=cv2.calcHist([p],[0],None,[256],[0,256])
plt.plot(hist,color=c)
cv2.imshow('src',src)
cv2.waitKey(1)
plt.show()
'Computer Vision > opencv(python)' 카테고리의 다른 글
[17] 6) 히스토그램 평활화 (0) | 2021.03.18 |
---|---|
[16] 5) 영상의 명암비 조절 (0) | 2021.03.18 |
[14] 3) 컬러 영상과 색 공간 (0) | 2021.03.18 |
[13] 2) 영상의 산술 및 논리 연산 (0) | 2021.03.17 |
[12] 기본적인 영상 처리 기법 1)영상의 밝기 조절 (0) | 2021.03.17 |