WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Histogramme mehrerer Bilder 3D plotten

 

Shucki
Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 04.05.20
Wohnort: ---
Version: R2020a
     Beitrag Verfasst am: 06.04.2022, 10:33     Titel: Histogramme mehrerer Bilder 3D plotten
  Antworten mit Zitat      
Hallo,

ich möchte aus einem Ordner alle Histogramme der Bilder in einem 3D Plot haben. Ich habe die Bilder rangehängt mit denen ich den Code probiert habe.

Ich möchte das für alle Bilder nur ein gemeinsamer Plot erstellt wird, der wie der bunte Plot aus den Anlagen aussieht. Wie funktioniert das und was mache ich falsch?
Dazu muss ich erwähnen, dass in dem tatsächliche Ordner etwa an die 300 Bilder wären. Hat jemand Tipps oder Ideen zum Umsetzung?

Code:

clc;  
close all;  
clearvars;
workspace;  
format long g;
format compact;
fontSize = 18;
% Specify the folder where the files live.
% Specify standard MATLAB demo image folder.
myFolder = '~~~'; % Determine where demo folder is (works with all versions).
% myFolder = pwd; % or 'C:\Users\yourUserName\Documents\My Pictures'; or whatever.
% Check to make sure that folder actually exists.  Warn user if it doesn't.
if ~isfolder(myFolder)
   errorMessage = sprintf('Error: The following folder does not exist:\n%s', myFolder);
   uiwait(warndlg(errorMessage));
   return;
end
% Get a list of all files in the folder with the desired file name pattern.
filePattern = fullfile(myFolder, '*.png') % Change to whatever pattern you need.
% Get a file listing of files in myFolder from the operating system:
theFiles = dir(filePattern);
hFig = figure;
hFig.WindowState = 'maximized';

for k = 1 : length(theFiles)
   % Get the input filename.
   baseFileName = theFiles(k).name;
   fullFileName = fullfile(myFolder, baseFileName);
   % Read in the image
   theImage = imread(fullFileName);
   % Convert to gra scale if needed.
   if ndims(theImage) == 3
      theImage = rgb2gray(theImage);
   end
   
% generate data for histograms: 1 histogram per column
edges = [0:256]; % bin edges
counts = histc(theImage, edges, 2); % specify dim 2 to act column-wise
% plot results
hf = figure;
ha = axes;
hb = bar3(edges, counts.'); % note the transpose to get the colors right
xlabel('image number')
ylabel('Grauwert');
zlabel('count');

    end
 


Danke! Viele Grüße,
Shucki

Documents.rar
 Beschreibung:
Beispielbilder

Download
 Dateiname:  Documents.rar
 Dateigröße:  309.68 KB
 Heruntergeladen:  150 mal
untitled.fig
 Beschreibung:
sowas kommt dabei raus

Download
 Dateiname:  untitled.fig
 Dateigröße:  8.39 MB
 Heruntergeladen:  166 mal
sosollessein.fig
 Beschreibung:
so hätte ich es gerne

Download
 Dateiname:  sosollessein.fig
 Dateigröße:  87.31 KB
 Heruntergeladen:  141 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.04.2022, 10:17     Titel:
  Antworten mit Zitat      
Hallo,

wie sollen die Bilder denn zu diesem einen Plot zusammengefasst werden? Sollen die Bilder gemittelt werden?
Dann würde ich in der Schleife ein 3D-Array anlegen
Code:
images(:, :, k) = theImage;

und anschließend mitteln
Code:
theImage = mean(images, 3);

Das unterschiedliche Erscheinungsbild liegt an der deutlich größeren Anzahl Balken in deinem Fall. Da sind so viele Balken, dass zwischen den schwarzen Balkenrändern keine Farbe mehr zu sehen ist. Etwas bunter wird das mit
Code:


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Shucki
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 04.05.20
Wohnort: ---
Version: R2020a
     Beitrag Verfasst am: 19.04.2022, 14:39     Titel:
  Antworten mit Zitat      
Hallo,

Shading interp funktioniert schon einmal super, danke.

Also ich wollte eigentlich, dass für jedes Bild ein Histogramm der Grauwerte erstellt wird und der Plot sollte dann aus den hintereinander dargestellten Histogrammen bestehen. Damit man den Verlauf der Häufigkeit der Grauwerte über die „Zeit“ (also nacheinander aufgenommen Bilder) sehen kann.

Viele Grüße,
Shucki
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.04.2022, 15:16     Titel:
  Antworten mit Zitat      
Hallo,

mit anderen Worten, in welchen Zeilen/Spalten die Grauwerte vorkommen interessiert nicht, nur wieviele in einem gesamten Bild? Dann ist das ",2" in histc nicht sinnvoll. Besser wäre laut Doku ohnehin histcounts, dort gibt es auch die Möglichkeit, als
'BinMethod' 'integers' anzugeben.

Du bräuchtest also von jedem Bild einen Vektor mit den Säulenhöhen des Histogramms. Diese Vektoren kannst du zu einer Matrix zusammenfassen, die du dann an bar3 übergibst.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.