一张3456*2048的图像指的是其总像素数为(3456*2048),其中长边有3456个像素,宽边有2048个像素。我们所说的手机1500万像素等概念就是源于这个乘积得出来的数值。 分辨率指的是每英寸中含有的像素点的个数,即像素密度单位为(dpi:dots per inch,像素点/英寸)或者也有称之为点密度(ppi),视网膜屏就是因为ppi较高才这样称之为的。 那么图像的一张3456*2048的图像指的是其总像素数为(3456*2048),其中长边有3456个像素,宽边有2048个像素。我们所说的手机1500万像素等概念就是源于这个乘积得出来的数值。
分辨率指的是每英寸中含有的像素点的个数,即像素密度单位为(dpi:dots per inch,像素点/英寸)或者也有称之为点密度(ppi),视网膜屏就是因为ppi较高才这样称之为的。
问题来了:
那么图像的像素数越大,图像越清晰么?不是的,图像的清晰度主要是看分辨率的,也就是单位尺寸中有多少的像素,其实还和你相机的感光器件等等很多因素有关系,不能盲目的信任像素总数。如果你的手机或者相机照出来的图像的尺寸一定,比如就是3寸的,那么肯定就是像素总数越大越清晰,因为分辨率高了。
那么图像的像素点越多,图像的尺寸就会越大么?一般来说图像的像素点越多,图像的尺寸就越大,但也不是完全的,比如一张512*512的图像,可以保存成一张5寸的照片,也可以保存成一张3寸的照片,这也就是为什么你看着图像越放大越不清晰,越缩小越清晰的原因,在opencv中可以实现该功能: 这幅图像分辨率200*200dpi,大小450*450像素,那么就可以得到:
图像大小 = 图像大小 / 分辨率 = 450 / 200 = 2.25
所以,这幅图像的大小为2.25*2.25英寸
如果要求图像大小变成1.5*1.5英寸,但像素数仍为450*450,按照公式:
图像大小 = 图像像素数 / 图像分辨率,就得到了图像的分辨率应为:450 / 1.5 = 300dpi
所以,应该使用命令imwrite(f, ‘sf.tif’, ‘compression’, ‘none’, ‘resolution’, [300 300])那么图像像素的个数和图像占内存大小有什么关系?更加细节话的为,jpg格式的图像像素的个数和图像占内存大小有什么关系?答案:没有关系,因为jpg格式的图像是有损压缩的,你不知道压缩的算法具体是什么样的,无压缩的BMP位图的大小是相同的可以准确计算的。
两个相同尺寸1920*1200的图像,在相同色彩度(如24位真彩)情况下,无压缩的BMP位图的大小是相同的。
而你看到文件大小的不同,是因为图像压缩算法造成的(无压缩文件会非常大,一般为BMP格式),图像压缩是个比较大的课题,分为无损压缩(PNG等)和有损压缩(JPG等),具体压缩算法非常多,各有优劣。
以最常见的JPG为例,其压缩算法是有损的,压缩后的文件大小有几个重要的决定因素:原图尺寸、有损程度、图像中相邻点色差,图像中存在色彩数量等等。