2010-06-30 58 views
11

Al aplicar un desenfoque gaussiano a una imagen, normalmente el sigma es un parámetro (los ejemplos incluyen Matlab e ImageJ).sigma óptimo para el filtrado gaussiano de una imagen?

¿Cómo sabe uno lo que debe ser sigma? ¿Hay una forma matemática para descubrir una sigma óptima? En mi caso, tengo algunos objetos en las imágenes que son brillantes en comparación con el fondo, y necesito encontrarlos computacionalmente. Voy a aplicar un filtro gaussiano para hacer que el centro de estos objetos sea aún más brillante, lo que con suerte facilitará su búsqueda. ¿Cómo puedo determinar la sigma óptima para esto?

Respuesta

15

No hay una fórmula para determinar por usted; la sigma óptima dependerá de los factores de imagen, principalmente la resolución de la imagen y el tamaño de los objetos que contiene (en píxeles).

Además, tenga en cuenta que los filtros Gaussianos en realidad no están destinados a iluminar nada; Es posible que desee examinar las técnicas de maximización del contraste; suena como algo tan simple como el estiramiento del histograma que podría funcionar bien para usted.

edición: Más explicación: sigma básicamente controla cómo va a ser la función de "grasa" de su kernel; los valores sigma más altos se difuminan en un radio más amplio. Como trabajas con imágenes, sigma más grande también te obliga a utilizar una matriz kernel más grande para capturar suficiente energía de la función. Para su caso específico, usted quiere que su núcleo sea lo suficientemente grande como para cubrir la mayor parte del objeto (para que sea lo suficientemente borrosa), pero no tan grande que comienza la superposición de varios objetos vecinos a la vez - lo que en realidad, el objeto separación es también un factor junto con el tamaño.

ya que ha mencionado MATLAB - se puede echar un vistazo a varios núcleos gaussiana con diferentes parámetros utilizando la función fspecial('gaussian', hsize, sigma), donde hsize es el tamaño del núcleo y sigma es, así, sigma. Intenta variar los parámetros para ver cómo cambia.

+0

@tzaman: ¿se puede ampliar sobre cómo el sigma óptima depende de la resolución de la imagen y el tamaño de mis objetos en píxeles? o apúntame en la dirección de las lecturas si puedes. eso es exactamente lo que estoy buscando. también, me equivoqué sobre el brillo; Quise decir que quiero que el centro de mis objetos sea relativamente brillante para todo lo demás. – sepiroth

+0

@hatorade: he expandido mi respuesta; Espero que aclare las cosas. – tzaman

+0

@tzaman: en un sitio web (http://imaging.mrc-cbu.cam.ac.uk/imaging/PrinciplesSmoothing) He leído que la anchura a media altura medida (FWHM) tiene una ecuación. ¿Este concepto es válido para el kernel? Como en, en ImageJ o Matlab, ¿el "FWHM" del núcleo se relaciona con sigma de la misma manera? La razón por la que pregunto es porque usualmente los parámetros son las dimensiones del kernel, y sigma, pero sigo leyendo que sigma afecta el tamaño del kernel ... – sepiroth

0

Tiene que encontrar un min/max de una función G tal que G (X, sigma) donde X es un conjunto de observaciones (en su caso, sus valores de escala de grises), Esta función puede ser cualquier cosa el "orden" de las intensidades de la iamge, por ejemplo, esto se puede hacer con la primera derivada de la imagen (como G),

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

esto le da el resultado de la primera derivada de una imagen, ahora quieres encontrar max sigma por maximizando G (X, sigma), eso significa que estás intentando algunos sigmas (digamos, en orden creciente) hasta que alcances un sigma que hace que G sea máximo. Esto también se puede hacer con la segunda derivada.

Cuestiones relacionadas