图像的取样和量化
图像的取样和量化
概述
获取图像的方法有很多种,但所有的方法目的都相同,由感测的数据生成数字图像,多传感器的输出是连续的电压波形,这些波形的幅度和空间特性都与正被感测的物理现象相关。要产生一副数字图像,就需要把连续感测的数据转化为数字形式。这种转化包括两种处理:取样和量化
概念
一幅连续图像f,将其转化为数字形式,她的X坐标与Y坐标是连续的,幅度也是连续的,要将函数数字化,就要对该函数的坐标和幅度进行取样
- 取样 对坐标值数字化称为取样
- 量化 对幅度值数字化称为量化
图解
上图可以看作一个取样和量化的过程
a. 是一幅连续图像,也可以用3D轮廓扫描仪的角度来看,a是一个物体 AB一维直线,在3D轮廓扫描仪的角度看是一条激光线
b. b是图像AB所取的一条X坐标为宽度方向,Y为图像的亮度值的一个变化曲线。从3D相机的角度是Y为物体的高度值
c. C是对X方向和Y方向进行取样和量化,也就是将变化曲线放入坐标系给与坐标数值,每一个坐标值对应一个亮度值。图像的角度看X单位是像素数,Y是亮度值。3D相机的角度看X是宽度数量值,Y是高度值。
d. D图像就是针对C坐标图像取间隔较大的X坐标和其对应的Y坐标组成的新的值。这有一个专业词语叫降采样。降低像素密度减小图像数据量。
上一幅图是针对宽度方向的取样和量化,这幅图是宽度方向和高度方向都进行了取样和量化。物体影像映射到传感器上,转化为取样量化后的数字图像。
数字图像表示
连续图像f(s,t)是有两个连续变量s,t的连续图像函数,通过取样和量化 我们将连续图像转化为离散图像f(x,y)。原图像的s,t是连续的就是两个坐标之间可以无限细分的量,取样和量化后S变为X表示为图像的宽度方向的像素数量,t表示为Y,为图像的高度方向的像素数量。f(x,y)就是变成一个离散函数,坐标值转变为每个像素的位置和像素亮度值。(这是我自己白话简述的)
原文:令f(s,t)表示一个有两个连续变量s和t的连续图像函数。如前节所述,通过取样和量化,我们 可把该函数转换为数字图像。假设我们把这幅连续图像取样为一幅数字图像f(x,y),该图像包含有M 行和N列,其中(x,y)是离散坐标。为表达清楚和方便起见,我们对这些离散坐标使用整数值: x=0,1,2.,M-1和y=0,1,2,…,N-1。这样,数字图像在原点位置的值就是f(0,0),第一行中下一 个坐标位置的值是f(0,1)。这里,符号(0,1)表示第一行的第二个样本。对图像取样时,这些值并不是 物理坐标值。一般来说,数字图像在任何坐标(x,y)处的值记为f(x,y),其中x和y都是整数。需要 引用特定的坐标(i,j)时,我们使用符号f(i,j),其中的参数是整数。由图像的坐标张成的实平面部分称 为空间域,x和y称为空间变量或空间坐标。 图2.18显示了表示f(x,y)的三种方法。图2.18(a)是一幅函数图,它用两个坐标轴决定空间位置, 用第三个坐标轴决定f的值,f是x和y的函数。在处理元素以(x,y,z)形式表达的灰度集时,这种表 示是很有用的,其中x和y是空间坐标,z是f在坐标(x,y)处的值。2.6节将简要地介绍这种表示。 图2.18(b)的表示更常见,它表示的是f(x,y)出现在计算机显示器或照片上的情况。这里,显示器 上每个点的灰度与该点处的f值成比例。这幅图中只有三个等间隔的灰度值。如果这些灰度值被归一 化到区间[0,1],那么图像中每个点的灰度值都是0,0.5或1。显示器或打印机把这三个值分别转换为 黑色、灰色或白色,如图2.18(b)所示。这种表示包括彩色图像,允许我们即时查看结果。
所以图像的表示在数学上的另一种表示方法就是矩阵如上图c:
矩阵中每一个元素的位置即代表该点像素的位置,每一个元素的值表示该点像素值
也因此我们有了图像的坐标约定 即左上角为原点,X方向表述图像的行数,Y坐标表示图像的列数。这符合我们熟悉的笛卡尔坐标系,为了让原点出现在左上角将其旋转了90°
图像的亮度值量化和存储数据大小
关于亮度的量化 我们人眼看到的亮度和颜色是连续的。假设一张图片宽度方向有N个像素(多少列),高度方向M个像素(多少行),那么一张图的大小就是MN个像素
每个像素能取多少个值是我们对于亮度等级的划分,常见的8位图和16位图即表示一个像素能去到的值有2的8次方和2的16次方 。位数越多表示的灰度细节越丰富
假设一张8位1920*1080的照片 存储大小为 1920x1080x8 = 16588800bits 即 16588800/8/1024/1024 = 1.9M 一张1920x1080灰度图为1.9m左右
动态范围
她是指图像中能同时显示的最亮和最暗部分之间的范围。动态范围建立一个系统所能表示和一幅图像所具有的最低和最高灰度级。与这一概念紧密相关 的是图像对比度,它定义为一幅图像中最高和最低灰度级间的灰度差。反差比是这两个量的比率。 幅图像中的可观像素数量具有高动态范围时,我们称该图像具有高对比度。相反,具有低动态范围的图像看起来都很灰暗
线性索引和坐标索引
线性索引:简单理解就是将图像矩阵转化为一维向量,可以是纵向排列也可以是横向排列 ,向量的每个元素索引就是线性索引。这通常在程序计算中常见。比方说一张1920x1080照片按照横向排列,你希望找到第10行第5个像素的像素索引那么就是 1920x9-1+5 ,列向排列差不多计算
坐标索引:加入有一张图是MxN大小 那么任意像素索引可以表示成(xi,yi),xi在0-M范围 yi在0-N范围
空间分辨率
空间分辨率是图像中最小可辨别细节的测度。我们可用几种方式来定量地说明空间分辨率,其中
单位距离的线对数和单位距离的点数(像素数) 是最常用的测度。
假设我们用交替出现的黑色和白色垂线构造一幅图形,其中每条垂线的线宽为W单位(W可以小于1)。于是,线对的宽度是2W,单位距离内有W/2个线对。例如,如果一条线的宽度是0.1mm,那么单位距离(1mm)内就有5个线对。广泛使用的图像分辨率的定义是单位距离内可分辨的最大线对数(如每毫米100个线对)。
点数/单位距离 是印刷和出版业中常用的图像分辨率的测度。在美国,这一测度通常使用点数/英寸(dpi) 表示。
例如,报纸的印刷分辨率为75dpi,杂志的印刷分辨率为133dpi,广告页的印刷分辨率为175dpi,本书
正文的印刷分辨率为2400dpi。
空间分辨率的测度必须针对空间单位来声明才有意义。图像大小本身并不含有空间分辨率信息。
例如,如果未声明图像包含的空间维数,那么说一幅图像的分辨率为1024×1024像素是没有意义的。
图像大小本身只在比较成像性能时才有帮助。例如,假设两部摄像机配备了相同的镜头,并在相同的
距离拍摄同一幅图像,那么我们才能说具有20兆像素CCD成像芯片的数字摄像机与8兆像素的摄像
机相比,有分辨细节的更高能力。
灰度分辨率
灰度分辨率 是指在灰度级中可分辨的最小变化。基于硬件考虑,灰度级数通常是2的整数次幂。最常用的数是8比特,在需要增强特定灰度范围的某些应用中, 也使用16比特。使用32比特的灰度量化很少见。有时,我们会发现使用10比特或12比特来数字化 图像灰度级的系统,但这些系统并不常见。 与必须基于单位距离才有意义的空间分辨率不同,灰度分辨率通常是指量化灰度时所用的比特 数。 例如,我们常说一幅灰度被量化为256级的图像,其灰度分辨率为8比特。但要记住的是,灰度 的可分辨变化不仅受噪声和饱和度值的影响,而且受人类分析和解释整个场景内容的感知能力的影响
需要指出 细节越丰富的图片需要的灰度级越少 这个结论我直接拿过来省去了书中的介绍
观察发现,图像中的细节增多时,等偏爱曲线趋向于
会变得更加竖直。这一结果表明,细节丰富的图像可能只
需要较少的灰度级。例如,图2.26中对应于人群图像的等
偏爱曲线近乎竖直,表明对于固定的N值,这类图像的感
觉质量与所用灰度级数基本无关。其他两类图像的感觉质量在增加样本数的某些
区间内保持不变,但灰度级数实际上降低了。造成这一结
果的最可能的原因是,k的减小倾向于增大表观对比度
即感知到图像质量改善的一种视觉效果。
图像内插
内插通常在图像放大、缩小、旋转和几何校正等任务中使用 意思是当进行图像的变幻时 ,图像的dpi发生变化,比如将32x32的图片放大到64x64原本的像素数量势必不够用,此时需要在像素间进行插值,或者缩小时两像素重叠那么新的未知值该是多少 这种问题,需要指出这里的缩放不是图片物理大小缩放,是像素分辨率的缩放
最近邻内插 (零阶插值法)
- 找到新像素点的位置:首先,确定在新图像中每个像素的位置。
- 映射回原图像:将新图像中的每个像素位置,反向映射到原始图像中对应的浮点坐标(通常不是整数)。
- 选取最近的像素值:对于这个反向映射到的浮点坐标,最近邻内插法会找到在原始图像中离它物理距离最近的那个像素点。
- 直接复制:然后,它会直接把这个“最近的”原始像素点的颜色或灰度值,复制给新图像中的那个像素点。它不会做任何平均计算,也不会考虑周围其他像素点的值,只认准离它最近的那一个
优点:
- 简单快捷:它的算法非常简单,计算量小,速度非常快。这使得它非常适合实时处理或处理大量图像数据。
- 保留原始细节:因为它直接复制原始像素值,所以在某些特殊情况下,比如处理像素艺术(pixel art)、黑白二值图、图表或文字图片时,它可以很好地保留图像的锐利边缘和原始细节,不会引入模糊。
缺点: - 锯齿状(块状)伪影:这是它最明显的缺点。当图片被放大时,由于只是简单地复制像素,而不是平滑地过渡颜色,新生成的图像边缘会变得不平滑,出现明显的“锯齿”或者“马赛克”效果,看起来像一个个小方块。
- 图像质量下降:对于普通的照片或具有连续色调变化的图像来说,这种方法会使放大后的图像质量明显下降,看起来不自然,甚至显得粗糙。
双线性内插
- 找到目标点:首先确定新图像中这个空白像素点(我们称之为目标点)的位置。
- 映射回原图像:像之前一样,将这个目标点反向映射到原始图像中,它会落在原始图像的某个非整数坐标上(比如X=3.7,Y=5.2)。
- 锁定四个邻居:这个非整数坐标周围,最近的四个原始像素点(比如:(3,5)、(4,5)、(3,6)、(4,6))会被选中。
- 两次线性插值(这就是“双线性”的由来):
- 第一次线性插值:首先,它会在水平方向上进行两次插值。
- 比如,沿着X=3.7这条线,它会根据(3,5)和(4,5)这两个像素的亮度值,以及它们与X=3.7的距离,计算出一个在(3.7, 5)位置的虚拟亮度值。
- 同样地,它会根据(3,6)和(4,6)这两个像素的亮度值,计算出一个在(3.7, 6)位置的虚拟亮度值。
- 第二次线性插值:然后,它会在这两个虚拟的亮度值(在(3.7, 5)和(3.7, 6)的)之间,根据Y=5.2的距离,进行垂直方向的插值,最终得到在(3.7, 5.2)这个目标点上的最终亮度值。
- 第一次线性插值:首先,它会在水平方向上进行两次插值。
优点:
平滑性好:与最近邻内插相比,双线性内插生成的图像边缘更加平滑,因为它考虑了周围像素的过渡,减少了“锯齿”和“马赛克”现象,视觉效果更好。
减少伪影:由于像素值是计算出来的,而不是直接复制的,因此能够有效减少放大或缩小时产生的块状伪影。
图像质量提升:对于普通的照片和连续色调的图像,双线性插值处理后的图像质量明显优于最近邻插值。
缺点:
计算量更大:因为它需要进行四次读取和多次加权平均计算,所以比最近邻内插需要更多的计算资源和时间。不过对于现代计算机来说,这个计算量通常可以忽略不计。
可能引入模糊:虽然比最近邻平滑,但它也会在一定程度上引入轻微的模糊,尤其是在图像的锐利边缘处。因为它是取平均值,所以会把尖锐的边缘“磨平”一些。
仍然不是完美:对于非常大幅度的放大,或者对图像边缘要求极高的情况,它可能还不够理想,需要更复杂的插值算法(如双三次插值)。
双三次内插 AdobePhotoshop和CorelPhotopaint中使用的标准内插方法
找到目标点:确定新图像中需要赋值的像素点。
映射回原图像:将目标点反向映射到原始图像中,得到一个浮点坐标。
锁定十六个邻居:围绕这个浮点坐标,双三次内插会选择周围 4x4 共 16 个最近的原始像素点作为参考。
复杂的曲线拟合:它会用一个三次多项式函数来拟合这 16 个像素点的值,以及它们在水平和垂直方向上的变化率。这个函数能够更平滑、更精确地描述像素值的变化趋势。
计算精确值:最后,通过这个复杂的数学函数,计算出在目标浮点坐标上对应的像素值。
用大白话讲: 这就像你想估算一个陌生地方的气温,你不再只问周围几个邻居,而是向周围一大片区域的16个住户询问,并且你不仅问他们现在的气温,还问他们气温的变化趋势(是越来越热还是越来越冷),然后你用一个复杂的数学模型(就像画一条最平滑的曲线)来综合这些信息,预测出最精确的气温。
双三次内插的特点:
优点:
图像质量最佳:在常见的图像放大和缩小操作中,双三次内插通常能够提供最好的图像质量。它能生成更清晰、更平滑的图像,更好地保留细节,并且显著减少了锯齿和马赛克现象。
边缘表现好:由于它考虑了像素周围的变化趋势,因此在处理图像的边缘和细节时,能够更好地保持其锐利度,而不是简单地模糊掉。
适用于大部分图像类型:无论是照片、艺术作品还是其他连续色调的图像,双三次内插都能提供令人满意的结果。
缺点:
计算量最大:这是它最主要的缺点。因为它需要参考更多的像素点,并进行更复杂的数学计算(三次多项式拟合),所以它的计算开销是最大的,处理速度也相对较慢。不过对于现代计算机而言,这个速度差异在大多数情况下是可接受的。
可能引入“振铃效应”或“过冲”:在图像中颜色或亮度变化非常剧烈的地方(比如黑白分明的线条),双三次内插有时可能会在边缘附近产生轻微的“光晕”或“振铃”现象,表现为边缘附近出现一些不自然的亮线或暗线。这是因为三次多项式拟合曲线在某些情况下可能出现轻微的超调(overshoot)。
总结比较:
特性 | 最近邻内插 | 双线性内插 | 双三次内插 |
参考像素 | 1个(最近的) | 4个(周围2x2) | 16个(周围4x4) |
计算复杂性 | 最低 | 中等 | 最高 |
处理速度 | 最快 | 中等 | 最慢(相对而言) |
图像平滑度 | 最差(锯齿明显) | 较好(边缘平滑) | 最佳(非常平滑,细节保留好) |
伪影控制 | 块状/锯齿明显 | 减少锯齿,可能轻微模糊 | 显著减少伪影,但可能出现振铃效应 |
应用场景 | 像素艺术、二值图像、速度优先 | 大多数照片处理、均衡速度与质量 | 追求最高图像质量、专业图像编辑 |
图像内插部分有AI总结支持
学习状态: 已完成
难度等级: ⭐⭐⭐☆☆ (中级)
预计学习时间: 60分钟