想请问,现在有个 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可能不太适合