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?
-
1\$\begingroup\$ what os are you on? That's going to change the answer quite a bit. \$\endgroup\$– cabbeyApr 5, 2011 at 11:10
-
1\$\begingroup\$ this question is not very appropriate for photoSE \$\endgroup\$– MattiaGApr 5, 2011 at 11:33
-
11\$\begingroup\$ It's peripheral, but I think it's definitely on topic, as managing large collections of photographs is important to many photographers. \$\endgroup\$– mattdmApr 5, 2011 at 11:38
-
\$\begingroup\$ @cabbey Windows 7 \$\endgroup\$– fredleyApr 5, 2011 at 11:58
-
1\$\begingroup\$ Does the facebook image still have the original meta data? \$\endgroup\$– ziggystarFeb 1, 2015 at 19:25
6 Answers
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.)
Simply do a wildcarded search for JPEGs (*.jpg), narrowed down by date; all OSs have this functionality. You might have to do a bit of manual looking through, but this may jog your memory and help you narrow down the date range anyway.
-
2\$\begingroup\$ This is where I would start, taking any info that can be had from the FB photo (such as date posted) as a clue as well. \$\endgroup\$– RBerteigApr 5, 2011 at 19:02
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.
-
2\$\begingroup\$ If he is using Linux, then digikam could do the job (its duplicate search accepts images and searches for images that look similar). This works quite well, in this example the images are all slightly different: granjow.net/uploads/digikam/digikam-fuzzy-image-duplicates.png \$\endgroup\$ Apr 5, 2011 at 12:02
-
\$\begingroup\$ Narrow it down by date, then pay your kid brother/nephew/niece £5/$5 to find it. It'll be fun for them and cost effective for you :) \$\endgroup\$ Apr 5, 2011 at 14:58
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.
-
1\$\begingroup\$ And then, buy LR. I'm personally too lazy to do much formal organization of my photos, but LR has made it possible for more than 80% of them to be sensibly tagged, and all to be findable through its filters. The one thing I do every time I pull photos from a camera is to immediately import them into LR tagged "TODO". (LR is Adobe Photoshop Lightroom.) \$\endgroup\$– RBerteigApr 5, 2011 at 19:06
-
\$\begingroup\$ Adobe Bridge is a lot more lightweight if you intend to just use it for this one purpose, and has many, if not all, of the same filters. \$\endgroup\$– MikeW ♦Feb 2, 2015 at 21:19
This touches on file management and I think a search on Super User for a drive indexer program may help you here.
Essentially:
- 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.
-
\$\begingroup\$ My opinion of indexing programs is very poor, because of loss of performance and needless hard drive activity. Thumbnails can be generated in realtime by a good browsing program and the user need only visit candidate folders instead of the whole drive. \$\endgroup\$– JYeltonApr 5, 2011 at 16:20
-
\$\begingroup\$ All management tools will work on a database as it's easier and quicker to search a catalog than do raw disk I/O searches. When in the situation presented by the op, then running multiple searches against that catalog is going to be better than the heavy I/O required for each search performed. \$\endgroup\$– WayneApr 6, 2011 at 0:49