Ripara i file jpg rotti


11

Ciao, sono sicuro che ci sono state molte domande simili, ma dopo aver cercato molto non ho trovato nessun post che descriva la mia situazione.

Ho alcuni file jpg che hanno dei colori sbagliati dopo un certo punto e anche ogni pixel viene spostato a sinistra. Penso che questo sia a causa di alcuni byte mancanti nel punto in cui cambia. Ho provato a modificare il file con vi ma sembra impossibile scoprire dove siano i byte mancanti, anche vi è molto complicato da usare. Ho anche provato nano ma non è sicuro per i binari.

Questa è una delle immagini in questione:

inserisci qui la descrizione dell'immagine

Quindi voglio farti due domande:

  1. Come posso riparare tali immagini in Linux?
  2. Come potrei aprire e modificare il file in modo sicuro in un editor di testo binario sotto Linux?

Modifica: usando hexedit ho scoperto che dalla posizione 0x27F000 a 0x27F403 ce ne sono solo 0xff e da 0x27F404 a 0x27FFFF ci sono solo zero 0x00. Questo rende qualcosa del genere:

    0027EFF0   F8 83 C3 E2  09 35 AF 13  44 6E C5 FD  C7 EF 23 E8  .....5..Dn....#.
    0027F000   FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF  ................
    [...]
    0027F400   FF FF FF FF  00 00 00 00  00 00 00 00  00 00 00 00  ................
    [...]
    0027FFF0   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
    00280000   8F 39 6E 47  4F 43 5F 36  7C 73 66 F1  0D AE AD AF  .9nGOC_6|sf.....

Modificando questi byte con numeri casuali sono stato in grado di spostare l'immagine, ma c'è ancora il problema del colore.

Qualcuno potrebbe indicarmi un po 'di documentazione sulla codifica jpeg in modo che io possa capire come finisce un blocco 8x8.

Mi chiedo perché le posizioni siano così precise (da 0x27F000 a 0x27FFFF), potrebbe trattarsi di un bug della mia cam o della scheda di memoria che ho usato?


Ho dovuto succedere una volta a una vasta serie di immagini. Ho appena finito per cancellarli, un vero peccato. Sarei interessato a sapere se riesci a ripararli, hai un lavoro duro davanti a te.
dtmland,

Sì, è un peccato, sto cercando di capire come sono codificati questi file jpeg, è solo una riga 8x4000px che dovrò eliminare. In questo file ci sono esattamente 4KB danneggiati in un file di 4,4 MB È inferiore allo 0,1% !!!
Falk

Risposte:


2

L'articolo di Wikipedia su http://it.wikipedia.org/wiki/JPEG#Entropy_coding contiene molte informazioni - il più rilevante per il tuo attuale problema è questo:

Il precedente coefficiente DC quantizzato viene utilizzato per prevedere l'attuale coefficiente DC quantizzato. La differenza tra i due è codificata anziché il valore effettivo. La codifica dei 63 coefficienti CA quantizzati non utilizza tale differenziazione di previsione.

Lo spostamento del colore nel resto dell'immagine è causato da un singolo coefficiente CC difettoso che si sovrappone a tutto il resto. Potresti essere in grado di trovare una piccola area (forse un byte, forse due - probabilmente in realtà è una sequenza di bit) che influenza in modo affidabile i colori e provare un gran numero di valori diversi per quello.

Potrebbe essere più semplice semplicemente correggere l'immagine in un editor grafico - sembra che quello che hai pubblicato, diverso dallo spostamento (e avvolgente), possa semplicemente avere una luminosità inferiore, puoi selezionare l'area e usare lo strumento Livelli. Altri che hanno più cambiamenti di colore coinvolti, potresti essere in grado di ottenere un risultato abbastanza buono osservando la decomposizione nei canali di colore (i JPG possono essere in RGB o Y'CbCr) e riparando ciascun canale separatamente, possibilmente scambiando i canali.

EDIT: Oops, non ho visto quanti anni aveva la tua domanda. Bene, forse questo sarà utile a te o a qualcun altro.


Molte grazie, non preoccuparti dell'età della domanda, ha ancora l'immagine e altro ancora.
Falk

Penso sia un peccato che la fotocamera non si aspettasse una situazione del genere, dovrebbero mettere alcuni blocchi chiave ogni n (diciamo 32) file di blocchi. l'altro problema è che non so nemmeno se sia stata applicata una compressione senza perdita dopo quella con perdita, come Huffman. Preferirei giocare con alcuni byte piuttosto che aprire l'immagine con editor grafici: in primo luogo la maggior parte di loro non vuole aprire queste immagini, in secondo luogo non penso che potrei trovare la correzione esatta giocando con alcuni cursori. @ Random832 grazie e per favore dimmi se sai qualcosa di più.
Falk


0

Ci hai provato photorec? Puoi installarlo su Ubuntu in questo modo:

sudo apt-get install testdisk

Controlla il manuale con:

man photorec

e corri photorecdal terminal in questo modo:

photorec

Ti chiederà di selezionare la fonte e una destinazione e provare a recuperare automaticamente i file jpg.

Per evitare di danneggiare l'originale, consiglio di fare una copia con il ddcomando. In bocca al lupo!


1
Salve, photorec è progettato per recuperare file da un filesystem corrotto, nel mio caso il filesystem va bene, ma l'immagine è corrotta, quindi è una situazione completamente diversa.
Falk

3
Ciao, come ho scritto prima non c'è niente di sbagliato nel filesystem, è il file JPEG che ha l'errore, grazie comunque.
Falk,

1
So come funziona il photorec, e non è quello di cui ho bisogno, copia semplicemente l'immagine così com'è senza ripararla.
Falk

1
Sto solo cercando di aiutare. Digiti, quindi non ci hai provato? In realtà l'ho eseguito su una scheda SD e sì, li copia ma li ha riparati. Non puoi farci del male, vero? Se non vale la pena provare, bene, buona fortuna. Tutto quello che sto dicendo è che lo ha riparato per me. Non risponderò più per evitare discussioni senza fine.
Vincent Gerris,

1
Non lo proverò perché photorec sta eseguendo con un dispositivo come parametro, il file jpg che ho è sul mio hdd che è perfettamente bene. È solo un diverso tipo di situazione. Come ho detto grazie comunque.
Falk

-1

Ho appena usato Photorec per recuperare immagini da una scheda SD corrotta. Anche se non ha recuperato tutti i file, ha fatto un ottimo lavoro recuperandone un buon numero. Detto questo, i video MP4 sono stati recuperati ma non potevano essere aperti. Alcuni file JPEG sono stati recuperati ma non sono stati visualizzati o incasinati, come nell'esempio fornito all'inizio di questo thread. Photorec non li ha riparati.

Bottom line: Photorec è progettato per recuperare file persi da un FILE SYSTEMS corrotto ma apparentemente non fa nulla per recuperare il contenuto di FILES corrotti.


Ciao Wander, conosco photorec, ma non è quello che sto cercando. Non riparerà i file corrotti.
Falk
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.