Dans le cadre d'un traitement d'images, je cherche à réduire le temps de traitement que met le programme.
Je partage avec vous le programme pour m'aider si vous voyez des améliorations à apporter afin d'éliminer les calculs inutiles ou de remplacer les instructions qui ajoutent une charge en terme de temps.
Ddynamic = zeros(size(leftI), 'single'); finf = 1e3; disparityCost = finf*ones(size(leftI,2), 2*disparityRange + 1, 'single'); disparityPenalty = 0.5; hWaitBar = waitbar(0,'Utilisation de la programmation dynamique pour le lissage...'); for m=1:nRowsLeft disparityCost(:) = finf; minr = max(1,m-halfBlockSize); maxr = min(nRowsLeft,m+halfBlockSize);
for n=1:size(leftI,2) minc = max(1,n-halfBlockSize); maxc = min(size(leftI,2),n+halfBlockSize); mind = max( -disparityRange, 1-minc ); maxd = min( disparityRange, size(leftI,2)-maxc ); for d=mind:maxd disparityCost(n, d + disparityRange + 1) = ... sum(sum(abs(leftI(minr:maxr,(minc:maxc)+d) ... - rightI(minr:maxr,minc:maxc)))); end end