Кто-нибудь знает, как это работает и как это сделать с помощью OpenCV? Лапласиан можно вычислить с помощью OpenCV, но результат не тот, который я ожидал. Я хочу сказать, что изображение будет примерно постоянным контрастом в фоновых областях, но оно черное, а края белые. Есть много шума, даже после гауссового фильтра. Я фильтрую изображение с использованием гауссовского фильтра, а затем применяю лаплас. Я думаю, что то, что я хочу, делается по-другому.
Лапласиан Гаусса: как он работает? (OpenCV)
Ответ 1
Лапласиан гауссова является фильтром обнаружения края; выход равен 0 в постоянных ( "фоновых" ) областях, а положительный или отрицательный - там, где есть контраст. Причина, по которой вы видите черный в фоновых областях, заключается в том, что OpenCV просто дает вам исходный вывод; вид изображения, который вы описываете (серый на фоне, с положительными/отрицательными краями в черном или белом) создается после масштабирования вывода в соответствующий диапазон.
Диапазон вывода варьируется в зависимости от используемого ядра, но он всегда будет соответствовать диапазону (-max, +max)
около нуля, где max
- максимальная выходная величина ядра фильтра; для получения "типичного" выходного изображения, которое необходимо масштабировать, в диапазон (0, 1)
(или (0, 255)
, если вы используете 8-битные изображения).
Вы можете выполнить необходимое масштабирование с помощью функции cvScale
, с 1/(2*max)
в качестве коэффициента масштабирования и сдвига 0.5
. (Или для 8-битных изображений используйте шкалу 255/(2*max)
и 128
shift.)