Estime el centro y el radio de una esfera a partir de puntos en la superficie


9

Si suponemos que nuestros puntos de datos fueron muestreados desde la superficie de una esfera (con cierta perturbación), ¿cómo podemos recuperar el centro de esa esfera?

En mi búsqueda, encontré documentos sobre algo etiquetado como "regresión esférica", pero no parecía que estuviera haciendo lo mismo. Tal vez simplemente no lo entendí.

¿Existe una fórmula directa, similar a la regresión lineal, que encuentre un punto central de la esfera y un radio que minimicen la distancia al cuadrado de un conjunto de puntos de datos desde la superficie de la esfera?


Editar 1:

Podemos suponer que el ruido será 2 o 3 órdenes de magnitud más pequeño que el radio de la esfera y uniformemente esféricamente gaussiano. Sin embargo, las muestras en sí mismas definitivamente no se extraerán uniformemente de la superficie de la esfera, sino que probablemente se agruparán en algunos parches en la superficie, probablemente todos dentro de un hemisferio. Una solución que funciona para datos enR3 está bien, pero una solución general para la dimensionalidad arbitraria también es genial.


Edición 2:

¿Cuáles son las posibilidades de que pueda obtener una respuesta sensata si tuviera que usar la regresión lineal, y=Xβ+ϵ, en el espacio de 7 dimensiones simulando que los componentes al cuadrado son independientes de los otros parámetros:

X=[2x2y2z1111]β=[x0y0z0x02y02z02r2]y=x2+y2+z2

En el mejor de los casos, supongo que mi métrica de error será un poco rara. En el peor de los casos, la solución ni siquiera será consistente
... o eso es una tontería porque con cuatro columnas idénticas, obtenemos una matriz singular cuando intentamos hacer una regresión.


Edición 3:

Entonces, parece que estas son mis opciones:

  1. Optimización numérica no lineal utilizando alguna función de costo: f(x0,y0,z0,r|X)=12i=1n(r(xix0)2+(yiy0)2+(ziz0)2)2
  2. Transformación de Hough: discretiza el espacio plausible o los posibles centros y radios alrededor de los puntos de datos. Cada punto emite un voto para los centros potenciales de los que podría formar parte en cada discretización de radio específico. La mayoría de los votos gana. Esto podría estar bien si hubiera potencialmente un número desconocido de esferas, pero con solo una es una solución desordenada.
  3. Seleccione aleatoriamente (o sistemáticamente) grupos de 4 puntos y calcule analíticamente el centro . Rechace el muestreo si está mal acondicionado (los puntos son casi coplanares). Rechace los valores atípicos y encuentre el centro medio. A partir de eso podemos encontrar el radio medio.

¿Alguien tiene un mejor método?


Observe que las dos formas de su pregunta no son equivalentes: no es necesariamente el caso de que minimizar la suma de cuadrados de distancias desde la superficie proporcione las mejores estimaciones a menos que se haga una suposición sólida sobre la naturaleza de las perturbaciones. Por lo tanto, sería útil saber más acerca de cómo ocurren las perturbaciones (y qué tan grandes pueden compararse con el tamaño de la esfera). Además: ¿en cuántas dimensiones está tu esfera?
whuber

@whuber Tenía la intención de definir el mejor ajuste como el que minimiza la distancia al cuadrado de los datos desde el punto más cercano en la superficie de la esfera. No pensé mucho en los supuestos que conlleva. Espero errores proporcionalmente pequeños; quizás la métrica exacta no importe demasiado, aunque me gustaría saber cuál es la función que está minimizando. He agregado más información sobre el ruido a la pregunta.
JCooper

@Max Lo vi. Pero es un sitio para un producto comercial de caja negra. Es la fórmula real que me interesaba. Parece que no hay una solución de forma cerrada y tendré que usar un enfoque numérico (que es lo que supongo que el software nlReg también está haciendo).
JCooper el

parece que esto podría ser un problema de minimización directo con una función objetivo no lineal (la que mencionó anteriormente). Si se supone que los errores son gaussianos, solo necesita calcular los parámetros de distribución de los errores una vez que haya encontrado el centro de la esfera minimizando la función objetivo. editar: dejé la página abierta demasiado tiempo y no vi tu comentario. Tenemos la misma idea.
asumido el

2
re Edición 3: Dado (x0,y0,z0), rEs fácil de encontrar. Para obtener(x0,y0,z0), El Método de Newton debería converger rápidamente de algún valor inicial razonable obtenido como en (3).
whuber

Respuestas:


3

Aquí hay un Rcódigo que muestra un enfoque usando mínimos cuadrados:

# set parameters

mu.x <- 8
mu.y <- 13
mu.z <- 20
mu.r <- 5
sigma <- 0.5

# create data
tmp <- matrix(rnorm(300), ncol=3)
tmp <- tmp/apply(tmp,1,function(x) sqrt(sum(x^2)))

r <- rnorm(100, mu.r, sigma)

tmp2 <- tmp*r

x <- tmp2[,1] + mu.x
y <- tmp2[,2] + mu.y
z <- tmp2[,3] + mu.z


# function to minimize
tmpfun <- function(pars) {
    x.center <- pars[1]
    y.center <- pars[2]
    z.center <- pars[3]
    rhat <- pars[4]

    r <- sqrt( (x-x.center)^2 + (y-y.center)^2 + (z-z.center)^2 )
    sum( (r-rhat)^2 )
}

# run optim
out <- optim( c(mean(x),mean(y),mean(z),diff(range(x))/2), tmpfun )
out


# now try a hemisphere (harder problem)

tmp <- matrix(rnorm(300), ncol=3)
tmp[,1] <- abs(tmp[,1])
tmp <- tmp/apply(tmp,1,function(x) sqrt(sum(x^2)))

r <- rnorm(100, mu.r, sigma)

tmp2 <- tmp*r

x <- tmp2[,1] + mu.x
y <- tmp2[,2] + mu.y
z <- tmp2[,3] + mu.z

out <- optim( c(mean(x),mean(y),mean(z),diff(range(y))/2), tmpfun )
out

Si no lo usa R, debería poder seguir la lógica y traducirla a otro idioma.

Técnicamente, el parámetro de radio debe estar limitado por 0, pero si la variabilidad es pequeña en relación con el radio verdadero, entonces el método sin límites debería funcionar bien, u optim tiene opciones para hacer la optimización limitada (o simplemente puede hacer el valor absoluto de radio en la función para minimizar).


+1 Esto es realmente genial. Por razones puramente egoístas, me encantaría ver una edición que (1) explica por qué el centroide de los puntos de muestra es una estimación sesgada del centro verdadero de la esfera, y (2) un comentario o dos agregados al código que explican la lógica del Función de minimización, como una solución para evitar el sesgo de usar el centroide.
Alexis
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.