Memperbaiki file jpg yang rusak

11

Hai Saya yakin ada banyak pertanyaan serupa yang diajukan, tetapi setelah mencari banyak, saya tidak menemukan posting yang menggambarkan situasi saya.

Saya memiliki beberapa file jpg yang memiliki beberapa warna salah setelah titik tertentu dan juga setiap piksel bergeser ke kiri. Saya pikir ini karena beberapa byte yang hilang pada titik di mana ia berubah. Saya mencoba mengedit file dengan vi tetapi sepertinya tidak mungkin untuk mencari tahu di mana byte yang hilang, juga vi sangat rumit untuk digunakan. Saya juga mencoba nano tetapi tidak aman biner.

Ini adalah salah satu gambar yang dimaksud:

masukkan deskripsi gambar di sini

Jadi saya ingin mengajukan dua pertanyaan:

  1. Bagaimana saya bisa memperbaiki gambar seperti itu di Linux?
  2. Bagaimana saya bisa dengan aman membuka dan mengedit file dalam editor teks biner di Linux?

Sunting: menggunakan hexedit Saya menemukan bahwa dari posisi 0x27F000 ke 0x27F403 hanya ada yang 0xff, dan dari 0x27F404 ke 0x27FFFF hanya ada nol 0x00. Ini membuat sesuatu seperti ini:

    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.....

Mengubah byte ini dengan angka acak saya bisa mengubah gambar, tetapi masih ada masalah warna.

Bisakah seseorang mengarahkan saya ke beberapa dokumentasi tentang pengkodean jpeg sehingga saya bisa mengetahui bagaimana cara mengetahui di mana blok 8x8 berakhir.

Saya bertanya-tanya mengapa posisinya sangat tepat (0x27F000 hingga 0x27FFFF), mungkinkah ini bug cam saya atau kartu memori yang saya gunakan?

Falk
sumber
Saya pernah mengalami hal ini pada satu set besar gambar. Saya akhirnya menghapus mereka, sungguh memalukan. Saya tertarik untuk mengetahui apakah Anda berhasil memperbaiki ini, Anda memiliki pekerjaan yang sulit di depan Anda.
dtmland
Ya itu memalukan, saya mencoba mencari tahu bagaimana file jpeg ini disandikan, itu hanya satu baris 8x4000px yang harus saya hapus. Dalam file ini ada persis 4KB rusak dalam file 4.4MB. Ini kurang dari 0,1% !!!
Falk

Jawaban:

2

Artikel wikipedia di http://en.wikipedia.org/wiki/JPEG#Entropy_coding memiliki banyak informasi - yang paling relevan dengan masalah Anda saat ini adalah yang ini:

Koefisien DC terkuantisasi sebelumnya digunakan untuk memprediksi koefisien DC terkuantisasi saat ini. Perbedaan antara keduanya dikodekan daripada nilai aktual. Pengkodean dari koefisien AC kuantitatif tidak menggunakan perbedaan prediksi seperti itu.

Pergeseran warna pada sisa gambar disebabkan oleh koefisien DC buruk tunggal yang mengalir ke semua sisanya. Anda mungkin dapat menemukan area kecil (mungkin satu byte, mungkin dua - itu mungkin sebenarnya beberapa urutan bit) yang dapat dipercaya mempengaruhi warna, dan mencoba sejumlah besar nilai yang berbeda untuk itu.

Mungkin lebih mudah untuk hanya memperbaiki gambar dalam editor grafik - sepertinya yang Anda posting, selain shift (dan sampul), mungkin hanya memiliki kecerahan yang lebih rendah, Anda dapat memilih area dan menggunakan alat Levels. Orang lain yang memiliki lebih banyak pergeseran warna, Anda mungkin bisa mendapatkan hasil yang cukup baik dengan melihat dekomposisi dalam saluran warna (JPG mungkin dalam RGB atau Y'CbCr) dan memperbaiki setiap saluran secara terpisah, mungkin mengganti saluran.

EDIT: Ups, saya tidak melihat berapa umur pertanyaan Anda. Ya, mungkin ini akan berguna bagi Anda atau orang lain.

Random832
sumber
Terima kasih banyak, tidak peduli dengan usia pertanyaan, masih memiliki gambar dan banyak lagi.
Falk
Saya pikir itu memalukan bahwa kamera tidak mengharapkan situasi seperti itu, mereka harus meletakkan beberapa blok kunci setiap n (katakanlah 32) deretan blok. Masalah lainnya adalah bahwa saya bahkan tidak tahu apakah ada kompresi lossless yang diterapkan setelah lossy, seperti Huffman. Saya lebih suka bermain-main dengan beberapa byte daripada membuka gambar dengan editor grafis: pertama-tama kebanyakan dari mereka tidak ingin membuka gambar-gambar ini, kedua saya tidak berpikir bahwa saya bisa menemukan koreksi yang tepat bermain-main dengan beberapa slider. @ Random832 terima kasih dan tolong beri tahu saya jika Anda tahu lebih banyak.
Falk
1

2) Bagaimana saya bisa dengan aman membuka dan mengedit file dalam editor teks biner di Linux?

Banyak editor biner hebat dapat ditemukan di sini: /programming/839227/how-to-edit-binary-file-on-the-unix-systems

Favorit pribadi saya adalah vim dengan:%! Xxd hack dan hexedit

Viacheslav Rodionov
sumber
2
Oke, dan sesuatu yang lebih mudah digunakan? seperti nano.
Falk
sesuatu yang mudah seperti shed?
Attie
0

Sudahkah Anda mencoba photorec? Anda dapat menginstalnya di Ubuntu seperti ini:

sudo apt-get install testdisk

Periksa manual dengan:

man photorec

dan jalankan photorecdari terminal seperti:

photorec

Ini akan meminta Anda untuk memilih sumber dan tujuan dan mencoba memulihkan file jpg secara otomatis.

Untuk mencegah kerusakan pada dokumen asli, saya sarankan untuk membuat salinan dengan ddperintah. Semoga berhasil!

Vincent Gerris
sumber
1
Hai, photorec dirancang untuk memulihkan file dari sistem file yang rusak, dalam kasus saya sistem file baik-baik saja, tetapi gambar rusak sehingga situasi yang sama sekali berbeda.
Falk
3
Hai, seperti yang saya tulis sebelumnya tidak ada yang salah dengan sistem file, itu file JPEG yang memiliki kesalahan, terima kasih.
Falk
1
Saya tahu bagaimana photorec bekerja, dan itu bukan apa yang saya butuhkan, itu hanya akan menyalin gambar karena tanpa memperbaikinya.
Falk
1
Saya hanya berusaha membantu. Anda mengetik akan, jadi Anda tidak mencoba? Saya benar-benar menjalankannya pada kartu SD dan ya itu menyalin mereka tetapi juga memperbaikinya. Tidak ada salahnya mencoba, kan? Jika tidak layak dicoba, semoga sukses. Yang saya katakan adalah itu memang memperbaikinya untuk saya. Saya tidak akan menanggapi lebih jauh untuk menghindari diskusi tanpa akhir.
Vincent Gerris
1
Saya tidak akan mencobanya karena photorec akan dijalankan dengan perangkat sebagai parameter, file jpg yang saya miliki ada di hdd saya yang sangat bagus. Itu hanya tipe situasi yang berbeda. Seperti yang saya katakan terima kasih.
Falk
-1

Saya hanya menggunakan Photorec untuk memulihkan gambar dari kartu SD yang rusak. Meskipun tidak memulihkan semua file, itu berhasil memulihkan sejumlah besar file. Dengan demikian, video MP4 dipulihkan tetapi tidak dapat dibuka. Beberapa file JPEG telah dipulihkan tetapi mereka juga tidak dapat dilihat atau benar-benar kacau, seperti sampel yang disediakan di awal utas ini. Photorec tidak memperbaikinya.

Intinya: Photorec dirancang untuk mengambil file yang hilang dari SISTEM FILE yang rusak tetapi tampaknya tidak melakukan apa pun untuk memulihkan konten FILES yang rusak.

Mengembara Stabenow
sumber
Hai, Wander, saya tahu photorec, tapi bukan itu yang saya cari. Itu tidak akan memperbaiki file yang rusak.
Falk