官网实例:
TYDepthSpeckleFilter 深度图中无效点填充和离散点降噪处理,输入深度图和滤波参数,输出处理后的深度图。
struct DepthSpeckleFilterParameters {
int max_speckle_size; // blob size smaller than this will be removed
int max_speckle_diff; // Maximum difference between neighbor disparity pixels
};
#define DepthSpeckleFilterParameters_Initializer {150, 64}
TY_CAPI TYDepthSpeckleFilter (TY_IMAGE_DATA* depthImage
, const DepthSpeckleFilterParameters* param
);
实际应用:
C++:
//定义TY_IMAGE_DATA 结构体
TY_IMAGE_DATA dpt;
dpt.width = depth.cols;
dpt.height = depth.rows;
dpt.size = depth.size().area() * 3;
dpt.pixelFormat = TY_PIXEL_FORMAT_DEPTH16;
dpt.buffer = depth.data;
//定义滤波函数
DepthSpeckleFilterParameters Spt;
Spt.max_speckle_diff = 1;
Spt.max_speckle_size = 150;
//实现滤波
ASSERT_OK(TYDepthSpeckleFilter(&dpt, &Spt));
//TY_IMAGE_DATA克隆出depth
depth = cv::Mat(dpt.height, dpt.width, CV_16U, dpt.buffer).clone();
//显示depth
if (!depth.empty()) {
depthViewer.show(depth);
}
Python:
#copy 深度图
dpt=dst_depth16
#定义滤波函数
Spt=DepthSpeckleFilterParameters()
Spt.max_speckle_size=100
Spt.max_speckle_diff=64
#实现滤波
TYDepthSpeckleFilter(dpt,Spt)
#copy处理过的图片
dst_depth16=dpt