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 einfügen

 

4enja
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 28.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.08.2011, 21:27     Titel: Bild in Bild einfügen
  Antworten mit Zitat      
Hallo,

ich versuche gerade ein kleineres jpg bild (98x350) in ein Größeres (4721x3150)einzufügen, und dabei sollte kein Rand zusehen sein. Mit welcher Funktion könnte ich das machen ?

Habe gerade erst angefangen mit Matlab zu arbeiten, wäre dementsprechend sehr dankbar für hilfreiche Kommentare.
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: 03.08.2011, 04:27     Titel:
  Antworten mit Zitat      
Moin,

siehe hier:

http://www.gomatlab.de/viewtopic.php?p=64217

Edit:

Es geht auch noch einfacher:

Code:
I=imread('Test.jpg');
figure; imshow(I)
axes('position',[0.85 0.85 0.16 0.16],'units','normalized')
hold on
imshow('Einfügen.jpg')


Unter axes kannst Du die Lage (beiden ersten Koordinaten) und die Größe des eingefügten Bildes (die letzten Werte) ändern.
Private Nachricht senden Benutzer-Profile anzeigen
 
4enja
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 28.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.08.2011, 08:36     Titel:
  Antworten mit Zitat      
Hallo, danke schonmal für die Antwort.

Habs so schon mal versucht mit "imshow" und "hold on" , aber wenn ich das Bild dann abspeichern möchte, klappt es mit der Funktion "imwrite" nicht und durch "saveas" verschlechtert sich die Qualität sehr. Gibt es da noch eine Möglichkeit, dass ich das Ergebnis auch speichern kann ohne Qulitätsverlust?

Gruß
4enja
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: 03.08.2011, 08:43     Titel:
  Antworten mit Zitat      
Jo, mit folgendem Zusatz:

Code:
frame=getframe(gcf);
I=frame2im(frame);
imwrite(I,'test.jpg','Quality',100) % oder *.tif....
Private Nachricht senden Benutzer-Profile anzeigen
 
4enja
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 28.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.08.2011, 19:34     Titel:
  Antworten mit Zitat      
Habs jetzt mit diesem Zusatz versucht, aber irgendwie ist das nicht besser geworden, das gespeicherte Bild ist immer noch sehr pixelig.

Hier mein Code:

Code:

bild = imread (xxx.jpg)
imshow (bild)
frame = getframe (gcf);
I = frame2im(frame);
imwrite(I,'test.jpg','Quality',100)
 


Ist da irgendwo ein Fehler ?

Kann man das nicht ohne "imshow" machen, also ohne die Bilder anzuzeigen überlagern und dann einfach speichern?
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: 05.08.2011, 06:24     Titel:
  Antworten mit Zitat      
Um den "Fehler" zu finden fehlen mir eine ganze Reihe von Details. "imshow" verändert absolut nichts - es zeigt nur an. Das kann nie ein Fehler sein, im Gegenteil, Du kannst das Bild in dieser Form nur speichern, wenn es auch angezeigt wird. Es wird nämlich der Inhalt der figur gespeichert und nicht die eigentlichen Bilddaten. Ein 256*256 Bild wird danach ein 342*420*3 Bild. Insofern verändern die Zeilen ab "frame.." den Inhalt. Du kannst aber zunächst das Bild im *.tif Format speichern, da je nach Bildinhalt die jpg-Artefakte deutlich werden:

Code:
imwrite(X,'test.tif','Resolution',300)


Unter pixelig kann man alles verstehen. Du solltest Dir folgende Fragen beantworten:

Sind die Bilder unscharf oder die Strukturen zerissen (Grafik). Sehen die Einzelbilder, die Du zusammenfügst besser aus. Beurteilst Du die Bilder in Matlab oder einem anderen Programm. Du mußt auch die Bildauflösung der Einzelbilder beachten-ist sie gleich. Sind die Bilder vielleicht zu klein. Je kleiner desto deutlicher die Artefakte. Notfalls die Bilder insgesamt per Interpolation vergrößern.

Es geht auch folgendes. Der Vorteil, Du speicherst das tatsächliche Bild und nicht die Figur:

Code:
I1=imread('2.tif');   % das kleinere Bild
I2=imread('1.tif');  % das größere Bild
I1=im2double(I1);
I2=im2double(I2);
I3=I2;
links=40;
oben=40;
row=(1:size(I1,1))+oben;
col=(1:size(I1,2)+links;
I3(row,col,:)=I3(row,col,:)+I1;
I3(row,col,:)=I3(row,col,:)-1;  % Transparenz, geht auch +
figure; imshow(I3)
imsave
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.