图像分辨率、像素总数、文件大小搞清楚

问题来之前需要了解的基础:
一张34562048的图像指的是其总像素数为(34562048),其中长边有3456个像素,宽边有2048个像素。我们所说的手机1500万像素等概念就是源于这个乘积得出来的数值。
分辨率指的是每英寸中含有的像素点的个数,即像素密度单位为(dpi:dots per inch,像素点/英寸)或者也有称之为点密度(ppi),视网膜屏就是因为ppi较高才这样称之为的。

那么图像的一张34562048的图像指的是其总像素数为(34562048),其中长边有3456个像素,宽边有2048个像素。我们所说的手机1500万像素等概念就是源于这个乘积得出来的数值。
分辨率指的是每英寸中含有的像素点的个数,即像素密度单位为(dpi:dots per inch,像素点/英寸)或者也有称之为点密度(ppi),视网膜屏就是因为ppi较高才这样称之为的。

问题来了:

1、那么图像的像素数越大,图像越清晰么?不是的,清晰度主要是看分辨率的,也就是单位尺寸中有多少的像素,其实还和你相机的感光器件等等很多因素有关系,不能盲目的信任像素总数。如果你的手机或者相机照出来的图像的尺寸一定,比如就是3寸的,那么肯定就是像素总数越大越清晰,因为分辨率高了。

2、那么图像的像素点越多,图像的尺寸就会越大么?一般来说图像的像素点越多,图像的尺寸就越大,但也不是完全的,比如一张512512的图像,可以保存成一张5寸的照片,也可以保存成一张3寸的照片,这也就是为什么你看着图像越放大越不清晰,越缩小越清晰的原因,在opencv中可以实现该功能: 这幅图像分辨率200200dpi,大小450450像素,那么就可以得到:
图像大小 = 图像大小 / 分辨率 = 450 / 200 = 2.25
所以,这幅图像的大小为2.25
2.25英寸
如果要求图像大小变成1.51.5英寸,但像素数仍为450450,按照公式:
图像大小 = 图像像素数 / 图像分辨率,就得到了图像的分辨率应为:450 / 1.5 = 300dpi
所以,应该使用命令imwrite(f, ‘sf.tif’, ‘compression’, ‘none’, ‘resolution’, [300 300])

3、那么图像像素的个数和图像占内存大小有什么关系?更加细节话的为,jpg格式的图像像素的个数和图像占内存大小有什么关系?答案:没有关系,因为jpg格式的图像是有损压缩的,你不知道压缩的算法具体是什么样的,无压缩的BMP位图的大小是相同的可以准确计算的。

两个相同尺寸1920*1200的图像,在相同色彩度(如24位真彩)情况下,无压缩的BMP位图的大小是相同的。计算方式为:eg:大小=分辨率*位深/8
而你看到文件大小的不同,是因为图像压缩算法造成的(无压缩文件会非常大,一般为BMP格式),图像压缩是个比较大的课题,分为无损压缩(PNG等)和有损压缩(JPG等),具体压缩算法非常多,各有优劣。
以最常见的JPG为例,其压缩算法是有损的,压缩后的文件大小有几个重要的决定因素:原图尺寸、有损程度、图像中相邻点色差,图像中存在色彩数量等等。

    原文作者:herr_kun
    原文地址: https://blog.csdn.net/herr_kun/article/details/103277896
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞