PAR的取值与SAR的设定

1.引言   

 

      在DVD的处理中,Crop&Resize(或者设定SAR)直接影响到显示宽高比的正确与否,因此是一个很重要的步骤。Crop&Resize与设定SAR这两种做法都是为了修正DVD/SDTV的non-square pixel与HDTV/PC monitor的square pixel不统一的问题。因此,要在DVD的处理中正确做好Crop&Resize或者设定正确的SAR值,non-square pixel与square pixel两者之间的差异,也就是像素宽高比,是非常有必要弄清楚的。Square pixel的pixel aspect ratio(PAR,像素宽高比)为1:1,这个是没有争议的。但是non-square pixel的PAR取值就有些复杂了。本文的重点也就是讨论DVD的像素宽高比PAR到底是多少。同时也会涉及Crop&Resize的具体操作。

 


 

2.什么是PAR

 

      首先看看什么是像素宽高比。顾名思义,像素宽高比就是像素的宽高比。如下图所示:

 



 

      当PAR=1:1时,为square pixel。   

 




      当PAR≠1:1时,为non-square pixel。图中的PAR=2:1,即像素的宽是高的2倍。 

 

 

3.SAR=PAR

 

      Non-square pixel还原为square pixel,需要进行重新采样。而重新采样时的采样宽高比SAR(sampling aspect ratio)则是根据PAR确定的。在实际操作中,有Crop&Resize和直接设定SAR这样两种做法。Crop&Resize是切边之后resize,以使resize的比例等于或接近我们需要的采样宽高比,这种做法的具体操作待我们在下面的讨论中得到具体PAR数值后再说;直接设定SAR则是在x264等编码器中直接对--sar这个参数进行设定。我们来看这样几个公式:

 

      DAR=PAR×SAR*

 

      SAR=目标SAR*/当前SAR*

 

式中DAR为display aspect  ratio,即显示宽高比;

 

PAR为pixel aspect ratio,即像素宽高比;

 

SAR*为storage aspect ratio,即显示分辨率的宽高比,比如1440×1080的视频,SAR*=1440/1080=4:3。加上*是为了和表示sampling aspect ratio的SAR相区别。

 

      把上述公式做些变换:

 

      PAR=DAR/SAR*

 

       做过重新采样后的视频已经是square pixel了,PAR=1:1,因此DAR=目标SAR*,待处理的视频的SAR*=当前SAR*。把这两个等量关系代入上述公式,就得到PAR=目标SAR*/当前SAR*。于是可以得到SAR=PAR。

 

      因此,PAR是多少,在x264中指定--sar为多少就ok了。按照我们设定的SAR去重新采样就可以得到square pixel。

 

      下面,我们就来讨论DVD的PAR到底是多少。

 


 

4.工业标准中的PAR取值

 

      ITU-R BT.601只规定了13.5MHz的luma采样率,而没有规定一个准确的PAR值。只能根据已经给出的信息来计算出各种制式下的PAR。

 

      为了把模拟视频的扫描线转化为一行square pixel,在SMPTE 244M中为NTSC制规定了12+3/11MHz的luma采样率,为PAL规定了14+3/4MHz的luma采样率。这个采样率可以把模拟视频的扫描线采样成Industry standard square pixel,同时也可以把按照ITU-R BT.601的13.5MHz采出来的数字扫描线重新采样为Industry standard square pixel。因此这个采样率与13.5MHz的比值就等于ITU-R BT.601的像素宽高比:

 

NTSC:

 


 
PAL:

 

 


 

5.Crop&Resize具体做法

 

       假定我们已经得到了DVD的non-square pixel的PAR,那么就可以把non-square pixel的图像转化为square pixel。Crop&Resize的具体做法如下:

 

NTSC 4:3(Letterbox)

 

       当PAR=1:1,垂直方向有480像素时,水平方向应该有480×4/3=640像素。当垂直分辨率不变时,要从PAR=10:11的一行non-square pixel中采到640个square pixel,只需要640÷10/11=704个non-square pixel。因此,要使SAR=PAR=10:11,直接从720 resize至640是不行的(此时SAR=640÷720=8:9),而需要先从左右两边共切去16个non-square pixel得到704再resize至640×480。如果是4:3Letterbox,那么做至这一步后上下黑边有多少切多少(当然,为了得到更高的编码效率,最好能够被16整除,即满足mod16)。

 

       注:这种做法假定NTSC 4:3的PAR=10:11,仅举此一例。其他做法参考NMM文档库中《切边与Resize》一文。

 

PAL 4:3(Letterbox)

 

       左右切去16个像素然后resize至768×576。在此之后,上下黑边有多少切多少,当然切完之后的高度最好能被16整除。

 

       注:

        此时的实际SAR=768/704=12/11。

        要使SAR=59/54,需要将横向分辨率切至768÷59/54=702.9152...如果取702的话,702×59/54=767,与768已经非常接近了,只有1/768=0.001303...差不多千分之1.3的偏差。

        其实按本文第6节计算得到的更准确的PAR,左右共切去18个像素,然后从702×576 resize至768×576刚刚好偏差为0。

 

PAL 16:9

 

       左右切去16个像素然后resize至1024×576。在此之后,上下黑边有多少切多少,当然切完之后的高度最好能被16整除。

        注:16:9也是同理,切至702会使实际SAR更接近59/54×4/3=118/81。


        虽然我在这里列举出一些Crop&Resize的做法,但强烈建议待通读全文并对PAR的问题有了完整的认识后再决定自己在此问题的处理中该如何来做。

 

6.更准确的PAR

 

      第4节计算得到的两个PAR值都是假定能采到square pixel的采样率已知,根据已经给出的采样率计算得到。但是实际上,这个采样率并不是完全准确的,也就是说按这个采样率去采样并不能采到完美的square pixel。

 

      那么如果我们假定这个“能采到square pixel的采样率”是未知的,而每条扫描线的采样时间已知,就可以根据采样时间来重新计算出能采到square pixel的采样率,进而算出PAR。

 

      首先讨论NTSC的情况。NTSC制里,每条扫描线的采样时间中用来记录数据的时间为52+2/3μs。在模数转换中,如果我们采到了square pixel,图像的垂直方向有486像素,那么对应的,水平方向应该有486×4/3=648像素。于是,可以计算出在52+2/3μs内采到648个像素的采样频率:648/(52+2/3μs)=12+ 24/79MHz。因此,将这个采样率与13.5MHz作比,就得到了PAR:

 


      然后讨论PAL的情况。PAL里记录数据的时间为52μs,当采到square pixel时水平方向有576×4/3=768像素。因此采样频率为768/52=14+10/13MHz。与13.5MHz作比得到PAR:

 



 

       显然,按照SMPTE 244M的采样率和实际采样时间分别计算的结果不一样。实际上,SMPTE 244M规定的Industry standard square pixel并不是严格意义上的方形像素,NTSC的工业标准方形像素PAR=(12+24/79)/(12+3/11)=396:395。而PAL的工业标准方形像素的PAR=(14+10/13)/(14+3/4)=768:767。

      

      本节所述即为网络上流传的72:79的说法的由来。这种计算方式应该说是来源于silkybible,而silky大神的论述应该是来源于芬兰网页“https://www.uwasa.fi/~f76998/video/conversion/”,也即Jukka Aho的文章《A Quick Guide to Digital Video Resolution and Aspect Ratio Convertion》。这个网页已经下线了,但我在sourceforge找到了备份。仔细研读之下,竟发现文中给出的PAR里根本没有72:79。
      实际上,按silkybible中的思路,72:79也是一种近似值。silky大神在计算中将NTSC的有效扫描时间定为(52+2/3)μs,然而在Aho的文中,有效扫描时间为(52+59/90)μs。而13.5MHz×(52+59/90)μs=710.85。Aho文中有提到可以取近似整数值711,相当于将扫描时间近似为711÷13.5MHz=(52+2/3)μs。大概silkybible中的(52+2/3)和72/79就是这么来的。如果我们不在这里取近似,那么我们在(52+59/90)μs内采到648个像素的采样频率为648÷(52+59/90)=58320/4739MHz。将这个采样率与13.5MHz作比:


      这就是对模拟图像用13.5MHz的采样率去采样时得到的数字图像中像素的精确PAR。72/79可以认为是4320/4739的近似值。
      这样的话,按SMPTE 244M的(12+3/11)MHz采到的工业标准方形像素的PAR应该为为58320/4739÷(12+3/11)=4752/4739。
而不是前面算出来的396/395。
      其实这里还有一点争议。NTSC的模拟图像中竖向有484条完整扫描线和上下各半条扫描线。那么,竖向分辨率应该按485还是486来算呢?上文是按照486,如果按照485计算的话就会得到完全不同的结果了。
这篇文章是按照485计算的,结果是38800/42651。可以参考一下。PAL也有一样的问题。
      所以,4320/4739也不一定是准确的。

       

 

7.数字处理中的PAR

 

      在DVD/SDTV中,不论画幅比例是4:3还是16:9,实际上画面都被显示在中间的704像素里。两边各8像素称为nominal analogue blanking。同时竖向分辨率也取480而不是486。

 

      这样的话,在NTSC中,640/704=10/11,正好与上面第4节的计算相符。16:9的话,480×16/9÷704=40/33。所以,有了这条理由,在处理NTSC DVD时,PAR的取值相对而言取10:11和40:33是更合适的。

 

      PAL的问题就比较大了。如果我们认为数字格式的PAL是用704×576的分辨率显示4:3的比例,那么相当于PAR=576×4/3÷704=12/11。这就与之前的计算不相符。而如果认为PAR=59/54,那么数字PAL的横向分辨率为576×4/3×59/54=702.915...!而不是标准的704。实际上,以我的实际经验,PAL制DVD的画面并不总是局限于中间的704(其实NTSC也一样),有时甚至会占满720,比如2015年发行的BFI英二版《小城之春》。这时候,我就不知道该如何处理了。是按数字PAL的12:11,还是根据“实际分辨率显示4:3画面”的已知条件自己重新计算PAR?如果是后者的话,PAR的值为576×4/3÷720=16/15。本文把这个问题在这里留作疑问。

 


 

8.结语

 

       第7节的疑问,其实在具体实践中意义不大。一部DVD节目中的PAR肯定是一个真实存在的唯一值,我们按照这个PAR来Crop&Resize或设定--sar就行了,毕竟DVD可能横向宽度不是704,也可能真实的显示宽高比不是严格的4:3或16:9。但是,我们如此纠结PAR的取值,进行了这么多计算,而那些制作DVD的发行商,真的是严格按照ITU-R BT.601制作的吗?每部同一制式DVD的PAR都是固定值吗?答案自然是否定的。

 

       Crop&Resize的方法在压制时需要resize一次,在播放时又需要再resize一次以适应显示设备的实际分辨率;而设定--sar的话只需要在播放时resize一次。从这个角度来说,在编码器里设定--sar比Crop&Resize更合理、方便。但有些老旧的播放器有可能不识别sar。

       至于--sar设定为多少,我觉得因为制作方也不一定是严格按标准制作,我们不论取上述计算的哪个值都有可能是错的,所以不必太纠结。实际上即使我们根据PAR设定了正确的--sar,因为视频的当前分辨率与SAR的最小公倍数很可能会超出显示器的分辨率,显示时的实际采样宽高比与设定的--sar还是会有偏差,画面还是会有变形。另外,计算机显示器的像素宽高比也不一定是严格的1:1。

      正因为如此,我觉得在处理DVD节目、设定--sar时,直接无脑使用如下数字即可:

NTSC    4:3    sar=10:11

NTSC    16:9  sar=40:33

PAL       4:3    sar=12:11

PAL      16:9   sar=16:11

      这组值也是H.264和H.265的建议书中明确给出的。虽然把H.264和H。265的规范硬往MPEG-2的DVD上套有些牵强,但我觉得非常值得参考。毕竟H.264和H.265作为较新的规范,制定过程中应该会充分考虑历史原因和当前的实际情况。(ITU-T Rec. H.264 Table E-1、ITU-T Rec. H.265 v5 Table E.1)

      

*封装对SAR的影响

mkvmerge会读取AVC stream中的SAR信息,并据此计算出DAR并写入container。MPC-HC在播放时会优先读取container中的AR信息。

而mkvmerge对于DAR的计算方法有点蛋疼,分母直接取竖向分辨率,分子则用横向分辨率乘以SAR并取整得到。

举个例子,《泪光闪闪》DVD切去黑边后剩下716*464,我设定了--sar 40:33,所以分母直接取464,分子则这样计算:716×40/33=867.87...取整数868。于是DAR=868:464这样的AR信息就被mkvmerge写入了container。这也就是播放器播放时的实际显示宽高比。

此时,实际的SAR=868/464÷716/464=217:179

而如果我们理想的SAR=40:33

(217/179-40/33)÷40/33=0.000169...

于是,画面有了大约万分之1.7的变形。

这应该是上古大佬们重视Crop&Resize而不是直接设定--sar的原因之一。要追求AE=0,只能Crop&Resize;做Crop&Resize,也不一定能找到一种合适的做法保证AE=0。


*714和711的由来

714:

在SMPTE RP 187中,规定NTSC采样时间为52+8/9μs(没错,跟SMPTE 244M以及ITU-R BT.601都不一样)。此时有效像素有13.5MHz×(52+8/9μs)=714个。

注:此时的采样频率为648÷(52+8/9μs)=12+30/119MHz

PAR=(12+30/119)÷13.5=324:357

这种说法来源于dizyh的文章《[补充]Crop&Resize原理XT版》,发布于漫游和作者博客。然而这里也有存疑,wiki和doom9上的说法是SMPTE RP 187规定了NTSC的PAR为160/177,PAL的PAR为1132/1035,存在矛盾。

711:

NTSC的垂直分辨率原本就是486,如果给720×480在垂直方向补6个像素变成720×486,要得到72:79的SAR就需要切边至711。

720*480->720*486->711*486->640*480

另外还有上古时代常见的一种做法:720*480->711*480->648*480->640*480。

先切边至711*480,再resize至648*480,然后切去8个像素变成640*480。

两种做法的实际SAR都是72:79,但是前一种更有“理论依据”而后者只是为了凑出72:79这个数字。


参考资料:

Wiki

SilkyBible

Crop&Resize原理XT版

 
评论
热度(1)
 
回到顶部