首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从ofxKinect视频中删除像素噪声?

如何从ofxKinect视频中删除像素噪声?
EN

Stack Overflow用户
提问于 2012-07-14 11:35:55
回答 1查看 520关注 0票数 0

我正在寻找一些帮助,找出如何从视频中去除一些低质量的像素噪声,我是通过开放框架从xbox kinect获得的。我正在对图像的“移动”部分运行逻辑,以确定移动最多的颜色,并使用这些区域来检测这些像素移动的深度。我附上了一张照片,试图更好地解释我的问题。

http://imago.bryanmoyles.com/xxw80

当然,我知道代码会被要求,所以我会发布我到目前为止所拥有的,但我最想要的是一个使用C++平滑照片中像素化区域的好算法

代码语言:javascript
复制
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;
    }
}

我再次重申,我的代码不是问题所在,我只是在这里发布它,以便您理解我并不是盲目地询问。我真正需要的是一些关于如何平滑像素化图像的方向,这样我的平均值就不会因为质量差而一帧一帧地混乱。

EN

回答 1

Stack Overflow用户

发布于 2012-07-15 07:49:41

你可以使用ofxOpenCV插件中的一些方法来处理相机中的图像。在那里你会有像模糊,不失真,腐蚀等方法。它很容易设置,因为它已经是一个插件。看看应该与您的openFrameworks一起打包的openCvExample。有关上述方法的更多信息,请查看here。如果我正确理解了你的问题,那么图像上的一点模糊就可以解决你的问题了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11480800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档