[OpenCV] 轉換色彩空間失真 (Transform Color Space Distortion)
我以為透過OpenCV轉換色彩空間,可以很輕易地來回轉換,而且不會有失真的問題。然而後來我知道,轉換色彩空間會有計算上精準度的問題(小問題),除此之外我又發現一個更容易失真的問題(大問題),其實對程式設計師而言相當容易發現才是,也就是:轉換色彩空間一個函式、儲存影像一個函式,後者失真程度遠大於前者!怎麼會這樣子呢?來看一下實驗結果……
我以為透過OpenCV轉換色彩空間,可以很輕易地來回轉換,而且不會有失真的問題。然而後來我知道,轉換色彩空間會有計算上精準度的問題(小問題),除此之外我又發現一個更容易失真的問題(大問題),其實對程式設計師而言相當容易發現才是,也就是:轉換色彩空間一個函式、儲存影像一個函式,後者失真程度遠大於前者!怎麼會這樣子呢?來看一下實驗結果……
在OpenCV使用函式就能很簡單地轉換色彩空間,然而我在這過程中發現一些差異性的問題,理論跟實際是有些許落差,這將影響我做研究的結果呢!
先前已寫過轉換色彩空間 (Transform Color Space),但那時沒有測試到Lab色彩空間。當前研究需要使用CIE L*a*b*色彩空間,於是再次實驗該程式碼,並有深入瞭解各色彩空間相互轉換的數學關係。
之前有研究CIE L*a*b*色彩空間,現在想更進一步探討RGB色彩空間轉換至CIE L*a*b*色彩空間。
一般影像在儲存像素的色彩時,使用RGB色彩空間來表示一個像素的顏色,這種表示方法可用來傳達一個像素的色彩在紅、綠、藍三個頻道(channel)中的相關性;但是,從RGB表示法無法得知像素的明亮度(luminance)、飽和度(saturation)及色相(hue)為何,因此,我們將像素的色彩由RGB色彩空間轉換至CIELAB(或CIE L*a*b*)。
為什麼會想要研究這篇論文A Non-Photorealistic Rendering of Seurat’s Pointillism?跟風格化有關!可是跟NPR相關就不能繼續研究下去!因為會開啟一道大門,目前我所研究的HDR、Tone Mapping、Stylization範圍相當寬廣,要避免找錯方向的論文,不然回頭晚了就沒時間哩!
一般我們螢幕是以RGB來衡量,而印刷是以CMYK來調整,然我們的眼睛可以用更精確的L*a*b* 色彩空間 (L*a*b* Color Space)來描述,但因為過於複雜而鮮少使用於日常生活。
HappyMan・迴響