所以最近我試圖使用索引而不是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.圖像看起來完全一樣。有關此事的任何見解? –