Да, используя деконволюцию, вы можете инвертировать любую линейную карту из гипотетического резкого изображения в (не гипотетически бесшумное) нерезкое изображение. Фактическое изображение, которое вы имеете, - это не просто нечеткое изображение, вызванное дифракцией, оно также содержит шум, который ограничивает эффективность деконволюции.
В общем, проблему легко описать. Точка в изображаемой сцене должна воздействовать только на один пиксель, но на нерезком изображении это теперь выглядит как структура пикселей. Этот шаблон (описанный значениями серого в пикселях) называется «функцией разброса точек». Функция рассеяния точки в случае дифракции различна для каждой длины волны света. Это означает, что функция разброса точек будет отличаться в каждом цветовом канале, поэтому вы должны обрабатывать их отдельно.
Инвертирование нерезкости может быть сделано именно там, где это не для шума. Чтобы понять это, рассмотрим, каков эффект функции разброса точек. На нерезком изображении соседние пиксели на четком изображении влияют на один пиксель с весами, заданными значением функции разброса точек. Обычно функция разброса точек довольно быстро падает в зависимости от расстояния, поэтому очень далекие пиксели вносят небольшой вклад. Математически вы можете записать значение серого для нерезкого изображения в некоторой точке x g (x) как:
g (x) = сумма по y h (x-y) p (y)
, где функция h дает значения серого для четкого изображения, p - функция разброса точек. Теперь, если мы возьмем преобразование Фурье с обеих сторон, то этот так называемый продукт свертки станет обычным продуктом, поэтому рецепт для нахождения четкого изображения - взять преобразование Фурье изображения, разделенное на преобразование Фурье точечного разброса функции, а затем принять обратное преобразование Фурье.
Шум на нерезком изображении помешает вам выполнить точную деконволюцию. Преобразование Фурье функции рассеяния точки будет стремиться к нулю для больших волновых векторов, что означает, что вы собираетесь разделить преобразование Фурье нерезкого изображения на небольшое число. Поскольку белый шум имеет равномерный спектр, это означает, что вы собираетесь значительно усилить шум, присутствующий на больших волновых векторах. Были разработаны алгоритмы деконволюции, которые решают эту проблему, они включают в себя подавление компонентов высокого Фурье с использованием различных средств.
На практике лучший способ сделать это - точно определить функцию разброса точек. Вы можете, например, искать точечный источник в вашем изображении. Затем, работая в линейном цветовом пространстве, вы разделяете изображение на три цветовых канала, извлекаете точечные источники в каждом канале в качестве функции разброса точек, запускаете алгоритм деконволюции, а затем объединяете цветовые каналы и преобразуете обратно в sRGB.
Многие алгоритмы деконволюции работают с 32-битными изображениями, деконволюционные изображения могут содержать точки, яркость которых намного больше, чем обычное максимальное 8 или 16-битное значение. Вы должны обрезать их до максимального значения, соответствующего битовой глубине изображения, прежде чем преобразовать обратно в 16 или 8 бит (это может быть сделано автоматически при обратном преобразовании, но некоторые программы могут сделать это путем изменения масштаба, делая изображение темным).