颜色的基本处理
数码相机能够获取彩色图像,但相机的色彩处理是一个非常复杂的过程,是非常重要的。
此过程生产制造商在细节方面都是不公布的,但是基本的概念是相同的。当相机捕捉一个真实场景时,是怎么还原成人眼所看到的图像呢?
1.RAW----相机获取到的原始图像
绝大多数的彩色图像传感器使用Bayer模式,Bayer模式颜色传感器是采用红、绿、蓝滤光片。所以每个像素是能够探测到一种颜色,它“看到”的是红色、绿色或蓝色。因为绿色是亮度信息中最重要的颜色, 所有我们对于绿色采用两个像素,蓝色一个,红色一个。

图1:传感器信号不包含颜色信息,每个像素代表一种颜色。

图2 :上图的细节。每个像素只检测一个颜色。图片仍然是“马赛克”
2.去马赛克
为了得到每个像素的红色,绿色和蓝色的信息,去马赛克的重要步骤是对丢失的信息进行插值。这关系着图像的质量。因此很多厂商是不会透露在细节上做了什么。不同的滤光片导致对光的灵敏度不同且信号强度较低,因此噪声级别可能会非常不同。在去马赛克的处理过程中,噪声是通过相邻元素之间扩散,不同的颜色通道中噪声是相互关联的。

图3 :一个像素的信息用于相邻像素的颜色信息

图4 :经过去马赛克处理,每个像素都有了一个红、绿、蓝的值,所以原图会变成彩色图片
3.白平衡
在数码相机中,不同颜色通道的灵敏度是不同的。为了获取符合人眼视觉的正确颜色,相机以不同方式控制不同通道的增益。经过白平衡处理后,图像中的中性区域显现中性,并且数值和红色,绿色及蓝色几乎相同。

图5:调整所有的通道的增益后,图像显现中性
4.颜色校正矩阵(CCM)
每个相机都有各自的光谱灵敏度。所以每个相机都具有特定的RGB输出。要获得所有相机一致的结果,必须将相机的RGB转换为标准已知的色彩空间,在大多数情况下是sRGB,但可以是任意其它的色彩空间。要把值从RGB_camera转换到sRGB,必须对数据添加一个3 x3的颜色校正矩阵(CCM)。

图6:当CCM矩阵应用后,颜色被转换为已知定义的色彩空间(sRGB)
5.Gamma
不管图像中是在暗区检查和亮区检查,到目前步骤为止,图像的数据依然是线性的。因此将光强加倍会使图像中的数值加倍。在输出设备中为了得到正确的表现方式,图像通常会应用Gamma功能。这个曲线被用在图像处理的最后阶段,因为从现在起图像的数据就是非线性的,开始接近于人眼所看到的的图像画面。

图7:完成后,把RAW图片转换成sRGB图片
相关文章:
颜色的基本处理
数码相机能够获取彩色图像,但相机的色彩处理是一个非常复杂的过程,是非常重要的。 此过程生产制造商在细节方面都是不公布的,但是基本的概念是相同的。当相机捕捉一个真实场景时,是怎么还原成人眼所看到的图像呢? 1.R…...
跟李笑来学美式俚语(Most Common American Idioms): Part 66
Most Common American Idioms: Part 66 前言 本文是学习李笑来的Most Common American Idioms这本书的学习笔记,自用。 Github仓库链接:https://github.com/xiaolai/most-common-american-idioms 使用方法: 直接下载下来(或者clone到本地…...
爬虫技术简介
1、爬虫简介 爬虫(Web crawler)是一种用于自动获取网页内容的程序。它可以通过模拟浏览器访问网页,并从中提取所需的信息,如文本、图片、链接等。爬虫在互联网上进行广泛应用,用于搜索引擎的网页抓取、数据挖掘、信息收集、内容监测等领域。 2、爬虫分类 爬虫的分类有以…...
如何打开Windows10的设备管理器
如何打开Windows10的设备管理器? 01 02...
scala列表
1 不可变 List 说明 (1)List 默认为不可变集合 (2)创建一个 List(数据有顺序,可重复) (3)遍历 List (4)List 增加数据 (5&#…...
c++检查某一文件是否存在
C17及以上版本,检查文件是否存在可以使用filesystem库 如果使用的是C11或C14,标准库并没有直接提供这样的功能。 可以使用平台特定的API,例如在Windows上使用 _access 函数,或在POSIX兼容系统(如Linux和macOS&#x…...
Scala的隐式类,隐式参数和值,隐式对象
1.Scala的隐式类定义语法:implicit class 类名(参数){ } 隐式类中参数只能定义一个,参数中的源类型与目标类型一一对应,只能从一种类型转换成另一种类型,不可以一对多或多对。 //隐式类:implicit class隐式转换函…...
LabVIEW实现HTTP通信
目录 1、HTTP通信原理 2、硬件环境部署 3、云端环境部署 4、HTTP通信函数 5、程序架构 6、前面板设计 7、程序框图设计 本专栏以LabVIEW为开发平台,讲解物联网通信组网原理与开发方法,覆盖RS232、TCP、MQTT、蓝牙、Wi-Fi、NB-IoT等协议。 结合实际案例,展示如何利用LabVIEW和…...
【EXCEL】 获取多列中 不为空的那一个数据
从多个表格筛选出来的上班时间是下表这样的 我要把他们放在同一列,这样方便后续处理,合并列输入下面这个公式即可 日期不加 TEXT() 函数 转日期格式;将得到是一串数字 TEXT(TEXTJOIN(", ",TRUE,B2:F2),&qu…...
VBA API 概述 | 宏编程
注:本文为 “VBA API 概述 | 宏编程 | 执行速度慢” 相关文章合辑。 VBA API 详解 Office 二次开发于 2020-12-17 22:27:10 发布 Office 版本变动 在 Office 2010 之前,微软仅提供 32-bit 版本的 Office。而自 Office 2010 起,出现了 32-b…...
pythonOpenCV篇:0基础带你python入门之常用函数
① 二值化函数 功能:将图像转换为二值图像(黑白图像),将像素值分为两种类别:前景(白)和背景(黑)。函数:cv2.threshold()参数: src:输…...
第十七届山东省职业院校技能大赛 中职组“网络安全”赛项资源任务书样题③
第十七届山东省职业院校技能大赛 中职组“网络安全”赛项资源任务书样题③ 模块A 基础设施设置与安全加固(200分)A-1 登录安全加固(Windows, Linux)A-2 Nginx安全策略(Linux)A-3日志监控(Windows)A-4中间件…...
【每日一题 基础题】验证回文串
LCR 018. 验证回文串 验证回文串 给定一个字符串 s ,验证 s 是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 本题中,将空字符串定义为有效的回文串 。 验证回文串 LCR 018. 验证回文串方法一:**筛选 判断…...
【Hadoop】-- hadoop3.x default port
Hadoop 3.x 修改了一些以前常用的默认端口,完整的默认端口列表,可点击下面配置文件获取信息: core-default.xmlhdfs-default.xmlhdfs-rbf-default.xmlyarn-default.xml...
SQL Server:只有MDF文件,如何附加数据库
第一步:先新建一个同名数据库,然后停止sql服务,删除新建数据库.ldf文件。 第二步:将要附加的数据库的.mdf文件覆盖刚新建的.mdf文件,并重启sql服务。 第三步:这时数据库DATA目录下只有一个.mdf文件…...
深入理解代理模式(Proxy):静态代理、动态代理与AOP
目录 1. 代理模式简介2. 静态代理3. 动态代理 3.1 JDK动态代理3.2 CGLIB动态代理 4. 面向切面编程(AOP)5. 实战示例6. 总结与最佳实践 1. 代理模式简介 代理模式是一种结构型设计模式,它允许我们提供一个代理来控制对其他对象的访问。代理模式在不改变原始类代码…...
项目中如何选择JVM垃圾回收器?
大家好,我是锋哥。今天分享关于【项目中如何选择JVM垃圾回收器?】面试题。希望对大家有帮助; 项目中如何选择JVM垃圾回收器? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在一个项目中选择合适的 JVM 垃圾回收器 (Garbage Collector, GC…...
如何借助5G网关实现油罐车安全在线监测
油罐车是常见的特种运输车辆,用以运送各种汽油、柴油、原油等油品,运输危险系数大,而且由于油罐车需要经常行驶在城区道路,为城市各个加油站点、企业工厂运输补充所需油料,因此也是危化品运输车辆的重点监测和管控对象…...
Edge SCDN的独特优势有哪些?
强大的边缘计算能力 Edge SCDN(边缘安全加速)是酷盾安全推出的边缘集分布式 DDoS 防护、CC 防护、WAF 防护、BOT 行为分析为一体的安全加速解决方案。通过边缘缓存技术,智能调度使用户就近获取所需内容,为用户提供稳定快速的访问…...
在Goland中对goroutine协程断点调试
在Goland中对goroutine协程断点调试 环境: Goland 参考了 chatgpt 的回复 进行断点调试的代码 package mainimport ("fmt""sync""time" )// worker 模拟处理任务 func worker(id int, wg *sync.WaitGroup) {defer wg.Done() // 确保任务完成后…...
瑞昱RTL8762CMF蓝牙5.0芯片烧录避坑指南:从MPTool配置到功耗优化实战
瑞昱RTL8762CMF蓝牙5.0芯片工程化烧录与性能调优全解析 当产品开发进入小批量试产阶段,工程师面临的核心挑战从"功能实现"转向"量产稳定性"和"性能优化"。瑞昱RTL8762CMF作为一款集成蓝牙5.0功能的低功耗芯片,其烧录配置与…...
Linux上运行Cursor编辑器:AppImage打包与AI编程环境搭建指南
1. 项目概述:一个为Linux用户定制的代码编辑器如果你是一名长期在Linux环境下工作的开发者,尤其是习惯了使用VS Code这类现代编辑器,但又对某些AI辅助编程工具(比如Cursor)的便捷性念念不忘,那么你很可能已…...
百度网盘macOS插件:技术探索与速度优化方案解析
百度网盘macOS插件:技术探索与速度优化方案解析 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 在macOS平台上使用百度网盘的用户常常面临下…...
openOii:开源工业信息集成框架架构解析与实战指南
1. 项目概述与核心价值最近在开源社区里,一个名为openOii的项目引起了我的注意。这个由开发者 Xeron2000 发起的项目,从名字上就透着一股“开放”和“工业”的气息。作为一个在工业自动化和数据集成领域摸爬滚打了十多年的老兵,我深知在制造业…...
CANoe各版本软件包怎么找?从Demo到Full Installer的下载指南与版本选择建议
CANoe版本管理与资源获取全攻略:从Demo到Full Installer的深度实践指南 在汽车电子开发与测试领域,Vector公司的CANoe软件堪称行业标准工具。但许多工程师在实际工作中常遇到这样的困境:项目需要特定历史版本进行兼容性测试,而官网…...
别让求解器‘装傻’:COMSOL中‘事件接口’的隐藏用法与常见坑点
别让求解器‘装傻’:COMSOL中‘事件接口’的隐藏用法与常见坑点 在瞬态耦合仿真中,你是否遇到过这样的场景:电磁场脉冲已经结束,但温度场仍在缓慢爬升;或者结构载荷突然释放,但求解器却将突变平滑处理&…...
如何用OBS插件打造专业音乐直播?Tuna插件完整指南
如何用OBS插件打造专业音乐直播?Tuna插件完整指南 【免费下载链接】tuna Song information plugin for obs-studio 项目地址: https://gitcode.com/gh_mirrors/tuna1/tuna 想让你的OBS直播画面瞬间升级为专业音乐电台风格吗?Tuna插件正是你需要的…...
革命性Figma中文插件:智能汉化让设计界面秒变母语
革命性Figma中文插件:智能汉化让设计界面秒变母语 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 还在为Figma的英文界面而烦恼吗?FigmaCN是一款专为中文用户打造…...
基于Gemini与Elasticsearch构建智能数据查询命令行工具
1. 项目概述:当Elasticsearch遇见Gemini,一个命令行智能体的诞生 最近在开源社区里闲逛,发现了一个挺有意思的项目: elastic/gemini-cli-elasticsearch 。光看这个名字,就能嗅到一股“强强联合”的味道。Elasticsea…...
深度解析:libiec61850开源库如何解决电力系统通信的三大核心挑战
深度解析:libiec61850开源库如何解决电力系统通信的三大核心挑战 【免费下载链接】libiec61850 Official repository for libIEC61850, the open-source library for the IEC 61850 protocols 项目地址: https://gitcode.com/gh_mirrors/li/libiec61850 在电…...
