I came up with an algorithm to do this years ago, and still have the theoretical documentation, though I never coded it. By today's standards it is perhaps no longer too numerically intensive. It probably will struggle with percussion instruments like piano which have a very 3D quality, but should in principle work well with wind and stringed instruments, and it is designed to sort out the instruments, as to write a full orchestral score. The idea is to import something like a .wav file, and export a midi file, which can then go into existing scoring software, or be used for re-sequencing.
Not sure if this is helpful, since your interest appears to be piano, and you appear to be looking for software, not just a conceptual algorithm. However if you are still interested, you can contact me through Fracturelab.com (my business, which has nothing to to with music, unfortunately), and I can dig it up for you.
PS: My interest was also piano, since I compose by ear, and wanted to play from an acoustic instrument to a midi file. As my study of the problem revealed that it probably wouldn't work for piano, it moved to the back burner. I guess it could be used to resurrect old symphonic recordings where the score has been lost.