Подтвердить что ты не робот

Лапласиан Гаусса: как он работает? (OpenCV)

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

4b9b3361

Ответ 1

Лапласиан гауссова является фильтром обнаружения края; выход равен 0 в постоянных ( "фоновых" ) областях, а положительный или отрицательный - там, где есть контраст. Причина, по которой вы видите черный в фоновых областях, заключается в том, что OpenCV просто дает вам исходный вывод; вид изображения, который вы описываете (серый на фоне, с положительными/отрицательными краями в черном или белом) создается после масштабирования вывода в соответствующий диапазон.

Диапазон вывода варьируется в зависимости от используемого ядра, но он всегда будет соответствовать диапазону (-max, +max) около нуля, где max - максимальная выходная величина ядра фильтра; для получения "типичного" выходного изображения, которое необходимо масштабировать, в диапазон (0, 1) (или (0, 255), если вы используете 8-битные изображения).

Вы можете выполнить необходимое масштабирование с помощью функции cvScale, с 1/(2*max) в качестве коэффициента масштабирования и сдвига 0.5. (Или для 8-битных изображений используйте шкалу 255/(2*max) и 128 shift.)