所以最近我试图使用索引而不是for循环,因为它看起来感觉在matlab上更快。Matlab,使用索引而不是嵌套For循环(for for)
所以我想改变以下;
for i =1:size(l,1)
for j=1:size(l,2)
if l(i,j,1)>200 && l(i,j,2)<40 && l(i,j,3)<40
l(i,j,1)=144;
l(i,j,2)=0;
l(i,j,3)=0;
end
end
end
到这一点:
p1(:,:,1)= (200 < l(:, :,1) & 40 > l(:, :,2) & 40 > l(:, :,3)) ;
p2(:,:,2)= (200 < l(:, :,1) & 40 > l(:, :,2) & 40 > l(:, :,3));
p3(:,:,3)= (200 < l(:, :,1) & 40 > l(:, :,2) & 40 > l(:, :,3));
pix(p1(:,:,1))=144;
pix(p2(:,:,2))=0;
pix(p3(:,:,3))=0;
这几乎是工作,我可以看到图片,但颜色同时出现在图片的不同。我的意思是imshow(pix)看起来与imshow(l)完全不一样。我真的不能发现问题。
这可能是因为你改变了最小到最大亮度值,如果你的形象正在发生颜色表的缩放... – bla
@natan我不明白你是什么意思。如果从第一部分删除第五行和第六行,并从代码的第二部分删除行2,3,5和6.图像看起来完全一样。有关此事的任何见解? –