2017-07-27 1 views
1

Im aufgenommenen Bilder zu komprimieren, denkt die Huffman verwenden Codierung eine App zu machen, die Bilder direkt von der iPhone-Kamera nimmt und es zu komprimieren. Wäre es möglich, dass die Hardware die komplexe Berechnung und den Aufbau des Baums bewältigt? Mit anderen Worten, ist es machbar?Verwendung von Huffman-Kodierung durch die iPhone-Kamera

Danke

+0

iPhones werden immer mehr und leistungsfähigere so abhängig, wie groß Bilder die Sie suchen und welche Geschwindigkeit Grundlinie Sie sollte möglich sein, setzen. Werfen Sie einen Blick auf diese Implementierung und Sie können versuchen, die Geschwindigkeit für sich selbst profilieren: [raywenderlich/swift-Algorithmus-Club] (https://github.com/raywenderlich/swift-algorithm-club/tree/master/Huffman%20Coding) –

Antwort

4

Wenn Sie die Bilddateien (wie jpg, png, usw.) bedeuten, dann sollten Sie wissen, dass sie bereits mit Algorithmen speziell für Bilder komprimiert werden. Die resultierenden Dateien würden nicht viel komprimieren, wenn überhaupt.

Wenn Sie meinen, dass Sie die UIImage Rohpixeldaten gehen zu nehmen und komprimieren, könnten Sie das tun. Ich bin mir sicher, dass das iPhone damit umgehen könnte.

Wenn dies für ein Spaß-Projekt ist, dann gehen sie. Wenn Sie dies einen nützlichen und gebrauchten App sein wollen, werden Sie einige Herausforderungen haben

  1. Es ist sehr unwahrscheinlich, dass Huffman besser sein wird als die Standard-Bildkompression in JPG, PNG, etc. verwendet

  2. Apple hat bereits eine Notwendigkeit für eine bessere Kompression und umgesetzt heif in iOS 11. WWDC Video about HEIF

  3. gesehen Sie haben App eine Menge Arbeit in der OS und Fotos, um sicherzustellen, heif lokal zu verwenden, aber wenn Sie das Foto teilen verwandelt es in etwas, das jeder benutzen könnte (zB JPG)

  4. Die gesamte Komprimierung, die sie implementieren, verwendet Hardwarebeschleunigung. Du könntest das auch tun, aber der Code ist viel schwieriger als Huffman.

Also, für das Lernen und Spaß, es ist ein gutes Projekt - es könnte einfacher sein, als Mac App zu tun, anstatt, sondern für etwas bedeuteten real zu sein, wäre es äußerst schwierig sein, die oben genannten Probleme zu überwinden .

+0

Danke @Lou. Ihre Antwort ist sehr hilfreich – inzo

0

Es gibt 2 Teile, Codierung und Decodierung. Der Codierungsprozess umfasst das Konstruieren einer Baum- oder einer tabellenbasierten Repräsentation eines Baums. Der Decodierungsprozess umfasst das Lesen von huff-codierenden Bytes und das Rückgängigmachen eines Deltas. Es wäre wahrscheinlich schwierig, viel Geschwindigkeitsvorteil bei der Codierung im Vergleich zu PNG zu erhalten, aber zum Decodieren kann eine sehr effektive Beschleunigung gesehen werden, indem die Decodierlogik auf die GPU mit Metall bewegt wird. Sie können sich den vollständigen Quellcode eines Beispiels ansehen, das genau das für Graustufenbilder auf GitHub Metal Huffman tut.

Verwandte Themen