假设我有2D线性指标:
linInd = sub2ind(imSize,rowPnts,colPnts);
我有3D彩色图像,我:
I = rand(64,64,3)*255
有什么办法可以索引这样的东西,以便获取2D平面中除图像每个通道之外的所有坐标?也就是说,是否可以使用为2D指定的线性指标,通过一个命令获得每个像素的所有颜色通道信息?
I(linInd,:)
因此,我不必将图像分为三部分,然后重新组装吗?
谢谢。
您可以broadcast
在不干扰输入数组2D
的3D
情况下使用线性索引bsxfun
,例如,
[m,n,r] = size(I);
out = I(bsxfun(@plus,linInd,(m*n*(0:r-1))'))
样品设置
%// ---------------- 2D Case ---------------------
im = randi(9,10,10);
imSize = size(im);
rowPnts = [3,6,8,4];
colPnts = [6,3,8,5];
linInd = sub2ind(imSize,rowPnts,colPnts);
%// ---------------- 3D Case ---------------------
I = randi(9,10,10,4);
%// BSXFUN solution
[m,n,r] = size(I);
out = I(bsxfun(@plus,linInd,(m*n*(0:r-1))')); %//'
%// Tedious work of splitting
Ir = I(:,:,1);
Ig = I(:,:,2);
Ib = I(:,:,3);
Ia = I(:,:,4);
输出
>> Ir(linInd)
ans =
8 9 1 6
>> Ig(linInd)
ans =
1 5 9 8
>> Ib(linInd)
ans =
8 5 3 8
>> Ia(linInd)
ans =
8 8 3 3
>> out
out =
8 9 1 6
1 5 9 8
8 5 3 8
8 8 3 3
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句