I think the algorithm is probably incorrect. A number starting with 0 should be treated lexically not numerically. Otherwise you have a situation where img_1_01.jpg and img_01_1.jpg does not have a complete ordering.
> Otherwise you have a situation where img_1_01.jpg and img_01_1.jpg does not have a complete ordering.
(Good) "natural sort" implementations generally have ways of handling ties like this. It's similar to the problem of case-insensitive sort over case sensitive sets.
The issue here is that one camera appends milliseconds to the seconds without a separator, and the other uses a separator.
So of course the ones that include milliseconds look like bigger numbers and get sorted last.
Leading zeros aren't the issue here.