图像尺度空间理论_金字塔内部空间有多大

2022-11-04 14:50:12 浏览数 (3)

文章目录

  • 尺度空间
      • 什么是尺度空间(scale space)
      • 为什么需要尺度空间
      • 高斯核
  • 图像金字塔
      • 什么是分辨率
      • 为什么需要多分辨率
      • 多尺度和多分辨率
      • 图像金字塔
      • 高斯金字塔
      • SIFT
  • 参考

Why multi-scale? Why should you blur? • Computational efficiency • Coarse-to-fine • Extracting hierarchical structure • First principles of physics of observations • Visual system is multi-scale

尺度空间

什么是尺度空间(scale space)

图像的尺度是指图像内容的粗细程度。尺度的概念是用来模拟观察者距离物体的远近的程度。 具体来说,观察者距离物体远,看到物体可能只有大概的轮廓;观察者距离物体近,更可能看到物体的细节,比如纹理,表面的粗糙等等。从频域的角度来说,图像的粗细程度代表的频域信息的低频成分和高频成分。 粗质图像代表信息大部分都集中在低频段,仅有少量的高频信息。细致图像代表信息成分丰富,高低频段的信息都有。

尺度空间分为线性尺度空间和非线性尺度空间。这里仅讨论线性尺度空间。

在数学上,空间(space)是指具有约束条件的集合(set)。图像的尺度空间是指同一张图像不同尺度的集合。在该集合中,细尺度图像通过filter形成粗尺度图像,即粗尺度图像的形成过程是高频信息被过滤的过程,不会引入新的杂质信息,因此任何存在于粗尺度图像下的内容都能在细尺度图像下找到。举个例子,如果你想看一颗树而不是叶子,可以故意删除图像中的某些细节(例如树叶树枝等),在摆脱这些细节时,必须确保不引入新的虚假细节。做到这一点的唯一方法是使用高斯模糊(已通过数学证明)。

综上,图像的尺度空间是一幅图像经过几个不同高斯核后形成的模糊图片的集合,用来模拟人眼看到物体的远近程度以及模糊程度。 图像尺度的改变不等于图像分辨率的改变,在下图的例子中,图像的分辨率是一样的,但是尺度却不一样。

代码语言:javascript复制
from skimage import data, filters,io
import matplotlib.pyplot as plt
%matplotlib inline
image = io.imread('/Users/xiaojun/Desktop/Programme/DataSet/mxnet_mtcnn_face_detection-master/anner.jpeg')
img1 = filters.gaussian(image, sigma=1.0)
img2 = filters.gaussian(image, sigma=2.0)
img3 = filters.gaussian(image, sigma=3.0)
plt.figure('gaussian',figsize=(8,8))
plt.subplot(221)
plt.imshow(image)
plt.axis('off')
plt.title('original image')
plt.subplot(222)
plt.imshow(img1)
plt.axis('off')
plt.title('gaussian kernel with sigmma=1.0')
plt.subplot(223)
plt.imshow(img2)
plt.axis('off')
plt.title('gaussian kernel with sigmma=2.0')
plt.subplot(224)
plt.imshow(img3)
plt.title('gaussian kernel with sigmma=3.0')
plt.axis('off')

为什么需要尺度空间

自然界中的物体呈现出不同的形态,需要不同的尺度来观测,比如,建筑物用“米”测量,原子用“纳米”。粗尺度图像更能体现物体的轮廓形态,细尺度图像更能体现物体的局部细节特征。

尺度对于图像来说,就是一种“measurement”,像是一种可调节的放大镜。比较形象的是,平常使用的Google地图,可以滑动鼠标来改变地图的尺度;照相机通过调焦,将景物拉近拉远。尺度空间中各尺度图像的模糊程度逐渐变大,模拟了景物由近到远在视网膜的形成过程。

我们(或计算机)观看的大多数图像都是通过光学相机将3D世界投影到2D光敏平面(人眼的视网膜或相机的CCD或CMOS像素平面)上拍摄的。我们都熟悉这样的事实,即远距离物体以较小的尺寸投影,在下图中,前面的向日葵看起来比地平线附近的向日葵大10倍。因此,人类视觉系统几乎没有关于物体将出现在图像上的比例/大小的先验知识。

但我们可以很好的观察与相机具有不同距离(因此看起来有大有小)的向日葵,人脸或者汽车牌照。对象的大小(尺度)取决于与相机的距离,在没有先验知识的前提下,视觉系统应准备好以所有可能的尺度“看到”物体,图像应同时在所有尺度级别上进行处理。

所以为什么要讨论尺度空间?因为计算机在进行图像分析时,并不知道图像的真实尺寸大小,需要考虑多尺度以获取感兴趣物体的最佳尺度。同时,在一幅图像的不同尺度下检测出相同的关键点来匹配,即尺度不变性。

高斯核

看起来似乎有很多方法可以构造尺度空间,但实际上,如果我们设定一些简单的要求,可以证明,高斯核是实现尺度变换的唯一线性核。

图像金字塔

什么是分辨率

图像的分辨率(Image Resolution)本质上是图像在水平和垂直方向的量化程度(离散化),直观上理解是指图像能展现的细节程度。 量化的过程是模拟信号转变成数字信号的过程,这一过程是不可逆的信息损失过程。因此,量化级别的高低决定了该数字信号能否更好的表示原本的模拟信号。图像是二维数组,水平像素和垂直像素的数量便是图像量化的级别,多像素图像更能展示图像的细节。如下图

为什么需要多分辨率

我们观察图像时,看到的通常是由相似纹理和灰度级连成的区域,它们相结合就形成了物体。如果物体的尺寸较小或对比度较低,那么我们需要以较高的分辨率来研究它们;如果物体的尺寸较大或对比度较高,则以低分辨率进行粗略的观察就已足够。如果较小物体和较大物体(或对比度较低和对比度较高的物体)同时存在,那么以不同分辨率来研究它们将更具优势,这就是多分辨率处理的基本动机。

换言之,图像分辨率越低,伴随的细节就越少。图像的低分辨率级别用于分析较大的结构或图像的整体内容;而高分辨率级别适合于分析物体的细节特性。这种由粗到细的分析策略在模式识别中特别有用。

以下图为例,右下角的低分辨率图像适合窗口定位(取景框),但不适合于寻找植物的叶脉纹络。

多尺度和多分辨率

多尺度: 我们通常将现实世界视为连续的,真实图像 I ( x , y ) I(x,y) I(x,y)具有连续的空间位置 ( x , y ) (x,y) (x,y)。尺度的概念至少来源于两个想法:1.视觉系统有局限性,只能以一定的尺度(通过某种模糊算子)来捕获真实图像;2.物体由于和视觉系统的距离不同而发生尺度变化,以不同的尺度观察连续的图像有助于理解其内容。一般应用高斯核(高斯模糊)进行多尺度变换。

多分辨率: 分辨率的概念使得空间离散化。具有一定长度(宽度)的对象可以通过对其物理空间进行一定的采样来重新表示,即每个长度(宽度)具有多少个像素。采样会引起连续空间的损失,但如果先进行平滑操作,则可以得到更好的低分辨率图像(细节下文讲 )。从平滑后连续或原始离散的图像,建立具有不同分辨率(并因此具有不同大小)的离散版本的层次结构(图像金字塔),通常可以用于在不同尺度(和方向)上的图像重建。

多分辨率可以视为某种多尺度表示的离散化。但实际上,由于我们所处理的数据始终是离散的,并且多分辨率可以以不同的尺度重建图像,所以人们会交替使用这两个术语。

图像金字塔

图像金字塔(image pyramid)是同一张图片不同分辨率子图的集合,是通过对原图像不断地下采样而产生的。高分辨率原始图像在底部,自底向上,分辨率(尺寸)逐渐降低,堆叠起来便形成了金字塔状。通常情况下,每向上移动一级,图像的宽和高都降低为原来的1/2。

注:在金字塔的每一层图片上可以进行尺度解析,即:用不同sigma的高斯核去处理每一层图片,从而形成一个”octve“,图像的尺度解析和图像金字塔便形成了图片的多尺度多分辨率解析的基础。

高斯金字塔

最简单的图像金字塔可以通过不断地删除图像的偶数行和偶数列得到,例如原图像大小是NN,删除其偶数行和偶数列后得到一幅(N/2)(N/2)大小的图像,此时图像大小变为原来的1/4,不断重复该过程即可得到该图像的图像金字塔。

也可以先对原始图像进行滤波,得到原始图像的近似图像,然后将近似图像的偶数行偶数列删除以获得向下采样的结果。有多种滤波器可以选择,常用高斯滤波器(高斯滤波),原始图像与各次下采样的结果图像共同构成了高斯金字塔。

更多内容请移步 尺度空间与图像金字塔(二)

SIFT

Octaves and Scales 区别于高斯金字塔。 首先将原始图像通过高斯模糊生成逐渐模糊(尺度变粗)的图像。然后,将原始图像下采样为一半大小后,再次生成模糊的图像。不断重复,得到SIFT:相同大小(垂直排列)的图像形成一个Ootave。下图是四个octave,每个octave有5个图像,由于增加“尺度”(模糊量)而形成单个图像。

Octave和Sclae的数值取决于原始图像的大小,可自行改变。但是,SIFT的作者建议4个octaves和5个模糊度blue levels是该算法的理想选择。

Blurring Mathematically, “blurring” is referred to as the convolution of the gaussian operator and the image. Gaussian blur has a particular expression or “operator” that is applied to each pixel. What results is the blurred image.

符号:

  • L L L是模糊后的图像
  • G G G是高斯模糊算子Gaussian Blur operator
  • I I I是原始图象
  • x , y x,y x,y是位置坐标
  • σ σ σ是尺度scale的参数。将其视为模糊量,值越大,越模糊。
  • ∗ * ∗是 x x x和 y y y的卷积运算符。它将“高斯模糊” G G G应用到图像 I I I上。

This is the actual Gaussian Blur operator.

Amount of blurring The amount of blurring in each image is important. It goes like this. Assume the amount of blur in a particular image is σ σ σ. Then, the amount of blur in the next image will be k ∗ σ k*σ k∗σ. Here k k k is whatever constant you choose. This is a table of σ ′ s σ’s σ′s for my current example. See how each σ differs by a factor s q r t 2 sqrt2 sqrt2 from the previous one.

参考

《数字图像处理(第三版 )》 《OpenCV轻松入门》 GwanSiu Blog Lecture Notes Image Processing and Computer Vision » Image Processing » 7. Scale Space SIFT: Theory and Practice StackExchange-Questions

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/182170.html原文链接:https://javaforall.cn

1 人点赞