Mein Ziel ist es, in Matlab eine Heatmap zu erstellen, die einen vorhandenen Grundriss verwendet und manuell RF RSSI-Werte erfasst.Heatmap in Matlab: Heatmap_overlay() Offset von Bild
Ich habe numerische Werte (~ 30 bis ~ 80) auf einem Grundriss markiert mit Stift und Papier nach der Aufnahme Signalstärke in verschiedenen Bereichen eines Gebäudes. Ich möchte dies in einem Heatmap-Overlay zum ursprünglichen Grundriss darstellen.
Was ich getan habe ist folgendes:
Google. Youtube. Manpages. Meine Forschung hat mir gelandet folgendes erreichen:
- Importieren eines Bildes in Matlab durch den Benutzer auffordert, ein Foto
- schreiben es auf die imread auszuwählen() Funktion
- ein Array die Größe des Bildes einstellen , auf Null gesetzt alle
- aus dieser derzeit manuell durchgeführt wird, aber keine Sorge jetzt
- manuell platzieren, Heatmap (x, y) = val; in Positionen markiert auf dem ursprünglichen Plan
- I die x gefunden, y Pixel von Photoshops info Koordinaten
- Palette eine Gauß'sche Tiefpassfilter auf die Punkte durch heatmap()
- Satz verwendet das Filter Argument enthält die Bild Abmessungen in Pixel
an dieser Stelle ich versuche t anzuzeigen er filterte Heatmap() - Punkte über den ursprünglichen Grundriss. Ich verwende die gleichen Dimensionen für die Filterung und das Array aus der Bildgröße, in Pixel. Allerdings bekomme ich nicht die Heatmap-Punkte zu überlagern, wo ich durch harte Codierung angegeben.
Der Code ist wie folgt:
%Import an image***********************************************
%Ask a user to import the image they want
%**************************************************************
%The commented out line will not show the file type when prompted to select
%an image
%[fn,pn] = uigetfile({'*.TIFF,*.jpg,*.JPG,*.jpeg,*.bmp','Image files'}, 'Select an image');
%This line will select any file type, want to restrict in future
[fn,pn] = uigetfile({'*.*','Image files'}, 'Select an image');
importedImage = imread(fullfile(pn,fn));
%Create size for heat map**************************************
%Setting the size for the map, see comments below
%**************************************************************
%What if I wanted an arbitrary dimension
%Or better yet, get the dimensions from the imported file
heatMap = zeros(1512,1080);
%Manually placing the heatmap values along a grid
%Want to set zones for this, maybe plot out in excel and use the cells to
%define the image size?
heatMap(328,84) = .38;
heatMap(385,132) = .42;
heatMap(418,86) = .40;
heatMap(340,405) = .60;
heatMap(515,263) = .35;
heatMap(627,480) = .40;
heatMap(800,673) = .28;
heatMap(892,598) = .38;
heatMap(1020,540) = .33;
heatMap(1145,684) = .38;
heatMap(912,275) = .44;
heatMap(798,185) = .54;
%Generate the Map**********************************************
%Making the density and heat map
%**************************************************************
gaussiankernel = fspecial('gaussian', [1512 1080], 60);
density = imfilter(heatMap, gaussiankernel, 'replicate');
%imshow(density, []);
oMask = heatmap_overlay(importedImage, density, 'summer');
set(figure(1), 'Position', [0 0 1512 1080]);
imshow(oMask,[]);
colormap(summer);
colorbar;
Jede Idee, warum das überlagerte Filter versetzt ist und nicht dort, wo angegeben?
Dies kann durch ein beliebiges Bild 1512 x 1080
Bitte lassen Sie mich, wenn Sie das Originalbild