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()