A forestry surveying apparatus comprising a controller, the controller being configured to: receive (210, 310, 510) an image stream representing a video sequence captured by a camera that is moved around; wherein the video sequence represents forestry related objects; determine (220, 320, 520) a camera pose for first image frame of the video sequence and a camera pose for a second image frame of the video sequence; wherein the controller is configured to receive sensor data and determine the camera poses by utilizing Simultaneous Localization And Mapping, SLAM, and/or wherein the controller is configured to receive sensor data and determine the camera poses based on the received sensor data, wherein the sensor data relates to positional information the camera, wherein the positional information comprises Global Navigation Satellite System, GNSS, data, and motion data, such as accelerometer or gyro data; wherein the controller is further configured to: determine a point cloud by estimating a depth map based on the calculated camera poses and the corresponding image frames; determine a ground model by fitting a single plane to a set of points in the point cloud with a high enough confidence; split the point cloud into a 2D grid from the normal direction of the plane; filter out all points that are within a threshold distance to the plane; find all clusters with many remaining points that are outside the threshold distance to the plane and assume these are trees; approximate the trees by fitting geometrical shapes to these clusters; thereby generating (240, 340) a three-dimensional model representing forestry related objects. receive (210, 310, 510) an image stream representing a video sequence captured by a camera that is moved around; wherein the video sequence represents forestry related objects; determine (220, 320, 520) a camera pose for first image frame of the video sequence and a camera pose for a second image frame of the video sequence; wherein the controller is configured to receive sensor data and determine the camera poses by utilizing Simultaneous Localization And Mapping, SLAM, and/or wherein the controller is configured to receive sensor data and determine the camera poses based on the received sensor data, wherein the sensor data relates to positional information the camera, wherein the positional information comprises Global Navigation Satellite System, GNSS, data, and motion data, such as accelerometer or gyro data; wherein the controller is further configured to: determine a point cloud by estimating a depth map based on the calculated camera poses and the corresponding image frames; determine a ground model by fitting a single plane to a set of points in the point cloud with a high enough confidence; split the point cloud into a 2D grid from the normal direction of the plane; filter out all points that are within a threshold distance to the plane; find all clusters with many remaining points that are outside the threshold distance to the plane and assume these are trees; approximate the trees by fitting geometrical shapes to these clusters; thereby generating (240, 340) a three-dimensional model representing forestry related objects.