cv中数组维数与图像通道的探索

cv中数组维数与图像通道的探索

在神经网络的学习与探索中发现,在将数据放入网络中训练的前一步——数据的预处理也至关重要,包括数据的加载、数据通道数的调整、数据集的扩充、数据的裁剪等预处理操作。当然,这都应属于计算机视觉图像处理的基本操作。

1. 数组的维数

维数可以理解为空间中的坐标轴,一维数组就是一个一维向量,二维数组就是一个X、Y轴,三维数组再加一条Z轴。
实践出真知:

arr1 = np.array([1, 2, 3, 4, 5, 6])           #  1维
arr2 = np.array([[1, 2, 3], [4, 5, 6]])		  #  2维
arr3 = np.array([[[1, 2, 3], [4, 5, 6]], 	  #  3维
				[[7, 8, 9], [10, 11, 12]]])

现在容易理解一维与二维数组在计算机中的储存方式,但三维呢?
其实三维可以简单理解为现实中的三维立体图形,比如上面的2×2×3的数组,映射到现实中就是这样的存在:
 干
可以利用[ :, :, : ]切片功能简单验证一下:

# 3个维度全部显示
A = arr3[:, :, :]
print(A)

[[[ 1  2  3]
  [ 4  5  6]]

 [[ 7  8  9]
  [10 11 12]]]
_______________________
_______________________

#显示第一维的第一‘层’
A = arr3[:1, :, :]
print(A)

[[[1 2 3]
  [4 5 6]]]
_______________________
_______________________
#显示第一维的第二‘层’
A = arr3[1:2, :, :]
print(A)

[[[ 7  8  9]
  [10 11 12]]]
_______________________
_______________________
#显示第二维第一‘列’
A = arr3[:, :1, :]
print(A)

[[[1 2 3]]

 [[7 8 9]]]
_______________________
_______________________
#显示第二维第二‘列’
A = arr3[:, 1:2, :]
print(A)

[[[ 4  5  6]]

 [[10 11 12]]]
_______________________
_______________________
#显示第三维第一‘列’
A = arr3[:, :, :1]
print(A)

[[[ 1]
  [ 4]]

 [[ 7]
  [10]]]
_______________________
_______________________
.
.
.

切片与坐标对应的三维分别为:

可以与上面的图片一一对应一下,丝毫不差。
我想将PC中虚拟的二进制对应到现实中来,会更有助于理解。

2. 图片的通道

常见的图片通道数一般为一通道跟三通道,一通道为灰度图,灰度范围为0-255,数值越小图片越亮;三通道图片即RGB图片,三个通道便说的是R、G、B三个通道,每个通道的取值范围也是0-255,RGB图片的像素值由三个0-255的数值表示。
三通道图片在计算机中储存时:每一个坐标对应三个值。
所以可以将三通道切分成单通道。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值