想請問,現在有個 m*n*3 三維矩陣HSV,要做影像處理
目標是
如果HSV(:,:,1)元素的值大於門檻,那就把該x、y位置
的矩陣值給複製到另一個三維矩陣light(三層都要複製)
目前我的寫法是:
(index 是符合門檻值的 元素位置)
light = zeros(m,n,3);
for k = 0:2
light(index + k*m*n) = HSV(index + k*m*n);
end
想問各位大大有沒有不要用迴圈的寫法?
作者:
sunev (Veritas)
2016-01-04 18:42:00迴圈只有三次的話,其實也不會慢到哪裡去真的要求效能,可以用內建profile功能找瓶頸。你的index應該是find過的,搞不好差在這裡?light=repmat(HSV(HSV(:,:,1)>0,1),[1 1 3]);不過用matlab做即時會不會太拼了
作者:
sunev (Veritas)
2016-01-05 10:07:00搞錯了,其實語法就錯了...XDlight=bsxfun(@(x,y)x.*(y>0),HSV,HSV(:,:,1));不確定會不會比樓上的寫法快就是了我的意思是,如果已經到了要從這種地方擠效能的程度那matlab可能不太適合