Raymond.cc’s JPEG repair challenge
If you have googled for software to repair corrupt JPEG photos, then there’s a good chance you have come across this article on Raymond.cc: 5 Tools to Repair Corrupted JPEG Photos and Images.
Raymond, or the article author HAL9000 (utterly cool nick!) set up an artificial test to test various tools that claim to be able to repair corrupt and damaged JPEG photos. As the title of the blog article suggests, 5 tools were tested:
- Stellar JPEG Repair
- Picture Doctor 2
- File Repair 2.1
- PixRecovery 3
- JPEG Recovery Professional
Results weren’t very promising:
The challenge
A JPEG image was corrupted in several ways:
Image 1: First 8 bytes of image filled with 0’s.
Image 2: First 32 bytes of image zeroed.
Image 3: First 1KB zeroed.
Image 4: 32 bytes zeroed in the middle of the image.
Image 5: 1KB filled with 0’s in the middle.
Using Google I was able to track down the image used in the test, and using a hex editor I corrupted the image in the same 5 ways.
As a result 3 files can not be opened and thumbnails are not be displayed. These are the files with bytes zeroed at the start of the file, the JPEG header. The files with damage in the middle can be opened but look corrupted.
How does JPGRepair do?
Of course I am curious how my baby will do against these well known jpeg photo repair tools. As it needs a sample or reference file I will have to use the original image. After all I don’t have the original camera to shoot a reference file. It’s not ideal but accurate non the less. An image shot with the same camera would have given the same header.
Also note that JPGRepair does not know it has a complete original picture at it’s disposal, it will process the header of the sample file like any other sample.
After JPGRepair repaired the files it looks like this:
Files with 8 and 32 zeroed bytes are fully restored (score: 2). File with first KB zeroed remains corrupt, which is easily explained: Since the header in this file is smaller than 1 KB, part of the actual image data is destroyed too. In which case JPGRepair is unable to determine the start of the image data so it can’t be merged to the header.
The files with damage in the middle (right in the image bit stream) aren’t perfect but look better than my original corrupted files. The file with 32 corrupt bytes actually looks pretty decent (better than the repair by JPEG Recovery). Since JPEG Recovery was awarded points for these in the test, I will do the same.
Automatic repairs in the image bit stream are very difficult. I don’t know of any tools that can do this automatically and accurately. However manual repair of those files is possible (see my JPEG Repair Service).
image 1 | iamge 2 | image 3 | image 4 | image 5 | |
JPGRepair | Restored | Restored | Failed | Partial | Partial |
And the winner is: JPGRepair!
Okay. I did the test myself. Me the author of the utility tested. Also, Raymond.cc’s test was last updated a year ago. Maybe the tools have been improved, although I doubt that.
I tried to set up the test the best I could. JPGRepair beats all tools tested at that time, no doubt in my mind.