Bozuk jpg dosyalarını onarma


11

Merhaba eminim çok benzer sorular sordum, ama çok aradıktan sonra durumumu açıklayan herhangi bir yazı bulamadım.

Belirli bir noktadan sonra bazı renkleri yanlış olan bazı jpg dosyaları var ve ayrıca her piksel sola kaydırılır. Bence bunun değiştiği noktada bazı eksik baytlar var. Vi ile dosyayı düzenlemeye çalıştım ama eksik baytların nerede olduğunu bulmak imkansız görünüyor, ayrıca vi kullanımı çok karmaşık. Ayrıca nano denedim ama ikili güvenli değil.

Söz konusu görüntülerden biri:

resim açıklamasını buraya girin

Size iki soru sormak istiyorum:

  1. Linux'ta bu tür görüntüleri nasıl onarabilirim?
  2. Dosyayı Linux altında bir ikili metin düzenleyicide nasıl güvenle açabilirim ve düzenleyebilirim?

Düzenleme: hexedit kullanarak 0x27F000 - 0x27F403 konumundan sadece 0xff olduğunu ve 0x27F404 - 0x27FFFF arasında yalnızca 0x00 sıfırları olduğunu keşfettim. Bu şöyle bir şey yapar:

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

Bu baytları rasgele sayılarla değiştirerek görüntüyü değiştirebildim, ancak yine de renk sorunu var.

Birisi beni 8x8 bloğunun nerede bittiğini bilmek nasıl jpeg kodlama hakkında bazı belgelere işaret olabilir.

Konumların neden bu kadar hassas olduğunu merak ediyorum (0x27F000 - 0x27FFFF), bu benim kamera veya kullandığım hafıza kartı bir hata olabilir mi?


Bu, büyük bir dizi görüntüye bir kez oldu. Sonunda onları sildim, gerçekten bir utanç. Bunları tamir etmeyi başarırsanız, önünüzde zor bir işiniz olduğunu bilmek isterim.
dtmland

Evet bu bir utanç, bu jpeg dosyalarının nasıl kodlandığını anlamaya çalışıyorum, sadece bir 8x4000 piksel satırını silmek zorunda kalacağım. Bu dosyada 4,4MB dosyasında tam olarak 4KB hasar görmüştür% 0,1'den az !!!
Falk

Yanıtlar:


2

Http://en.wikipedia.org/wiki/JPEG#Entropy_coding ile ilgili wikipedia makalesinde çok fazla bilgi var - mevcut sorununuzla en alakalı olanı şu:

Önceki sayısallaştırılmış DC katsayısı, geçerli sayısallaştırılmış DC katsayısını tahmin etmek için kullanılır. İkisi arasındaki fark gerçek değerden ziyade kodlanır. 63 niceliklendirilmiş AC katsayısının kodlanması, bu tür tahmin farklılığını kullanmaz.

Görüntünün geri kalanındaki renk kayması, diğerlerine kademeli olarak tek bir kötü DC katsayısından kaynaklanır. Renkleri güvenilir bir şekilde etkileyen küçük bir alan (belki bir bayt, belki iki - muhtemelen aslında bir bit dizisi) bulabilir ve bunun için çok sayıda farklı değer deneyebilirsiniz.

Görüntüyü grafik düzenleyicide düzeltmek daha kolay olabilir - kaydırma (ve sarma) dışında, daha az parlaklığa sahip olabilir, alanı seçebilir ve Düzeyler aracını kullanabilirsiniz. Daha fazla renk kayması olan diğerleri, renk kanallarındaki (JPG'ler RGB veya Y'CbCr'de olabilir) ayrışmaya bakarak ve her kanalı ayrı ayrı sabitleyerek, muhtemelen kanalları değiştirerek yeterince iyi bir sonuç elde edebilirsiniz.

EDIT: Hata! Sorunuzun kaç yaşında olduğunu görmedim. Belki de bu sizin veya bir başkası için yararlı olacaktır.


Çok teşekkürler, sorunun yaşı umurumda değil, hala görüntü ve biraz daha var.
Falk

Bence kameranın böyle bir durum beklememesi çok utanç verici. diğer sorun, kayıp olandan sonra, Huffman gibi, kayıpsız bir sıkıştırma uygulanmış mı bilmiyorum. Görüntüyü grafik editörlerle açmaktan ziyade bazı baytlarla oynamayı tercih ederim: birçoğu bu görüntüleri açmak istemiyor, ikincisi bazı kaydırıcılarla oynarken tam düzeltmeyi bulabileceğimi sanmıyorum. @ Random832 teşekkürler ve daha fazla bir şey biliyorsan lütfen söyle.
Falk


0

Denedin photorecmi Ubuntu'ya şu şekilde yükleyebilirsiniz:

sudo apt-get install testdisk

El kitabını aşağıdakilerle kontrol edin:

man photorec

ve sadece photorecterminalden şu şekilde çalıştırın :

photorec

Kaynak ve bir hedef seçmenizi ve jpg dosyalarını otomatik olarak kurtarmayı denemenizi isteyecektir.

Orijinal belgenin zarar görmesini önlemek için, ddkomutla bir kopya almanızı öneririm . İyi şanslar!


1
Merhaba, photorec bozuk bir dosya sisteminden dosyaları kurtarmak için tasarlanmıştır, benim durumumda dosya sistemi iyi, ama görüntü bozuk, bu yüzden tamamen farklı bir durum.
Falk

3
Merhaba, daha önce yazdığım gibi dosya sisteminde yanlış bir şey yok, yine de hata olan JPEG dosyası, yine de teşekkürler.
Falk

1
Photorec'in nasıl çalıştığını biliyorum ve ihtiyacım olan şey bu değil, sadece tamiri olmadığı gibi resmi kopyalardı.
Falk

1
Sadece yardım etmeye çalışıyorum. Sen yazarsın, denemedin mi? Aslında bir SD kartta çalıştırdım ve evet onları kopyalar ama sabitledi. Denemek acıtmaz, değil mi? Denemeye değmezse, iyi, iyi şanslar. Söylediğim tek şey benim için tamir ettiği. Sonsuz tartışmayı önlemek için daha fazla yanıt vermeyeceğim.
Vincent Gerris

1
Ben photorec parametre olarak bir cihaz ile çalıştırılacak ment olduğu için denemeyeceğim, jpg dosyası mükemmel hdd benim hdd üzerinde. Bu sadece farklı bir durum. Dediğim gibi, yine de teşekkürler.
Falk

-1

Sadece bozuk olan bir SD karttan resimleri kurtarmak için Photorec'i kullandım. Tüm dosyaları kurtarmasa da, çok sayıda dosyayı kurtarmak iyi bir iş çıkardı. Bununla birlikte, MP4 videoları kurtarıldı, ancak açılamadı. Bazı JPEG dosyaları kurtarıldı, ancak bu iş parçacığının başında sağlanan örnek olarak görüntülenemedi veya gerçekten dağınık olmadı. Photorec onları düzeltmedi.

Alt satır: Photorec, bozuk dosyaları DOSYA SİSTEMLERİNDEN almak için tasarlanmıştır, ancak görünüşe göre bozuk DOSYALAR'ın içeriğini kurtarmak için hiçbir şey yapmaz.


Merhaba, Wander, photorec'i biliyorum, ama aradığım şey bu değil. Bozuk dosyaları düzeltmez.
Falk
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.