你曾想过如何将图像存储在数据集中吗?

全文共2852字 , 预计学习时长8分钟
你曾想过如何将图像存储在数据集中吗?文章插图
图源:unsplash
本文将研究如何将深度学习技术应用于研究非结构化数据(例如图像或文本) , 聚焦什么是图像以及如何使用图像数据 。 让我们开始吧!
图像数据集简介
先让我们看看如何将图像存储在计算机中:
你曾想过如何将图像存储在数据集中吗?文章插图
图源:AnalyticsVidhya
这是一张数字8的图像 。 现在 , 如果继续对其进行放大图像便会失真 , 并且图像上将会出现一些小方块 , 这些小方块被称为像素 。 同样 , 我们使用X×Y表示图像维度 , X和Y分别表示高度和宽度上的像素数 。
我们是以这种格式看到图像 , 计算机则是以数字形式存储图像 , 其中每个像素均表示为数值 , 而该数值表示像素的强度 。
你曾想过如何将图像存储在数据集中吗?文章插图
图源:AnalyticsVidhya
对于灰度图像 , 强度范围为0-255 。 接近0的值表示较深的颜色 , 而接近255的值表示较浅的颜色 。 因此 , 计算机中的每个图像都以数字矩阵的形式存储 , 该矩阵也被称为通道(channel) 。
现在来看看彩色图像是如何存储在计算机中的:
你曾想过如何将图像存储在数据集中吗?文章插图
图源:AnalyticsVidhya
图像由多种颜色组成 , 几乎所有颜色都可以由三原色生成——红色 , 绿色 , 蓝色 。 可以说每个彩色图像由3种颜色或3个通道组成 , 即彩色图像通道数更多 。
【你曾想过如何将图像存储在数据集中吗?】在该示例中 , 有3个矩阵或通道——R , G和B , 矩阵中的每个值将介于0到255之间 。 当图像加载到计算机中时 , 所有这些通道都将叠加在一起 , 图片的形状变为 N x M x 3 , 其中N代表高度上的像素数 , M表示宽度上的像素数 , 3表示通道数 。
你曾想过如何将图像存储在数据集中吗?文章插图
图源:AnalyticsVidhya
以上讨论的是两种最常见的格式 , 即灰度和RGB格式 。
不同的图像格式
工作中将遇到不同类型的图像数据集 , 其中一些如下:
· 灰度图像:
你曾想过如何将图像存储在数据集中吗?文章插图
图源:AnalyticsVidhya
· RGB图像:
你曾想过如何将图像存储在数据集中吗?文章插图
图源:AnalyticsVidhya
· RGBA图像:
你曾想过如何将图像存储在数据集中吗?文章插图
图源:AnalyticsVidhya
看看上图之间的区别 。 左起第一张图像非常清晰 , 第二张图像颜色稍淡 , 而第三张图像中几乎看不到颜色 。
与RGB格式相似 , RGBA图像存储为3D矩阵 , 其中矩阵的形状为N×M×通道数 。 RGBA图像有4个通道 , 第四个通道称为alpha通道 , 其中alpha控制颜色的不透明度或透明度 。 alpha值的范围在0–255之间 , 取0时图像是透明的 , 取255时则是原始图像 。 如果该值介于0到255之间 , 则图像会部分透明 , 具体取决于像素强度 。
你曾想过如何将图像存储在数据集中吗?文章插图
对于alpha=10 , 图像被完全遮挡;对于alpha=150(介于0-255之间) , 可以看到颜色部分可见 , 因此可以说它部分不透明;对于alpha=200 , 该值非常接近255 , 因此在这种情况下颜色是可见的 , 因此按原样显示图像 。
· MRI图像:它们存储为4D矩阵 , 其中矩阵的形状如下——N × M ×切片×通道 。 例如大脑是3D对象 , 因此从下图中只能看到大脑的外部结构 。 为了捕获大脑的内部区域 , 我们创建了大脑的多个切片并捕获了每个切片 , 然后将它们堆叠起来以创建4D矩阵 。 这类图像在CT扫描和MRI(磁共振成像)中使用较多 。
你曾想过如何将图像存储在数据集中吗?文章插图
图源:AnalyticsVidhya
1.图像阅读与堆叠
这部分介绍了图像的各种格式 。 如何读取图像 , 如何使用流行的python包skimage查看图像 , 以及通过减少代码量来使用glob显示相同格式的多个图像 。 另外 , 处理MRI图像时要使用一个笔者用过的热门库 , 即nibabel 。
· 可以在我的GitHub链接上查找此部分的代码和图像文件:
2.将图像转换为不同格式
本部分介绍了不同类型的图像 , 以及如何将一种格式转换为另一种格式 。 还必须了解 , 将图像从较低质量转换为较高质量非常困难 , 比如将灰度图像转换为RGB图像 。