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

Bild in Bild

 

StudiMas

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.04.2014, 22:10     Titel: Bild in Bild
  Antworten mit Zitat      
Hallo,

ich würde gerne in mehrere Bilder einen Maßstab einfügen und die Bilder dann ohne Qualitätsverlust speichern. Die Bilder habend das Format jpg und den Maßstab mache ich in png (ohne Hintergrund).

Wie kann ich dabei vorgehen?

Habe gerade gemerkt, dass ein Bild welches mit imread eingelesen und mit imwrite gespeichert wurde, nicht exakt dem Ausgangsbild entspricht. Ist zwar wirklich nur in der Pixelebene zu sehen, aber man sieht den Unterschied. Gibt es andere Funktionen?


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 12.04.2014, 22:40     Titel: Re: Bild in Bild
  Antworten mit Zitat      
Hallo StudiMas,

Das ist keine einfache Aufgabe. Nach dem Einfügen des Maßstabes hat sich der Inghalt des JPG-Bildes ja geändert. Es muss also zumindest der Block um die Änderungen herum neu quantisiert werden. Meines Wissens nach geht das nicht in Matlab.

Im Netzt findet man einiges zu dem Thema. Frage mal Deine Lieblingssuchmaschine.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
StudiMas

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.04.2014, 12:22     Titel:
  Antworten mit Zitat      
Hallo Jan,

ich bin mir nicht sicher ob wir da nicht an einander vorbei reden. Also mir geht es um zwei Sachen.

1. Wie füge ich ein Bild in ein anderes? (imread -> Bild + Maßstab -> imwrite)

2. Ein Bild das ich mit imread eingelesen habe und mit imwrite wieder speichere, ohne es bearbeitet zu haben, ändert die Qualität. Warum? Wenn ich die Qualität bei der Funktion Imwrite auf 100 stelle, entspricht das Ausgangsbild dem Original, aber die Größe hat sich beinahe verdreifacht.

zu 2.: Nach meinem Verständnis, lese ich ein Bild ein und es hat die Qualität 100%. Wenn ich es mit imwrite wieder speichere, dann hat es nur noch 75% (das ist der default-wert von Imwrite). Aber wenn ich 100 angebe, dann müssten es doch 100% von den 100% des Ausgangsbildes sein, also das Originalbild mit der ursprünglichen Größe. Verstehe nicht wo auf einmal die größere Datenmenge herkommt, die Qualität kann doch nicht mehr gesteigert werden. Wahrscheinlich fehlt mir das Grundlegende Verständnis über Jpegs.

Vielleicht kann jemand kurz und knapp erklären woran das liegt.


Und zu 1: Wie erreiche ich "Bild+Maßstab" ? Hier im Forum wird in einem Beitrag beschrieben, dass es mit einer Leeren Matrix geht, aber das gilt nur für Graustufenbilder. Wie funktioniert es bei RGB's?
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 14.04.2014, 06:38     Titel:
  Antworten mit Zitat      
Moin,

wenn Du ein Bild einliest, nicht bearbeitest und wieder speicherst, ändern sich keine Werte in nichtkomprimierenden Prozessen. In der *.jpg Speicherung wird natürlich der Bildinhalt geändert. Das kannst du prüfen:

Lese das Bild "cameraman.tif" ein und speichere es nur über imwrite, ohne weitere Schalter, unter anderem Namen ab. Lese das Bild wieder ein und prüfe beide Bilder mit:

Code:
a=imread('cameraman.tif');
b=imread('Test.tif');  % Das alte cameraman.tif neu gespeichert
pr=(a==b);
all(all(all(pr==1)));


Das Ergebnis ist "1", also beide Bilder sind auf Pixel genau gleich.

Um ein Bild in Bild zu kopieren, gibt es mehrere Möglichkeiten. Versuche das:

Code:
X=im2double(imread('Test.tif'); % Das Bild, das einkopiert werden soll. Kleiner als cameraman!!
I=im2double(imread('Basis.tif');  % Das größere Bild
I([1:size(X,1)+30,[1:size(X,2)]+80)=X; %Koordinaten für Copy
[aa bb]=max(I(:));
[y x]=ind2sub(size(I),bb);
imshow(I)


Danach muss nur das Problem mit dem Maßstab gelöst werden. Bis hierhin dürften aber keine Unstimmigkeiten auftreten.

Viele Grüße - Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
StudiMas

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.04.2014, 23:55     Titel:
  Antworten mit Zitat      
Hallo Hubertus,

danke für deine Antwort.

Das mit der Qualität habe ich nun soweit verstanden.

Aber mit dem Bild einfügen klappt es bei mir leider noch nicht. Es kommt folgende Fehlermeldung:

"Assignment has more non-singleton rhs dimensions
than non-singleton
subscripts"

Die fehlenden Klammern wurden bereits ergänzt.

Woran könnte es noch liegen?

Schöne Grüße
StudiMas
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 18.04.2014, 09:49     Titel:
  Antworten mit Zitat      
Mit dem obigen Beispiel kannst du nur S/W-Bilder bearbeiten. Du versuchst vermutlich, 2 unterschiedliche Bilder, wie S/W + Color oder S/W + ind. Bilder oder Color + ind. Bilder zu vermischen. Stelle sicher, dass die Größen stimmen und dass es sich um nicht ind. S/W-Bilder handelt.

Wenn du andere Bilder mischen willst, melde dich bitte wieder.
Private Nachricht senden Benutzer-Profile anzeigen
 
StudiMas

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.04.2014, 09:47     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Mit dem obigen Beispiel kannst du nur S/W-Bilder bearbeiten.


Ich versuche zwei Farbbilder übereinander zulegen, wobei das eine ein jpg ist und das andere ein png (damit kein Hintergrund beim eingefügten Bild zu sehen ist).
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 19.04.2014, 17:35     Titel:
  Antworten mit Zitat      
Aus Zeitmangel hier schnell 2 Möglichkeiten:

http://www.mathworks.de/de/help/images/ref/imfuse.html

oder:

Code:
I=imread('');              
I2=imread('');
I3=immerge(I,I2,.5);      % 50 Prozent
figure; imshow(I3)


Wenn es Probleme gibt, bitte wieder melden.
Private Nachricht senden Benutzer-Profile anzeigen
 
StudiMas

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.04.2014, 16:22     Titel:
  Antworten mit Zitat      
Hallo,

es geht leider keine der beiden Funktionen. Zu "immerge" finde ich auch nicht mal was in der Matlab Documention.

Bei imfuse sieht es so aus, als ob mein Matlab diese Funktion nicht beinhaltet. Ich habe die Version R2010b inkl. Image Processing.

Ist es möglich, dass imfuse erst später dazu kam?

Schöne Grüße
StudiMas
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 21.04.2014, 21:35     Titel:
  Antworten mit Zitat      
Hallo StudiMas,

Vielleicht ist dies gemeint (Google ist Dein Freund...)
http://www.mathworks.de/matlabcentr.....kground/content/immerge.m
Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 22.04.2014, 04:25     Titel:
  Antworten mit Zitat      
Verstehe ich nicht. Was ist denn an deinen Bilder anders? Mit den genannten Funktionen kann ich Farbbilder bearbeiten,
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 - 2025 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.