« first day (789 days earlier)      last day (1612 days later) » 

00:06
FINALLY
00:45
@IvoFlipse you get one?
 
5 hours later…
05:32
hey @nhinkle any other bugs you find in MetroSE?
or suggestions? I'm currently working on this now
@KronoS I haven't had a chance to look at it
sorry
that's fine.
just curious
@TomWijsman I would love to get your input as well on this
thanks for asking!
05:35
@KronoS Testing MetroSE? I only have Gentoo Linux at my disposal. :D
@TomWijsman well you're lame :P
@KronoS Perhaps I should file a feature request at wine for them to support Metro.
Lol... why not just dual boot?
Because I can play Diablo III, StarCraft II and a ton of other games? :)
you can't on Win8?
05:37
But, I don't want Windows 8.
lol whatever floats your boat
My last parts for my clock are at the Post Office... I missed their delivery today :(
Yeah, I totally converted over the vacation. :D
 
3 hours later…
08:37
@KronoS No I finally managed to upgrade my phone to Android 4.2
The drivers didn't work automatically under Windows 8
@NathanWheeler I hate it when that happened. When they delivered my screen, they were at the door and told me I had to pay taxes in cash...
 
4 hours later…
12:57
@TomWijsman you busy?
No, here.
Any experience with tracking objects in images? :P
I have several algorithms to track paws, but none of them work perfectly
I have a method that slices and dices up the plate, based on where there are nonzero pixels, which groups anything that has overlapping bounding boxes. Its very fast (in C++ at least) and robust, but a bit too sloppy
I have a version that clusters contours, by first tracking contours in adjacent frames if they have overlap. Then it clusters them if they have a certain amount of overlap over time, so it doesn't overlap contacts that are close, but don't touch each other. But if fails (obviously) when they do touch each other
Then I have a connected components tracking, which is more reliable at contours that are connected (by definition), but obviously doesn't merge parts of the paw that don't make contact EVER, like toes in large dogs. And it has the same downside of not merging if two contacts touch
I tried remedying this, by applying erosion or thresholding to effectively remove/ignore the pixels where two paws touch each other, but it has side effects that are a bit nasty
@TomWijsman So I'm wondering if you have any suggestions/comments :P
The above image is an intensity plot of the pixel count over the entire duration of the paw. So in how many frames was each pixel activated by the paw during the entire stance phase
As you can see, if two contacts are merged incorrectly, they have a very different distribution, because of the overlap in that area
@IvoFlipse Nope. :(
@IvoFlipse For part of the image, it's somewhat like "fitting a circle". Although the back of the paw isn't really a circle though.
Once you find such a circle you could subtract it from the image.
Perhaps it can be generalized for the back of the paw to look for ellipses instead.
Athough then again, they're not really elipse shaped either. :D
Or you'd have to tell the code that it's fine that a few % in the ellipsis can be blue.
13:21
I fear that would fail for small dogs like these (that's raw pixels)
@TomWijsman Also note that the shape changes over time
Perhaps a subplot or gif would have been nicer (I should learn how to make gifs with Python!)
Also, they can overlap in almost exactly the same spot, so checking if it falls outside of some fitted shape, based on for example the maximal surface area, wouldn't be reliable
What does change (significantly) is the amount of pixels that are activated over time
Here you can see that regular contacts are unimodal (and shorter), whereas merged contacts are bimodal
13:39
@IvoFlipse Use a Neural Network that maps all the pixels to some locations, then :P
@TomWijsman So what function would it learn?
I'm currently doing the neural networks course on Coursera, really interesting, but I have no idea what it should learn to help detect paws
You tell whether its guesses are right or wrong. :P
I'm planning on using one to classify them (left vs right etc) though
@TomWijsman Hehe, well I could consider something like that (the guessing part)
I think it would attempt to give the x,y locations of the contacts.
Find the rough location of the paws using a naive robust method, sample the distribution to see if it looks normal. If it does, great, we can stop, if not, then within that slice try and find separate contacts
13:42
Also, you should try rotating the biggest contact to the bottom. That might simplify the problem slightly.
Rotate?
So the paw faces upwards.
Then detect points, then rotate back.
But how would that simplify things? Its just a random visualization
The biggest contact always being in the bottom.
And what if its rotated?
Also, this code is also supposed to work for humans (hopefully without too much fiddling)
What sucks is that I'm trying to figure out lots of things without any pre-existing information. I don't know the weight to expect, the expected size of the object or the speed at which they travel
Obviously I do know them now, but I can't really trust that the software in the future would have all that (correct) information too
 
8 hours later…
21:28
@IvoFlipse @nhinkle I've updated my MetroSE. If you get the chance, please install and give back feedback. Note: versions are now in the 0.0.0.x range
 
2 hours later…
23:32
@IvoFlipse if you have multiple algorithms but none of them work perfectly, try running all of them (serially or in parallel) and compare the results. You could write some sort of weighted average that takes into account all of the results and comes up with an overall result.This will be more accurate in the end than any individual algorithm. In cases where more than once algorithm "agrees" with one another, you have a high degree of certainty.
23:54
you could even run the different algorithms on some "test" data and determine the appropriate coefficients for the results (but this probably doesn't make sense) :D

« first day (789 days earlier)      last day (1612 days later) »