關於數字處理部分,應避免使用諸如銳化蒙版之類的通用銳化方法,因為這些方法只會增加局部對比度-使細節更加可見,但您不會找回變得不可見的細節。最好使用基於由於不完全聚焦而實際反轉模糊的方法,為此,您需要知道點擴散函數(因此,在圖像中未聚焦的部分中,將出現一個點成為具有某些亮度分佈的小磁盤,這就是所謂的點擴散功能)。
您可以通過放大圖像的高對比度區域來計算點擴展功能。如果您知道存在一條銳利的邊緣,亮度在該邊緣上發生了一定程度的變化,則可以輕鬆地計算出點擴散函數,該函數將產生您在圖像中看到的輪廓。
一個大致的近似值為通過假設點擴散函數是半徑 R 的均勻圓盤獲得。如果放大到一些尖銳的邊緣,則放大後的圖片中的曲率會變得很小,因此可以假定您有一條直線,而在另一側的亮度為 v1 行將是 v2 。圖片中與 v(d)線的距離為d的亮度將是平滑函數,這是因為一側的 v1 和 v2的不清晰性。在d = 0附近,函數g(d)= [v(d)-v1] / [2(v2-v1)]的行為如下:
g(d)= 1 / 4-d /(pi R)+ d ^ 3 /(6 pi R ^ 3)+ ...
因此,通過對函數g(d)進行線性擬合-根據在線附近圖片的x和y坐標的1/4,您將獲得以下形式的結果:
g(x,y)= A + bx + cy
,然後得出:
1 /(pi R)= sqrt [b ^ 2 + c ^ 2]
因此,如果您對數學不是很了解,則可以從圖片上稍作努力來計算點擴散函數。
然後,如果您已經計算了點擴散函數,則可以反轉散焦模糊使用 Wiener反捲積或 Richardson–Lucy反捲積等算法可謂小菜一碟。此類算法通常包含在圖像處理軟件中,但是您應使用適用於圖像的實際點擴展功能(而不是某些標準的高斯模糊)來運行它們。例如。 此ImageJ插件具有多種反捲積算法,需要您指定點擴散函數。而且可以在這裡獲得。
在這裡我應該補充一點,這應該在線性色彩空間中完成。因此,您需要先轉換為線性RGB或XYZ顏色空間,在該處進行銳化操作,然後再轉換回sRGB。