Kinect骨架调整大小/图像重新调整大小
本文关键字:调整 新调整 Kinect 图像 | 更新日期: 2023-09-27 18:04:47
我之前发布了关于c#kinect图像比较的帖子,我通过在黑色背景上拍摄骨架流的截图来克服许多问题,以克服比较照片固有的问题。现在我的问题是,我需要将用户的图像与预测的动作进行比较,然而,当用户的身高和我不一样时,我会遇到麻烦,有办法克服吗?我唯一的想法是调整图像大小或比较某些彩色像素的位置
这取决于您希望如何比较图像。如果你想逐个像素地比较它们,你真的不需要调整大小,你只需要在for循环中使用一个比率。例如,如果图像1的大小是WIDTH1*HEIGHT1,图像2的大小是WIDTH2*HEIGHT2,则可以使用如下的For循环:
for(int i = 0; i < WIDTH1; i++)
{
for(int j = 0; j < HEIGHT1; j++)
{
pixel1 = image1[i][j];
pixel2 = image2[i * WIDTH2/WIDTH1][j * HEIGHT2/HEIGHT1];
// compare
}
}
一种更优雅的方法是将像素1与来自图像2的多个像素的组合进行比较。例如,如果图像1为300*300,图像2为600*600,则可以将图像1的每个像素与图像2中4个像素的平均RGB进行比较(因为对于图像1中的每个像素,图像2中都存在4个像素(。如果大小不可分割,可以使用加权平均。例如,如果图像1为300*300,图像2为400*400,则可以将图像1的像素1与图像2中4个像素的加权平均值进行比较:
pixel1 = image1[i][j];
pixel2 = 0.75 * image2[i * WIDTH2/WIDTH1][j * HEIGHT2/HEIGHT1] +
0.25 * AVERAGE(image2[i * WIDTH2/WIDTH1 + 1][j * HEIGHT2/HEIGHT1] +
image2[i * WIDTH2/WIDTH1][j * HEIGHT2/HEIGHT1 + 1] +
image2[i * WIDTH2/WIDTH1 + 1][j * HEIGHT2/HEIGHT1 + 1]);
基本上它的意思是:pixel2是75%的一个像素,25%的相邻像素。这样做实际上是在做一个简单的调整大小算法(将4个不同的像素组合成1个(。