Image artifacts identification/removal

Joel Sjögren

Photo Editor
Jupyter
OpenCV

Some large number of images had been scanned with high quality - except for visible gray streaks running through the images. My task was to devise an algorithm that would identify where exactly these streaks were located, so that they could be selectively removed (using inpainting or just simply selective blurring).

I analyzed the problem, and tried several methods for solving the constituent parts of the problem, until I found a good solution. Then I translated it fully onto the GPU using OpenCV's GPU-accelerated bindings for Python. I also learned that pre-allocating certain crucial segments of memory on the GPU made for a 2.5x speedup in those parts of the program.

The code built upon an algorithm for automatic image rotation that I had come up with prior to this project. A notebook with that "autorotation" algorithm is shown below.

This is the review given by my client:

“Splendid job! Joel had a great solution in mind before starting. They defined what the final output would look like and continually iterated on it making the result better each day. They optimized the code with little to no prompting and (in my mind) went above and beyond for the project. Joel is talented and results-oriented; I’d be happy to work together again in the future.”

Partner With Joel
View Services

More Projects by Joel