Один из способов сделать это:
1) Загрузите изображение плана этажа с помощью Matlab или NumPy/matplotlib.
2) Используйте встроенное обнаружение краев, чтобы найти краевые пиксели на плане этажа.
3) Сформируйте большой список (x, y) мест, где находится ребро на плане этажа.
4) Постройте свою тепловую карту
5) Нанесите точки плана этажа в виде наложения.
Похоже, вы знаете, как выполнять каждый из этих шагов по отдельности, поэтому все, что вам нужно сделать, это найти кое-что о том, как накладывать графики на одну и ту же ось, что довольно просто как в Matlab, так и в matplotlib.
Если вы не знакомы, обратите внимание на такие команды, как meshgrid
и surf
, возможно, contour
и их эквиваленты в Python. Я думаю, что в Matlab есть встроенная функция обнаружения границ Canny. Я считаю, что это было сложнее в Python, но если вы используете библиотеку PIL, библиотеку Mahotas, библиотеку scikits.image и некоторые другие, предназначенные для работы с изображениями, это не так уж плохо. Однако SciPy уже может иметь краевой фильтр, поэтому сначала проверьте его.
Единственным камнем преткновения будет то, что ваши (x, y) данные о температуре не будут совпадать с расположением (x, y) пикселей на изображении. В этом случае вам придется поиграть с некоторым коэффициентом масштаба x и коэффициентом масштаба y, чтобы сначала преобразовать координаты вашей тепловой карты в координаты пикселей, а затем построить тепловую карту, и тогда наложение должно работать.
Это довольно простой способ сделать это; Я предполагаю, что вам просто нужен быстрый и грязный сюжет, чтобы проиллюстрировать, как что-то работает. Этот метод имеет то преимущество, что вы можете легко изменить стиль точек плана этажа, сделав их больше, толще, тоньше, разного цвета или прозрачными, в зависимости от того, как вы хотите, чтобы они взаимодействовали с тепловой картой. Однако, чтобы сделать это по-настоящему, используйте GIMP, Inkscape или Photoshop и наложите тепловую карту на изображение постфактум.
person
ely
schedule
04.08.2012