Por "Grupo" me refiero a un conjunto de píxeles para que cada píxel tenga al menos un píxel adyacente en el mismo conjunto, el dibujo muestra un ejemplo de Un grupo.Cómo encontrar el píxel que está más alejado de otro en el mismo grupo de píxeles
me gustaría encontrar el píxel que está teniendo la mayor distancia de línea recta desde un píxel designado (por ejemplo, el píxel verde). Y la línea recta que conecta los dos píxeles (la línea roja) no debe salir del grupo.
Mi solución es recorrer los grados y simular el progreso de las líneas a partir del píxel verde con el grado y ver qué línea recorrió la distancia más lejana.
longestDist = 0
bestDegree = -1
farthestX = -1
farthestY = -1
FOR EACH degree from 0 to 360
dx=longestDist * cos(degree);
dy=longestDist * sin(degree);
IF Point(x+dx , y+dy) does not belong to the group
Continue with next degree
//Because it must not be the longest line, so skip it
END IF
(farthestX , farthestY) = simulate(x,y,degree)
d = findDistance(x , y , farthestX , farthestY)
IF d > longestDist
longestDist = d
bestDegree = degree
END IF
END FOR
Obviamente no es el mejor algoritmo. Por lo tanto, estoy pidiendo ayuda aquí.
Gracias y lo siento por mi pobre inglés.
Observe que puede descartar cálculos para todos los píxeles interiores. – dfens
Y no necesita usar ángulos. Solo necesita usar el teorema de Pitágoras;) – dfens
@dfens: "píxeles interiores" - ¿por qué? uno de ellos podría ser la solución. –