資源簡介
單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控件
評論
共有 條評論