例如,一个4×6英寸图像,图像分辨率为 800×1200,则PPI是200。
图像描述
图像可以描述为2D函数 f ( x , y ) f(x, y) f(x,y),其中 ( x , y ) (x, y) (x,y) 是空间坐标,而 f ( x , y ) f(x, y) f(x,y) 是图像在点 ( x , y ) (x, y) (x,y) 处的亮度或灰度或颜色值。另外,当f(x, y)和(x, y)值都是有限离散量时,该图像也被称为数字图像,此时:
-
x ∈ [ 0 , h − 1 ] x∈ [0, h-1] x∈[0,h−1],其中 h h h 是图像的高度
-
y ∈ [ 0 , w − 1 ] y∈ [0, w-1] y∈[0,w−1],其中 w w w 是图像的宽度
-
f ( x , y ) ∈ [ 0 , L − 1 ] f(x, y)∈ [0,L-1] f(x,y)∈[0,L−1],其中 L = 256 L=256 L=256 (对于8位灰度图像)
彩色图像也可以用同样的方式表示,只是我们需要定义三个函数来分别表示红色、绿色和蓝色值。这三个单独的函数中的每一个都遵循与为灰度图像定义的 f ( x , y ) f(x, y) f(x,y) 函数相同的公式。我们将这三个函数的子索引 R、G 和 B 分别表示为 f R ( x , y ) f_R(x, y) fR(x,y)、 f G ( x , y ) f_G(x, y) fG(x,y) 和 f B ( x , y ) f_B(x, y) fB(x,y)。
同样,黑白图像也可以表示为相同的形式,其仅需要一个函数来表示图像,且 f ( x , y ) f(x, y) f(x,y) 只能取两个值。通常,0 表示黑色、1 表示白色。
下图显示了三种不同类型的图像(彩色图像、灰度图像和黑白图像):
数字图像可以看作是真实场景的近似,因为 f ( x , y ) f(x, y) f(x,y) 值是有限的离散量。此外,灰度和黑白图像每个点只对应有一个值,彩色图像每个点需要三个函数对应于图像的红色、绿色和蓝色分量。
图像文件类型
尽管在 OpenCV 中处理的图像时,可以将图像看作 RGB 三元组的矩阵(在 RGB 图像模型情况下),但它们不一定是以这种格式创建、存储或传输的。有许多不同的文件格式,如GIF、PNG、位图或JPEG,使用不同形式的压缩(无损或有损)来更有效地表示图像。
下表列示了 OpenCV 支持的文件格式及其关联的文件扩展名:
| 文件格式 | 文件扩展名 |
| — | — |
| Windows bitmaps | *.bmp和*.dib |
| JPEG files | *.JPEG、*.jpg 和 *.jpe |
| JPEG 2000 files | *.jp2 |
| Portable Network Graphics | *.png |
| Portable image format | *.pbm、*.pgm 和 *.ppm |
| TIFF files | *.TIFF 和 *.tif |
对图像应用无损或有损压缩算法,可以得到比未压缩图像占据存储空间小的图像。其中,在无损压缩算法中,得到的图像与原始图像等价,也就是说,经过反压缩过程后,得到的图像与原始图像完全等价(相同);而在有损压缩算法中,得到的图像并不等同于原始图像,这意味着图像中的某些细节会丢失,在许多有损压缩算法中,压缩级别是可以调整的。
OpenCV中的坐标系
为了更好的展示 OpenCV 中的坐标系以及如何访问各个像素,查看以下低分辨率图像为例:
这个图片的尺寸是 32×41 像素,也就是说,这个图像有 1312 个像素。为了进一步说明,我们可以在每个轴上添加像素计数,如下图所示:
现在,我们来看看 ( x , y ) (x, y) (x,y) 形式的像素索引。请注意,像素索引起始值为零,这意味着左上角位于 ( 0 , 0 ) (0, 0) (0,0),