我試圖匹配圖像中的RGB值。在三維陣列中匹配矩陣的值
% R G B
RGBset = [ 3 9 12;
4 8 13;
11 13 13;
8 3 2]
img(:,:,1) = [1 2 3
6 5 4
7 9 8
10 11 12];
img(:,:,2) = [3 4 8;
6 7 8;
11 10 9;
12 13 14];
img(:,:,3)= [3 7 2;
4 9 10;
5 11 12;
6 13 14]
在該圖像中,只有一個RGB值從RGBset是[11,13,13]
相匹配,所以所期望的輸出是:
[0 0 0;
0 0 0;
0 0 0;
0 1 0]; % reshape(img(4,2,:),1,3) = [11, 13 13] is available in RGBset
% no other RGB value is present in the image
我已經作出這個代碼,但它是對於較大的圖像非常緩慢。
matched= zeros(img(:,:,1));
for r=1:size(img(:,:,1),1)
for c=1:size(img(:,:,2),2)
matched(r,c)=ismember(reshape(img(r,c,:),1,3),RGBset,'rows');
end
end
什麼是更快的解決方案?
好主意,並且速度很快! –
感謝您的回答。您能否詳細說明「降維」是如何工作的? – Likeunknown
@Likeunknown在帖子開頭添加了幾條評論。檢查出來! – Divakar