Hay una herramienta para la detección de bordes escrito para J imagen que podría ayudarle a encontrar los agujeros primero y las líneas, y aclararlas. Lo encuentras en
http://imagejdocu.tudor.lu/doku.php?id=plugin:filter:edge_detection:start
Jugando con la configuración de la tresholding y la histéresis puede ayudar con el fin de obtener las líneas y los agujeros que se encuentran. Es difícil decir si esto tiene muchas posibilidades de funcionar sin ver sus fotografías reales, pero un colega mío tuvo buenos resultados al utilizar esta herramienta en imágenes FRAP. Programé una herramienta ImageJ que puede calcular recuperaciones en el análisis FRAP basado en esas imágenes. Puede obtener algunas ideas para usted mismo cuando mira el código (consulte: http://imagejdocu.tudor.lu/doku.php?id=plugin:analysis:frap_normalization:start)
La única manera que conozco de que puede trabajar con imágenes es usando EBImage
que está contenido en el sistema de bioconductor. El paquete Rimage
está huérfano, por lo que ya no se mantiene.
Para encontrar la distancia más corta: una vez que tenga las coordenadas de las líneas y los agujeros, puede elegir el enfoque de escopeta: calcule las distancias entre todos los puntos y la línea, y luego tome el mínimo. Un ejemplo de ello en R:
x <- -100:100
x2 <- seq(-70,-50,length.out=length(x)/4)
a.line <- list(x = x,
y = 4*x + 5)
a.hole <- list(
x = c(x2,rev(x2)),
y = c(200 + sqrt(100-(x2+60)^2),
rev(200 - sqrt(100-(x2+60)^2)))
)
plot(a.line,type='l')
lines(a.hole,col='red')
calc.distance <- function(line,hole){
mline <- matrix(unlist(line),ncol=2)
mhole <- matrix(unlist(hole),ncol=2)
id1 <- rep(1:nrow(mline),nrow(mhole))
id2 <- rep(1:nrow(mhole), each=nrow(mline))
min(
sqrt(
(mline[id1,1]-mhole[id2,1])^2 +
(mline[id1,2]-mhole[id2,2])^2
)
)
}
continuación:
> calc.distance(a.line,a.hole)
[1] 95.51649
que se puede comprobar matemáticamente mediante la derivación de las ecuaciones del círculo y la línea. Esto es lo suficientemente rápido si no tiene millones de puntos que describen miles de líneas y agujeros.
En la parte superior de mi cabeza, primero iría con ImageJ. No soy un experto con esa herramienta, pero parece ser bueno para encontrar lugares y hacer cosas con ellos. –
Es posible que Bio7 sea bueno para esta tarea. ¿Algún gurú de Bio7 por ahí? El programa hace tanto, que es difícil averiguar lo que realmente hace =) – Mikko