Bill Ma
Bill Ma

Reputation: 13

How would I detect the angle of these two lines?

enter image description here

As you can see in the picture a cone is generated when a person is using maps. I would like to know if it is possible to detect the two outer-lines of the cones like this but the ultimate goal is to use this information to find the angles at which the lines are at.

I was following this tutorial on hough-transform but end up with this. Looking for an easier way to find the angles if possible.

import numpy as np

from skimage.transform import hough_line
from scipy import misc

import matplotlib.pyplot as plt
from matplotlib import cm

image = misc.imread("cone.jpg", flatten=True)

# Classic straight-line Hough transform
h, theta, d = hough_line(image)

# Generating figure 1
fig, axes = plt.subplots(1, 3, figsize=(9, 3),
                         subplot_kw={'adjustable': 'box-forced'})
ax = axes.ravel()

ax[0].imshow(image, cmap=cm.gray)
ax[0].set_title('Input image')
ax[0].set_axis_off()

ax[1].imshow(np.log(1 + h),
             extent=[np.rad2deg(theta[-1]), np.rad2deg(theta[0]), d[-1], d[0]],
             cmap=cm.gray, aspect=1/1.5)
ax[1].set_title('Hough transform')
ax[1].set_xlabel('Angles (degrees)')
ax[1].set_ylabel('Distance (pixels)')
ax[1].axis('image')

ax[2].imshow(image, cmap=cm.gray)
for _, angle, dist in zip(*hough_line_peaks(h, theta, d)):
    y0 = (dist - 0 * np.cos(angle)) / np.sin(angle)
    y1 = (dist - image.shape[1] * np.cos(angle)) / np.sin(angle)
    ax[2].plot((0, image.shape[1]), (y0, y1), '-r')
ax[2].set_xlim((0, image.shape[1]))
ax[2].set_ylim((image.shape[0], 0))
ax[2].set_axis_off()
ax[2].set_title('Detected lines')

plt.tight_layout()
plt.show()

Upvotes: 1

Views: 794

Answers (1)

Kinght 金
Kinght 金

Reputation: 18331

Here is my result: enter image description here


You should take refer to this first: Detect Colored Segment in an image


My steps are:

  1. Convert it to HSV, and get the S
  2. Do canny on S
  3. Detect on canny edges, filter by some rulers.

Upvotes: 2

Related Questions