Возможности для улучшения этого кода

Я написал следующий код в MATLAB для обработки больших изображений порядка 3000x2500 пикселей. В настоящее время операция занимает более получаса. Есть ли возможность улучшить код, чтобы сократить время? Я слышал, что параллельная обработка может ускорить работу, но я понятия не имею, как это реализовать. Как мне это сделать, учитывая следующий код?

function dirvar(subfn)
[fn,pn] = uigetfile({'*.TIF; *.tiff; *.tif; *.TIFF; *.jpg; *.bmp; *.JPG; *.png'}, ...
            'Select an image', '~/');
I = double(imread(fullfile(pn,fn)));
ld = input('Enter the lag distance = '); % prompt for lag distance
fh = eval(['@' subfn]); % Function handles
I2 = uint8(nlfilter(I, [7 7], fh));
imshow(I2); % Texture Layer Image
imwrite(I2,'result_mat.tif');

% Zero Degree Variogram
function [gamma] = ewvar(I)
    c = (size(I)+1)/2; % Finds the central pixel of moving window
    EW = I(c(1),c(2):end); % Determines the values from central pixel to margin of window
    h = length(EW) - ld; % Number of lags
    gamma = 1/(2 * h) * sum((EW(1:ld:end-1) - EW(2:ld:end)).^2);
end

Расстояние задержки ввода обычно равно 1.

5
задан Peter Mortensen 31 July 2012 в 16:16
поделиться