[已解决] 获取照片的分辨率和尺寸用什么函数

[复制链接]
matlabzhanghu 发表于 2017-2-24 18:19:08
   imread  imfinfo   imageinfo  这3个函数可以得到照片的  像素点宽、高 但是怎么知道照片的 分辨率  dpi 点每英寸 )  或者 ppi ( 像素每英寸)是多少?
还有得到照片的尺寸  厘米或者英寸?

最佳答案


kastin 发表于 2017-2-25 11:21:15
matlabzhanghu 发表于 2017-2-24 22:38
谢谢  我发现同是 jpg 的图片(照片),有的有 这些 Resolution 属性  有的没有   
       XResolution: ...

这个就是dpi,一般来说在不同方向上可以不同,但是如果不同的话会造成照片失真(想想看,水平方向模糊而纵向清晰是有多别扭),所以现在只要说到dpi指的是长度和高度方向都是一样的值。上面XResolution是水平方向的dpi,YResolution是高度方向的,值都为72,单位是Inch(英寸),即72像素点每英寸。

之所以有的相片有这个属性,是因为这些照片是通过设备采集的,比如一些相机或者扫描仪等。这个属性的作用是帮助真实地还原照片内容的物理大小。为了理解这一点,我再举个例子:

比如有一个硬币,通过相机拍摄得到1200 x 900 的照片,如前所述,在不同设备打印出来的相片大小不同(具体就不再计算了),但实际上当时相机视角看到的硬币的实际大小是固定的,不会变。如果用低分辨率设备打印,那么这个照片会很大,硬币就显得很大(这与当时相机拍摄的位置处所看到的大小不符合)。所以,只有按照当时拍摄时所用到的分辨率来打印才能真实还原。

13 条回复


cxvista 发表于 2017-2-24 19:13:33
  1. imfinfo('cameraman.tif')

  2. ans =

  3.                      Filename: 'F:\Program Files\MATLAB\R2014a\toolbox\images\imd...'
  4.                   FileModDate: '25-Sep-2013 16:11:58'
  5.                      FileSize: 65240
  6.                        Format: 'tif'
  7.                 FormatVersion: []
  8.                         Width: 256
  9.                        Height: 256
  10.                      BitDepth: 8
  11.                     ColorType: 'grayscale'
  12.               FormatSignature: [77 77 0 42]
  13.                     ByteOrder: 'big-endian'
  14.                NewSubFileType: 0
  15.                 BitsPerSample: 8
  16.                   Compression: 'PackBits'
  17.     PhotometricInterpretation: 'BlackIsZero'
  18.                  StripOffsets: [8 8262 16426 24578 32492 40499 48599 56637]
  19.               SamplesPerPixel: 1
  20.                  RowsPerStrip: 32
  21.               StripByteCounts: [8254 8164 8152 7914 8007 8100 8038 8235]
  22.                   XResolution: 72
  23.                   YResolution: 72
  24.                ResolutionUnit: 'Inch'
  25.                      Colormap: []
  26.           PlanarConfiguration: 'Chunky'
  27.                     TileWidth: []
  28.                    TileLength: []
  29.                   TileOffsets: []
  30.                TileByteCounts: []
  31.                   Orientation: 1
  32.                     FillOrder: 1
  33.              GrayResponseUnit: 0.0100
  34.                MaxSampleValue: 255
  35.                MinSampleValue: 0
  36.                  Thresholding: 1
  37.                        Offset: 64872
  38.              ImageDescription: 'This image is distributed by The MathWorks, Inc. ...'
复制代码

kastin 发表于 2017-2-24 22:03:10
照片的物理尺寸取决于分辨率(dpi)以及照片的像素值(宽x高),这三者是相互关联的。dpi不是相片决定的,而是输入设备(比如扫描仪)或者输出设备(显示器、打印机等)决定的。

matlabzhanghu 发表于 2017-2-24 22:22:46
kastin 发表于 2017-2-24 22:03
照片的物理尺寸取决于分辨率(dpi)以及照片的像素值(宽x高),这三者是相互关联的。dpi不是相片决定的,而 ...

你是说同一张照片拿到不同显示器它的尺寸不一样?那什么是固定的?

matlabzhanghu 发表于 2017-2-24 22:38:33

谢谢  我发现同是 jpg 的图片(照片),有的有 这些 Resolution 属性  有的没有   
       XResolution: 72
        YResolution: 72
      ResolutionUnit: 'Inch'
想请您介绍下这三个属性的意义,帮助文件中竟然查不到
跟我的理解  分辨率 (像素每英寸)  不同
谢谢

jingzhaos 发表于 2017-2-25 07:36:54
matlabzhanghu 发表于 2017-2-24 22:38
谢谢  我发现同是 jpg 的图片(照片),有的有 这些 Resolution 属性  有的没有   
       XResolution: ...

这不是横向分辨率,纵向分辨率和分辨率单位吗?有啥不同,就是像素每英寸吧?

kastin 发表于 2017-2-25 11:10:11
matlabzhanghu 发表于 2017-2-24 22:22
你是说同一张照片拿到不同显示器它的尺寸不一样?那什么是固定的?

不,一般工业化的东西都有现成标准,显示器大部分都是72,除非一些专门的(如医用设备显示器、探测仪显示器等)可能分辨率会高一些。如果要修改这些,那么工业化生产的设备需要进行升级改造,这是非常花费成本的。

对于同一个照片,只要输出设备固定,那么它的物理尺寸就是固定的(当然你可以强行放大,但是这样就会出现“马赛克”现象,造成失真)。照片像素是固定的,这个永远不变。

举个例子,比如你有900x600的照片,拿到冲印店冲印(300dpi),物理尺寸只有7.62cm x 5.08 cm,但是如果你用普通打印机(150dpi)打印,会发现尺寸为15.24cm x 10.16cm.

kastin 发表于 2017-2-25 11:21:15
matlabzhanghu 发表于 2017-2-24 22:38
谢谢  我发现同是 jpg 的图片(照片),有的有 这些 Resolution 属性  有的没有   
       XResolution: ...

这个就是dpi,一般来说在不同方向上可以不同,但是如果不同的话会造成照片失真(想想看,水平方向模糊而纵向清晰是有多别扭),所以现在只要说到dpi指的是长度和高度方向都是一样的值。上面XResolution是水平方向的dpi,YResolution是高度方向的,值都为72,单位是Inch(英寸),即72像素点每英寸。

之所以有的相片有这个属性,是因为这些照片是通过设备采集的,比如一些相机或者扫描仪等。这个属性的作用是帮助真实地还原照片内容的物理大小。为了理解这一点,我再举个例子:

比如有一个硬币,通过相机拍摄得到1200 x 900 的照片,如前所述,在不同设备打印出来的相片大小不同(具体就不再计算了),但实际上当时相机视角看到的硬币的实际大小是固定的,不会变。如果用低分辨率设备打印,那么这个照片会很大,硬币就显得很大(这与当时相机拍摄的位置处所看到的大小不符合)。所以,只有按照当时拍摄时所用到的分辨率来打印才能真实还原。
回复此楼

matlabzhanghu 发表于 2017-2-25 12:55:06
kastin 发表于 2017-2-25 11:21
这个就是dpi,一般来说在不同方向上可以不同,但是如果不同的话会造成照片失真(想想看,水平方向模糊而 ...

蒽  感谢您的耐心讲解,懂了。
但还是有疑问,有期刊要求在论文文末加上作者照片,并指定尺寸 (比如 2.5x2 英寸) 这时候只能按照自己显示器的分辨率去调整划算了? 那到人家那边显示器分辨率不同 还是尺寸不对呀?

matlabzhanghu 发表于 2017-2-25 13:10:51
kastin 发表于 2017-2-25 11:21
这个就是dpi,一般来说在不同方向上可以不同,但是如果不同的话会造成照片失真(想想看,水平方向模糊而 ...

在 PS 里 可以直接获取图片的 分辨率,像素点,修改图片的尺寸大小,这样修改的到打印的时候没有任何参考价值?
1.png

kastin 发表于 2017-2-25 13:44:23
matlabzhanghu 发表于 2017-2-25 13:10
在 PS 里 可以直接获取图片的 分辨率,像素点,修改图片的尺寸大小,这样修改的到打印的时候没有任何参考 ...

图片除了可以通过采集设备来采集真实世界的图像以外,还可以通过软件生成,比如PS,所以PS可以设置像素以及分辨率。

所以你可以把PS看成是一个硬件采集设备,把生成的图片看成是虚拟采集出来的结果。这个分辨率只是用于打印时候参考,从而能真实还原到设定的文档大小(宽高)。

kastin 发表于 2017-2-25 13:51:32
matlabzhanghu 发表于 2017-2-25 13:10
在 PS 里 可以直接获取图片的 分辨率,像素点,修改图片的尺寸大小,这样修改的到打印的时候没有任何参考 ...

图片除了可以通过采集设备来采集真实世界的图像以外,还可以通过软件生成(比如PS、coreldraw等),所以这些软件可以有设置像素以及分辨率的功能。

因此你可以把PS看成是一个“虚拟的“硬件采集设备,把生成的图片看成是”虚拟采集“出来的结果。这个分辨率只是用于打印时候参考,从而能真实还原到设定的文档大小(宽高)。

我没有用过PS,如果我上述的理解正确的话,像素大小修改,文档大小中的宽高会自动改变,若修改分辨率但不改像素大小,那么文档大小中的宽高数据也会自动改变。你可以尝试一下,看看这三者是不是只有两者独立。

kastin 发表于 2017-2-25 14:00:39
matlabzhanghu 发表于 2017-2-25 12:55
蒽  感谢您的耐心讲解,懂了。
但还是有疑问,有期刊要求在论文文末加上作者照片,并指定尺寸 (比如 2.5x ...

这个不按显示器的来,而是直接看这个期刊的要求。一般在期刊网站上会有格式要求,其中关于图像方面会给出具体的dpi要求。一般来说,期刊论文的数据图片dpi最低要求300dpi,至于文末的作者照片,看看是否有特殊说明,没有的话应该也是300dpi,或者你可以直接发邮件或者电话咨询照片需要的dpi是多少。

假设300dpi,2.5x2英寸照片,那么照片像素应该是750x600的,只要拍照时候选择的像素比750x600大就行(宽高都要大,可以选择手机拍摄),然后通过看图软件或者PS将照片像素下调到750x600,最后发过去就行。

matlabzhanghu 发表于 2017-2-25 14:05:48
kastin 发表于 2017-2-25 14:00
这个不按显示器的来,而是直接看这个期刊的要求。一般在期刊网站上会有格式要求,其中关于图像方面会给出 ...

蒽  是这个意思   感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表