Verfasst am: 07.12.2015, 17:02
Titel: Bild in n gleiche Bereiche unterteilen
Hallo zusammen,
ich kommen mit meinen bescheidenen MatLab Fähigkeiten gerade leider an meine Grenzen und bräuchte eure Hilfe. Ich habe in Matlab mit der Image Processing Toolbox ein bmp Bild importiert und dieses in ein Graustufenbild umgewandelt. Jetzt möchte ich als nächstes das Bild in n (beliebige Anzahl) gleichgroße Bereiche unterteilen. Die Anzahl hole ich mir über eine Eingabe vom Nutzer (prompt....).
Anschließend sollen die n Bereiche visuell dargestellt werden und für eine weitere Bearbeitung zur Verfügung stehen. Konkret möchte ich danach die einzelnen Bereiche binarisieren (schwarz und weiß) und anschließend die Anzahl der weißen Pixel im Verhältnis zu den Gesamtpixeln pro Bereich erfassen.
Mein Problem liegt jetzt in dem Schritt, bei dem das importierte Bild in n Bereiche unterteilt werden soll und zum weiterarbeiten bereitgestellt wird.
Wie kann ich dies in Matlab realisieren?
Hier mal ein Ausschnitt des Programms:
Code:
% Öffnen des Bitmap Bildes (.bmp) über Userinterface [filename, pathname] = uigetfile({'*.bmp'});
% Umwandlung des Bildes in ein Graustufenbild abhängig vom Farbtyp
fullFilename = [pathname filename];
info = imfinfo(fullFilename);
if(strcmp('truecolor',info.ColorType))
I = imread(fullFilename);
Graustufenbild = uint8(rgb2gray(I));
clear I
elseif(strcmp('grayscale',info.ColorType))
Graustufenbild = uint8(imread(fullFilename));
elseif(strcmp('indexed',info.ColorType)) [I,map] = imread(fullFilename);
Graustufenbild = uint8(ind2gray(I,map));
clear I map
else error('statPart:FormatImage','Image format error');
end clear info
% Abfrage nach Anzahl der Unterteilungen in Dialogfenster
prompt = {'In wieviele Segmente soll das Bild unterteilt werden?'};
dialog2 = 'Input';
answer2 = inputdlg(prompt,dialog2);
Unterteilung = str2double(answer2);
closeall;
% Unterteilung des Bildes
die für anfänger übersichtlichste lösung sollte mit einer
for
schleife zu erreichen sein.
mat2cell
wäre auch eine möglichkeit denke ich.
was soll passieren wenn scih deine pixelzahl nicht ganzzahlig durch n teilen lässt? das musst du auch berücksichtigen. welche form sollen die bereiche haben? das hast du auch nicht gesagt.
_________________
Danke für deine schnelle Rückmeldung. Das mit der Pixelzahl hatte ich mir in der Tat noch nicht überlegt. Ob jetzt ein Bereich einen Pixel mehr hat als der andere ist mir im Prinzip egal, nur wie das umgesetzt werden kann, weiß ich auch nicht. Ich bin von der Variante mit einer 3er Einteilung gekommen und wollte das Ganze jetzt weiter individualisieren:
hier versteckst du den index 3 im variablen namen. das solltest du dir garnicht erst angewöhnen das ist sehr schlecht. ein index sollte auch immer als index benutzt werden. alle deine matritzen sind gleich groß. du kannst sie also in einer matrix speichern... das ist dann wieder dein original bild du könntest auch cells benutzen.
_________________
Wie kann ich mir denn jetzt die einzelnen Teilbereiche, also die 5 Einzelbilder wieder optisch anzeigen lassen? Sodass ich am Ende das Ursprungsbild in 5 Einzelteilen habe?
Ich bekomme auch alles richtig angezeigt, nur möchte ich in der ersten Spalte das Graustufenbild über alle "Untertelung" Zeilen strecken. Am Ende möchte ich in einem Fenster auf der linken Seite von oben bis unten gestreckt ein Bild haben und in den zwei weiteren Spalten rechts davon jeweils die Einzelbilder untereinander so wie sie aktuell schon angezeigt werden.
Wie muss ich den ersten Subplot umschreiben, damit sich das Bild von oben nach unten streckt?
Und ist es möglich einen Input dialog (prompt) als Subplot zu den anderen zu integrieren?
Einstellungen und Berechtigungen
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
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.