传统图像特征

颜色特征

众所周知,一幅图像可定义为一个二维函数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. 洛谷——P1098 字符串的展开
  2. NAPI技术--原理和实现(一)
  3. 使用puppeteer爬 EXTJS
  4. php检测一个变量是否设置函数,php如何判断变量是否有设置的函数
  5. C++中 list与vector的区别
  6. Pytorch:初始化
  7. 10.一文了解JAVA反射超详尽知乎
  8. Django model 反向引用中的related_name
  9. PHP最彻底的退出登录,清除session、cookie的代码
  10. movavi video editor plus教程:在Mac上给视频配音
  11. windows下使用rsync
  12. WIFI密码破解与网络数据抓包
  13. steam快速换号工具易语言源码 附成品
  14. 进程的同步与通信,进程与线程同步的区别,进程与线程通信的区别
  15. excel制作跨职能流程图_一款小白轻松上手流程图绘制工具亿图图示
  16. [bzoj3202] [SDOI2013]项链
  17. 医学通识50讲学习笔记(4)--疾病和症状
  18. 高德地图2----输入提示、关键字查询
  19. 圆角头像剪裁php,PHP与JS实现头像剪裁功能架构总结
  20. maven 修改maven本地仓库的位置

热门文章

  1. 基于单片机的智能电子密码锁系统设计-基于51单片机酒精浓度检测仪设计-基于单片机的水缸加热温控控制系统设计-基于单片机蓝牙技术的温室监测系统设计-基于单片机智能PWM调光灯系统设计【毕设方案】
  2. UVA 12437 Kisu Pari Na 2
  3. FL Studio中关于音符编辑的使用
  4. 如何用蓝牙网关跟蓝牙设备建立服务链接并读取数据
  5. 测试三角化,利用直接线性变换法求三维点坐标(三维重建task2-1)
  6. Jenkins定时构建项目
  7. 粤嵌gec6818开发板轮流显示颜色
  8. android 录屏不录制自身的悬浮框
  9. 生意参谋2019-01-22日之后指数该怎么还原?
  10. WIKI常用的表格设计模板