NMM视频技术(旧)

 找回密码
 成为会员
搜索
查看: 9600|回复: 20

[求助]抗交错滤镜使用[已解决]

[复制链接]
发表于 2009-6-18 10:59 | 显示全部楼层 |阅读模式
本帖最后由 feline 于 2009-6-24 15:12 编辑

最近手头有一些NTSC/ interlaced 影片,经过DGindex分析后,发现有一些交错的画面,于是按照规则,在制作avs脚本的时候加入了FieldDeinterlace()函数,而且还在编码选项中勾选了"interlaced Encoding"选项,不知是不是有些画蛇添足

x.set.jpg


另外我想问的是,一般抗交错的滤镜哪个效果更好一些(如下图所示),如果上场优先是不是应该在函数中加些参数?我一般选的是”Field Deinterlace“

F,O.jpg


=========附上脚本============
# Created with Gordian Knot
#
# http://gknot.doom9.org

#  PLUGINS
LoadPlugin("E:\Program Files\GordianKnot\DGMPGDec\DGDecode.dll")
LoadPlugin("E:\Program Files\GordianKnot\AviSynthPlugins\decomb.dll")
LoadPlugin("E:\Program Files\GordianKnot\AviSynthPlugins\UnDot.dll")

#  SOURCE
mpeg2source("E:\YANNI_TRIBUTE\VIDEO_TS\Nightingale.d2v")

#  DEINTERLACING (1)
FieldDeinterlace()

#  CROPPING
crop(8,0,706,480)

#  RESIZING
LanczosResize(544,416)

#  DENOISING: choose one combination (or none)
Undot()

=====================================

【工具集】 Gordian Knot 0.35 packed2

【编码器】 Xvid 1.2.1

=======================================

【总结】
在加入抗交错滤镜后,无须勾选编码器中的"interlaced Encoding"选项,因为画质没有明显的改善,而且增加了编码的时间
关于抗交错滤镜,管理员同志推荐了eeid2、nnedi两个具有抗交错功能的滤镜,不过从其他板块的讨论来看,此两个滤镜效率似乎不高。应该属于以时间换取画质的工具。使用时需慎重。机器性能较差的,估计得另僻蹊径了。

“deinterlace有eeid2和nnedi。虽然严格来说这两个都算是倍线滤镜而不是专门写给deinterlace的滤镜,不过在用途上我们可以将其用作deinterlace啦……”

发表于 2009-6-18 11:26 | 显示全部楼层
楼主是电影还是DV拍摄的DVD呢?我感觉这个要说清楚才能让管理员和其他大大解答你的疑问。

1、"interlaced Encoding"选项,我印象中勾选了是用交错编码,也就是不反交错。待播放的时候让播放器来交错。但是我感觉上除了ww编译版的mplayer可以播放时候较好的反交错外,其他的播放器的反交错功能等于多余,完全没有效果,所以,"interlaced Encoding"选项应该是不勾选的。我只说我的想法,也借你的帖子多问下管理员。请楼主等待管理员来给正确答案。

2、没有具体的电影类型和严谨的分析,难以确定如何反交错的。Decomb我不懂,所以你用FieldDeinterlace()要等管理员回答你了。

3、crop(8,0,706,480)感觉不对吧,不是706,而是704。左右各8个像素。等管理员回答。
发表于 2009-6-21 11:04 | 显示全部楼层
Deinterlace之后,编码器就不用Interlaced Encoding了。
目前比较流行的deinterlace有eeid2和nnedi。虽然严格来说这两个都算是倍线滤镜而不是专门写给deinterlace的滤镜,不过在用途上我们可以将其用作deinterlace啦……
这两个滤镜适合的片源各不相同,楼主可以两边都试试看,哪个效果好用哪个。
两个滤镜的作者都是tritical,可以在他的网站找到:http://web.missouri.edu/~kes25c/

目前有一个新的趋势就是用x264的MBAFF来压,虽然码率会相对高一些,但可以直接带interlace压,不用deinterlace了。播放的时候,由播放器实时deinterlace呈现出来。这样带来的好处就是,可以用一部分显卡的硬件deinterlace在播放的时候进行deinterlace,效果可能好一些。但目前这种做法兼容性如何我不太了解(至少我猜测在老机器上估计会遇到障碍)。
我的显卡还是4年前的6600GT,已经很落后了。所以我也一直没有尝试MBAFF。这方面VX研究比较多,回来我把他叫来写两句。
发表于 2009-6-21 11:08 | 显示全部楼层
此外,希望楼主尽快熟悉手写AVS。或者尝试用MeGUI来代替GK。
GK不要用了,从各方面来说GK都已经过时太久了。
发表于 2009-6-21 15:27 | 显示全部楼层
NTSC/ interlaced 这个东西很奇妙,可能是3:2pulldown的、可能是帧帧交错的,还可能是30P的。。。
发表于 2009-6-21 18:00 | 显示全部楼层
NTSC Interlaced只是DVD内部一个标示内容的旗标,这个旗标有时候是会错误的,不一定就代表内容的实质。真正的实质需要自己用眼睛去判断。

补充我在3楼的发言:
用MBAFF压还有一个要注意的地方,那就是AU和AVS绝大部分滤镜,包括切边、resize、降噪、锐化,都不支持Interlace模式下的处理。如果让这些滤镜处理交错的东西,将会造成毁灭性的后果。
 楼主| 发表于 2009-6-22 16:07 | 显示全部楼层
感谢管理员同志在百忙之中,回答本人的问题,您这种精益求精的作风实在让人感动。
其实说来我也只能算个新手,目前还没有出过一部完整的作品。因为机器太旧的缘故,所以只能小打小闹地编码一些时间较短的片段,以及用GK充编码一些mv。所以更希望用到一些高效、高质量的软件和滤镜,不管是软件编码器还有太多的疑问,很高兴有这么一个可供讨论,学习的空间,以后还希望您能不吝赐教
发表于 2009-6-25 01:47 | 显示全部楼层
楼主可能有点误区。

ASP/AVC里的 interlaced Encoding 实际上是以场为单位来编码,大概相当于 separatefields() 后再拼回去。
interlaced 模式编码前,在AVS或其他处理软件中,横向只能切整数边,纵向只能切偶数边,不能resize,不能使用锐化/降噪/柔化等滤镜。
我个人觉得如果是纯30i的话,可以separatefields()以后加个小小的undot(),貌似无伤大雅,能稍微减少点码率。

MBAFF是借助编码器内部的运动通道生成器,将有运动的区域做场编码,反之以帧为单位编码,因为无运动的区域是不会出现交错的。
优点是可以增加压缩率,缺点是编码速度会变慢。

不过,我感觉运动通道这种功能经常容易出错,而且一旦出错就可能导致全屏大色块,所以不敢用

以上个人观点,不足之处请见谅,期待VempX对MBAFF的评测!
发表于 2009-6-25 18:39 | 显示全部楼层
先针对楼主的处理方式和概念性的问题说几句:

1、不要相信DGIndex里关系视频类型的分析。
所谓类型,也不过是制作的时候人为写入的旗标,来告诉之后软件如何工作。这个旗标有很大程度上可能是错误的,由于各种各样的原因(……对,各种各样,不要过于相信制作DVD那些人的专业知识)。这种时候只能靠经验来片段片子的类型了。具体如何判断,有一篇老帖子楼主可以去看看,我记得里面讲的很全

2、Interlaced为何物
直观来看,就是我们常见常说的拉丝。这个东西的出现是有一些历史原因的,我们就不追究了。不过他的内容并不是简简单单的一个拉丝就完事的。视频在编码的时候,如果是交错的(比如30i),那么编码的时候一定要选择Interlaced Encode,这个是非常重要的。因为Interlaced和Progressived在播放的时候要做的处理是不同的。
所以说,你说了加了Deinterlacer滤镜之后,就不勾选Interlaced Encode是正确的,但是原因你并没有理解。

3、正如大虾说的,不要用GK了,那个东西真的是太老了。而且单说Deinterlacer品质,FieldDeinterlace真的是很差,比他强的太多了,强烈不推荐继续用这个老东西了 =v=

然后来说一下MBAFF
所谓MBAFF,其实就是Interlaced Encode的一种。
这得先说一下场的概念,所谓场就是奇数行和偶数行的意思。交错的出现,就是因为奇数行和偶数行不属于同一个画面导致的。想想一下,有两幅图片,A是一个在画面左边的球,B是一个在画面右边的球,取A的所有奇数行和B的所有偶数行拼成一个画面,自然就会看到球有拉丝了。
MBAFF方式编码,就是把画面的每一个小块的奇数场和偶数场分开来编码,这样就不会把本来是Interlaced的画面给压成了Progressived。
这样编码之后,编码器还会写入一个标志告诉以后的解码器“我这个是MBAFF哦”,这样解码器就知道这个画面是需要进行后处理的了
这样编码有几个好处。首先就是你不需要在进行任何的Deinterlace处理,压的时候只要勾上Interlaced Encode就可以了。然后,如果用x264编码MBAFF,播放的时候显卡是GeForce8系列及以上,ATi HD2系列及以上,就可以使用显卡的硬件反交错功能,这个品质不是那堆Deinterlacer软件可以比的。
 楼主| 发表于 2009-6-25 21:26 | 显示全部楼层
感谢楼上各位前辈们热情的解疑,你们的经验估计我得用好长一段时间才能完全消化。
如果不依赖软件的话我还真没有办法靠肉眼来识别,(功力和理论都没有那么深)
另外30i是不是指的30fps/interlaced类型的影片呢?不过DVD有30fps的吗,不是最高才29.97吗
说句题外话,之所以还在用GK是因为不想安装那个什么.net框架。我已经被微软烦透了,正在逐步准备转移平台,以摆脱微软的霸权主义。老比尔也下台了,他的商业帝国也将逐步衰退,我正在试图融入开源的浪潮,倡导开源与自由的精神,愿你们与我同在,阿门
发表于 2009-6-25 23:43 | 显示全部楼层
关于硬解交错的功能,我的显卡貌似只能支持IVTC,设置面版里没有纯deinterlace的选项,不知道是不是驱动的版本问题,9600GT。

我用とらぶる的OP测试,480i pulldown类型,切至704x480,直接送x264,sar 40:33,打开interlaced模式。

用CoreAVC解码,打开硬件解交错的选项,感觉很卡,移动窗口或进行全屏切换的时候屏幕上会出现黑块,效果上整体还可以,TIVTC会错的地方,硬解也是错的,错误在于硬件匹配错了场,而不是没有进行deinterlace。
发表于 2009-6-26 09:40 | 显示全部楼层
To feline:
所谓的30i确实就是30fps interlaced,其实就是29.970啦,不过大家都习惯说成30,另外24也是一样的,就是23.976。

至于.net framework,装那个东西是meGUI需要,你可以手写AVS脚本然后用VDM预览效果,最后使用x264的命令行进行编码,完全可以不用.net framework。

To diseac:
驱动面板里确实只有那个IVTC,但是好像没什么关系。具体来说我也搞不太清楚硬件反交错是在哪步如何执行的。我的猜测是,控制面板里的那个IVTC,是在用支持Purevideo的播放软件看DVD并且打开硬件加速的时候才起作用。比如PowerDVD TMT等等,那个东西对AVC貌似没有作用的。
发表于 2009-6-28 19:49 | 显示全部楼层
"这个品质不是那堆Deinterlacer软件可以比的"
这句话我有异议,大部分片硬件反交错效果相当好,少部分烂片效果并不理想。。。
发表于 2009-6-28 21:16 | 显示全部楼层
唉,我还没有条件上硬件反交错呢,呵呵~不过感觉上,硬件的速度快,效率高,效果应该也会不错的。
发表于 2009-6-29 14:46 | 显示全部楼层
关于硬解交错的功能,我的显卡貌似只能支持IVTC,设置面版里没有纯deinterlace的选项,不知道是不是驱动的版本问题,9600GT。

我用とらぶる的OP测试,480i pulldown类型,切至704x480,直接送x264,sar 40:33,打 ...
diseac 发表于 2009-6-25 23:43


呃,我是完全的新手,最近试着学习转(DVDISO) To LOVEる ドキ×2エディション这套片子。

他这个OP是pulldown吗?我用DGINDEX看大部分是interlaced,但是到了人物特写半调插画效果的几个位置是progressive。这种片子到底怎么处理才合适呢?我用meGUI附带的avs的分析器给出来的结果是这样:
  1. tfm(order=-1).tdecimate(mode=1,hybrid=1)
复制代码
但是压完片子出现了鬼影。

望大大解答一下……
 楼主| 发表于 2009-6-29 15:37 | 显示全部楼层
先针对楼主的处理方式和概念性的问题说几句:

1、不要相信DGIndex里关系视频类型的分析。
所谓类型,也不过是制作的时候人为写入的旗标,来告诉之后软件如何工作。这个旗标有很大程度上可能是错误的,由于各种各 ...
VempX 发表于 2009-6-25 18:39


"视频在编码的时候,如果是交错的(比如30i),那么编码的时候一定要选择Interlaced Encode,这个是非常重要的。"
在加过Deinterlaced滤镜后,那我到底是选Interlaced Encode还是不选呢,难得糊涂
发表于 2009-6-29 16:12 | 显示全部楼层
后来按照这样解决了交错:
  1. dei=tdeint(mthreshL=0,mthreshC=0,full=true,sharp=false,type=3,hints=false)
  2. tfm(order=-1,slow=2,pp=2,cthresh=2,clip2=dei)

  3. tdecimate(mode=1)
复制代码
我查了下tdecimate,mode1执行之后帧率变成24,这个来源是 ntsc 30i 的,这样处理完,之前用DGIndex得到的音频能对的上吗?望各位大大解答下……
发表于 2009-6-30 11:56 | 显示全部楼层
16# feline
您误解我和VX的意思了。
我在三楼第一句话就很明确地告诉了您:“Deinterlace之后,编码器就不用Interlaced Encoding了。”
VX的意思是,您当然可以选择不Deinterlace,但需要在编码时用Interlaced Encoding。
发表于 2009-6-30 11:59 | 显示全部楼层
17# linnet9999
不会错位。
帧数和帧率同时对应改变的话,就不会错位。Decimate在改变帧率的同时删除了重复帧,总帧数减少,总播放时长不变。
 楼主| 发表于 2009-6-30 18:08 | 显示全部楼层
18# dgwxx
这下是彻底明白了,二者选其一即可。感谢您对于我无知的耐心
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

小黑屋|手机版|NMM视频技术

GMT+8, 2019-6-27 20:11 , Processed in 0.086826 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表