传统图像特征

颜色特征

众所周知,一幅图像可定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,而在任何一对空间坐标(x,y)处的值一般成为图像在该点的像素值。而图像最简单的特征就是图像的像素值或者灰度化后的灰度值。

灰度值


灰度图像灰度值拉成一列

颜色空间


利用颜色空间的不同颜色通道,比灰度图增加了颜色信息

颜色直方图


图像分块进行特征提取,每块提取颜色直方图

纹理特征

局部二值模式(Local Binary Patterns,LBP)

原始LBP

以中心灰度点作为参考点,周围点大于该值置为1,小于该值置为0

圆形LBP

可在半径R的区域内采样P个算子,采样点的坐标未必是整数,可通过插值的方式获得采样点的像素值

采样后的点坐标未必是整数,坐标点计算为 :

其像素值可以使用双线性插值方法进行计算,然后在进行LBP编码 :

旋转不变LBP

在上述的基础上,为了使得特征保持旋转不变性,使用旋转不变LBP即对于LBP编码后的01序列循环右移,得到能量最低(值最小)的编码作为最终编码。

等价LBP

原始的圆形LBP,对于一个半径为R的圆形区域,采样点为P时,LBP算子可能产生2p种模式,随着采样点的增加,LBP的取值数量呈指数级别增长。为了对LBP特征进行降维,减少数据量并且更好的表达图像的信息,提出了等价模式的LBP特征表示。通俗的讲,通过LBP特征编码中的0,1跳变的次数进行等价分类。将LBP模式数由2p种变为p(p-1)+2+1种,其中多于两次跳变的都归为一类称为混合模式(1种),只有0次跳变的模式有两种(全0、全1),有两次跳变的情况有p(p-1)种。在此基础上和旋转不变一起使用,可进一步减少模式数据量。
例如,采样点为8时,其等价模式LBP共有如下59种。兼之旋转不变性后,可减少到9种。从第2行到倒数第2行,每行都可以看作一种模式。

多尺度LBP

LBP的对象不再是单点像素,而是一个个cell(cell种像素平均或者求和)

python可视化图像LBP特征
from skimage.transform import rotate
from skimage.feature import local_binary_pattern
from skimage import data, io,data_dir,filters, feature
from skimage.color import label2rgb
import skimage
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
import cv2radius = 3  # LBP算法中范围半径的取值
n_points = 8 * radius # 领域像素点数image = cv2.imread('img/demo.jpg')
image1 = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
plt.subplot(131)
plt.imshow(image1) # 原图
plt.axis('off')
image = cv2.cvtColor(image1, cv2.COLOR_BGR2GRAY)
plt.subplot(132)
plt.imshow(image, plt.cm.gray) # 灰度图
plt.axis('off')
lbp = local_binary_pattern(image, n_points, radius)
plt.subplot(133)
plt.imshow(lbp, plt.cm.gray) # LBP特征图
plt.axis('off')

灰度特征

Haar特征

haar特征采用在人脸检测算法中,在此特征提出之前,一般基于图像像素来来作为特征计算,计算量大实时性差。而haar特征反应了图像局部灰度变化的情况,现有的haar特征模板主要如下所示:

在计算Haar特征值时,用白色区域像素值的和减去黑色区域像素值的和。Haar特征模板可用于图像中的任一位置,而且大小也可任意变化。因此一个图像区域可以产生大量的haar特征,为了快速的计算出haar特征就提出了使用积分图的方式。具体地,图像起始像素点到每一个像素点之间所形成的矩形区域的像素值的和,作为一个元素保存下来,也就是将原始图像转换为积分图(或者求和图),这样在求某一矩形区域的像素和时,只需索引矩形区域4个角点在积分图中的取值,进行普通的加减运算,即可求得Haar特征值。在进行人脸检测时,haar特征经常与AdaBoost分类器结合一起。

积分图计算示例

opencv-python人脸检测
注:如果要使用opencv内置的训练好的模型文件,需要找到opencv的路径,在Linux系统下,使用查找搜索。

sudo find / -iname "*opencv*"

示例代码

import numpy as np
import cv2face_cascade = cv2.CascadeClassifier('/usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('/usr/share/opencv/haarcascades/haarcascade_eye.xml')img = cv2.imread('img/demo.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces:img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)roi_gray = gray[y:y+h, x:x+w]roi_color = img[y:y+h, x:x+w]eyes = eye_cascade.detectMultiScale(roi_gray)for (ex,ey,ew,eh) in eyes:cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.subplot(111)
plt.imshow(img)
plt.axis('off')

参考

https://senitco.github.io/2017/06/12/image-feature-lbp/

图像特征总结(持续更相关推荐

  1. 图像特征算法(三)——ORB算法简述及Python中ORB特征匹配实践

    计算机视觉专栏传送 上一篇:图像特征算法(二)--SURF算法简述及Python标记SURF特征检测实践 下一篇:持续创作中- 目录 计算机视觉专栏传送 一.ORB算法 1.算法简介 2.FAST寻找 ...

  2. 图像处理之图像特征及提取

    图像处理之图像特征及提取 图像处理过程中常用的特征提取方法 图像特征: 几何特征(位置与方向.周长.面积.长轴与短轴.距离(欧式距离.曼哈顿距离.切比雪夫距离.余弦距离)): 形状特征(几何形态分析( ...

  3. SURF算法与SIFT算法的性能比较——图像特征点检测与提取算法分析

    图像特征点提取算法的算法研究(SURF和SIFT算法) 1. 摘要 计算机视觉中,很大一部分研究集中在图像特征提取和特征生成算法上.对图像的优化,不同于一般数学问题的优化方法,图像的优化是对像素点,在 ...

  4. BEBLID:增强的高效局部图像特征描述符

    (本文转载自:当SLAM遇见小王同学) 在前不久发布的OpenCV4.5中更新了很多新特性: 从4.5版本开始,OpenCV将正式使用Apache2协议,从而避免专利算法带来的潜在纠纷 SIFT专利到 ...

  5. 无监督学习最新研究:通过简单的「图像旋转」预测便可为图像特征学习提供强大监督信号

    作者:Spyros Gidaris.Praveer Singh.Nikos Komodakis 「雷克世界」编译:嗯~是阿童木呀.KABUDA.EVA 在过去的几年中,深度卷积神经网络(ConvNet ...

  6. 关于图像特征的提取【转】

    特征提取时计算机视觉和图像处理中的一个概念.它指的是计算机提取图像信息,决定每个图像的点是否属于一个图像特征.特征提取的结果是把图像上的点分为不同的子集,这些自己往往属于孤立的点,连续的曲线或者连续的 ...

  7. 三维位姿:***图像特征-特征提取-姿态估计

    原文链接:http://blog.csdn.net/cloverwindy/article/details/8443296 有少量修改,如有疑问,请问原作者! 常用的图像特征有颜色特征.纹理特征.形状 ...

  8. “局部图像特征描述概述”--樊彬老师

    原文链接:http://www.sigvc.org/bbs/thread-165-1-1.html 这次我们荣幸地邀请到中国科学院自动化研究所的樊彬老师为我们撰写图像特征描述符方面的最新综述.樊彬老师 ...

  9. 图像特征 可视化_使用卫星图像可视化建筑区域

    图像特征 可视化 地理可视化/菲律宾/遥感 (GEOVISUALIZATION / PHILIPPINES / REMOTE-SENSING) Big data is incredible! The ...

最新文章

  1. 原来Transformer就是一种图神经网络,这个概念你清楚吗?
  2. 【LeetCode】【数组归并】Merge k Sorted Lists
  3. 华为轮值主席鸿蒙,鸿蒙2.0已开源 华为轮值董事长:今年至少3亿设备搭载鸿蒙系统...
  4. Cisco 3750文件系统学习总结
  5. 合并两个无序数组java_88. 合并两个有序数组
  6. 前端学习(1161):箭头函数02
  7. Redis学习笔记——SpringDataRedis的使用
  8. ASP.NET 页面缓存 @ OutputCache
  9. Java中判断字符串是否为数字
  10. 发行版,distutils,setuptools和distutils2之间的区别?
  11. 《R数据可视化手册》——2.5 绘制箱线图
  12. windows如何在局域网下共享文件(传输文件、修改文件)
  13. 【Excel VBA】自动调整列宽和行高
  14. css 设置背景色渐变、字体颜色渐变
  15. html transition属性,Transition属性详解
  16. 开关电源补偿环路设计(2):实践部分-例题
  17. vue项目发版,缓存问题。
  18. 关于 Windows 10 下原生输入法输入字母和数字时字间距突然变大的解决方法
  19. jsr 正则验证_使用JSR-303进行校验 @Valid
  20. win10生成https证书步骤

热门文章

  1. 开源僵尸网络平台LiteHttp源码分析
  2. 实战:女包品牌如何透过咨询手法实现3.5倍的收入增长
  3. MUSH中的miniwindow(一 )
  4. C++实现贪吃蛇(控制台)
  5. Lua5.1编程二:Lua高级特性
  6. 数据科学 vs. 大数据 vs. 数据分析:定义,内涵,应用,所需技能
  7. 40XXX队技术员交接事项(5):双靶定向井施工小结
  8. Hyperledger Indy:开发指南样例代码分析 - 节点 Onboarding
  9. 智能制造在汽车行业中如何应用
  10. 论文笔记-All about Structure - Adapting Structural Information across Domains for Boosting Semantic Segm