在读取imager::hough_circle
的帮助文件时,将给出以下示例。在示例中,它提供了一个函数nms
(非最大值抑制)。
nms <- function(im,sigma) { im[dilate_square(im,sigma) != im] <- 0; im}
我用Google搜索,发现非最大值抑制是挑选出最可能的区域。但是,我仍然对该功能感到困惑,对它的工作原理一无所知,想寻求指导。
#Examples
im <- load.example('coins')
px <- cannyEdges(im)
#Find circles of radius 20
hc <- hough_circle(px,20)
plot(hc)
#Clean up, run non-maxima suppression
nms <- function(im,sigma) { im[dilate_square(im,sigma) != im] <- 0; im}
hc.clean <- isoblur(hc,3) %>% nms(50)
#Top ten matches
df <- as.data.frame(hc.clean) %>%
dplyr::arrange(desc(value)) %>% head(10)
with(df,circles(x,y,20,fg="red",lwd=3))