Monday, August 24, 2009

An annoying discovery

One of the great annoyances of manufactured items is they tend to be very symmetrical. This makes various approaches to automated registration more complicated, since there are often ambiguous possible solutions, so one often has to shove in more domain specific knowledge to get the correct answer. Domain specific information makes thins less portable, and generally requires annoying maintenance effort later.

This is all; relevant, since I've been trying to avoid shoving such domain specific knowledge into the registration step for the calibration cube for the x-ray system, which, being quite a precisely manufactured cube, is rather symmetric. I had thought I had enough information available from the views to get around this, and solve the problem fairly elegantly, but I spent the later half of last week and most of this morning failing to make the idea work. The answer obtained looked almost reasonable, but had a 5 cm offset, and a rather high error.

I thus resorted to a heavy-handed optimisation approach, using the domain specific information to ensure the minimum was near the correct place.

This did not work. Given the fairly specific constraints I had placed on the problem, not working was a very surprising result.

Much digging later, I discovered a sign error in the input data I had created to describe the cube last week, which meant I was trying to register the cube a collection of fairly widely spaced separated planes, and getting odd results out.

While I now have a correct solution, I will now need to revisit my earlier idea, and see if it works better with the correct data. Since I spend considerable time checking the data last week, and had convinced myself that it was actually correct, I'm currently rather annoyed with the universe [1].

[1] Because it's clearly not my fault, after all.