opencv里面直方图的意义

什么是直方图

直方图是一种图表类型,在计算机视觉领域通常用来指反映图片的亮度,色彩,强度在整个图片里面的分布情况。直方图我们可以理解成另一种理解图片的方式。

直方图可以是彩色的图片,也可以是灰度图,直方图的X轴的范围是(0-255),Y轴则是不同像素值上,像素的数量,如果是彩色的图片Y轴则会有R,G,B三种像素展示,如果是灰度值则只有一种像素展示。

一些术语

BINS: 默认情况直方图是显示0-255范围内每个像素值的像素的数量,当然我们也可以设置一个个区间来统计这个区间内的像素值的数量,比如(0-15),(16-31),(240-255)例子连接 这里面的16个单独的区间都可以叫做一个BIN(英文箱子的意思)

DIMS: 维度,它代表收集颜色通道的个数,如果是灰度图这个值就是1,如果一个彩色图那么DIMS就是3

RANGE: 代表你想测量亮度的范围,正常下是[0-255]代表所有的像素值

使用方法

直方图可以通过opencv的内置的函数来展示,也可以通过numpy的函数来展示,这里推荐使用numpy来打印直方图,opencv内置的方法代码比较长,所以大多数时候都建议使用numpy的函数来展示,代码如下:

# -*- coding:utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np
import cv2 as cv

"""
打印一个灰度图片的直方图
"""

img = cv.imread('E:\\tmp\\cat.jpg')

cv.imshow("orgin",img)

def gray_histogram():
    """
    灰度图
    :return:
    """
    # ravel方法代表返回一个连续扁平化的数组
    # hist参数:数组,bin数量,像素值范围
    gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY)
    plt.hist(gray.ravel(), 256, [0, 256])


def color_histogram():
    """
    彩色图
    :return:
    """
    # 蓝 绿 红
    color = ('b', 'g', 'r')
    for i, col in enumerate(color):
        histr = cv.calcHist([img], [i], None, [256], [0, 256])
        plt.plot(histr, color=col)
        plt.xlim([0, 256])


gray_histogram()

# color_histogram()


plt.show()

cv.waitKey(0)

(1)原图

(2)灰度直方图

(3)彩色直方图

直方图的意义

在计算机视觉领域,常常要处理各种各样的图片,通过观察图片的直方图,可以使我们在加工图片时更加合理的调整一些函数的参数,比如边缘检测,高斯模糊,切割,透视,二值化等等。

参考文档:

https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.ravel.html

https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.histogram.html

https://docs.opencv.org/3.1.0/d1/db7/tutorial_py_histogram_begins.html

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏烂笔头

机器学习笔记—KNN算法

目录[-] 前言 分类(Classification)是数据挖掘领域中的一种重要技术,它从一组已分类的训练样本中发现分类模型,将这个分类模型应用到待分类的样...

54110
来自专栏杨熹的专栏

详解 LSTM

今天的内容有: LSTM 思路 LSTM 的前向计算 LSTM 的反向传播 关于调参 ---- LSTM 长短时记忆网络(Long Short Term Mem...

4885
来自专栏机器学习算法工程师

干货|(DL~2)一看就懂的卷积神经网络

文章来自:https://leonardoaraujosantos.gitbooks.io 作者:Leonardo Araujo dos Santos

1061
来自专栏机器学习、深度学习

人脸检测--Faceness-Net: Face Detection through Deep Facial Part Responses

Faceness-Net: Face Detection through Deep Facial Part Responses PAMI2017 From...

3526
来自专栏ATYUN订阅号

一文带你认识深度学习中不同类型的卷积

卷积(convolution)现在可能是深度学习中最重要的概念。靠着卷积和卷积神经网络(CNN),深度学习超越了几乎其它所有的机器学习手段。 ? 这篇文章将简要...

4529
来自专栏AI科技评论

开发 | Keras版faster-rcnn算法详解(RPN计算)

AI科技评论按:本文首发于知乎专栏Learning Machine,作者张潇捷, AI科技评论获其授权转载。 前段时间学完Udacity的机器学习和深度学习的课...

71711
来自专栏SIGAI学习与实践平台

动手训练模型系列:过拟合与训练集规模

loss值采用Cross_entropy计算,表征训练/测试样本与实际训练/测试分类结果的总误差。

1452
来自专栏技术随笔

深度学习 — 反向传播(BP)理论推导"BP" Math Principle前向传播反向传播应用实例Reference

5116
来自专栏贾志刚-OpenCV学堂

VGG卷积神经网络模型解析

一:VGG介绍与模型结构 VGG全称是Visual Geometry Group属于牛津大学科学工程系,其发布了一些列以VGG开头的卷积网络模型,可以应用在人脸...

4934
来自专栏CVer

风格迁移三部曲(一)之普通风格迁移

风格迁移(Style Transfer)是一个很有意思的任务,通过风格迁移可以使一张图片保持本身内容大致不变的情况下呈现出另外一张图片的风格。风格迁移三步曲将绍...

1640

扫码关注云+社区

领取腾讯云代金券