认识直方图
在图像处理中,也经常需要分析图像的亮度(即像素级的分布情况),这就需要用到直方图了,如颜色直方图、灰度直方图等。
颜色直方图
颜色直方图是最常用的表达颜色特征的方法,其优点是不受图像旋转和平移变化的影响,进一步借助归一化还可以不受图像尺度变化的影响,其缺点是没有表达出颜色空间分布的信息。
颜色直方图处理方法
颜色直方图是对RGB三通道分别做统计,这个逻辑比较简单,我直接用opencv的函数来实现吧,先看代码:
import cv2
import numpy as np
from matplotlib import pyplot as plt
image = cv2.imread("data.jpg")
cv2.imshow("Original",image)
#cv2.waitKey(0)
chans = cv2.split(image)
colors = ("b","g","r")
plt.figure()
plt.title("Flattened Color Histogram")
plt.xlabel("Bins")
plt.ylabel("# of Pixels")
for (chan,color) in zip(chans,colors):
hist = cv2.calcHist([chan],[0],None,[256],[0,256])
plt.plot(hist,color = color)
plt.xlim([0,256])
plt.show()
还拿以前老照片做实验吧。如下图所示(只是统计RGB的整体色调级的分布情况,没有位置信息)