『漫游』酷论坛>『影音数码技术学习交流』>[原创]x264参数解释
MeteorRain@2006-07-26 17:33
x264下噪点少,色块倒是会比较容易出现。特别是在某些场景下……
kagakadaj@2006-07-26 19:44
引用
最初由 MeteorRain 发布
x264下噪点少,色块倒是会比较容易出现。特别是在某些场景下……
暗场景.....么?[/han]
kykdu@2006-07-26 20:58
引用
最初由 kykdu 发布
现在x264在高码率下对细节的保留不如XVID,可能与其内部的环路滤波算法有关。相对的,出现的噪点和马赛克也比XVID少很多。究竟孰优孰劣,大家见仁见智。
看来这句话有误导大家的嫌疑。其实我的意思很明白,x264在高码率下对细节的保留不如XVID的原因是内部的环路滤波算法。像wolfsoft大大这样关闭in-loop之后,当然会使PSNR值提高。而且,提高的相当大。我个人测试,可以提高2~4个量化值(CQ模式)。但是,是否因此关闭deblocking呢?如我所说,大家见仁见智。
以下是个人观点,欢迎发表不同意见。
一开始我也是关闭deblocking的,但是有一些因素使我改变了初衷。
1、mencoder的帮助中明确指出:it is not recommended to disable it.(不推荐关闭)
2、x264的profiles(mirror05.x264.nl/Sharktooth/force.php?file=./MeGUI/profiles/MeGUI-x264_generic_profiles_v27.zip)里,只有三个文件设置关闭deblock,分别是1P-Maxspeed、CQ-Lossless和PD-Xbox_HiRes。大家看名字就可以知道都是干嘛用的。而像AE-Maxquality、HQ-Insane之类都没有关闭deblock。DOOM9里大部分人也都是开启deblock的。
3、我个人喜欢柔和干净的画面,对噪点和杂波十分反感。当然,这是个人的问题。
因此,我个人是倾向于开启deblock。个人观点,仅供参考。
最后,感谢wolfsoft对sar/level的解释。
tct66@2006-07-26 22:13
請問一下樓主的deblocking filter的設置?
realsweet@2006-07-27 08:07
我见过DOOM9有人压动画deblocking开到3的 囧
不过压动画一般不用或者用1也够了
zhongxw111@2006-07-27 08:57
看上去好像真的是很复杂
不过好像有很多人放弃这个解码的X246
呵呵……
不过我也想试试
wolfsoft@2006-07-27 19:42
mencoder居然不推荐关闭么?然则meGUI的帮助里却是"recommended value:disable"
我认为,如果一个视频前期处理做得好,本身就没多少噪声,那大可以关了deblocking,全力保证画面的完整性.而如果自己心里没底,前期处理并不好,这个时候会由于采样,DCT,量化而产生所谓三大artifact,这种情况下才有必要启动象inloop这样的anti-artifact滤镜.所以我们应该把deblocking这样的东西理解成一个postprocessor--当然是一个在编码过程中就起作用的postprocessor,这也是inloop强悍的地方.
这倒让我想起以前(才几个月就感觉好遥远啊...)hlyx大力推崇vp7,结果大家试下来发现只有喂"干净"的画面才会有好的效果,否则就惨不忍睹.现在想想,大概就是vp7缺乏这种内置的anti-artifact filter.en,伊果然跟MPEG4不是同类啊....
tct66@2006-07-27 21:10
deblocking filter是在解碼時產生作用...
ffdshow解碼可以手動關閉
coreavc解碼也可以關閉或啟用
EDIT:
另外用VP6編碼,解碼的時候要設定pp4,不然撥放出來的就和wmv關閉pp一樣
噪聲/msk滿天飛...
VP7就沒試過...
kykdu@2006-07-28 12:59
引用
最初由 tct66 发布
deblocking filter是在解碼時產生作用...
ffdshow解碼可以手動關閉
coreavc解碼也可以關閉或啟用
这是很严重的理解错误呢。
deblocking filter是in-loop,是在编码时起作用的。
不信的话可以自己去看源代码里的encoder.c,里面有什么时候使用deblocking filter编码的判定,其中明确了当qp <= 15时deblock自动关闭。frame.c是算法文件。
ffdshow、coreavc都是外部的filter,对in-loop是无效的。
tct66@2006-07-28 17:16
引用
最初由 kykdu 发布
这是很严重的理解错误呢。
deblocking filter是in-loop,是在编码时起作用的。
不信的话可以自己去看源代码里的encoder.c,里面有什么时候使用deblocking filter编码的判定,其中明确了当qp <= 15时deblock自动关闭。frame.c是算法文件。
ffdshow、coreavc都是外部的filter,对in-loop是无效的。
自己用ffdshow或coreavc解碼,開啟/關閉試一遍吧
眼見為憑
附上圖片,用ffdshow解碼,on表示開啟deblocking
http://bbs.lloup.com/attachment.php?aid=1222
kykdu@2006-07-28 17:56
[/KH] 开启当然是有变化了
我说过了,ffdshow和coreavc是外部的解码,对in-loop无效,但没说对最终输出无效啊。
你可以这样试:
压制一段关闭deblock的影片,再分别用ffdshow或coreavc解码,开启/关闭deblock试试。如果还是有变化,就说明解码器的设置与in-loop无关。
tct66@2006-07-28 18:18
引用
最初由 kykdu 发布
[/KH] 开启当然是有变化了
我说过了,ffdshow和coreavc是外部的解码,对in-loop无效,但没说对最终输出无效啊。
你可以这样试:
压制一段关闭deblock的影片,再分别用ffdshow或coreavc解码,开启/关闭deblock试试。如果还是有变化,就说明解码器的设置与in-loop无关。
這個早就試過了,無變化
你試試看吧...,我等你的截圖
另外,你還沒告訴我你的deblocking filter的設置...
wolfsoft@2006-07-28 19:13
摘一段H264标准的书里的一段话:
引用
3.5 Adaptive Deblocking Filter
The block-based structure of the H.264/AVC architecture
containing 4×4 transforms and block-based motion compensation,
can be the source of severe blocking artifacts.
Filtering the block edges has been shown to be a powerful
tool to reduce the visibility of these artifacts. Deblocking
can in principle be carried out as post-filtering,
influencing only the pictures to be displayed. Higher visual
quality can be achieved though, when the filtering
process is carried out in the coding loop, because then all
involved past reference frames used for motion compensation
will be the filtered versions of the reconstructed
frames. Another reason to make deblocking a mandatory
in-loop tool in H.264/AVC is to enforce a decoder to
approximately deliver a quality to the customer, which
was intended by the producer and not leaving this basic
picture enhancement tool to the optional good will of the
decoder manufacturer.
所以我支持 kykdu 的说法
tct66@2006-07-28 20:09
-----------------------------------------------------------------------------
Deblocking
can in principle be carried out as post-filtering,
influencing only the pictures to be displayed.
-------------------------------------------------------------------------------
以下是Doom9的說明
postprocessing/filtering (via the decoder, done on the final output)
-------------------------------------------------------------------------------
Loop/Deblocking Filter:
in contrary to prefiltering (for example via avisynth, done on the input), or
postprocessing/filtering (via the decoder, done on the final output), LoopFiltering is applied
during the encoding process on every single frame, after it got encoded, but before it gets used
as reference for the following frames. This helps avoiding blocking artifacts, especially on low
bitrates, but will slow down en/decoding
--------------------------------------------------------------------------------
Q19的質量,為甚麼在H264開啟deblock filter
ffdshow解碼,勾選"skip deblocking always",會有馬賽克???
不勾選就沒有
而且ffdshow解碼設置默認的選項"skip deblocking always"是unchecked
另外wmv9/VP6都有inloop filter,為甚麼在解碼的時候PP要開啟才能避免噪聲/msk的出現???
kykdu@2006-07-29 00:04
首先要说明的是,tct66所做的实验结果是正确的。关闭deblock压缩的影片,开启/关闭deblock无变化;开启deblock的影片才有影响。ffdshow和coreavc都是如此。
但是,这并不能证明tct66所说的结论。因为我发现了几个细节:
1、开启deblock的影片,在其它设置相同的情形下,比关闭deblock压缩的体积小。如果deblock是编码结果以外的数据,这是不可能的。
2、开启deblock的影片,即使解码器里关闭deblock,输出的结果也与关闭deblock压缩的不同,质量变差了。
详细的说明如下:
H264去块滤波又称环路滤波(loop filter),为什么称环内滤波,环内滤波就是讲H264在编码过程就进行了滤波处理, 这个去块滤波位于编码环内,deblock后还要进入DPB(解码帧缓冲),做为对下一个可用帧的参考帧。有的去块却不是位于环内,只是进入显示缓冲前做deblock。
H264设置了两种动态图像参考模式,Intra模式用未经滤波的图像做参考,在Inter模式使用经过滤波的图像作参考。在X264源代码macroblock.c文件中,明确指出:“Used in INTER macroblock”。如同tct66引用的一段“LoopFiltering is applied during the encoding process on every single frame, after it got encoded, but before it gets used as reference for the following frames.(它作用于每个帧编码之后,但在被用作后面帧的参考之前。)”所说的,Inter模式对帧内的参考用原始的图像数据,而帧间参考的时候用重建的图像。解码时,通过重建参考帧显示图像。
综上所述,X264的deblock是编码时进行的,解码器关闭的只是通过设置的deblock值重建参考帧这个过程。这样,只能使用原始帧作参考。由于内部使用的是经过滤波的图像,因此会使误差增大。这就是编码时开启deblock的影片如果关闭deblock播放时效果不如关闭deblock编码的影片的原因。
这也可以完美解释上面提到的细节和tct66提出的疑问。
Q19的质量,为什么在H264开启deblock filter
X264的设计者比我们的要求都高,qp <= 15时deblock才会自动关闭。
ffdshow解码,勾选"skip deblocking always",会有马赛克???不勾选就没有。
wmv9/VP6都有inloop filter,为什么在译码的时候PP要开启才能避免噪声/msk的出现???
使用原始帧作参考,误差增大。
ffdshow译码设置默认的选项"skip deblocking always"是unchecked
关闭deblock压缩的影片,开启/关闭deblock无变化;开启deblock的影片,当然应该开启。这样,有什么必要检测呢?
*********************************
我不太喜欢推荐参数。我先将这两个参数的意义说明一下,之后再提出我常用的参数,仅供参考。
Alpha和Beta两项是所谓的“噪声门槛”,都是负值时使画面显得锐化,正值时显得柔和。不同之处在于,Alpha在块输入时进行检测,Beta则是输出时进行。这样,产生的效果就不同了。Alpha锐化在整块的颜色区域内保留了较多细节,锐化的程度不及Beta强。Beta锐化在整块颜色的区域内偏柔,但是保存下来的细节得到了锐化。给人感觉就像经过了柔化之后又进行了锐化处理。Alpha柔化过的画面整块的颜色区域显得干净,保留下来的细节较Beta清晰,同值时柔化的程度不及Beta强。经过Beta正值处理的画面,颜色交界处线条变得较规则,给人感觉在柔化的同时又加了锐化,柔化作用更强一些。
网上普遍采用Alpha=Beta的方式设置。一般可以使用默认值0,如果源比较模糊,例如FieldDeinterlace的文件可以设为-1;如果源噪点、杂波多,可以试试设成1。2/-2就稍有点过,除非画面太差,否则不推荐。
最后,感谢tct66所做的实验和有理有据的质疑。
«1234»共4页
| TOP