Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

Das Abenteuer modellbasierter Softwareentwicklung

Studierende:
weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

zwei Bilder subtrahieren, imsubtract

 

katja
Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 10.08.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.02.2021, 10:37     Titel: zwei Bilder subtrahieren, imsubtract
  Antworten mit Zitat      
Hallo Leute,

ich habe folgendes Anliegen. Ich möchte aus einem Bild 2 mal einen Bereich ausschneiden. Der erste Ausschnitt soll dann später ohne den zweiten Angezeigt werden. Mit imsubtract funktioniert es nicht.. Kennt jemand eine Funtkion mit der ich das gewünschte Ergebnis erhalte?

Mein Bsp. Code sieht folgendermaßen aus:
Code:
I=imread('cameraman.tif');
[x,rectout]=imcrop(I);
[y,rectout2]=imcrop(x);


Wie kann ich denn y mit Nan füllen und in x wieder einfügen?

Danke im Voraus
Private Nachricht senden Benutzer-Profile anzeigen


katja
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 10.08.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.02.2021, 10:25     Titel:
  Antworten mit Zitat      
Bisher habe ich versucht den y Bereich aus x mit NaN zu füllen was aber nicht gelingt, da die Werte in rectout2 in double vorliegen. Wenn ich diese in int umwandel liegt in rectout2 ein 0-Vektor vor.

kann niemand helfen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.004
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 16.02.2021, 14:46     Titel:
  Antworten mit Zitat      
Hallo katja,

Wo liegt das Problem, wenn die Koordinaten als doubles vorliegen?

Zitat:
Wenn ich diese in int umwandel liegt in rectout2 ein 0-Vektor vor.

Bitte poste deinen Code. Bisher verstehe ich nicht, was du hier genau machst.

Wenn I ein double ist, sollte es so mögich sein:
Code:
[x, R] = imcrop(I);
I([R(1):R(1)+R(3)-1, R(2):R(2)+R(4)-1] = NaN;

Gruß Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
katja
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 10.08.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.02.2021, 15:02     Titel:
  Antworten mit Zitat      
Danke Jan,

genauso habe ich es gemacht nur das ich R in int umwandeln musste weil mit double ein fehler angezeigt wird. Das Problem ist aber dass die xmin und xmax sowie ymin, ymax werte so klein sind das int32() hier einen nullvektor erzeugt.

ohne diese umwandlung, wie bei dir, geht es auch nicht.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.004
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 16.02.2021, 15:12     Titel:
  Antworten mit Zitat      
Hallo katja,

Es gibt gerade auch eine zweite Frage zum Thema imcrop . Hast du 2 Accounts?

Wenn R ein "int" ist (also u/int8(16/32/64), kann es keine NaNs enthalten. NaN gibt es nur also double und single.

Zitat:
weil mit double ein fehler angezeigt wird.

Wann immer du einen Fehler im Forum erwähnst, poste den Coide eine Kopie der vollständigen Meldung.

Zitat:
Das Problem ist aber dass die xmin und xmax sowie ymin, ymax werte so klein sind das int32() hier einen nullvektor erzeugt.

Ich kann dir nicht folgen. Was ist xmin und xmax? Wieso sind die Werte klein? Das sollten doch die Koordinaten der Pixel sein. Worauf wendest du "int32()" an?
Bitte poste deinen Code.

Welches Format hat I bei dir?

Gruß Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
katja
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 10.08.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.02.2021, 09:56     Titel:
  Antworten mit Zitat      
Hallo Jan,

schau dir mal dieses Bsp an.

Code:
I=magic(1000);
[J,r]=imcrop(I);
[S,R]=imcrop(J);
J([R(1):R(1)+R(3)-1, R(2):R(2)+R(4)-1])=NaN;


als Fehlermeldung kommt dann

Array indices must be positive integers or logical values.

error(message('images:imcrop:invertedWorldCoordinateSystem'));

grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 626
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2011a
     Beitrag Verfasst am: 17.02.2021, 10:39     Titel:
  Antworten mit Zitat      
Was ist denn in R enthalten?

Debuggst du deinen Code? Setze dir mal einen Breakpoint und schaue dir die Inhalte von R an und auf welche Werte du somit in J zugreifen willst.
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.004
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 17.02.2021, 12:21     Titel:
  Antworten mit Zitat      
Hallo katja,

Ich habe die Image Processing Toolbox nicht.
Bitte poste im Forum immer die vollständige Fehlermeldung. Die beinhaltet auch die Angabe, welche Zeile gescheitert ist. Ist es der erste oder zweite imcrop Befehl? Und wenn es der zweite ist, was befindet sich in J?

Gruß Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
katja
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 10.08.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.02.2021, 12:12     Titel:
  Antworten mit Zitat      
Jan S hat Folgendes geschrieben:

Wenn I ein double ist, sollte es so mögich sein:
Code:
[x, R] = imcrop(I);
I([R(1):R(1)+R(3)-1, R(2):R(2)+R(4)-1] = NaN;

Gruß Jan


Hallo Jan, ich habe mir mal I ausgeben lassen in dem oben genannten Bsp. nur mir deinem Vorschlag werden die NaN nicht in den Zeilen und Spalten abgespeichert wie in deinem Vorschlag vorgegeben. Es werden andere Zeilen in Spalte 1 mit NaN belegt. Woran liegt das?


und warum ziehst du -1 ab?

grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.004
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 22.02.2021, 22:16     Titel:
  Antworten mit Zitat      
Hallo katja,

Zitat:
nur mir deinem Vorschlag werden die NaN nicht in den Zeilen und Spalten abgespeichert wie in deinem Vorschlag vorgegeben. Es werden andere Zeilen in Spalte 1 mit NaN belegt. Woran liegt das?

Das ist schwer per Ferndiagnose zu sagen. Ich habe dein Bild nicht, ich habe die Image Processing Toolbox nicht und du zeigst nicht, welche Inhalte die Variablen haben.

Zitat:
und warum ziehst du -1 ab?

Wenn die Breite 2 beträgt und der Startwert 5, würde 5:5+2 drei Elemente zurückgeben, nicht 2. Deshalb: 5:5+2-1

Gruß, Jan
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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2021 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.