These are some really interesting questions. I'm no expert but here's my 2c worth.
Re. c) Pelle posted a video of an app that does what you're after (video is here
and the thread is here
); I don't have experience with the quality (though it would be easy enough to do a quick test with hand correction and see how it looks). The software looks like it does marker detection on the image and uses the marker coordinates to split and deksytone the page. (There are lots of libs that do marker detction; here's a video
example in OpenCV.) It would be great to have this sort of software in the community (if it isn't already).
Re. d) the keystone correction I do in ScanManager is quite simple -- it's just a perspective warp from one quad to another. OpenCV takes care of finding the chessboard, I just tell it to transform the points on the chessboard to new points that lie on a nice rectangle of the right proportions. It will then calculate a 3x3 transformation matrix to do that warp (see getPerspectiveTransform
). If you wanted to extract rotation/translation components you could do a matrix decomposition on the transformation matrix.