窗口程序集名 | 保 留 | 保 留 | 备 注 |
程序集1 | | | |
变量名 | 类 型 | 数组 | 备 注 |
宽 | 整数型 | |
高 | 整数型 | |
鼠标位置 | 坐标二维整型结构 | |
变量名 | 类 型 | 静态 | 数组 | 备 注 |
卡尔曼 | 卡尔曼滤波器类 | | |
状态向量 | 整数型 | | |
测量向量 | 整数型 | | |
状态 | 小数型 | | 16 |
步长 | 小数型 | | |
随机 | 随机数类 | | |
测量值 | 数据矩阵类 | | |
图 | 数据矩阵类 | | |
预测坐标 | 坐标二维整型结构 | | |
高 = 600
宽 = 800
鼠标位置.
初始化 (右移 (宽, 1
),
右移 (高, 1
))
状态向量 = 4 测量向量 = 2 卡尔曼.
初始化 (状态向量, 测量向量, 0,
#矩阵_小数型 ) 状态 =
{ 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1
}步长 = 1
如果真 (步长 ≠ 1
)
状态
[3
] = 步长

状态
[8
] = 步长

卡尔曼.转移.
初始化指针 (4, 4,
#矩阵_小数型, 取变量数据地址 (状态
))
视觉_设置为单位矩阵 (卡尔曼.测量,
) 视觉_设置为单位矩阵 (卡尔曼.过程协方差,
标量 (1e-005
))
视觉_设置为单位矩阵 (卡尔曼.测量协方差,
标量 (0.1
))
视觉_设置为单位矩阵 (卡尔曼.后验误差,
标量 (10
)) 随机.
填充 (卡尔曼.校正,
#随机_均匀分布, 0,
视觉_取最小值 (宽, 高
),
假) 测量值.
初始化零 (测量向量, 1,
#矩阵_小数型 ) 视觉_创建窗口 (“小白鼠 卡尔曼演示”, 1
)视觉_设置鼠标事件 (“小白鼠 卡尔曼演示”, &鼠标事件, 0
)图.
初始化零 (高, 宽,
#矩阵_三通道字节型U )
循环判断首 ()

卡尔曼.
预测 ()
预测坐标.
初始化 (到整数 (卡尔曼.预测.
取元素 (0, 0
)),
到整数 (卡尔曼.预测.
取元素 (0, 1
))
)

测量值.
置元素 (0, 0, 鼠标位置.横坐标
)
测量值.
置元素 (0, 1, 鼠标位置.纵坐标
)

卡尔曼.
更新 (测量值
)

图.
设置 (标量 (255, 255, 255, 0
),
)
视觉_圆 (图, 预测坐标, 5,
标量 (0, 255, 0
), 3, 8, 0
)
视觉_圆 (图, 鼠标位置, 5,
标量 (255, 0, 0
), 3, 8, 0
)
视觉_放置文本 (图,
“predicted position:(” +
到文本 (预测坐标.横坐标
) +
“,” +
到文本 (预测坐标.纵坐标
) +
“)”,
坐标二维整型 (10, 30
),
#字体_更复杂的手写风格, 1,
标量 (0, 0, 0
), 1, 8,
假)
视觉_放置文本 (图,
“current location:(” +
到文本 (鼠标位置.横坐标
) +
“,” +
到文本 (鼠标位置.纵坐标
) +
“)”,
坐标二维整型 (10, 60
),
#字体_更复杂的手写风格, 1,
标量 (0, 0, 0
), 1, 8,
假)
视觉_显示图像 (“小白鼠 卡尔曼演示”, 图
)
循环判断尾 (视觉_等待按键 (3
) ≠
#Esc键 )返回 (0
) |
鼠标事件 | | |
|
event | 整数型 | | | |
x | 整数型 | | | | y | 整数型 | | | | flags | 整数型 | | | |
如果真 (event =
#事件_鼠标移动 )
鼠标位置.
初始化 (x, y
)