用skimage学习数字图像处理(004):Skimage各模块初探(下)

本节是skimage扩展库简介的第三篇,将介绍Skimage中最有特色的与特征提取内容相关的模块(feature),该模块也是相对于其他Python-DIP扩展库(包括OpenCV),Skimage最具优势的模块。

目录

2.3 算法类模块

2.3.9 feature模块

总览

Blob特征

Corner特征

Harr类特征

其他特征

特征匹配操作

2.4 小结

2.3 算法类模块

2.3.9 feature模块

特征提取feature extraciton一直以来都是计算机视觉研究的重点领域,甚至有研究者认为,整个计算机视觉学科的大厦,就是建立在特征工程这个基石上搭建起来的。各种具有功能或特定用途的视觉特征量的设计和提取过程,是计算机视觉工作者集体智慧的结晶。在逐一介绍各种经典的特征量和特征提取方法之前,我向各位前辈表示发自内心的致敬。

开场白看完,开始Skimage为我们准备的特征提取之路吧。

总览

Skimage的feature模块所包含的功能函数并不多,0.22版一共有41个(但对应的特征量只有30多个)。数量不多,但几乎每一个函数都在CV领域赫赫有名,甚至是最顶尖的存在。因此,值得我们用专门一节的篇幅详细介绍。

我们不会在本节介绍各种算法的任何技术细节,而是介绍它的特点和用途。通过阅读本节内容,读者会对每一种特征量有一个初步的了解。如果将来用到,可参考其他资料深入学习。根据惯例,我们先将该模块全部41个函数进行归类,分类依据是这些函数所涉及的特征量的特性。举个简单的例子,比如canny是用于提取边缘特征点,LBP是一种简单有效的二值描述符,而GLMC(灰度共生矩阵)则是一种纹理特征描述符,等等。如果读者对于视觉特征的分类和特性还不甚是了解,建议你翻看一下文献【1】。在此多说几句,文献【1】有英文第四版刚出版,有读者如果有志于深入了解视觉特征的专业知识,强烈建议阅读该书。不过,这是给专业人员准备的,有一定门槛。

Blob特征

    它的英文全称是Binary large object,可以是指图像中满足特定条件的一个最大连通区域,它有一个DIP圈里常用中文名字,叫“斑点”。与之相关的有三个函数,分别是:使用差分高斯计算blob(blob_dog)、使用海塞行列式计算blob(blob_doh)、使用拉普拉斯-高斯算子计算blobblob_log,三者都用来计算灰度图像的Bolb特征。

Corner特征

    corner特征即角点特征,与各位熟知的边缘特征相比,角点特征具有更好的方向性以及尺度不变特定,因此是一种在计算机视觉领域广泛使用的底层特征。角点提取是CV领域的一个经典问题,经过几十年的发展,涌现出了诸多优秀的算法,Skimage的feature模块基本上涵盖了典型的角点方法。比如:Moravec算法(corner_moravec)、Harris算法(corner_harris)、Shi-Tomasi算法(corner_shi_tomasi)、Kitchen&Rosenfeld算法(corner_kitchen_rosenfeld)、Foerstner算法(corner_foerstner)、FSAT算法(corner_fast)等,以及一些配套的函数,比如计算角点的方向(corner_orientations)、角点的亚像素位置(corner_subpix)、角点响应图像的峰值点(corner_peaks)等。

Harr类特征

Harr特征是一类很特别的视觉特征,相对于其他特征,它原理简单、计算量不大,但描述能力一点都不弱,另外它可以根据待描述的不同对象,有针对性的选取特定类型的描述符,构成一个特征集。Harr特征的一个典型应用是人脸检测,在早期人脸检测领域最常用的特征之一。

feature模块中有三个函数与Harr特征有关,分别是计算某个ROI的类Harr特征haar_like_feature)、计算类Harr特征的坐标值(haar_like_feature_coord),以及配套的l类Harr特征的绘制(draw_haar_like_feature)。

(15个基本Harr特征,图片来自原文)

Hessian矩阵

Hessian矩阵是一个纯粹的数学名称,它是一个二阶偏导数矩阵。对于图像而言,像素点灰度值的二阶偏导数对应着图像的细节信息,但Hessian矩阵通常并不能直接用于描述图像特征,而是提取特征点时需要的一个步骤,如后面介绍的SIFT特征在计算时就用到了Hessian矩阵。

feature模块中有三个函数与Harr特征有关,计算Hessian矩阵(hessian_matrix)、计算图像的近似Hessian行列式(hessian_matrix_det)、以及计算Hessian矩阵的奇异值(hessian_matrix_eigvals),另外在使用Harr特征时,经常用到一种级联分类器(Cascade)。

其他特征

除了上述有多个函数组成的某类特征集合之外,还有个别特征是只通过当个函数来实现的。虽然只用一个函数来实现,但并不代表该算法不重要,相反,部分算法非常有名,在此一一列出。

  • SIFT特征SIFT:英文全称是Scale-Invariant Feature Transform,译为尺度不变特征变换,是一种功能十分强大的特征描述符,应用广泛,但计算量稍大,运行该函数可能比较费时间。
  • Canny算法canny):在此我们没有将其称为一种描述符,因为它本质上是一种边缘特征提取算法。该方法从提出以来,一直是边缘检测领域的landmark,其内涵丰富,方法非常代表性,被后来其他方法广泛借鉴。
  • HoG特征hog):你如果将其翻译成猪算法,就显得太业余了。它的全称是:Histogram of oriented gradient,中文翻译为“梯度方向直方图”,与SIFT特征类似,它也是非常经典的视觉特征。虽然它的表达能力较SIFT略差,但好在它的计算复杂度要低很多,因此在,在各个领域应用广泛。

(HoG特征示意图,图片来自Skimage官网)

  • LBP特征local_binary_pattern):LBP的全称是Local Binary Patterns,译为“局部二值模式”。这种特征简单有效,常用语轻量级的对象识别。 除基本功能外,Skimage的feature模块还提供了一种更复杂的LBP算法,称为多块LBP算法(multiblock_lbp)及其配套的绘图函数(draw_multiblock_lbp)。
  • ORB特征/BRIEF特征ORBBRIEF):BRIEF的全称是Binary Robust Independent Elementary Features,它也是一种二值描述符,但比前面的LBP更复杂,功能也更强大。在BRIEF基础之上,又人们又提出了ORB特征,其全称是Oriented FAST and Rotated BRIEF。这两类特征可以看作是功能最强的二值描述符的典型代表。
  • 灰度共生矩阵特征graycomatrixgraycoprops):它是一种描述图像局部纹理特征(Texture)的描述符,英文缩写是GLMC。相对于其他特征,GLMC的辈分很大,早在1970's左右就被提出。但由于计算量较大,且描述能力有限,因此很长一段时间内没有引起人们的重视。但并不影响它作为一种经典的视觉特征在CV领域占有一席之地。feature模块中使用graycomatrix计算GLMC,使用graycoprops函数使用GLMC计算各种纹理描述符。
  • 多尺度特征multiscale_basic_featurespeak_local_max):多尺度特征在视觉特征领域占有重要的地位,人类视觉系统具有近似的多尺度特性。计算机视觉领域中的一些功能强大的视觉特征,很多都具备多尺度的属性,比如SIFT等。基于金字塔模型构建的多尺度空间是提取多尺度特征最常用的空间之一,相关内容将在后续章节中单独介绍。

(图像的高斯金字塔和拉普拉斯金字塔表示,图像来自网络)

特征匹配操作

提取出特征点后,通常还需要在特征空间内度量各特征点之间的距离(即相似性),feature模块提供了几个配套的函数完成特征点的匹配,其中包括暴力匹配技术(match_descriptors)、基于规范化相关性的模板匹配(match_template)、绘制匹配的特征(plot_matches)等。

最后,列出feature模块的链接,供各位参考查阅.

除了上述重点介绍的各个算法模块之外,0.22版的Skimage还提供了一个future模块,里面是一些算法(主要是分割算法)试用版,官方文档里面提到,该模块中的函数不一定在未来的版本中仍然使用,或者未来的版本可能会修改这些函数的名称。特此说明。

2.4 小结

至此,Skimage扩展库中绝大多数模块都已介绍完毕。这些模块功能丰富、组织结构紧密,函数编写规范,功能强大。另外由于其本身是SciPy子类,又采用了NumPy的数据结构。因此在这两个Python巨头的照应下,Skimage库在诸多类似功能的扩展库中占有比较明显的优势地位。

再次将Skimage中常用的模块在下面罗列出来,供大家了解.

  1. 图像(几何)变换类:transform类,完成常见的几何变化和变换域变换;
  2. 基于点操作的图像空域增强:exposure类;
  3. 空域滤波类:filter类,完成具有各种功能的空域滤波处理,如平滑、锐化、边缘检测,等等
  4. 图像复原类:restoration类,主要集中在去噪和反卷积两个方面。
  5. 形态学处理类:morphology类,功能非常丰富,涵盖了大多数二值/灰度形态学处理算法
  6. 图像分割类:segment类,功能非常强大,实现了多种经典的分割方法。
  7. 特征提取类:feature类,功能非常强大,实现了多种经典的特征提取方法。

上述各个模块,我们在后续的章节中用到时会更全面深入的介绍。

参考文献:

【1】计算机视觉特征提取与图像处理,Mark Nixon,中文第三版,电子工业出版社,2014

(本节初稿完成时间:2024-01-30)

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值