AI 그게 뭔데
끄적끄적 개발일지
AI 그게 뭔데
전체 방문자
오늘
어제
  • 분류 전체보기 (342)
    • 논문 (5)
    • DL(Deep-Learning) (34)
      • 개념 (14)
      • Python 기초 (14)
      • Tensorflow (6)
      • Pytorch (0)
    • NLP (10)
    • OpenCV (53)
    • DevOps (10)
      • AWS (2)
      • Docker & Kubernetes (4)
      • Spark (3)
      • SQL (1)
    • MacOS (1)
    • React-Native (2)
    • BI (3)
      • GA(Google Analytics) (3)
      • Tableau (0)
    • 알고리즘 (221)
      • 백준 (76)
      • 프로그래머스 (108)
      • 기타 알고리즘 (37)

인기 글

태그

  • 백준
  • 파이썬
  • 연습문제
  • level1
  • Python
  • OpenCV
  • LEVEL2
  • 프로그래머스
  • 알고리즘
  • 이코테

최근 글

hELLO · Designed By 정상우.
AI 그게 뭔데

끄적끄적 개발일지

[OpenCV with Python] 영상처리 : 히스토그램 분석
OpenCV

[OpenCV with Python] 영상처리 : 히스토그램 분석

2022. 2. 1. 11:53

히스토그램(Histogram)

  • 영상의 픽셀 값 분포를 그래프의 형태로 표현한 것
  • 예를 들어 그레이스케일 영상에서 각 그레이스케일 값에 해당하는 픽셀의 개수를 구하고, 이를 막대 그래프의 형태로 표현한 것

 

 

정규화된 히스토그램(Normalized histogram)

  • 각 픽셀의 개수를 영상 전체 픽셀 개수로 나누어준 것
  • 해당 그레이스케일 값을 갖는 픽셀이 나타날 확률을 의미한다.

 

 

영상과 히스토그램의 관계

 

 

히스토그램 구하기  -  cv2.calcHist

cv2.calcHist(images,
             channels,
             mask,
             histSize,
             ranges,
             hist=None,
             accumulate=None)
  • images : 입력 영상 리스트
  • channels : 히스토그램을 구할 채널을 나타내는 리스트
  • mask : 마스크 영상 입력 
             영상 전체에서 히스토그램을 구하려면 None 지정
  • histSize : 히스토그램 각 차원의 크기(빈(bin)의 개수)를 나타내는 리스트
  • ranges : 히스토그램 각 차원의 최솟값과 최댓값으로 구성된 리스트
  • hist : 계산된 히스토그램 (numpy.ndarray)
  • accumulate :  기존의 hist 히스토그램에 누적하려면 True, 새로 만들려면 False

 

💬  실습

import sys
import numpy as np
import matplotlib.pyplot as plt
import cv2


# 그레이스케일 영상의 히스토그램
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()

cv2.destroyAllWindows()

 

'OpenCV' 카테고리의 다른 글

[OpenCV with Python] 영상처리 : 히스토그램 평활화 Histogram equalization  (0) 2022.02.01
[OpenCV with Python] 영상처리 : 명암비 조절  (0) 2022.02.01
[OpenCV with Python] 영상처리 : 컬러 영상과 색 공간  (0) 2022.02.01
[OpenCV with Python] 영상처리 : 영상의 산술 및 논리 연산  (0) 2022.01.31
[OpenCV with Python] 영상처리 : 영상의 밝기 조절  (0) 2022.01.31
    AI 그게 뭔데
    AI 그게 뭔데
    공부와 개발 그리고 AI가 약간 첨가된 흔적 남기기

    티스토리툴바