R语言,image.CornerDetectionHarris包,Harris算法检出角点

03

按汇集程度显示
从左上方开始传递
# Sun Sep 27 12:25:35 2020 -

# 字符编码:UTF-8
# R 版本:R x64 4.0.2 for window 10
# cgh163email@163.com
# 个人笔记不负责任
# —— 拎了个梨🍐
.rs.restartR()

rm(list=ls());gc()
# install.packages('image.CornerDetectionHarris')
require(image.CornerDetectionHarris)
# image.CornerDetectionHarris包,Harris算法检出角点
#
# 实现Sánchez等人(2018)中描述的Harris角点检测算法.
#哈里斯角点检测算法的实现在下面网页中进行了解释。
#https://doi.org/10.5201/ipol.2018.229

# image_harris(
#   x,
#   k = 0.06,
#   sigma_d = 1,
#   sigma_i = 2.5,
#   threshold = 130,
#   gaussian = c("fast Gaussian", "precise Gaussian", "no Gaussian"),
#   gradient = c("central differences", "Sobel operator"),
#   strategy = c("all corners", "sort all corners", "N corners", "distributed N corners"),
#   Nselect = 1L,
#   measure = c("Harris", "Shi-Tomasi", "Harmonic Mean"),
#   Nscales = 1L,
#   precision = c("quadratic approximation", "quartic interpolation", "no subpixel"),
#   cells = 10L,
#   verbose = FALSE
# )
# x
# 一个magick-image类的对象或0-255范围内图像像素值的灰度矩阵,其中值从左上角开始。
#
# k
# 哈里斯的K参数。 默认值为0.06。
#
# sigma_d
# 用于推导的高斯标准偏差。 默认为1。
#
# sigma_i
# 高斯标准差积分。 默认为2.5。
#
# threshold
# 消除低值的阈值。 默认值为130。
#
# gaussian
# 平滑,可以是“精确高斯”,“快速高斯”或“无高斯”之一。 默认为“快速高斯”。
#
# gradient
# 计算梯度,可以是“中心差”或“ Sobel算子”之一。 默认为“中心差异”。
#
# strategy
# 选择输出角的策略,即“所有角”,“对所有角排序”,“ N个角”,“分布式N个角”中的一个。 默认为“所有角落”。
#
# Nselect
# 输出角数。 默认为1。
#
# measure
# “ Harris”,“ Shi-Tomasi”或“ Harmonic Mean”之一。 默认为“ Harris”。
#
# Nscales
# 用于滤除角落的比例尺数量。 默认为1。
#
# precision
# 子像素精度,“无子像素”,“二次逼近”,“四次插值”之一。 默认为'二次近似'
#
# cells
# 输出角的区域(1x1,2x2,...,NxN)。 默认为10
#
# verbose
# 逻辑,指示显示不同子步骤的轨迹



library(magick)
require(image.CornerDetectionHarris)
path <- system.file(package = "image.CornerDetectionHarris",
                    "extdata", "building.png")
x    <- image_read(path)
pts  <- image_harris(x)
pts

plt <- image_draw(x)
points(pts$x, pts$y, col = "red", pch = 20)
dev.off()
plt <- image_draw(x)
points(pts$x, pts$y,
       col = "red", pch = 20, cex = 5 * pts$strength / max(pts$strength))
dev.off()

# Sun Sep 27 13:02:15 2020 --
# 或从左上方开始传递灰度矩阵
mat <- image_data(x, channels = "gray")
mat <- as.integer(mat, transpose = FALSE)
mat <- drop(mat)
pts <- image_harris(mat)
plt <- image_draw(x)
points(pts$x, pts$y, col = "red", pch = 20)
dev.off()


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。