资源简介
单kinect静止场景多帧去噪,时间域用中值,空间域用最近邻。
代码片段和文件信息
#include“denoise.h“
/**************************************************************
constructor initializes all the data members in the class.
create new image for denoisedImage and set the rest zero.
the following function addframe() add frames in frameSet
just copy addresses belongs to shallow copy.
**************************************************************/
kinectDenoising::kinectDenoising()
{
denoisedImage = cvCreateImage(cvSize(widthheight)IPL_DEPTH_16U1);
memset(frameSet0sizeof(IplImage*)*nframes);
numOfframes = 0;
imageROI = cvRect(00widthheight);
}
kinectDenoising::~kinectDenoising()
{
cvReleaseImage(&denoisedImage);
for(int i=0;iames;i++)
{
if(frameSet[i] != NULL)
cvReleaseImage(&frameSet[i]);
}
}
void kinectDenoising::addframe(IplImage* frame)
{
if(numOfframes >= nframes)
{
cout<<“the frame set is full adding frame ignored!“< }
else
{
frameSet[numOfframes++] = frame;
}
}
/*******************************************************************
setImageROI() conputes the image eara to be denoised. if isUpdate
is true recomputation process will start. first regard frameSet[0]
as the operating image set the value of non zero pixels 1and the
rest pixels 0. then use projecting method to compute the imageROI.
*************************************************************/
void kinectDenoising::setImageROI(bool isUpdate)
{
if(!isUpdate)
{
imageROI = cvRect(2244591434);
}
else
{
IplImage* image8u = cvCreateImage(cvSize(widthheight)IPL_DEPTH_8U1);
IplImage* bitImage = cvCreateImage(cvSize(widthheight)IPL_DEPTH_8U1);
// cvThreshold can only handle images of 8UC1 or 32FC1
cvConvertScale(frameSet[0]image8u255.0/4096.0);
cvThreshold(image8ubitImage01CV_THRESH_BINARY);
// the two mats rowReduced and colReduced have to be CV_32SC1 type
// for function cvReduce() seems not to suitable for 16U type and
// 8U type doesn‘t have enough room for the result.
CvMat* rowReduced = cvCreateMat(1bitImage->widthCV_32FC1);
// bitImage->width represents number of cols while bitImage->height stands for rows
CvMat* colReduced = cvCreateMat(bitImage->height1CV_32FC1);
cvReduce(bitImagerowReduced0CV_REDUCE_SUM);
cvReduce(bitImagecolReduced1CV_REDUCE_SUM);
// compute imageROI.x
for(int i=0;icols;i++)
{
float temp = CV_MAT_ELEM(*rowReducedfloat0i);
if(temp>bitImage->height/3)
{
imageROI.x = i;
break;
}
}
// computer imageROI.width
for(int i=rowReduced->cols;i>0;i--)
{
float temp = CV_MAT_ELEM(*rowReducedfloat0i-1);
if(temp>bitImage->height/3)
{
imageROI.width = i-imageROI.x;
break;
}
}
// compute imageROI.y
for(int i=0;irows;i++)
{
float temp = CV_MAT_ELEM(*col
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 825 2011-11-23 16:26 denoise.h
文件 1188 2011-11-23 16:51 denoiseSingeKinectMultipleMapStaticScene.cpp
文件 6808 2011-11-23 16:48 denoise.cpp
----------- --------- ---------- ----- ----
8821 3
- 上一篇:中国网络游戏专业术语表
- 下一篇:VISIO UI控件
相关资源
- win环境下的cholmod库(已编译)
- 哈工程本科算法实验-0-1背包动态规划
- 住房管理系统课程设计报告
- 曹文信息学课件_竞赛中常用的STL
- 用OpenCV实现Photoshop算法(九): 高反差
- 用OpenCV实现Photoshop算法_调整色相饱和
- opencv 人数统计
- Opencv学习视频
- Qt 访问redis接口代码
- 顶角判别法识别多边形的凸凹性,并
- NSGA2算法代码
- ListCtrl控件和下拉框,编辑框等控件组
- opencv_world310.lib文件
- vs2017+qt在一个dll中集成多个自定义插
- OpenCv2 轮廓提取源代码VS2008
- Qt socket的文件传输
- linux 下c实现简单的网络嗅探器
- opencv2.4.4
- 最简洁马走日c程序回溯打印所有能走
- Jsoncpp_0.6rc2修改版
- EMCV库函数
- Kinect程序,包括简单的图像处理
- 数据结构课程设计--统计成绩
- Kinect+PCL Demo程序 点云处理和显示 VS
- OPENGL可一走动的人
- 基于OPENCV的背景差法提取运动目标
- opencv视频教程地址
- 基于OpenCV实现的图片识别功能源码
- OpenCV基于分水岭图像分割算法
- 基于OpenCV的图像碎片拼接.pdf
评论
共有 条评论