【学习笔记】关于RAW图片的概念学习

这里是尼德兰的喵·芯片设计相关文章,欢迎您的访问!

如果文章对您有所帮助,期待您的点赞收藏!

让我们一起为成为芯片前端全栈工程师而努力!

前言

能为我介绍一下raw图片吗?

当谈论"Raw图片"时,通常指的是未经压缩和处理的图像数据,它包含了从图像传感器捕获的原始像素信息。Raw图片是相机直接获取的图像数据,没有经过任何图像处理或色彩编码。

主要特点和优势:

  1. 无损数据:Raw图片是未经压缩的,因此它没有任何数据损失。相比于其他压缩格式(如JPEG),Raw图片保留了从图像传感器捕获的每个像素的原始信息,因此可以实现更高的图像质量。

  2. 更大的动态范围:Raw图片通常具有较高的位深度,如12位或14位,这使得它们能够捕获更大的动态范围。这对于处理高对比度场景和后期图像编辑非常有用。

  3. 更多的后期处理选择:由于Raw图片保留了原始的像素信息,它们在后期处理时提供更多的灵活性和选择。用户可以在计算机上使用专业图像处理软件对Raw图片进行各种调整和编辑,如白平衡、曝光补偿、色彩校正等,而这些操作在压缩图像上可能会导致质量损失。

  4. 质量控制:拥有Raw图片使得摄影师和专业用户可以对图像质量有更多的控制,因为它们可以根据自己的需要对图像进行精细调整,而不依赖于相机内部的图像处理算法。

尽管Raw图片具有很多优势,但也有一些挑战。Raw图片通常较大,需要更大的存储空间,而且相机的连拍速度可能会受到限制。此外,由于每个相机制造商都可以定义自己的Raw格式,因此不同相机品牌的Raw图片可能需要特定的软件或驱动来解码和编辑。

raw图像如何转化为RGB格式?

将Raw图像转换为RGB格式涉及到一系列图像处理步骤,包括去马赛克(Demosaicing)、白平衡(White Balance)、伽马校正(Gamma Correction)等。这些步骤可以在计算机上使用图像处理软件或编程库进行。

以下是将Raw图像转换为RGB格式的一般步骤:

  1. 去马赛克(Demosaicing): Raw图像通常使用Bayer排列进行采样,其中红、绿、蓝三个颜色通道以不同的排列方式进行采样,形成一个马赛克图案。去马赛克是将这些马赛克图案还原成完整的RGB图像的过程。常见的去马赛克算法包括最近邻插值、双线性插值、双三次插值等。

  2. 白平衡(White Balance): 白平衡是调整图像的色温,使得白色在图像中看起来是白色而不是偏色的过程。这是因为不同光源的颜色温度不同,可能会导致图像呈现偏色。白平衡可以通过调整红、绿、蓝三个通道的增益来实现。

  3. 伽马校正(Gamma Correction): Raw图像中的像素值通常是线性的,而显示设备(如显示器)对图像的显示是非线性的。因此,需要进行伽马校正来将线性的像素值转换为适合显示的非线性值。

  4. 色彩空间转换: 如果需要将图像从相机原生的色彩空间(如sRGB、AdobeRGB)转换为其他色彩空间(如sRGB、AdobeRGB),则需要进行色彩空间的转换。

需要注意的是,Raw图像的转换过程并不是简单的直接数学运算,而是涉及到对图像的复杂处理和算法。因此,常见的图像处理软件和编程库通常都提供了相关的功能来实现Raw图像到RGB格式的转换,使得这个过程变得相对容易。

RAW格式

经过各种查询知道,RAW图中每个像素都代表了一种颜色,一般情况下主要有这四种分布情况:

  那么一帧8*8的bayerGB格式的图像是啥样的呢?就是下面这个样的:

 RAW每个点只表现一种颜色的像素值,所以你看它转RGB时第一步就是去马赛克。那么下一个问题,为啥绿色像素点的数量是红色和蓝色的两倍呢?

在大多数传感器中,Raw图像中绿色像素点更多的原因与人类视觉系统和传感器技术有关。这涉及到Bayer排列(Bayer Pattern),它是一种在数字图像传感器上广泛使用的色彩滤波排列方式。

Bayer排列是一种将RGB三个颜色通道以不同的排列方式进行采样的方式,常见的Bayer排列模式为RGGB。在这种排列下,传感器中的像素以以下方式进行采样:

RG
GB

在这个4x4像素块中,绿色像素点占据了4个,而红色和蓝色像素点各占2个。因此,在Raw图像中,绿色像素点数量更多。

这样的排列方式有几个原因:

  1. 人类视觉系统对绿色更敏感:人眼的视觉系统对绿色更敏感,因为我们的视网膜中有更多的绿色感光细胞。采用Bayer排列,使得图像传感器在绿色通道上具有更高的分辨率,可以更好地捕捉细节和颜色信息。

  2. 降低噪点和增强分辨率:绿色像素点数量的增加可以降低图像的噪点水平,因为绿色通道通常有更高的信噪比。此外,绿色像素点更多也增强了图像的分辨率,因为对于每个4x4像素块,有四个绿色像素点用于捕捉细节。

虽然Raw图像中绿色像素点更多,但通过去马赛克(Demosaicing)的过程,可以还原出完整的RGB图像,其中每个像素点都有完整的红、绿、蓝三个颜色通道的信息。这使得Raw图像能够提供更高质量的图像数据,有助于后期处理和优化。

那么raw8 raw10 raw12等格式什么意思呢?就是每一个像素值的位宽。

不同的Raw图像格式(Raw8、Raw10、Raw12、Raw16等)在不同的应用场景中有着各自的优势和用途。以下是它们常见的应用场景:

  1. Raw8(8位Raw):

    • 主要特点:每个像素的位深度为8位,即256个灰度级。
    • 应用场景:Raw8是最常见的Raw图像格式之一,适用于对存储空间和传输带宽有限的应用。常见于普通的数码相机、网络摄像头、实时视频流传输等。
  2. Raw10(10位Raw):

    • 主要特点:每个像素的位深度为10位,即1024个灰度级。
    • 应用场景:Raw10提供了比Raw8更多的色彩深度,可以捕捉更多的图像细节和动态范围。常见于高端数码相机、专业摄影设备、一些工业视觉应用等,对图像质量要求较高的场景。
  3. Raw12(12位Raw):

    • 主要特点:每个像素的位深度为12位,即4096个灰度级。
    • 应用场景:Raw12提供了更高的色彩深度和更大的动态范围,能够捕捉更丰富的色彩细节和亮度层次。常见于专业摄影、高端图像处理、工业视觉领域等,对图像质量要求较高的场景。
  4. Raw16(16位Raw):

    • 主要特点:每个像素的位深度为16位,即65536个灰度级。
    • 应用场景:Raw16是最高位深度的Raw格式之一,提供了极高的色彩深度和动态范围,非常适用于对图像质量和精度要求极高的专业摄影、卫星影像、医学影像等领域。

最后一个问题,简单表示一下如何由raw图得到rgb图呢?比如下图中间的点只有一个G值,那么就可以根据上下两个红色插值得到中间的R,左右两个蓝色得到B(当然这只是一种算法):

再如下面的情况,如何得到中间点的G和B值呢?G值可以通过上下左右四个G值计算得到,B值通过四个角的B值来获得。

当然了上文已经提到过,raw转rgb并不是一个简单的运算问题还包括很多其他的处理,这就是isp要做的事了~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/15334.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

019 - STM32学习笔记 - Fatfs文件系统(一) - FatFs文件系统初识

019 - STM32学习笔记 - Fatfs文件系统(一) - FatFs文件系统初识 最近工作比较忙,没时间摸鱼学习,抽空学点就整理一点笔记。 1、文件系统 在之前学习Flash的时候,可以调用SPI_FLASH_BufferWrite函数,将数…

Windows 11 上使用 Docker 安装 SQL Server 2022 数据库

Windows 11 上使用 Docker 安装 SQL Server 2022 数据库,你可以按照以下步骤进行操作: 安装 Docker Desktop for Windows: 访问 Docker 官方网站(https://www.docker.com/get-started)下载并安装适用于 Windows 的 Do…

“RWEQ+”集成技术在土壤风蚀模拟与风蚀模数估算、变化归因分析中的实践应用及SCI论文撰写

土壤风蚀是一个全球性的环境问题。中国是世界上受土壤风蚀危害最严重的国家之一,土壤风蚀是中国干旱、半干旱及部分湿润地区土地荒漠化的首要过程。中国风蚀荒漠化面积达160.74104km2,占国土总面积的16.7%,严重影响这些地区的资源开发和社会经…

SpringBoot原理分析 | 安全框架:Shiro

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! Shiro Shiro是一个安全框架,用于认证、授权和管理应用程序的安全性。它提供了一组易于使用的API和工具,可以帮助您轻松地添加安全性到您的应用…

2.10 Android ebpf帮助函数解读(九)

161.struct task_struct *bpf_get_current_task_btf(void) 描述:返回一个指向"current"的BTF指针。这个指针可以用来在帮助函数中接收一个task_struct类型的ARG_PTR_TO_BTF_ID。 返回值:返回指向当前task的指针。 162.long bpf_bprm_opts_set(struct linux_binpr…

iOS开发-hook之Method Swizzle更改原有方法实现流程

iOS开发-hook之Method Swizzle更改原有方法实现流程 一 Hook是什么? Hook 简介 Hook,中文译为“挂钩”或“钩子”。通过hook可以让别人的程序执行自己所写的代码。 一段程序的执行流程是 A -> B -> C,现在我们在 A 和 B 之间插入一…

一款基于过滤器的线程共享变量的清理机制

项目中常常用到线程共享变量。如多个函数或对象之间传递参数。循环读取缓存或数据库时时用共享变量减少读取次数。某类特殊对象的持有等。一般用finally去强制释放共享变量。但释放时机有时并不能准确的把握。为此,基于过滤器写了个个释放机制。 过滤器如下&#x…

ubuntu22.04 DNSSEC(加密DNS服务) configuration

/etx/systemd/resolved.conf是ubuntu下DNS解析服务配置文件,systemd为ubuntu下system and service配置目录 step 1——修改resolved.conf参数 管理员权限打开 /systemd/resolved.conf sudo nano /etc/systemd/resolved.conf修改如下: # This file i…

vr禁毒毒驾模拟体验从源头拒绝毒品,预防毒品

俗话说,一念天堂,一念地狱。吸毒一口,掉入虎口。吸毒对人体的危害非常大,普通人吸毒会导致家破人亡,明星吸毒会毁掉自己的大好星途。没有感同身受,何来悲喜相通,毒品危害认知VR模拟情景体验是VR…

利用频谱仪进行简单的2.4G 频率测试

一、概述 1. 信号源 我们开发2.4G 无线产品的时候,经常需要对产品的无线信号进行测试,以确定精确的频率。在进行频率测试之前,我们的2.4G 射频芯片需要进入单载波模式。 2. 频谱仪 这里选择的是普源的频谱仪。测试范围是 9kHz - 3.2GHz。…

Jtti:Linux内存管理中的slab缓存怎么实现

在Linux内存管理中,slab缓存是一种高效的内存分配机制,用于管理小型对象的内存分配。slab缓存的实现是通过SLAB分配器来完成的,它在Linux内核中对内存分配进行优化。 SLAB分配器将内存分为三个区域:slab、partial、和empty。 Slab…

hive 全量表、增量表、快照表、切片表和拉链表

全量表:记录每天的所有的最新状态的数据,增量表:记录每天的新增数据,增量数据是上次导出之后的新数据。快照表:按日分区,记录截止数据日期的全量数据切片表:切片表根据基础表,往往只…

Java-day03(程序流程控制)

程序流程控制 1.顺序结构 程序从上至下逐行执行,无判断与跳转 public class Test1{ public static void main(String[] args){int i 1;int j i 1; System.out.println(j);} }2.分支结构 依据条件,选择性执行某段语句 主要有以下两种 2.1 i…

知识图谱实战应用22-数据导入技巧与基于py2neo的金融领域风险评估的应用

大家好,我是微学AI,今天给大家介绍一下知识图谱实战应用22-数据导入技巧与基于py2neo的金融领域风险评估的应用。本文的金融领域风险评估的应用旨在利用知识图谱技术对金融风险进行评估和管理。该项目利用py2neo库与Neo4j图数据库进行交互,构建一个金融领域的知识图谱,并根…

vue 封装一个鼠标拖动选择时间段功能

<template><div class"timeRange"><div class"calendar"><table><thead><tr><th rowspan"6" class"weekRow"><b>周/时间</b></th><th colspan"24"><…

【机器学习】西瓜书习题3.3Python编程实现对数几率回归

参考代码 结合自己的理解&#xff0c;添加注释。 代码 导入相关的库 import numpy as np import pandas as pd import matplotlib from matplotlib import pyplot as plt from sklearn import linear_model导入数据&#xff0c;进行数据处理和特征工程 # 1.数据处理&#x…

Linux 学习记录60(ARM篇)

Linux 学习记录60(ARM篇) 本文目录 Linux 学习记录60(ARM篇)一、SPI总线1. 概念2. 硬件连接 二、SPI总线协议三、SPI总线通信模式四、对比IIC总线和SPI总线1. 相同点2. 不同点 思维导图 一、SPI总线 1. 概念 1、SPI总结是Motorola首先提出的全双工三线/四线同步串行总线 2、采…

Rust- 模块

&#xff08;1&#xff09;在项目根目录下创建mylib&#xff08;里面实现自定义的外部模块&#xff09; cargo new --lib mylib &#xff08;2&#xff09;在 项目名\mylib\src\lib.rs文件中实现新模块 pub mod add_salary {pub fn study(name: String) {println!("Rust…

WEB浏览器轻松读写NDEF智能海报、地图坐标、文本标签信息

本示例使用的发卡器&#xff1a;Android Linux RFID读写器NFC发卡器WEB可编程NDEF文本/智能海报/-淘宝网 (taobao.com) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&…

Python状态模式介绍、使用

一、Python状态模式介绍 Python状态模式&#xff08;State Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许对象在不同的状态下表现不同的行为&#xff0c;从而避免在代码中使用多重条件语句。该模式将状态封装在独立的对象中&#xff0c;并根据当前状态选择不同的…