直方图-1:查找、绘制和分析
直方图是图像处理中一种用于可视化图像像素值分布的工具。
它是在X轴上具有像素值(不总是从0到255的范围),在Y轴上具有图像中相应像素数的图。
以下是关于直方图的一些常见操作:
查找直方图:
使用OpenCV函数cv.calcHist()可以计算图像的直方图。该函数接受图像数组、通道索引、掩码(可选)和直方图的参数(如直方图的大小和范围),并返回计算得到的直方图。
绘制直方图:
使用OpenCV函数cv.plot.hist()可以绘制直方图。该函数接受直方图数据和其他绘图参数,并在窗口或图像上绘制直方图。
分析直方图:
通过观察直方图,可以了解图像的像素值分布情况。例如,可以通过查看直方图的峰值来判断图像的主要颜色或亮度。也可以根据直方图的形状来判断图像的对比度或亮度范围。
直方图均衡
提高图像对比度。它通过重新分配图像的像素值,使图像中的像素值更加均匀地分布在整个范围内,从而增强图像的细节和对比度。在OpenCV中,可以使用cv.equalizeHist()函数来执行直方图均衡化操作。
img = cv.imread('wiki.jpg',0)
equ = cv.equalizeHist(img)
res = np.hstack((img,equ)) #stacking images side-by-side
cv.imwrite('res.png',res)
二维直方图
二维直方图用于表示图像中两个通道的像素值分布。它可以帮助我们了解两个通道之间的关系,例如颜色空间中的红色和绿色通道之间的相关性。OpenCV提供了cv.calcHist()函数的变体cv.calcHist([img1, img2], channels, mask, histSize, ranges)用于计算二维直方图。
hsv = cv.cvtColor(img,cv.COLOR_BGR2HSV)
hist = cv.calcHist( [hsv], [0, 1], None, [180, 256], [0, 180, 0, 256] )
直方图反投影
直方图反投影是一种用于在图像中找到与给定直方图相似度最高的区域的技术。它通过比较测试图像的像素值与给定直方图的对应条目,并将相似度信息映射到输出图像中。在OpenCV中,可以使用cv.calcBackProject()函数来执行直方图反投影操作。
示例:将蓝色矩形内的区域用作示例对象,提取整个地面。