从数组维度的角度去理解图像

说起数组,不得不说numpy。

当然 ,如果你是使用其他的语言,如 C、C++或者matlab,数组的基本概念与编程语言无关。

因为我平常使用 python比较多,所以 就用numpy作为解释什么是图像。

NumPy 是一个 Python 库。

NumPy 用于处理数组。

NumPy 是“Numerical Python”的缩写。

NumPy 用于处理数组。NumPy 中的数组对象称为 ndarray

Getting started with NumPy. NumPy stands for Numerical Python and… | by  Mohit Sharma | Towards Data Science

0 维数组

0 维数组或标量是数组中的元素。数组中的每个值都是 0 维数组。

这里我们可以把 0 维数组理解为图像中的像素点。

例子

创建一个值为 10 的 0 维数组

import numpy as np
arr = np.array(10)
print(arr)

一维数组

4D Printing: All you need to know in 2023

以 0 维数组作为元素的数组称为 1 维数组。

这里我们可以把1 维数组理解为图像中的某一行或者某一列。

import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr)

二维数组

Four elements of 4D topologies and the basic 4D shapes. | Download  Scientific Diagram

以一维数组作为元素的数组称为二维数组。

二维数组可以看为是单个通道(波段)的图像。简称为灰度图 。

创建一个包含两个数组的二维数组,其值分别为 1,2,3 和 4,5,6:

import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr)

三维数组

I ACTUALLY made a 4-Dimensional shape, with a reference for the different  dimensions. : r/geometrydash

以二维数组(矩阵)作为元素的数组称为三维数组。

三维数组就是指图像。假设三维 数组的大小是(x,y,z)

x,y是图像的行列大小,z是图像的通道大小 。

如果z=3,则表示 ,这是 一个3波段的图像 ,再假设这 三个 波段 分别是红绿蓝,则说明 这是 一个 真彩色图像。若这三波段是不全是红绿蓝或 都不是红绿蓝波段 ,说明这是一个假彩色图像。

哦 ,真彩色图像是什么,是指你的手机拍的照片都是真彩色图像

如果z=4,就是指4波段的多光谱影像,国产的GF光学系列都是4波段的影像。

如果 z>n,n是代表一个比较大的数 ,则 说明该三维数组是高光谱影像。

创建一个包含两个二维数组的三维数组,两个二维数组均包含两个数组,其值分别为 1,2,3 和 4,5,6:

import numpy as np

arr = np.array([[[1, 2, 3], [4, 5, 6]], [[1, 2, 3], [4, 5, 6]]])

print(arr)

四维数组

Symmetry and the Fourth Dimension (Part 10) | Azimuth

以三维数组(矩阵)作为元素的数组称为四维数组。

从图像的角度 ,可以理解四维数组指时间序列图像。假设四维数组的大小是(x,y,z,t)

遥感论文中 看到的长时间序列的本质就是这个概念。

  • xy:这两个维度对应于图像的宽度和高度,即空间维度。在遥感图像中,这通常指的是地表的某一区域的水平和垂直坐标。
  • z:这个维度通常用来表示不同波段的信息。遥感技术中,卫星或飞机上的传感器可以捕捉多个波段的数据,比如可见光、近红外、短波红外等,这些不同的波段组合起来可以提供关于地表特征的丰富信息。
  • t:最后一个维度表示时间,用于存储同一地点在不同时间点上的图像数据。这对于监测土地利用变化、植被生长周期、城市扩张等长期过程非常有用。

TIF文件是不能保存 4维数组的 ,一般使用 NC文件保存四维数组。

Visualizing the Fourth Dimension - Research Blog

题外话 ,视频本质上可以被视为一种四维数组。

  • 宽度 (x):视频帧的宽度,即每行像素的数量。
  • 高度 (y):视频帧的高度,即每一列像素的数量。
  • 颜色通道 (c):对于彩色视频,每一帧通常包含多个颜色通道,如红、绿、蓝 (RGB) 或其他颜色模型(如 YUV)。对于灰度视频,这个维度只有一个值。
  • 时间 (t):视频的时间轴,表示视频中的帧数或时间点。

高维数组

数组可以有任意数量的维度。

当然会有五维、六维、N维数组,这个取决于你的需求。

我平常遇到得少,用得也少,所以不多叙述。