Limiar adaptativo da imagem borrada

Eu tenho uma imagem bastante desfocada de 432x432 de um quebra-cabeça Sudoku que não se adapta bem a limiar (pegue a média em um tamanho de bloco de 5x5 pixels e subtraia 2):

Como você pode ver, os dígitos estão levemente distorcidos, há muitas rupturas neles e alguns 5s se fundiram em 6s e 6s em 8s. Além disso, há uma tonelada de barulho. Para consertar o ruído, tenho que tornar a imagem ainda mais borrada usando um desfoque gaussiano. No entanto, mesmo um kernel Gaussiano razoavelmente grande e o blockSize com limite adaptativo (21x21, subtrair 2) não conseguem remover todas as quebras e fundem ainda mais os dígitos:

Eu também tentei dilatar a imagem após o limiar, o que tem um efeito semelhante ao aumento do tamanho do bloco; eafiando a imagem, que não faz muito de um jeito ou de outro. O que mais eu deveria tentar?

questionAnswers(3)

yourAnswerToTheQuestion