理解机器存储图像逻辑:

上图是一个简单的表示“8”的图片,可被用来做为识别验证码

它由一个个或白或灰或黑的小色块所组成,每一个小色块的长度和面积都相同,仅在亮度方面有所分别,它们是计算机表示的基本单元:像素点

其在计算机中的表示形式如下:

每一个像素对应(0-255)的灰度模式,0为黑色,255为白色

所有的像素点以一种特定的规律组合在一起,才形成一张图片

计算机以矩阵的方式存储图片,矩阵的大小取决于图片的像素点数量,一般来说,固定面积下,图片的像素点数量越多,图片质量越高,存储所需的矩阵也就越大,从而占用的计算机资源也就越多

除了灰度模式表示外,计算机还有另外一种图像的表示方法:RGB模式

Red(0-255),Green(0-255),Blue(0-255)

由这三种颜色的组合,可模拟丰富多彩的各种现实世界的图像

使用python进行图像特征提取:

(一)灰度像素值作为特征

从图像创建特征的最简单方法是将这些原始像素值用作单独的特征。

image = imread('puppy.jpeg', as_gray=True)

image.shape

(650, 450

image.shape返回图片经过灰度处理后的像素点分布数量

650*450=292500

这292500个像素点就可以算作图像最原始的特征

features = np.reshape(image, (650*450))

features.shape, features

(292500,)

array([0.96470588, 0.96470588, 0.96470588, ..., 0.96862745, 0.96470588,

0.96470588])

(二)通道的平均像素值

上面是以黑白像素点组成的灰度像素分布,如果想要保留原本的彩色特征呢?

image = imread('puppy.jpeg')

image.shape

(650, 450, 3)

与上面相比,此次获得的像素点为650*450*3达到了877500

这里的3就是通道数,分别代表RGB三个通道

计算通道的平均像素值:

for i inrange(0,image.shape[0]):for j in range(0,image.shape[1]):

feature_matrix[i][j]= ((int(image[i,j,0]) + int(image[i,j,1]) + int(image[i,j,2]))/3)

features = np.reshape(feature_matrix, (650*450))

features.shape

(292500,)

(三)边缘特征

假设有如下的图片:

我们需要分别提取图像的中的物体,这个时候使用简单的像素特征或是色彩通道均值特征都很难做到区分

这里,就需要用到边缘特征

边缘特征是什么?

如下图:

在一个具有图像变化的图片中,图像强度快速变化往往就称为图像边缘

如下图:

其中的数字就代表像素值,在计算机处理时,可以通过判断中心像素点周围的像素值差值从而判断中心像素点是否处在图像边缘

如图中的像素点85周围,相互差值(89-78/68-56)都只在15以内,亮度变化并不明显,所以可以判断85像素点不处在像素边缘

那么什么样的情况算处在图像边缘呢?

如下图:

125像素点周围,相互差值(111-68/96-89)最大的已经达到了43,这种程度的亮度变化已经可以被肉眼识别到了,就此可以判断125像素点处于图像边缘

用python识别图像边缘:

#importing the required libraries

importnumpy as npfrom skimage.io importimread, imshowfrom skimage.filters importprewitt_h,prewitt_vimportmatplotlib.pyplot as plt%matplotlib inline#reading the image

image = imread('puppy.jpeg',as_gray=True)#calculating horizontal edges using prewitt kernel

edges_prewitt_horizontal =prewitt_h(image)#calculating vertical edges using prewitt kernel

edges_prewitt_vertical =prewitt_v(image)

imshow(edges_prewitt_vertical, cmap='gray')

参考资料

https://www.analyticsvidhya.com/blog/2019/08/3-techniques-extract-features-from-image-data-machine-learning-python/?#

https://wlgls.github.io/posts/%E7%AC%AC%E4%BA%8C%E8%8A%82-%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89-%E8%BE%B9%E7%BC%98%E6%A3%80%E6%B5%8B

java图像预处理_图像预处理(一)基本特征提取相关推荐

  1. java 图像傅里叶变换_图像频域滤波与傅里叶变换

    1.频率滤波 图像的空间域滤波:用各种模板直接与图像进行卷积运算,实现对图像的处理,这种方法直接对图像空间操作,操作简单.图像处理不仅可以在空间域进行还可以在频率域进行,把空间域的图像开窗卷积形式,变 ...

  2. VTK修炼之道25:图像基本操作_图像子块提取(特征区域提取)

    1.提取感兴趣区域 感兴趣区域(Volum of Interest,VOI)是指图像内部的一个子区域.在VTK中vtkExtractVOI类实现由用户指定的区域范围提取图像的子图像.该Filter的输 ...

  3. VTK修炼之道19:图像基本操作_图像像素值的访问与修改

    1.直接访问图像像素(索引法) #include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRenderingOpenGL);#include <vtkS ...

  4. matlab图像降噪_图像超分:RealSR

    点击上方"AIWalker",选择加"星标"或"置顶"    重磅干货,第一时间送达 paper: https://csjcai.githu ...

  5. python图像清晰度_图像的模糊检测方法

    关键字:blur detection Function:图像的清晰度检测英文表达为 image blue detection; 以此为关键字可以找到很多有关清晰度检测的demo和算法. 图像的清晰度检 ...

  6. VTK修炼之道20:图像基本操作_图像类型转换

    1.vtkImageCast 图像数据类型转换在数字图像处理中会被频繁地用到.一些常用到的图像算子(例如梯度算子)在计算时出于精度的考虑,会将结果存储为float或者double类型.但是在图像显示时 ...

  7. python 图像清晰度_图像清晰度评价指标(Python)

    最近在毕业设计中涉及了有关增强图像清晰度的实验,需要一些指标来进行实验结果的评估.刚好网上有个总结的非常好的博客(见参考文献[1]),但没有实现方法.因此,我将在我的博客中用Python实现. 评估方 ...

  8. 小波变换图像融合_图像视频降噪的现在与未来——从经典方法到深度学习

    噪声是图像与视频中的一种常见失真类型,也是腾讯多媒体实验室以及腾讯云提供的多种失真处理能力之一.本分享总结了噪声产生的几个原因,从理论上分析降噪的基本原理,并介绍了使用传统方法和深度学习进行单帧降噪. ...

  9. 图像协方差矩阵_深度学习的预处理:从协方差矩阵到图像白化

    图像协方差矩阵 by hadrienj 由hadrienj The goal of this post is to go from the basics of data preprocessing t ...

  10. java 实现画函数图像_函数图像生成器 [基于JAVA的图像生成器设计与实现]

    摘要:Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言.Java技术具有卓越的通用性.高效性.平台移植性和安全性.该文基于JAVA语言,在介绍JAVA概念的基础上,实现了图像生成器的简单设 ...

最新文章

  1. vijos1774:机器翻译
  2. 在计算机系统中使用防病毒软件的作用,防病毒软件的作用是 江苏省网络与信息安全技能竞赛题库(5)...
  3. 中国在线直播教育行业发展形势与竞争策略研究报告2022-2028年
  4. hibernate正向生成数据库表以及配置——hibernate.cfg.xml
  5. 在高并发环境下该如何构建应用级缓存
  6. Ubuntu 14.10 下安装java反编译工具 jd-gui
  7. Mac升级macOS Big Sur之前如何优化并增加内存空间?
  8. rk3568 4g 模块调试-ec20(移远模块)
  9. Manjaro安装scrt8.3 201912
  10. 华为设备MAC地址配置命令
  11. char,varchar,nchar,nvarchar的区别
  12. java8的Effectively final
  13. 【第1164期】从前端技术到体验科技
  14. buuctf 四面八方(四方密码)
  15. 数字练习_为什么要练习数字简约
  16. ZYNQ-ZedBoard 上运行桌面 LINUX
  17. android音频系统(5):AudioService之音频焦点
  18. 网络工程师必备学习内容!深度理解OSPF——OSPF是什么?为什么要用OSPF?
  19. DB210.5版本的官网下载和安装
  20. paypal开发整理文档(14)——PayPal Orders API整理

热门文章

  1. PHP能源管理系统ems,能源管理系统(EMS)方案.doc
  2. javacv使用详解
  3. 2020数学建模B题
  4. 祝贺软件工程成了国家一级学科
  5. 身份证前6位匹配户籍地址对应的数据地区sql脚本(里面包含json版本的)
  6. K3CLOUD 常用数据表
  7. 手机反编译java源码,Android反编译(一)之反编译JAVA源码
  8. 基于Easy CHM和VS的帮助文档制作
  9. 高速PCB设计考虑的六个方面
  10. 安兔兔软件测试手机准确吗,安兔兔验机准吗? 安兔兔验机中心新版使用评测