Ich versuche, ein Tuch zu entwerfen, das aus der Sicht einer Kamera sehr schwer mit JPG zu komprimieren ist, was zu großen Dateien führt (oder zu einer niedrigen Bildqualität führt, wenn die Dateigröße festgelegt ist).
Es muss funktionieren, auch wenn das Tuch weit von der Kamera entfernt oder gedreht ist (sagen wir, die Skala kann von 1x bis 10x variieren).
Das Rauschen ist ziemlich gut (schwer zu komprimieren), aber es wird grau, wenn man von weitem schaut, und es wird leicht zu komprimieren. Ein gutes Muster wäre eine Art Fraktal , das auf allen Skalen ähnlich aussieht.
Laub ist besser (Blätter, kleine Zweige, kleine Zweige, große Zweige), aber es werden zu wenige Farben verwendet.
Hier ist ein erster Versuch:
Ich bin sicher, dass es optimalere Muster gibt.
Vielleicht würden Sechseck- oder Dreieck- Tessellationen eine bessere Leistung erbringen.
JPG verwendet den Y 'Cb Cr-Farbraum . Ich denke, Cb Cr kann auf ähnliche Weise erzeugt werden, aber ich denke, es ist besser, nicht den gesamten Bereich von Y' (Helligkeit) gleichmäßig zu nutzen, da die Kamera die hellen oder dunklen Bereiche sättigt ( Beleuchtung ist nie perfekt).
FRAGE: Was ist das optimale Stoffmuster für dieses Problem?
quelle
Antworten:
Nun, es gibt fraktales Rauschen . Ich denke, Brown'sches Rauschen ist fraktal und sieht genauso aus, wie Sie hineinzoomen. In Wikipedia wird über das Hinzufügen von Perlin-Rauschen zu sich selbst in verschiedenen Maßstäben gesprochen, um fraktales Rauschen zu erzeugen, das möglicherweise identisch ist. Ich bin mir nicht sicher:
Ich denke jedoch nicht, dass dies schwer zu komprimieren ist. Rauschen ist schwer für verlustfreie Komprimierung, aber JPEG ist verlustbehaftet. Es wird also nur das Detail wegwerfen, anstatt mit ihm zu kämpfen. Ich bin nicht sicher, ob es möglich ist, die Komprimierung von JPEG zu erschweren, da alles ignoriert wird, was bei dieser Qualitätsstufe zu schwer zu komprimieren ist.
Etwas mit harten Kanten in jedem Maßstab wäre wahrscheinlich besser, wie die unendliche Schachbrettebene:
Auch etwas mit vielen Farben. Vielleicht schauen Sie sich die tatsächlichen Fraktale an, anstatt das Fraktalrauschen. Vielleicht ein Mondrian-Fraktal ? :)
quelle
Wenn wir von computergenerierten Bildern sprechen würden, wäre Rauschen der richtige Ansatz. Aber hier gibt es den Kameraerfassungsschritt.
Das fraktale Bit ist aufgrund des Problems der Skaleninvarianz sehr wichtig. Es muss jedoch nicht wirklich fraktal sein, wenn Sie bedenken, dass die Entfernung, in der die Person fotografiert werden soll, begrenzt ist. Ich meine, wenn sich die Person, die das Tuch trägt, im Hintergrund eines Bildes befindet, hat es sowieso keinen großen Einfluss ...
Ich denke, der beste Weg, um den JPEG-Encoder auszutricksen, besteht darin, Blöcke mit sehr hohen Hochfrequenzkoeffizienten zu haben, die die Quantisierung überleben - viele Details und scharfe Kanten. Daher muss die gesamte Koeffizientensequenz explizit geschrieben werden (anstelle eines EOB etwa beim 15. Koeffizienten). Schachbrettmuster sind ein guter Weg, um dies zu erreichen. Der einzige Nachteil, den ich sehe, ist, dass die niedrige Auflösung des Objektivs + der Kamera-Antialiasing-Filter eine gute Chance haben, dies zu verwischen! Alles sollte innerhalb von 8x8-Blöcken (oder 16x16-Blöcken in Bezug auf die Farbsättigung) geschehen, da JPEG im Makromaßstab nicht viel bewirkt. Sie müssen Ihre 8x8-Blöcke so unordentlich wie möglich machen, egal wie unscharf die Linse sie machen wird.
Hier ist ein Vorschlag:
Sie mögen sich fragen, was die weniger kontrastreichen Blöcke hier tun, aber sie helfen, die kontrastreiche Zone beizubehalten, wenn das Objekt herausgezoomt wird. Die Herausforderung hierbei ist, unabhängig von der Betrachtungsskala ein kontrastreiches Muster zu haben.
Ich habe dies nicht offiziell bewertet. Der beste Weg wäre, ein Skript zu haben, das das Bild aufnimmt, ein Dutzend Zuschnitte / Größenänderungen / Unschärfen mit verschiedenen Parametern anwendet und die Gesamtgröße der JPEGs aufteilt.
quelle
Es gibt einen Unterschied zwischen JPEG und Transform Compressible.
Nehmen wir zum Beispiel das weiße, körnige Geräusch eines Fernsehers.
Ein allgemeines weißes Rauschen ist in der Frequenz maximal gestreut, und daher gibt es kein besseres Beispiel als weißes Rauschen, das mit irgendeiner Transformationsdomänencodiertechnik nicht komprimiert werden kann. Wenn Sie ein solches Rauschen und DCT (oder DFT, falls erforderlich) verwenden, werden wir feststellen, dass der Frequenzbereich ebenfalls weit verbreitet ist und alle Koeffizienten von Bedeutung sind.
Dennoch hindert Sie niemand daran, aggressiv gegen die Quantisierung vorzugehen. Auf diese Weise können Sie immer noch große Mengen aus den Hochfrequenzbereichen entfernen. Das Ergebnis wird einen schweren Mean-Square-Fehler haben. Wahrnehmungsmäßig wäre es jedoch immer noch Lärm. Es könnte jedoch stark verschwommen sein.
Nehmen Sie jetzt Bilder mit scharfen Kanten auf.
Scharfe Kanten haben sich auch in der höheren Frequenz ausgebreitet (es kann jedoch auch sein, dass sie geringfügig geringer sind als im vorherigen Fall). Beim Versuch, es zu komprimieren und hochfrequent abzufallen, treten jedoch jetzt erhebliche visuelle Hindernisse auf. Dies führt zu Unschärfen von Kanten, Ringen usw. Während die Bandbreite für solche Bilder nicht so groß wie möglich ist, ist es bei JPEG oder einer vergleichbaren Komprimierung schwierig, die Qualität solcher Bilder gleich zu halten.
Bei einer verlustbehafteten Komprimierung hängt die Stärke und Einfachheit davon ab, wie viel und welche Art von Verzerrung toleriert wird.
quelle
Die folgende Zusammensetzung zeigt eine fraktale Art Struktur des Musters. Das jeweils nächste Bild ist das Ergebnis der Mittelung über jeden 2x2-Pixel-Block des vorherigen. Der Gesamtcharakter des Musters bleibt gleich, aber der Bildkontrast nimmt allmählich ab. Wie bereits gesagt, wird das Bild beim Verkleinern grau.
Mit der fraktalen Eigenschaft könnten wir jedoch mehrere Muster mit unterschiedlicher Auflösung überlagern, um den Bildkontrast im gewünschten Bereich stabil zu halten. Unten sehen Sie ein Beispiel für ein 4-Ebenen-Muster (512 x 512 GIF). Dieses Ergebnis ist eher an Brown'sches Rauschen angelehnt und auch kaum JPEG-komprimierbar.
quelle
Ich vermute, das schlechteste komprimierbare Muster wäre weißes Rauschen (mit gleichmäßiger Verteilung). Es muss bei verschiedenen Auflösungen verrauscht aussehen, daher können Sie die verrauschten Bilder im Skalierungsbereich erstellen und dann zusammenfügen:
Ein besserer Weg, ein solches Bild zu konstruieren, wäre vielleicht, direkt im Frequenzbereich zu arbeiten.
Das Ergebnis wäre das schlechteste komprimierbare Muster für JPEG, da es die höchste Entropie im DCT-Bereich aufweist. Ich bin mir aber nicht sicher, wie sich das bei unterschiedlichen Auflösungen verhalten wird.
quelle
In IIRC ist der JPEG-Dekomprimierungsalgorithmus angegeben, der genaue Komprimierungsalgorithmus jedoch nicht. Verschiedene Algorithmen können eine legale JPEG-Datei erzeugen. Sie müssen dies also auf den von Ihnen ausgewählten Bildkomprimierungsprogrammen testen.
Alles kann mit einem verlustbehafteten Kompressor wie JPEG um den gleichen Betrag komprimiert werden. Es ist nur so, dass bei jeder festen Komprimierungsstufe die Qualität der Komprimierung je nach Bild variieren kann (das Rauschen oder der Fehler im dekomprimierten Ergebnis nimmt zu). Sie möchten also etwas, das dem dekomprimierten Ergebnis ein Maximum an Rauschen hinzufügt. Dazu möchten Sie den maximalen Fehler zum Entfernen von Hochfrequenz-Makroblock-Koeffizienten und zum Quantisieren von Koeffizienten.
Was wahrscheinlich unterschiedliche und hochfrequente Streikposten sowie unterschiedliche Grau- und Farbskalen bedeutet, die zufällig zwischen möglichen Quantisierungsstufen des gegebenen Kompressors bei einer gegebenen Einstellung liegen.
Da dies bei jeder Beleuchtung in beliebiger Entfernung funktionieren soll, müssen Sie die Frequenz der Streikposten (möglicherweise fraktal oder nur mit zufälliger Frequenzmodulation) sowie die Farb- und Graustufen (nicht kohärent, z. B. variieren die Streikposten) variieren Farben und die Ebenen unabhängig voneinander). Die Farbtonvarianz hängt weniger von der Entfernung ab, daher müssen diese nur ausgewählt werden, um für die ausgewählten Quantisierer einen schlechteren Fall zu erzielen. Die durchschnittliche Größe der Farbmuster kann doppelt so groß sein wie die Leuchtdichtemuster, um der 4: 1: 1 (Flächen-) YUV-Makroblockzusammensetzung zu entsprechen.
Ich würde mit einem Bündel von farbintensiven Moire-Mustern in wild variierenden Maßstäben beginnen, die fraktal überlagert und / oder zusammengefügt sind.
quelle
Lassen Sie mich das Muster teilen, das ein sehr flaches Spektrum aufweist (wie das weiße Rauschen). Daher ist es sehr schwierig, dieses Muster mit JPG zu komprimieren. Das folgende Beispielbild wird viermal vergrößert.
Das Muster selbst ist regelmäßig, aber nicht periodisch und kann leicht durch den deterministischen Algorithmus erzeugt werden. Es hat auch eine fraktale Eigenschaft.
Von weitem gesehen:
quelle
Zufälliges Rauschen wird tatsächlich sehr schlecht komprimiert. Sie können es in Farbe erzeugen, indem Sie unabhängige R-, G- und B-Werte erzeugen.
Wenn Sie aus der Ferne schauen, wird das Rauschen zwar entfernt (durch Tiefpassfilterung), und Sie können dies vermeiden, indem Sie Rauschbilder mit unterschiedlichen Auflösungen, dh mit immer größeren Pixeln, erstellen und überlagern.
Wenn Sie die Bilder hinzufügen, haben Sie das Problem des Wertebereichs, der mit der Anzahl der Bilder wächst, lassen Sie N. Wenn Sie sie nur mitteln, nimmt die Rauschamplitude mit 1 / N ab.
Wenn Sie nichtkorreliertes gleichmäßiges Rauschen wählen, führt die Überlagerung zu einer Quasi-Gauß-Verteilung mit √N-Standardabweichung. Anstatt durch N zu teilen, können Sie durch √N (mit geeigneter Neuzentrierung) dividieren, um die Amplitudenreduzierung zu begrenzen.
Schließlich denke ich, dass es besser ist, die Werte umfließen zu lassen, als sie zu sättigen, da gesättigte Werte große, gleichmäßige Bereiche bilden.
quelle
Hier ist ein weiterer Ansatz, mit dem RGB-Brown'sches Rauschen (4096 x 4096 GIF) erzielt wird.
quelle
Erstaunliche Frage! Im Konzept ist das weiße Rauschen ein Signal, das sich nicht ändert, wenn es zeitskaliert wird. Ebenso ändert sich ein Fraktal nicht, wenn es in der Größe skaliert wird. Ein verlustbehafteter Komprimierungsprozess nimmt nur das wichtigste Spektrum (Zeit oder Größe) in Anspruch, daher riechen Fraktale und Geräusche nach Keksen. Daher sollten Sie mit den Farben und Mustern Ihres Stoffes spielen. Sie müssen Fraktale sein, und das Fraktalverhalten muss zufällig generiert werden. Sie sollten einen Stoff erhalten, der im Foto schwarz aussieht (im CMY-Farbraum), in der realen Welt jedoch ein buntes Muster aufweist.
Viel Glück! , und wenn du die Antwort bekommst, poste sie bitte !!!
quelle