Я могу создать нелинейную маску на основе двух массивов, содержащих нижнюю и верхнюю границу маски. Все значения между ними должны быть установлены в 1. Способ, которым я сейчас занимаюсь, кажется, занимает довольно много времени, и это становится узким местом. Мне было интересно, есть ли способ сделать это более эффективным по времени.
Во-первых, я думал решить эту проблему, используя парфоры для увеличения скорости. Но так как это один из внутренних циклов в моем коде, они кажутся крайне неэффективными, поскольку более целесообразно использовать parfor во внешнем цикле, учитывая накладные расходы по расписанию. Таким образом, параллельные методы не вариант.
Смотрите здесь создание маски:
mask = zeros(size(im));
n = length(bufLow);
for i=1:1:n
mask(bufLow(i):bufHigh(i),i) = 1;
end
im - это матрица определенного размера, а bufLow и bufHigh - это массивы размером, равным горизонтальному размеру im описывая верхнюю и нижнюю границы для каждого столбца im . Между этими значениями все должно быть установлено на 1.
Таким образом, цель состоит в том, чтобы иметь что-то, что максимально сокращает время выполнения этого цикла. Мне было интересно, есть ли кто-то со знанием, чтобы просветить меня.
Bests
Matthijs