使用cv2.bitwise_and 函数把原来图片中的需要的局部区域提取出来,我们可以show一下,看看是否是自己需要的区域
有了mask的区域,使用cv2.calcHist([img], [0], mask, [256], [0, 256])函数,传递mask 参数,进而可以实现mask图片的直方图显示 。
图片直方图均衡化这种方法通常用来增加许多图像的全局对比度,尤其是当图像的有用数据的对比度相当接近的时候 。通过这种方法,亮度可以更好地在直方图上分布 。这样就可以用于增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效地扩展常用的亮度来实现这种功能 。
这种方法对于背景和前景都太亮或者太暗的图像非常有用,这种方法尤其是可以带来X光图像中更好的骨骼结构显示以及曝光过度或者曝光不足照片中更好的细节 。这种方法的一个主要优势是它是一个相当直观的技术并且是可逆操作,如果已知均衡化函数,那么就可以恢复原始的直方图,并且计算量也不大 。这种方法的一个缺点是它对处理的数据不加选择,它可能会增加背景噪声的对比度并且降低有用信号的对比度 。
文章插图
图片直方图均衡化
有两个问题比较难懂,一是为什么要选用累积分布函数,二是为什么使用累积分布函数处理后像素值会均匀分布 。
直方图均衡化包括三个步骤:
- 统计直方图中每个灰度级出现的次数;
- 计算累计归一化直方图;
- 重新计算像素点的像素值;
from matplotlib import pyplot as pltimport numpy as npimport cv2image = cv2.imread("1.jpg")img = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)res = cv2.equalizeHist(img)cv2.imshow('img',img)cv2.imshow('res',res)cv2.waitKey(0)
文章插图
代码截图
opencv 使用此函数res = cv2.equalizeHist(img),对图片进行均衡化进行处理,此函数是opencv全局化操作,这个操作在我们需要局部调整时不太适用,同理mask参数,opencv存在一种局部化处理的函数cv2.createCLAHE(),此函数接受一个局部尺寸参数数据
文章插图
局部化处理
from matplotlib import pyplot as pltimport numpy as npimport cv2image = cv2.imread("1.jpg")img = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)#res = cv2.equalizeHist(img)cla = cv2.createCLAHE(clipLimit=2,tileGridSize=(10,10))res = cla.Apply(img)cv2.imshow('img',img)cv2.imshow('res',res)cv2.waitKey(0)
文章插图
代码截图
总结图片直方图在相识图片搜索引擎中起到了至关重要的作用,如何使用图片直方图来进行相识图片的搜索,我们下期分享,帮你打造一款属于自己的相识图片搜索引擎 。
推荐阅读
- 私域流量的真相
- 外星基地图片 外星人基地在哪
- 适用于软件工程师编码面试的十大算法
- 十二星座|十二星座的职业天赋
- |如何面对领导的压制?
- |旧藏-田黄石蝙蝠纹手串
- C语言的字符char类型
- 月球上外星飞船真实图片 月球是外星人监视地球的飞船
- 冬天雾霾严重 清肺保养最关键
- 翡翠|翡翠必学小知识