Привет, я уверен, что было задано много похожих вопросов, но после долгих поисков я не нашел ни одного поста, описывающего мою ситуацию.
У меня есть несколько файлов JPG, которые имеют некоторые цвета неправильно после определенной точки, а также каждый пиксель смещен влево. Я думаю, что это из-за некоторых пропущенных байтов в точке, где это изменяется. Я попытался отредактировать файл с помощью vi, но невозможно определить, где находятся отсутствующие байты, также очень сложно использовать vi. Я также пробовал нано, но это не бинарно-безопасно.
Это одно из рассматриваемых изображений:
Поэтому я хочу задать вам два вопроса:
- Как я могу восстановить такие образы в Linux?
- Как можно безопасно открыть и отредактировать файл в бинарном текстовом редакторе под Linux?
Редактировать: используя hexedit, я обнаружил, что от 0x27F000 до 0x27F403 есть только 0xff, а от 0x27F404 до 0x27FFFF только нули 0x00. Это делает что-то вроде этого:
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.....
Заменив эти байты случайными числами, я смог снять изображение, но проблема цвета все еще существует.
Может кто-нибудь указать мне документацию о jpeg-кодировании, чтобы я мог понять, как узнать, где заканчивается блок 8x8.
Мне интересно, почему позиции так точны (от 0x27F000 до 0x27FFFF), это может быть ошибка моей камеры или карты памяти, которую я использовал?
Ответы:
Множество замечательных двоичных редакторов можно найти здесь: https://stackoverflow.com/questions/839227/how-to-edit-binary-file-on-the-unix-systems.
Мои личные фавориты vim с:%! Xxd hack и hexedit
источник
shed
?Статья в Википедии на http://en.wikipedia.org/wiki/JPEG#Entropy_coding содержит много информации - наиболее актуальной для вашей текущей проблемы является эта:
Сдвиг цвета в остальной части изображения вызван одним плохим коэффициентом постоянного тока, который распространяется на все остальные. Возможно, вам удастся найти небольшую область (возможно, один байт, возможно, два - это, вероятно, фактически некоторая последовательность битов), которая надежно влияет на цвета, и попробовать для этого большое количество различных значений.
Может быть проще просто исправить изображение в графическом редакторе - оно выглядит так, как если бы вы разместили, кроме смещения (и обтекания), может просто быть более низкая яркость, вы можете выбрать область и использовать инструмент «Уровни». В других случаях, когда в большей степени задействованы смещения цвета, вы можете получить достаточно хороший результат, взглянув на декомпозицию в цветовых каналах (JPG могут быть в RGB или Y'CbCr) и исправив каждый канал отдельно, возможно, поменяв местами каналы.
РЕДАКТИРОВАТЬ: Ой, я не видел, сколько лет ваш вопрос. Ну, может быть, это будет полезно для вас или кого-то еще.
источник
Ты пробовал
photorec
? Вы можете установить его на Ubuntu следующим образом:Проверьте руководство с:
и просто запустить
photorec
из терминала так:Он попросит вас выбрать источник и место назначения и попытаться восстановить jpg файлы автоматически.
Чтобы не повредить оригинал, я рекомендую сделать копию с помощью
dd
команды. Удачи!источник