Алгоритм тепловой карты на основе значений - PullRequest
5 голосов
/ 25 апреля 2011

Я ищу некоторую документацию по алгоритму тепловой карты.Я нашел несколько реализаций, но они не рассчитывают градиент так, как я выгляжу.Вместо того, чтобы вычислять по «попаданиям», я хочу связать точки данных со значением.

Единственный найденный мной ресурс - это исходный код openheatmap.com .Это отличная штука, но я хочу создавать градиенты на лету, а не из набора исторических данных.

Я хочу создать тепловую карту в реальном времени, похожую на миртвитов .

Ответы [ 4 ]

6 голосов
/ 26 апреля 2011

Из ответов, которые я получил, я собрал свой собственный вывод, пожалуйста, прокомментируйте его точность.

Так что для тепловой карты, основанной на "попаданиях", у вас есть матрица пикселей со значением 0:

[0 0 0][0 0 0][0 0 0]

Когда вы получаете удар, вы увеличиваете соответствующий элемент.

[1 3 2][4 1 2][0 3 5]

Если у вас есть значения, а не попадания, вы добавляете значение в матрицу.Например, давайте использовать суммы в долларах, которые дают эту примерную матрицу:

[$ 20,34 $ 42,42 $ 55,23][$ 45,87 $ 00,87 $ 03,75][$ 08.99 $ 32.05 $ 88.65]

Затем нормализуем данных.Это дает:

[.897 .973 .984][.977 .087 .351][.669 .959 .994]

Теперь вы можете растушевать или размыть это, используя ваш алгоритм выбора.Как и Gaussian Blur .

Затем вы можете применить любой градиент к этим значениям.

0 голосов
/ 25 апреля 2011

Если вы можете читать / конвертировать фрагментный шейдер OpenGL - здесь это . В реальном времени просто означает, что вы должны пересчитать значения тепловой карты на лету.

НТН!

0 голосов
/ 25 апреля 2011

Я только что взглянул на Мир Твитов. Похоже, что каждый твит добавляет некоторую ценность для местоположения, и все местоположения затухают - вероятно, в геометрической прогрессии с течением времени. Это позволит добавлять данные нерегулярно при отображении того, что выглядит как среднее значение. Итак, для каждого пикселя на карте сделайте:

В фиксированный интервал времени: выход = выход * 0,99

Когда происходит отрыжка: output + = value_of_burp

Они должны применяться отдельно для каждого пикселя на вашей карте. Вы можете распределить значение по пикселям, используя любое смазывание, которое хотите, и даже применить то же значение по кругу. Конечно, 0,99 следует настраивать вручную, пока вы не получите то, что вам нравится.

Экспоненциальный затухание означает, что даже очень активные пиксели будут иметь конечный вывод - другими словами, он стабилен.

0 голосов
/ 25 апреля 2011

Хм, если вы хотите экстраполировать «тепловую карту» (регулярную сетку значений пикселей) из разброса «хитов» (как в World of Tweets), очевидный способ сделать это - сначала просто посчитать для каждогоПиксель число попаданий в этом точном пикселе (т.е. квантование местоположений попаданий в сетку) и применение фильтра свертки, например, гауссов фильтра, к данным, чтобы «смешать» их.Смотри http://en.wikipedia.org/wiki/Gaussian_blur.

...