我有一段代碼可以找到一系列圖像中的哈里斯角落。我需要爲92張圖片做這件事,但速度很慢。因此,我想要並行運行代碼。我有下面的代碼有相關的變量「角落」MATLAB parfor切片問題?
%% Harris corners
max_pts = 900;
corners = zeros(max_pts,2,size(images,3));
parfor i = 1:size(images,3)
I = images(:,:,i);
[y x] = get_corners(I,max_pts);
corners(1:length(y),:,i) = [y x];
end
一個錯誤,說:
MATLAB通過將循環迭代成團,然後將它們發送到MATLAB工人運行在PARFOR功能循環它們並行運行。爲了讓MATLAB以可重複,可靠的方式完成此任務,它必須能夠對循環中使用的所有變量進行分類。代碼以與分類不兼容的方式使用指示的變量。 建議的操作 修復指定變量的用法。 有關變量分類和其他parfor循環迭代限制的更多信息,請參見並行計算工具箱文檔中的「變量分類」。
任何想法如何解決這個問題?
謝謝!
是否有可能這個擴展到N維的數組圖片?假設你指定函數來切分第M個維度,所以你得到圖像(:,:,1,1,1,1,:,1,1,1),其中第三個冒號位於第M個位置。 – Leo 2013-09-17 08:37:27
@Leo:切片不會始終沿着最後一個維度。但是,使用'permute',您可以根據需要移動尺寸。 – Jonas 2013-09-20 18:53:52