顏色的表示和還原(一)

這篇文章主要提煉于ICCV 2019 Tutorial: Understanding Color and the In-Camera Image Processing Pipeline for Computer Vision。里面深入淺出地講解了很多ISP中的基礎知識,這里主要對顏色相關的部分做一點總結。

假設不成立了

相機經常被簡單地看作是衡量光線的設備light-measuring device,而圖像被看作是輻射量化后的結果。這一假設在HDR,圖像匹配,shape from shading等領域都被認為成立。

但實際上相機尤其是數碼相機對進入相機的光線做了很多處理,都是為了生成更符合人眼審美的圖像visually pleasingphotographs。佳能,索尼的相機在同一參數下得到的照片色彩有不同的風格。而不用說后期的軟件階段的PS,在硬件階段就發生了很多操作(on board photo-finishing):

?

所以HDR一般使用raw數據,因為raw數據是線性的,是和曝光量成正比的,或者通過建模從rgb圖恢復線性rgb。

顏色是波長

牛頓爵士通過色散實驗證明了日光是不同的顏色混合,而現在我們知道不同顏色的光波長不同。

對于人眼來說,人眼細胞分為錐狀細胞cone和桿狀細胞rod,前者負責感應顏色,后者對亮度更敏感,處理暗處的環境。

但是cone只有三種細胞,且這三種細胞的感應曲線不是沖激型的,這意味著同一個細胞對不同波長都有響應。三種感應曲線進一步疊加得到最終人眼的感應曲線。而物體的輻射波長也是有一定帶寬的,這就造成不一樣的波長輸入,比如卷心菜和綠色墨水的輻射,在人眼看來可能是一樣的色彩,稱為metamers。

?

?Spectral power distribution (SPD)用來表示輻射的波長的分布情況。

顏色分解組合

前面的三種顏色刺激就是Tristimulus color theory。在此基礎上,Grassman’s Law進一步表明了任意顏色是三原色的線性加權組合,這三種基本顏色就像是單位正交基一樣,張成了顏色空間。

?

對綠色最敏感

通過“flicker photometry”實驗,發現人眼對綠色很敏感,綠色只需要很低的強度就能被人識別到。實驗把某一波長的光和refernce光以17Hz的頻率交替打在背景板上,逐步加強實驗波長光線的強度,直至人眼感覺不到閃爍。所需強度越小說明對該波長越敏感。可以看到,綠色所需的強度是最小的。

?

CIE1931 RGB

既然任意波長的光都可以分解為RGB三原色,那么遍歷各個單色波長,可以得到三原色對應的三個權重參數。

國際照明委員會在1931年采用了700nm的紅,546.1nm的綠,435.8nm的藍作為三原色,邀請了300多名觀察者重新做了顏色匹配實驗,最終得到的實驗數據.

?

需要注意的是有時候只靠融合三原色無法得到和test color相近的顏色,這時需要把顏色分量疊加在test color上,這就相當于RGB的系數是負數,所以最終的權重曲線有負數:

?

CIE1931?XYZ

CIE RGB由于有負數的存在,不方便人理解。但如果重新選取RGB基準色,重新做顏色匹配實驗又未免有點麻煩。CIE做法是基于CIE RGB推出了XYZ,可以認為是將RGB的基向量變換得到了新的基向量XYZ。

?

?這樣就可以得到光譜中每種單色光在XYZ坐標系下的坐標。此時xyz下已經沒有了負數:

?

色品圖和馬蹄圖

rgb的權重歸一化之后就得到了色品坐標:

又因為三個色品坐標和為1,所以可以只考慮r和g的色品坐標,得到一個二維的圖:

?

?和之前一樣,r分量有相當大的一部分落在負數象限。還可以看到實際可取的取值范圍是馬蹄形曲線,如果選擇3個點的連線將馬蹄形包含起來,那么這三個點就可以作為新的基,可以避免權重負數的情況。可以看到,紅色線段就是我們最終的選擇。

首先觀察到XY線段表示的是520~700處r與g的近似線性關系,此時在RGB曲線上可以看到b=0.

顏色匹配包含了亮度的匹配。亮度方程Y=r+4.5907g+0.0601b,因為對綠色敏感,所以g的取值更高。令亮度方程Y=r+4.5907g+0.0601b=0=r+4.5907g+0.0601*(1-r-g),可以得到XZ所在的直線。

最后,選取的為波長503nm出的點相切的直線。最終得到了XYZ。所以就得到了基RGB到XYZ的變換矩陣。

reference:

https://zhuanlan.zhihu.com/p/137639368

聊聊顏色的技術實現(二)—— CIE 1931 XYZ系統 - 簡書

色域馬蹄圖是怎么來的?——CIE 1931 XYZ色彩空間詳解 - 知乎

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/13103.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13103.shtml
英文地址,請注明出處:http://en.pswp.cn/web/13103.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

STM32學習計劃

前言: 這里先記錄下STM32的學習計劃。 2024/05/08 今天我正在學習的是正點原子的I.MX6ULL APLHA/Mini 開發板的 Linux 之ARM裸機第二期開發的視頻教程,會用正點原子的I.MX6ULL開發板學習第二期ARM裸機開發的教程,然后是學習完正點原子的I.M…

Mybatis基礎操作-刪除

Mybatis基礎操作-刪除 刪除 package com.itheima.mapper;import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Mapper;Mapper //在運行時,會自動生成該接口的實現類對象(代理對象),并且將該對象…

QT:QML與C++交互

目錄 一.介紹 二.pro文件添加模塊 三.h文件 四.cpp文件 五.注冊 六.調用 七.展示效果 八.代碼 1.qmlandc.h 2.qmlandc.cpp 3.main.cpp 4.qml 一.介紹 在 Qt 中,QML 與 C 交互是非常重要的,因為它允許開發人員充分利用 QML 和 C 各自的優勢&…

我21歲玩“擼貨”,被騙1000多萬

最近,擼貨業界內發生了一些頗受矚目的事件。 在鄭州,數碼檔口下面搶手團長跑路失聯,涉及金額幾百萬,在南京,一家知名的電商平臺下的收貨站點突然失聯,涉及金額高達一千多萬,令眾多交易者震驚不已…

用scp將文件夾從一個服務器備份到另一個服務器

用scp將文件夾從一個服務器備份到另一個服務器 問題描述解決辦法 問題描述 公式服務器要回收了,如何將數據備份到另一個服務器上。 解決辦法 代碼如下 scp -P 32660 -r /path/of/the/original/file username10.258.36.187:/path/of/the/target/filescp -P 目標…

YOLOv8改進 | 圖像修復 | 適用多種復雜場景的全能圖像修復網絡AirNet助力YOLOv8檢測(全網獨家首發)

一、本文介紹 本文給大家帶來的改進機制是一種適用多種復雜場景的全能圖像修復網絡AirNet,其由對比基降解編碼器(CBDE)和降解引導修復網絡(DGRN)兩個神經模塊組成,能夠在未知損壞類型和程度的情況下恢復受…

Java | Leetcode Java題解之第92題反轉鏈表II

題目: 題解: class Solution {public ListNode reverseBetween(ListNode head, int left, int right) {// 設置 dummyNode 是這一類問題的一般做法ListNode dummyNode new ListNode(-1);dummyNode.next head;ListNode pre dummyNode;for (int i 0; …

【SQL】SQL常見面試題總結(3)

目錄 1、聚合函數1.1、SQL 類別高難度試卷得分的截斷平均值(較難)1.2、統計作答次數1.3、得分不小于平均分的最低分 2、分組查詢2.1、平均活躍天數和月活人數2.2、月總刷題數和日均刷題數2.3、未完成試卷數大于 1 的有效用戶(較難&#xff09…

藍橋杯 EDA 組 歷屆國賽真題解析

一、2021年國賽真題 1.1 CN3767 太陽能充電電路 CN3767 是具有太陽能電池最大功率點跟蹤功能的 4A,12V 鉛酸電池充電管理集成電路。 最大功率點應指的是電池板的輸出電壓,跟蹤電壓其做保護。當然 CN3767 也可以直接使用直流充電,具體可以閱讀…

ROS 2邊學邊練(49)-- 生成URDF文件

前言 大多數機器人學家都在團隊中工作,這些團隊中往往包括機械工程師,他們負責開發機器人的CAD模型。與手動創建URDF(統一機器人描述格式)文件不同,可以從許多不同的CAD和建模程序中導出URDF模型。這些導出工具通常…

[POJ-1321]棋盤問題

題源:POJ-1321 深搜板子題&#xff0c;非常基礎&#xff0c;難度不大 思路1&#xff1a;廣搜行 深搜列 #include<iostream> #include<cstring> using namespace std; const int MAX9; int a,b,ans; char m[MAX][MAX]; //深搜列&#xff0c;廣搜行 bool h[MAX]; v…

DS高階:跳表

一、skiplist 1.1 skiplist的概念 skiplist本質上也是一種查找結構&#xff0c;用于解決算法中的查找問題&#xff0c;跟平衡搜索樹和哈希表的價值是一樣的&#xff0c;可以作為key或者key/value的查找模型。skiplist是由William Pugh發明的&#xff0c;最早出現于他在1990年發…

Python學習之路 | Python基礎語法(一)

數據類型 Python3 中常見的數據類型有&#xff1a; Number&#xff08;數字&#xff09;String&#xff08;字符串&#xff09;bool&#xff08;布爾類型&#xff09;List&#xff08;列表&#xff09;Tuple&#xff08;元組&#xff09;Set&#xff08;集合&#xff09;Dict…

鴻蒙HDC命令行工具:模擬操作

模擬操作 uinput用于輸入模擬操作&#xff0c;其命令幫助手冊為&#xff1a; > hdc shell uinput --help Usage: uinput <option> <command> <arg>... The option are: -M --mouse //模擬鼠標操作 commands for mouse: -m <dx> <d…

【Image captioning】基于檢測模型網格特征提取——以Sydeny為例

【Image captioning】基于檢測模型網格特征提取——以Sydeny為例 今天,我們將重點探討如何利用Faster R-CNN檢測模型來提取Sydeny數據集的網格特征。具體而言,這一過程涉及通過Faster R-CNN模型對圖像進行分析,進而抽取出關鍵區域的特征信息,這些特征在網格結構中被系統地…

1金融風控相關業務介紹

金融風控相關業務介紹 學習目標 知道常見信貸風險知道機器學習風控模型的優勢知道信貸領域常用術語含義1 信貸&風控介紹 信貸業務,就是貸款業務,是商業銀行和互聯網金融公司最重要的資產業務和主要贏利手段 通過放款收回本金和利息,扣除成本后獲得利潤。貸款平臺預測有…

java中什么是方法的返回值?方法有哪幾種類型?

在Java中&#xff0c;方法的返回值是指方法執行后返回給調用者的結果。返回值可以是任何數據類型&#xff0c;包括基本數據類型&#xff08;如int、float&#xff09;和引用數據類型&#xff08;如String、對象&#xff09;。返回值的主要作用是將方法執行的結果傳遞給調用該方…

springboot集成dubbo實現微服務系統

目錄 1.說明 2.示例 3.總結 1.說明 dubbo官網&#xff1a;https://cn.dubbo.apache.org/zh-cn/ Apache Dubbo 是一款 RPC 服務開發框架&#xff0c;用于解決微服務架構下的服務治理與通信問題&#xff0c;支持多種語言&#xff0c;官方提供了 Java、Golang 等多語言 SDK 實…

什么是Vue.js? Vue.js簡介

什么是Vue.js? Vue.js簡介 Vue.js是一種用于構建用戶界面的前端框架。它是目前非常流行的JavaScript框架之一&#xff0c;被廣泛應用于單頁應用和響應式網頁開發。 Vue.js具有以下特點和優勢&#xff1a; 輕量級&#xff1a; Vue.js的文件體積很小&#xff0c;加載速度快&…

代碼隨想錄--鏈表--反轉鏈表

題目 題意&#xff1a;反轉一個單鏈表。 示例: 輸入: 1->2->3->4->5->NULL 輸出: 5->4->3->2->1->NULL 思路 如果再定義一個新的鏈表&#xff0c;實現鏈表元素的反轉&#xff0c;其實這是對內存空間的浪費。 其實只需要改變鏈表的next指針的…