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

Image Processing: Bildausschnitt

 

Clausen
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 07.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.02.2009, 14:37     Titel: Image Processing: Bildausschnitt
  Antworten mit Zitat      
Hallo zusammen,

ich habe folgendes Problem. Ich versuche gerade ein Viereck aus einem Bild auszuschneiden. In der Matlab-Hilfe habe ich aber nur die Möglichkeit gefunden ein Rechteck aus einem Bild auszuschneiden.
Die 4 Koordinaten des Vierecks wären bekannt.

Gibt es da eine Möglichkeit?


Grüße
Claus
Private Nachricht senden Benutzer-Profile anzeigen


derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 10.02.2009, 14:52     Titel:
  Antworten mit Zitat      
Hi Clausen,

verstehe ich nicht, ein Rechteck ist doch ein Viereck, möchtest du jedes beliebige Viereck ausschneiden können? Also auch ein Trapez oder Drachen usw. ?

Im allgemeinen ist doch ein Bild in Matlab immer eine B*H Matrix und dann je nach Format RGB oder mit Farbmap. Wenn du jetzt tatsächlich was total schiefes ausschneiden möchtest, musst du dir eine Funktion schreiben, die dir berechnet welche Felder es zwischen zwei Eckpunkten ausschneiden soll.

Viele Grüße,

der Oli
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.02.2009, 15:35     Titel:
  Antworten mit Zitat      
Vielleicht kannst Du mit
Code:
poly2mask
% oder
inpolygon
was machen:
Code:
load clown;
image(X);
hold on;
x=[60 100 190 270];
y=[55 140 118  50];
plot([x x(1)],[y y(1)],'m-x');

% nur das Rechteck darum
Y=X(min(y):max(y),min(x):max(x));
figure;
image(Y);

% oder den Rest wegschmeißen
figure;
mask=poly2mask(x, y, size(X,1),size(X,2));
Z=X;
Z(~mask)=NaN;
image(Z);
 
Clausen
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 07.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.02.2009, 17:25     Titel:
  Antworten mit Zitat      
Hallo vielen Dank erstmal für die raschen Antworten. Ich habe das Beispiel mit dem Clown versucht auf mein Problem zu reproduzieren, was leider nicht funktioniert.
Ich versuche mal mein Problem etwas genauer zu schildern. Das Bild zeigt ein Foto von einer Leinwand auf der ein Linienmuster zu sehen ist. Problem ist, dass das Foto unter einem Winkel von 40°...45° aufgenommen wurde. Das Linienmuster ist also ein Trapez. Ich möchte jetzt die Umgebung, die zusätzlich zu dem Linienmuster auf dem Bild zu sehen ist abschneiden.
Ich hab ein Bild angehängt. (Man denkt sich das Blatt Papier als Leinwand. Der weiße Rand ist auch auf der Leinwand zu sehen und die Umgebung ist dunkel). Das Bild ist also in Wirklichkeit ein schwarz-weiß Foto. Eine Umrandung des Linienmusters und das Muster selbst in weiß der Rest schwarz. Mit der Funktion bwboundaries habe ich mir den Umriss des Trapezes berechnen lassen. Wird in einem Cell als (nx2)- Matrix abgespeichert. Nur weiß ich nicht, wie ich mit diesen Informationen weiter arbeiten kann., um eine Matrix zu erhalten, die nur noch den Inhalt des Trapezes zeigt.

Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt und ihr könnt mir weiterhelfen.

Danke.

Claus

BILD.JPG
 Beschreibung:

Download
 Dateiname:  BILD.JPG
 Dateigröße:  397.09 KB
 Heruntergeladen:  2147 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.02.2009, 17:52     Titel:
  Antworten mit Zitat      
Ich versuche es nochmal:
Code:
X=imread('BILD.JPG');
image(X);
hold on;
x=[177 159 850 861];
y=[17 733 673 111];
plot([x x(1)],[y y(1)],'m-x');

% oder den Rest wegschmeißen
figure;
mask=poly2mask(x, y, size(X,1),size(X,2));
Z=X;
Z(repmat(~mask,[1,1,3]))=255;
image(Z);


Mit einem BW-Bild wäre es ja noch einfacher.
Wenn Du nicht weiterkommst kannst Du Dein Programm ja mal hochladen.
 
Clausen
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 07.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.02.2009, 09:49     Titel:
  Antworten mit Zitat      
Super, vielen Dank!!!
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.