Удалить градиент изображения без сравнения

В настоящее время я с большим трудом думаю о хорошем методе удаления градиента из полученного изображения.

Изображение - это фотография, сделанная камерой микроскопа, которая имеет светлый блик посередине. Изображение имеет шаблон, который проходит по всему изображению. Однако я должен удалить световой блик на изображении, создаваемом светом камеры.

К сожалению, из-за природы камеры невозможно сделать снимок на черном фоне со светом, чтобы найти распределение градиента. У меня также нет сравнительного изображения без градиента. (обратите внимание - расположение светового блика всегда будет постоянным при съемке)

В более простых выражениях это похоже на фотографию со вспышкой, но я хочу избавиться от вспышки. Единственная проблема в том, что у меня нет способа получить изображение без вспышки, чтобы сравнить или даже получить черное изображение с помощью только вспышки на нем.

Моя текущая мысль - это обнаружение краев поведения и получение выборок в определенных местах вдали от краев (из-за разницы цветов) и использование этого для оценки распределения градиента, поскольку эти области должны иметь относительно одинаковые цвета. Однако мне было интересно, есть ли более простой и лучший способ сделать это.

При необходимости я отправлю пример изображения позже.

В настоящий момент у меня есть преимущество в решении этого вопроса в С++ с использованием opencv, если это упростит.

заранее заблаговременно за любые возможные идеи для этой проблемы. Если есть другая ссылка, учебник или сообщение, которое может решить мою проблему, я бы очень благодарен за сообщение.

enter image description here

как вы можете сказать, есть свет, который застрял на img, как вы можете сказать с белого пятна. и верхнее светлое, чем основание из-за света, цвет внутри овала на самом деле отличается, когда изображение берется в цвете. Однако цвет между коробкой и овалом должен быть последовательным. Моя первоначальная идея состояла в том, чтобы, возможно, выбрать только те области, которые каким-то образом и построить профиль, который я могу использовать, чтобы удалить свет, но я не уверен, насколько это было бы эффективно или если есть лучший способ.

EDIT:

Ну, я попробовал предложение Роджера, и результаты были превосходно хороши. Используя 110 гауссовский размытие ядра, чтобы найти освещение и провести CLAHE поверх этого. (оба сделаны в opencv)

enter image description here Однако мой коллега сказал мне, что изображение выглядит неравномерно и указывает, что вокруг области, где раньше свет был немного ярче. Он предложил попробовать выборочное гауссовское размытие, где области над определенными пороговыми значениями пикселей не размыты, а остальная часть изображения размыта.

Есть ли у кого-нибудь мнения относительно этого и, возможно, ссылки, учебника или примера того, как это делается? Большинство вещей, которые я нахожу, имеют тенденцию быть выборочным размытием для таких программ, как photoshop и gimp

EDIT2:

enter image description here

трудно сказать просто глазами, но я считаю, что достиг довольно близкой униформизации, используя простой алгоритм установки плоскости. ((- A * x - B * y)/C) (x, y, z), где z - значение пикселя. Я думаю, что это можно улучшить, используя, возможно, синусоидальную функцию? Я не уверен. Но я доволен результатами. Большое спасибо Роджеру за отличные идеи.

Я считаю, что использование кучи изображений и получение avg было бы еще одним хорошим методом (предложенным roger), но Unofruntely я не смог реализовать это, так как я не был снабжен различными изображениями, и машина находится под модификацией, поэтому я не смог его использовать.

Ответ 1

Ранее я проделал некоторую работу в этой области и обнаружил, что большое гауссовское ядро ​​размытия может обеспечить разумное приближение к фоновому освещению. Я попытаюсь получить что-то, работающее над вашим образцом, но, тем временем, вот пример вашего изображения после размытия Гаусса с радиусом 50 пикселей, что может помочь вам решить, стоит ли прогрессировать.

Blurred

ОБНОВЛЕНИЕ

Просто играя с этим изображением, вы можете получить разумное улучшение с помощью адаптивного выравнивания гистограммы (я использовал CLAHE) - см. сравнение ниже - любой использовать?

CLAHE

Я буду обновлять этот ответ более подробно по мере продвижения.

Ответ 2

Я хотел бы указать вам на эту статью: http://www.cs.berkeley.edu/~ravir/dirtylens.pdf, но, на мой взгляд, без какого-либо калибровочного/сравнительного изображения ариори, трудно раздобыть земную истину от расклешенного изображения.

Однако, если вы пытаетесь просто представить изображение за вычетом бликов объектива, не считая фактических научных данных за факельной частью, тогда вы переключаетесь в область изображения. Криминальный алгоритм, описанный в этой статье: http://research.microsoft.com/pubs/67276/criminisi_tip2004.pdf и объяснил/упрощен в этих двух ссылках: http://cs.brown.edu/courses/csci1950-g/results/final/eboswort/ http://www.cc.gatech.edu/~sooraj/inpainting/, сделает очень хорошую работу по восстановлению информации о текстуре в разгоревшихся регионах, (Если вы действительно хотели бы воспользоваться этим подходом, упомяните об этом. Для этого может быть предоставлена ​​более полная помощь).

Однако, учитывая тот факт, что мы имеем дело с микроскопическими данными, я сомневаюсь, что вы хотите потерять научные данные, содержащиеся в определенной области изображения. В этом случае я действительно думаю, что вам нужно найти обходной путь, чтобы определить факельную модель источника вспышки/источника w.r.t используемого объектива.

Я надеюсь, что кто-то еще сможет пролить свет на это.