У меня есть много (~ 1 миллион) нерегулярно расположенных точек P вдоль 1D линии.Они отмечают сегменты линии так, что если точки являются {0, x_a, x_b, x_c, x_d, ...}, сегменты переходят из 0-> x_a, x_a-> x_b, x_b-> x_c, x_c-> x_d и т. д. У меня также есть значение y для каждого сегмента, которое я хочу интерпретировать как глубину цвета.Мне нужно нарисовать эту линию в виде изображения, но может быть доступно, скажем, 1000 пикселей для представления всей длины линии.Эти пиксели, конечно, соответствуют регулярно расположенным интервалам вдоль линии, скажем, в 0..X1, X1..X2, X2..X3 и т. Д., Где X1, X2, X3 регулярно расположены.Чтобы определить цвет для каждого пикселя, мне нужно взять среднее значение всех значений y, которые попадают в правильно расположенные пиксельные границы, взвешенные по длине сегмента, попадающего в этот интервал.Также могут быть пиксели, которые не содержат никакого значения в P и которые просто принимают значение цвета, определенное сегментом, проходящим через весь пиксель.
Это похоже на то, что, вероятно, нужно сделатьмного в анализе изображений.Так есть ли название для этой операции, и какой самый быстрый способ в numpy вычислить такой равномерно распределенный набор средних значений y?Полагаю, это немного похоже на интерполяцию, только я не хочу брать среднее значение только для двух окружающих точек, а средневзвешенное значение для всех точек в пределах регулярного интервала (плюс немного перекрытия).
[Edit - добавлен минимальный пример]
Так, есть 5 сегментов вдоль горизонтальной линии, разделенных [0, 1.1, 2.2, 2.3, 2.8, 4] (то есть линия идет от 0 до 4),Предположим, что каждый из сегментов принимает произвольные значения затенения, например, мы могли бы иметь 5 значений затенения [0,0.88,0.55,0.11,0.44] - где 0 - черный, а 1 - белый.Тогда, если бы я хотел построить это с использованием 4 пикселей, мне нужно было бы создать 4 значения, от 0 ... 1, 1 ... 2 и т. Д., И ожидать, что вычисление будет возвращать следующие значения для каждого:
0 ... 1 = 0 (это охватывается первым отрезком линии, 0-> 1.1)
1 ... 2 = 0,1 * 0 + 0,9 * 0,88 (1 ... 1,1покрыта первым отрезком линии, остальное вторым)
2 ... 3 = 0,2 * 0,88, 0,1 * 0,55 + 0,5 * 0,11 + 0,2 * 0,44 (это покрывается вторым допятые отрезки)
3 ... 4 = 0,44 (это охватывается последним отрезком линии, 2,8-> 4)
Принимая во внимание, что если бы я хотел поместить эти данные в 2-длинной в пиксель 2 пикселя будут иметь следующие значения:
0 ... 2 = 1,1 / 2 * 0 + 0,9 / 2 * 0,88
2 ... 4 = 0,2/ 2 * 0,88 + 0,1 / 2 * 0,55 + 0,5 / 2 * 0,11 + 1,2 * 0,44
Это похоже на "правильный" способ сделать даунсамплинг вдоль 1-й линии.Я ищу быструю реализацию (в идеале что-то встроенное), когда у меня есть (скажем) миллион точек вдоль линии и всего 1000 (или около того) пикселей, чтобы их уместить.