use*_*119 2 performance matlab image-processing matrix vectorization
我在Matlab工作.我在一个名为im1的矩阵中有一个彩色图像.我需要将所有黑色像素都设为白色而不改变其他像素.如果没有for循环,我怎么能这样做?此代码需要很长的10秒才能在大图像上执行.
for i=1:h
for j=1:w
if im1(i,j,:)==0
im1(i,j,:)=255;
end
end
end
Run Code Online (Sandbox Code Playgroud)
我可以想到使用逻辑索引的两种方法.
方法1 -
im1(repmat(all(im1==0,3),[1 1 size(im1,3)]))=255
Run Code Online (Sandbox Code Playgroud)
方法2 -
im1(bsxfun(@and,all(im1==0,3),im1==0))=255
Run Code Online (Sandbox Code Playgroud)
看看哪一个更有效率会很有趣.
归档时间: |
|
查看次数: |
148 次 |
最近记录: |