像素值超過 255

像素值超過 255

我有一個想法,製作一種繞過數字顏色值 255 的顏色。

現在,如果您不知道,電腦顏色是透過十六進位代碼創建的,其最大值為 FF,十六進位代碼為 255。這肯定看起來很奇怪。

但是如果我們想要製作一種顏色,我們要如何通過255呢?

答案1

如何處理 FF/255 的「溢出」完全取決於程式。

但通常情況下,資料會遵循特定的結構,並且嘗試增加一個部分超出其通常使用的範圍最終會修改其他資料。

如果您能夠以某種方式「推過」0xFF,那麼下一個值將是 0x100。該 1 要么會以某種方式覆蓋或增加下一個字節,要么會被簡單地刪除。

對於 RGB 有序像素數據,您也可能會破壞綠色數據,並且至少只需將紅色通道設定為 0x00。

您可以查看更多信息維基百科整數溢出

當然,這假設每個通道都有 8 位元顏色範圍 0x00-0xFF(十進位 0-255)。如果您想使用更廣泛的色彩空間,那麼您需要支援它的程式和檔案格式。現在有更多的程式支援圖像的 10 位元顏色配置文件,可以提供 0-1024 的範圍,但最高值仍然只代表“完全打開”,並且只提供“關閉”和“打開”之間更精細的漸變「從顏色上來說。

8 位元色彩空間中的所有紅色 255 在轉換後看起來與 10 位元空間中的紅色 1023 相同。相反,10 位元色彩空間中的實際值 255 看起來會很暗。

答案2

像素值超過 255

有些影像格式使用 2 個位元組來表示每個子像素的值,即值 0-65535,但原因並非您想像的那樣。它不會使最大顏色更亮(65535 與 1 位元組格式的 255 完全相同),但為您提供了更多操作步驟。

換句話說,0 始終表示 0% 亮度,最大值(255 或 65535)始終表示 100% 亮度。對於最大值 255,可以表示的最小色差為 0.39%,而對於 65535,則為 0.0015%。

對於打算按原樣顯示的圖像來說,使用如此精確的顏色是沒有意義的——人眼無論如何都無法區分這種細微的差異——但它對於打算進一步處理的圖像很有用。一個例子是視頻遊戲紋理,它會受到光照等的影響,並且僅使用 1 位元組深色通道處理就可能產生色帶。

色域

專用於色彩敏感工作的顯示器具有更寬的色域,這意味著它們可以產生更廣泛的顏色。在此類螢幕上,相同的顏色值 255(或 65535)看起來比在普通螢幕上更鮮豔。如果與較新/較昂貴的筆記型電腦相比,較舊/較便宜的筆記型電腦螢幕上的顏色看起來褪色,可能是出於同樣的原因:較昂貴的筆記型電腦具有更寬的色域(儘管仍然不如專業設備那麼寬),對比度通常較差比例也。 1366×768 螢幕因在這方面相對較差而臭名昭著。

這可能是您在提出這個問題時所想到的,只不過輸入顏色值是相同的。只是最大輸入值對應的顏色較鮮豔,輸入值相同的增量會產生更明顯的差異。

順便說一句,這些專業顯示器太生動了,無法用於正常的操作,例如網頁瀏覽等 - 一切看起來都非常生動,尤其是綠色。它們通常可以切換到“常規”色域,以使顏色可以接受非顏色敏感的工作。

高動態範圍

HDR 代表數位作品中的許多不同事物。這裡我說的是“HDR顯示器”,即。接受超過 8 位元顏色並提供高於平均峰值亮度的顯示器。本質上,顯示器結合了上述兩件事。

大多數此類顯示器每個通道接受 10 位元顏色,從而產生 0-1023 範圍。但如果顯示器的峰值亮度非常高,那麼 1023 並不對應於您習慣的 100% 亮度,而是更高。如果影像來源(例如電腦)意識到這一點,它可以顯示「常規亮度」內容,而無需使用額外的 2 位元顏色(即最大為 255),但它也可以使用更高的亮度在選定區域實現令人印象深刻的動態範圍。因此,現在當您在視頻遊戲中觀看太陽時,該區域的顯示器實際上會非常明亮,從而產生更真實的效果。

相關內容