91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

完整的實時深度圖平滑代碼(像素濾波+加權移動平均)

資源截圖

代碼片段和文件信息

#include?
#include?“kinect.h“
#include?
#include???
#include???
#include?
#include?
//#define?GL_DISPLAY
//#define?SAVE_IMG
using?namespace?cv;
using?namespace?std;

//?安全釋放指針
template
inline?void?SafeRelease(Interface?*&?pInterfaceToRelease)
{
if?(pInterfaceToRelease?!=?NULL)
{
pInterfaceToRelease->Release();
pInterfaceToRelease?=?NULL;
}
}

void
//?像素濾波器
PixelFilter(unsigned?short*?depthArray?unsigned?short*?smoothDepthArray?int?innerBandThreshold?=?3?int?outerBandThreshold?=?7)
{
//?我們用這兩個值來確定索引在正確的范圍內
int?widthBound?=?512?-?1;
int?heightBound?=?424?-?1;

//?處理每行像素
for?(int?depthArrayRowIndex?=?0;?depthArrayRowIndex<424;?depthArrayRowIndex++)
{
//?處理一行像素中的每個像素
for?(int?depthArrayColumnIndex?=?0;?depthArrayColumnIndex? {
int?depthIndex?=?depthArrayColumnIndex?+?(depthArrayRowIndex?*?512);

//?我們認為深度值為0的像素即為候選像素
if?(depthArray[depthIndex]?==?0)
{
//?通過像素索引,我們可以計算得到像素的橫縱坐標
int?x?=?depthIndex?%?512;
int?y?=?(depthIndex?-?x)?/?512;

//?filter?collection?用來計算濾波器內每個深度值對應的頻度,在后面
//?我們將通過這個數值來確定給候選像素一個什么深度值。
unsigned?short?filterCollection[24][2]?=?{?0?};

//?內外層框內非零像素數量計數器,在后面用來確定候選像素是否濾波
int?innerBandCount?=?0;
int?outerBandCount?=?0;

//?下面的循環將會對以候選像素為中心的5?X?5的像素陣列進行遍歷。這里定義了兩個邊界。如果在
//?這個陣列內的像素為非零,那么我們將記錄這個深度值,并將其所在邊界的計數器加一,如果計數器
//?高過設定的閾值,那么我們將取濾波器內統計的深度值的眾數(頻度最高的那個深度值)應用于候選
//?像素上
for?(int?yi?=?-2;?yi? {
for?(int?xi?=?-2;?xi? {
//?yi和xi為操作像素相對于候選像素的平移量

//?我們不要xi?=?0&&yi?=?0的情況,因為此時操作的就是候選像素
if?(xi?!=?0?||?yi?!=?0)
{
//?確定操作像素在深度圖中的位置
int?xSearch?=?x?+?xi;
int?ySearch?=?y?+?yi;

//?檢查操作像素的位置是否超過了圖像的邊界(候選像素在圖像的邊緣)
if?(xSearch?>=?0?&&?xSearch?<=?widthBound?&&
ySearch?>=?0?&&?ySearch?<=?heightBound)
{
int?index?=?xSearch?+?(ySearch?*?512);
//?我們只要非零量
if?(depthArray[index]?!=?0)
{
//?計算每個深度值的頻度
for?(int?i?=?0;?i? {
if?(filterCollection[i][0]?==?depthArray[index])
{
//?如果在?filter?collection中已經記錄過了這個深度
//?將這個深度對應的頻度加一
filterCollection[i][1]++;
break;
}
else?if?(filterCollection[i][0]?==?0)
{
//?如果filter?collection中沒有記錄這個深度
//?那么記錄
filterCollection[i][0]?=?depthArray[index];
filterCollection[i][1]++;
break;
}
}

//?確定是內外哪個邊界內的像素不為零,對相應計數器加一
if?(yi?!=?2?&&?yi?!=?-2?&&?xi?!=?2?&&?xi?!=?-2)
innerBandCount++;
else
outerBandCount++;
}
}
}
}
}

//?判斷計數器是否超過閾值,如果任意層內非零像素的數目超過了閾值,
//?就要將所有非零像素深度值對應的統計眾數
if?

評論

共有 條評論