Bitmap位图数据排列方式

读取dicom

C# 使用fo-dicom操作dicom文件-CSDN博客

 

创建位图

通过读取dicom得到像素内存,本例单指彩色图像。

Bitmap dataBmp = new Bitmap(imageWidth, imageHeight, stride, PixelFormat.Format24bppRgb, dstBmp);

当像素的内存按照RGB的排列模式时,颜色不对;

但是转换像素格式为BGR的排列模式时,颜色正确。经过查询Bitmap位图数据显示方式知道了原因。记录一下

 

Bitmap位图数据

该域的大小取决于压缩方法及图像的尺寸和图像的位深度,它包含所有的位图数据字节,这些数据可能是彩色调色板的索引号, 也可能是实际的RGB值,这将根据图像信息头中的位深度值来决定。

如果是8位色图,则每个像素用1个字节表示,取出每个字节,显示到相应的设备上就可以了。

如果是24位色图,则按照BGR的顺序排列,32位色图按照BGRAlpha排列。
 

  • 对于8位色图,每个像素确实只用1个字节表示,这个字节代表的是一个索引值,这个索引值指向一个调色板,调色板中存储了实际的颜色值。所以,显示这些像素时,需要根据索引查找调色板中的颜色信息,而不是直接显示字节值。

  • 对于24位色图,每个像素由3个字节组成,代表红、绿、蓝三个颜色通道的信息。传统上在计算机内存和文件存储中,这通常遵循BGR顺序,尤其是当涉及到一些特定的库(如OpenCV)处理图像时。但是,从概念上讲,人们常说的“24位色”是指RGB信息,只是在具体实现时可能按BGR排列。

  • 对于32位色图(通常指的是带有透明度通道的图像),每个像素由4个字节组成,这些字节按照BGRAlpha顺序排列,分别代表蓝色、绿色、红色的颜色分量以及一个Alpha透明度分量。Alpha通道用于表示像素的透明度,值范围通常是0(完全透明)到255(完全不透明)。

   

注意:

位图数据排列还有一个规则,就是对齐。Windows默认的扫描的最小单位是4字节,如果数据对齐满足这个值的话对于数据的获取速度等都是有很大的增益的。因此,BMP图像顺应了这个要求,要求每行的数据的长度必须是4的倍数,如果不够需要进行比特填充(以0填充),这样可以达到按行的快速存取。这样的话,位图数据的大小就不一定是宽x高x每像素字节数了,因为每行还可能有0填充。填充后的每行数据如下:

BPP :每像素的比特数(Bits Per Pixel)

对于上图 BPP=24,Width=256。为32的倍数,所以没有填充。但是54个字节的文件头应该填充为56。

                

参照链接

关于BMP文件格式的详解_bmp是hex文件吗-CSDN博客

大语言模型

 

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

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

相关文章

深入解析:npm cache clean --force命令的威力与智慧

深入解析:npm cache clean --force命令的威力与智慧 在JavaScript开发的世界中,npm作为Node.js的包管理器,扮演着至关重要的角色。然而,随着项目的不断迭代和依赖的增多,npm的缓存可能会变得混乱,甚至引发…

【人生感悟】记录一些过来人的感悟

不管前方的路有多苦,只要走的方向正确,不管多么崎岖不平,都比站在原地更接近幸福。我只能送你到这里,剩下的路你要自己走,不要回头。你不能等待别人来安排你的人生,自己想要的,自己争取。生命可…

08 - matlab m_map地学绘图工具基础函数 - 绘制线、图例、添加文字注释等函数

08 - matlab m_map地学绘图工具基础函数 - 绘制线、图例、添加文字注释等函数 0. 引言1. 关于m_line2. 关于m_quiver3. 关于m_text4. 关于m_plot5. 结语 0. 引言 本篇介绍下m_map中添加绘制基础线(m_line、m_plot)、绘制箭头(m_quiver&#x…

鸿蒙开发Ability Kit(程序框架服务):【ServiceAbility切换】 组件切换

ServiceAbility切换 FA模型中的ServiceAbility对应Stage模型中的ServiceExtensionAbility。Stage模型下的ServiceExtensionAbility为系统API,只有系统应用才可以创建。因此,FA模型的ServiceAbility的切换,对于系统应用和三方应用策略有所不同…

链路追踪详解(五):链路传播 Header 详解

链路追踪作为分布式系统中不可或缺的一部分,可以帮助开发和运维人员了解请求在系统中的流转链路,快速定位问题和识别性能瓶颈。而链路传播 Header 是实现跨服务调用链跟踪的关键机制,通过链路传播 Header,使得跟踪信息在不同服务间…

利用Python控制终端打印字体的颜色和格式

利用Python控制终端打印字体的颜色和格式—操作详解(ANSI转义序列) 一、问题描述二、ANSI转义序列三、具体代码和显示效果(看懂这段代码,以后可随心控制字体的打印格式) 欢迎学习交流! 邮箱: z……

驾驭Vim的扩展宇宙:插件管理器全攻略

驾驭Vim的扩展宇宙:插件管理器全攻略 在Vim的世界里,插件是扩展编辑器功能、提升开发效率的神器。Vim-plug和Vundle是两款流行的Vim插件管理器,它们使得安装、更新和管理插件变得前所未有的简单。本文将带你深入了解Vim插件管理器的使用&…

单片机+DS18B20温度控制程序仿真与原理图PCB文件 可设上下限

资料下载地址:单片机DS18B20温度控制程序仿真与原理图PCB文件 可设上下限 目录 1、项目介绍 2、实物图 ​3、电路原理图 ​4、仿真原理图 ​5、部分代码 1、项目介绍 基于51单片机温度控制,使用18b20来做温度传感器,四位共阳数码管显…

【消息队列】Kafka学习笔记

概述 定义 传统定义: 一个分布式的, 基于发布订阅模式的消息队列, 主要应用于大数据实时处理领域新定义: 开源的分布式事件流平台, 被用于数据管道/流分析/数据集成 消息队列的使用场景 传统消息队列的主要应用场景包括: 削峰: 解耦: 异步: 两种模式 点对点模式 发布/订…

【深度学习】python之人工智能应用篇——图像生成技术(一)

说明: 两篇文章根据应用场景代码示例区分,其他内容相同。 图像生成技术(一):包含游戏角色项目实例代码、图像编辑和修复任务的示例代码和图像分类的Python代码示例 图像生成技术(二)&#xff1a…

SaaS产品运营:维护四个不同类型的合作伙伴的实战指南

在SaaS(软件即服务)行业的竞争中,与合作伙伴建立并维护良好关系至关重要。不同类型的合作伙伴对于产品的推广、市场覆盖和用户增长都起着不同的作用。如何有效维护这四种类型合作伙伴?看个案例一起学习吧。 一、合作伙伴的四种类型…

golang time.Time 时间格式 format 布局字符 layout 整理

go语言中的时间格式字符串和我们常见的其他语言不太一样, 他的格式化字符串是一个时间,即2006-01-02 15:04:05 , 细心的你可能会发现,这个是一个很特别的时间, 他的每一段都是唯一的,这个特别的时间的格式和…

基于ChatMemory打造AI取名大师

当我们真正开发一款应用时,存储用户与大模型的历史对话是非常重要的,因为大模型需要利用到这些历史对话来理解用户最近一句话到底是什么意思。 比如你跟大模型说“换一个”,如果大模型不基于历史对话来分析,那么大模型根本就不知…

恭喜!Z医生喜提世界名校—斯坦福大学访问学者邀请函

➡️【院校简介】 斯坦福大学(Stanford University),全称为小利兰斯坦福大学,简称“斯坦福”,位于美国加州旧金山湾区南部帕罗奥多市境内,临近高科技园区硅谷,是私立研究型大学,全球…

HarmonyOS Next开发学习手册——内存管理(GC)

GC(全称 Garbage Collection),即垃圾回收。在计算机领域,GC就是找到内存中的垃圾,释放和回收内存空间。当前主流编程语言实现的GC算法主要分为两大类:引用计数和对象追踪(即Tracing GC&#xff…

threejs的学习(二)

上次我们说了如何搭建环境,并成功显示了一个静止的方块, 1.通过轨道控制器查看方块,同时添加坐标轴辅助器 main.js import * as THREE from "../assets/js/three.module"; import { OrbitControls } from "../../../three.j…

零拷贝技术(zero copy),DMA,mmap,sendfile

在一些高性能的IO场景下我们经常能听到零拷贝技术,这是个不错的话题。 零拷贝指的是内核态与用户态之间的数据拷贝,而这两个区域的数据拷贝只能依靠CPU,但是CPU最重要的作用应该是运算。 一、DMA的由来 在没有DMA之前,磁盘的IO…

全国211大学名单及排名

序号 名称 省份 985 211 双一流 1 北京大学 北京 是 是 是 2 清华大学 北京 是 是 是 3 复旦大学 上海 是 是 是 4 上海交通大学 上海 是 是 是 5 浙江大学 浙江 是 是 是 6 国防科技大学 湖南 是 是 是 7 中国人民大学 北京 是 …

Vue.js中的虚拟DOM

一.节点和状态 在我们平常对DOM操作的时候,之前在vue没有诞生之前,以命令式的方式对DOM进行操作,页面上的每一个元素都可以看做成一个节点状态。 二.剔除和渲染 框架都有自己渲染的方式,假设一个页面的状态,随着Ajax请求的放松,状态发生改变,有以下的两种方式供你选择&#…

C语言 do while循环练习 上

do while循环 do循环语句; while(表达式); 例: do while里的break do while里的continue 练习 1.计算n的阶乘 1*2*3*424 2.计算1!2!3!.......10! 3.在一个有序数组中查找具体的某个数字h&#x…