dex (as in 'index') was borne out of a desire to have a 'digital twin' for my physical, paper
hardcopy library, specifically the index pages. I often found myself leafing through multiple books'
index pages at once, which felt outdated in the era of web search.
This was among my first image processing projects, and was quite informative as to what would and wouldn't work, and where the limitations lay in the state of the art.
The project layout consisted of 'shelves', and (in hindsight a poor design) the code processing individual books resided alongside the images of books [not synced to the code repo to respect copyright].
I got overly involved in processing Gilbert Strang's 2019 book "Linear Algebra and Learning from Data" (here), as a proof of concept that may work for the rest of the books, but the result was not robust enough to extend.
Since there were no 'keypoints' (ways to identify the bounding box of a page), I resorted to analysing the scanlines down the pages to identify the page boundary myself by taking the FFT of the Canny edge map. I suspect this was far from the best way to achieve it, but it worked fairly well, albeit likely was unacceptably computationally expensive.
- Here was one of the plots which indicated something like a cumulative plot of intensity across the scanlines [down the page]:
- Here you can see output images from
I fully intend to revisit this project to hopefully greater success, having gained more experience
of image processing libraries like
scikit-image, and perhaps using page dewarping software,
but as it stood it was a learning experience and a well-intentioned, interesting task.