objgraph got
- shiny documentation built with Sphinx.
- Python 3.x support, thanks to Stefano Rivera.
- Python 2.4 and 2.5 support, thanks to Daniel Blackburn.
- assorted smaller improvements.
zodbbrowser got
- support for all ZODB databases, not just those with a Zope 3/Bluebream-style root folder/local site.
- the ability to cope better with broken objects (due to the way ZODB works, not having some of your modules on the Python pack can break unpickling; zodbbrowser now handles this kind of situation better).
- assorted smaller improvements.
- a slow but inevitable shift of focus from "use it as a plugin for your Zope 3 app" to "it's a standalone tool for inspecting ZODB contents". (Both use cases are still supported, and will be for the foreseeable future.)
imgdiff got
- its first public release.
- some experimental code to actually find and highlight the differing
parts of the images:
This works better when both images are the same size, although there's experimental (and somewhat buggy) code to try all possible alignments. I could use some help here; image processing is not something I'm familiar with, and searching StackOverflow didn't help beyond reminding me of the existence of PIL's ImageChops.difference(), which is for same-sized images only. Many of the results there are about comparing photos, where things like lighting levels matter. What I need is a diff for computer-generated images, where some things may be shifted around a bit, by different amounts, but are essentially the same. Are there any two-dimensional sequence diff algorithms?
There's a whole bunch of different ones, depending on the likely source of your images, the kind of differences you care about and so on.
One option which (at least on linux) supports python is FiRE http://thomas.deselaers.de/fire/ - and that handles a whole different bunch of different metrics.
You can also roll your own much more easily using OpenCV (the computer vision package ex-IBM) and the python wrappers, although it's a very large dependency. One library which does precisely that is openSiFT - http://blogs.oregonstate.edu/hess/code/sift/
On the other hand, if you just want to show differences between minimally changed but possibly non-aligned image, then you are looking at simple "image registration", which is a reasonably well solved problem in the medical imaging literature. There is an example of that in the scipy docs using a mutual information technique - http://projects.scipy.org/scipy/browser/trunk/scipy/ndimage/_registration.py?rev=4450
The upshot though is that many problems in computer vision are non-trivial, and potentially very slow, so if you want to solve it without re-inventing the wheel, you might end up with large external, compiled dependencies