2017-05-24 4 views
2

나는 padarray 개 이상의 이미지를 시도했다. 내 코드를 시간이 때이 특정 라인은 주로하기 때문에 (프로파일 내부)에 padarray 알고리즘의 라인 (35)의효율적이고 빠른 방법으로 패럿 어레이

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

을 완료하는 데 시간 최고 금액을 : 이미지가 개인 \의 padarray_algo을 \

b = a(aIdx{:});

효율성을 향상시키는 방법은 없습니까? 아마도 다른 방법을 사용하고 있을까요? 감사!

같은 결과를 얻을 수 repmatmatrix concatenation을 사용할 수 있습니다

답변

2

:

[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

첫 번째 방법은 함수를 여러 번 호출 한 이후 다소 적습니다. 그러나 두 번째 방법은 천재입니다! 그것은 나에게 계산 일을 저장했다. 정말 고맙습니다! –