惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
Netflix TechBlog - Medium
I
InfoQ
Engineering at Meta
Engineering at Meta
Jina AI
Jina AI
Recent Announcements
Recent Announcements
T
The Blog of Author Tim Ferriss
P
Proofpoint News Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
D
Docker
Microsoft Security Blog
Microsoft Security Blog
宝玉的分享
宝玉的分享
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
GbyAI
GbyAI
博客园 - Franky
博客园 - 聂微东
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 叶小钗
酷 壳 – CoolShell
酷 壳 – CoolShell
B
Blog RSS Feed
WordPress大学
WordPress大学
MyScale Blog
MyScale Blog
月光博客
月光博客
罗磊的独立博客

又见苍岚

COLMAP PatchMatch Stereo 算法详解 事件驱动的状态机框架:从理论到工程实践 Git 在国内网络环境下无法 Push 的排查与修复 —— 配置 Clash 代理 分段五次多项式插值原理详解 路径插值方法深度对比研究 Claude Code 使用指南 OpenClaw 记忆管理与技能创建指南 CBS(Conflict-Based Search)算法详解 A* 算法及其变种详解 OpenClaw 配置多 Agents Windows Powershell 无法加载文件,因为在此系统上禁止运行脚本问题的解决方案 MaxClaw 安装流程 大模型 AI 名词介绍 AList 网盘聚合工具简介 Protobuf 简介与测试 Claude Code 简介以及 GLM 4.7 模型接入 Github 歌词下载工具 163MusicLyrics Python __getattr__ 懒加载 Python TypedDict 机器人仿真平台 Gazebo 安装记录 机器人仿真平台 Gazebo 简介 多机器人路径规划问题(Multi-Agent Path Finding, MAPF)简介 Python exifread 读取修改过的 jpeg 信息错误问题修复 3D 坐标系变换的理解 3D 旋转矩阵基本概念 MongoDB Compass 介绍 Python 环境管理工具 uv Flutter 开发指南 Snipaste 安装下载与黑屏问题解决方案 全局路径规划算法记录
Python 读写 RAW 格式图像
Yiwei Zhang · 2022-11-15 · via 又见苍岚

RAW 格式是相机产生的原始图像格式,带有丰富的图像信息,但其本身并不是常用的图像格式,本文记录 Python 下 RAW 图像的读写方法。

RAW 图像

  • RAW的原意就是“未经加工”。可以理解为:RAW图像就是CMOS或者CCD图像感应器将捕捉到的光源信号转化为数字信号的原始数据。RAW文件是一种记录了数码相机传感器的原始信息,同时记录了由相机拍摄所产生的一些元数据(Metadata,如ISO的设置、快门速度、光圈值、白平衡等)的文件。RAW是未经处理、也未经压缩的格式,可以把RAW概念化为“原始图像编码数据”或更形象的称为“数字底片”。RAW格式的全称是RAW Image Format,在编程中称之为原始。

    —— 百度百科

优势

  • RAW文件几乎是未经过处理而直接从CCD或CMOS上得到的信息,通过后期处理,摄影师能够最大限度地发挥自己的艺术才华。
  • RAW文件并没有白平衡设置,但是真实的数据也没有被改变,就是说作者可以任意的调整色温和白平衡,并且是不会有图像质量损失的。
  • 颜色线性化和滤波器行列变换在具有微处理器的电脑上处理得更加迅速,这允许应用一些相机上所不允许采用的、较为复杂的运算法则。
  • 虽然RAW文件附有饱和度、对比度等标记信息,但是其真实的图像数据并没有改变。用户可以自由地对某一张图片进行个性化的调整,而不必基于一、两种预先设定好的模式。
  • 也许RAW最大的优点就是可以将其转化为16位的图像。也就是有65536个层次可以被调整,这对于JPG文件来说是一个很大的优势。

RAW格式扩展名

不同的相机产生的RAW文件的扩展名一般不同,下表列举出常见相机厂商生产的相机的RAW文件的扩展名:

品牌 扩展名
富士 *.raf
佳能 .crw,.cr2,*.cr3
柯达 *.kdc
美能达 *.mrw
尼康 *.nef
奥林巴斯 *.orf
adobe *.dng
宾得 .ptx,.pef
索尼 *.arw
适马 *.x3f
松下 *.rw2

Python 读写 RAW 图像

  • 对于读取图像的程序来说,RAW 图像就是一堆像素点堆成的数据包,读进来就是一堆点信息
  • Python 可以通过自带的 numpy 包解析 RAW 图像数据,过程中需要预先获取图像尺寸和位深度

读取 RAW 图像

  • 使用 numpy 包的 fromfile 函数读取文件,过程中输入数据类型
1
2
3
4
5
6
7
import numpy as np

file_path = 'origin.raw'
# 16 位 raw 数据
data = np.fromfile(file_path, dtype=np.uint16)
# 8 位 raw 数据
data = np.fromfile(file_path, dtype=np.uint8)

  • 此时读取到的数据为一堆数据而已,并不是图像

  • 需要给定数据形状,才能按照要求组织成原始的图像
1
img = np.reshape(data, newshape=[3072, 4096, 1])

  • 之后就可以当成正常图像使用了
  • 过程中可以在 uint8 和 uint16 等数据格式间转换
1
2
data.astype(np.uint8)
data.astype(np.uint16)

写入 RAW 图像

  • 写入图像就是将数据直接写到磁盘
1
2
save_path = 'output.raw'
img.tofile(save_path)

参考资料

文章链接:
https://www.zywvvd.com/notes/study/image-processing/raw-img-rw/raw-img-rw/