scikit-image HOG feature 提取函数使用心得。

Hog 特征比较直观好懂,本质是提取图片内的梯度统计信息。

其提取图片特征的层次,可以分为:图片/Block/cell 这三个层次,每个层次有下属层次的多个单位构成,例如图片被分为N个block 具体是采用滑动窗口,每个block又被分为多个cell,其中cell 作为最底层是提取梯度信息的最基本单位。统计cell内所有像素的梯度方向信息并将其划分到预设的梯度方向范围内,便形成了基本的梯度直方图信息。接下来就是一个逆向的组合过程,即,底层cell的梯度信息不断地组合在一起(还有归一化)形成block的特征,block的特征在组合在一起就成了image的feature,这里说的组合值得是拼接的意思。归一化目的是去除光噪声的影响,这个好理解,因为均匀光源对图片的影响是加性的,并不改变相对大小,引起归一化是起一点抗燥作用的。


扯原理太多了,这里主要是说明我使用scikit-image 中 HOG函数的心得。


scikit-image 里面的hog函数是这样的:

ft.hog(image, orientations=orientations, pixels_per_cell=pixels_per_cell, transform_sqrt=is_transform, feature_vector=is_feature_vector,
cells_per_block=cells_per_block, visualise=is_visualise)



其中的参数名称我已写的直观易懂了。问题来了,希望大家注意以下几点:


整个函数的参数使用的是类似opencv 的参数格式,即【宽度,高度】而非python numpy 中的[行数,列数], 因此pixels_per_cell= [ 像素宽度,像素高度], cell_per_block= [ 宽度,高度】


cell 尺寸和block尺寸问题:  

        cell尺寸的倍数只能比block小,不能比之大,否则就会越界,返回空列表。
        例如:mg=[11,11], pixel_per_cell=[5,5], cell_per_block= [2,2] 是可以的。将pixel_per_cell设置为 [6,6]其他不变,就是不行。
        想想也奇怪,真是宁可漏掉都不能重叠。


函数使用中参数设置错误,不会报错,只会给你返回一个空列表。这点最令人无法忍受,一点都不友好。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值