Thanks. I suspect that the algorithm you guys have is probably a good solution for the encoding, and the fact that it gets a bit fuzzy at very low pixel count is just the price one pays for having a very applicable encoding algorithm. I noticed that imageJ's encoding outputs the same area and perimiter by the way, but they apply some sort of the correction before outputting circularity. If I get a chance to see what the circularity correction is; if it's not too hard, maybe I can put in a PR for a new descriptor called circularity to circularity_adjusted.