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

news2025/1/18 20:11:12

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

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

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

前言

能为我介绍一下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.coloradmin.cn/o/813839.html

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

相关文章

c++ ,vs2019, cpp20规范之 forward_list 源码分析

通过阅读源码可知,该单向链表不像list双向链表那样有专门的前导节点。即list._Mypair._Myval2._head._next才指向第一个有效数据节点。而 forward_list ._Mypair._Myval2._head 已经指向了有效数据节点。原因就在于复杂巧妙的类型转换。如下图的构造函数里&#xff…

C语言实现定时器,定时触发函数

最近想到使用C语言实现一个简单的定时器。使用操作系统windows.h提供的多线程API就能实现 首先定义一个定时器结构体,包含定时时间和触发的函数指针 typedef struct Stimer{int valid;//定时器有效long timingMS;//定时时间TriggerFunc tf;//触发函数 }Stimer;创建…

python下的control库使用

文章目录 control的官方网站函数示例强迫响应forced_response control的官方网站 函数示例 强迫响应forced_response import numpy as np import os import sys import control as ctrl import matplotlib.pyplot as pltdef lim_x(x, lim0):res 0if x > lim:res 1else:…

qt代码练习

计时器练习 namespace Ui { class third; }class third : public QWidget {Q_OBJECTpublic:explicit third(QWidget *parent nullptr);~third();QLabel *labth1 new QLabel(this);QTextEdit *txtth1 new QTextEdit("闹钟",this);QLineEdit *leth1 new QLineEdit(t…

Stable Diffusion:网页版 体验 / AI 绘图

一、官网地址 Stable Diffusion Online 二、Stable Diffusion AI 能做什么 Stable Diffusion AI绘图是一种基于Stable Diffusion模型的生成式AI技术,能够生成各种类型的图像,包括数字艺术、照片增强和图像修复等。以下是一些可能的应用: …

《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(13)-Fiddler请求和响应断点调试

1.简介 Fiddler有个强大的功能,可以修改发送到服务器的数据包,但是修改前需要拦截,即设置断点。设置断点后,开始拦截接下来所有网页,直到取消断点。这个功能可以在数据包发送之前,修改请求参数&#xff1b…

【wsl-windows子系统】安装、启用、禁用以及同时支持docker-desktop和vmware方案

如果你要用docker桌面版,很可能会用到wsl,如果没配置好,很可能wsl镜像会占用C盘很多空间。 前提用管理员身份执行 wsl-windows子系统安装和启用 pushd "%~dp0" dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper…

什么是DOTS?

(图片为实机测试) DOTS全称:(Burst Job SystemEntity Component System) 新型高性能、多线程面向数据的技术堆栈 是由:BrustJob System ECS组合而成,是一种面向数据对象的编程体系,在unity中您也可以对…

机器学习-Gradient Descent

机器学习(Gradient Descent) videopptblog 梯度下降(Gradient Descent) optimization problem: 损失函数最小化 假设本模型有两个参数𝜃1和𝜃2,随机取得初始值 求解偏微分,梯度下降对参数进行更新 Visualize: 确定梯度方向&…

学习使用axios,绑定动态数据

目录 axios特性 案例一:通过axios获取笑话 案例二:调用城市天气api接口数据实现天气查询案例 axios特性 支持 Promise API 拦截请求和响应(可以在请求前及响应前做某些操作,例如,在请求前想要在这个请求头中加一些…

leetcode 1372. 二叉树中的最长交错路径

给你一棵以 root 为根的二叉树,二叉树中的交错路径定义如下: 选择二叉树中 任意 节点和一个方向(左或者右)。 如果前进方向为右,那么移动到当前节点的的右子节点,否则移动到它的左子节点。 改变前进方向&a…

IIS创建网站报错 \\?\C:\Windows\inetsrv\config\applicationHost.config

现象: IIS创建不了网站,IIS配置没有发生改变 原因: 服务器C盘无空间,释放空间后问题解决。

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…

计算机毕设 深度学习卫星遥感图像检测与识别 -opencv python 目标检测

文章目录 0 前言1 课题背景2 实现效果3 Yolov5算法4 数据处理和训练5 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长…

VSCode搭建GCC环境

1. 下载 https://www.mingw-w64.org/downloads/ https://github.com/niXman/mingw-builds-binaries/releases 2.安装 x86_64-12.2.0-release-win32-seh-rt_v10-rev1.7z解压到D盘 我的电脑–属性–系统属性–环境变量–系统变量–path D:\MinGW-w64\x86_64-12.2.0-release…

用html+javascript打造公文一键排版系统10:单一附件说明排版

如果公文有附件,一般会在公文正文下作附件说明。 一、附件说明的格式 一般为: 公文如有附件,在正文下空一行左空二字编排"附件"二字,后标全角冒号和附件名称。如有多个附件,使用阿拉伯数字标注附件顺序号&…

OSI 7层模型 TCP/IP四层模型 5层模型都是什么,作用是什么【每层的协议没整理完】

7层模型 && 4层TCP/IP 模型对照关系 7层&&5层&&4层模型对照: 我们的教科书为了更好地表示数据包在网络传输上的封装和解封装,抽象出了5层模型 7层模型: 各层的用途: 应用层:为计算机上用户提…

Qt 2. QSerialPortInfo显示串口信息

在ex2.pro 添加&#xff1a; QT serialport//main.cpp #include "ex2.h" #include <QtSerialPort/QtSerialPort> #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);Ex2 w;w.show();QList<QSerialPortInfo>…

(二)利用Streamlit创建第一个app——单页面、多页面

1 单页面app Step1&#xff1a;创建一个新的Python脚本。我们称之为uber_pickups.py。 Step2&#xff1a;在您喜爱的IDE或文本编辑器中打开uber_pickups.py&#xff0c;然后添加以下行&#xff1a; import streamlit as st import pandas as pd import numpy as npStep3&…

计算机视觉(五)深度学习基础

文章目录 深度学习基础卷积神经网络与传统神经网络区别深度学习与神经网络的区别 目标函数选择合适的目标函数Softmax层 改进的梯度下降梯度消失的直观解释激活函数学习步长SGD的问题Momentum动量Nesterov MomentumAdagradRMSpropAdam 各种梯度下降算法比较关于算法选择的建议B…