深入瞭解 CDP (Contrast Detection Probability)

眾所周知,在傳統圖像處理領域,不同的處理任務都有各自的一套評價標準,比如降噪任務中的PSNR 和 SSIM,自動白平衡中的角度差,顏色還原中的色差,等等。

但當我們把應用場景切換到 CV 領域後,照搬這套傳統的圖像質量評價(Image Quality Assessment, IQA)體系來評價一個成像系統的性能,很有可能無法得到客觀、公正的結果。

舉個例子,在目標檢測任務中,假設一個檢測模型的訓練樣本全部來自於一台 360P 的古董監控攝像頭,那麼在部署這個模型時,即使給它一張 4K HDR 圖像,其檢測精度往往可能還不如另一張同樣來自這個 360P 攝像頭的圖像——並不是說 4K HDR 圖像的質量不好,但是在當前這一場景下,它與已經訓練好的數據驅動的 deep learning 模型並不適配。

因此,在 CV 任務的場景下,當一張圖像的觀察主體從人眼+人腦的組合切換為某個 DL 模型時,我們有必要對原有的圖像質量評價體系進行重新定義。

在針對 CV 任務提出的 IQA 方案(以下稱為 CV-IQA)中,用戶注重的不再是解析度、信噪比、顏色準確性這些面向人眼的圖像質量指標,而是會更加關注於物理世界中的信號在數字域中的可復現性(Reproducibility)和復現可靠性(Reproduction Reliability)。

以下圖為例,左邊是一塊限速牌在物理世界中真實的亮度分布(用單位面積輻射出的光子數表示),右邊是使用某台相機拍攝下的該限速牌的圖像。由於任何光學系統和半導體器件都存在一些固有缺陷,因此在最終的圖像中,限速牌各個部分的對比度,或者說信號的可觀測差異,要比物理世界中的真實限速牌差得多。

左:真實亮度;右:圖像中的像素值

差得多,那麼究竟差了多少呢?我們試圖從傳統 IQA 指標中去尋找一個能夠表徵這種差異程度的指標:PSNR?量綱都對不上,PSNR 肯定沒法計算,而且實際環境下這兩張圖也很難實現像素級的對齊;對比度?右邊這張圖像里有那麼多的像素,要計算誰和誰之間的對比度?想了一圈發現,在這種實驗設置下,傳統指標似乎總是差了那麼一點意思。

什麼是 CDP
CDP(Contrast Detection Probability)指標是 IEEE P2020 小組(Automotive Image Quality Working Group)針對自動駕駛場景提出的一套 CV-IQA 方案,旨在克服傳統 IQA 方案(如 IEEE Std 1858、EMVA1288、ISO 12233)用於車載影像質量評價時存在的一些缺陷。

用一句話概括 CDP 存在的意義:CDP表徵了成像系統對物理世界輻射信號差異的復現能力(原文:CDP is a metric to describe the performance of an imaging system to reproduce contrasts in the physical scenes)。

划兩個重點:

第一,在 CV 任務中,我們希望成像系統能夠重點關注物理信號間的差異,而非信號本身的絕對大小。例如對於物理世界里亮度為(500cd/m²,600cd/m²)的兩個物體,我們關心的是在最終的輸出圖像中這兩個物體能否進行區分,而並不關心具體的灰度值大小,它們可以是(200,255),也可以是(55,64)。

這一點很好理解,因為一旦這兩個物體在圖像中無法區分,其梯度便退化為零,基於特徵提取的 CV 模型自然無法從中提取出任何差異化信息,不管是分類還是檢測還是分割任務,統統歇菜。

第二,CDP 考量的是成像系統能否對信號差異進行準確復現。所謂準確復現,即是說物理世界里一組信號之間的差異有多大,在最終輸出圖像中,這個差異應該還是有多大。信號的差異在經過成像系統前後需要維持在一個相同的水平,既不能放大,也不能減小。還是上面那個例子,假如我們用 Weber 對比度作為計算信號差異的指標,那麼物理世界中這兩個信號之間的差異為

如果有兩個成像系統 A 和 B,在它們的輸出圖像ΓA和ΓB中,這兩個物體的灰度值分別為(200,255)和(55,64) ,那麼有:

這時我們就說成像系統 A 有著更好的信號差異復現能力,因為 0.275 相比 0.28 更接近物理世界中的真實對比度值——0.2。

從直覺上來說,我們往往會希望成像系統能夠把真實世界中的信號差異進行一定程度的放大,比如ISP 里的邊緣增強、對比度增強等模塊,都是為了突出和強調信號間的差異。但是在 CV 的語境下,我們希望成像系統能夠盡量做到信息(即信號差異)的忠實還原,因此 B 系統雖然對信號差異進行了放大,但是其 CDP 指標卻要低於 A 系統。這個例子也直觀體現了 CV-IQA 與傳統 IQA 之間的設計思想差異。

鋪墊了這麼長,那麼為什麼 CDP 這個指標可以針對自動駕駛場景下(或者說得更泛一點,大部分 CV 場景下)成像系統的質量進行評價呢?我個人的理解是,圖像不同區域之間信號的可分辨性(distinguishability)是 CV 模型執行正確計算的必要條件,因此可以用 CDP 來衡量一個成像系統對物理世界中信號的檢測能力的上限——如果一個成像系統的 CDP 很高,其檢測能力未必很好,但是如果 CDP 很低,其檢測能力一定不好。換句話說,CDP 並不是一個萬能的 CV-IQA 方案,它只是為我們提供了一個相對客觀的評價維度,同時補足了傳統 IQA 中存在的一些短板。

技術細節
這一節重點介紹 CDP 這個指標究竟如何對成像系統的質量進行定量評價,以及給定一台相機,我們要如何計算出最終的 CDP 結果。

繼續沿用上節中的例子。

假設物理世界中有兩塊亮度分別為 500cd/m²和 600cd/m²的理想漫反射平面:

上一節中我們已經計算出了它們之間的 Weber 對比度為Kworld=0.2 。同時,使用它們的亮度平均值

作為這一組信號的物理亮度 。

現在我們使用一台相機分別去拍攝這兩塊平面,假設得到這樣兩幅圖像:

從兩張圖像中各自隨機抽取一個像素,如下紅色小方框所示。不妨假設它們在圖像中的灰度值分別為160和206。

CDP 要求我們在計算這兩個像素的對比度之前,先把它們從圖像灰度值域(digital-number domain)映射回物理亮度域(luminance domain)。顯然,這時候我們並不清楚160和206的灰度值到底對應多少的物理亮度值,因此在執行這步操作之前,我們需要為當前成像系統構建一個輸出→輸入的反映射函數(inverse system function)。

P2020 中並沒有明確說明如何構建這個反映射函數,我個人採用的方法是,先在橫坐標為物理亮度、縱坐標為灰度值的平面內繪制出輸入→輸出曲線(即我們平時說的系統響應曲線),然後把當前要計算的灰度值作為y坐標,用bilinear 插值的方式計算出它在曲線中對應的x坐標,以此作為該像素對應的物理亮度值。

輸入→輸出曲線的繪制可以預先通過標定實驗來完成。我們假設當前相機的灰度值與物理亮度之間滿足如下近似於 Gamma 曲線的關係:

對於160和206的灰度值,我們在這條曲線上可以內插出其對應的物理亮度大約為505cd/m²和640cd/m²。換句話說,對於這台相機,digital-number domain 中的160 (206) 數值,大約對應到 luminance domain 中的505(640)cd/m²:

有了 luminance domain 中的一組亮度值之後,我們可以計算它們的 Weber 對比度:

除了可以按照如上兩個紅色小方框進行像素選取之外,我們一共有 M*N種方式從兩個 ROI 中各自選取一個像素構成一組 pixel-pair,其中M、N分別代表兩個ROI中的像素數。如果我們對這 組pixel-pair 都計算一次 Weber 對比度,則可以得到一個關於對比度的分布直方圖。

兩個平面在圖像中的 ROI都是32*32的正方形(M=N=32*32=1024),因此我們一共可以得到 1024*1024 ≈ 100,0000個對比度值,它們構成的直方圖如下所示:
對這個直方圖進行歸一化,我們就得到了一組 ROI-pair 之間的對比度概率分布函數p(K ):

(到此終於解釋了為什麼 CDP 中的那個 P 是 probability……)

在這個例子中,物理世界里兩個平面之間的信號差異為K world=0.2,而由於噪聲以及非線性的存在,在成像系統記錄下的信號中,它們之間的差異不再是一個具體的數值,而是一組關於對比度的概率分布函數p(.)。

在正式給出 CDP 的計算公式之前,需要先引入置信度的概念。

回想一下上文中我們對 CDP 的定義:CDP用來衡量成像系統對物理信號差異的復現準確性。對於K world=0.2的輸入信號,理想情況下,我們當然希望成像系統能夠分毫不差地復現出這個對比度數值,這時上圖中的概率分布理應是一個落在K =0.2處的Dirac 函數。

然而在實際系統中,p(.)必然有一定的帶寬,我們也會適當地放鬆對「準確復現」這一概念的定義,即,對於成像系統復現出的一組信號,只要它們的對比度落在 [K world (1-ε),K world (1+ε)]區間之內,我們就將其視為一次「準確復現」。這個ε,正是一個預設的置信度值。

回到上面的例子中,假設我們設定ε=10%,這時對於任意一組 pixel-pair,只要它們的對比度位於 [0.18,0.22]區間之內,我們都認為這組 pixel-pair 成功地對物理對比度進行了準確復現。在上面的概率分布函數中畫出0.18和0.22所在的位置,其包圍的區域與 p(.)取交集得到的面積,相對於p(.)與 K 軸包圍的面積之比,即為最終的 CDP 值:

陰影面積除以整個紅色曲線下面積即為 CDP 值

根據上圖陰影部分佔整個曲線下面積(AUC)的比例,CDP 值大約在 30% 左右。

我們注意到公式中的CDP是一個關於L的函數,這是因為,這一計算結果僅對平均亮度L=550cd/m²的一組輸入信號成立,當任一平面的物理亮度發生改變時(這時兩個平面的平均亮度也會改變),我們又需要重新構建一次p(.),再計算一個新的 CDP 值。

對於上面的例子,我們使用如下定義對系統的信號復現能力進行描述:

給定 10% 的置信度(ε=0.1),在550cd/m²的亮度水平下,當前成像系統有 30% 的概率準確復現出物理世界中對比度為K world=0.2的一組信號。

相比於傳統的 IQA 指標,CDP 在對成像系統的性能進行評價時把外界的信息也作為了自變量之一,從而實現了被測系統輸入(輻射信號)與輸出(數字信號)之間的互動。

計算示例
讓我們來看一個具體的示例。

假設有216個不同物理亮度的色塊,它們當中最亮亮度約為5*1,0000cd/m²
,最暗的約為7.5*0.01cd/m²,按下圖所示排布。(這一排布方式參考了 Image Engineering 的DTS 儀器)

現在我們使用一個基於長中短曝光三幀合成的 HDR 相機對這個場景進行拍攝,得到如下 RAW 圖像(實際是 16bit RAW,這裡為了能夠正常在屏幕上顯示所以做了一個16bit→8bit 的線性壓縮):

使用 DOL-HDR 技術的相機在特定的亮度拼接區域會出現明顯的 SNR drop,在這個例子中如果我們把圖像右上角進行放大,可以看到某些色塊對應的噪聲強度明顯大於其他色塊:

SNR drop 的存在導致某些亮色塊的噪聲反而高於暗色塊的噪聲,例如第4行第3列色塊 VS 第4行第4列色塊

我們把圖像中每個色塊單獨提取出來並計算其平均灰度值(這張圖里每個色塊大約佔40*40個像素),可以得到216個不同的灰度值。把色塊的物理亮度值作為橫坐標,把圖像灰度值作為縱坐標,可以繪制出這個相機的響應曲線(這是一個仿真的相機,實際相機的曲線不會這麼規整):

有了響應曲線,就可以使用上一節提到的插值的方法來構建圖像灰度值域到物理亮度域的反映射函數。

我們每次從這216個色塊中任意選取兩個色塊作為一組 RoI-pair,然後按照上一節的方法可以計算得到一個 CDP 值。對於216個色塊,一共可以不重復地選出組合數C(216,2)=2,3220組 ROI-pairs,因此最終一共將得到23,220個 CDP 值,以及23,220個物理對比度K world。

在實際的應用中,我們通常只關心某些物理對比度K world下的 CDP 情況,因此通常只會對這23,220組 ROI-pairs 中滿足K *(1-δ)<K world<K*(1+δ)的那些個 pairs 進行 CDP 的計算,其中K *表示用戶指定的目標對比度,δ是一個允許的 tolerance,一般取0.1即可。

為什麼不直接篩選出滿足K world=K *的 ROI-pairs,而是要設定一個容限δ?這是因為在有限個 ROI-pairs 當中,通常很難找到恰好等於目標對比度的 ROI-pairs,因此需要適當放寬一些篩選條件以確保獲得足夠數量的有效樣本。

在這一節的例子中,當我們指定目標對比度K*=0.2、δ=0.1時,一共可以得到291對滿足 0.18<K world<0.22的 ROI-pairs。如果我們把這291個 CDP 值繪制出來,並以物理亮度 L 作為橫坐標,可以得到這麼一個分布情況:

物理亮度越低時相機的信噪比越低,因此低亮度場景下的 CDP 值要明顯低於高亮度場景。換句話說,實際亮度越低,相機越難對真實的信號差異進行準確復現

這張圖完整表徵了被測相機對於指定的目標對比度(0.2),在不同環境亮度下對物理信號進行準確復現的能力。

類似地,我們還可以繪制出K*=0.06,K*=0.1以及K*=0.3下的 CDP 分布情況(這三個數值是 Image Engineering 推薦的目標對比度值):

當目標對比度減小時,CDP 的分布也逐漸下降,這表明瞭真實世界中信號的差異越小,成像系統越難進行準確的復現。此外,對於K*=0.06和K*=0.1的兩種情況,CDP 的散點分布在L=300cd/m²和L=4000cd/m²附近出現了兩個明顯的低谷,這對應了 DOL-HDR 相機的兩處 SNR drop(左上角的圖標識C應為 K*)

考慮到一個成像系統往往需要在不同的場景下工作,因此在使用 CDP 對成像系統的性能進行評價時,一般都會給出某個(或某幾個)目標對比度下 CDP 關於物理亮度的散點分布,而不是固定一檔亮度下的單個 CDP 數值。這一背景也導致了 CDP 無法以一個簡單指標的形式向用戶進行交付,同時也不容易對兩個系統的性能差異進行定量比較(P2020 小組並沒有提到如何評判兩組 L-CDP散點圖之間孰優孰劣),這也許也是導致CDP 始終沒有得到普遍應用的原因之一吧。

Reference
Geese M, Seger U, and Paolillo A, Detection Probabilities: Performance Prediction for Sensors of Autonomous Vehicles. 2018
Artmann U, Geese M, Gäde M, Contrast Detection Probability – Implementation and Use Cases. 2019
Imatest Documentation: Contrast Detection Probability. https://www.imatest.com/docs/cdp/
ISO 12232:2019 Photography — Digital still cameras — Determination of exposure index, ISO speed ratings, standard output sensitivity, and recommended exposure index.
Robin B. Jenkin, Comparison of Detectability Index and Contrast Detection Probability. 2019
Lukas Ebbert, Implementierung von CDP: Entwicklung eines Programmiercodes in Python zur Untersuchung und Messung von CDP bei Fahrerassistenzkameras. 2018

該技術文章轉載自其它網站,已取得作者授權,原文鏈接:
https://ridiqulous.com/contrast-detection-probability/