У меня есть набор данных/изображение DD
, как на этом изображении:
(кстати: есть ли способ загружать сюда небольшие наборы данных, чтобы вы могли работать с теми же данными, которые использую я, без необходимости помещать их в код?)
Цветные пиксели на изображении представляют высоту/глубину в диапазоне от 0 до примерно 400 метров. Синие пиксели NaN
.
Теперь мне нужно интерполировать значения пикселей ВНУТРИ отображаемого объекта, но без интерполяции всего изображения.
Пробовал использовать функцию inpaint_nans
из файлообменника, которая мне не раз выручала и опять же, неплохо сработала:
imagesc(inpaint_nans(DD,4))
Тем не менее, время выполнения довольно велико для больших изображений ~ 3000x3000 пикселей (а у меня их несколько!), И это не совсем то, что я ищу. Может быть, в наборе инструментов для обработки изображений есть функция, которая ограничивает интерполяцию существующими границами моего объекта без учета окружающих NaN?
Я также использовал interp2
вот так:
[xi,yi] = meshgrid(1:size(DD,2),1:size(DD,1));
zi = interp2(xi,yi,DD,xi,yi,'method');
imagesc(zi)
где я пробовал linear
, nearest
и cubic
для method
. Ни один из них не выполнил задание. nearest
ничего не делал, а остальные удаляли все больше и больше "хороших" пикселей и заменяли их на NaN
с. Любая помощь или предложения будут оценены!
РЕДАКТИРОВАТЬ: ОБРАБОТКА:
Я провел симуляцию в другой программе, основанной на треугольных сетках. Для каждого узла сетки (X,Y) глубина воды записывается в файл ascii. В центре потока 2 треугольника умещаются в один пиксель (90x90 метров), например, я получаю значения глубины воды для углов пикселя, а не для самого пикселя. В окружении моделирование работает с большим интервалом (как видно из обычных значений NaN в пойме). Здесь 2 треугольника составляют прямоугольник размером 180х180 метров (4 пикселя). Поскольку я снова получаю значения только для узлов треугольников, расчетное значение глубины воды присваивается каждой секунде, а не каждому пикселю. Теперь я подумал, что самым простым методом будет интерполяция между пикселями. Другим допустимым (возможно, лучшим) решением было бы присвоение значения узла (глубины) окружающим 2/4 пикселям:
NaN
? - person Rody Oldenhuis   schedule 07.06.2013format short
(если вы используетеdouble
) и скопируйте и вставьте его сюда - person Rody Oldenhuis   schedule 07.06.2013