2

padarray1000以上の画像を試しました。ただし、コードの時間を計ると、この特定の行が完了するまでに最も時間がかかります

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

padarray主にアルゴリズムの 35 行目(プロファイラー内) が原因です: images\private\padarray_algo

b = a(aIdx{:});

効率を上げる方法はありますか?おそらく別の方法を使用していますか?ありがとう!

4

1 に答える 1

2

repmat行列連結を使用して、同じ結果を得ることができます。

r=@repmat;
pad=@(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);
于 2017-05-24T06:56:30.930 に答える