我在Matlab工作。我在名为im1的矩阵中有一个彩色图像。我需要将所有黑色像素都设为白色,而无需更改其他像素。没有for循环,该怎么办?
此代码需要10秒钟才能在大图像上执行。

for i=1:h
for j=1:w
    if im1(i,j,:)==0
        im1(i,j,:)=255;
    end
end
end

最佳答案

我可以想到两种使用逻辑索引的方法。

方法1-

im1(repmat(all(im1==0,3),[1 1 size(im1,3)]))=255


方法2-

im1(bsxfun(@and,all(im1==0,3),im1==0))=255


看看哪种效率更高会很有趣。

关于performance - 在Matlab中无需for循环即可处理矩阵,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24464238/

10-10 19:42