was meinst du mit image? Eine Bilddatei? Das ginge mit imwrite.
Falls das nicht weiterhilft, ist mir das Problem noch nicht klar. Für mich sind Bild und image das gleiche, nur in unterschiedlichen Sprachen.
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 ;)
ich habe eine '*.txt' datei welche ich einlese. Diese enthält x und y koordinaten. Nach dem einlesen wird ein Schwarz/Weiß Bild in mehreren Axes erzeugt.
Ich möchte aus einem beliebigen axes (aus einem der Vier) ein Stück herausschneiden.
Der imcrop Funktion muss ich aber etwas übergeben...
ich weiß leider nicht wie ich das handles.axes1 oder handles.axes2 in dem die Bilder drin sind ansprechen soll?
Mein Gedanke war der, vielleicht das Bild in der handles.axes in ein image umzuwandeln und dieses dann unter einer Variable zu speichern welche ich an imcrop übergeben kann.
Vielleicht geht es auch viel einfacher und ich denke zu umständlich.
in MATLAB gibt es ja an sich keine Bilder, sondern nur Arrays. Du brauchst also "nur" das, was du beim Visualisieren des Bildes übergeben hast, an imcrop zu übergeben.
Solltest du beim Visualisieren nur den Dateinamen angegeben haben, kannst du das mit imread einlesen. Da kannst du dich auch gut an den Beispielen in der Doku orientieren.
Bitte gib generell den verwendeten Code oder zumindest die Befehle an. Allein für das Darstellen eines Bildes fallen mir drei Befehle ein, die alle etwas anders arbeiten.
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 ;)
wäre es möglich ein Bsp zu zeigen wie das aussehen könnte
Meine Datei lese ich mit folgendem code ein
Code:
% --- Executes on button press in Einlesen_Pushbtn. function Einlesen_Pushbtn_Callback(hObject, eventdata, handles) % hObject handle to Einlesen_Pushbtn (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
if FileName0~=0
Ausgangsdaten= textread([PathName0 FileName0],'%s','delimiter','\n','whitespace','');
data=Ausgangsdaten(24:end-2);
for i=1:(size(data,1)/2-1)% Anzahl Zeilen von X bzw. Y
a=strsplit(data{i});
b=strsplit(data{i+size(data,1)/2+1}); % Beginn von X if i~=size(data,1)/2-1% Grenze zwischen Y und X ifsize(strsplit(data{i}),2)~=size(strsplit(data{i+1}),2)
a(end)=[];
b(end)=[];
end end
Matrix.Y(i,:)=a;
Matrix.X(i,:)=b;
end
vektor_x=(0:(Bereich_x/size(handles.X,2)):(Bereich_x-(Bereich_x/size(handles.X,1))));
handles.vektor_x=vektor_x;
% Skalierung des Bereichs des Scans auf vorgegebene Werte
vektor_y=(0:(Bereich_y/size(handles.Y,1)):(Bereich_y-(Bereich_y/size(handles.Y,1))));
handles.vektor_y=vektor_y;
axes(handles.axes1) imagesc(handles.vektor_x,handles.vektor_y,real(Z)) ; % Realteil
ax = gca;
ax.YDir = 'normal' % Richtung vertikal korrigieren title('Realteil')
%set(handles.axes1,'linewidth',3);
% xlabel('Horizontale Position in mm'); % ylabel('Vertikale Position in mm'); colormapgray;
axes(handles.axes2) imagesc(handles.vektor_x,handles.vektor_y,imag(Z)) ; % imaginary part
ax = gca;
ax.YDir = 'normal' % Richtung vertikal korrigieren title('Imaginärteil','Interpreter','Latex') % xlabel('Horizontale Position in mm'); % ylabel('Vertikale Position in mm'); colormapgray;
axes(handles.axes3) imagesc(handles.vektor_x,handles.vektor_y,abs(Z)) ; % Betrag
ax = gca;
ax.YDir = 'normal' % Richtung vertikal korrigieren title('Betrag') % xlabel('Horizontale Position in mm'); % ylabel('Vertikale Position in mm'); colormapgray;
axes(handles.axes4) imagesc(angle(Z)) ;
imagesc(handles.vektor_x,handles.vektor_y,angle(Z)) ; % Realteil
ax = gca;
ax.YDir = 'normal' % Richtung vertikal korrigieren title('Phase') % xlabel('Horizontale Position in mm'); % ylabel('Vertikale Position in mm'); colormapgray;
else errordlg('Es wurde keine Datei ausgewählt!','Interpreter','Latex') end
Der Code für den Button mit dem ich aus einem "Bild" in einer axes meiner wahl einen Ausschnitt machen möchte sieht so aus
Code:
function SNR_Button_Callback(hObject, eventdata, handles) % hObject handle to SNR_Button (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) ifisfield(handles,'X')==1
X=handles.X;
Y=handles.Y;
Z=handles.Z;
Z ist doch das Bild? Du musst also mit Z bzw. einem Teil davon weiterarbeiten.
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 ;)
Z sind anscheinend komplexe Zahlen. Dann würde ich vorschlagen, mit real, imag, abs etc. zu arbeiten - so wie du es bisher auch gemacht hast.
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 ;)
Aber X und Y sind ja ebenfalls Bilder... und selbst da funktioniert es nicht... ich möchte einfach nur bei einer dieser Abbildungen in einer der Axes einen Bereich ausschneiden und das zu bearbeitende Bild wie in der MatlabDoc erklärt an die imcrop() übergeben...
Wenn ich an imcrop() abs(Z) oder angle(Z) übergebe macht das nur Sinn wenn ich auch das 3. oder 4. Bild bearbeiten möchte.
In Matlab wird mir dann zwar in diesem Fall ein neues Figure geöffnet es bleibt aber leer. Weder das Bild noch der Ausschnitt erscheint.
vorab: ich kenne mich mit Bildverarbeitung nicht aus.
Wenn ich mir das Beispiel "Crop Image By Specifying Crop Rectangle" ansehe, würde ich deine Erwartungen teilen.
Mein nächster Schritt wäre zu schauen, was die Beispiele unterscheidet.
Nicht lauter Nullen? Der Realteil ist ja reellwertig, der Imaginärteil davon also 0.
Für weitere Unterstützung bitte Beispieldaten zur Verfügung stellen.
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 ;)
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.