hough_line | R Documentation |
Two algorithms are used, depending on the input: if the input is a pixset then the classical Hough transform is used. If the input is an image, then a faster gradient-based heuristic is used. The method returns either an image (the votes), or a data.frame. In both cases the parameterisation used is the Hesse normal form (theta,rho), where a line is represented as the set of values such that cos(theta)*x + sin(theta)*y = rho. Here theta is an angle and rho is a distance. The image form returns a histogram of scores in (rho,theta) space, where good candidates for lines have high scores. The data.frame form may be more convenient for further processing in R: each line represents a pair (rho,theta) along with its score. If the 'shift' argument is true, then the image is assumed to start at x=1,y=1 (more convenient for plotting in R). If false, the image begins at x=0,y=0 and in both cases the origin is at the top left.
hough_line(im, ntheta = 100, data.frame = FALSE, shift = TRUE)
im |
an image or pixset |
ntheta |
number of bins along theta (default 100) |
data.frame |
return a data.frame? (default FALSE) |
shift |
if TRUE, image is considered to begin at (x=1,y=1). |
either an image or a data.frame
Simon Barthelme
#Find the lines along the boundary of a square
px <- px.square(30,80,80) %>% boundary
plot(px)
#Hough transform
hough_line(px,ntheta=200) %>% plot
df <- hough_line(px,ntheta=800,data.frame=TRUE)
#Plot lines with the highest score
plot(px)
with(subset(df,score > quantile(score,.9995)),nfline(theta,rho,col="red"))
plot(boats)
df <- hough_line(boats,ntheta=800,data=TRUE)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.