使用Numpy和Opencv完成基本图像的数据分析(Part I)

本文介绍了如何使用Numpy和OpenCV对数字图像进行预处理,包括理解像素概念、RGB图像的结构、图像的基本属性,以及灰度化处理。在OpenCV中,图像默认为BGR顺序,可以通过切片分离颜色分量。灰度化是将彩色图像转化为二维矩阵的简化过程,常用Luminosity算法进行转换。
摘要由CSDN通过智能技术生成
云栖君导读: 随着科技的进步,使用Python包访问数字图像的内部变得更容易理解其属性和性质,掌握对数字图像处理的能力显得十分有必要。
640?wx_fmt=jpeg


对于深度学习而言,很多任务都是与数字图形处理打交道。这类任务的数据集一般是由很多张图像构成,有时候,当原始图像不能直接送入模型中时,需要对其进行一定的预处理操作,这时候就不得不向大家介绍一个十分有用的软件包OpenCV,用它处理图像起来非常方便,OpenCV是一个基于BSD许可发行的跨平台计算机视觉库,它轻量且高效,是由一系列C函数和少量C++类构成,支持Python、MATLAB等语言接口,内部包含了很多图像处理的相关算法。下面将向大家介绍如何使用NumPy和OpenCV对数字图像进行简单的处理方法:


关于像素的一些知识


在程序世界里,图像输入到计算机中时,与人眼所见的图像的形式不太一样。计算机将图像存储为类似于马赛克的小方块,就像古老的方块马赛克艺术的形式。如果方形块太大,那么就很难制作出光滑的边缘和曲线。使用的方块越小,则越平滑,或者说图像的像素就越少,方块的大小有时候也被称为图像的分辨率。


矢量图像是存储图像的一些不同方法,目的是为了避免与像素相关的问题。但是,即使是矢量图像,最终也会显示为像素级的马赛克。像素一词表示图像元素,描述每个像素的简单方法是使用三种颜色的组合,即红色(Red),绿色(Green),蓝色(Blue),即我们平时所说的RGB图像。


在RGB图像中,每个像素由分别与红色,绿色,蓝色的值相关联的三个8比特数表示。假设使用放大镜观察,如果我们放大图片,就会看到图片是由微小的光点或更加具体的像素组成,更有趣的是,看到的那些小光点实际上是多个微小不同颜色的小光点,且颜色只有红色、绿色和蓝色。


假设现在从远处观察,创建一张图像,可以看到一张图像实际上由像素点值的开关决定(像素值为1表示开,像素值为0表示关),这些开关组合创建了图像,基本上,我们每天在屏幕上看到的图像都是这种。


每张图像都以数字形式的像素组成,像素是构成图片的最小信息单位,通常是圆形或方形,且位于二维网格中。


现在,如果RGB三个值都处于全强度,这意味着其组合值为255,该值表示为白色,如果所有三种颜色都被减弱,或者值设置为0,其值表示为黑色。反过来,三者的不同组合将为我们提供不同特定的像素颜色。由于每个数字都是8比特,因此像素值的取值范围为0-255,从下图可以看到,但R的强度为37.3%,G的强度为45.9%,B的强度为18.8%时,组合成的颜色为深绿(dark green)。


640?wx_fmt=png


三种颜色的不同组合将产生不同的颜色,由于每个值可以具有256个不同的强度或亮度值,因此总共有1680万(256 x 256 x 256)种不同组合。


图像的基本知识介绍完毕后进入正题,以下内容将包含Numpy非常基

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值