Для начала приведу немного сведений "из букваря" для введения в тему...Функция
- замыленное изображение (яркость какого-либо из RGB каналов) получаемое нами из фотоаппарата (из 48 битного TIFF файла). Функция
- истинное изображение, то которое без замыленности, она нам не известна. В линейном случае замыленное изображение получается из истинного изображения действием на него некоторого линейного интегрального оператора с ядром
- функцией конволюции:
Мы хотим избавится от замыленности. Для этого предполагаем существование обратного оператора с ядром
- функцией деконволюции
Тогда истинное изображение можно получить подействовав оператором деконволюции на известное нам замыленное изображение:
Настоятельно рекомендую взглянуть на примеры из справочной системы программы Mathematica:
http://reference.wolfram.com/mathematic ... volve.htmlЗамыленность бывает разная, в общем случае оператор конволюции
не то что не известен, а вообще может не иметь обратного.
На этом сведения из букваря заканчиваются и начинается моя самодеятельность...Надо придумать какую-то физическую модель из которой можно было бы вывести ядро оператора замыливания
. Понятно, что функция
должна зависеть только от расстояния между пикселями
. Я было предположил, что она должна быть Гауссовой
. Оказалось, что нет, Гауссова не годится. Я уже совсем собирался бросить с этим возиться, но решил ещё проверить просто экспоненту:
И это, внезапно, сработало.
В голову приходит следующая физическая картина мира. От точечного источника, в идеальном случае должного отобразится в 1 центральный пиксель, в "замыленном случае" получается некоторое пятно по следующему закону. В центральный пиксель попадает некоторое количество света -
фотонов. В соседние пиксели находящиеся от него на расстоянии 1 попадает ещё по
фотонов (при
это ж почти треть). В пиксели находящиеся на расстоянии 2 попадает
фотонов, на расстоянии 3 попадает
фотонов и так далее.
Так вот, чего-то мне, почему-то, не очень сильно вериться в описанную картину мира. Возможно никакой физики тут нет, а просто производитель моего фотоаппарата (Nikon D7100) для каких-то целей использует неотключаемый шумодав или антиалиасный фильтр, который как раз и работает по формуле
и именно его я и задеконволюшил...
Кто что думает по этому поводу?
За функцией
скрывается какая-то физика или же это просто разумная деятельность производителя фотоаппарата?
ПримерОригинальное изображение 100% кроп без обработки. Nikon D7100, 18-55 VR, стиль нейтральный (в нём все параметры выставил в ноль), шумодав отключен, ADL отключен, вобщем всё отключено. С помощью ViewNX2 превратил равку в tif (16 бит на цвет), затем tif подверг воздействию оператора обратного оператору с ядром
с
, при обращении оператора ограничился радиусом в 4 пикселя (матрица
). Отнормировал получившееся изображение так чтобы средняя яркость исходного и конечного изображения сохранилась, при этом в пересвет уехало 1.06% пикселей.
Результат обработки: