2017-06-03 3 views
2

ich auf den Bildkomprimierungstechniken bin zu arbeiten und die besten Algorithmen zu analysieren, die kleinen Ausgang innerhalb von 100 ms oder weniger für Bilder der Auflösung 1920 * 1080 auf einem Laptop mit Octa-Core-Prozessor erzeugen könnte für die Übertragung über das Netzwerk.LibWebP nimmt zu viel Zeit für die Bildkompression

Ich hatte GDI + und CxImage Bibliotheken für Bildkompression, JPG oder PNG Kompressionstechniken, die mir das Ausgabebild innerhalb von etwa 30 ms für JPG und etwa 70 ms mit PNG für bunte Bilder, Zeit genommen ist ziemlich gut, aber Die Größe der komprimierten Daten ist viel größer, wenn ich eine bessere Qualität anstrebe.

Dann kam ich auf Googles WebP-Format. Ich habe es mit libWebP mit VC++ versucht. Die Qualität und die Kompressionsrate ist wirklich großartig, aber die Zeit ist viel höher als ich erwartet hatte. Es dauert mehr als 300 ms und manchmal sogar mehr als 1 Sekunde, wenn ich Alpha-Filter und Alphakomprimierung anwende.

Hier sind meine WebpConfig Einstellungen

m_webp_config.quality   = 50; 
    m_webp_config.alpha_quality  = 0; 
    m_webp_config.lossless   = false; 
    m_webp_config.method   = 3; 
    m_webp_config.alpha_compression = false; 
    m_webp_config.alpha_filtering = false; 
    m_webp_config.autofilter  = false; 
    m_webp_config.filter_sharpness = false; 
    m_webp_config.filter_strength = 0; 
    m_webp_config.filter_type  = 0; 
    m_webp_config.use_sharp_yuv  = false; 

Und manchmal bekomme ich schwarze Bilder, wenn ich Eingabeaufforderung oder Notizblock erfassen ++ (Ich vermute, dass das Problem mit diesen Bildern mit vielen Textdaten ist aber das gleiche ist nicht wahr, mit Webseiten, die riesige Menge an Text)

Bin ich etwas zu tun, falsch mit dem WebPConfig hat? Gibt es eine Möglichkeit, es zu optimieren?

finde ich nicht viel Dokumentation und alle Foren, die mir eine Idee, mit diesen Problemen geben kann.

Jede Hilfe wäre willkommen. Danke im Voraus.

Antwort

1

Versuchen Sie verlustfreie Komprimierung? Es kann verlustfreie Modi geben, die schneller sind als verlustreiche.

Wenn Sie die Kontrolle über die Kompression und Dekompression sind, teilen das Bild in 256x256 Quadrate und komprimieren und sie separat senden. Auf diese Weise können Sie nicht nur die Berechnung parallelisieren, sondern auch einige der während der Komprimierung stattfindenden Übertragungen verschachteln, was Ihre Zeitplanung für die Komprimierungsberechnung vereinfachen kann.

Wenn Sie die ‚Methode‘ Wert verringern, werden Sie in der Regel eine schnellere WebP Kompression finden. Bei Lossless müssen Sie BEIDE Methode und Qualität reduzieren, sie steuern das Gleiche auf eine komplizierte Art und Weise. Für verlustfreie, versuchen Qualität 20 und Methode 1 (oder vielleicht gibt es auch eine 0-Methode, erinnere mich nicht).

+2

Dank @Jyrki Alakuijala Ihr Vorschlag scheint machbar zu sein. Ich habe versucht, das Bild in kleinere aufzuteilen und die Komprimierungslogik parallel zu machen. Gute Ergebnisse erzielen. – Ram

Verwandte Themen