我在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/