• Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Register
  • Login
ModalAI Forum
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
    • Register
    • Login

    /tof_depth image conversion problem

    ROS
    2
    4
    224
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • J
      Judoor 0
      last edited by 9 Jan 2025, 01:21

      Hello,
      I would like to convert the depth image from mono8 to UC16 while maintaining accurate depth references.
      Currently, I am doing this, but I am ending up with a flat image.

      void depthCallback(const sensor_msgs::ImageConstPtr &msg)
           {
               try
               {
      
                   // Convert the input ROS image to an OpenCV image
                   cv_bridge::CvImagePtr cv_ptr = cv_bridge::toCvCopy(msg, sensor_msgs::image_encodings::MONO8);
      
                   // Create a new image in CV_16UC1 format
                   cv::Mat converted_image;
                   cv_ptr->image.convertTo(converted_image, CV_16UC1, 256.0); // Scale mono8 values to 16-bit
      
                   // Publish the converted image
                   cv_bridge::CvImage out_msg;
                   out_msg.header = msg->header; // Keep the same header
                   out_msg.encoding = sensor_msgs::image_encodings::TYPE_16UC1;
                   out_msg.image = converted_image;
                   depth_pub_.publish(out_msg.toImageMsg());
                   // depth_pub_.publish(depth_msg);
               }
               catch (cv_bridge::Exception &e)
               {
                   ROS_ERROR("CvBridge Error in depthCallback: %s", e.what());
               }
           }
      

      Also, I want to mix it with an RGB image to get an RGBD image, I'm using the rgbdsync nodelet from rtabmap_ros. But I'm unable to make it work. Does someone already did that ?
      Julien

      J 1 Reply Last reply 9 Jan 2025, 21:11 Reply Quote 0
      • J
        Judoor 0 @Judoor 0
        last edited by 9 Jan 2025, 21:11

        Can you help me with the depth image conversion ?

        A 1 Reply Last reply 14 Jan 2025, 02:07 Reply Quote 0
        • A
          Alex Kushleyev ModalAI Team @Judoor 0
          last edited by Alex Kushleyev 14 Jan 2025, 15:30 14 Jan 2025, 02:07

          @Judoor-0 , can you please clarify what you mean a "flat image" ?

          Also, it seems you can convert the type to MONO16 right in toCvCopy call. Take a look at the implementation, which will automatically re-scale the data (from MONO8 to MONO16), so you will not lose any information (because in this case you will be upscaling, that is going from 8 bit to 16 bit): https://github.com/strawlab/vision_opencv/blob/master/cv_bridge/src/cv_bridge.cpp#L174

          So you can probably just have:

          cv_bridge::CvImagePtr cv_ptr = cv_bridge::toCvCopy(msg, sensor_msgs::image_encodings::MONO16);
          
          // Publish the converted image
          cv_bridge::CvImage out_msg;
          out_msg.header = msg->header; // Keep the same header
          out_msg.encoding = sensor_msgs::image_encodings::TYPE_16UC1;
          out_msg.image = cv_ptr->image;
          depth_pub_.publish(out_msg.toImageMsg());
          

          or i think you can just do the following because toCvCopy will automatically copy the header and update the encoding for you:

          cv_bridge::CvImagePtr cv_ptr = cv_bridge::toCvCopy(msg, sensor_msgs::image_encodings::MONO16);
          depth_pub_.publish(cv_ptr->toImageMsg());
          

          I have not tried running it, but hopefully should point you in the right direction!

          Alex

          J 1 Reply Last reply 14 Jan 2025, 08:15 Reply Quote 0
          • J
            Judoor 0 @Alex Kushleyev
            last edited by 14 Jan 2025, 08:15

            @Alex-Kushleyev thank you alex i'll try that

            1 Reply Last reply Reply Quote 0
            1 out of 4
            • First post
              1/4
              Last post
            Powered by NodeBB | Contributors