Matlab多维数组理解困惑:图像通道索引结果存疑
解决Matlab图像数组索引的困惑
核心问题:Matlab三维数组的索引逻辑
你对图像数组维度480x640x3的理解是对的:480对应图像高度(行数)、640对应宽度(列数)、3对应RGB三通道。但你混淆了三维数组的索引规则:
- Matlab数组的索引格式为
(行索引, 列索引, 维度索引) I(:,:,1)里的两个冒号分别代表取所有行和取所有列,第三个位置的1代表取第一个通道(红色通道),所以得到的是整个红色通道的二维像素矩阵,尺寸自然是480x640。
正确提取第一列的写法
如果要提取图像第一列的所有行,需要对应调整索引位置:
% 提取第一列的所有行、所有通道,得到480x1x3的数组 col1_all_channels = I(:,1,:); % 提取第一列所有行的红色通道,得到480x1的数组 col1_red = I(:,1,1);
索引规则快速总结
I(row, col, channel):精准指定行、列、通道位置- 用
:代替索引表示取该维度的全部元素 - 图像的RGB通道属于第三个维度,操作通道时要放在索引的第三个位置
内容的提问来源于stack exchange,提问作者Zizi
相关产品推荐
相关产品推荐

