图片格式总结

在这里插入图片描述

图像格式总结

RAW

raw数据是sensor输出的原始数据,一般有raw8, raw10, raw12等,分别表示一个像素点有8bit、10bit、12bit数据。是sensor将光信号转化为电信号时的电平高低的原始记录,单纯地没有进行任何处理的图像数据,即摄像元件直接得到的电信号进行数字化处理而得到的。raw数据在输出的时候是有一定顺序的,主要有四种: GRBG、RGGB、BGGR、GBRG,如下图为BGGR格式:
在这里插入图片描述

Camera成像中的Demosaic

RGB

RGB格式:即每一个像素由三原色R红色、G绿色、B蓝色组成。通过三种颜色的混合,基本就能够混合出人类视力所能感受到的所有颜色。

RGB常见的的几种格式和描述:

RGB565 每个像素用16位表示,RGB分量各使用5位、6位、5位;

RGB555 每个像素用16位表示,RGB分量都使用5位(剩下1位不用);

RGB24 每个像素用24位表示,RGB分量各使用8位;

RGB32 每个像素用32位表示,RGB分量各使用8位(剩下8位不用);

ARGB32 每个像素用32位表示,RGB分量各使用8位(剩下的8位用于表示Alpha(透明度)通道值);

bmp

  • bmp有54字节的头文件:bmp file header14字节+bitmap information40字节

[筆記] BMP點陣圖格式說明,附實例圖解
C++将YUV文件转换为BMP格式的图片
BMP格式详解
bmp 头格式说明

png

ppm

其中P6表示用二进制来表示数据;\n表示换行符;width和height表示图像的宽高,用空格隔开;255表示每个颜色分量的最大值;rgb数据从上到下,从左到右排放。

图象数据以字节格式存储,每个色彩成分(r,g,b)一个字节。0表示黑色,255表示白色。色彩成分按照通常的红-绿-蓝顺序存储。

ppm格式图片可用 IrfanView 软件打开:

PPM格式其实就是RGB数据加上一个简单的文件头, 文件头部表示了图像的宽度和高度以及最大的RGB值。

文件头+rgb数据:

P6\n
width height\n
255\n
rgbrgb…

  • Header: ppm有header,但是header的长度不固定

PPM(Portable Pixmap Format)还有两位兄长,大哥名叫「PBM」,二哥人称「PGM」,他们三兄弟各有所长:

PBM 是位图(bitmap),仅有黑与白,没有灰
PGM 是灰度图(grayscale)
PPM 是通过RGB三种颜色显现的图像(pixmaps)

每个图像文件的开头都通过2个字节「magic number」来表明文件格式的类型(PBM, PGM, PPM),以及编码方式(ASCII 或 Binary),magic number分别为P1、P2、P3、P4、P5、P。
Magic Number Type Encoding
P1 Bitmap ASCII
P2 Graymap ASCII
P3 Pixmap ASCII
P4 Bitmap Binary
P5 Graymap Binary
P6 Pixmap Binary

PPM格式解析
PPM文件格式详解

heic

YUV

是被欧洲电视系统所采用的一种颜色编码方法。其中“Y”表示明亮度(Luma),就是灰阶值,而“U”和“V”表示色度(Chroma)。

与我们熟知的RGB类似,YUV也是一种颜色编码方法;主要用于电视系统以及模拟视频领域,它将亮度信息(Y)与色彩信息(UV)分离,没有UV信息一样可以显示完整的图像,只不过是黑白的,

这样的设计很好地解决了彩色电视机与黑白电视的兼容问题。并且,YUV不像RGB那样要求三个独立的视频信号同时传输,所以用YUV方式传送占用极少的频宽。

常用格式有:YUV444,YUV422,YUV420(为什么是4呢?因为这个4,实际上表达了共享的最大单位!也就是最多4个像素进行共享,因此4实际上是隐含的采样全集);

摄像头中最常用的是YUV 422格式,及Y-U-Y-V格式。以YUV422 8bit为例,每个像素点都包含亮度分量(8bit)以及UV两个颜色分量中的某一个(8bit)。

因此每个像素点需要16bit数据。如果使用YUV422 10bit,那每个像素点需要20bit来描述;

yuv 头文件

yuv没有头文件

参考资料

图像格式总结

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 PyTorch 中,我们可以使用 torchvision 库来进行图像处理。要更改图像的格式,可以使用 torchvision.transforms 模块中的 ToTensor() 转换。ToTensor() 可以将 PIL 或 numpy 中的图像转换为 PyTorch 张量。 以下是一个示例代码,从文件夹中加载图像并将其转换为 PyTorch 张量: ```python import torch import torchvision.transforms as transforms from PIL import Image # 加载图像 img = Image.open("example.jpg") # 定义转换 transform = transforms.Compose([ transforms.ToTensor() ]) # 转换图像 img_tensor = transform(img) print(img_tensor.shape) # 输出:torch.Size([3, 224, 224]) ``` 在上面的代码中,我们首先加载了一张图像并将其存储在变量 img 中。然后,我们定义了一个转换 transform,其中将 ToTensor() 转换应用于图像。最后,我们将 img 转换为 PyTorch 张量并将结果存储在变量 img_tensor 中。 请注意,ToTensor() 转换还将图像的像素值从 0-255 的整数转换为 0-1 的浮点数。 ### 回答2: 要使用PyTorch更改图像格式,可以使用PIL库(Python Imaging Library)进行图像处理。PIL提供了丰富的图像处理功能,并且可以与PyTorch无缝集成。 首先,我们需要导入必要的库,包括PyTorch和PIL。可以使用以下代码导入它们: ```python import torch from PIL import Image ``` 接下来,我们可以使用PIL的`Image.open()`函数加载图像文件,并将其转换为PIL图像对象: ```python image = Image.open('input.jpg') ``` 现在,我们可以使用PIL的`Image.save()`函数将图像保存到所需的格式。例如,将图像保存为PNG格式: ```python image.save('output.png', 'PNG') ``` 如果希望将图像转换为其他格式,只需要在`save()`函数的第二个参数中指定所需的格式。以下是一些常见的图像格式和对应的参数值:JPEG('JPEG')、BMP('BMP')、GIF('GIF')、TIFF('TIFF')等。 最后,我们可以使用PyTorch的`torchvision.transforms`模块将图像转换为PyTorch张量,以便进一步进行深度学习任务: ```python transform = torchvision.transforms.ToTensor() tensor_image = transform(image) ``` 上述代码中,`transform`变量表示将图像转换为张量的转换函数,`tensor_image`则是转换后的PyTorch张量。 总结起来,使用PIL库可以轻松实现PyTorch中的图像格式转换。首先,使用`Image.open()`函数加载图像文件并将其转换为PIL图像对象,然后使用`save()`函数将图像保存为所需的格式。最后,通过`torchvision.transforms`模块将图像转换为PyTorch张量。 ### 回答3: 使用PyTorch更改图片格式,可以通过使用PIL(Python Imaging Library)库和PyTorch提供的功能来实现。 首先,需要将图像加载到PyTorch中,并将其转换为Tensor对象。可以使用torchvision库的函数`torchvision.io.read_image()`来加载图像: ```python import torchvision.io as io image_path = 'image.jpg' # 图片路径 image = io.read_image(image_path) ``` 接下来,可以使用PIL库中的函数`PIL.Image.fromarray()`将Tensor对象转换回PIL图像对象。然后,可以使用PIL图像对象的方法来更改图像格式。例如,可以使用`PIL.Image.save()`方法将图像保存为不同的格式: ```python from PIL import Image pil_image = Image.fromarray(image.permute(1, 2, 0).numpy()) # 转换为PIL图像对象 output_path = 'output.png' # 输出路径 pil_image.save(output_path, format='PNG') # 保存为PNG格式的图像 ``` 在上述代码中,`permute(1, 2, 0)`函数用于将PyTorch Tensor的通道维度从第一维变换为最后一维,以适应PIL图像对象的通道顺序。 若要更改图像格式为其他格式,只需在`save()`方法中指定所需的格式,例如JPEG、BMP等。 最后,使用PIL库可以很方便地实现在PyTorch中更改图像格式的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值