Just My Life & My Work

OpenCV使用函式就能很簡單地轉換色彩空間,然而我在這過程中發現一些差異性的問題,理論跟實際是有些許落差,這將影響我做研究的結果呢!

我從這兩個網頁(Color calculatorCIE Color Calculator)計算如上圖純綠色RGB(0, 255, 0)到Lab色彩空間,但出現不同的結果……

結果一是Lab(87.737, -86.185, 83.181)

結果二是Lab(87.8181, -79.2873, 80.9902)

兩者Lab值都區間化到L(0, 100)、a(-128, 127)、b(-128, 127)區間。

其它色彩空間轉換的值也不盡相同!對我來說,這樣的誤差非常大~ 接著我使用OpenCV來做Lab和RGB色彩空間互轉,以轉換色彩空間 (Transform Color Space)這篇程式碼來實驗,以上圖純綠色RGB(0, 255, 0)為例:

這是RGB轉到Lab色彩空間顯示結果,使用PhotoImapct色彩標定為RGB(210, 42, 225)。接著以上圖粉紅色RGB(210, 42, 225)為例:

Lab轉到RGB色彩空間顯示結果,使用PhotoImapct色彩標定為RGB(0, 255, 1),我並沒有打錯,色彩空間轉回去不再是原圖……原因是轉換過程在程式中是以浮點數做運算,我們知道浮點數精準度有某程度的誤差,所以才會導致前後不符的結果。

話說,粉紅色RGB(210, 42, 225)轉到Lab色彩空間區間的值,也跟那兩網頁的計算結果不同……

哇咧~做研究到一半就發現色彩空間有誤差這種問題,該怎麼辦?我只好使用同一個平台的轉換,反正色彩空間轉換只是中間的過程,最後還是要轉回RGB色彩空間,所以平台間差異很大倒是無關緊要。那我就一直使用OpenCV轉換色彩空間,些微誤差還可以接受。

色彩空間互轉的公式可以在這篇找到:Color conversion math and formulas

參考:WiKi – Lab color space、WiKi – Lab色彩空間、WiKi – 色彩空間、百度百科 – Lab

Comments on: "轉換色彩空間 (Transform Color Space)" (1)

  1. […] 我以為透過OpenCV轉換色彩空間,可以很輕易地來回轉換,而且不會有失真的問題。然而後來我知道,轉換色彩空間會有計算上精準度的問題(小問題),除此之外我又發現一個更容易失真的問題(大問題),其實對程式設計師而言相當容易發現才是,也就是:轉換色彩空間一個函式、儲存影像一個函式,後者失真程度遠大於前者!怎麼會這樣子呢?來看一下實驗結果…… […]

[OpenCV] 轉換色彩空間失真 (Transform Color Space Distortion) « 逍遙文工作室 發表迴響 取消回覆

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

標籤雲

%d 位部落客按了讚: