`
gaozheyuan
  • 浏览: 6215 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
社区版块
存档分类
最新评论

相机从RAW格式到相片生成过程

阅读更多
台湾那边的暑期项目马上就要开始了,在去台湾之前那边的导师让我做一个项目,就是通过raw格式转化到照片的处理过程,这个也是傅楸善教授的一个练功课,进入他们的实验室必须通过的一门“练功”的项目。

    想要知道什么是raw格式以及如何从raw格式到照片,我们首先必须了解什么是raw格式以及从raw格式到照片所必须经过的所有过程.

    raw格式是指从相机拍摄一个景象所得到的原始的数据,这个数据保存了包括CMOS或者CCD图像感应器将捕捉到的光源信号转化为数字信号的原始数据,RAW文件是一种记录了数码相机传感器的原始信息,同时记录了由相机拍摄所产生的一些原数据(Metadata,如ISO的设置、快门速度、光圈值、白平衡等)的文件。RAW是未经处理、也未经压缩的格式,可以把RAW概念化为“原始图像编码数据”或更形象的称为“数字底片”。

     那么有些研究者会觉得奇怪,为什么相机要存储的是raw格式呢?如果从图像的性质而言,每一个pixel都是一个三维的强度信号,相机若是想要得到照片的话,其实直接得到图像而不是得到raw格式不是更好吗?问题不是那么简单。

raw格式的文件相比于图像文件而言的优点,主要包括一下几个方面:

 ·1、RAW文件几乎是未经过处理而直接从CCD或CMOS上得到的信息,通过后期处理,摄影师能够最大限度地发挥自己的艺术才华。


   2、RAW文件并没有白平衡设置,但是真实的数据也没有被改变,就是说作者可以任意的调整色温和白平衡,并且是不会有图像质量损失的。

  3、颜色线性化和滤波器行列变换在具有微处理器的电脑上处理得更加迅速,这允许应用一些相机上所不允许采用的、较为复杂的运算法则。


  4、虽然RAW文件附有饱和度、对比度等标记信息,但是其真实的图像数据并没有改变。用户可以自由地对某一张图片进行个性化的调整,而不必基于一、两种预先设定好的模式。


 5、也许RAW最大的优点就是可以将其转化为16位的图像。也就是有65536个层次可以被调整,这对于JPG文件来说是一个很大的优势。当编辑一个图像的时候,特别是当你需要对阴影区或高光区进行重要调整的时候,这一点非常重要。



也就是说,对于一个相机而言,保存其原始的格式的重要性其实是不言而喻的,因为这样做可以保存下可供未来进行进一步处理的数据。



那么,从raw数据格式到普通的图像格式(例如jpg格式,bmp格式)需要经过多少步骤呢?







看上去确实有点乱,不过还好,我来一一解释一下:

Optical black:

       是指未感光但是仍然有值的部分,这个很让人费解,通常而言,有光学信号才会导致电流的产生,但是由于相机本身存在一定的电流信号,使得在有些像素中,即使未感光,也会导致暗电流的生成,使得像素上产生值,因此我们首先要进行的步骤,就是使用Optical black,将暗电流产生的信号进行消去。



White balance:

       对于一个相片而言,是非常重要的,raw格式的文件存储的格式只是一个图像的信号格式,但是,却不一定得到最好的图像效果,人眼其实是一个非常精妙的东西,它通过瞳孔的放大和缩小,可以适应不同的亮度环境,将所看见的视像调整到最好的效果,同样,例如我们长时间进入一个偏向红色的环境中,可以感觉到红色其实会变得不怎么红,别的颜色也会导致这样的情况。这个其实就是人的眼睛的一个Automatic White balance的功能,但是对于照相机而言可就没有那么那么厉害了,相机是死的,因此他不可能做到人眼所能做到的对图像的Automatic White balance的效果,因此,我们必须要设计一种算法,对图像进行一个White balance的功能。

不同的White balance所的得到的不同的效果(偏向冷色调或偏向暖色调)



处理前图像:                                                                                                       

处理后图像:



Color interpolation:

要理解这个操作的内容,我们首先要了解相机采像的基本原理:

对于一个单ccd 的camera而言,在进行取景的过程中,并不是对每一个点都进行RGB三个颜色都进行采样,而是对每一个像素点只采集某一个通道的值,如对某一个像素点只采集G值,或对另一个像素点只采集B值,至于该像素点的其他的通道值,则是通过临近的别的像素值进行某种方式的推测得到的。

多ccd 的camera和单ccd的camera:





采集到的间隔的数据





因此,为了要让每一个顶点都包含RGB值,必须采用某种算法,进行对未知像素的点进行别的通道的值的计算,当然,这里面的方法就有很多了,其中包括如Nearest Neighbor Interpolation,Bilinear Interpolation,Cubic B-Spline Interpolation,Cubic Convolution Interpolation等等。

Nearest Neighbor Interpolation:



Bilinear Interpolation:



Cubic B-Spline Interpolation



Cubic Convolution Interpolation:







gamma correction:

        Gamma曲线是一种特殊的色调曲线,当Gamma值等于1的时候,曲线为与坐标轴成45°的直线,这个时候表示输入和输出密度相同。高于1的Gamma值将会造成输出亮化,低于1的Gamma值将会造成输出暗化。总之,我们的要求是输入和输出比率尽可能地接近于1。在显示器、扫描仪、打印机等输入、输出设备中这是一个相当常见并且比较重要的概念。在计算机系统中,由于显卡或者显示器的原因会出现实际输出的图像在亮度上有偏差,而Gamma曲线矫正就是通过一定的方法来矫正图像的这种偏差的方法。一般情况下,当用于Gamma矫正的值大于1时,图像的高光部分被压缩而暗调部分被扩展,当Gamma矫正的值小于1时,图像的高光部分被扩展而暗调部分被压缩,Gamma矫正一般用于平滑的扩展暗调的细节。



图1 CRT显示器的亮度响应曲线图





图1显示的是一般CRT显示器的亮度响应曲线,可以看到其输入电压提高一倍,亮度输出并不是提高一倍,而是接近于两倍,显然这样输出的图像同原来的图像相比就发生了输出亮化的现象,也就是说未经过Gamma矫正的CRT显示器其Gamma值是小于1的。
没有经过Gamma矫正的设备会影响最终输出图像的颜色亮度,比如一种颜色由红色和绿色组成,红色的亮度为50%,绿色的亮度为25%,如果一个未经过Gamma矫正的CRT显示器的Gamma值是2.5,那么输出结果的亮度将分别为18%和3%,其亮度大大的降低了。


图2 按图进行曲线补偿
为了补偿这方面的不足,我们需要使用反效果补偿曲线来让显示器尽可能地输出同输入图像相同的图像,所以这个时候显示器的输入信号应该按照图2所示的曲线进行补偿,这样才能在显示器上得到比较理想的输出结果。



一般的反效果可以直接被赋予存储在帧缓存中的图像,使之Gamma曲线呈非线性,也可以通过RAMDAC进行这种反效果补偿(或者说是Gamma曲线矫正)。这样我们就可以在显示器上看到同我们输入的图像接近的图像了(如图3)。当然图3所示的曲线只是理想状态下的情况,在实际应用中我们并不可能得到如此完美的曲线,所以不同的厂商之间所竞争的就是谁能做到最接近于这个效果。


Hue Enhancement
Hue enhancement步骤是通过将RGB格式转化为HSI之后对颜色部分进行强化后得到的结果:
Hue指的是色彩值,在RGB格式内,色彩值是通过三维进行表述产生的,但是其实,当我们将这个三维的色彩空间转化到如下的格式时,我们可以看见,其实色彩Hue(色彩)可以通过表述角度得到

Saturation饱和度

HSI Color Space
Intensity

在使用对Hue/Saturation 进行强化的过程中我们采用一下的公式:

在β=0.6时效果最好

Edge Enhancement
edge enhancement是一种将边缘进行强化的方式这种方式能够将图像中的边缘进行强化使得边界能够变得更加明显:


enhance的方法主要包括:
Laplacian edge filter是一个边缘增强的算子,可以扩大边缘之间的差距


好了,以上就是所有的过程,得到的图像写入jpg或者bmp文件就可以了。


以上说了半天可能有些人会问:好像对于里面的原理没有仔细的说明,如何才能用代码实现呢?

首先必须说明一点,sony的格式对于raw格式进行了一定的加密操作,因此,需要通过一定的解密操作,解密的程序如下
c++解密程序的源代码:
http://www.zheyy.com/wp-content/uploads/2011/07/sony_raw_decrypt.zip
转化成照片的操作程序如下:
http://www.zheyy.com/wp-content/uploads/2011/07/GZYContest.zip
可能有些东西不能用,若需要了解程序的具体运行方式,请来邮件咨询~~~~~~~
gaozheyuan13@sina.com
分享到:
评论

相关推荐

    原始图像文件 Raw 文件

    Raw文件通常由数字相机、扫描器或者电影胶片扫描仪在捕获图像时生成,它们保存了传感器接收到的原始数据,没有经过相机内置的图像处理算法。 描述中提到,Raw图像文件包含了来自不同相机的几个样本,这暗示了Raw...

    VC打开多种图像格式(bmp,jpg,gif,tif,raw)

    首先读取RAW文件,然后根据相机制造商的元数据进行解码,生成RGB像素数组,最后使用CBitmap或其他图像显示方法展示。 在实际编程中,你需要创建一个CWinApp派生类,定义消息映射,处理文件打开对话框(ID_FILE_OPEN...

    acr 4.6 最新版的raw格式ps插件

    此插件包含了解码不同相机RAW格式所需的各种算法,使得Photoshop能够理解并处理不同相机生成的独特RAW数据。 "Adobe DNG Converter.exe" 是Adobe提供的一个独立工具,它能够将多种RAW格式转换为通用的Digital ...

    Xread2.rar_RAW_raw BMP_xread2_图片

    RAW格式是一种未经处理的图像数据格式,通常由数码相机直接生成,它包含了传感器捕获的原始像素信息,没有经过任何图像处理,如白平衡、曝光校正等。这种格式能够提供最大的图像质量和后期编辑空间,但需要专门的...

    raw_process.zip

    RAW图像处理是数码摄影领域中的一个关键技术,它涉及到相机传感器原始数据的解析和转换,以生成高质量的JPEG或TIFF图像。"raw_process.zip"这个压缩包文件显然提供了关于MATLAB编程实现RAW图像处理的学习资源。...

    佳能、尼康、索尼、富士相机添加水印

    4. **富士相机**:富士的图像处理软件如X Raw Studio或RAF Converter虽不能直接添加水印,但你可以使用富士胶片模拟风格的软件如Iridient Developer或Adobe Lightroom来完成。在自定义过程中,你可以调整水印的样式...

    好照片RAW文件转换 教你创造性冲洗数字底片.docx

    **RAW文件**是一种未经过任何处理的图像数据格式,它记录了数码相机传感器捕捉到的所有原始信息。与常见的JPEG格式相比,RAW文件不包含任何相机预设的图像处理(如白平衡、对比度等),这意味着用户可以在后期处理...

    PyNET:使用PyNET从RAW图像文件生成RGB照片

    提供的预训练PyNET模型可用于从使用Sony Exmor IMX380相机传感器捕获的RAW(DNG)图像文件生成全分辨率12MP照片。 对于华为P20和BlackBerry KeyOne智能手机,此方法的更多视觉效果可在找到。2.先决条件Python:...

    完美解决 Windows 下显示 5D4 预览图 插件补丁

    然而,对于某些特定的图像格式,如PSD(Photoshop Document)、CR2(Canon Raw Image Format)、NEF(Nikon Electronic Format)以及DNG(...是对于新发布的相机型号如佳能5D Mark IV(5D4)所拍摄的RAW格式照片...

    RAW6.3插件

    RAW格式通常由数码相机直接生成,保留了拍摄时的所有原始数据,提供了更大的后期调整空间。这款插件的引入,意味着用户在Photoshop CS5中可以享受到更高级别的色彩管理、细节恢复以及噪声抑制等功能。 首先,我们来...

    佳能Digital Photo Professional 教程.pdf

    * Digital Photo Professional 是佳能提供的专业 RAW 处理软件,适用于佳能 EOS 数码单反相机所生成的 RAW 格式文件。 * Digital Photo Professional 的安装可以单独选择,可以对 400D 及之前所有 EOS 数码单反...

    高通camera效果调试

    **Info**:拍摄MCC和FF的RAW格式照片中提到的TL84 Raw格式照片可作为TL84光源下的参考。 #### 四、后期调试修正 完成上述步骤后,需要对拍摄的照片进行分析,并根据实际结果调整Chromatix Camera的相关参数。这些...

    数码相机的成像原理解释.pdf

    数码相机的成像原理解释 数码相机的成像原理可以分为以下几个步骤: 首先,主控程序芯片检查整个相机,确定各个...数码相机的成像原理是一个复杂的过程,涉及到多个组件的协调工作,但最终都可以生成高质量的图像。

    Andoird设备相机拍摄指定分辨率照片demo,支持分辨率选择

    为了保证"无需压缩",我们需要确保在捕获照片时,相机直接以选定的分辨率和格式保存到文件系统,而不是先保存一个原始的JPEG或RAW文件,然后再进行压缩。在Camera2 API中,你可以通过创建一个`ImageReader`实例来...

    digital photo professional(Pdd) 佳能相机 佳能图像处理软件

    RAW格式保留了相机传感器捕获的所有原始数据,通过DPP,用户可以自由调整曝光、白平衡、对比度等参数,而不受JPEG格式的限制,从而实现更高质量的图像调整。 2. **色彩管理**:DPP提供了丰富的色彩配置文件,能够...

    PyNET-PyTorch:使用PyNET从RAW图像文件生成RGB照片(PyTorch)

    提供的预训练PyNET模型可用于从使用Sony Exmor IMX380相机传感器捕获的RAW(DNG)图像文件生成全分辨率12MP照片。 对于华为P20和BlackBerry KeyOne智能手机,此方法的更多视觉效果可在找到。 2.先决条件 Python:...

    rawrawrawrawraw

    RAW,英文原意为“未经加工”,代表着这种格式保存了相机传感器捕获到的原始数据,没有经过任何图像处理,因此保留了最丰富的细节和色彩信息。 【描述】: RAW图像格式提供了比常见的JPEG格式更高的画质潜力,因为...

    从 FLIR热像仪图像中读取温度和原始照片_python_代码_下载

    Flir 图像提取器 FLIR热像仪(如 FLIR ONE)包括热像仪和可见光热像仪。后者用于使用边缘检测器增强热图像。 生成的图像保存为 jpg 图像,但原始...其他相机可能需要一些小的调整(嵌入的原始数据可以是多种图像格式)

    相机技术参考资料.rar

    8. **RAW格式**:这种未经处理的原始数据格式保留了相机传感器捕获的所有信息,允许在后期处理中有更大的调整空间。 9. **像素与分辨率**:像素数量决定了照片的分辨率,但高像素并不一定意味着更好的画质,合理...

    CR2 CRW TIF照片格式转换JPEG TIFF TIFF16工具

    1. **CR2**:这是佳能数码单反相机(DSLR)生成的原始图像文件格式,包含了相机传感器未经处理的数据,具有较高的色彩深度和动态范围。CR2文件可以提供最大的编辑灵活性,但需要专门的软件进行处理。 2. **CRW**:...

Global site tag (gtag.js) - Google Analytics