Skip to content

Heatmap lines corresponding with detected/matched line segments? #74

@sunshineinsandiego

Description

@sunshineinsandiego

Hi - I am using the SOLD2 model for line detection and matching based on the kornia tutorial here.. I asked this on the kornia github, but it seems like this is a better avenue for questions given your development of the model.

I would like to retrieve the lines on outputs['line_heatmap] that correspond with the final detected / matched line segments. For example: If outputs['line_segments'] returns a line segment with endpoints [(y1, x1), (y2, x2)], how can I find the lines on outputs['line_heatmap] that correspond with that line segment?

My understanding of the returned information from outputs is:

  • outputs['line_heatmap] may include detected curves/edges that are not necessarily completely straight line segments.
  • outputs['line_heatmap] values are used in conjunction with the outputs['junction_heatmap] values to determine potential line segments.
  • outputs['line_segments] are straight line segments parameterized by two endpoints. These straight line segments may not reflect the lines detected in line_heatmap

So given two reported endpoints of a straight line segment from outputs['line_segments'], can I retrieve the (potentially not straight) line from outputs['line_heatmap'] that corresponds to that line segment?

My first thought is simply to use outputs['line_segments'] to find a straight line segment. Then search in a vicinity of the endpoints of the straight line segment as well as in a region along that straight line segment for the pixels in outputs['line_heatmap'] that have the highest intensity. My assumptions are:

  • The two reported endpoints of a line segment from outputs['line_segments'] will also be on a line in the line_heatmap (i.e. the coordinates of the endpoints will have a high pixel intensity in the heatmap).
  • There will be lines on the 'line_heatmap' that correspond with every reported line segment in outputs['line_segments'].
  • The highest intensity pixels in 'line_heatmap' that are close to the endpoints from 'line_segments' and close to the straight line parameterized by 'line_segments' are used to determine the final output line segment.

Ideally, for a single reported line segment in outputs['line_segments'], I would like to return a list of pixel coordinates [(x1, y1), (x2, y2), (x3, y3),...,(xn, yn)] that represents the pixels on the detected line in outputs['line_heatmap'] that is associated with the that single reported line segment.

Is there a way to do this using kornia? Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions