【问题标题】:Image.HorizontalResolution and Image.VerticalResolution - why float?Image.Horizo​​ntalResolution 和 Image.VerticalResolution - 为什么浮动?
【发布时间】:2016-01-11 17:51:40
【问题描述】:

这部分是出于好奇,部分是为了证明决定如何在 SQL Server 数据库中存储:

为什么Image.HorizontalResolutionImage.VerticalResolution 有浮点数类型? “infinity”和“NaN”是如何参与其中的?

参考:Image.HorizontalResolution Property

【问题讨论】:

  • 谁决定这些字段是浮动的?你自己?您正在使用的库?哪个 API?
  • @NayukiMinase,.NET 框架,图像类
  • 哦!因为“分辨率”是指每英寸的点数,而不是像素尺寸。我们知道物理量是实数,而不是整数。
  • 有什么例子吗?愿意将其添加为答案吗?

标签: .net image image-processing


【解决方案1】:

一开始我很困惑,因为“分辨率”在图像上下文中的多重含义。

当我们谈论像素尺寸方面的分辨率时,数字总是整数。例如,“这台电视的分辨率为 1920×1080”。

当我们谈论以每英寸/米/等像素为单位的分辨率时,这个数字不需要是一个整洁的整数。我们可以有 300 DPI、300.5 DPI、314.159 DPI 等值。

答案:在 API 字段 Image.HorizontalResolution 的上下文中,我们谈论的是物理分辨率,这就是为什么它是浮点数而不是整数更有意义的原因。

【讨论】:

    【解决方案2】:

    这个问题的实际答案是它是一个浮点数,因为美国不使用公制系统,它以英寸为单位。世界其他地区使用仪表。一米有 25.4 英寸不会产生很好的整数。图像文件格式使用不同的标准,具有讽刺意味的是,使用米而不是英寸的最常见图像格式是由一家美国公司创建的。 BMP 文件格式使用每米像素数。

    也许技术上更正确的答案是分辨率是用于创建图像的图像传感器的设计参数。一种物理属性,例如 CCD 传感器中的单元间距。并受用于将场景投射到传感器上的镜头的影响。传感器和镜头都不一定具有每英寸可整除的数字。或每米。芯片烘焙工厂使用以米为单位的特征尺寸。嗯,纳米。而且镜头的焦距通常是可调的,而图像处理器并没有考虑到这一点。

    所以实际上它是just a reference number,实际选取的值是一个很好的整数,以英寸为单位,与图像中的像素数成正比。它确保您可以在物理尺寸大致相同的另一台设备(如打印机)上复制图像。非常常见的值是 72 和 96,这是监视器的默认值(不管监视器大小),也是您使用绘画程序创建图像时获得的值。 300 和 600 很常见,是廉价扫描仪的分辨率。继续加倍它与您花费的金额成正比。

    我唯一一次看到它是一个小数,是在一个搞砸了米到英寸转换的图像转换程序中。截断它而不是舍入它。当你四舍五入时,将它作为整数存储在 dbase 中是可以的。它永远不是无穷大或 NaN。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-21
      • 1970-01-01
      • 1970-01-01
      • 2011-12-01
      • 2013-07-15
      相关资源
      最近更新 更多