Sobre a parte do processamento digital, você deve evitar o uso de métodos de nitidez de uso geral, como máscara de nitidez, pois esses métodos aumentam apenas o contraste local - tornando os detalhes mais visíveis, mas você não recupera os detalhes que ficaram invisíveis. É melhor usar métodos baseados na reversão real do desfoque devido ao foco imperfeito, e para isso você precisa conhecer a função de dispersão de pontos (portanto, na parte da imagem que não está em foco, um único ponto aparecerá para ser um disco pequeno com algum perfil de brilho, essa é a chamada função de dispersão de pontos).
Você pode calcular a função de dispersão pontual ampliando as áreas da imagem com alto contraste. Se você souber que existe uma borda nítida através da qual o brilho muda em alguma quantidade, é possível calcular facilmente qual é a função de dispersão pontual que produziria o perfil que você vê na imagem.
Uma aproximação grosseira obtém-se, assumindo que a função de dispersão é um disco uniforme de raio R . Se você aumentar o zoom em alguma borda nítida, a curvatura se tornará muito pequena na imagem ampliada para que você possa assumir que possui uma linha reta; de um lado, o brilho é v1 no outro lado da linha, será v2 . O brilho a uma distância d da linha v (d) na imagem será uma função suave devido à nitidez que tende a v1 de um lado e v2 do outro lado. Próximo de d = 0, a função g (d) = [v (d) - v1] / [2 (v2 - v1)] se comporta da seguinte maneira:
g(d) = 1/4 - d/(pi R) + d^3/(6 pi R^3) +...
Portanto, fazendo um ajuste linear da função g (d) - 1/4 em termos das coordenadas xey da imagem perto da linha, você obterá um resultado da forma:
g(x,y) = A + b x + c y
e segue-se que:
1/(pi R) = sqrt[b^2 + c^2]
Portanto, a função de dispersão pontual pode ser calculada com algum esforço da imagem, se você não é muito ruim em matemática.
Então, se você computou a função de dispersão pontual, inverter o desfoque é um pedaço de bolo usando algoritmos como deconvolução Wiener ou deconvolução Richardson-Lucy . Esses algoritmos geralmente são incluídos no software de processamento de imagem, mas você deve executá-los usando a função de dispersão de pontos real que se aplica à sua imagem, não algum desfoque gaussiano padrão. Por exemplo, este plugin ImageJ possui vários algoritmos de deconvolução que exigem que você especifique a função de dispersão de pontos. E o ImageJ pode ser obtido aqui .
Devo acrescentar aqui que isso deve ser feito em um espaço de cores linear. Portanto, é necessário transformar primeiro o espaço de cores RGB ou XYZ linear, executar a operação de nitidez e transformar novamente em sRGB.