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

Bildauswertung über imrect

 

Meyd23
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 08.12.10
Wohnort: ---
Version: R2008b
     Beitrag Verfasst am: 08.12.2010, 15:53     Titel: Bildauswertung über imrect
  Antworten mit Zitat      
Hallo!

Ich bin noch ein Neuling was Matlab angeht. Ich brauche es aber zur Zeit für meine Arbeit.

Ich habe mehrere Bilder, auf denen der hintere Teil von einem Pferd zu sehen ist. Ich soll mir jetzt einen bestimmten Messbereich raussuchen und für jedes Bild vergleichen. Dazu habe ich den Rat bekommen, dass ich das mit imrect machen soll. Leider verstehe ich die Hilfe in Matlab nicht so gut. Ich kann das Rechteckt rein legen und auch verschieben. Ich möchte aber, dass das Rechteck immer die gleiche Größe hat. Kann ich das irgendwie in der Funktion mit einstellen? Es ist wichtig, dass das Rechteck immer die gleiche Größe hat, damit ich mir später aus dem Rechteck einen immer gleich großen Messbereich raussuchen kann bzw. dass der Messbereich dann auch in jedem Bild an der gleichen Stelle liegt.

Ich hoffe, ich habe mich verständlich ausgedrückt. Es ist etwas schwierig...
Vielleicht kann mir ja jemand helfen. Ich würde mich freuen!


MfG
Meyd
Private Nachricht senden Benutzer-Profile anzeigen


Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 08.12.2010, 15:59     Titel:
  Antworten mit Zitat      
Moin,

Du kannst einen Bildausschnitt über Koordinaten festlegen:

Code:
I=imread('rice.png');
I2=I(1:56,1:256);  % oder Deine Positionen


Viele Grüße

Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
Diach
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 20.10.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.12.2010, 17:23     Titel:
  Antworten mit Zitat      
Ich glaube was du meinst kannst du mit
Code:
setPosition(h,pos);
machen, wobei h das handle von deinem imrect ist und pos ein Vektor wie dieser: pos =[x y breite höhe]

Aber sag mal was machst du denn mit den Pferde-Hintern?
Private Nachricht senden Benutzer-Profile anzeigen
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 09.12.2010, 01:43     Titel:
  Antworten mit Zitat      
Hallo,

Auszug aus der Matlab-Hilfe von imrect
Zitat:

h = imrect(hparent, position)

h = imrect(hparent, position) creates a draggable rectangle on the object specified by hparent. position is a four-element vector that specifies the initial size and location of the rectangle. position has the form [xmin ymin width height].

Ich denke, da ist doch recht eindeutig beschrieben wie es funktioniert, zumal ja bei den Beispielen 1 zu 1 dein Problem gezeigt wird?
Zitat:

Code:
setPosition(h,pos);


Dies geht natürlich, jedoch kannst du es eben auch gleich beim Erstellen festlgen (Position+Größe).
Um zum Beispiel das Rechteck auf der Hälfte des Bildes zu erstellen könntest du folgenden Code verwenden:
Code:

I = imread('pout.tif');
h = axes;
imshow(I);
hr = imrect(h,[1 1 round(size(I,2)/2) size(I,1)]);
% mit Hilfe der folgenden 2 Codezeilen wird verhindert, dass das das Rechteck aus dem Bild geschoben werden kann (Ich denke das ist recht nützlich).
fcn = makeConstrainToRectFcn('imrect',get(h,'XLim'),get(h,'YLim'));
setPositionConstraintFcn(hr,fcn);
 


MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
Meyd23
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 08.12.10
Wohnort: ---
Version: R2008b
     Beitrag Verfasst am: 09.12.2010, 14:55     Titel:
  Antworten mit Zitat      
Hallo ihr Drei!

Erst mal vielen Dank für eure Antworten.

Zitat:
Aber sag mal was machst du denn mit den Pferde-Hintern?


Ich vermesse das Pferd Very Happy Es gibt noch einen zweiten Messpunkt am Kopf. Ich beschäftige mich aber gerade mit dem hinteren Teil ;o)

Zitat:
Ich denke, da ist doch recht eindeutig beschrieben wie es funktioniert, zumal ja bei den Beispielen 1 zu 1 dein Problem gezeigt wird?


Sorry, mein Englisch läßt manchmal leider zu wünschen übrig... Crying or Very sad

Also ich habe das jetzt mal probiert und bin bei dem nächsten Problem angekommen. Hier mal etwas Code:

Code:
%Anzeigen des Bildes
figure;
imagesc(d);
colorbar;

%Bild drehen
dneu = imrotate(d,-10,'nearest','crop');
%gedrehtes Bild anzeigen
figure;
imagesc(dneu);
colorbar;

%Rechteck ins Bild legen
hr = axes
h = imrect(hr,[13 4 10 10]);
 


Irgendwas ist da noch nicht ok. Denn im zweiten Bild habe ich dann zwar ein wunderschönes Rechteckt, aber leider kein Bild mehr darunter. Ob ihr mir da wohl nochmals helfen könntet bitte??


MfG
Meyd
Private Nachricht senden Benutzer-Profile anzeigen
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 09.12.2010, 15:38     Titel:
  Antworten mit Zitat      
Hallo.

zuerst muss ich mal fragen warum du nicht einfach mein Beispiel von oben nimmst, was definitiv genau das macht was du moechtest. Aber nun gut...

In deinem Code erstellst zunaechst das figure und dann darin dein gedrehtes Bild:
Code:

Nun erstellst du eine neue 2. Axes (da fuer dein gedrehtes Bild auch automatisch eine axes erstellt wird, sobalt du das Bild erstellt) die quasi ueber der 1. Axes liegt und sie simit verdeckt. Dass heisst du darfst nur eine Axes erstellen (so wie ich es auch gemacht habe). Z.B:
Code:

erstellt automatisch das figure+die axes. Also muesstest du es etwa so machen (eigentlich wie in meinem Bsp. oben):

1. Axes erstellen (nur 1 pro figure)
2. Bild erstellen
3. Rechteck erstellen

Code:

h = axes;
imshow(dneu);
hr = imrect(h,[1 1 round(size(dneu,2)/2) size(dneu,1)]);
 


MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
Meyd23
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 08.12.10
Wohnort: ---
Version: R2008b
     Beitrag Verfasst am: 09.12.2010, 16:02     Titel:
  Antworten mit Zitat      
Hallo Sco!

Zitat:
zuerst muss ich mal fragen warum du nicht einfach mein Beispiel von oben nimmst, was definitiv genau das macht was du moechtest. Aber nun gut...


Bitte entschuldige!!! Es liegt an meinem Unvermögen Embarassed

Jetzt klappt es genau so wie ich es habe möchte! Ich danke dir wirklich sehr!!!

MfG
M.Meeder
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 - 2025 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.