|
|
int16-Bilder auf z.B. int14 reduzieren |
|
Magnus_11 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.06.2018, 13:56
Titel: int16-Bilder auf z.B. int14 reduzieren
|
|
Hallo allerseits,
ich habe ein Bild im int16 Format vorliegen und möchte zum Testen des Informationsverlusts die darin enthaltenen Grauwerte auf z.B. den int14 Bereich abbilden. Wie stelle ich das am Besten an?
Für uint16 Ausgangsformat und Umwandlung in uint8 ist ja die gängige Methode:
img_uint8 = uint8(img_uint16./256);
Gruß und Danke
|
|
|
|
|
Magnus_11 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 22.06.2018, 11:13
Titel:
|
|
Hat niemand eine Idee?
Für Vorschläge jeglicher Art wäre ich schon sehr dankbar!
|
|
|
Andreas Goser |
Forum-Meister
|
|
Beiträge: 3.654
|
|
|
|
Anmeldedatum: 04.12.08
|
|
|
|
Wohnort: Ismaning
|
|
|
|
Version: 1.0
|
|
|
|
|
|
Verfasst am: 22.06.2018, 11:49
Titel:
|
|
Nun ja, es müsste ja ein "custom data type" angelegt werden bevpr man irgenwas konvertiert. Mit Fixed-Point Designer, bzw. den Vorgängerprodukten (Immer nach 'Fixed-Point' suchen) kann man für die Fixed-Point Arithmetic solche Datentypen anlegen. Ich kann mir vorstellen, dass es dann auch mit Interger geht. Gilt es zu prüfen - Fixed-Point Designer dürfte an den meisten Unis verfügbar sein.
Andreas
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 22.06.2018, 15:29
Titel: Re: int16-Bilder auf z.B. int14 reduzieren
|
|
Hallo Magnus_11,
Du kannst einfach 2 Bits auf 0 setzen:
Gruß, Jan
|
|
|
Magnus_11 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 25.06.2018, 08:28
Titel:
|
|
Danke für Eure Rückmeldungen!
Ich werd' mal rumprobieren und mich dann wieder melden
|
|
|
Magnus_11 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 25.06.2018, 08:52
Titel:
|
|
Hab da schonmal zwei Fragen.
Erstens:
Wenn ich das Beispiel auf meine Daten (int16) anwende, dann mach ich folgendes
und erhalte in img2 nur positive Zahlen...
Ich möchte ja gerade das bestehende int16-Bild z.B. auf den Wertebereich int14 überführt haben. Der Hintergrund ist der, dass der zwangsläufige Informationsverlust dargestellt werden soll.
Zweitens:
Der Type-Cast uint16() bzw. int16() bewirkt doch eigentlich, dass das resultierende Bild img2 wieder im uint16 bzw. int16 Format vorliegt, oder liege ich da falsch?
Vielen Dank vorab und Grüße!
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 26.06.2018, 10:28
Titel:
|
|
|
|
|
Hallo Magnus_11,
Du hast zunächst von "Bildern" gesprochen. Dann sind Signed Integer sehr ungewöhnlich. Bist Du sicher, dass Du ein Bit für das Vozeichen in Deinen Daten hast?
Zitat: |
und erhalte in img2 nur positive Zahlen... |
Ja, das ist zu erwarten. Hast Du eine Frage dazu?
Zitat: |
int16(bin2dec('1111 1111 1100 0000')) |
Die Binäre Zahl hat 16 Stellen. In dezimal ist dies 65472. Da Du es aber als
int16
castest, wird es auf den gültigen Wertebereich -32678:32676 begrenzt. Dabei fällt das erste Bit weg, das ja das Vorzeichen ist. Danach hat "mask" also kein Vorzeichen und ein
bitand
führt zu positiven Zahlen.
Vielleicht wolltest Du einen
typecast
durchführen:
Zitat: |
Der Type-Cast uint16() bzw. int16() bewirkt doch eigentlich, dass das resultierende Bild img2 wieder im uint16 bzw. int16 Format vorliegt, oder liege ich da falsch? |
Das kommt darauf an. Erstens sind Cast und Type-Cast zwei unterschiedliche Dinge (siehe oben). Zweitens ist mir nicht genau klar, welches Casting Du hier meinst.
Gruß, Jan
|
|
|
Magnus_11 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.06.2018, 13:46
Titel:
|
|
Danke für Deine Rückmeldung!
Ja, in der Tat habe ich keine "normalen" Grauwertbilder vorliegen, sondern tatsächlich Matrizen, die vorzeichenbehaftete Werte im int16-Intervall enthalten.
Diese Werte sind nun z.B. auf das int14-Intervall zu reduzieren. Diese Werte sind dann schließlich ganzzahlig und vorzeichenbehaftet, und repräsentieren somit z.B. Pseudo-int14-Bilder bzw. -Daten.
Ich habe mich bisher damit abgeholfen, aus den prozentualen Anteilen der Originalwerte am int16-Intervall auf die entsprechenden Werte im anderen Intervall zu schließen. Funktioniert letztlich auch, obwohl ich mir nicht sicher bin ob das in Matlab nicht doch irgendwie einfacher handhabbar ist.
Oder ob es hierzu nicht schon gängige Herangehensweisen gibt.
Danke und Grüße
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 26.06.2018, 15:36
Titel:
|
|
Hallo Magnus_11,
Zitat: |
Ich habe mich bisher damit abgeholfen, aus den prozentualen Anteilen der Originalwerte am int16-Intervall auf die entsprechenden Werte im anderen Intervall zu schließen. |
Das verstehe ich nicht. Musst Du nicht einfach nur die beiden niedrigst-wertigen Bits auf 0 setzen?
Gruß, Jan
|
|
|
Magnus_11 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 27.06.2018, 07:49
Titel:
|
|
Ich weiß, dass meine Lösung lediglich eine Pseudo-Lösung darstellt ...
Da ich eben nicht durchsteige, wie man die von Dir beschriebenen niedrigsten Bits auf Null setzt habe ich mir auf die Schnelle so abgeholfen.
Wie sähe der Code für meine int16-Daten aus, wenn man die entsprechenden Bits auf Null setzt, um als Resultat zB int14-Daten vorliegen zu haben?
Verzeiht mir meine Unwissenheit ...
Vielen Dank für eure Unterstützung.
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|