Оптимальная Сигма для гауссовой фильтрации изображения?

при применении гауссова размытия к изображению обычно Сигма является параметром (примеры включают Matlab и ImageJ).

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

2 ответов


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

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

edit: более подробное объяснение - Сигма в основном контролирует, насколько "жирной" будет ваша функция ядра; более высокие значения Сигмы размываются по более широкому радиусу. Поскольку вы работаете с изображениями, большая Сигма также заставляет вас использовать большую матрицу ядра для захвата достаточной энергии функции. Для вашего конкретного случая вы хотите, чтобы ваше ядро было достаточно большим, чтобы покрыть большую часть объекта (чтобы оно было достаточно размытым), но не настолько большим, чтобы оно начинало перекрывать несколько соседних объектов одновременно - так что на самом деле объект отделения также является фактором, наряду с размером.

поскольку вы упомянули MATLAB - вы можете взглянуть на различные гауссовы ядра с разными параметрами, используя , где hsize - размер ядра и sigma, ну, Сигма. Попробуйте изменить параметры, чтобы увидеть, как он меняется.


вы должны найти min / max функции G такой, что G (X, sigma), где X-набор ваших наблюдений (в вашем случае , ваши значения оттенков серого изображения), эта функция может быть чем угодно, что поддерживает "порядок" интенсивностей iamge, например, это можно сделать с 1-й производной изображения (как G),

fil = fspecial('sobel');
im = imfilter(I,fil);
imagesc(im);
colormap = gray;

это дает вам результат первой производной изображения, Теперь вы хотите найти max sigma by максимизация G( X, sigma), это означает, что вы пытаетесь несколько сигм (скажем, в порядке возрастания), пока вы не достигнете Сигмы, которая делает G максимальным. Это также можно сделать со второй производной.