Reconocer la pieza no revela su distancia
La cámara localiza el centro en la imagen, pero agarrar exige coordenadas espaciales. ¿Cuánta distancia contiene ese píxel? Derivamos ambigüedad monocular, qué añaden dos cámaras calibradas y el efecto de un píxel de error. Son cálculos ideales ejecutados, no medidas de robot.
Un píxel identifica un rayo, no un punto único
Usamos cámara ideal de orificio: X, Z en metros, Z positivo en eje óptico, focal f en píxeles y u respecto al punto principal. u=fX/Z no cambia al multiplicar X, Z por igual factor positivo: conserva razón, no escala. Con f=800, (0,2;2) y (0,4;4) dan u=80.
Un sistema monocular puede usar planos, tamaños, movimiento calibrado o regularidades aprendidas. El modelo añade supuestos de entrenamiento, no elimina la ambigüedad sin ellos. Si tamaño es desconocido, «parece pequeño, está lejos» es un prior, no garantía geométrica.
Dos cámaras hacen observable una diferencia
Segunda cámara a distancia B sobre X, ejes paralelos e igual focal. Imágenes rectificadas, coordenadas centradas y mismo punto bien emparejado. u_L=fX/Z y u_R=f(X−B)/Z: restar elimina X y da disparidad d=fB/Z. B aporta la longitud métrica conocida.
Con f=800 píxeles y B=0,1 m, fB=80 píxel-metros. Dos y diez metros dan disparidades de 40 y 8 píxeles, respectivamente. Para X=0,2, Z=2, u_L=80, u_R=40 y Z=80/40=2 m. Los píxeles cancelan. Disparidad cero, negativa o inválida exige comprobar convenciones y correspondencia.
Un píxel importa mucho más a distancia
Con f, B fijos, dZ/dd=−fB/d² y δZ≈−fBδd/d² localmente. Más disparidad significa menos profundidad; su módulo es sensibilidad: 0,05 m/píxel a dos metros y 1,25 a diez. Son pendientes, no desviaciones estándar ni intervalos de confianza.
Sin linealizar, 40±1 da 80/41≈1,951219 a 80/39≈2,051282 m; 8±1 da 80/9≈8,888889 a 80/7≈11,428571. Las desviaciones son asimétricas por la inversión. Si la disparidad alcanza cero, desaparece un límite superior finito.
| Z (m) | d (px) | Z(d+1) (m) | Z(d−1) (m) |
|---|---|---|---|
| 2.0 | 40.0 | 1.95122 | 2.051282 |
| 10.0 | 8.0 | 8.888889 | 11.428571 |

La geometría no sustituye calibración y pruebas reales
OpenCV documenta geometría y límites por textura, bordes y ruido. No ejecutamos StereoBM ni comparamos redes. La fórmula supone correspondencia correcta; un emparejamiento falso da números finitos sin significado. Focal, baseline, distorsión y sincronización quedan fuera de barras ±1 píxel: solo perturbamos d.
La robótica industrial y colaborativa es una dirección de exploración de EL-AI, no instalación demostrada. Mandar una presa exige validar cámara, referencia cámara-robot, incertidumbre y tarea. No certificamos seguridad, precisión ni éxito; invertir un escalar tampoco mide coste de correspondencia de toda imagen.
Un píxel da dirección; estéreo calibrado puede dar distancia; la validación física decide adecuación. A más distancia, más sensibilidad a disparidad. Reconocer la pieza ayuda, pero no basta para situar la pinza.
OpenCV 4.13.0 — Stereo depth geometry.
import json,sys
from pathlib import Path
f=800.;B=.1
rows=[]
for Z in [2.,10.]:
d=f*B/Z;rows.append(dict(Zm=Z,disparityPx=d,lowZm=f*B/(d+1),highZm=f*B/(d-1),localSensitivityMPerPx=f*B/d**2))
assert f*.2/2==f*.4/4==80
assert rows[0]['disparityPx']==40 and rows[1]['disparityPx']==8
r=dict(python=sys.version.split()[0],seed=None,scope='Ideal calibrated rectified pinhole geometry; no real camera or robot measurement',focalPx=f,baselineM=B,rows=rows,disparityGrid=list(range(2,81)),depthGrid=[f*B/d for d in range(2,81)],scaleAmbiguity=[[.2,2.,80.],[.4,4.,80.]])
Path(__file__).with_name('results.json').write_text(json.dumps(r,indent=2),encoding='utf8')
Código, datos e instrucciones · JSON. Cálculos didácticos ejecutados con Python 3.14.0; figuras con Matplotlib 3.11.2. Análisis asistido por IA, sin afirmar revisión por pares ni humana. Portada original ImageGen ilustrativa: no documenta personas, sedes ni instalaciones de EL-AI. Fuentes consultadas el 25 de octubre de 2026.

