Considere estas dos imágenes en escala de grises:
La primera imagen muestra un patrón de río serpenteante. La segunda imagen muestra ruido aleatorio.
Estoy buscando una medida estadística que pueda usar para determinar si es probable que una imagen muestre un patrón de río.
La imagen del río tiene dos áreas: río = valor alto y en todas partes = valor bajo.
El resultado es que el histograma es bimodal:
Por lo tanto, una imagen con un patrón de río debe tener una gran varianza.
Sin embargo, también lo hace la imagen aleatoria de arriba:
River_var = 0.0269, Random_var = 0.0310
Por otro lado, la imagen aleatoria tiene una baja continuidad espacial, mientras que la imagen del río tiene una alta continuidad espacial, que se muestra claramente en el variograma experimental:
De la misma manera que la varianza "resume" el histograma en un número, estoy buscando una medida de continuidad espacial que "resuma" el variograma experimental.
Quiero que esta medida "castigue" la semivariancia alta en los pequeños rezagos más duros que en los grandes rezagos, así que se me ocurrió:
Si solo sumo de lag = 1 a 15 obtengo:
River_svar = 0.0228, Random_svar = 0.0488
Creo que una imagen de río debería tener una varianza alta, pero una varianza espacial baja, así que presento una relación de varianza:
El resultado es:
River_ratio = 1.1816, Random_ratio = 0.6337
Mi idea es usar esta relación como criterio de decisión para si una imagen es una imagen de río o no; relación alta (p. ej.> 1) = río.
¿Alguna idea sobre cómo puedo mejorar las cosas?
Gracias de antemano por cualquier respuesta!
EDITAR: Siguiendo los consejos de Whuber y Gschneider, aquí están los Morans I de las dos imágenes calculadas con una matriz de peso de distancia inversa de 15x15 utilizando la función Matlab de Felix Hebeler :
Necesito resumir los resultados en un número para cada imagen. Según Wikipedia: "Los valores van desde -1 (que indica la dispersión perfecta) hasta +1 (correlación perfecta). Un valor cero indica un patrón espacial aleatorio". Si sumo el cuadrado de Morans I para todos los píxeles que obtengo:
River_sumSqM = 654.9283, Random_sumSqM = 50.0785
Hay una gran diferencia aquí, así que Morans parece ser una muy buena medida de continuidad espacial :-).
Y aquí hay un histograma de este valor para 20 000 permutaciones de la imagen del río:
Claramente, el valor River_sumSqM (654.9283) es poco probable y, por lo tanto, la imagen de River no es espacialmente aleatoria.
Respuestas:
Estaba pensando que un desenfoque gaussiano actúa como un filtro de paso bajo que deja atrás la estructura a gran escala y elimina los componentes de alto número de onda.
También puede observar la escala de wavelets necesarias para generar la imagen. Si toda la información está viviendo en las olas pequeñas, entonces probablemente no sea el río.
Puede considerar algún tipo de autocorrelación de una línea del río consigo misma. Entonces, si tomó una fila de píxeles del río, incluso con ruido, y encontró la función de correlación cruzada con la siguiente fila, entonces ambos podrían encontrar la ubicación y el valor del pico. Este valor será mucho más alto de lo que obtendrás con el ruido aleatorio. Una columna de píxeles no producirá mucha señal a menos que elija algo de la región donde está el río.
http://en.wikipedia.org/wiki/Gaussian_blur
http://en.wikipedia.org/wiki/Cross-correlation
fuente
Esto es un poco tarde, pero no puedo resistir una sugerencia y una observación.
Primero, creo que un enfoque más de "procesamiento de imágenes" puede ser más adecuado que el análisis de histograma / variograma. Diría que la sugerencia de "suavizado" de EngrStudent está en el camino correcto, pero la parte de "desenfoque" es contraproducente. Lo que se requiere es un suavizador de preservación de bordes , como un filtro Bilateral o un filtro mediano . Estos son más sofisticados que los filtros de media móvil, ya que son necesariamente no lineales .
Aquí hay una demostración de lo que quiero decir. A continuación se muestran dos imágenes que se aproximan a sus dos escenarios, junto con sus histogramas. (Las imágenes son cada una de 100 por 100, con intensidades normalizadas).
Para cada una de estas imágenes, aplico un filtro mediano de 5 por 5 15 veces *, que suaviza los patrones y conserva los bordes . Los resultados se muestran a continuación.
(* El uso de un filtro más grande aún mantendría el fuerte contraste en los bordes, pero suavizaría su posición).
Observe cómo la imagen del "río" todavía tiene un histograma bimodal, pero ahora está bien separada en 2 componentes *. Mientras tanto, la imagen de "ruido blanco" todavía tiene un histograma unimodal de un solo componente. (* Fácilmente trillado, por ejemplo, el método de Otsu , para hacer una máscara y finalizar la segmentación).
Segundo, ¡tu imagen ciertamente no es un "río"! Aparte del hecho de que es demasiado anisotrópico (estirado en la dirección "x"), en la medida en que los ríos serpenteantes pueden describirse mediante una ecuación simple, su geometría es en realidad mucho más cerca de un sine- generado curva que a un sine curva (por ejemplo, ver aquí o aquí ). Para amplitudes bajas, esta es aproximadamente una curva sinusoidal, pero para amplitudes más altas los bucles se "vuelcan"x ≠ f[ y] ), que en la naturaleza eventualmente conduce al corte .
(Perdón por la queja ... mi formación fue como geomorfólogo, originalmente)
fuente
Una sugerencia que puede ser una ganancia rápida (o puede que no funcione en absoluto, pero puede eliminarse fácilmente): ¿ha intentado observar la relación entre la media y la varianza de los histogramas de intensidad de imagen?
Toma la imagen de ruido aleatorio. Suponiendo que se genera por fotones emitidos aleatoriamente (o similares) que golpean una cámara, y cada píxel es igualmente probable que se golpee, y que tenga las lecturas sin procesar (es decir, los valores no se reescalan o se reescalan de una manera conocida que puede deshacer) , entonces el número de lecturas en cada píxel debe ser distribuido poisson; estás contando el número de eventos (fotones que golpean un píxel) que ocurren en un período de tiempo fijo (tiempo de exposición) varias veces (en todos los píxeles).
En el caso de que haya un río de dos valores de intensidad diferentes, tiene una mezcla de dos distribuciones de Poisson.
Una forma realmente rápida de probar una imagen podría ser observar la relación entre la media y la varianza de las intensidades. Para una distribución de Poisson, la media será aproximadamente igual a la varianza. Para una mezcla de dos distribuciones de Poisson, la varianza será mayor que la media. Terminará necesitando probar la relación de los dos contra un umbral preestablecido.
Es muy rudimentario. Pero si funciona, podrá calcular las estadísticas suficientes necesarias con solo un paso sobre cada píxel en su imagen :)
fuente