3D visionExplainer

Full resolution color with depth point cloud

Preserve full resolution color with depth point cloud processing, separate native and registered streams, and verify mapping and calibration.

LumaSpec Vision9 min read Share on LinkedIn

On this page 10 sections
  1. 01Separate the native image from the registered output
  2. 02Understand which grid determines cloud size
  3. 03Work through the point-count and memory arithmetic
  4. 04Generate geometry from depth and sample color by projection
  5. 05Keep marker coordinates tied to their original image
  6. 06Branch synchronized frames without corrupting their metadata
  7. 07Check hardware capability before choosing an architecture
  8. 08Verify the outputs before trusting detections
  9. 09When the depth-grid approach is not enough
  10. 10Questions

A colored point cloud does not have to use the color camera's pixel grid. You can retain a large, unregistered color image for marker tracking while generating geometry from a smaller depth image. The key is separating acquisition from registration. This approach helps when a convenience pipeline resizes both streams together, leaving your tracker with fewer pixels or producing more cloud entries than your application needs.

Separate the native image from the registered output

Treat the native color image, depth image, and colored point cloud as distinct outputs. Here, native color means the selected color stream before cross-camera registration, not necessarily raw sensor data.

Branch the acquired color frame before applying registration. Send one branch to the marker tracker with its matching calibration. Use the other branch to supply texture for points generated from depth.

Output Sampling grid Intended use Calibration to retain
Native color image Selected color stream grid Marker detection and pose estimation Color intrinsics and distortion model
Native depth image Selected depth stream grid Geometry generation Depth intrinsics and depth scale
Color registered to depth Depth grid Optional texture image for the cloud Depth-grid geometry plus registration metadata
Colored point cloud Valid depth samples Compact geometry with sampled color Coordinate frame, units, and timestamp

Registration should create a derived output rather than replace the only available color image. If your driver exposes only a registered image, check its documented native-stream outputs first. Otherwise, use the manufacturer's supported SDK interfaces to branch the data before the alignment stage.

Understand which grid determines cloud size

A depth-grid cloud starts with one candidate point per depth pixel. Invalid depth, filtering, and region selection can reduce that count. Sampling a larger color image does not require adding more geometry points.

By contrast, a pipeline that registers depth onto the color grid may create a much larger depth raster. A subsequent cloud generator can then allocate an entry for each output pixel, depending on its implementation. More entries do not necessarily mean more independent depth measurements.

Maximum depth-grid entries = depth width × depth height Maximum color-grid entries = color width × color height Grid-size ratio = color-grid entries / depth-grid entries

The distinction between image size and measurement density also matters when stereo depth output dimensions appear unchanged. Output resolution, registration target, and depth filtering are separate decisions.

For additional texture channels, the same separation principle applies. The guide to combining depth, color, and infrared in a point cloud explains the broader data association problem.

Work through the point-count and memory arithmetic

Consider an illustrative application with a 3840 × 2160 color stream and a 640 × 576 depth stream. These are application examples, not specifications for the products below.

The candidate cloud sizes are:

Depth grid = 640 × 576 = 368,640 entries Color grid = 3840 × 2160 = 8,294,400 entries Ratio = 8,294,400 / 368,640 = 22.5

Keeping the cloud on the depth grid therefore gives 22.5 times fewer candidate entries than using the color grid. The full-resolution color image remains available separately.

For a hypothetical cloud layout using 16 bytes per entry, including coordinates and packed color:

Depth-grid storage = 368,640 × 16 = 5,898,240 bytes Color-grid storage = 8,294,400 × 16 = 132,710,400 bytes

That is approximately 5.90 MB versus 132.71 MB, using decimal megabytes. Actual storage depends on field types, padding, organization, and whether invalid points remain in the buffer. These figures exclude images, processing buffers, and transport overhead.

Notice that the image dimensions also have different aspect ratios. Their horizontal scale ratio is 6, while their vertical scale ratio is 3.75. Resizing coordinates independently still does not account for camera separation, lens distortion, or different fields of view.

Generate geometry from depth and sample color by projection

For each valid depth pixel, first reconstruct its position in the depth optical frame. The following pinhole equations assume an undistorted depth pixel and a depth value representing axial distance, not radial range.

X_d = (u_d - cx_d) × Z_d / fx_d Y_d = (v_d - cy_d) × Z_d / fy_d P_d = [X_d, Y_d, Z_d] P_c = R_cd × P_d + t_cd u_c = fx_c × X_c / Z_c + cx_c v_c = fy_c × Y_c / Z_c + cy_c

Here, the intrinsics describe each selected image mode. The rotation and translation transform depth-frame coordinates into the color camera frame. Translation and point coordinates must use consistent units.

Apply the color camera's documented distortion model when projecting into a distorted color image. If the color image is already rectified, use its rectified calibration instead. Manufacturer projection functions are useful because they handle the supported camera model and stream conventions.

Reject projections behind the color camera or outside its image. Sample the remaining color coordinates using a declared interpolation method. Nearest-neighbor sampling preserves discrete pixel values; bilinear sampling can smooth texture but mixes neighboring colors.

The projection can be used directly to attach color to cloud points. An intermediate color-on-depth image is optional.

If you export points in another frame, keep that transformation separate from texture projection. The guide to optical-frame and camera-frame transformations covers the coordinate conventions that commonly cause confusion.

Keep marker coordinates tied to their original image

Run the marker tracker on the full-resolution color branch. Supply calibration for that exact image size, crop, distortion state, and orientation.

A marker corner reported at a color-image coordinate cannot be used directly as an index into the smaller depth image. The two coordinates belong to different projection systems. Even matching image dimensions would not make their pixels interchangeable.

Choose the mapping method according to what the tracker needs:

  • Color-camera pose only: estimate marker pose using color calibration and the known marker geometry. Depth registration is not required for this calculation.
  • A marker pose expressed in the depth frame: transform the estimated pose using the calibrated relationship between the cameras, with the transform direction checked explicitly.
  • Measured depth near a marker: project valid depth samples into the color image, then associate samples with the marker region. Account for occlusion, boundary mixing, and missing measurements.

Do not assume the marker center has reliable depth. A small printed target may straddle depth discontinuities, and its surface may not produce valid measurements everywhere. Inspect the associated samples rather than accepting a single pixel without checks.

The guide to mapping image detections to depth points develops this association process for image regions.

Branch synchronized frames without corrupting their metadata

A useful processing sequence is:

  1. Acquire the selected native color and depth modes.
  2. Record timestamps, frame identifiers, and calibration identifiers.
  3. Retain the native color frame for the tracker.
  4. Generate points from valid native depth samples.
  5. Project those points into the associated color frame for texture sampling.
  6. Publish each output with its own dimensions, coordinate frame, and timing information.

Branching does not always require copying the full color image. Immutable shared buffers can work when the SDK and processing framework support them. However, a retained reference is unsafe if acquisition later reuses its memory. Follow the documented buffer ownership rules.

Time alignment matters even when calibration is correct. As an estimate, an object moving laterally at 0.5 m/s travels 10 mm during a 20 ms mismatch:

Motion mismatch = speed × time difference = 0.5 m/s × 0.020 s = 0.010 m = 10 mm

Trigger synchronization and exposure timing affect the actual association. Matching arrival times alone is not proof of simultaneous capture. Avoid pairing a delayed depth frame with whichever color frame happens to be newest.

Check hardware capability before choosing an architecture

Start with the required outputs, not a registration setting. Confirm that the device and supported software can deliver the selected native color and depth streams simultaneously. Also verify access to calibration, timestamps, and projection functions.

The 3D sensors category includes several sensing methods, so a product's category alone does not establish native color support. The camera finder helps narrow the hardware options; simultaneous modes and SDK behavior still require confirmation.

The MV-DPS200P-02 is cataloged as a projected structured-light camera. Its listing does not establish the native-color branching capability discussed here.

3D sensorsHikrobot MV-DPS200P-02 Projected structured-light 3D cameraMV-DPS200P-02
Type
Stereo / structured light
$8,829.00 · quotedView and quote

If the depth device cannot supply the required color image, a separate color camera is another architecture to evaluate. The area scan cameras category provides that selection route.

The MV-CU020-90GC is cataloged as a color area scan camera with a global shutter and GigE interface. It is a separate-camera candidate to evaluate, not a verified pairing with the depth device above.

Area scan camerasHikrobot MV-CU020-90GC 2.5 MP Area Scan Camera, GigE, GMAX4002, ColorMV-CU020-90GC
Sensor format
1/1.7"
Lens mount
C-mount
Interface
GigE
Resolution
Up to 3 MP
$309.00View partBuild a system with it

Separate cameras require mechanical stability, suitable timing, overlapping coverage, and extrinsic calibration. The guide to placing multiple cameras in a shared coordinate frame addresses that additional work.

Verify the outputs before trusting detections

Test a static scene first, then introduce motion. Save representative images and clouds together with their metadata so you can compare the processing branches.

Use this acceptance checklist:

  • Native image dimensions: confirm that the tracker receives the selected color mode, not the registered texture image.
  • Unchanged tracker calibration: verify that registration has not replaced the native intrinsics or distortion metadata.
  • Depth-grid organization: check cloud dimensions or candidate count before invalid points are removed.
  • Projection accuracy: inspect interior surfaces and depth edges separately, across the overlapping view.
  • Transform direction: verify a known displacement along each axis rather than relying on a visually plausible overlay.
  • Timing: compare frame timestamps and exposure information during motion.
  • Buffer lifetime: confirm that saved tracker images do not change after later frames arrive.
  • Restart behavior: repeat the test after reconnecting and restoring the selected stream modes.

For calibration capture and stream selection, use the stereo target and stream setup guide. Where geometry itself has gaps, diagnose missing point-cloud measurements before treating the problem as texture registration.

Set acceptance tolerances from the inspection task. A visually attractive colored cloud can still be unsuitable for associating a small marker with a nearby surface.

When the depth-grid approach is not enough

Keeping geometry on the depth grid saves processing and storage, but it cannot recover detail the depth sensor never measured. A high-resolution marker detection does not create equally detailed surface geometry.

You may need another approach when the required feature is smaller than the available depth sampling, falls outside overlapping coverage, or is frequently hidden from one camera. Moving parts may also require tighter synchronization than the existing hardware provides.

Color-grid registration can still be useful when downstream software requires depth indexed by color pixels. Keep that as another derived output, retain validity information, and do not confuse a denser raster with additional measured detail.

Before ordering, document the native color size, depth size, required measurement tolerance, motion conditions, and acceptable latency. Use the camera configurator to organize the component choices, or request application support to confirm the required stream modes and calibration access before selecting hardware.

Questions

Can I keep full-resolution color while generating a smaller colored cloud?

Yes, when the hardware and software expose both native streams and the required calibration. Retain the color image before cross-camera registration, then build geometry from depth samples and project those samples into color. Confirm simultaneous stream support rather than assuming every colored-cloud interface provides a separate native image.

Why does enabling color sometimes make the point cloud much larger?

A registration pipeline may target the color image grid and create a depth output with matching dimensions. Its cloud generator can then allocate entries across that larger raster. Check the registration target and cloud organization; a larger array does not necessarily contain more independent depth measurements.

Can I map marker coordinates to depth by dividing by the image-size ratio?

Usually not. Pixel ratios ignore the cameras' relative positions, optical models, cropping, and visibility differences. Use calibrated projection or a documented registration output to associate measurements. A marker pose calculated entirely from color can instead be transformed between camera frames using the known extrinsic calibration.

Do I need a color-on-depth image before creating a colored point cloud?

No. The required relationship is between each valid depth point and its corresponding color-image coordinate. You can sample the native color frame directly during cloud generation. A separate registered texture image is useful for inspection or downstream interfaces, but it is not mathematically necessary.

What should I confirm before selecting cameras for this workflow?

Check simultaneous native stream modes, calibration access, timestamp behavior, supported projection functions, and buffer ownership. For separate devices, also check synchronization options, overlapping coverage, and mounting stability. Request confirmation for the complete acquisition workflow rather than relying on resolution or interface specifications alone.