Bird
Raised Fist0
Computer Visionml~10 mins

LiDAR data processing basics in Computer Vision - Interactive Code Practice

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to load LiDAR point cloud data from a file.

Computer Vision
import open3d as o3d

pcd = o3d.io.read_point_cloud([1])
print(pcd)
Drag options to blanks, or click blank then click option'
A"image.png"
B"data.txt"
C"data.las"
D"video.mp4"
Attempts:
3 left
💡 Hint
Common Mistakes
Using image or video file names instead of point cloud files.
Forgetting to put the filename in quotes.
2fill in blank
medium

Complete the code to visualize the loaded LiDAR point cloud.

Computer Vision
import open3d as o3d

pcd = o3d.io.read_point_cloud("data.las")
o3d.visualization.[1]([pcd])
Drag options to blanks, or click blank then click option'
Adraw_geometries
Bplot
Cshow
Ddisplay
Attempts:
3 left
💡 Hint
Common Mistakes
Using incorrect visualization function names.
Forgetting to import the visualization module.
3fill in blank
hard

Fix the error in the code to compute the normals of the point cloud.

Computer Vision
pcd = o3d.io.read_point_cloud("data.las")
pcd.estimate_normals(search_param=o3d.geometry.KDTreeSearchParam[1](radius=0.1, max_nn=30))
Drag options to blanks, or click blank then click option'
ARadius
Bradius
Cradius_search
DRadiusSearch
Attempts:
3 left
💡 Hint
Common Mistakes
Using lowercase or incorrect class names.
Misspelling the class name.
4fill in blank
hard

Fill both blanks to create a voxel grid downsampling of the point cloud.

Computer Vision
pcd = o3d.io.read_point_cloud("data.las")
downsampled_pcd = pcd.[1](voxel_size=[2])
Drag options to blanks, or click blank then click option'
Avoxel_down_sample
Bdownsample
Cvoxel_size
D0.05
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong method names like 'downsample'.
Passing voxel size as a string instead of a float.
5fill in blank
hard

Fill all three blanks to filter points based on height (z coordinate) in the point cloud.

Computer Vision
points = np.asarray(pcd.points)
filtered_points = points[points[:, [1]] [2] [3]]
filtered_pcd = o3d.geometry.PointCloud()
filtered_pcd.points = o3d.utility.Vector3dVector(filtered_points)
Drag options to blanks, or click blank then click option'
A2
B>
C1.5
D0
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong coordinate index for z.
Using wrong comparison operator.
Using a string instead of a number for height.

Practice

(1/5)
1. What does LiDAR data primarily represent in computer vision?
easy
A. A sequence of text commands for robots
B. A collection of 3D points showing object shapes and distances
C. A 2D image with color information
D. A sound wave pattern for audio analysis

Solution

  1. Step 1: Understand LiDAR data basics

    LiDAR uses lasers to measure distances and creates 3D points representing shapes and distances.
  2. Step 2: Compare options to definition

    Only A collection of 3D points showing object shapes and distances describes 3D points showing shapes and distances, matching LiDAR data.
  3. Final Answer:

    A collection of 3D points showing object shapes and distances -> Option B
  4. Quick Check:

    LiDAR = 3D points [OK]
Hint: LiDAR = 3D points, not images or sounds [OK]
Common Mistakes:
  • Confusing LiDAR with 2D images
  • Thinking LiDAR is audio data
  • Assuming LiDAR is text commands
2. Which Python code snippet correctly filters LiDAR points with height above 2 meters from a list points where each point is (x, y, z)?
easy
A. filtered = [p for p in points if p[2] > 2]
B. filtered = [p for p in points if p[1] > 2]
C. filtered = [p for p in points if p[0] > 2]
D. filtered = [p for p in points if p[3] > 2]

Solution

  1. Step 1: Identify height coordinate in point tuple

    Points are (x, y, z), where z is height, so index 2 is height.
  2. Step 2: Check filtering condition

    Filter points where z > 2 means p[2] > 2, matching filtered = [p for p in points if p[2] > 2].
  3. Final Answer:

    filtered = [p for p in points if p[2] > 2] -> Option A
  4. Quick Check:

    Height is z = p[2] [OK]
Hint: Height is the third value in (x,y,z) tuples [OK]
Common Mistakes:
  • Using wrong index for height
  • Trying to access p[3] which is out of range
  • Filtering by x or y instead of z
3. Given this Python code to calculate mean height from LiDAR points, what is the output?
points = [(1,2,3), (4,5,6), (7,8,9)]
mean_height = sum(p[2] for p in points) / len(points)
print(round(mean_height, 2))
medium
A. 8.0
B. 7.0
C. 5.0
D. 6.0

Solution

  1. Step 1: Extract z values from points

    Heights are 3, 6, and 9 from each tuple's third element.
  2. Step 2: Calculate mean height

    Sum = 3 + 6 + 9 = 18; count = 3; mean = 18 / 3 = 6.0
  3. Final Answer:

    6.0 -> Option D
  4. Quick Check:

    Mean height = 6.0 [OK]
Hint: Sum heights then divide by count for mean [OK]
Common Mistakes:
  • Summing wrong coordinate index
  • Dividing by wrong length
  • Not rounding output
4. Find the error in this code that tries to filter LiDAR points below 1 meter height:
points = [(0,0,0.5), (1,1,1.5), (2,2,0.8)]
filtered = [p for p in points if p[3] < 1]
print(filtered)
medium
A. SyntaxError due to wrong list comprehension
B. No error, code works correctly
C. IndexError because p[3] does not exist
D. filtered list will be empty due to condition

Solution

  1. Step 1: Check point tuple length

    Each point has 3 elements indexed 0,1,2; p[3] is out of range.
  2. Step 2: Identify error type

    Accessing p[3] causes IndexError at runtime.
  3. Final Answer:

    IndexError because p[3] does not exist -> Option C
  4. Quick Check:

    Tuple length = 3, max index = 2 [OK]
Hint: Check tuple length before indexing [OK]
Common Mistakes:
  • Assuming p[3] exists
  • Thinking it's a syntax error
  • Ignoring runtime errors
5. You want to remove noisy LiDAR points that are too far from the ground (height > 10 meters) and then calculate the average height of remaining points. Which sequence of steps is correct?
hard
A. Filter points with height ≤ 10, then compute mean height from filtered points
B. Compute mean height first, then filter points with height ≤ 10
C. Filter points with height > 10, then compute mean height from filtered points
D. Compute mean height of all points, ignoring filtering

Solution

  1. Step 1: Filter noisy points correctly

    Remove points with height > 10 means keep points with height ≤ 10.
  2. Step 2: Calculate mean height after filtering

    Compute average height only from filtered points to get accurate mean.
  3. Final Answer:

    Filter points with height ≤ 10, then compute mean height from filtered points -> Option A
  4. Quick Check:

    Filter first, then average [OK]
Hint: Filter noise before averaging [OK]
Common Mistakes:
  • Averaging before filtering noise
  • Filtering wrong height range
  • Ignoring filtering step