【图像基础】RAW格式图像简介

转载自:https://zhuanlan.zhihu.com/p/158088019
仅作学习记录

概述

  • 数码相机直接输出的未经过处理过的图像,俗称 raw图
  • 经过isp处理的图片,通常称为 jpg图

了解摄影的人都会很熟悉raw图,一般都会在photoshop中对raw图进行调色、降噪、构图等处理,以获得更好的图像效果质量。

为什么是RAW图呢?

顾名思义,英文单词Raw是原始的,未处理的,其表征了纯粹的未处理的一堆数据,为何这里说是一堆数据而不是图像呢?实际上Raw图记录的就是CMOS或者CCD图像传感器将捕捉到光源(光子)信号转化为数字信号的原始数据

raw图与jpeg图区别

在这里插入图片描述
在这里插入图片描述

具体介绍

概念

Raw格式的图片是数码相机采集到的最原始的图像数据信息,大约40M一张,而我们平时看到的JPEG照片(大约8M一张)来自于Raw格式图片进行图像后处理和压缩后得到的照片,其会丢掉许多重要的信息。这也就是为什么使用RAW格式的图片调色PS的效果远远高于使用已经被压缩过的JEPG图片要好的原因。JEPG图片已经被处理并丢失了许多信息,为了更好的调色效果和避免JEPG已经被处理后的影响,我们为何不直接从源头也就是RAW图片上手呢?

数码相机传感器介绍 - DIGITAL CAMERA SENSORS

数码相机使用数百万个微小的感光元来记录图像(图一)。当按下相机的快门按钮并开始曝光时,每一个感光元都会收集光子并将其其存储为电信号。 曝光结束后,相机将关闭所有这些光点,然后尝试通过测量电信号的强度来评估有多少光子掉入每个感光元中。 然后将信号量化为数字值,其精度由图像位深确定。我们最后在手机上看到的图像精度结果取决于图像的记录格式,比如8位的JPEG照片其像素值就有2^8 = 256,其每一个pixel值就为[0-255]。使用的位数越大,我们就可以将颜色表示得越精细。
在这里插入图片描述
问题来了,我们如何收集到彩色图像呢?回想起三原色RGB红绿蓝了么,也就是小水滴滴在屏幕上我们所看到的。那我们如何去捕捉他们呢?由于这些感光元无法区分每种颜色的数量,因此上述图一插图只能创建灰度图像(也就是黑白图)。 为了捕获彩色图像,必须在每个感光元上方放置一个滤镜,该滤镜仅允许特定颜色的光。 实际上,当前所有的数码相机只能在每个感光元中捕获三种原色之一,因此它们会丢弃大约2/3的入射光。因此,相机必须近似其他两种原色以便在每个像素处都是全色彩的。Color Filter Array(CFA)就登场了,中文叫彩色滤光片阵列,而最常使用和见到CFA为Bayer阵列(拜耳阵列),如图二所示:
在这里插入图片描述
以2*2的小方块来看,其是一个有规律的排列,遵循绿-红-蓝-绿的组合。专业点说,拜耳阵列由交替排列的绿红和蓝绿滤光片组成。 请注意,拜耳阵列包含的绿色传感器是红色或蓝色传感器的两倍(这样设计的原因是人眼对绿色更为敏感,所以使用了更多的绿色滤光片采集绿色)。这样设计的另一个原因是与每种颜色均等相比,带有绿色像素的冗余所产生的图像看起来噪声更少,并且具有更好的细节。 好了,现在我们来看看处理后的JPEG图片和采集到最原始的RAW图片吧。
在这里插入图片描述
左边就是各位在手机上看到的JPEG图而右边便是相机传感器接收到的最原始的图。

为了方便查看和对比拜耳阵列,请看红方框的放大细节。这里需要注意的是,并非所有的数码相机都使用拜耳阵列,但这是迄今为止最常见的设置。 例如其他传感器可能以类似的阵列捕获四种颜色:红色,绿色,蓝色和翠绿色。

Bayer去马赛克 - BAYER DEMOSAICING

右边的图看起来很像马赛克吧?ok那现在要如何去马赛克呢(要正经,别乱想)?

Bayer去马赛克是将这种拜耳原色阵列转换为最终图像的过程,该最终图像的每个像素都是全色的。 一种简单的方法是将红色,绿色和蓝色的每个2x2阵列视为一个完整的彩色块。如图三,黑色圆圈表示的就是2x2阵列合并得到的全色信息
在这里插入图片描述
这里很容易可以发现一个问题,这种方法会导致分辨率下降。因为长宽分别少了1/2那么总体分辨率就少了1/4,所以一般不用这样的方法,一般将RGB分别拆开进行插值然后再合并,这样能有100%的分辨率。插值方法有很多,在这里不表述。简单过程如图四。
在这里插入图片描述
在这里插入图片描述
通过图五来简单回顾总结一下RAW图。

  • 1是现实世界中的图,也就是我们眼睛看到的景色。
  • 具有Bayer阵列的相机传感器获取到的原始图像信息是3,
  • 没有Bayer阵列采集到的原始图像信息为2,也就是灰度图(黑白图,只有亮度信息)。
  • 这里要说明从RAW图到JEPG有一系列复杂的图像信号处理过程,称作ISP(Image Signal Processing),这里不做表述,去马赛克只是其中的一小步。去马赛克后再经过后续处理我们可以得到4图,也即手机上看到的压缩过后的JPEG图。
### 深度 Raw 格式的定义 深度 Raw 格式是指用于表示三维环境中物体距离摄像头远近的数据文件,通常以未压缩或轻微压缩的形式保存。这种格式保留了传感器捕捉到的原始深度信息,具有较高的精度和分辨率。 ### 特点 - **高精度**:每个像素可以达到16位甚至更高的位深,意味着能够表达更精细的距离变化[^1]。 - **大动态范围**:由于其高位深度特性,能够在同一张片中同时记录近距离和远距离的对象,提供丰富的层次感。 - **无损质量**:未经任何压缩算法处理过的纯真数据流,最大限度地保持了采集时的信息完整性[^3]。 - **灵活性强**:支持多种后续编辑操作,如调整曝光、白平衡等参数而不损失画质。 ### 使用场景 - **机器人视觉**:帮助机器理解周围环境的空间结构,实现避障导航等功能。 - **增强现实(AR)**:构建虚拟对象与真实世界之间的互动关系,使体验更加逼真自然。 - **自动驾驶汽车**:精确感知前方路况和其他车辆行人位置,保障行驶安全。 - **医疗成像**:辅助医生进行手术规划或是疾病诊断,尤其是在微创外科领域有着广泛应用前景。 ```python import numpy as np def load_depth_raw(file_path): """ 加载并解析深度raw文件 参数: file_path (str): 文件路径 返回: depth_map (numpy.ndarray): 解析后的二维数组形式的深度 """ # 假设为16bit unsigned int, 需要根据实际情况修改dtype dtype = np.dtype('uint16') with open(file_path, 'rb') as f: buffer = f.read() data = np.frombuffer(buffer, dtype=dtype) height = width = int(np.sqrt(len(data))) # 这里假设是正方形图像 depth_map = data.reshape((height, width)) return depth_map ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值