像素横纵比公式的原理

来源:互联网 发布:淘宝店经营技巧 编辑:程序博客网 时间:2024/04/29 19:35

在《3D数学基础-图形与游戏开发》一书中,看到了像素横纵比这个概念。当然很好理解,比如像素是正方形,那么像素横纵比就是1喽。

关于像素横纵比细节,请参考MSDN:https://msdn.microsoft.com/zh-cn/library/cc294571.aspx,我在引用之后将会解析一下公式含义

引用如下:

像素纵横比是指像素的宽 (x) 与高 (y) 之比。正方形像素的比例为 1:1,但非正方形(矩形)像素的高和宽不相同。这一概念类似于帧纵横比,后者是图像的整个宽度与高度之比。通常,电视像素是矩形,计算机像素是正方形。因此,在计算机显示器上看起来合适的图像在电视屏幕上会变形,显示球形图像时尤其明显。在 Microsoft Expression Encoder 中,可以设置一些选项,以便正确显示非正方形像素媒体,以及输出非正方形像素内容。

请注意,图像的帧纵横比不一定限定像素纵横比。帧纵横比为 16:9 的宽屏图像可以包含正方形或非正方形像素。例如,帧纵横比为 720x486 的数字视频通常被视为宽屏视频,且使用矩形像素创建。但是,帧纵横比相同的图像实际上却可能是在图像编辑程序中创建的,因此是在正方形像素环境中创建的。

像素纵横比

Cc294571.a0664ec4-e346-464a-8686-4acaca5f7a58(zh-cn,Expression.10).png

如果使用像素看似正方形但却非正方形的像素对视频源编码,则输出将变形,如下图所示。

使用矩形像素创建的圆(左)和在计算机显示器上显示的同一圆(右)

Cc294571.832f4335-b155-4c27-8b57-16b8c0350522(zh-cn,Expression.10).png

如果您知道图像源的帧纵横比 (Ix:Iy) 和确切的高和宽,则可以使用以下公式确定像素纵横比的 x 值和 y 值:

PixelAspectRatioX / PixelAspectRatioY = (Ix * height) / (Iy * width)

例如,如果图像为 720 x 360 像素,帧纵横比为宽屏 (16:9),则:

PixelAspectRatioX=8 and PixelAspectRatioY=9PixelAspectRatioX / PixelAspectRatioY = (16*360) / (9*720) = 8/9

当您选择或输入帧纵横比时,Expression Encoder 会执行此项计算。有关详细信息,请参阅设置视频纵横比。

请看书中给出的像素纵横比公式:


解析:

像素的宽/像素的高 = (物理的宽 / 物理的高 )* (像素比的高 / 像素比的宽)

但我不喜欢这种不能一眼看到原理的形式,我改为了下面的形式


也就是说


即:(物理的宽 / 像素的宽) / (物理的高/像素的高) => 每个像素的宽的物理尺寸 / 每个像素的高的物理尺寸

0 0