Я пытаюсь научить свою камеру работать с сканером: я делаю снимки печатного текста, а затем конвертирую их в растровые изображения (а затем в djvu и OCR). Мне нужно вычислить порог, для которого пиксели должны быть белыми, а какие - черными, но меня мешает неравномерное освещение. Например, если пиксели в центре достаточно темные, я, скорее всего, получу кучу черных пикселей по углам.
При относительно простых предположениях я хотел бы компенсировать неравномерное освещение перед установлением порога. Точнее:
Предположим, один или два источника света, возможно, один с постепенным изменением интенсивности света по всей поверхности (окружающий свет), а другой с обратным квадратом (прямой свет).
Предположим, что все белые части бумаги имеют одинаковую отражательную способность / альбедо / что угодно.
Найдите алгоритм для оценки степени освещенности каждого пикселя и, исходя из этого, восстановите отражательную способность каждого пикселя.
По отражательной способности пикселя классифицируйте его как белый или черный
Я понятия не имею, как написать алгоритм для этого. Я не хочу прибегать к подгонке по методу наименьших квадратов, так как я хотел бы как-то игнорировать темные пиксели при оценке освещенности. Я также не знаю, сработает ли алгоритм.
Все полезные советы будут поддержаны!
РЕДАКТИРОВАТЬ: я определенно подумал о том, чтобы разделить изображение на достаточно большие части, чтобы они все еще выглядели как «текст на белом фоне», но достаточно маленькие, чтобы освещение отдельного фрагмента было более или менее равномерным. . Я думаю, что если я затем интерполирую пороги так, чтобы не было разрывов между границами фрагментов изображения, я, вероятно, получу что-то наполовину приличное. Это хорошее предложение, и мне придется попробовать, но оно все еще оставляет мне проблему, где провести границу между белым и черным. Еще мысли?
РЕДАКТИРОВАТЬ: вот несколько дампов экрана из GIMP, показывающих различные гистограммы и «лучшее» пороговое значение (выбранное вручную) для каждой гистограммы. В двух из трех достаточно одного порога для всего изображения. Однако в третьем верхнем левом углу действительно нужен другой порог: