一般颜色直方图

article/2025/9/28 13:28:32

  颜色直方图是一种用于图像处理和分析的图表,它可以显示图像中不同颜色的数量。通常,颜色直方图会将颜色分成几个色调区间,每个区间对应一个条形图,其中条形图的高度表示该色调区间中的像素数量。通过颜色直方图,你可以快速了解图像的颜色分布情况。

s(x_{i})是图像F中的某一特定颜色x_{i}的像素个数,图像F像素总个数为N=\sum_{j}^{}s(x_{j})

每个特定颜色出现的概率为h(x_{i})=\frac{s(x_{i})}{N}=\frac{s(x_{i})}{\sum_{j}^{}s(x_{j})}

整个图像F的颜色直方图可表示为:

H(F)=[h(x_{1}),h(x_{2}),....h(x_{n})] n表示某类颜色取值个数。

获取数组:

from skimage import io, exposure
I = io.imread("I1.jpg")
# 计算直方图
R = exposure.histogram(I[:, :, 0], nbins=256)
G = exposure.histogram(I[:, :, 1], nbins=256)
B = exposure.histogram(I[:, :, 2], nbins=256)

RGB颜色直方图:

from skimage import io
import matplotlib.pyplot as pltdef set_ch():from pylab import mplmpl.rcParams['font.sans-serif'] = ['FangSong']mpl.rcParams['axes.unicode_minus'] = Falseset_ch()I = io.imread("I1.jpg")# 显示
r = I[:, :, 0].flatten()
g = I[:, :, 1].flatten()
b = I[:, :, 2].flatten()plt.figure("hist", figsize=(8, 8))
plt.subplot(221)
plt.imshow(I)
plt.title("原图")
plt.subplot(222)
plt.hist(r, bins=256, edgecolor='None', facecolor='red')
plt.title("R通道")
plt.subplot(223)
plt.hist(g, bins=256, edgecolor='None', facecolor='red')
plt.title("G通道")
plt.subplot(224)
plt.hist(b, bins=256, edgecolor='None', facecolor='red')
plt.title("B通道")
plt.show()

 如何想要显示概率直方图您可以使用 hist 函数并将参数 density 设置为 True。这将导致直方图的柱形元素被归一化为概率值,即与所有柱形元素之和等于 1。

from skimage import io
import matplotlib.pyplot as pltdef set_ch():from pylab import mplmpl.rcParams['font.sans-serif'] = ['FangSong']mpl.rcParams['axes.unicode_minus'] = Falseset_ch()I = io.imread("I1.jpg")# 显示
r = I[:, :, 0].flatten()
g = I[:, :, 1].flatten()
b = I[:, :, 2].flatten()plt.figure()
plt.imshow(I)
plt.title("原图")
plt.show()
plt.figure()
plt.hist(r, bins=256, edgecolor='None', facecolor='red', density=True)
plt.title("R通道")
plt.show()plt.figure()
plt.hist(g, bins=256, edgecolor='None', facecolor='red', density=True)
plt.title("G通道")
plt.show()
plt.figure()
plt.hist(b, bins=256, edgecolor='None', facecolor='red', density=True)
plt.title("B通道")
plt.show()

普通颜色直方图是指使用色调(hue)、饱和度(saturation)和亮度(value)三个维度来描述图像颜色的直方图。

色调(hue)表示颜色的基本类型,如红、黄、绿、蓝、紫等。饱和度(saturation)表示颜色的浓度,即颜色的纯度,数值越大,颜色越饱和;数值越小,颜色越灰暗。亮度(value)表示颜色的明暗程度,数值越大,颜色越亮;数值越小,颜色越暗。

HSV颜色直方图:

import matplotlib.pyplot as plt
import numpy as np
from skimage import io
import matplotlib.colors as colorsdef set_ch():from pylab import mplmpl.rcParams['font.sans-serif'] = ['FangSong']mpl.rcParams['axes.unicode_minus'] = Falseset_ch()# 假设有一组 RGB 颜色数据,其中每组数据包含三个 0~255 的整数值
I = io.imread("I1.jpg")# 将 RGB 颜色数据转换为 HSV 格式
hsv_I = np.array([colors.rgb_to_hsv(rgb) for rgb in I])# 显示
h = hsv_I[:, :, 0].flatten()
s = hsv_I[:, :, 1].flatten()
v = hsv_I[:, :, 2].flatten()plt.figure()
plt.imshow(I)
plt.title("原图")
plt.show()
plt.figure()
plt.hist(h, bins=180, edgecolor='None', facecolor='red', density=True)
plt.title("H通道")
plt.show()plt.figure()
plt.hist(s, bins=256, edgecolor='None', facecolor='red', density=True)
plt.title("S通道")
plt.show()
plt.figure()
plt.hist(s, bins=256, edgecolor='None', facecolor='red', density=True)
plt.title("V通道")
plt.show()

也可以使用 skimage 库中的 color 模块来实现颜色直方图。

首先读入图像数据,然后使用 color.rgb2hsv 函数将图像数据转换为 HSV 格式。接下来,可以使用 exposure.histogram 函数计算 H、S 或 V 通道的直方图数据。

import matplotlib.pyplot as plt
from skimage import color, exposure, iodef set_ch():from pylab import mplmpl.rcParams['font.sans-serif'] = ['FangSong']mpl.rcParams['axes.unicode_minus'] = Falseset_ch()
# 读入图像数据
image = io.imread('I1.jpg')# 将图像数据转换为 HSV 格式
hsv_image = color.rgb2hsv(image)# 计算 不同 通道的直方图数据
H_hist, H_bins = exposure.histogram(hsv_image[:, :, 0])
S_hist, S_bins = exposure.histogram(hsv_image[:, :, 1])
V_hist, V_bins = exposure.histogram(hsv_image[:, :, 2])# 使用 hist 函数绘制直方图
plt.figure()
plt.hist(H_bins, H_bins, weights=H_hist)
plt.title("H通道")
plt.show()
plt.figure()
plt.hist(S_bins, S_bins, weights=S_hist)
plt.title("S通道")
plt.show()
plt.figure()
plt.hist(V_bins, V_bins, weights=V_hist)
plt.title("V通道")
plt.show()

 

由于处理方式不同,可能会产生部分数据不一致。


http://chatgpt.dhexx.cn/article/BqTvR0jO.shtml

相关文章

网络爬虫Jsoup

简介 网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、…

【Java】Jsoup爬虫快速入门案例

1、前言 该技术博客是根据B站狂神说Java教程的笔记总结,希望能为大家带来帮助! 2、Jsoup实战案例 爬虫可以理解为爬取数据,所谓爬取数据就是: 获取请求返回的页面信息,筛选出我们想要的数据 如果想要爬取数据&#…

android爬虫框架jsoup,Android笔记之JSoup爬虫入门

前言 闲扯一些没用的,写这篇文章之前是有点私心的,因为之前评论某简书大v的文章是鸡汤,瞬间被拉黑,连个解释和说明的机会都没有,文章语言干涩,内容平平,于是就好奇到底是些什么样的人喜欢和吹捧…

Java的Jsoup爬虫

Java的Jsoup爬虫,爬携程酒店评分,保存数据库中 前言一、Jsoup爬虫pom二、逻辑代码部分1.首先我们要先确定爬取的东西,这边我就以携程的酒店评分为例子。2.Jsoup进行解析具体要求爬的内容3.接下来我们就是将爬取的数据存入数据库中 总结 前言 …

使用Jsoup爬虫爬取相关图片

一、Jsoup概述 jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。 主要功能: 1. 从一个URL,文件或字符串…

jsoup爬虫实战详解之新浪

** jsoup爬虫实战详解之新浪 ** 今天分享一个之前困扰了一段时间的关于jsoup爬取新浪网页信息的踩坑总结。 在实现以上功能的之前我门首先要了解两个重点:1.关于jsoup的爬取细节以及教程,爬取时所要了解jsoup的相关标签:具体的自己大家感兴…

Java JSOUP爬虫学习分享

昨天从狂神大佬那学习了如何用jsoup爬去网站数据,现在整理了一下给大家分享一下。 先创建一个名叫JsoupPojo的实体类用来装入数据。 Data public class JsoupPojo {private String src;private String name; } 下面是将用来爬取的方法封装成了一个工具类 Compon…

java jsoup爬虫

前言:在日常开发中,我们必定是与我们的数据源打交道,我们的数据源无非就那么几个 1.数据库2.爬虫数据 3.第三方系统交互,这里介绍java 中网页版的爬虫jsoup的使用 1.首先导入我们的jar包 maven坐标如下 org.jsoup jsoup 1.13.1 c…

Jsoup爬虫并解析网页

Jsoup爬虫并解析网页 京东搜索 java,爬取有关java的商品信息 1、获取请求 String url"https://search.jd.com/Search?keywordjava";2、解析网页。(Jsoup返回的Document对象就是浏览器的Document对象) 所有js中操作Document对象的…

Jsoup爬虫入门实战

一、Jsoup介绍 jsoup 是一款基于 Java 的HTML解析器,它提供了一套非常省力的API,不但能直接解析某个URL地址、HTML文本内容,而且还能通过类似于DOM、CSS或者jQuery的方法来操作数据,所以 jsoup 也可以被当做爬虫工具使用。 相关…

Jsoup爬虫实例

一、简介 jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。(来源百度) 二、准备 首先你需要找到一个你…

使用Jsoup实现网络爬虫

一、什么是Jsoup? jsoup是一款Java的HTML解析器、可以通过URL获取DOM元素并解析,也可对HTML文本内容进行解析,jsoup提供了一套非常简单的方法,类似于CSS、JQuery的操作方法对元素或者是数据进行操作。 二、Jsoup的特点及作用 从…

Java学习笔记:爬虫-用Jsoup解析网页

什么是爬虫 1、爬虫:程序代替人的人工操作,自动获取网页内容,并且从其中提取出来有价值信息。 2、原始:调用Http的类向服务器发出请求,获得HTML,然后用正则表达式等去分析。缺点:难度高。 3、…

jsoup爬虫

文章目录 1、jsoup爬虫简单介绍2、相关代码2.1导入pom依赖2.2、图片爬取2.3、图片本地化 3、百度云链接爬虫 1、jsoup爬虫简单介绍 jsoup 是一款 Java 的HTML 解析器,可通过DOM,CSS选择器以及类似于JQuery的操作方法来提取和操作Html文档数据。 这两个…

解析卷积神经网络学习笔记——魏秀参

第二章 CNN基本部件 1.理解批处理和随机梯度下降: 训练模型时随机选取n个训练样本作为一个batch(批输入),那么经过设计好的卷积神经网络就可以输出n个预测值,对这n个预测值求其损失函数(注意损失函数绝不是…

【干货】卷积神经网络Alex-Net、VGG-Nets、Network-In-Network案例分析

目录 Alex-Net 网络模型 VGG-Nets 网络模型 Network-In-Network 本文将以 Alex-Net、VGG-Nets、Network-In-Network 为例,分析几类经典的卷积神经网络案例。 在此请读者注意,此处的分析比较并不是不同网络模型精度的“较量”,而是希望读者…

2018年国内十大技术突破:22纳米光刻机、大型航天器回收

https://www.toutiao.com/a6639830026990649860/ 2018-12-28 08:11:39 盘点这一年的核心技术:22纳米光刻机、450公斤人造蓝宝石、0.12毫米玻璃、大型航天器回收、盾构机“弃壳返回”、远距离虹膜识别……哪一个不夺人眼球! 1 智能水刀削铁断金 10月份的…

AI的螺旋式上升?今日头条AI掌门人马维英离职,“重返”清华从事培育科研工作

2020-07-29 01:22:49 作者 | 蒋宝尚 编辑 | 丛 末 据媒体报道,字节跳动副总裁、人工智能实验室主任马维英离职,将到清华大学智能产业研究院任职,加入正在筹备该产业院的原百度总裁张亚勤团队。 对于马维英离职一事,字节跳动也做…

超全深度学习细粒度图像分析:项目、综述、教程一网打尽

在本文中,来自旷视科技、南京大学和早稻田大学的研究者对基于深度学习的细粒度图像分析进行了综述,从细粒度图像识别、检索和生成三个方向展开论述。此外,他们还对该领域未来的发展方向进行了讨论。 (CV)是用机器来理解…

机器学习防止模型过拟合的方法知识汇总

目录 LP范数L1范数L2范数L1范数和L2范数的区别DropoutBatch Normalization归一化、标准化 & 正则化Reference 其实正则化的本质很简单,就是对某一问题加以先验的限制或约束以达到某种特定目的的一种手段或操作。在算法中使用正则化的目的是防止模型出现过拟合。…