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

Automatische Subsetbildung von Bildern im Workspace

 

LTSmash
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 07.06.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.04.2014, 18:39     Titel: Automatische Subsetbildung von Bildern im Workspace
  Antworten mit Zitat      
Hallo miteinander,

ich arbeite gerade an einem Skript, welches multispektrale Bilddatensätze einliest, in die Einzelkanäle zerlegt und mir auf Wunsch durch ein - von mir festgelegtes - Rechteck ein Subset (Ausschnitt) erstellt.

Leider komme ich beim Bildauschnitt durch den Befehl "imcrop" innerhalb einer for-Schleife nicht weiter.

Folgender Code:
Code:

clear all
clc

img_2000 = imread('le72010322000235edc00_ls_sub_6bands-nothermal-nopan.tif');
img_2009 = imread('lt52010322009235mps00_ls_sub_6band-nothermal.tif');

dim_img = size(img_2000,3);
crop_area_urban = [1393 1084 27 27];

for i=1:dim_img
    assignin('base',['img_2000_B' num2str(i)],img_2000(:,:,i));
    assignin('base',['img_2009_B' num2str(i)],img_2009(:,:,i));
end

for i=1:dim_img
       
end

img_2000_sub_B1 = imcrop(img_2000_B1,crop_area_urban);
img_2000_sub_B2 = imcrop(img_2000_B2,crop_area_urban);


Ich möchte gerne die beiden letzten Zeilen in die letzte for-Schleife unterbringen, so dass mir aus den einzelnen *_B1, *_B2, usw. eine *_sub_B1, *_sub_B2, ... gemacht wird.

Hat jemand eine Idee?
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 04.04.2014, 22:30     Titel:
  Antworten mit Zitat      
einen index im namen zu verstecken ist immer sehr schlecht. clear all am anfang sollte man auch nur im notfall benutzen.
Code:
img_2000 = imread('le72010322000235edc00_ls_sub_6bands-nothermal-nopan.tif');
img_2009 = imread('lt52010322009235mps00_ls_sub_6band-nothermal.tif');
crop_area_urban = [1393 1084 27 27];
img_2000_sub= imcrop(img_2000,crop_area_urban);
 

enthällt auch alle informationen und ist viel einfacher zugänglich
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
LTSmash
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 07.06.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.04.2014, 09:03     Titel:
  Antworten mit Zitat      
Hallo,
vielen Dank für die Antwort.

Den Ausschnitt zuerst mit dem gestapelten Bilddatensatz zu machen und anschließend in Einzelkanäle zu zerlegen, erscheint auch mir für sinnvoll. Leider funktionierts nicht. Sad

Code:
clear all
clc

img_2000 = imread('le72010322000235edc00_ls_sub_6bands-nothermal-nopan.tif');
img_2009 = imread('lt52010322009235mps00_ls_sub_6band-nothermal.tif');

dim_img = size(img_2000,3);
crop_area_urban = [1393 1084 27 27];

img_2000_sub = imcrop(img_2000,crop_area_urban);


folgende Fehlermeldung:
Code:
Error using imcrop>checkCData (line 369)
Invalid input image.

Error in imcrop>parseInputs (line 245)
            checkCData(a);

Error in imcrop (line 94)
[x,y,a,cm,spatial_rect,h_image,placement_cancelled] = parseInputs(varargin{:});

Error in TEST1 (line 12)
img_2000_sub = imcrop(img_2000,crop_area_urban);


imcrop scheint den Bildstapel bestehend aus 6 Einzelbildern nicht verarbeiten zu können ...
Gibt es eine Alternative?

img_2000 hat den Wert: <4291x5633x6 uint8>
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 05.04.2014, 11:19     Titel:
  Antworten mit Zitat      
kannst du ein beispiel bild das den fehler reproduziert zur verfügung stellen ?
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
LTSmash
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 07.06.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.04.2014, 11:57     Titel:
  Antworten mit Zitat      
Natürlich!
Datei im Anhang oder unter

http://www.file-upload.net/download....._6band-nothermal.tif.html

zu downloaden.

Vor ein paar Jahren musste ich ein 3 Kanal-Bild mit "imcrop()" ausschneiden. Dies ging wunderbar.
Die Hilfe zu "imcrop()" in matlab hilft mir leider auch nicht weiter ...

lt52010322009235mps00_ls_sub_6band-nothermal.tif
 Beschreibung:
Ausgangsdatensatz - Multispektralbild (6 Kanäle)

Download
 Dateiname:  lt52010322009235mps00_ls_sub_6band-nothermal.tif
 Dateigröße:  45 MB
 Heruntergeladen:  633 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 05.04.2014, 13:42     Titel:
  Antworten mit Zitat      
ja liegt anscheinend an den kanälen. ich würd mal den support kontaktieren falls hier keiner mehr was schreibt. in der zwischenzeit kannst du dir ja einfach selber ein imcrop erstellen.

Code:
img_2009 = imread('lt52010322009235mps00_ls_sub_6band-nothermal.tif');
imcrop1=@(a,b) a(b(1):(b(1)+b(3)),b(2):(b(2)+b(4)),:);
crop_area_urban = [1393 1084 27 27];
img_2000_sub = imcrop1(img_2009,crop_area_urban);

edit : variable vergessen
_________________

richtig Fragen

Zuletzt bearbeitet von Winkow am 05.04.2014, 15:01, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
LTSmash
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 07.06.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.04.2014, 14:03     Titel:
  Antworten mit Zitat      
okay... ich werde mir das mal anschauen.

danke für die Zeilen Code!

Wer gerne noch andere Vorschläge etc. hat, bitte weiterhin melden!!!

Danke! Wink
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.