Відновлення пошкоджених файлів jpg


11

Привіт, я впевнений, що було багато подібних запитань, але після багато пошуків я не знайшов жодної публікації, яка описувала б мою ситуацію.

У мене є деякі файли jpg, які мають певні кольори неправильно після певної точки, а також кожен піксель зміщується вліво. Я думаю, це через деякі пропущені байти в місці, де він змінюється. Я намагався редагувати файл з vi, але здається, неможливо дізнатися, де відсутні байти, також vi дуже складний у використанні. Я також спробував нано, але це не є бінарним.

Це одне із розглянутих зображень:

введіть тут опис зображення

Тому я хочу поставити вам два питання:

  1. Як я можу відремонтувати такі зображення в Linux?
  2. Як я міг безпечно відкривати та редагувати файл у двійковому текстовому редакторі під 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), може це помилка моєї камери чи картки пам'яті, яку я використовував?


У мене таке траплялося один раз із великим набором зображень. Щойно я їх видалив, справді ганьба. Мені було б цікаво дізнатися, чи вдасться ви їх виправити, попереду у вас важка робота.
dtmland

Так, це соромно, я намагаюся розібратися, як закодовані ці файли jpeg, це лише одна лінія 8x4000px, яку мені доведеться видалити. У цьому файлі рівно 4 КБ пошкоджено у файлі 4,4 Мб Це менше 0,1% !!!
Фолк

Відповіді:


2

У статті вікіпедії на веб-сайті http://en.wikipedia.org/wiki/JPEG#Entropy_coding є багато інформації - найбільш актуальною для вашої поточної проблеми є ця:

Попередній квантований коефіцієнт постійного струму використовується для прогнозування поточного квантованого коефіцієнта постійного струму. Різниця між ними кодується, а не фактичне значення. Кодування 63 квантованих коефіцієнтів змінного струму не використовує такого розрізнення прогнозування.

Зміна кольору в залишку зображення обумовлена ​​єдиним поганим коефіцієнтом постійного струму, який каскадує для всіх інших. Можливо, вам вдасться знайти невелику область (можливо, один байт, а може два - це, мабуть, насправді деяка послідовність біт), яка надійно впливає на кольори, і спробувати для цього велику кількість різних значень.

Це може бути простіше просто виправити зображення в графічному редакторі - воно схоже на розміщене вами зображення, окрім зсуву (і обгортання), може просто мати меншу яскравість, ви можете вибрати область та скористатися інструментом Levels. Інші, у яких більше пов'язаних змін кольорів, можливо, ви зможете отримати достатньо хороший результат, подивившись на розкладання кольорових каналів (JPG можуть бути в RGB або Y'CbCr) та зафіксувавши кожен канал окремо, можливо, міняючи канали.

EDIT: На жаль, я не бачив, скільки вам років. Ну, можливо, це стане в нагоді тобі чи комусь іншому.


Багато подяк, не хвилюючись до віку питання, все ж є зображення та ще багато чого.
Falk

Я думаю, що прикро, що камера не очікувала такої ситуації, вони повинні ставити кілька ключових блоків кожні n (скажімо, 32) ряди блоків. інша проблема полягає в тому, що я навіть не знаю, чи існує стиснення без втрат, яке застосовується після втрати, як Хаффман. Я вважаю за краще грати з деякими байтами, ніж відкривати зображення за допомогою графічних редакторів: по-перше, більшість з них не хоче відкривати ці зображення, по-друге, я не думаю, що я міг би знайти точну корекцію, розігруючись з деякими повзунками. @ Random832 спасибі і скажіть, будь ласка, чи знаєте ви щось більше.
Falk

1

2) Як я міг безпечно відкривати та редагувати файл у дворядному текстовому редакторі під Linux?

Багато чудових двійкових редакторів можна знайти тут: /programming/839227/how-to-edit-binary-file-on-the-unix-systems

Мої особисті фаворити - це vim з:%! Xxd hack та hexedit


2
Гаразд, і щось простіше у використанні? як нано.
Falk

щось легке, як shed?
Attie

0

Ви пробували photorec? Ви можете встановити його на Ubuntu так:

sudo apt-get install testdisk

Перевірте керівництво за допомогою:

man photorec

і просто запустіть photorecз терміналу так:

photorec

Він попросить вас вибрати джерело та місце призначення та спробувати відновити jpg-файли автоматично.

Щоб не пошкодити оригінал, рекомендую зробити копію за допомогою ddкоманди. Удачі!


1
Привіт, photorec призначений для відновлення файлів із пошкодженої файлової системи, у моєму випадку файлова система нормальна, але зображення пошкоджене, тому це зовсім інша ситуація.
Falk

3
Привіт, як я писав раніше, з файловою системою немає нічого поганого, це файл JPEG, який має помилку, все одно дякую.
Falk

1
Я знаю, як працює фоторепортаж, і це не те, що мені потрібно, він би просто скопіював картинку, як це відбувається з її ремонтом.
Falk

1
Я просто намагаюся допомогти. Ви введете, щоб ви не пробували? Я насправді запустив його на SD-карту, і так, вона копіює їх, але це теж виправлено. Не завадить спробувати, правда? Якщо не варто намагатися, добре, удачі. Все, що я говорю, це те, що він це зробив для мене. Я більше не відповідатиму, щоб уникнути нескінченних дискусій.
Вінсент Герріс

1
Я не хочу спробувати, тому що фоторепортаж запускається з пристроєм в якості параметра, а файл jpg, який я маю, знаходиться на моєму hdd, що ідеально добре. Це просто різний тип ситуації. Як я вже сказав спасибі.
Falk

-1

Я просто використав Photorec для відновлення фотографій із SD-карти, яка зіпсувалася. Хоча він не відновив усі файли, він зробив чудову роботу, відновивши чимало їх. Зважаючи на це, MP4 відео було відновлено, але не вдалося відкрити. Деякі файли JPEG було відновлено, але вони також не могли переглядатись або були дійсно заблоковані, як зразок, наданий на початку цього потоку. Photorec їх не виправляв.

Підсумок: Photorec призначений для отримання втрачених файлів із пошкоджених ФАЙЛОВИХ СИСТЕМ, але, мабуть, нічого не робить для відновлення вмісту пошкоджених ФАЙЛІВ.


Привіт, Вондере, я знаю фотореакцію, але це не те, що я шукаю. Він не виправить пошкоджені файли.
Falk
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.