회색 이미지의 히스토그램 얻기

개요



회색조 이미지의 히스토그램을 얻는 방법을 씁니다.

numpy 함수 histogram을 사용하는 방법



이미지를 읽으려면 openCV를 사용합니다.
그레이 스케일로 읽어들이므로 cv2.imread의 두 번째 인수에 "0"을 씁니다.

np.histogram(배열, bins)에서 bin당 요소 수와 bin(계급)의 경계 값을 배열로 반환합니다.
아래 코드는 각각 img_hist, img_bins에 저장합니다.

np.histogram에 주는 배열은, 이번은 그레이 스케일 화상(2차원)이므로, flatten()로 1차원 배열로 변환하고 있습니다.

마지막으로 matplotlib에서 히스토그램을 그립니다.
import cv2
import numpy as np
import matplotlib.pyplot as plt

# 画像の読み込み
img = cv2.imread("Lena.jpg", 0)

# ヒストグラムの取得
img_hist, img_bins = np.histogram(np.array(img).flatten(), bins=np.arange(256+1))

# ヒストグラムの表示
plt.plot(img_hist)
plt.show()

OpenCV calcHist를 사용하는 방법



히스토그램 획득 부분만 위의 numpy 예제와 다릅니다.
cv2.calcHist(image, channel, mask, histsize, range)

채널은 히스토그램을 계산하는 이미지 채널
  :그레이스케일이면 [0]
  :컬러 화상이면 B, G, R에 상당하는 [0], [1], [2]를 지정
mask는 이미지의 모든 픽셀의 히스토그램을 계산할 때 None
histsize는 bin(계급)의 수.
range는 히스토그램을 계산하고 싶은 픽셀값의 범위. 일반적으로 [0, 256] 지정
import cv2
import numpy as np
import matplotlib.pyplot as plt

# 画像の読み込み
img = cv2.imread("Lena.jpg", 0)

# ヒストグラムの取得
img_hist_cv = cv2.calcHist([img], [0], None, [256], [0, 256])

# ヒストグラムの表示
plt.plot(img_hist_cv)
plt.show()

+ 사용한 이미지


+ 얻은 히스토그램


요약



numpy 함수 histogram과 opencv calcHist를 사용하는 두 가지 방법으로 히스토그램을 얻습니다.
단순히 전체 이미지의 히스토그램을 찍는다면 numpy로하는 것이 더 쉬운 인상

좋은 웹페이지 즐겨찾기