私のアプリケーションでは、Depth Basics Sample から取得した深度フレームと同様の深度フレームを取得しています。私が理解できないのは、画像に離散レベルがあるのはなぜですか? これらの深度値の突然の変化を何と呼ぶかわかりません。明らかに私の右手の半分はすべて黒く、左手はそのような 3 つのレベルに分かれているようです。これは何ですか?どうすれば削除できますか?
KinectExplorer サンプル アプリを実行すると、次のような深度が得られます。これは、生の深度データから生成したい深度画像です。
Microsoft Kinect SDK の (v1.6) NuiApi と OpenCV を使用しています。次のコードがあります。
BYTE *pBuffer = (BYTE*)depthLockedRect.pBits; //pointer to data having 8-bit jump
USHORT *depthBuffer = (USHORT*) pBuffer; //pointer to data having 16-bit jump
int cn = 4;
this->depthFinal = cv::Mat::zeros(depthHeight,depthWidth,CV_8UC4); //8bit 4 channel
for(int i=0;i<this->depthFinal.rows;i++){
for(int j=0;j<this->depthFinal.cols;j++){
USHORT realdepth = ((*depthBuffer)&0x0fff); //Taking 12LSBs for depth
BYTE intensity = (BYTE)((255*realdepth)/0x0fff); //Scaling to 255 scale grayscale
this->depthFinal.data[i*this->depthFinal.cols*cn + j*cn + 0] = intensity;
this->depthFinal.data[i*this->depthFinal.cols*cn + j*cn + 1] = intensity;
this->depthFinal.data[i*this->depthFinal.cols*cn + j*cn + 2] = intensity;
depthBuffer++;
}
}