分页: 1 / 3

【test】4:2:2 comparison

发表于 : 2012-04-21 19:50
06_taro
图片
From:http://saya.lsflling.com/?p=288

图片
From:http://bbs.hrtk.3-a.net/thread-327-1-1.html

面白い!

於是做實驗,直接取上面帖子裡的原圖(NMM鏡像備份:420-src.png422-src.png),讀入png之後RGB轉YV24(即不做up/down sampling防止結果不准確),然後在YV24下分離U和V,看效果:

U comparison:
420:src-420-U-opt-(rgb2yv24-utoy).png
422:src-422-U-opt-(rgb2yv24-utoy).png

V comparison:
420:src-420-V-opt-(rgb2yv24-vtoy).png
422:src-422-V-opt-(rgb2yv24-vtoy).png

又學到一種鋸齒製作方法
実に面白い!

Re: 【test】4:2:2 comparison

发表于 : 2012-04-22 1:38
ikamusume
{:cat_17} 鄙人覺得422 看起來線條比較突顯哇

Re: 【test】4:2:2 comparison

发表于 : 2012-04-22 2:50
06_taro
是很凸顯,連PointResize級的效果都出現了

Re: 【test】4:2:2 comparison

发表于 : 2012-04-22 10:37
mawen1250
PointResize效果好还是BicubicResize效果好的问题。

Re: 【test】4:2:2 comparison

发表于 : 2012-04-22 14:03
-o-o-304-o-o-
果断膜拜了……

pointresize大亮……铅球玩呆,一桶浆糊……

Re: 【test】4:2:2 comparison

发表于 : 2012-04-22 23:10
dgwxx
用ITU-R BT.304压效果最好!

Re: 【test】4:2:2 comparison

发表于 : 2012-04-24 15:47
sil_yuzhe
本身420->422就是有損的吧
http://www.hometheaterhifi.com/the-dvd- ... oblem.html
這裡面貌似描述了420->422的效果
420.jpg
422-.jpg
於是420->422后鋸齒就出現了……

然後給我一種感覺420->422是把色度信號給做了一個pointresize。視頻以1280x720為例,Y:1280x720,U/V:640x360->upconv to 1280x720
純自己瞎猜,求大大理論補習

Re: 【test】4:2:2 comparison

发表于 : 2012-04-25 5:55
msg7086
所以其实要在uv分量上把色彩空间转换带来的诡异锯齿再抹一遍会比较好?

Re: 【test】4:2:2 comparison

发表于 : 2012-04-25 9:39
mawen1250
msg7086 写了:所以其实要在uv分量上把色彩空间转换带来的诡异锯齿再抹一遍会比较好?
应该直接用Bicubic做resize而不是PointResize

Re: 【test】4:2:2 comparison

发表于 : 2012-04-25 10:14
06_taro
實際上就不應該在前期做420->422。

420->422首先沒有任何文檔內確定的方法。各種標準只會規定原始採樣方式,而不會去規定不同sub-sampling之間的轉換,本身就體現了不在中途做up/down sampling的原則。各顯神通的話,直接duplicate出來的就是pointresize那種效果。如果是bilinear、bicubic甚至lanczos/spline的interpolation的話則效果肯定會好一些,但是是否準確很難講,譬如有沒有考慮chroma position到底是mpeg-1還是mpeg-2還是DV標準的,譬如用dither工具的話轉換過程需不需要考慮gamma correction(avs內置甚至直接不考慮gamma),這些都不僅僅是質量問題,而是做出來的正確與否的問題;而resizer的tap過高會不會產生ringing,過低會不會產生鋸齒,b/c設置如何能防止中間過程產生artefacts,這些雖然沒有唯一正確答案的也都很麻煩。後期播放時madVR內處理是全程16-bit的,resize、chroma upsampling等全部在16bit的3d-lut下完成之後再dither回8bit rgb。即使不是madVR,大部分其他渲染器/解碼器也都是用bilinear或者bicubic,而不至於出現這種噁心的效果。相比之下前期avs的convert或者走libswscale不但質量低,中間過程大量的rounding損失也無法避免。就算是用dither工具,為了編碼,中途還是要降回8/10bit。然後這個經過一次interpolation並降回8/10bit編碼的4:2:2在播放時還要再經歷一次chroma upsampling才能到rgb,除非能有8bit->10bit那樣顯著的編碼效率提升,否則這種多次轉換肯定是不划算的。

順便寫一個avs內16bit下420->422的範例,至少這樣精度應該還是夠高的,雖然是否準確還要看情況:
[syntax lang="avisynth" lines="f"]# Adjust these settings according to your source clip
matrix = "709"
tv_range = true
chroma_p = "MPEG2"
#
Dither_convert_yuv_to_rgb(matrix=matrix,
\ tv_range=tv_range,
\ cplace=chroma_p,
\ chromak="bicubic",
\ output="rgb48y")
r = SelectEvery(3, 0)
g = SelectEvery(3, 1)
b = SelectEvery(3, 2)
Dither_convert_rgb_to_yuv(r, g, b,
\ matrix=matrix,
\ tv_range=tv_range,
\ cplace=chroma_p,
\ chromak="bicubic",
\ lsb=true, output="YV16")
[/syntax]