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
Seite 1 von 2  1 2      
Benutzerbild von Memnarch
Memnarch

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

Schnelles Upscaling für Bilder

  Alt 17. Jan 2011, 01: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.686 Beiträge
 
Delphi 2007 Enterprise
 
#2

AW: Schnelles Upscaling für Bilder

  Alt 18. Jan 2011, 03: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.275 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Schnelles Upscaling für Bilder

  Alt 18. Jan 2011, 07: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, 16: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 16: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, 17: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, 18: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
Namenloser

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

AW: Schnelles Upscaling für Bilder

  Alt 18. Jan 2011, 18:08
Hast du's getestet?
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

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

AW: Schnelles Upscaling für Bilder

  Alt 18. Jan 2011, 19:46
Ob es viel frisst?
Von dem wa sich am anfang an auslastung gemessen habe, ist es gleichauf wenn nicht sogar etwas performanter als eine normale Form.

Und was die regions angeht: ich müsste erstmal gucken wie ich DAs hinbekomme. Soweit ich das verstanden habe sind regionen doch shapes die aus dem fenster ausgeschnitten bzw hinzugefügt werden oder nicht? Dan müsste ich für 5478 Bilder, Vektormasken erstellen...o.O

EDIT: Ok habs gesehen, der kalkuliert die regions aus den bildern, aber was ist mit der semitransparenz?
EDIT2: Dan geht mir zusätzlich performance fürs berechnen der regionen flöten, die dan eventuell nichtmal mit Semitransparenz zurechtkommen >.<
Edit3: Hab ich echt schonwieder meinen eigenen Post geflagged? Ich brauch endlich mal ne neue maus, die klickt andauernd doppelt >.<

EDIT4: DAs layered Window frists nicht mehr als ne normale Form die ich so excessive bemale. (layered Window ist glaub ich sogar etwas shcneller gewesen)

EDIT5: Achne, das mit den regionen aus Bitmaps war ne Userfunktion^^"

Geändert von Memnarch (18. Jan 2011 um 19:52 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#9

AW: Schnelles Upscaling für Bilder

  Alt 19. Jan 2011, 07:04
Ooooookay, kommen wir also (wieder mal ) zur wichtigsten Frage der Welt: Was willst du am Ende überhaupt erreichen, und worin besteht deine Ausgangssituation?
"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
Benutzerbild von Memnarch
Memnarch

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

AW: Schnelles Upscaling für Bilder

  Alt 19. Jan 2011, 10:19
Was ich erreichen will, ist eine Animation die über den Ganzen screen ausgegeben wird.

Such mal bei Youtube nach "Touhou - BadApple", den Screensaver bau ich nach.
Das klappt auch inzwischen wirklich gut. Ich habe auch inzwischen das ganze mit 2 Threads am arbeiten, einer der regelmässig die Rohbilder nachpuffert, und der Hauptthread der diese Bild hochskaliert und anzeigt.

Nur möchte ichgucken, wo ich noch ein Bisschen die performance verbessern kann. Die Grafikoperationen sind da im Aktuellen schussfeld, und besonders das Upscaling das auch gut was nimmt .


Gibt auch nochn paar andere stellen an denen ich noch gucken muss^^.

MFG
Memnarch
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:26 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