[閒聊] 借用一下板面

看板ck61st322作者 (謙)時間8年前 (2015/11/19 05:51), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
作者 coldcolour (Ghost的呢喃) 站內 LCD 標題 Re: [求助] sony 50吋led電視接電腦看起來灰灰的 時間 Tue Nov 5 18:15:36 2013 ─────────────────────────────────────── ※ 引述《mrschiu (布萊恩的老婆)》之銘言: 雖然你的問題好像應該到Digitalhome問 不過這也算是顯示器透過HDMI接電腦常常會發生的狀況之一 還是回一下好了 首先先講一個基本觀念 影視內容 也就是指所有的電視節目 電影 BD/DVD等等 其製作時使用的色彩空間 還有黑階位準(black level 以下簡稱黑位)的定義範圍 跟電腦上所使用的是不一樣的 影視內容使用的是Y'CbCr 黑位範圍是16~235 也就是16為最黑 235為最白 這個一般我們會稱為Studio Level 當然如果在電視裡或播放軟體裡的設定選項看到 Limited Range/Studio Level/TV Level/標準/限制 這些的字眼 指的就是16~235這個黑位範圍 而電腦上使用的是RGB 黑位範圍是0~255 也就是0為最黑 255為最白 如果在電視裡或播放軟體裡的設定選項看到 Full Range/Extended Range/Computer Level/PC Level(RGB)/增強/全取 指的就是0~255這個黑位範圍 既然所有影視內容都是以16~235的黑位去製作的 因此基本上電視機跟影碟機都是以16~235做為其預設的支援標準 當然現在很多機種也是可以支援0~255 而在電腦上使用的是0~255的黑位 所有的電腦螢幕基本上都是使用0~255這個標準(但有HDMI輸入的電腦螢幕有些也會另外支 援16~235) 影碟機(BD/DVD) MOD 電視天線 接電視機 完全沒有問題 一路都是使用16~235的輸出範圍 電腦(桌面 圖片 網路等等內容) 接電腦螢幕 也完全沒有問題 一路都是使用0~255的輸出範圍 而當我們把原本製作目的不一樣的媒介跟裝置混在一起使用時 問題就產生了 兩種不同標準的媒介在一起使用時 是需要透過一些轉換的 否則就會產生黑位錯誤 而黑位錯誤最直接的影響就是畫面會泛白或黑不黑 白不白 我們來看看接電腦時有幾個環節會影響到最終輸出的黑位是否正確 第一 內容 影片是16~235 電腦桌面 照片 瀏覽器裡的圖片通通都是0~255 第二 播放軟體 直接輸出16~235 或是透過Y/C伸張後輸出0~255 第三 顯卡的輸出 透過HDMI輸出YCbCr or RGB ? 第四 顯示器本身的設定 這邊您可能有個疑問 為什麼平常接電腦螢幕時(D-SUB或DVI) 播放影片不會有問題? 很簡單 播放軟體會對16~235的影視內容做Y/C伸張 並且進行YUV→RGB的色域轉換 讓其變成0~255的RGB訊號給顯卡 然後顯卡輸出0~255的RGB訊號給電腦螢幕 電腦螢幕本身也接受0~255的黑位範圍 皆大歡喜 但是接HDMI時呢? 這邊就要特別提一下了 接D-SUB或DVI 輸出的黑位範圍一定都是0~255 而且一定是RGB訊號 因為這個標準是設計給電腦裝置使用 但HDMI就不一樣了 其本來是設計給影視裝置使用的標準 但是電腦也可以使用 HDMI既可以傳輸YCbCr訊號也可以傳輸RGB訊號 當其傳輸YCbCr訊號時 一定是16~235的黑位範圍 當其傳輸RGB訊號時 它容許傳輸0~255和16~235兩種黑位範圍 所以這讓整個問題複雜化起來 但其實罪魁禍首並不在它身上 說到底是為了適應兩種不一樣的顯示裝置才採取了這樣的做法 再來我們看看顯卡 接D-SUB或DVI 不用說也一定是輸出0~255的RGB訊號 那接HDMI呢? 這邊不同家的顯卡似乎還會有不同的結果 以A卡來說 接HDMI的話預設還是輸出0~255的RGB訊號 但是也可以自行選擇輸出RGB 16~235訊號或是YCbCr (還有4:2:2和4:4:4的差別 這個一樣要看顯示裝置的支援度 再講下去可以另發一篇了 此處就先不提) I內顯接HDMI預設是會輸出16~235 RGB N卡接HDMI預設也是會輸出16~235 RGB 不過可以改成輸出0~255 RGB (需要透過一些hacking工具去覆寫驅動設定) (我自己沒I跟N卡 有誤請指正) 所以這就是為什麼有時會建議同時有HDMI或DVI輸入的"電腦螢幕" 還是以接DVI為首選 因為你可能不知道接HDMI時顯卡輸出了什麼訊號 而螢幕本身接受HDMI輸入時又設定成接受哪個黑位範圍的訊號 當接電腦螢幕時 我們會希望顯卡輸出0~255 電腦螢幕黑位也是0~255 但接HDMI的場合 也可能出現另外三種組合 顯卡輸出16~235 螢幕黑位0~255 這邊就錯了 畫面可能泛白 顯卡輸出0~255 螢幕黑位16~235 這邊也錯了 顯卡輸出16~235 螢幕黑位16~235 黑位是正確了 不過別忘了電腦上的內容本來都是0~255 這邊等於多讓電腦進行一次Y/C壓縮 而顯卡的壓縮演算並不是那麼好 可能會產生不必要的畫質損失 當接電視時 問題更複雜了 除了黑位外還有YCbCr和RGB的問題 當然我們儘量以輸出RGB為主 因為同樣讓顯卡做RGB→YCbCr的轉換是多一次損失 (雖然這個轉換可能在電視上再做一次 但有些電視是能接受RGB訊號的) 然後可以分成兩種情形來討論對策 第一種情形 電視本身支援0~255的黑位 當然如果電視有做D-sub或DVI輸入的話是一定支援的 而最近比較新的電視也很多都有支援 接HDMI的時候 可能電視上要做一些設定讓其能夠正確對應0~255 這個設定可能是在一些HDMI的相關選項裡 關鍵字就是我這篇文最上面提到的那些 或是所謂的"遊戲模式"或"PC模式"等等 都會讓電視接受0~255的黑位 然後接下來只要把顯卡設定成輸出0~255的RGB訊號就OK了 A卡CCC控制介面可以調整 N卡我不確定 不過確定有些小程式可以讓它強制輸出0~255 I內顯就不太確定接HDMI倒底能不能輸出0~255 而播放軟體通常預設就是會做Y/C伸張輸出0~255 因此這樣下來桌面 圖片 瀏覽器 影片等等黑位就都會正確了 第二種情形 電視本身不支援0~255黑位 只能接受16~235 這種情形有兩種對策 A對策 讓顯卡輸出16~235(limited range) 播放軟體還是預設 這樣一來 播放軟體輸出的訊號跟桌面 圖片 等等通通會被顯卡做壓縮成16~235 輸出 而能正確對應電視的黑位 當然會有一些畫質損失 B對策 讓顯卡一樣輸出0~255 但是播放軟體的設定改成輸出16~235(TV level) 也就是不做Y/C伸張 這時影片播放輸出的黑位會是正確的 且沒有畫質損失 但是桌面 圖片 程式等等其他的黑位通通都會不正確 另外這邊提供一個測試影片 http://www.mediafire.com/download/mjli5bzrz7yfb5b/lossless_colorbars_hd.mp4 如果右下角倒數第二個方塊看到一條黑槓 就是黑位對應正確 如果看到全黑或是三條黑槓就是對應錯誤 如果有定義錯誤或是觀念錯誤的地方 還請不吝指正 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.83.104

11/05 20:37,
推教學文xd
11/05 20:37

11/05 20:43,
另外補充在電腦上看一般有限範圍Rec.709的HD內容時,
11/05 20:43

11/05 20:44,
所做的Y/C伸張(16~235->0~255)會導致灰階banding的產生,
11/05 20:44

11/05 20:45,
這時候會建議播放器使用madVR,因為madVR支援dithering輸出
11/05 20:45

11/05 20:46,
可以使伸張後的灰階正確的表現,而不會出現掉階現象.
11/05 20:46

11/05 20:46,
或者使用mpc-hc時,將EVR-CP渲染器設定的"Half floating
11/05 20:46

11/05 20:47,
point processing"打開,也可使EVR-CP以dithering輸出
11/05 20:47

11/05 20:55,
~EVR-CP未開啟dithering
11/05 20:55

11/05 20:55,
~EVR-CP開啟dithering
11/05 20:55

11/05 20:56,
~madVR開啟dithering
11/05 20:56

11/05 20:58,
11/05 20:58

11/05 21:00,

11/05 21:02,
使用播放器shader將RGB值除以2後播放,
11/05 21:02

11/05 21:03,
此時灰階1會成為0.5,即大於8 bit精度,這時開啟dithering
11/05 21:03

11/05 21:03,
然後截圖後用photoshop做二值化來看看他的抖色pattern
11/05 21:03

11/05 21:04,
11/05 21:04

11/05 21:04,
這時候可以看到圖中的1(實際上為8-bit灰階下的0.5)
11/05 21:04

11/05 21:05,
透過抖色方式保留了資訊,而非直接rounding至1
11/05 21:05

11/05 21:08,
更正第二行推文 ~在"接受全範圍RGB的顯示裝置"上看一般..~
11/05 21:08

11/05 22:39,
推教學 所以說電腦用HDMI輸出到電腦螢幕 要改ycbcr
11/05 22:39

11/05 22:40,
是因為電腦螢幕的HDMI是預設在(16~235)囉?
11/05 22:40

11/05 22:43,
所以若是遇到這種情況用DVI輸出會比HDMI好嗎?
11/05 22:43

11/05 22:44,
因為可以省下一次Y/C的轉換
11/05 22:44

11/05 22:49,
1.不一定 2.HDMI也可以輸出0~255 RGB (設定正確的話)
11/05 22:49

11/05 22:51,
DVI是一定輸出0~255 RGB
11/05 22:51

11/05 22:57,
那DP介面呢?
11/05 22:57

11/05 23:02,
同HDMI YCbCr跟RGB都支援
11/05 23:02

11/06 01:06,
N跟I都可以設定0~255或16~235喔~ 驅動內就能改了
11/06 01:06
※ 編輯: coldcolour 來自: 114.32.83.104 (11/06 08:15)

11/06 10:23,
非本版相關事務,但有強人回覆保留文章一個禮拜後刪除
11/06 10:23

11/06 12:43,
推 長知識!一般人應該都搞不清楚電腦螢幕跟電視的差別
11/06 12:43
coldcolour:轉錄至看板 Digitalhome 11/07 09:32 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.231.24.182 ※ 文章網址: https://www.ptt.cc/bbs/ck61st322/M.1447883471.A.ED7.html
文章代碼(AID): #1MJFBFxN (ck61st322)