网站域名在哪里买,北京市住房和城乡建设官网,导购网站 icp备案要求,推广费用怎么算直方图
统计图像中相同像素点的数量。 使用cv2.calcHist(images, channels, mask, histSize, ranges)函数
images#xff1a;原图像图像格式为uint8或float32#xff0c;当传入函数时应用[]括起来#xff0c;例如[img]。 channels#xff1a;同样用中括号括起来#xff…直方图
统计图像中相同像素点的数量。 使用cv2.calcHist(images, channels, mask, histSize, ranges)函数
images原图像图像格式为uint8或float32当传入函数时应用[]括起来例如[img]。 channels同样用中括号括起来告诉我们统幅图像的直方图如果图像是灰度图就是[0]如果是彩色图可以是[0],[1],[2],分别对应BGR。 mask掩膜图像统幅图像使用None若使用一部分需要自行制作。 histSizeBIN的数目也要中括号。 ranges像素值范围一般为[0,256]
灰度图
img cv2.imread(deppb.jpg, 0)
show.cv_show(img, img)
hist cv2.calcHist([img], [0], None, [256], [0, 256])
h1 hist.shape
plt.hist(img.ravel(), 256)
plt.show()灰度图 直方图
彩色图
img2 cv2.imread(deppb.jpg)
show.cv_show(img2, img2)
color (b, g, r)
for i, col in enumerate(color):histr cv2.calcHist([img2], [i], None, [256], [0, 256])plt.plot(histr, colorcol)plt.xlim([0, 256])
plt.show()彩色图 直方图 图为三通道的直方图
mask操作
mask在指定区域置为255其余区域置为0与原图相与最后得到指定区域的像素点个数统计绘制直方图。
# 创建mask
show.cv_show(img2, img2) # 原图
mask np.zeros(img2.shape[:2], np.uint8)
print(mask.shape)
mask[200: 600, 100: 427] 255
show.cv_show(mask, mask) # mask图masked_img2 cv2.bitwise_and(img2, img2, maskmask)
show.cv_show(masked_img2, masked_img2) # 原图与maskhist_full cv2.calcHist([img2], [0], None, [256], [0, 256])
hist_mask cv2.calcHist([img2], [0], mask, [256], [0, 256])
plt.plot(hist_full), plt.plot(hist_mask) # [0]通道直方图对比
plt.show()mask图 mask与原图相与 [0]通道直方图对比 蓝色为整体直方图橙色为特定区域直方图。
均衡化
将一副图像的直方图分布通过累积分布函数变成近似均匀分布从而增强图像的对比度。 根据像素点个数得到概率值再算出累积概率类似于分布函数再由累积概率映射出新的像素值最后取整。
img3 cv2.imread(deppb.jpg, 0)
plt.hist(img3.ravel(), 256) # 原图直方图
plt.show()equ cv2.equalizeHist(img3)
plt.hist(equ.ravel(), 256) # 均衡化后直方图
plt.show()res np.hstack((img3, equ))
show.cv_show(res, res) # 图像对比可以看到整体均衡化可能导致部分信息丢失。
自适应均衡化
其实是分区域进行均衡化减少信息丢失。
clahe cv2.createCLAHE(clipLimit2.0, tileGridSize(8, 8)) # 方法
res_clahe clahe.apply(img3)
plt.hist(res_clahe.ravel(), 256) # 自适应均衡化后直方图
plt.show()
res np.hstack((img3, equ, res_clahe)) # 与原图和整体均衡化对比
show.cv_show(res, res)自适应均衡化的直方图
对比图 可以看到对比度加强而且信息丢失得到改善。