0
我正在寻找一些帮助搞清楚如何从视频中删除一些低质量的像素噪声,我通过开放框架从xbox kinect获得。我运行的逻辑是针对图像的“移动”部分,确定哪种颜色移动最多,并使用这些区域来检测这些像素的移动深度。我附上了一张照片,试图更好地解释我的问题。如何从xKinect视频中删除像素噪声?
http://imago.bryanmoyles.com/xxw80
我当然知道代码将被要求,所以我会后我有什么,到目前为止,但我正在寻找比什么都重要,可用于平滑像素化的一个好的算法用C++
for(int y = 0; y < kinect.height; y += grid_size) {
for(int x = 0; x < kinect.width * 3; x += 3 * grid_size) {
unsigned int total_r = 0, total_b = 0, total_g = 0;
for(int r = 0; r < grid_size; r++) {
for(int c = 0; c < grid_size; c++) {
total_r += color_pixels[(y * kinect.width * 3 + r * kinect.width * 3) + (c * 3 + x + 0)];
total_b += color_pixels[(y * kinect.width * 3 + r * kinect.width * 3) + (c * 3 + x + 1)];
total_g += color_pixels[(y * kinect.width * 3 + r * kinect.width * 3) + (c * 3 + x + 2)];
}
}
unsigned char average_r = total_r/(grid_size * grid_size),
average_b = total_b/(grid_size * grid_size),
average_g = total_g/(grid_size * grid_size);
for(int r = 0; r < grid_size; r++) {
for(int c = 0; c < grid_size; c++) {
color_pixels[(y * kinect.width * 3 + r * kinect.width * 3) + (c * 3 + x + 0)] = average_r;
color_pixels[(y * kinect.width * 3 + r * kinect.width * 3) + (c * 3 + x + 1)] = average_b;
color_pixels[(y * kinect.width * 3 + r * kinect.width * 3) + (c * 3 + x + 2)] = average_g;
}
}
}
}
for(int y = 0; y < kinect.height; y++) {
for (int x = 0; x < kinect.width * 3; x += 3) {
int total_difference = abs(color_pixels[y * kinect.width * 3 + x + 0] - rgb[0])
+ abs(color_pixels[y * kinect.width * 3 + x + 1] - rgb[1])
+ abs(color_pixels[y * kinect.width * 3 + x + 2] - rgb[2]);
unsigned char defined_color;
if(total_difference < 40) {
defined_color = (unsigned char) 255;
} else {
defined_color = (unsigned char) 0;
}
color_pixels[y * kinect.width * 3 + x + 0] = defined_color;
color_pixels[y * kinect.width * 3 + x + 1] = defined_color;
color_pixels[y * kinect.width * 3 + x + 2] = defined_color;
}
}
再次在照片的区域,我想重申,我的代码是没有问题的,我只是在这里张贴,让你明白我并不只是一味的要求。我真正需要的是如何平滑像素化图像的一些方向,以便我的平均值不会因质量差而逐帧混乱。