《数字图像处理基础》学习05-数字图像的灰度直方图

目录

一,数字图像的数值描述 

1,二值图像

2,灰度图像

3,彩色图像

二,数字图像的灰度直方图


 

一,数字图像的数值描述 

在之前的学习中,我知道了图像都是二维信息,可写成二维函数 f(i,j) , i,j 是空间坐标。

像素值(或称强度,或 灰度):幅值  f(i,j) 。

经过之前的采样和量化之后,图像的坐标  i,j 和幅值  f(i,j)  均为有限, 离散的数值。

因为矩阵是二维结构的数据,同时量化值取整数(使用round函数取整), 因此,一副数字图像可

以用一个整数矩阵来表示。矩阵的元素位置  i,j   ,就对应于数字图像上一个像素点的位置矩阵

元素的值
 f(i,j)  即为对应像素点的像素值

值得注意的是,虽然矩阵是二维结构的数据,可以用来描述图像,但是矩阵中元素 f(i,j) 的坐标含义为:

  • i :行坐标。
  • j: 列坐标。
  • 矩阵坐标系

在学习数字信号处理的时候,一般将数字图像坐标系定义为矩阵坐标系,即用矩阵坐标系来对像素

进行分析和处理。

在不同的场景中,数字图像一般可以大致分为二值图像,灰度图像,彩色图像三类。

接下来分别学习它们的相关概念及数值描述 。

1,二值图像

每个像素非黑即白,其灰度值没有中间过渡的图像,就是二值图像。适合于文字信息图像的描述。

虽然,二值图像对画面的细节信息描述的比较粗略,但是对于一副一般的场景图像,从画面上就已

经完全可以理解其基本内容。如下图:

 二值图像的矩阵取值只有两种,具有数据量小的优点: 

  1. 黑: f(i,j)=0
  2. 白: f(i,j)=1

 现在显示该二值图像矩阵的局部块一部分,就可以直观的看到元素值只有0和1这两种取值:

二值图像已经是离散的,不需要进行量化处理。每个像素的值直接代表了它的状态(黑或白)。 

2,灰度图像

灰度图像是指每个像素的信息由一个量化后的灰度级来描述的数字图像。不包含彩色信息。其中:

  1. 灰度级:图像中可用的不同灰度值的数量。例如,在 8 位灰度图像中,灰度级的范围是从 0

    到 255,总共有 256 个灰度级。虽然灰度级的概念看起来和之前学习的量化级别很像,但灰

    度级是量化结果的一种表现,而量化级别是描述离散化过程的术语。

标准灰度图像中每个像素的灰度由一个字节表示(一个字节8位),灰度级数为 2^{8}=256 级,每个像素可以是从0~255(黑到白)之间的任何一个值。在后面的学习中,默认灰度图像的灰度级数均为 256。如下,是一张灰度图像,并选取该图像矩阵中的局部快的矩阵信息:

3,彩色图像

彩色图像根据三原色成像原理来实现对自然界中的彩色描述。三原色成像原理认为,自然界中的所有颜色都可以由红绿蓝(RGB)三原色组合而成。如果三种基色的灰度分别用一个字节(8bit)表示,则三原色之间不同灰度组合可以形成不同的颜色。如下图,是彩色插图的三原色通道分量图。可以看到,左边红色分量图的灰度值最大,所以彩色图像的画面呈暖色调。

oim = imread('lena_color_256.tif'); oim = im2double(oim);
rc= oim(:, :, 1);
gc= oim(:, :, 2);
bc = oim(:, :, 3);figure;
subplot(2, 2, 1);
imshow(oim);
title('原图像');subplot(2, 2, 2);
imshow(rc);
title('红色分量图');subplot(2, 2, 3);
imshow(gc);
title('绿色分量图');subplot(2, 2, 4);
imshow(bc);
title('蓝色分量图');

 其中:

  1. 使用 im2double 函数可以将图像转换为双精度类型,以确保后续计算的准确性。
  2.  oim(:, :, x);通过索引访问图像矩阵的第三维度来提取红色、绿色和蓝色通道。

    例如,红色:x=1,绿色:x=2,蓝色:x=3。

二,数字图像的灰度直方图

灰度直方图用于表示图像中各个灰度级别(从黑到白)的像素数量。灰度直方图可以帮助我们分析和理解图像的亮度分布、对比度以及图像的整体特征。其中:

  1. 灰度级: 在灰度图像中,每个像素的值表示其亮度,通常范围从 0(黑色)到 255(白色),对于 8 位图像而言。这个范围可以根据图像的位深度而变化,例如 16 位图像的灰度级范围是 0 到 65535。
  2. 直方图: 灰度直方图是一个柱状图,其中横轴表示灰度级,纵轴表示对应灰度级的像素数量。每个柱子的高度表示图像中该灰度级的像素数。直方图可以用来分析图像的对比度、亮度和动态范围。例如,直方图集中在左侧表示图像偏暗,集中在右侧表示图像偏亮。

给出一道题。

设某个图像如下,请计算该图像的灰度直方图
f=\begin{bmatrix} 100 &67 &34 &100 \\ 67& 67 & 34 & 100\\ 67& 56 & 211 & 67\\ 100& 100& 211&100 \end{bmatrix}

灰度级 34: 2个
灰度级 56: 1 个
灰度级 67: 5 个
灰度级 100: 6 个
灰度级 211: 2 个

使用二维坐标系绘制的灰度直方图如下:

使用matlab绘制灰度直方图会更加方便,如下,获取一张彩色图像并绘制其灰度直方图:

第一步,读取图像:
gim= imread('lena_color_256.tif'); 
因为灰度直方图专用于灰度图像并用来显示灰度级的分布,所以,如果是彩色图像(可以用size函数获取图像的颜色通道数,颜色通道数为3,就是彩色图像),使用rgb2gray函数将彩色图像转换成灰度图像。
if size(gim, 3) == 3
    gim= rgb2gray(gim);
end

第二步,使用unique函数获取灰度图像的唯一灰度值,并使用histcounts函数统计每个灰度值的像素数量:
grv= unique(gim); 
pic= histcounts(gim, 0:256); 

第三步,使用plot函数绘制二维图形,由于在 matlab中,数组索引是从 1 开始的,而标准8位灰度图像的灰度值范围是从 0 到 255,因此,在绘制纵坐标的像素数量时,需要将灰度值grv进行加1操作。
为了方便查看,可以使用grid on语句,添加网格线(也可以不添加)。

代码如下👇:

gim= imread('lena_color_256.tif'); 
if size(gim, 3) == 3gim= rgb2gray(gim);
endgrv= unique(gim); 
pic= histcounts(gim, 0:256); figure;
plot(grv, pic(grv+ 1), 'LineWidth', 2);  
xlabel('灰度值');
ylabel('像素个数');
title('灰度直方图');
grid on;

有问题请在评论区留言或者是私信我,回复时间不超过一天。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1824.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

书生大模型第四期 | L0G3000 git 基础知识

1、破冰行动 fork项目 PR链接:跳转访问 https://github.com/InternLM/Tutorial/pull/21632、构建个人项目 创建一个仓库保存LLM学习的笔记,以md文件为主 博客页面项目

使用 OpenTelemetry 定制跨度名称并丰富跨度而无需更改代码 - 第 1 部分

作者:来自 Elastic David Hope OpenTelemetry Collector 提供强大的功能,可以在遥测数据到达可观察性工具之前丰富和细化遥测数据。在这篇博文中,我们将探讨如何利用 Collector 在 Elastic Observability 中创建更有意义的 transaction 名称&…

成都睿明智科技有限公司正规吗靠谱吗?

在这个短视频风起云涌的时代,抖音电商以其独特的魅力,成为了无数商家竞相追逐的新蓝海。而在这片浩瀚的商海中,成都睿明智科技有限公司犹如一艘装备精良的航船,引领着众多企业破浪前行,探索抖音电商的无限可能。今天&a…

GHuNeRF: Generalizable Human NeRF from a Monocular Video

研究背景 研究问题:这篇文章要解决的问题是学习一个从单目视频中泛化的人类NeRF模型。尽管现有的泛化人类NeRF已经取得了令人印象深刻的成果,但它们需要多视图图像或视频,这在某些情况下可能不可用。此外,一些基于单目视频的人类…

中聚企服:打造智能企业服务助手,“中聚AI”解答一切企业难题

近日,一款专为企业用户设计的智能问答助手——“中聚AI”正式亮相市场。这款AI由中产聚融有限公司旗下的中聚企服团队自主研发,旨在帮助企业用户快速、高效地解答经营过程中的各种难题,覆盖从公司注册、财税规划到知识产权和资质办理等多领域…

手把手教你轻松掌握~Air780E软件UDP应用示例!快来看!

还不会的小伙伴看过来!通过本文的介绍,相信大家已经掌握了Air780E模组UDP应用的基本操作和常见问题的解决方法。赶快动手实践吧,让你的项目更加高效稳定! 1、UDP概述 UDP(用户数据报协议,UserDatagramProt…

Win10搭建SFTP服务器

1、下载安装 Release v9.5.0.0p1-Beta PowerShell/Win32-OpenSSH GitHub 下载OpenSSH-Win64.zip 解压之后放入到:C:\Program Files (x86)\OpenSSH-Win64以管理员身份打开CMD进入到 C:\Program Files (x86)\OpenSSH-Win64 文件夹执行命令 powershell.exe -Exec…

1分钟解决Excel打开CSV文件出现乱码问题

一、编码问题 1、不同编码格式 CSV 文件有多种编码格式,如 UTF - 8、UTF - 16、ANSI 等。如果 CSV 文件是 UTF - 8 编码,而 Excel 默认使用的是 ANSI 编码打开,就可能出现乱码。例如,许多从网络应用程序或非 Windows 系统生成的 …

构建灵活、高效的HTTP/1.1应用:探索h11库

文章目录 构建灵活、高效的HTTP/1.1应用:探索h11库背景这个库是什么?如何安装这个库?库函数使用方法使用场景常见的Bug及解决方案总结 构建灵活、高效的HTTP/1.1应用:探索h11库 背景 在现代网络应用中,HTTP协议是基础…

【算法】C++深度优先搜索(DFS)全解析

📢博客主页:https://blog.csdn.net/2301_779549673 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 JohnKi 原创,首发于 CSDN🙉 📢未来很长&#…

汽车免拆诊断案例 | 2010款起亚赛拉图车发动机转速表指针不动

故障现象  一辆2010款起亚赛拉图车,搭载G4ED 发动机,累计行驶里程约为17.2万km。车主反映,车辆行驶正常,但组合仪表上的发动机转速表指针始终不动。 故障诊断  接车后进行路试,车速表、燃油存量表及发动机冷却温度…

【环境搭建】Apache ZooKeeper 3.8.4 Stable

软件环境 Ubuntu 20.04 、OpenJDK 11 OpenJDK 11(如果已经安装,可以跳过这一步) 安装OpenJDK 11: $ sudo apt-get update$ sudo apt-get install -y openjdk-11-jdk 设置 JAVA_HOME 环境变量: $ sudo gedit ~/.bash…

solid works下载

软件安装包下载解压打开 将软件安装包下载到电脑本地,使用解压工具进行解压打开(下载解压安装全程关闭杀毒软件及防火墙) 打开Crack文件夹 打开Crack文件夹进去 复制SolidWorks_Flexnet_Server文件夹 复制SolidWorks_Flexnet_Server文件夹到…

硅谷甄选(10)用户管理

用户管理模块 9.1 静态搭建 主要是el-form、el-pagination <template><el-card style"height: 80px"><el-form :inline"true" class"form"><el-form-item label"用户名:"><el-input placeholder"请…

C语言-详细讲解-打印各种三角形矩阵

目录 1.字符三角形 2. 直角三角形&#xff08;1&#xff09; 3.直角三角形&#xff08;2&#xff09; 4. 打印乘法口诀表 1.字符三角形 入门级&#xff0c;熟悉输入与输出 #include<stdio.h> int main() {char i;scanf("%c",&i);printf(" %c…

图像的特征类别

一 图像的特征类别 1.自然特征 ①光谱特征 ②几何特征 ③时相特征 2.人工特征 ①直方图特征 ②灰度边缘特征 ③线、角点、纹理特征 图像的特征有很多&#xff0c;按提取特征的范围大小又可分为&#xff1a; ①点特征 仅由各个像素就能决定的性质。如单色图像中的灰度值、彩色…

MYSQL--完整性约束

目录 约束 设置约束 方式一 推荐&#xff1a;方式二 删除约束 主键约束 自增列 组合主键, 联合主键 外键约束 给表添加外键约束 注意: 约束 概念&#xff1a;约束是作用于表中字段上的规则&#xff0c;用于限制存储在表中的数据。 目的&#xff1a;保证数据库中数据的正…

线程池面试点

为什么使用线程池&#xff1f;线程池的作用是什么&#xff1f;线程池的执行顺序&#xff1f;线程池的入参是哪些&#xff1f;分别代表什么意思&#xff1f; 频繁的创建线程与销毁线程,资源耗费与上下文切换时间开销非常大,而线程池可以避免这种情况. 入参有核心线程数,最大线…

IDEA安装(AI)MarsCode插件

1. 注册MarsCode点击注册MarsCode账号 2. 安装MarsCode 第一步: 打开IDEA设置页面, File -> Settings… 第二步: 在左侧导航栏中选择 “Plugins”, 在 “Marketplace” 中搜索"mars", 如图, 点击 “Installed” 第三步: 插件安装完成后, 重启IDEA. 点击右侧导航栏…

软考高项比中项在难度上高多少?

论文这一科难倒了70%的考生&#xff0c;再加上30%的项目管理技能运用知识&#xff0c;使得考生们感到困难重重。题主提到的高额培训费主要是因为论文这一科目的难度较大。虽然直接考取高级资格是理想状态&#xff0c;但有些人可能无法一次成功&#xff0c;因此可以先考取中级资…