2017-05-24 136 views
2

我試圖padarray超過1000個圖像。然而,當我一次我的代碼,這個特定的行採取的最高金額的時間來完成高效,快速的方式padarray矩陣

I=abs(padarray(I, [2, 2], 'replicate', 'both')); 

主要padarray算法的線35(內部分析器),原因如下:影像\私人\ padarray_algo

b = a(aIdx{:});

任何提高效率的方法?也許使用另一種方法?謝謝!

回答

2

您可以使用repmatmatrix concatenation得到相同的結果:

[email protected]; 
[email protected](I,d)[r(I(1),d) r(I(1,:),d(1),1) r(I(1,end),d) 
     r(I(:,1),1,d(2)) I     r(I(:,end),1,d(2)) 
     r(I(end,1),d) r(I(end,:),d(1),1) r(I(end),d)]; 

用法:

pad(I,[2 2]) 

如果所有圖像大小相同的,您可以創建的線性指標的矩陣圖像並應用padarray然後使用填充索引陣列來填充圖像:

%create matrix of indices 
Idx = reshape(1:numel(I),size(I)); 
%pad the index 
Idx_padded = padarray(Idx, [2, 2], 'replicate', 'both'); 
%use the padded index to pad images 
result = I(Idx_padded); 
result2 = I2(Idx_padded); 
+1

第一種方法或多或少的多功能調用。然而,第二種方法是天才!它爲我節省了數天的計算時間。非常感謝! –