[Code] Bildausschnitte fehlerhafter Dateien sichtbar machen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von germanpipe, 28. Dezember 2012 .

  1. 28. Dezember 2012
    Bildausschnitte fehlerhafter Dateien sichtbar machen

    Hallo Community,

    ich habe mehrere .jpg-Dateien, die ich versucht habe mit einer Datenrettung wiederzubekommen. Diese sind allerdings, wie zu erwarten war, größtenteils beschädigt und nicht zu verwenden. Bei einigen Bildern ist der Bereich mit den "Kopfdaten" vorhanden, so bekomme ich zB. ein Thumbnail angezeigt, bei manchen ist vermutlich nur ein Teil mitten aus der Datei oder das Ende wiederhergestellt.

    Die üblichen Rettungsprogramme haben nicht das gewünschte Ergebnis gebracht. Sie sind vermutlich auch nicht so genau darauf ausgelegt, Bildfetzen wiederherzustellen. Eine fertige Software wird es also vermutlich nicht geben.

    Nun sind .jpg-Dateien ja nicht gerade einfach zu durchschauen. Habe mich ein wenig durch die Dokumentation gequält. Ich suche nach einer Skript-Lösung, die danach sucht, welche Bildfetzen enthalten sind und diese sichtbar machen kann. Die Bildauflösung ist bekannt, die ist immer gleich (Bilder stammen von meinem Handy und waren auf der externen Speicherkarte; leider einige wichtige gelöscht). Mein Ziel ist es, dass das Bild an den Stellen, die nicht wiederherstellbar sind grau ist und die lesbaren Teile eingefügt werden.

    Ist jemandem schon einmal etwas ähnliches bzw. ein Ansatz dieser Art begegnet oder gibt es vielleicht auch noch Softwarevorschläge?
    Kennt sich jemand mit der jpg-Struktur aus und kann hilfreiche Tips geben?


    LG
     
  2. 28. Dezember 2012
    AW: Bildausschnitte fehlerhafter Dateien sichtbar machen

    Ich habe diesen Satz jetzt schon 5 mal gelesen aber ich verstehe den letzten Part nicht. Bilder die nicht wiederhergestellt worden sind, haben graue Flächen. OK soweit so gut. Aber welche lesbaren Teile sollen jetzt eingeführt werden . Die grauen Flächen lassen sich nicht magisch wieder mit dem ursprünglichen Bildinhalt füllen.
    Wie dem auch sei ich würde versuchen die Bilder einfach mal zu sortieren. Am besten mit einer Sprache die für die Grafische DV ausgelegt ist wie z.B. Processing. In etwas so (pseudocode)
    Code:
    threshold = 0.1; //10%
    grey = color(128, 128, 128);
    trash = c:\trash;
    picturefolder = c:\pictures;
    for (jpegfile in picturefolder){
    img = loadImage(jpegfile)
    greycnt = 0;
    for (x = 0; x < img.width; x++){
    for (y = 0; y < img.height; y++){
    if (img.get(x,y) == grey) greycnt++;
    }
    if (greycnt >= img.width*img.height*threshold){
    img.close();
    move(jpegfile,trash);
    next;
    }
    }
    
    PS: Ich würde zum wiederherstellen mal PhotoRec versuchen.
     
    1 Person gefällt das.
  3. 28. Dezember 2012
    AW: Bildausschnitte fehlerhafter Dateien sichtbar machen

    Hehe ^^ Nein, die Bilder sind nicht zu öffnen, wie gesagt, es sind nur Dateifragmente, die ich liegen habe. Wieviel davon überhaupt noch zu lesen sein wird weiß ich auch nicht. Kann also durchaus sein, dass das vergebene Mühe ist.
    Ich will in der mir bekannten Auflösung ein graues Bild zugrunde legen. Dann will ich versuchen aus den Dateifragmenten, die erhalten sind Puzzleteile auf das Bild draufzusetzen.

    Dass ich verlorene Sachen nicht wiederherstellen kann ist mir bewusst. Leider bin ich aber noch nicht an diesem Punkt angekommen, wo ich Bilder habe, die ich öffnen könnte - Bilder auf denen dann nicht lesbares grau ist. Ich hab nur die Dateifetzen liegen.

    Ich hatte mir vorgestellt, dass man vielleicht auf der Ebene der enthaltenen Hexadezimalen Folgen was erkennen kann. Jede jpg-Datei beginnt ja mit FFD8 FFE1 usw. Was den Header angeht bin ich noch relativ gut durchgestiegen. Allerdings habe ich die "Verschlüsselung" der Pixel nicht ganz verstanden.
    Wenn ich richtig bin (bitte korrigiert mich), werden mehrere Pixel zu (Farb-)Bereichen zusammengefasst. Im Hexadezimalen Code müssten dann diese Bereiche irgendwie gekennzeichnet sein. Ein Beginn und ein Ende der Definitionen für den Bereich. Daraus ist vielleicht auch erkennbar, wo dieser Bereich auf dem Bild sein sollte. Wenn ich weiß, wo so eine Definition beginnt und endet, kann ich ja unvollständige Informationen entfernen, mit "grauen" Farbinformationen ersetzen und damit ein Bild rekonstruieren. Dann noch einen vollständigen Dateiheader drüber gesetzt und die Datei kann geöffnet werden.

    PS: PhotoRec kann mir, wenn ich das richtig gesehen habe, nur gelöschte Dateien wiederherstellen. Das habe ich ja schon gemacht, dadurch habe ich die Dateifragmente bekommen. Oder habe ich eine "Bildreperatur" übersehen?

    LG
     
  4. 6. Januar 2013
    AW: Bildausschnitte fehlerhafter Dateien sichtbar machen

    Die Art und Weise, wie Bilddaten in JPEG (im baseline sequential Modus) kodiert werden, erlaubt nur eine Rekonstruktion bis zum ersten Fehler. Ab diesem gibt es keine Möglichkeit mehr zu erkennen, wo wieder gültige Daten beginnen. Ergo: Es wird kein Puzzle, sondern von oben nach unten etwas und dann nichts mehr.

    Mit einem Hexeditor wirst du nicht weit kommen. Die Bildinformationen liegen in einem Datenblock und weil's komprimiert ist, wirst du nicht erkennen können, wo die einzelnen Makroblöcke beginnen.
     
    2 Person(en) gefällt das.
  5. 6. Januar 2013
    AW: Bildausschnitte fehlerhafter Dateien sichtbar machen

    Vielen Dank für den Hinweis. Das hat mir wirklich einiges an Suchen erspart. Dann hilft mir mein Ansatz natürlich nicht weiter, das ist klar.
    Mal sehen, ob ich was machen kann, wenn nur in den Kopfdaten was nicht ganz vollständig ist. Aber ich vermute, dass das auch die Wiederherstellungsprogramme schon untersucht haben. Dann soll es halt nicht sein.

    LG
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.