AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Schnelles Upscaling für Bilder
Thema durchsuchen
Ansicht
Themen-Optionen

Schnelles Upscaling für Bilder

Ein Thema von Memnarch · begonnen am 17. Jan 2011 · letzter Beitrag vom 20. Jan 2011
Antwort Antwort
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#1

Schnelles Upscaling für Bilder

  Alt 17. Jan 2011, 00:21
Tag,
und noch ne Performancefrage .
Da diese wieder etwas anders ist, nen neuer thread, dan bleibts getrennt und ist für andere leichter findbar.

ALSO: in meinem Aktuellen projekt wird ein 480p Bild auf Bildschirmgröße skaliert. Das geschiet per GDI+ funktionen. Frisst natürlich ordentlich performance wenn man das so 25mal pro sekunde macht .

Meine Frage wäre an dieser Stelle: Bringt es was das Bild zu laden und anstatt per GDI+ per Graphics32 zu upscalen und dann ans LayeredWindow zu überreichen? Graphics32 soll ja schnell sein im Gegensatz zu den Buildin Delphi Komponennten, aber ich habe keine ahnung wie das im vergleich zu der GDI+ ist, GDI+ müsste doch noch langsamer gewesen sein oder?

MFG
Memnarch
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#2

AW: Schnelles Upscaling für Bilder

  Alt 18. Jan 2011, 02:48
Das wird nicht zwangsweise mit der Lib bzw. API zu tun haben, sondern ggf. mit der verwendeten Resamplingmethode (und deren Qualitätseinstellungen). Das schnellst-mögliche wäre es, wenn du an einen Pointer zu dem Imagebuffer kommst, und händisch eine Nearest-Neighbour-Interpolation machst. Die nächst-effizientere Variante wäre (Bi-)Linieare Interpolation, die schon deutlich schmucker ist, aber auch etwas mehr kostet (ab hier braucht's vor allem Floats). Das ganze einigermaßen smart implementiert ist Kleinkram. Teuer können auch die Umkopiererein in die jeweiligen bibliotheksspezifischen Container sein, die meist nicht ohne irgendwelche Konvertierungen/Prüfungen vonstatten gehen. Soll heissen: Je mehr du selbst das Heft in der Hand hälst, desto mehr hast du die Performance auch wirklich im Griff. APIs und Libs sind komfortabel, aber je nach Kombination kommen einen manche Operationen teurer als man zunächst vermutet.

Anders gesagt: Deine Frage ist sehr unvollständig, da zu klären ist wie du wann wo welche Daten in welcher Weise von was verrechnen lässt, und was für eine Performance dir so vorschwebt.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Schnelles Upscaling für Bilder

  Alt 18. Jan 2011, 06:05
Hallo,

Zitat:
wird ein 480p Bild auf Bildschirmgröße skaliert
Ist das immer das gleiche Bild ?
-> dann nach dem Resample puffern.

Ändert sich immer nur ein Ausschnitt ?
-> nur den Ausschnitt resamplen und das gepufferte Bild schreiben


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#4

AW: Schnelles Upscaling für Bilder

  Alt 18. Jan 2011, 15:07
ACH verzeiht, hatte hier einige Infos vergessen .
Ja das bild ändert sich immer Komplett, ist eine Animation.

@Medium: Ich guck mal OB und WO ich vllt noch kopiervorgänge einsparen kann .

Solche sampling qualitäten hat die GDI+ bereits integriert. Wenn ich das originalbild in die vergrößerte Zielbitmap zeichne, muss ich nur den gewünschten Modus vorher angeben, sofern ich das bestimmen möchte.

EDIT: noch ne Kurze Forue spezifische Frage wnen sie an dieser Stelle gestatet ist .
Im Bereich Projekte, dürfen da nur fertige oder auch WIPs rein?

MFG
Memnarch

Geändert von Memnarch (18. Jan 2011 um 15:15 Uhr)
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Schnelles Upscaling für Bilder

  Alt 18. Jan 2011, 16:08
Mal ne andere Frage: Ist es wichtig, dass der Bildschirminhalt immer "aktuell" ist? Wenn nicht, lass das LayeredWindow lieber, denn ich schätze, dass das auch einiges an Performance frisst. Mach doch einfach beim Start einen Screenshot, über den du dann die Einzelbilder selbst blendest. Geht z.B. mit Gr32 oder auch hardwarebeschleunigt mit OpenGL/Direct3D.
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#6

AW: Schnelles Upscaling für Bilder

  Alt 18. Jan 2011, 17:05
frisst nicht viel. der wmanager hat nich viel zu tun. Wenn man LAyered windows benutzt, wird das handling an windows direkt übergeben.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz