数字图像处理 |
您所在的位置:网站首页 › 怎么看照片是jpg还是jpeg › 数字图像处理 |
细说数据的大小端
图像的大小端或者说数据的大小端就是我们常说的Big-endian与Little-endian, 当你要用一个看图软件去打开一个raw格式的图像时,他除了让你输入图像的基本信息以外,还会让你选择该图是Big-endian还是Little-endian?例如,下图展示的是我用看图软件ImageJ来打开一个raw图时的操作界面。 一般情况下,当我们按照unsigned short(即,WORD)或者说是按照一个字来保存图像的数据时,一般会有两个选择: 1,区分数据的Bit Order也就是High bit和Low bit。 2,区分数据的Byte Order, 即,Little-endian和Big-endian 其实,图像的大小端指的就是保存图片时,图像数据格式中的Byte order。一般情况下raw格式默认的是Big-endian(也就是自然的,正常的,保存数据的格式),如果你的图像是Little-endian,就需要把byte order反转过来。 首先,我们先来简答的了解一下,字节byte和bit比特概念。 假定我定义某个系统的一个字长为16bit,那么对于这个系统而言,我们可以有如下表述: 1,1byte=8bit 2,1word=2byte=16bit Big-endian就是说按照正常顺序保存数据 比如说我们把数4080存在一个字中: 首先,log(4080)/log(2)向2的整数次幂取整得到12。说明我们在二进制模式下要保存这个数需要12位,也就是12bit。这样一来就会有16-12=4个空位。而正常的保存方式是,从零开始往大写,大于最高位的地方空下来,如下: 如果用Little-endian来保存则需要翻转byte order 可见,经过交换左右byte中的数据后(注意,只交换byte而不改变byte中的内容),原来的4080变成了61455,但这不是我们想要的原始数据,如果要读little-endian保存的数据就需要解码。 解码Little-endian如果你手头有一个以Little-endian的方式保存的图片,你该怎么读呢?reverse byte order。我这里分别记录了如何从理论上反转byte order,以及在计算机上反转byte order的详细算法。 反转byte order的原理 我在下图的笔记里,记录了如果反转byte order的过程,也就是怎样把Little-Endian变成Big-Endian。 其中,笔记中的第一步和第二部,分别记载了如果取出数据的低八位和高八位。第三步,记录了如何把little-endian的数据变成big-endian的数据,也就是如果解密Little-Endian。 反转byte order的详细算法 (C语言) (8位表示一个byte)
(全文完) 作者 --- 松下J27 (*配图与本文无关*) 版权声明:所有的笔记,可能来自很多不同的网站和说明,在此没法一一列出,如有侵权,请告知,立即删除。欢迎大家转载,但是,如果有人引用或者COPY我的文章,必须在你的文章中注明你所使用的图片或者文字来自于我的文章,否则,侵权必究。 ----松下J27 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |