A friend has requested a full-res copy of a photo I posted on Facebook a few years ago. Back then I just had a point and shoot, I didn't organize my photos well, and since I have started organizing photos, it's only the newer ones that are organized. So somewhere in the mess of folders on my drive is this photo, what's the best way to find it (amongst tens of thousands of photos)? Is there a Tineye-like program I can download and run on my machine?
The people who make TinEye have a product called PixMatch which can search individual collections. It's not implemented as a desktop application, though — it's a server-based API. And it appears to be priced for serious enterprise use, not for individuals. So that's there, but not really an answer.
But a competing company does have something for the desktop — Imense Desktop Similar Image Search, which runs on Apple Mac OS or Microsoft Windows with Adobe Bridge CS4. It's free for collections of up to 4000, and seems reasonably priced above that.
There are, in fact, a ton of things, once I figured out what to search for: Content-based image retrieval. There is actually a lot of work in this area, and a ton of both open source and closed tools. Most of these are focused on the big-enterprise/academia side of things, and are in various states of completion and polish.
Of these, I think imgSeek is the most interesting for the desktop case. This is Python/QT-based and so in theory should run on pretty much any platform, but is focused on Linux. It does a comparisons based on metadata (date, time, etc.), simple features like average luminosity or color, or by sophisticated wavelet-based estimation of similarity. That's probably overkill for finding the exact same image in a different size with different compression, but should work really well since that's basically the easiest possible case. It'll also find near matches, like this:
All that may be too much work for this specific one-time problem. How are your not-organized photos stored? Even if their filenames aren't helpul, the EXIF metadata should still be good. One simple approach is to import them into a program which can examine this data and search or sort by it. Or, you could use a program like jhead to rename them all so they have sensible date-based names. (Maybe both.)
The technology certainly exists, as you mention TinEye has the functionality to find a high res image based on a low res sample, but I don't know of any desktop implementation of that approach.
Your best bet is probably to do an advanced search based on date, working out the most accurate date you can from memory (when you uploaded to Facebook). Narrow it down to a few tens of images and then eyeball it.
I like @ElendilTheTall's answer, but:
I recommend a thumbnail viewing program like Irfanview's thumbnail viewer. Open the program, hit "T" for thumbnail view (or File > Thumbnails). You then have a folder tree on the left and thumbnails on the right. This is a quick way to view images within a folder, and it lets you skip folders you know it isn't in. The full *.jpg search will find a massive amount of images that aren't part of your collection, such as cached web images, etc.
Also using Windows 7 you can easily view thumbnails, but I find that the operating system will view every folder somewhat differently based on its content and it can be more time consuming to set the view to thumbnails with the size you want.
If you were on mac or unix I'd have suggested an implementation of basically what @ElendilTheTall answered with. But Windows… yeah, not my favorite place to work so not sure how to go about doing it.
BUT, LightRoom has a free 30 day trial. You could download that, throw all your images in it and then use its filtering to slice and dice your way to the image. Filter by camera, then by date, then spin through the grid until you find it. I have most of my photos organized in folders on my drives, but I use that approach to finding images on a regular basis.
This touches on file management and I think a search on Super User for a drive indexer program may help you here.
- Let the indexer run overnight
- Run queries against the catalog
Note: Some indexers may even generate a small low-res thumbnail for you to look at.