이전 장에서 학습한 HSV포맷을 기준으로 2D Histogram 분석을 진행하겠다
1. 2D Histogram
- calcHist() : 1D와 마찬가지로 calcHist 함수를 이용하여 HSV 포맷의 Hue와 Saturation의 histogram을 생성하겠다
from typing import no_type_check
import cv2
import numpy as np
from matplotlib import pyplot as plt
image = cv2.imread('test.jpg')
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
hist = cv2.calcHist(hsv_image,[0,1], None, [360,256], [0,360,0,256])
stack_hist = np.stack((hist,)*3,axis=-1)
print('image의 shape \t\t: ',image.shape)
print('hist의 shape \t\t: ',hist.shape)
print('stack hist의 shape \t: ',stack_hist.shape)
fig = plt.figure(figsize=(8,3))
plt.tight_layout()
plt.subplot((131)),plt.imshow(image)
plt.subplot((132)),plt.imshow(hist)
plt.subplot((133)),plt.imshow(stack_hist)
plt.show()

- 기존 1D Histogram을 그릴 때와 변경된 부분은
4번째 파라미터인 x축 간격이 2개의 값을 넘겨 x와 y축으로 변경되었고
5번째 파라미터인 축의 범위또한 x, y 각각 0~360 , 0~256의 범위로 설정되었다 - 1D 일 때는 ply.plot으로 그래프를 그렸지만 2D에서는 imshow를 통해 보였다 그 이유는 1D에서는 각 그 값에 해당하는 픽셀의 개수를 표현했지만 2D에서는 H일 때 S 픽셀이 있나 를 표현해서 0, 1 의값이 리턴된다 그렇기 때문에 plot으로 2D를 그리면 0과 1만 표현된다
- hist의 결과값은 H, S 2개의 값이 리턴되기 때문에 shape이 (360,256)이 된다 위에 가운데 사진에 보다시피 imshow로 보였을 때 잘 구분이 되지 않는다
- 좀더 보기 쉽게 np.stack을 통해 RGB 같은 (360,256,3)의 shape으로 변경하였다
- 여기서 의문이 생긴다 각 값이 0과 1로 표현됐는데 왜 결괏값으로 보이는 이미지는 왜 검은색과 하얀색으로 표현되나 하얀색은 255가 아닌가? matplotlib.pyplot에서 0과 1로 되어있는 데이터는 자동으로 0,255로 변경해준다

- 자 이제 나온 결과값을 해석해 보자
- 세로의 값은 Hue를 뜻한다 (100,110) 정도에 점이 찍혀있다 그 뜻은 Hue:110, Saturation:100이란 뜻이므로 약간 어두운 초록색 부분이 많다는 뜻이다 사진에서 숲의 영역을 뜻한다
- 또한 H:160~250 S:150~200 까지의 부분에 점이 몰려있다 그 뜻은 밝은 하늘색이 다양한 밝기와 색상으로 존재한다는 뜻이다 사진에서 바다와 하늘을 뜻한다
다음장에서는 바운딩 박스를 읽어와
해당 바운딩박스 내에 객체들이
어떤 특성을 가지고 있는지 분석해 보겠다
'Machine Learning > Computer Vision' 카테고리의 다른 글
(7) OpenCV python - Erosion(침식), Dilation(확장), Opening, Closing 이미지 변환 기초, 이미지 잘라내기 (0) | 2021.08.11 |
---|---|
(6) OpenCV python - multi label Histogram 분석 (0) | 2021.07.30 |
(4) OpenCV python - 이미지 데이터 분석 HSV format, 이미지 값 조절 (0) | 2021.07.29 |
(3) OpenCV python - Histogram 분석 calcHist() (0) | 2021.07.27 |
(2) OpenCV python - image 결합, 외곽선 검출 (0) | 2021.06.23 |