b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

python OpenCV学习笔记(二十二):直方图均衡化

电脑杂谈  发布时间:2019-08-04 04:02:59  来源:网络整理

python opencv 直方图均衡化_opencv彩直方图均衡化_opencv直方图均衡化

hexo官方文档中文版https://hexo.io/zh-cn/docs/index.html。官方文档:https://seleniumhq.github.io/selenium/docs/api/py/api.html。官网 :https://opencv.org/releases.html。

考虑一个图像,其像素值仅限制在特定的值范围内。例如,更明亮的图像将使所有像素都限制在高值中。但是一个好的图像会有来自图像的所有区域的像素。所以你需要把这个直方图拉伸到两端(如下图所给出的),这就是直方图均衡的作用(用简单的话说)。这通常会改善图像的对比度。

这里写图片描述

建议阅读关于直方图均衡的wikipedia页面Histogram Equalization,了解更多有关它的详细信息。它给出了一个很好的解释,给出了一些例子,这样你就能在读完之后理解所有的东西。同样,我们将看到它的Numpy实现。之后,我们将看到OpenCV函数。

import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
img = cv.imread('wiki.jpg', 0)
hist, bins = np.histogram(img.flatten(), 256, [0,256])
cdf = hist.cumsum()
cdf_normalized = cdf*float(hist.max())/cdf.max()
plt.plot(cdf_normalized, color = 'b')
plt.hist(img.flatten(),256,[0,256], color = 'r')
plt.xlim([0,256])
plt.legend(('cdf','histogram'), loc = 'upper left')
plt.show()

python opencv 直方图均衡化_opencv直方图均衡化_opencv彩直方图均衡化

这里写图片描述

最后,构建直方图强度映射关系m(g)=g,并采用该映射关系调整原图像每一个像素处的强度值,从而达到强度校正。hog算法的具体操作就是将图像分割成很多小的连接区域,在每个小的区域之中生产多个方向梯度直方图或像素点的边缘方向opencv直方图均衡化,图像所有的这些区域的方向梯度直方图或像素点边缘方向就构成了图像的描述子hogdescriptor,这个描述子即可作为识别该图像物体的特征向量。主要用到的参数见例子中的:horzres,vertres,logpixelsx,logpixelsy.总的来说是为了方便控制打印或重画时的控制,如为了定制打印时,一般依据的是物理的长度,而不是像素,而dc一般是用像素的映射模式,所以需要一下转换,上面这个函数就为这种转换设计的.。

现在我们找到了最小的直方图值(不包括0),并应用了在wiki页面中给出的直方图均衡等式。但我用在Numpy的遮罩数组的概念数组上。对于遮罩数组,所有操作都是在非遮罩元素上执行的。

cdf_m = np.ma.masked_equal(cdf, 0)
cdf_m = (cdf_m-cdf_m.min()) * 255 / (cdf_m.max()-cdf_m.min())
cdf = np.ma.filled(cdf_m, 0).astype('uint8')

现在我们有了一个查找表,它提供了关于每个输入像素值的输出像素值的信息。所以我们只要应用变换。

opencv直方图均衡化_python opencv 直方图均衡化_opencv彩直方图均衡化

img2 = cdf[img]

现在我们计算它的直方图和cdf,就像之前一样,结果如下:

这里写图片描述

一个好的模型既要对不同类别识别正确,同时也应该能够对不同视角、光照、背景、变形或部分遮挡的图像正确识别(这里我们统一称作图像扰动)。据悉,“人脸识别”采用先进的计算机视觉技术,找到进入视频框的人脸,进行几何和光照归一化处理,提取人脸特征,将这些特征与已建好的人脸模板进行比对,从而识别每个人的身份。当空间三维场景被投影为二维图像时,同一景物在不同视点下的图像会有很大不同,而且场景中的诸多因素,如光照条件、景物几何形状和物理特性、噪声干扰和畸变以及摄像机特性等,都被综合成单一的图像灰度值。

(2)直方图均衡化 数字图像处理中,灰度直方图是一种简单而实用的工具,能概括描绘一幅 图像的灰度分布情况。变换函数对输入指纹图像像素点进行灰度变换运算,经过点运算将产生一幅新 的输出图像,不会改变输入图像像素点之间原有的基本灰度关系,但是可以增。image — 输入图像(输出图像)灰度或彩色模式。

opencv彩直方图均衡化_python opencv 直方图均衡化_opencv直方图均衡化

img = cv.imread('wiki,jpg', 0)
equ = cv.equalizeHist(img)
res = np.hstack((img, equ)) # 并排叠加图片
cv.imwrite('res.png', res)

这里写图片描述

所以现在你可以用不同的光条件来拍摄不同的图像,平衡它,并检查结果。

直观上说,如果一副图像的像素占有全部可能的灰度级,并且分布均匀,这样的图像有着高的对比度和丰富多变的色调,通过对图像进行直方图均衡化处理,可以使得图像的像素在整个灰度级上近似均匀分布。hog算法的具体操作就是将图像分割成很多小的连接区域,在每个小的区域之中生产多个方向梯度直方图或像素点的边缘方向,图像所有的这些区域的方向梯度直方图或像素点边缘方向就构成了图像的描述子hogdescriptor,这个描述子即可作为识别该图像物体的特征向量。 1 1 直方图匹配 1.1 传统的直方图匹配 传统的直方图匹配(histogram matching,hm)方法是通过累积分布函数计算直方图之间的强度映射关系,对原始图像的强度进行调整,使其直方图与参考图像直方图相近opencv直方图均衡化,从而解决同一场景在不同成像条件、不同光照情况,或者不同成像系统中获得的两幅图像之间的强度差异性问题 [13] 。

利用图像处理技术,对获取到的视频图像进行灰度化、求直方图、直方图均衡化以及中值滤波预处理。 codebook (12)背景建模 opencv (11)直方图反向投影 opencv(10)图像变换之边缘检测 opencv(9)直方图均衡化,对比,匹配 opencv(8)直方图操作 opencv(7)图像金字塔 opencv(6)漫水填充。将实时图分成一系列子块图像,根据景象匹配辅助导航系统预测的无人机位姿信息,获得实时图与基准图的粗略对应关系,考虑平移、尺度、旋转等补偿,选取基准图中与实时图子块对应的基准图子块,求解每对子块图像红、绿、蓝颜色通道色彩直方图的颜色映射关系,并根据建立的颜色映射关系,对实时图子块的三个颜色通道进行变换,从而降低实时图与基准图之间的色彩差异。

opencv彩直方图均衡化_python opencv 直方图均衡化_opencv直方图均衡化

这里写图片描述

在直方图均衡化之后,背景对比得到了改善。但是比较两幅图像中的雕像的脸。由于亮度过高,我们丢失了大部分的信息。这是因为它的直方图并不局限于一个特定的区域,就像我们在前面的例子中看到的那样。

为了解决这个问题,可以使用了自适应直方图均衡。在这一点上,图像被划分为几个小块,称为“tiles”(在OpenCV中默认值是8x8)。然后每一个方块都是像平常一样的直方图。因此,直方图会限制在一个小区域(除非有噪声)。如果噪音在那里,它就会被放大。为了避免这种情况,会应用对比限制。如果任何直方图bin超出指定的对比度限制(默认情况下是40),在应用直方图均衡之前,这些像素被裁剪并均匀地分布到其他bin。均衡后,删除边界中的工件,采用双线性插值。

cv.createCLAHE([, clipLimit[, tileGridSize]])

import numpy as np
import cv2 as cv
img = cv.imread('tsukuba_1.png', 0)
# create a CLAHE object (Arguments are optional).
clahe = cv.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
cl1 = clahe.apply(img)
cv.imread('clahe_2.jpg', cl1)


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-117991-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 王宇宁
        王宇宁

        美帝终究是最根本的敌人

      热点图片
      拼命载入中...