Permalänk
Medlem

Komprimera >500Gpixel PNG

Hej

Behöver komprimera en PNG bild som ligger på ~550gigapixel förlustfritt. (Inte ens precisionsfel från flyttal helst.) Vilket program skulle ni köra? (Jag vill alltså helst ha den i PNG format senare också, men egentligen går väl andra format också bra om dem presterar bättre.)

Zopfli - Jag vill inte hinna dö innan det är klart...
Imagemagick - Mest lockande just nu. Den stödjer lagringsavlastning så det är inga problem med RAM.
pngtastic - Har använt dess API tidigare men har ingen aning hur prestandan är, det är trots allt en java implementation. Tvekar starkt på att det stödjer stora filer.

Verkar finnas en hel del olika program med olika algoritmer, speciellt deflate steget varierar en hel del. Komprimeringstiden är väl inte låst, men ~2 veckor på en fåkärnig maskin eller en vecka på en mångkärnig maskin känns rimligt. Har ni några erfarenheter över vad som kan vara lämpligt?

Bilden har förövrigt enbart en kanal med 8BPC och givetvis då även 8BPP.

Har ni några andra idéer på lämpliga algoritmer så kan jag implementera dem, men då får det även vara lönt arbetet.

Visa signatur

Citera eller @philipborg om du vill att jag ska läsa dina svar.

Permalänk
Medlem

Har tyvärr inget förslag, men nyfikenheten är för stark: vad är det för en groteskt enorm bild det handlar om?

Visa signatur

5950X, 3090

Permalänk
Medlem
Skrivet av backfeed:

Har tyvärr inget förslag, men nyfikenheten är för stark: vad är det för en groteskt enorm bild det handlar om?

Höjddata, aka. heightmap, baserad till största delen på SRTMIMGM_V003. Med andra ord höjddata över större delar utav jorden.

Visa signatur

Citera eller @philipborg om du vill att jag ska läsa dina svar.

Permalänk
Medlem
Skrivet av philipborg:

Höjddata, aka. heightmap, baserad till största delen på SRTMIMGM_V003. Med andra ord höjddata över större delar utav jorden.

Med förbehåll för att jag bara kan tillräckligt om komprimeringsalgoritmer för att vara farlig så bör man kunna utnyttja strukturen på datan rätt så effektivt. Höjddata kommer ju inte att skilja sig särskilt mycket från pixel till pixel, så man skulle kunna koda om datan så att man lagrar varje pixel som skillnaden mot föregående pixel. Majoriteten av alla pixlar bör då få ett relativt litet värde, vilket kan komprimeras effektivt med t.ex. Huffmankodning. Det är inte särskilt svårt att implementera själva, och flaskhalsen kommer troligtvis bli lagringsmediet.

Edit: Jag läste på lite om vad PNG använder för komprimering. PNG använder visst ungefär samma metod som jag precis beskrivit, fast med några fler och mer komplicerade steg. Så jag har precis uppfunnit en sämre version av PNG Min föreslagna metod skulle dock kunna vara snabbare och kanske lika bra för just höjddata, men den är nog inte värd att implementera om man har en bra PNG-kodare.

Permalänk
Medlem
Skrivet av perost:

Med förbehåll för att jag bara kan tillräckligt om komprimeringsalgoritmer för att vara farlig så bör man kunna utnyttja strukturen på datan rätt så effektivt. Höjddata kommer ju inte att skilja sig särskilt mycket från pixel till pixel, så man skulle kunna koda om datan så att man lagrar varje pixel som skillnaden mot föregående pixel. Majoriteten av alla pixlar bör då få ett relativt litet värde, vilket kan komprimeras effektivt med t.ex. Huffmankodning. Det är inte särskilt svårt att implementera själva, och flaskhalsen kommer troligtvis bli lagringsmediet.

Edit: Jag läste på lite om vad PNG använder för komprimering. PNG använder visst ungefär samma metod som jag precis beskrivit, fast med några fler och mer komplicerade steg. Så jag har precis uppfunnit en sämre version av PNG Min föreslagna metod skulle dock kunna vara snabbare och kanske lika bra för just höjddata, men den är nog inte värd att implementera om man har en bra PNG-kodare.

Haha, det är just pga detta jag har PNG som primär kandidat. Jag har även funderat på att göra en modifierad PNG där jag byter ut deflate mot brotli. Problemet är det att brotli inte är helt moget ännu samt att det är rätt mycket arbete för en relativt liten vinst. Det skulle även krossa smidigheten som standardisering ger.

Visa signatur

Citera eller @philipborg om du vill att jag ska läsa dina svar.

Permalänk
Medlem

Tror jag tar och gör ett tile system på flera PNG filer, tror det blir lättast så och random access tiderna blir markant mycket bättre.

Visa signatur

Citera eller @philipborg om du vill att jag ska läsa dina svar.