Я хочу создать тепловую карту пола. У меня есть следующие вещи:
- Черно-белое изображение пола в формате .png
- Массив из трех столбцов, хранящийся в Matlab. -- Первые два столбца указывают координаты X и Y изображения панели пола -- Третья координата обозначает "температуру" этой конкретной координаты.
Я хочу создать тепловую карту пола, которая покажет силу "температуры" в этих координатах. Тем не менее, я хочу отобразить тепловую карту поверх плана этажа, чтобы зрители могли видеть, какие комнаты приводят к какой "температуре".
Есть ли какое-нибудь программное обеспечение, которое выполняет эту работу? Могу ли я использовать Matlab или Python для этого?
Спасибо,
Назмул
Ответ 1 · рейтинг 2 · ely
Один из способов сделать это:
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 и наложите тепловую карту на изображение постфактум.
Ответ 2 · рейтинг -1 · Ben A.
Я бы рассмотрел использование Python с модулем под названием Polygon.
Многоугольник позволит вам нарисовать комнату с помощью геометрических фигур, и я думаю, что вы можете просто сделать границы комнаты в качестве наложения на ваше черно-белое изображение. Хотя на данный момент я не привык ко многому, я знаю, что вам нужна только одна пара координат (x, y), чтобы иметь возможность "проверить попадание" по заданной форме, а затем использовать этот "проверка попадания" чтобы узнать форму, цвет которой вы хотели бы изменить.
В конечном счете, я думаю, что полигон значительно облегчит вам создание форм комнаты, особенно когда они не являются красивыми прямоугольниками =)
Последнее маленькое замечание. Обязательно прочитайте всю документацию, которая есть у Йорга по его проекту. Я еще не использовал его в среде Python 3.x, но было немного кропотливо запустить его в 2.7.
Мои пять копеек, наслаждайтесь!