R?中的Sobel边缘检测器?

时间:2017-12-29 13:32:41

标签: r image-processing edge-detection sobel

我正在研究有关Sobel边缘检测的R任务。不幸的是,我关注的视频教程使用R进行其他任务,但切换到python进行图像处理 - 我猜他没有找到任何有用的R包用于图像卷积类型的工作(本教程来自去年)。我试过了EBImagemagick(这个似乎是新的),但没有找到太多。这个magick vignette讨论List<OfflineContent>(大约在页面的一半),但仅针对垂直边缘,而不是水平边缘。有人可以提出一些我可以使用的好材料吗?我对图像处理很新。

更新

我已经设法使用magick包(下面粘贴的代码)分别检测垂直和水平边缘,但不知道如何将它们组合以生成单个图像

image_convolve('Sobel')

在本教程中,接下来我需要通过计算这些边之间的欧几里德距离来合并library(magick) # get image img <- image_read("https://www.r-project.org/logo/Rlogo.png") print(image_info(img)) # define horizontal and vertical Sobel kernel Shoriz <- matrix(c(1, 2, 1, 0, 0, 0, -1, -2, -1), nrow = 3) Svert <- t(Shoriz) # get horizontal and vertical edges imgH <- image_convolve(img, Shoriz) imgV <- image_convolve(img, Svert) print(plot(as.raster(img))) # view original image print(plot(as.raster(imgH))) # view horizontal edges print(plot(as.raster(imgV))) # view vertical edges imgH,但imgV将无法与图像对象本身一起使用。我需要从这些图像中获取数据,但不知道如何。与dist()包中的imageData()类似的内容会有所帮助,但无法在EBImage中找到它。它具有magick函数,但其​​输出看起来很复杂。

更新(2):

我(希望)通过image_data()包(下面的代码)得到了我想要的东西。一旦我弄清楚如何从如上所述的边缘图像获取像素数据,以及如何将最终边缘数据转换回图像,我仍然希望使用EBImage包。

magick

感谢。

0 个答案:

没有答案