Salut, je suis sûr qu'il y avait beaucoup de questions similaires posées, mais après avoir beaucoup cherché, je n'ai trouvé aucun post décrivant ma situation.
J'ai des fichiers jpg qui ont des couleurs incorrectes après un certain point et aussi chaque pixel est décalé vers la gauche. Je pense que c'est à cause de quelques octets manquants au point où cela change. J'ai essayé d'éditer le fichier avec vi mais il semble impossible de savoir où se trouvent les octets manquants, vi est également très compliqué à utiliser. J'ai aussi essayé le nano mais ce n'est pas sûr pour les binaires.
C'est l'une des images en question:
Je veux donc vous poser deux questions:
- Comment réparer de telles images sous Linux?
- Comment puis-je ouvrir et modifier le fichier en toute sécurité dans un éditeur de texte binaire sous Linux?
Edit: en utilisant hexedit, j'ai découvert que de la position 0x27F000 à 0x27F403, il n'y en a que 0xff, et de 0x27F404 à 0x27FFFF, il n'y a que des zéros 0x00. Cela fait quelque chose comme ça:
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.....
En changeant ces octets avec des nombres aléatoires, j'ai pu décaler l'image, mais il y a toujours le problème de couleur.
Quelqu'un pourrait-il m'indiquer une documentation sur l'encodage JPEG afin que je puisse comprendre comment savoir où se termine un bloc 8x8.
Je me demande pourquoi les positions sont si précises (0x27F000 à 0x27FFFF), cela pourrait-il être un bug de ma caméra ou de la carte mémoire que j'ai utilisée?
Réponses:
L'article de wikipedia sur http://en.wikipedia.org/wiki/JPEG#Entropy_coding contient beaucoup d'informations - la plus pertinente pour votre problème actuel est celle-ci:
Le changement de couleur dans le reste de l'image est causé par un seul mauvais coefficient CC qui se répercute sur tous les autres. Vous pourrez peut-être trouver une petite zone (peut-être un octet, peut-être deux - c'est probablement une séquence de bits) qui affecte de manière fiable les couleurs, et essayez un grand nombre de valeurs différentes pour cela.
Il peut être plus facile de simplement corriger l'image dans un éditeur graphique - elle ressemble à celle que vous avez publiée, autre que le décalage (et l'habillage), peut simplement avoir une luminosité plus faible, vous pouvez sélectionner la zone et utiliser l'outil Niveaux. Pour d'autres qui impliquent des changements de couleur plus complexes, vous pourriez obtenir un résultat suffisamment satisfaisant en examinant la décomposition en canaux de couleur (les JPG peuvent être en RVB ou en Y'CbCr) et en fixant chaque canal séparément, en échangeant éventuellement les canaux.
EDIT: Oups, je n'ai pas vu l'âge de votre question. Eh bien, peut-être que cela vous sera utile ou à quelqu'un d'autre.
la source
Beaucoup de grands éditeurs binaires peuvent être trouvés ici: /programming/839227/how-to-edit-binary-file-on-the-unix-systems
Mes favoris personnels sont vim avec:%! Xxd hack et hexedit
la source
shed
?As-tu essayé
photorec
? Vous pouvez l'installer sur Ubuntu comme ceci:Consultez le manuel avec:
et exécutez simplement à
photorec
partir du terminal comme ceci:Il vous demandera de sélectionner la source et une destination et d'essayer de récupérer automatiquement les fichiers jpg.
Pour éviter d'endommager l'original, je recommande de faire une copie avec la
dd
commande. Bonne chance!la source
Je viens d'utiliser Photorec pour récupérer des images d'une carte SD corrompue. Bien qu'il n'ait pas récupéré tous les fichiers, il a fait un excellent travail en récupérant un bon nombre d'entre eux. Cela dit, les vidéos MP4 ont été récupérées mais n'ont pas pu être ouvertes. Certains fichiers JPEG ont été récupérés mais ils ne pouvaient pas non plus être consultés ou étaient vraiment foirés, comme l'exemple fourni au début de ce fil. Photorec ne les a pas corrigés.
Conclusion: Photorec est conçu pour récupérer des fichiers perdus à partir d'un SYSTÈME DE FICHIERS corrompu, mais ne fait apparemment rien pour récupérer le contenu des FICHIERS corrompus.
la source