[英]`matlab` extracting blue channel from 3D image into a 2D monochrome matrix
[英]Matlab 3D matrix transform 3rd dimension by 2D matrix vectorization
我有3D矩陣A
的大小N, M, 3
和2D變換T
大小的3, 3
,我適用於矩陣的第三維A
。 如果相關,此3D矩陣是RGB圖像。
我當前的解決方案如下所示:
for i = 1:N
for j = 1:M
A(i, j, :) = T * [A(i, j, r); A(i, j, g); A(i, j, b)];
end
end
但是我很好奇是否有矢量化的方法嗎?
你可以試試看 首先切換尺寸,使通道成為第一個:
B = permute(A,[3,1,2])
然后將B整形為大小為3xN * M的矩陣:
C = reshape(B,3,[])
現在計算一個矩陣乘法:
D = T*C;
然后,您需要重塑和重新排列:
E = permute(reshape(D,3,M,N),[2,3,1])
我沒有對其進行測試,因此可能缺少一些東西,但是通常這應該可以工作(而且速度很快!)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.