На этом шаге мы продолжим наше знакомство с фильтрами.
Аппроксимирует 2D-изображение набором треугольников, сохраняя их количество минимальным:
import numpy as np from mayavi import mlab x, y = np.mgrid[-2:2:0.1, -2:2:0.1] z = np.cos(x * y) * np.sin(x * y) src = mlab.pipeline.array2d_source(z) gtd = mlab.pipeline.greedy_terrain_decimation(src) mlab.pipeline.surface(gtd) mlab.show()
Рис.1. Демонстрация работы фильтра GreedyTerrainDecimation
Фильтр позволяет задать расположение координатных осей, растяжение по осям и т.п. без модификации самих данных.
Фильтр для формирования подвыборок данных.
Вычисляет нормали для входных данных, используется для сглаживания изображений и т.п.
Для примера построим модель с большим количеством неровностей, для этого воспользуемся фильтром WarpScalar.
import numpy as np from mayavi import mlab z = np.random.rand(15, 15) src = mlab.pipeline.array2d_source(z) warp = mlab.pipeline.warp_scalar(src) mlab.pipeline.surface(warp) mlab.show()
Рис.2. Демонстрация работы фильтра WarpScalar
Теперь сгладим неровности, добавив ещё один уровень фильтрации, с помощью PolyDataNormals:
import numpy as np from mayavi import mlab z = np.random.rand(15, 15) src = mlab.pipeline.array2d_source(z) warp = mlab.pipeline.warp_scalar(src) poly = mlab.pipeline.poly_data_normals(warp) mlab.pipeline.surface(poly) mlab.show()
Рис.3. Демонстрация работы фильтра PolyDataNormals
На следующем шаге мы закончим изучение этого вопроса.