DNG格式详解,DNG是什么?为何DNG可以取代RAW统一单反相机、苹果安卓移动端相机拍摄输出原始图像数据标准

news/2024/7/21 7:12:39 标签: 数码相机, android, 图像处理, DNG图像格式

返回图像处理总目录:《JavaCV图像处理合集总目录》

前言

在DNG格式发布之前,我们先了解一下之前单反相机、苹果和安卓移动端相机拍照输出未经处理的原始图像格式是什么?

RAW

什么是RAW?

RAW是未经处理、也未经压缩的格式。可以把RAW概念化为“原始图像编码数据”或更形象的称为“数字底片”。

RAW是CMOS或者CCD图像感应器将捕捉到的光源信号转化为数字信号的原始数据。
也即RAW文件是一种记录了数码相机传感器的原始信息,同时记录了由相机拍摄所产生的一些元数据(Metadata,如ISO的设置、快门速度、光圈值、白平衡等)的文件。

sensor的每一像素对应一个彩色滤光片,滤光片按Bayer pattern分布。将每一个像素的数据直接输出,即RAW RGB data

Raw data(Raw RGB)经过彩色插值就变成RGB,如下图所示:

raw转换过程

RAW数据是怎么产生的?

通过单反相机、苹果和安卓移动端摄像头,所拍摄的景物通过镜头,投射到传感器上生成光学图像,传感器将光学图像转换成了电信号,电信号再经过模数转换变为数字信号,存储数字信号的文件也就是RAW文件。

RAW与jpeg之类有什么不同?

RAW数据是直接存的未经处理的数字信号。
而jpeg之类的图片格式则是已经经过ISP修饰优化处理过后并且又经过有损压缩过后的数据。
在这里插入图片描述

为何要放弃RAW,DNG的由来

因为RAW数据标准不统一

RAW是未经过加工过的档案,原始图档仅是将传感器上所有参数都会记录下来,包括原始曝光、曝光、白平衡、色调、颜色、风格等等数据。
问题就在于每个相机和手机厂商都有自己的RAW格式进行私有化定制,所以导致并没有统一的规范和标准去定义RAW,每家相机和手机厂商都需要有专门的软件来查看和编辑自家的RAW格式。

DNG标准早在2015年就已经发布了,最新的DNG 1.7.0.0标准规范是Adobe公司在2023年6月发布。
目前所有单反相机、苹果、华为、小米、一加等手机厂商都已经支持DNG格式输出拍照原始图像数据(DNG)。

DNG想要统一原始数据标准

数字负片 (DNG)
是一种公共存档格式,可用于存储由各种数字相机生成的原始数据文件。对于通过各种相机型号创建的原始数据文件,一直欠缺一种适用的开放标准,而数字负片解决了这一问题,可确保摄影师能够轻松地访问他们的文件。

除“数字负片规范”外,Adobe 还提供了免费的 Adobe DNG Converter。这里不提供下载软件地址,如果有兴趣可以自行到官网下载。
DNG

支持的相机尝试列表:https://helpx.adobe.com/cn/camera-raw/using/supported-cameras.html

由于DNG格式比较新,目前支持DNG格式的软件不多,基本只有Adobe自家的软件才能支持:Photoshop、Photoshop Elements、Lightroom 和 Lightroom Classic等。

FFmpeg目前还不能支持DNG格式,但是由于DNG与TIFF的特殊关系,可以通过将DNG改后缀为TIFF来用ffmpeg打开。因此对于开发者来说,暂时开发量有点大,因为规范推出的时间太短,开源库估计还要再等等才有。

TIFF, TIFF/EP, DNG, RAW之间的关系

TIFF和DNG同为Specification,分别定义了后缀名为.tif/.tiff和.dng的文件格式同时在TIFF Specification也定义个baseline及部分扩展的tag。
TIFF/EP则定义并规范了在电子影像中所使用的TAG。
DNG同时与TIFF和TIFF/EP兼容,并包含了EXIF和XMP信息。DNG实际上就是扩张的TIFF, 把DNG的扩展名改成TIF就可以直接预览图片。

DNG格式标准规范

下载地址:https://download.csdn.net/download/eguid_1/88335365

返回图像处理总目录:《JavaCV图像处理合集总目录》


http://www.niftyadmin.cn/n/5024658.html

相关文章

Linux系统——初识Linux、虚拟机介绍、VMware WorkStation安装、在VMware上安装Linux

目录 初识Linux Linux的诞生 Linux内核 Linux发行版 虚拟机介绍 VMware WorkStation安装 在VMware上安装Linux 在VMware中安装CentOS操作系统 初识Linux Linux的诞生 Linux创始人: 林纳斯 托瓦兹 Linux 诞生于1991年,作者上大学期间 因为创始人在上大学期…

thinkphp:判断数据是否存在,再作为数据库的判断条件(给数据库查询增加额外的查询条件)

方法一:用thinkphp的语法去写 public function select_endProduceinfo(){$like_info input(post.like_info, );$page input(post.page, 1);$pageSize input(post.pageSize, 10);$start ($page - 1) * $pageSize;$username input(post.username,);$search_line…

✔ ★算法基础笔记(Acwing)(二)—— 数据结构(17道题)【java版本】

数据结构 1. 单链表模板1. 单链表(7分钟) 2. 双链表模板1. 双链表 3. 模拟栈1. 模拟栈(一个数组即可)2. 表达式求值(20分钟) 4. 队列 tt -1,hh 0;1. 模拟队列 5. 单调栈1. 单调栈(4分钟)3.14 6. 单调队列1. 滑动窗口例题(10分钟) 7. KMP1. KMP字符串(10分钟)二刷体会★三刷体…

stm32单片机之外部脉冲捕获例程

stm32单片机之外部脉冲捕获例程 定时器通道1来捕获外部脉冲,并且当脉冲到来时,通过HAL库的回调函数来处理这个事件。 #include "stm32f4xx_hal.h" // 定义一个TIM_HandleTypeDef结构体 TIM_HandleTypeDef htim1; void SystemClock_Config(…

javase javaee javame

1.JavaSE JavaSE(Java Platform,Standard Edition) :Java平台标准版。它是 JavaEE 和 JavaME 的基础,之前称为 J2SE,用来开发C/S架构软件,通俗来讲,就是开发电脑桌面的应用软件、电脑…

Unity中程序集dll

一:前言 一个程序集由一个或多个文件组成,通常为扩展名.exe和.dll的文件称为程序集,.exe是静态的程序集,可以在.net下直接运行加载,因为exe中有一个main函数(入口函数),.dll是动态链接库&#…

《PostgreSQL中的JSON处理:技巧与应用》

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾猫头虎建议程序员必备技术栈一览表📖: 🛠️ 全栈技术 Full Stack: &#x1f4da…

CSS 纵横比属性:aspect-ratio

CSS 属性 aspect-ratio 为盒子规定了纵横比(宽高比),这个纵横比可以用于计算 auto 尺寸以及其他布局函数。