《数字图像处理基础》学习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.rhkb.cn/news/462648.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

golang的多表联合orm

项目截图 1.数据库连接配置 DbConfigUtil.go package configimport ( "fmt" _ "github.com/go-sql-driver/mysql" "gorm.io/driver/mysql" "gorm.io/gorm" "gorm.io/gorm/logger" "gorm.io/gorm/schema" )var Go…

Chromium 中chrome.topSites扩展接口定义c++

一、chrome.topSites 使用 chrome.topSites API 访问新标签页上显示的热门网站(即最常访问的网站)。不包括用户自定义的快捷方式。 权限 topSites 您必须声明“topSites”扩展程序清单中授予使用此 API 的权限。 {"name": "My exten…

在Zetero中调用腾讯云API的输入密钥的问题

也是使用了Translate插件了,但是需要调用腾讯云翻译,一直没成功。 第一步就是,按照这上面方法做:百度、阿里、腾讯、有道各平台翻译API申请教程 之后就是:Zotero PDF translat翻译:申请腾讯翻译接口 主要是…

2-137 基于matlab的sigmoid函数的变步长自适应语音信号增强

基于matlab的sigmoid函数的变步长自适应语音信号增强,与传统LMS相对比,比较不同的变步长函数去噪效果,并基于较好的去噪算法分析不同变步长中参数变化对降噪的影响。程序已调通,可直接运行。 下载源程序请点链接:2-13…

DNS服务部署

第一步:两个服务器恢复快照,预处理、安装软件、设置网卡信息 第二步:主服务端操作,编辑主配置文件设置监听IP。主服务端操作打开区域配置文件,添加如下内容,重点为:允许从服务器的同步请求&…

云效+mqtt实现本地构建和远程自动发版

之前写过一篇jenkinsmqtt实现本地构建和远程自动发版_jenkins远程调用和本地调用-CSDN博客 由于本地搭建jenkins实在太费机器了,这次改用云效搭建。不过云效并没有直接发送mqtt的方法,需要编写中转接口。 中转接口采用go-gin框架实现,代码如…

存储器与寄存器

​​​​​​存储器 存储器(Memory)是计算机中用于存储数据和程序的硬件设备。有了存储器计算机就具有记忆功能。 RAM 随机存取存储器(RAM, Random Access Memory) 是计算机系统中一种重要的内存类型,主要用于临时存储…

T10打卡—数据增强

​​​​​​​ 🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊 1.导入及查看数据 import matplotlib.pyplot as plt plt.rcParams[font.sans-serif][SimHei] plt.rcParams[axes.unicode_minus]False import…

wordpress ripro-v5-8.3开心版主题源码

wordpress 资源下载主题 ripro刚开始出来就风靡很久,这个也是类似子比的一个主题,下载全面,美化包也特别多,此版本为网友投稿开新版本,还是那句话,运营请支持正版授权,提供学习研究而已。 喜欢做…

wps宏代码学习

推荐学习视频:https://space.bilibili.com/363834767/channel/collectiondetail?sid1139008&spm_id_from333.788.0.0 打开宏编辑器和JS代码调试 工具-》开发工具-》WPS宏编辑器 左边是工程区,当打开多个excel时会有多个,要注意不要把…

微信小程序的上拉刷新与下拉刷新

效果图如下&#xff1a; 上拉刷新 与 下拉刷新 代码如下&#xff1a; joked.wxml <scroll-view class"scroll" scroll-y refresher-enabled refresher-default-style"white" bindrefresherrefresh"onRefresh" refresher-triggered&qu…

python之函数总结

函数 对于函数的学习&#xff0c;我整理了网上的一些资料&#xff0c;希望可以帮助到各位&#xff01;&#xff01;&#xff01; 世界级的编程大师Martin Fowler先生曾经说过&#xff1a;“代码有很多种坏味道&#xff0c;重复是最坏的一种&#xff01;”。 为什么使用函数 问题…

Mybatis学习笔记(二)

八、多表联合查询 (一) 多表联合查询概述 在开发过程中单表查询不能满足项目需求分析功能&#xff0c;对于复杂业务来讲&#xff0c;关联的表有几张&#xff0c;甚至几十张并且表与表之间的关系相当复杂。为了能够实业复杂功能业务&#xff0c;就必须进行多表查询&#xff0c…

从0开始的STM32之旅 7 串口通信(I)

现在&#xff0c;我们终于可以做一些有趣的事情了&#xff1a;那就是来一点串口通信了。串口通信在一定程度上可以辅助我们程序的调试&#xff0c;传递信息&#xff0c;以及做其他令人激动的事情。下面我们就来看看如何开始我们的串口通信之旅。 关于数据通信 通信就是在传递…

医院绩效考核管理系统源码,医院如何构建绩效考核体系?

医院绩效考核管理系统作为现代医院管理的重要组成部分&#xff0c;其核心功能旨在提高医院运营效率、优化资源配置、确保医疗服务质量&#xff0c;以及增强医院竞争力。 业务科室绩效考核体系的构建 临床医疗与医技科室绩效考核的设置 临床医疗的绩效考核采用百分制&#xff…

使用DexClassLoader类动态加载插件dex

DexClassLoader类的源码 package dalvik.system;public class DexClassLoader extends BaseDexClassLoader {public DexClassLoader(String dexPath, String optimizedDirectory,String librarySearchPath, ClassLoader parent) {super(dexPath, null, librarySearchPath, par…

国产服务器部署1.获取银河麒麟V10服务器。首先挂gpt数据盘

要做系统国产化&#xff0c;现记录国产化的全过程&#xff1a;银河麒麟V10采用ARM架构&#xff0c;基于Ubuntu 18.04 LTS版本的Linux操作系统。‌‌ #uname -r 看系统是x86还是arm 1.获取银河麒麟V10服务器。首先挂数据盘。 1&#xff09;#lsblk -f vdb为数据盘。需要格式…

Excel:vba实现插入图片

实现的效果&#xff1a; 实现的代码&#xff1a; Sub InsertImageNamesAndPictures()Dim PicPath As StringDim PicName As StringDim PicFullPath As StringDim RowNum As IntegerDim Pic As ObjectDim Name As String 防止表格里面有脏数据Cells.Clear 遍历工作表中的每个图…

性能测试需求分析详解

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、客户方提出 客户方能提出明确的性能需求&#xff0c;说明对方很重视性能测试&#xff0c;这样的企业一般是金融、电信、银行、医疗器械等&#xff1b;他们一…