mirror of
https://github.com/orbbec/OrbbecSDK_ROS2.git
synced 2026-10-04 03:57:46 +08:00
Fixed filter params
This commit is contained in:
@@ -66,7 +66,7 @@ def generate_launch_description():
|
||||
DeclareLaunchArgument('color_info_url', default_value=''),
|
||||
DeclareLaunchArgument('log_level', default_value='none'),
|
||||
DeclareLaunchArgument('enable_publish_extrinsic', default_value='false'),
|
||||
DeclareLaunchArgument('enable_d2c_viewer', default_value='false'),
|
||||
DeclareLaunchArgument('enable_d2c_viewer', default_value='true'),
|
||||
DeclareLaunchArgument('enable_ldp', default_value='true'),
|
||||
DeclareLaunchArgument('enable_soft_filter', default_value='true'),
|
||||
DeclareLaunchArgument('soft_filter_max_diff', default_value='-1'),
|
||||
@@ -93,7 +93,7 @@ def generate_launch_description():
|
||||
DeclareLaunchArgument('sequence_id_filter_id', default_value='1'),
|
||||
DeclareLaunchArgument('threshold_filter_max', default_value='16000'),
|
||||
DeclareLaunchArgument('threshold_filter_min', default_value='0'),
|
||||
DeclareLaunchArgument('noise_removal_filter_min_diff', default_value='8'),
|
||||
DeclareLaunchArgument('noise_removal_filter_min_diff', default_value='256'),
|
||||
DeclareLaunchArgument('noise_removal_filter_max_size', default_value='80'),
|
||||
DeclareLaunchArgument('spatial_filter_alpha', default_value='0.5'),
|
||||
DeclareLaunchArgument('spatial_filter_diff_threshold', default_value='8'),
|
||||
|
||||
@@ -1139,18 +1139,8 @@ void OBCameraNode::publishColoredPointCloud(const std::shared_ptr<ob::FrameSet>
|
||||
depth_height, color_width, color_height);
|
||||
return;
|
||||
}
|
||||
auto device_info = device_->getDeviceInfo();
|
||||
CHECK_NOTNULL(device_info);
|
||||
auto pid = device_info->pid();
|
||||
OBCameraIntrinsic intrinsics;
|
||||
if (isGemini335PID(pid)) {
|
||||
auto color_profile = stream_profile_[COLOR]->as<ob::VideoStreamProfile>();
|
||||
CHECK_NOTNULL(color_profile.get());
|
||||
intrinsics = color_profile->getIntrinsic();
|
||||
} else {
|
||||
auto camera_params = pipeline_->getCameraParam();
|
||||
intrinsics = camera_params.rgbIntrinsic;
|
||||
}
|
||||
auto camera_params = pipeline_->getCameraParam();
|
||||
auto intrinsics = camera_params.rgbIntrinsic;
|
||||
float fdx = intrinsics.fx * ((float)(color_width) / intrinsics.width);
|
||||
float fdy = intrinsics.fy * ((float)(color_height) / intrinsics.height);
|
||||
fdx = 1 / fdx;
|
||||
@@ -1255,7 +1245,8 @@ std::shared_ptr<ob::Frame> OBCameraNode::processDepthFrameFilter(
|
||||
for (size_t i = 0; i < filter_list->count(); i++) {
|
||||
auto filter = filter_list->getFilter(i);
|
||||
CHECK_NOTNULL(filter.get());
|
||||
if (filter->isEnabled() && frame != nullptr && frame != nullptr) {
|
||||
if (filter->isEnabled() && frame != nullptr) {
|
||||
RCLCPP_INFO_STREAM(logger_, "Processing depth frame with filter: " << filter->type());
|
||||
frame = filter->process(frame);
|
||||
if (frame == nullptr) {
|
||||
RCLCPP_ERROR_STREAM(logger_, "Depth filter process failed");
|
||||
@@ -1288,15 +1279,24 @@ void OBCameraNode::onNewFrameSetCallback(std::shared_ptr<ob::FrameSet> frame_set
|
||||
auto pid = device_info->pid();
|
||||
auto color_frame = frame_set->getFrame(OB_FRAME_COLOR);
|
||||
if (isGemini335PID(pid)) {
|
||||
if (depth_frame_) {
|
||||
auto new_depth_frame = processDepthFrameFilter(depth_frame_);
|
||||
if (new_depth_frame && frame_set->getFrame(OB_FRAME_DEPTH) &&
|
||||
frame_set->getFrame(OB_FRAME_DEPTH)->data()) {
|
||||
memcpy(frame_set->getFrame(OB_FRAME_DEPTH)->data(), new_depth_frame->data(),
|
||||
new_depth_frame->dataSize());
|
||||
}
|
||||
}
|
||||
if (depth_registration_ && align_filter_ && depth_frame_ && color_frame) {
|
||||
auto new_frame = align_filter_->process(frame_set);
|
||||
if (new_frame) {
|
||||
auto new_frame_set = new_frame->as<ob::FrameSet>();
|
||||
CHECK_NOTNULL(new_frame_set.get());
|
||||
depth_frame_ = new_frame_set->getFrame(OB_FRAME_DEPTH);
|
||||
} else {
|
||||
RCLCPP_ERROR(logger_, "Failed to align depth frame to color frame");
|
||||
}
|
||||
}
|
||||
depth_frame_ = processDepthFrameFilter(depth_frame_);
|
||||
}
|
||||
if (enable_stream_[COLOR] && color_frame) {
|
||||
std::unique_lock<std::mutex> lock(color_frame_queue_lock_);
|
||||
|
||||
Reference in New Issue
Block a user