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.
 
 
Proyecto Danzante. Matriz que reúne por escalado bloque de moción doble   (incluido en Danzante)
 
hemjos visto ya Proyecto Danzante. Matriz que reune por giro bloque de mocion doble.htm  y
Veamos ahora su complemento con escalado, que ha funcionado perfectamente en parejas individuales.
 
 
....
 ahora hemos reunido pares de psudoesqueletos uno a uno, obteniendo la matriz individual que reune la pareja. Y cuando contamos con uhna mocion doble, obtenemos la matriz de cada pareja y promediamos (de alguna manera) todas ellas para jllegqar a la media, la apropiada, suponemos, para obtener una distancia global (de mocion simple a mocion simple) mínima como nos pide la calibracion.
 
Pero hay una modo de obtener lam matriz globla, en bloque la llamamos, que minimiza la distancia global entre mociones homólogas (almacenadas con numero de motor igual, lo que signigiva una captacion miy cercana en el tiempo, es decir, casi sumltáneas 8esta 'wsimuoltaneidad ha de ser precisada, ecaluada y validadqa).
 
Pata ello definimo sl adistancia global o de bloque, sumando los cuadrados de todas las distancias entre esqueletos de todos los motores (cuadros, frames), que definimos en  la Distancia cuadratica entre mociones en bloque. Es decir simamos los ciadrados de las diferencias entre cada coordenada homóloga de cada articvulacion homóloga de cada esqueleto homólogo de cada cuadro de una mocion doble o parte de ella (definida mediante la primer y último cuadros tomados en cuenta).
 

Este proceso, cuta duración o coste informático habrá que comparar con el ya visto (cuadro a cuadro), tiene la gran ventaja de que no hay que promediar nada (con las necesarias  demostraciones teóricas subsiguientes además para probar que coincide con la deseada, la solución de un sistema de ecuaciones por mínimos cuadrados):

 la matriz global de giro (a ampliar a escalado) es la pedida en la calibracion del par de camaras
y cumple la condición de que el gradiente es nulo,
porque cualquier giro adicional nos aleja las mociones entre sí: es el mínimo, par una cota determinada.

Para el caso de giro, la velocidad en muchísimo mayor: unos 5 segundos para 50 cuadros (1000 pares de articulaciones homólogas)

El resultado es parecido, para los primeros 50 cuadrps, los 50 siguientes, .

angeles1.mc1 ha sido girada con la matriz aleatoria que aparece como incógnita más abajo.
BLOQUE.escala Dist: ini= 199 ant=03 mej=03 mm GLOBAL=01 mm BLOQUE.escala Dist: ini= 193 ant=05 mej=05 mm GLOBAL=04 mm
Moción: C:\Danzante\Danzante XII\Mociones\angeles.mc1
Cuadros de: 5 a: 55
BLOQUE.escala Dist: ini= 199 ant=03 mej=03 mm
Acerco mocion 3 a:-2
Resultados Escalado en BLOQUE: Cota_distan: 1 porcentaje_salto: 2.5 salto increm: 1 Dt_mm ruido: 0 Pasos: 12
Arti usadas: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Arti no usadas:
Incog eje:0;1;0
Estim eje:0;1;0
Incog angle:0
Estim angle:0
Incog :Identity
| Cuat: ,000 ,000 ,000 1,000 | áng: 000 090 090 090 grados Eje: 090 000 090 Ángulo: 0 º
Estim : | Cuat: ,000 ,000 ,000 1,000 | áng: 000 090 090 090 grados Eje: 090 000 090 Ángulo: 0 º
Incog mat:
| 1,558 ,000 ,000 ,000 | NeuN090 090 090
| ,000 1,300 ,000 ,000 | 090 NeuN090 090
| ,000 ,000 1,369 ,000 | 090 090 NeuN090
| 1,000 | 000 grados
Estim mat:
| 1,557 ,000 ,000 ,000 | NeuN090 090 090
| ,000 1,302 ,000 ,000 | 090 NeuN090 090
| ,000 ,000 1,365 ,000 | 090 090 NeuN090
| 1,000 | 000 grados

 
Moción: C:\Danzante\Danzante XII\Mociones\angeles.mc1
Cuadros de: 54 a: 104
BLOQUE.escala Dist: ini= 193 ant=05 mej=05 mm
Acerco mocion 3 a:-2
Resultados Escalado en BLOQUE: Cota_distan: 1 porcentaje_salto: 2.5 salto increm: 1 Dt_mm ruido: 0 Pasos: 13
Arti usadas: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Arti no usadas:
Incog eje:0;1;0
Estim eje:0;1;0
Incog angle:0
Estim angle:0
Incog :Identity
| Cuat: ,000 ,000 ,000 1,000 | áng: 000 090 090 090 grados Eje: 090 000 090 Ángulo: 0 º
Estim : | Cuat: ,000 ,000 ,000 1,000 | áng: 000 090 090 090 grados Eje: 090 000 090 Ángulo: 0 º
Incog mat:
| 1,558 ,000 ,000 ,000 | NeuN090 090 090
| ,000 1,300 ,000 ,000 | 090 NeuN090 090
| ,000 ,000 1,369 ,000 | 090 090 NeuN090
| 1,000 | 000 grados
Estim mat:
| 1,563 ,000 ,000 ,000 | NeuN090 090 090
| ,000 1,307 ,000 ,000 | 090 NeuN090 090
| ,000 ,000 1,387 ,000 | 090 090 NeuN090
| 1,000 | 000 grados
 

Nos ha parecido acertado igualar los tamaños aparentes de ambos fragmentos, mediante la senculla rutina, que evalua esos tamaños (la norma en realidad, suma de todos cuadrados) y luego escalar el

'igualo tamaños aproximados, para centrar y pa que si
Dim tama0, tama1 As Double
tama0 = tama_1_mociones_mm(prin, fin, mocion_tranf)
tama1 = tama_1_mociones_mm(prin, fin, 1 - mocion_tranf)
Dim vector_escala As Vector3D
'factores positivos y negativos
vector_escala.X = tama1 / tama0
vector_escala.Y = tama1 / tama0
vector_escala.Z = tama1 / tama0
Dim matriz = Matrix3D.Identity
matriz.Scale(vector_escala)

Dim distas = transforma_bloque_pseudoesqueleto_sin_alma_feten(3, prin, fin, 2, matriz, 1, almaceno) 'As Double 'devuelve distancia_2 Point4D()

If almaceno = 1 Then matriz_estimacion_total.Scale(vector_escala)

 

 

Se emplean varias distancias entre mociones:

Veamos la elegida, la Distancia cuadrática entre mociones en bloque

Nótese que la estimación es buena realizando la reunión con el segundo esqueleto girado con parámetro conocido, lo que hemos llamado simulacion. El giro se genera aeatoriamente, pero el algoritmo estimador 'no sabe su valor':  Aparece la moción, angeles2.mc1, pero aparece n las trasformaciones ejercidas sobre ella, rotaciones . Sí aparece un ruido añadido, en la segunda las estimaciones.

InformacionesMoción: C:\Danzante\Danzante XII\Mociones\angeles2.rotada.mc2
Cuadros de: 22 a: 72
BLOQUE.giros Dist: ini= 312 ant=05 mej=05 mm GLOBAL=01 mm
Acerco mocion 0 a: 1
Resultados Giro en BLOQUE: Cota_distan: 1 ángulo salto: 0.234375 salto increm: 0.1 Dt_mm ruido: 0 Pasos: 22
Arti usadas: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Arti no usadas:
Incog eje:0;1;0
Estim eje:0,105330628280969;-0,782585359967055;-0,613567936834359
Incog angle:0
Estim angle:54,393368149519
Incog :Identity
| Cuat: ,000 ,000 ,000 1,000 | áng: 000 090 090 090 grados Eje: 090 000 090 Ángulo: 0 º
Estim : | Cuat: ,048 -,358 -,280 ,889 | áng: 027 087 111 106 grados Eje: 084 141 128 Ángulo: 54 º
Incog mat:
| ,587 ,465 -,663 ,000 | 054 062 131 090
| -,533 ,838 ,115 ,000 | 122 033 083 090
| ,609 ,286 ,740 ,000 | 052 073 042 090
| 1,000 | 000 grados
Estim mat:
| ,587 ,464 -,663 ,000 | 054 062 132 090
| -,533 ,838 ,115 ,000 | 122 033 083 090
| ,609 ,286 ,739 ,000 | 052 073 042 090
| 1,000 | 000 grados
 

Moción: C:\Danzante\Danzante XII\Mociones\angeles2.mc1
Cuadros de: 28 a: 78
BLOQUE.giros Dist: ini= 314 ant=06 mej=06 mm GLOBAL=04 mm
Acerco mocion 0 a: 1
Resultados Giro en BLOQUE: Cota_distan: 1 ángulo salto: 0.234375 salto increm: 0.1 Dt_mm ruido: 10 Pasos: 22
Arti usadas: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Arti no usadas:
Incog eje:0;1;0
Estim eje:0,105330628280969;-0,782585359967055;-0,613567936834359
Incog angle:0
Estim angle:54,393368149519
Incog :Identity
| Cuat: ,000 ,000 ,000 1,000 | áng: 000 090 090 090 grados Eje: 090 000 090 Ángulo: 0 º
Estim : | Cuat: ,048 -,358 -,280 ,889 | áng: 027 087 111 106 grados Eje: 084 141 128 Ángulo: 54 º
Incog mat:
| ,587 ,465 -,663 ,000 | 054 062 131 090
| -,533 ,838 ,115 ,000 | 122 033 083 090
| ,609 ,286 ,740 ,000 | 052 073 042 090
| 1,000 | 000 grados
Estim mat:
| ,587 ,464 -,663 ,000 | 054 062 132 090
| -,533 ,838 ,115 ,000 | 122 033 083 090
| ,609 ,286 ,739 ,000 | 052 073 042 090
| 1,000 | 000 grados

  Moción: C:\Danzante\Danzante XII\Mociones\angeles2.mc1
Cuadros de: 22 a: 72
BLOQUE.giros Dist: ini= 792 ant=06 mej=05 mm GLOBAL=02 mm
Acerco mocion 0 a: 1
Resultados Giro en BLOQUE: Cota_distan: 1 ángulo salto: 0.234375 salto increm: 0.1 Dt_mm ruido: 10 Pasos: 31
Arti usadas: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Arti no usadas:
Incog eje:0;1;0
Estim eje:-0,300549770302302;0,232729575053675;-0,924936095342035
Incog angle:0
Estim angle:123,212515509236
Incog :Identity
| Cuat: ,000 ,000 ,000 1,000 | áng: 000 090 090 090 grados Eje: 090 000 090 Ángulo: 0 º
Estim : | Cuat: -,264 ,205 -,814 ,476 | áng: 062 105 078 144 grados Eje: 107 077 158 Ángulo: 123 º
Incog mat:
| -,406 ,665 ,627 ,000 | 114 048 051 090
| -,883 -,463 -,080 ,000 | 152 118 095 090
| ,237 -,586 ,775 ,000 | 076 126 039 090
| 1,000 | 000 grados
Estim mat:
| -,408 ,666 ,625 ,000 | 114 048 051 090
| -,882 -,464 -,082 ,000 | 152 118 095 090
| ,236 -,585 ,776 ,000 | 076 126 039 090
| 1,000 | 000 grados

Coci1 :
| 1,000 -,002 ,003 ,000 | 000 090 090 090
| ,002 1,000 ,001 ,000 | 090 000 090 090
| -,003 -,001 1,000 ,000 | 090 090 000 090
| 1,000 | 000 grados
Coci2 :
| 1,000 -,001 -,003 ,000 | 000 090 090 090
| ,001 1,000 ,002 ,000 | 090 000 090 090
| ,003 -,002 1,000 ,000 | 090 090 000 090
| 1,000 | 000 grados
 

 
Vuelta al Principio    Última actualización: miércoles, 30 de marzo de 2016    Visitantes:contador de visitas