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

Bildbearbeitung Datentyp ??

 

elias
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 02.12.08
Wohnort: wien
Version: ---
     Beitrag Verfasst am: 02.12.2008, 22:19     Titel: Bildbearbeitung Datentyp ??
  Antworten mit Zitat      
Hallo Leute

Ich habe aus dem normalen 3dimensionalen feld eines RGB bilds ein 4d feld gemacht wobei das 4te feld eine variable anzahl von bildern ist. und wenn ich mir die 4d variable im command window erstelle funktioniert auch alles mit meinem programm, aber nicht wenn ich das ganze im m-file mache. und zwar aus dem grund das wenn ich das ganze im command window mache habe ich eine <4-D uint8> variable mit der alles wunderbar für meine bildberechnungen funktioniert. aber wenn die 4d variable im m-file erstellt wird ist es eine <4-D double> variable und mit der kann ich meine berechnungen nicht machen!!!

Frage was bestimmt mir ob es jetzt double oder uint8 ist?? die im m-file erstellte variable ist von anfang an eine double und leider keine uint8.

vieleicht ist das wichtig ...es ist eine globale variable

erstes wäre mir die bessere variante die ursache für die double variable zu unterbinden.
zweiteres wäre, wie kann ich matlab zwingen aus der double eine uint variable zu machen und von einem 4dimensionalen feld??? um das problem zu lösen wenn ich die ursache dafür schon vieleicht nicht in den griff bekomme Wink

danke schon mal im voraus....... leute
_________________

Wir tun was wir lernen und lernen was wir tun.
Private Nachricht senden Benutzer-Profile anzeigen


dib0r
Forum-Guru

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.12.2008, 11:37     Titel:
  Antworten mit Zitat      
Hallo,

standardmässig werden Zahlen in Matlab als "doubles" angelegt.
Code:
Bei Bildern, die mit "imread" gelesen werden, zählt das Format und die Bitanzahl/Pixel. Ein kurzer Auszug aus der Hilfe zu "imread"
Zitat:
JPEG -- Joint Photographic Experts Group

Note: IMREAD can read any baseline JPEG image as well as JPEG images
with some commonly used extensions.

Supported Compression Output
Bitdepths Lossy Lossless Class Notes
--------------------------------------------------------
8-bit x x uint8 Grayscale or RGB
12-bit x x uint16 Grayscale
16-bit - x uint16 Grayscale
36-bit x x uint16 RGB(Three 12-bit samples/pixel)
Wie du siehst sind für unterschiedliche "Werte" unterschiedliche Datentypen bestimmt.

Wie wird den dein Bild geladen? Wie fügst du die 4te Dimension hinzu? Was genau bedeutet "eine variable Anzahl von Bildern"?

Die Datenkonversion funktioniertmit "uint8":
Code:
x = 255*rand(100);
class(x)
if ~isa(x,'uint8')
  x = uint8(x);
end
class(x)


MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
elias
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 02.12.08
Wohnort: wien
Version: ---
     Beitrag Verfasst am: 04.12.2008, 21:36     Titel:
  Antworten mit Zitat      
hier das erstellen der matrize

Code:

global pic
b = input('Anzahl der Bilder?:');
for b=1:b
    pic(:,:,:,b)=imread(uigetfile({'*.jpg';'All Image Files'}));
end
 


vieleicht kann da jemad von euch matlab PRO´s rauslesen warum pic dann double is?? bzw wie erzwinge ich das es von vorn hinein uint is?
_________________

Wir tun was wir lernen und lernen was wir tun.
Private Nachricht senden Benutzer-Profile anzeigen
 
dib0r
Forum-Guru

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.12.2008, 11:45     Titel:
  Antworten mit Zitat      
Hallo,

Code:
for b=1:b
    pic(:,:,:,b)=imread(uigetfile({'*.jpg';'All Image Files'}));
end

Deine Variable "b" ist ein double. Deshalb wird die ganze Matrix an diesen Datentyp angepasst. Allerdings finde ich eine Zuweisung über Cell-Arrays besser (z.B. implizierst du hier dass alle Bilder gleich groß sind).

Code:
B = input('Anzahl der Bilder?:');
pic = cell(B,1);
for b=1:B
  pic{b} = imread(uigetfile({'*.jpg';'All Image Files'}));
end

Dann sollte es auch mit dem Datenformat passen. Wie man Werte nach uint8 wandelt, steht in meinem vorigen Post.

MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
elias
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 02.12.08
Wohnort: wien
Version: ---
     Beitrag Verfasst am: 05.12.2008, 14:55     Titel:
  Antworten mit Zitat      
ja sowas dachte ich mir schon, habs auch schon mal probiert zu lösen das problem das wahrscheinlich die variable b daran schuld is, aber damals irgendwie nicht gschafft.

das alle bilder gleich groß sein müssen is gar nicht schlecht für meine anwendung weil raus kommen sollt dann sowas http://images.google.at/imgres?imgu.....um%3D1%26hl%3Dde%26sa%3DN

und da sind die bilder sowieso alle gleich groß. ergebnis sollt sein ein aus mindestens 3 oder mehr bildern mach eins in dem das bewegte objekt öfters drin dargestellt wird. wenns dann mal perfekt funktioniert und gut ausschaut (funktionieren tuts theoretisch schon, hab schon bilder rausbekommen bei denen es geklappt hat) wird eh auch online gestellt, vieleicht kanns ja wer brauchen Smile
die feinabstimmung von verschiedenen toleranzweten wird mühsam damits auch gut aussieht!!
_________________

Wir tun was wir lernen und lernen was wir tun.
Private Nachricht senden Benutzer-Profile anzeigen
 
elias
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 02.12.08
Wohnort: wien
Version: ---
     Beitrag Verfasst am: 16.12.2008, 19:10     Titel:
  Antworten mit Zitat      
danke für die hilfe problem ist gelöst Smile
_________________

Wir tun was wir lernen und lernen was wir tun.
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.