Annons

Rotera bilder rätt (Lossless compression)

Produkter
(logga in för att koppla)

DekoR

Aktiv medlem
Jag har tänkt rotera alla bilder i mitt arkiv som är tagna på högkant så att det visas rättvända i datorn.

Nu undrar jag om man kan lita på de program som säger sig fixa rotationer genom "Lossless Compression"??? Har sett att filerna blir ett par KB större efter rotation. Vad består dessa extra KB av?

Det program som jag tänkt använda i så fall är Breezesys Downloader Pro v1.2. Orsaken att jag gillar det är att bilderna blir rättvända i _både_ Acdsee och Photoshop vilket jag tidigare hade problem med.

Om jag nu skulle göra alla bilder i mitt arkiv rättvända på detta sätt kommer jag ta bort alla gamla felvända bilder och därav vill jag vara helt säker att det inte blir någon kvalitetsförlust vid rotationer.

Fasen, har allvarliga problem med att skriva kortfattat. :)
 
Jag litar på dessa program. Förr använde jag Rota. Enkelt gränssnitt och lättanvänt. Tyvärr så har den dumheten att fönstret har fixa storlekar vilket gör att jag inte effektivt kan utnyttja min 21"-monitor. Numera använder jag istället jhead som i sin tur använder jpegtran för själva rotationen. Kommandot "jhead -autorot *.jpg" förenklar mycket för mig. Förutsättningen är så klart att din kamera skriver in i bildmetadatat hur bilden skall vändas. Om inte får du göra det manuellt. Då är rota bra.

Jag har inte lagt märke till att bilderna blivit lite större, men ärligt talat har jag inte tittat efter noga heller. Skulle kunna tro att programmet du använder skriver in något i EXIF-tagen. Själva bilddatat påverkas inte, bara riktningen på datablocken i bilden. Det är en egenhet hos JPEG-komprimeringen som gör att man kan rotera en bild i fasta 90-graderssteg eller spegla den utan kvalitetsförluster.

PS Det är inte "Lossless compression" utan "lossless rotation" som är nyckelordet.
 
I Acdsee finns lossless jpg rotation... tryck Ctrl+J och det skall dyka upp en ruta likt denna: =)
 

Bilagor

  • loss.jpg
    loss.jpg
    46.2 KB · Visningar: 1,076
Jag upptäckte ett litet problem med 20D och Lossless rotation. I ACDSee 5 så visar den ju allting som det är, så jag roterade ju glatt bilderna med "Lossless Rotation". Sen när jag browsade samma katalog med Photoshop CS Filebrowser så hade den vänt bilderna ytterligare ett steg då den läser av EXIF och den flagga som kameran lägger in om bilden är i landskaps- eller höjdformat.

Någon som vet om nyare programvara typ ACDSee 7 klarar att automatiskt vända på bilderna vid visning efter flaggan i EXIF-datat.
 
Det är två saker man ska tänka på, dels rotationsflaggan ("Orientation") som berättar hur bilden skall roteras, dels den inbyggda tumnagel som finns i EXIF-datat i JPEG-filen.

Jag gjorde ett snabbt test med jhead/jpegtran och bilder från min D70. Dessa program roterar INTE tumnageln utan bara bilddatat, men den nollställer samtidigt rotationsflaggan (rimligt antagande och korrekt beteende, eller?) vilket innebär att om programmet du använder väljer att titta på flaggan även när den visar tumnageln blir det rörigt och den hamnar på sniskan. Jag vet inte om något program som utför "lossless rotation" även roterar tumnageln.

En lösning är att ta bort tumnageln och låta sitt "browser"-program återskapa den. Med jhead skriver man "jhead -dt exempel.jpg" för att ta bort tumnageln.

Vill man av någon anledning bara nollställa rotationsflaggan skriver man "jhead -norot exempel2.jpg"

Förutom dessa program så rekommenderar jag exiv2 som är kul när man vill se vad EXIF-datat egentligen innehåller.
 
Gjorde kvickt ett test med rota och den roterar bilderna snällt men ställer INTE om rotationsflaggan vilket gör att program som roterar bilder automatiskt får spel. Kör man rota ska man nog använda jhead eller liknande för att nollsställa rotationsflaggan efteråt. Men som jag tidigare sade så är rota främst intressant när man inte har rotationsflagga i bilden (min lilla digitalkompakt sätter ingen sådan) och då har man inget problem.

Inte heller rota roterar tumnageln.
 
Damocles skrev:
Jag upptäckte ett litet problem med 20D och Lossless rotation. I ACDSee 5 så visar den ju allting som det är, så jag roterade ju glatt bilderna med "Lossless Rotation". Sen när jag browsade samma katalog med Photoshop CS Filebrowser så hade den vänt bilderna ytterligare ett steg då den läser av EXIF och den flagga som kameran lägger in om bilden är i landskaps- eller höjdformat.

Någon som vet om nyare programvara typ ACDSee 7 klarar att automatiskt vända på bilderna vid visning efter flaggan i EXIF-datat.

Det är precis det där som jag menade jag haft problem med. Jag testade AcdSee 7 men den uppförde sig på samma sätt som 5'an.

Downloader Pro provade jag vid överföring av bilder från minneskortet och den fixar Lossless rotation av bilderna så de blir rättvända i både AcdSee 5 och Photoshop CS, vilket är perfekt för mig eftersom det är dessa två program jag använder.

Det jag undrar är om jag borde radera alla mina gamla felvända bilder för att ersätta med de som roterats rätt av Downloader Pro, eller kommer jag surt ångra detta i framtiden när jag upptäcker kvalitetsförlust på bilderna eller något annat problem.
 
DekoR skrev:
Det jag undrar är om jag borde radera alla mina gamla felvända bilder för att ersätta med de som roterats rätt av Downloader Pro, eller kommer jag surt ångra detta i framtiden när jag upptäcker kvalitetsförlust på bilderna eller något annat problem.
Eftersom det rör sig om "lossless rotation" så får du ingen kvalitetsförlust.

Andra problem? Jag kan inte komma på några sådär direkt. Möjligtvis att bildfilen blivit modifierad, även om det rör sig om något som går att ångra. Du kan rotera tillbaka bilden om du vill. Dock så kan delar av EXIF-datat bli förändrat beroende på vilket program du använder som jag tidigare nämnt. "Snälla" program borde även ställa om filmodifieringsdatumet i EXIF-datat då de faktiskt pillat på filen.

Om du inte är paranoid över att måste ha en kopia av dina digitala bildfiler som är på bitnivå exakt lika som de filer (dvs inte bilderna utan själva filerna) som fanns på minneskortet tycker jag gott att du kan slänga eventuellt felroterade bilder som du roterat upp.
 
maxzomborszki skrev:
Själva bilddatat påverkas inte, bara riktningen på datablocken i bilden. Det är en egenhet hos JPEG-komprimeringen som gör att man kan rotera en bild i fasta 90-graderssteg eller spegla den utan kvalitetsförluster.
Men man kan förlora upp till tre pixlar på höjden och/eller bredden. Åtminstone om det som står här stämmer, eller finns det olika metoder för roteringen?
 
kaw skrev:
Men man kan förlora upp till tre pixlar på höjden och/eller bredden. Åtminstone om det som står här stämmer, eller finns det olika metoder för roteringen?
Aj, det är sant. De bilder jag roterat har sparats i jämna multiplar om den MCU han pratar om. Om den inte gör det kan man alltså få block högst MCU-1 pixlar på ena ledden som inte går att rotera på detta sätt och där man kan få en kvalitetsförlust. Han nämner 3 pixlar (dvs att MCU skulle vara 4) men det jag har läst och upplevt är att MCU vanligtvis är 8(x8). Min D70 verkar ge i block om 8. Vilket som principen blir densamma...

Ska tänka till före, alternativt inte försöka tänka när man är snorig och förkyld.

Ok, jag får ändra mitt tidigare uttalande. Om du inte vill att dina bilder från en kamera som inte kan spara i jämna multipler om (4, 8 eller vad den nu sätter MCU till) ska kunna få icke-reversibel rotation på byggblocken längs den eller de två kanter som inte har en längd jämnt delbar med denna MCU, så ska du låta bli att rotera dem. Om du inte bryr dig om att de kan bli modifierade längs ena kanten alt två kanter så kan du gott rotera dem.

jpegtran har en switch (-trim) för att slänga "non-transformable edge blocks" och en switch (-perfect) för att avbryta om den inte kan göra operationer på grund av dessa. Med andra ord bör du kunna använda jpegtran och vara lugn om du använder "-perfect", då förstörs inget bilddata som inte går att återskapa.

I praktiken? Den förlust vi pratar om här är på en annan magnitud än den förlust man får vid upprepade omsparningar av JPEG. Personligen skulle jag inte bry mig om jag nu ändå kör JPEG. Skulle jag bry mig skulle jag köra RAW. YMMV.
 
Jag har lite svårt att tro att någon rotering av en digital bild är förlustfri.

Är det inte så att programmet man använder för att rotera en bild måste interpolera bilden när bilden vänds?

Interpolering innebär väl alltid kvalitetsförlust?

Är jag ute och cyklar med detta resonemang?
 
Lasse H skrev:
Är jag ute och cyklar med detta resonemang?
Nja, inte egentligen, men eftersom första raden i den här tråden är "Jag har tänkt rotera alla bilder i mitt arkiv som är tagna på högkant så att det visas rättvända i datorn." så gäller det alltså endast att vrida i steg om 90 grader och då behövs ju ingen interpolering.
 
Lasse H skrev:
Jag har lite svårt att tro att någon rotering av en digital bild är förlustfri.
Då får vi väl försöka övertyga dig.

Är det inte så att programmet man använder för att rotera en bild måste interpolera bilden när bilden vänds?
Nej, den måste inte interpolera. Speciellt inte om det är så att man roterar i jämna steg om 90 grader. Roteras bilden i anddra vinklar däremot så är det en annan femma. Men den rotation vi pratat om här rör bara dessa 90-graderssteg samt speglingar.

När det gäller bildformat som inte lagrar bildpunkterna i sig utan med förstörande komprimering lagrar en beskrivning av hur man ska återskapa en bild som liknar den originalbildpunkterna en gång bildade.

Nu råkar det vara så praktiskt att de små byggblock som JPEG-komprimerade bilder består av går att rotera och spegla utan att de påverar innehållet i byggblocken. Alltså kommer de när de avkodas ge samma resultat fast speglat eller roterat. Det är detta som förlustfri rotation av JPEG går ut på.

Anders uppmärksammade mig på att de byggblock i bilden som inte är "hela", dvs de som uppstår i en eller två kanter när bildens dimensioner inte är jämnt delbara med dessa små byggblocks dimension, dock inte går att rotera utan förlust. Alltså kan det bli problem i kanterna med denna typ av rotation.

Interpolering innebär väl alltid kvalitetsförlust?
Inte alltid men ofta. En upsampling är en form av interpolering men sker den i jämna heltalssteg så kan man gå tillbaka utan kvalitetsförlust. Det är dock ett specialfall. I det allmänna fallet kan kvalitetsförlust ske.

[Edit: Anders är snabbare för han skriver kortare inlägg :)]
 
Nu verkar alla vara på det klara med det hela men den här bilden tog en liten stund att göra och blev så fin så jag kan inte låta bli att skicka upp den. Är såååå stolt över den :)

Det är de operationer man kan göra med jpegtran. Som synes så är alla operationer förlustfria (i bemärkelsen att man kan gå mellan dem hursomhelst) och det är just på detta sätt som JPEG-kodningens små block kan vändas och skiftas inbörde för att ge önskad transformation av hela bilden.
 

Bilagor

  • exempel.gif
    exempel.gif
    2.5 KB · Visningar: 188
Bra jobbat, Max & Co!

Som sagt, 90-graders-roteringar är det det handlar om.

Jag har nu hittat ett bra sätt som jag roterar bilderna från min Ixus 430 rätt (Breezesys Downloader Pro).

Däremot har jag problem med kort tagna med min gamla Ixus 300 (från tidigt 2001). Downloader Pro klarar inte av att tolka Orientation-taggen i Exif-filen till dessa bilder verkar det som.

Så jag testade att använda Acdsee's rotation till dessa och det funkar bra, bilderna blir rättvända i både Acdsee och Photoshop men det jag inte gillar är att hälften av informationen i Exif'en försvinner. Bl.a. ISO- och vitbalansinställningar.

Aja, ska ta och testa lite andra program sen...
 
DekoR skrev:
Däremot har jag problem med kort tagna med min gamla Ixus 300 (från tidigt 2001). Downloader Pro klarar inte av att tolka Orientation-taggen i Exif-filen till dessa bilder verkar det som.
Frågan är om den har en sådan tag. Det är ju inte alla kameror som har en sensor för att känna av vilken riktning kameran hölls i när bilden togs. Prova att köra exiv2 på en bild från den med flaggan "-p t". Du ska ha en flagga som heter "Orientation" (står i tredje kolumnen med värde i fjärde kolumnen) om allt är rätt. Om inte så är den nog rökt med automatisk rotering av bilderna.
 
ANNONS
Köp en spegellös systemkamera från Canon och få ett 50mm objektiv på köpet hos Götaplatsens Foto.