Esta página está en construcción: perdonen los errores, repeticiones y temas inacabados. This page is being developed: I am sorry for errors, duplications and unfinished subjects. Reunir imágenes. Aproximación por microdesplazamientos. Ruido (incluido en Danzante) A los dicho en las pági Lo que se hace con rotaciones con ruido hay qye hacerlo con desplazmaientos (6 en el espacio) hast hacerlo casar. Se hace despues de los giros, en las meras cercanías. mas prrevias 1 a IV añadimos ahora esta información esobre consegior cpmdociones más reales, en particular, los errpres o vinestabilidad en los situaciones de los particulaciones, lo que podemos a similar a un ruido, es decir, errores en una supuesta transmisión desde un estado ideal perfecro a lo que sucede en este mundo traidor. Por ello añadimos valores aleatorios diferentes (distribución normal o gaussiana) de disviación típica arbitraria a cada una de las varibles espaciales (x,y,z) de cada articulación de uno de los esuqletos que aproximamos, por ejemplo, el incógnita. Como no podemos saber si el ruido añadido hace imposible o no alcanzar una cercanía (distancia) prefijada, recorrimos a dos controles o cota: 1. Una , por distancia máxima entre esqueletos (la anterior). 2. Por salto ángulo de búsqueda. 3. Número de saltos (sólo incluida para evitar bucles infinitos debido a no alcanzar una de las anteriores). . Renunciamos a una cuarta (ensayada sin resultados aceptables): por estabilidad y horizontalidad de la curva de acercamiento al mínimo. la primera actúa bien intentando acercarse hasta que la distancia se hace menor que una cota arbitraria (por ejemplo 1mmm de distancia media). pero una ruido puede generar una bola alrededor de l la incógnita que al hace inalcanzable. La segunda actúa intentando conseguir ángulos de búsqueda (comienzan en 10º a 60º) mayores que los incrementales (1º a .1º) , y se van dividiendo por 2 cada vez que rebasamos (distancia aumenta en lugar de disminuir) el mínimo. Algunos resultados iniciales esperanzadores:Es decir, el ruido 'desconcierta' al buscador, incluso con una desviación típica media de 10 mm (20, 50 10 en x,y,z). Vamos a limitar el número de puntos en la búsqueda (en concreto, para el cálculo de distancia en línea recta, cuerdas) para ver si la búsqueda es más segura y r´pida. En efecto, cuando reducimos puntos a hombros codos y cabeza, converge. Son más fiables, lo que revalida lo citado en Comparación con ISTDK. Además se reduce el número de operaciones y de ahí, el tiempo de cálculo. Otro caso en que las articulaciones de manos y muñecas (y cabeza) desorientan al buscador (primer caso). Cuando reducimos a cabeza, hombros y codos, se converge, y se converge rápido (2º caso y figura).
Dist: Ini= 526 65,0º | 22,0º Busca=04 mm| 19,0º | 10,0º
Res: 1 0.625 1
-0,461318731249129; 0,302114926409592; -1,04073711832618; 0,337317338716168
0,0425926704654612; 0,263927007480558; 0,922730686160967; 0,277662528912147
-0,39167701072271;0,256506972848058;-0,883625085741485148,037088356723
Dist: Ini= 523 64,0º | 21,0º Busca=06 mm| 19,0º | 09,0º
Res: 1 0.9375 1
-0,461318731249129; 0,302114926409592; -1,04073711832618; 0,337317338716168
-0,0263146674039252; 0,196898912078596; 0,941998675746143; 0,270512202301853
-0,39167701072271;0,256506972848058;-0,883625085741485148,037088356723
Dist: Ini= 526 65,0º | 22,0º Busca=01 mm| 19,0º | 10,0º
Res: 1 0.46875 0.1
-0,461318731249129;0,302114926409592;-1,04073711832618;0,337317338716168
-0,0227739039554768;0,201054394046745;0,944434323024267;0,259041096019179
-0,39167701072271;0,256506972848058;-0,883625085741485148,037088356723
Sin ruido Dist: Ini= 540 41,0º | 11,0º Busca=90 mm| 23,0º | 04,0º
Res: 1 0.078125 0.1
-0,461318731249129;0,302114926409592;-1,04073711832618;0,337317338716168
-0,0373218077656522;0,0998736170711611;0,845187141299383;0,523728020503477
-0,39167701072271;0,256506972848058;-0,883625085741485148,037088356723
Con ruido DT=10 Dist: Ini= 560 46,0º | 12,0º Busca=91 mm| 24,0º | 04,0º
Res: 1 0.078125 0.1
-0,461318731249129;0,302114926409592;-1,04073711832618;0,337317338716168
-0,0393779674692616;0,100574872036143;0,875845205999347;0,470350131200989
-0,39167701072271;0,256506972848058;-0,883625085741485148,037088356723
Ruido 10 Dos veces sucesivas
Dist: Ini= 557 45,0º | 12,0º Busca=91 mm| 25,0º | 04,0º
Res: 1 0.0390625 0.01
-0,461318731249129;0,302114926409592;-1,04073711832618;0,337317338716168
-0,0382162344030577;0,0999769813898108;0,870839528433735;0,479773528175164
-0,39167701072271;0,256506972848058;-0,883625085741485148,037088356723Lo mismo pero con incremnetal=.01 grados sexa Figura debajo
A simple vista se ve la pobre convergencia
Dist: Ini= 210 126,0º | 06,0º Busca=01 mm| 104,0º | 00,0º
Res: 1 0.15625 0.1
-0,378224760284999;-0,0291025243106742;1,7611586811461;0,0786926626946378
0,847921494706488;-0,51658333962585;-0,0824792107766373;0,0858368908184747
-0,209944132619806;-0,0161541624584477;0,977579922161755174,997758298157
Con esas articulaciones converge tomando 30º a priori, Sin ruido Con ruido Dist: Ini= 187 03,0º | 14,0º Busca=188 mm| 27,0º | 27,0ºLa rutina queda por ahora así: ____________________________________________________________________________________________
Resultados: Cota_distan: ángulo salto: 0.05859375 salto increm: 0.1 ruido: 10 Pasos: 30
Incog eje: 0,274408469698147; -0,0657865204295606; 0,959360268870716
Estim eje: -0,0336506864508215; -0,0843953912138723; 0,995863971254732
Incog angle:176,211378407309
Estim angle:176,211378407309
Dist: Ini= 197 114,0º | 120,0º Busca=06 mm| 84,0º | 85,0º
Resultados: Cota_distan: ángulo salto: 0.05859375 salto increm: 0.1 ruido: 10 Pasos: 88
Incog eje: 0,274408469698147; -0,0657865204295606; 0,959360268870716
Estim eje: -0,917311824354365; 0,397842914449204; -0,0161255177352645
Incog angle:176,211378407309
Estim angle:176,211378407309
Incluso ruido=40 (desvtip =40mmm, todas las coordenadas de todas las articulaciones), quedando eso sí a más distancia media mayor 2 cm. En la figura siguiente se aprecia ya una separcion entre buscador e incognita (amarillo y verde) lógica porque ya no son iguales. Dist: Ini= 312 103,0º | 111,0º Busca=20 mm| 78,0º | 79,0º
Resultados: Cota_distan: 1 ángulo salto:30 a 0.00732421875 salto increm: 0.01 ruido: 40 Pasos: 55
Incog eje:-0,882628910705969;0,457500643856379;-0,10797854813338
Estim eje:0,236555283722422;-0,810783158686658;-0,535417843682007
Incog angle:145,73800197824
Estim angle:145,73800197824
Dist: Ini= 313 103,0º | 111,0º Busca=32 mm| 77,0º | 80,0º
Resultados: Cota_distan: 1 ángulo salto: 0.00732421875 salto increm: 0.01 ruido: 50 Pasos: 49
Incog eje:-0,882628910705969;0,457500643856379;-0,10797854813338
Estim eje:0,681137103849455;-0,657116393342618;-0,322878137011422
Incog angle:145,73800197824
Estim angle:145,73800197824
Incluso 100 mm Dist: Ini= 311 106,0º | 113,0º Busca=55 mm| 83,0º | 87,0º
Resultados: Cota_distan: 1ángulo salto: 0.00732421875salto increm: 0.01ruido: 100 Pasos: 39
Incog eje:-0,882628910705969;0,457500643856379;-0,10797854813338
Estim eje:0,714329646402739;-0,635036032847364;-0,294044883063146
Incog angle:145,73800197824
Estim angle:145,73800197824
Incluso 140 mm y segumos probabdo Dist: Ini= 319 113,0º | 119,0º Busca=60 mm| 92,0º | 96,0º
Resultados: Cota_distan: 1 ángulo salto: 0.00732421875 salto increm: 0.01 ruido: 140 Pasos: 63
Incog eje:-0,882628910705969;0,457500643856379;-0,10797854813338
Estim eje:0,20296046229761;-0,866059415230191;-0,456889636602845
Incog angle:145,73800197824
Estim angle:145,73800197824
Curiosamente, la distancia ´menor a la que se llega es aproximadamnte la mitad de la derciacaion típica impuest al esqueleto incógnita'¡salto_incremental
'Intento con RUIDO Esto dunciona perfectamente sin ruido, converge rápido
Public Function reune_por_microaproximaciones_paso_controlado(ByVal pseudoskel_orig() As Point4D, _
ByVal pseudoskel_incog() As Point4D, _
angulo_salto As Double, cota_distan As Double, salto_incremental As Double) As Double
'Dim veces As Integer = 0
Dim pseudoskel0_1 = pseudoskel_orig
Dim distas, distas0 As Double '10 metros
distas = 1000
veces = 1
cuaternion_estimacion_total = Quaternion.Identity
parado = 0
MatrizBusqueda1 = contruye_mat_giro(salto_incremental, 0) : CuaterIncre1 = quat_de_matriz(MatrizBusqueda1)
MatrizBusqueda2 = contruye_mat_giro(salto_incremental, 1) : CuaterIncre2 = quat_de_matriz(MatrizBusqueda2)
MatrizBusqueda3 = contruye_mat_giro(salto_incremental, 2) : CuaterIncre3 = quat_de_matriz(MatrizBusqueda3)
otor_angulo:
MatrizBusqueda1 = contruye_mat_giro(angulo_salto, 0) : CuaterBusca1 = quat_de_matriz(MatrizBusqueda1)
MatrizBusqueda2 = contruye_mat_giro(angulo_salto, 1) : CuaterBusca2 = quat_de_matriz(MatrizBusqueda2)
MatrizBusqueda3 = contruye_mat_giro(angulo_salto, 2) : CuaterBusca3 = quat_de_matriz(MatrizBusqueda3)
Dim quater_sal As Quaternion
' Case 23 ' <‒-
quater_sal = CuaterBusca1 : quater_sal.Invert() : quater_salto(1) = quater_sal
' Case 25 ' ‒-> = Key.Right
quater_sal = CuaterBusca1 : quater_salto(2) = quater_sal
' Case 26 ' v
quater_sal = CuaterBusca2 : quater_sal.Invert() : quater_salto(3) = quater_sal
' Case 24 ' ^
quater_sal = CuaterBusca2 : quater_salto(4) = quater_sal
' Case 20 'PgDn
'pòr ahora
quater_sal = CuaterBusca3 : quater_sal.Invert() : quater_salto(5) = quater_sal
' Case 19 'PgUp
quater_sal = CuaterBusca3 : quater_salto(6) = quater_sal
'Public quater_salto(6) As Quaternion
'SI HAY RUIODO, HABRÁ QUE ^PONER OTRAS DETENCIONES AUTOMATICAS
'Por estabilidad de valores por encima de la cota de fin
While distas > cota_distan And veces < 1000 And parado = 0 'Then ''milimetros
'elige la mejor
quater_sal = elige_el_mayor_gradiente_incremental(pseudoskel0_1, pseudoskel_incog)
'pseudoskel0_1 = realiza_una_microaproximacion(pseudoskel0_1, quater, pseudoskel_incog)
pseudoskel0_1 = realiza_una_microaproximacion_opciones(pseudoskel0_1, quater_sal, pseudoskel_incog, 1, 1)
cuaternion_estimacion_total = cuaternion_estimacion_total * quater_sal
distas0 = distas
distas = 1000 * distancia_pseudoskel(pseudoskel0_1, pseudoskel_incog)
veces = veces + 1
'retoco angulillo? si sobrepaso minimo
If distas >= distas0 Then
'peligroso
angulo_salto = angulo_salto / 2
If angulo_salto >= salto_incremental Then GoTo otor_angulo
Exit While
End If
End While
Dim dif_cuater = cuaternion_estimacion_total - cuaternion_incognita
dif_cuater.ToString()
'If informa = 1 Then presenta_cuaternion(cuaternion_estimacion_total)
adosa_texto("Res:" + cuaternion_incognita.ToString() + cuaternion_estimacion_total.ToString())
Call informar(matriz_ventana.TextBox10.Text)
Return distas
End Function
____________________________________________________________________________________________ Nos preguntábamos ¿qué nos queda? 1. Esqueletos completos 2, Variar la distancia, es decir su tipo. (incluso distancias entre cuaterniones y matrices) 3. Añadir orígenes diferentes a cada imagen (translación diferente para cada uno, situación que se presenta con dos cámaras. 4. Operar con dos cámaras reales, diferentes y simultáneas. 5. Promediar los operadores estimados sobre varios esqueletos (¿1 segundo, 30 imágenes?).
Vuelta al Principio Última actualización: viernes, 18 de septiembre de 2015 Visitantes: