【深度学习】RGB图像的内存排列方式及HWC和CHW格式解析

这篇具有很好参考价值的文章主要介绍了【深度学习】RGB图像的内存排列方式及HWC和CHW格式解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

摘要

RGB图像是计算机视觉和图像处理领域中最为常见的图像格式之一,而在进行图像处理和深度学习计算时,通常需要对图像的尺寸和通道数进行规范化。本文将对RGB图像的内存排列方式、HWC和CHW格式进行详细解析,并探讨它们之间的关系。

一、RGB图像的内存排列方式

在计算机内存中,RGB图像的像素信息通常是按照BGR的顺序排列的,而不是RGB的顺序。这是因为在Windows平台上,像素数据是按照BGR的顺序存储在内存中的,而不是RGB的顺序。因此,当OpenCV读取一张RGB图像时,它会将像素数据按照BGR的顺序排列在内存中,而不是RGB的顺序。
例如,对于一张3×3的RGB图像,其像素信息在内存中的排列方式如下所示:
B G R B G R B G R
可知,每一个像素点都由三个值组成,分别表示该像素点在蓝色、绿色和红色通道中的颜色值,而整张图像的像素数据则按照BGR的顺序排列。
一般pytorch中的tensor,即网络的输入,要转换为plane的格式,即rrrgggbbb。

二、HWC格式和CHW格式

在机器学习和计算机视觉领域中,常用的图像尺寸表示格式有HWC和CHW两种格式。其中,H、W、C分别表示图像的高度、宽度和通道数,或者通道数、高度和宽度。

HWC格式

HWC格式是指按照高度、宽度和通道数的顺序排列图像尺寸的格式。例如,一张形状为256×256×3的RGB图像,在HWC格式中表示为[256, 256, 3]。在一些图像处理库或者底层框架中,例如OpenCV和TensorFlow,通常使用HWC格式表示图像尺寸。

在OpenCV中,读取的图片默认是HWC格式,即按照高度、宽度和通道数的顺序排列图像尺寸的格式。例如,一张形状为256×256×3的RGB图像,在OpenCV中读取后的格式为[256, 256, 3],其中最后一个维度表示图像的通道数。在OpenCV中,可以通过cv2.imread()函数读取图片,该函数的返回值是一个NumPy数组,表示读取的图像像素值。需要注意的是,OpenCV读取的图像像素值是按照BGR顺序排列的,而不是RGB顺序。因此,如果需要将OpenCV读取的图像转换为RGB顺序,可以使用cv2.cvtColor()函数进行转换。

CHW格式

CHW格式是指按照通道数、高度和宽度的顺序排列图像尺寸的格式。例如,一张形状为3×256×256的RGB图像,在CHW格式中表示为[3, 256, 256]。在计算机视觉和深度学习中,通常使用CHW格式表示图像尺寸。
在PyTorch中,模型接收的RGB图像通常采用CHW格式,即按照通道数、高度和宽度的顺序排列像素信息的方式。在CHW格式中,每个像素点的RGB值依次排列在内存中,通道数是第一维,高度是第二维,宽度是第三维。因此,对于一个形状为[C, H, W]的RGB图像,C表示通道数,通常为3,H表示高度,W表示宽度。对于每个像素点,其RGB值依次存储在内存中相邻的位置上。具体来说,假设某个像素点的坐标为(i, j),其在内存中的存储位置可以表示为:

offset = i * W * C + j * C

其中,i表示该像素点在第二维中的位置,j表示该像素点在第三维中的位置,C表示通道数,W表示宽度。这个公式可以计算出该像素点在内存中的偏移量,从而可以访问该像素点的RGB值。需要注意的是,在PyTorch中,RGB图像的像素值通常采用浮点数的形式表示,并且像素值的范围通常是[0, 1]或[-1, 1]。

三、HWC和CHW格式的关系

HWC格式和CHW格式虽然表示方式不同,但它们可以互相转换。对于一张形状为[H, W, C]的图像,我们可以使用transpose函数将其转换为形状为[C, H, W]的图像,即CHW格式。转换方法如下:

import numpy as np
# 创建一个形状为[256, 256, 3]的随机图像
img = np.random.rand(256, 256, 3)
# 将HWC格式的图像转换为CHW格式
img_chw = np.transpose(img, (2, 0, 1))

另外,对于一些深度学习框架,如PyTorch和Caffe2等,通常要求输入的图像张量格式为CHW格式。因此,在使用这些框架进行图像处理时,需要将图像张量从HWC格式转换为CHW格式。

总结

本文对RGB图像的内存排列方式、HWC和CHW格式进行了详细解析,并探讨了它们之间的关系。在进行图像处理和深度学习计算时,需要对图像的尺寸和通道数进行规范化,以便于不同框架和库之间进行数据格式转换和模型输入。文章来源地址https://www.toymoban.com/news/detail-619261.html

到了这里,关于【深度学习】RGB图像的内存排列方式及HWC和CHW格式解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++ 使用opencv加载并显示RGB图像和深度图像

    rgb图像是一般的彩色图像格式,深度图像是存储在xml文件中,c++读取代码如下: 当然,需要安装并配置opencv,配置opencv细节可参考其他博客 效果如下: 若opencv加载深度数据集失败,就请参考这篇博客,这是作者在加载深度数据时失败所写解决方法:https://mp.csdn.net/mp_blog/cr

    2024年02月12日
    浏览(32)
  • 将一张RGB图像转换为BGR格式可以通过以下步骤实现

    读取图像:使用图像处理库(如OpenCV)读取一张RGB格式的图像,并将其存储为NumPy数组。 转换通道顺序:使用np.transpose函数将图像数组的通道顺序从RGB转换为BGR。 在这里,np.transpose函数的第一个参数是图像数组,第二个参数是元组,表示要交换的维度顺序。由于RGB格式的图像

    2024年02月11日
    浏览(69)
  • Pybullet获取RGB图像和深度图像构建点云(Open3D)

      最近正在做点云分割相关的课题,数据集采集有点麻烦,想通过Pybullet先制作一批仿真合成数据集出来。虽然思路挺清晰,由RGB-D图像生成点云,但是中间有很多地方会卡住,所以写篇blog记录一下。   图像的拍摄挺简单的,直接用Pybullet现成的函数就可以获取RGB图像和

    2024年01月16日
    浏览(52)
  • 视频图像的两种表示方式YUV与RGB(4)

    本篇主要讲YUV与RGB之间的转换,包括YUV444 颜色编码格式 转为 RGB 格式 ,RGB颜色编码格式转为 YUV444 格式。 一、 YUV与RGB之间的转换 YUV与RGB颜色格式之间进行转换时 , 涉及一系列的数学运算 ; YUV 颜色编码格式转为RGB格式的转换公式 取决于 于 YUV 的具体子采样格式 : YUV444 YUV42

    2024年04月11日
    浏览(39)
  • 3D视觉专用名词概念解释,深度图、点云图、IR图、RGB图像

    🌞欢迎来到深度学习的世界  🌈博客主页:卿云阁 💌欢迎关注🎉点赞👍收藏⭐️留言📝 🌟本文由卿云阁原创! 🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢! 1. 深度图 深度图中的单个像素值是空间中物体的某个点到垂直于左红外镜头光轴并通过镜头光

    2024年01月20日
    浏览(48)
  • “Python OpenCV 图像格式转换:RGB与BGR互转“——使用OpenCV库进行图像处理的过程中,经常需要进行不同格式之间的转换。其中最为常见的就是R...

    “Python OpenCV 图像格式转换:RGB与BGR互转”——使用OpenCV库进行图像处理的过程中,经常需要进行不同格式之间的转换。其中最为常见的就是RGB和BGR格式之间的转换。本文将详细介绍如何使用opencv-python库将图像从RGB格式转换为BGR格式以及从BGR格式转换为RGB格式。 要实现图像格

    2024年02月12日
    浏览(80)
  • 一文看懂图像格式 RAW、RGB、YUV、Packed/Unpacked、Bayer、MIPI、Planar、Semi-Planar、Interleaved

    目录 一、通用属性 1. Packed/Unpacked 2. 压缩/非压缩 二、RAW 1. Bayer格式 2. 分类 3. MIPI RAW 三、RGB 分类 四、YUV 1. YUV与RGB转换 2. 分类 3. 内存计算 五、压缩格式 有的人,错过了,一生再也找寻不到。 本文详细分析各种图像格式(RAW、RGB、YUV)的分类、内存分布。一篇文章让你看懂

    2024年02月06日
    浏览(38)
  • 第四十八章 解读RGB颜色机制,在图像处理中像素值越大意味着什么,OpenCV为什么使用 BGR 颜色格式

    RGB三原色起源于上世纪初1809年Thomas Young提出视觉的三原色学说,随后Helmholtz在1824年也提出了三原色学说:即:视网膜存在三种视锥细胞,分别含有对红、绿、蓝三种光线敏感的视色素,当一定波长的光线作用于视网膜时,以一定的比例使三种视锥细胞分别产生不同程度的兴

    2024年01月21日
    浏览(61)
  • 机器学习图像特征提取—颜色(RGB、HSV、Lab)特征提取并绘制直方图

    目录 1 颜色特征 1.1 RGB色彩空间 1.2 HSV色彩空间 1.3 Lab色彩空间 2 使用opencv-python对图像颜色特征提取并绘制直方图 2.1 RGB颜色特征和直方图 2.2 HSV颜色特征和直方图 2.3 Lab颜色特征和直方图 RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以

    2024年02月08日
    浏览(57)
  • C++ 使用 GDI+ 实现格式为bmp的图像内存转为jpg格式,并且可以实现旋转保存

    将获取的bmp内存数据,经过转换成jpg格式,根据自己的需求可以对图像先做旋转,再进行保存,主要用到的是GDI+工具。 函数的说明 /// /获取的图像内存数据 /// /图像的像素位数 /// /图像的宽度 /// /图像的高度 /// /图像保存的路径 /// /图像保存的路径加图像名称 ///

    2024年02月16日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包