Image Matlab:对矩阵的每个元素应用一个运算
我有100个图像,我已经阅读并存储在一个矩阵的形式,我想应用对每个图像的操作。我该怎么办? 我有另一个包含800个图像的矩阵,我想做同样的事情,即对每个图像应用一个操作。Image Matlab:对矩阵的每个元素应用一个运算,image,matlab,loops,matrix,cell,Image,Matlab,Loops,Matrix,Cell,我有100个图像,我已经阅读并存储在一个矩阵的形式,我想应用对每个图像的操作。我该怎么办? 我有另一个包含800个图像的矩阵,我想做同样的事情,即对每个图像应用一个操作。 我不知道如何做一个携带它的环。感谢您的帮助最直接的方法是使用 对于128-by-128-by-100矩阵(我们称之为M),您可以执行以下操作 for imi = 1:size(M,3) currImg = M(:,:,imi); % take a "slice" of M = an image % proces
我不知道如何做一个携带它的环。感谢您的帮助最直接的方法是使用 对于
128
-by-128
-by-100
矩阵(我们称之为M
),您可以执行以下操作
for imi = 1:size(M,3)
currImg = M(:,:,imi); % take a "slice" of M = an image
% process currImg here...
end
for ri = 1:size(C,1)
for ci = 1:size(C,2)
currImg = C{ri,ci}; % get an image stored in cell ri,ci
% process currImg here...
end
end
对于40
-by-20
单元数组(我们称之为C
),您可以执行以下操作
for imi = 1:size(M,3)
currImg = M(:,:,imi); % take a "slice" of M = an image
% process currImg here...
end
for ri = 1:size(C,1)
for ci = 1:size(C,2)
currImg = C{ri,ci}; % get an image stored in cell ri,ci
% process currImg here...
end
end
请注意访问矩阵(使用
()
)和访问单元格元素(使用{}
)的不同模式。这实际上取决于要应用的操作。例如,如果要用3x3正方形放大每个图像,只需传递3D矩阵和3x3正方形即可
imdilate (img, true (3, 3));
这个简单的例子将在矩阵的所有2D图像上应用膨胀,这完全是选择正确的结构元素的问题(true(3,3)
)。当然,您也可以使用for循环,但这不是该语言的用途。上面的例子不是比循环更优雅吗
Matlab语言的一个设计良好的函数应该可以为您处理这种情况,并且可以处理n维矩阵的所有图像。这取决于您对运算符和函数的理解程度,以使其满足您的要求。假设您的函数是这种形式的
函数imageOut=someFunction(imageIn)
:
第一种情况:(假设I
是一个MxNxP
矩阵,带有p
图像,每个MxN
)
第二种情况:(假设I
是MxN
单元数组,每个单元包含一个图像)
我同意这不是最聪明的问题,但为什么会有反对票?你尝试了什么?我建议您开始。。。特别是循环