如何在R中平滑此图片,以便仅保留两个峰值?

如果这将是一维数据,那么我将对其进行平均或拟合回归函数。但是我没有找到有关将这些方法应用于二维矩阵的非常具体的信息。例如,我尝试使用filter()包中的stats

我也考虑过克里金法,但这更多的是关于插值法,不是吗?

最佳答案

spatstat包含应用高斯模糊的函数blur()。这样可以使图像平滑,大部分噪点消失并且两个主峰清晰可辨。

在下图中可以看到效果,并且效果非常显着,尤其是在3d图中。



生成图片的代码是:

library(jpeg)
library(fields)
library(spatstat)

picture <- readJPEG("~/Downloads/spectrogram.png.jpeg")
picture2 <- as.matrix(blur(as.im(picture), sigma=6))

layout(matrix(c(1:4), nrow=2))
image.plot(picture, col=gray.colors(50), main="original image", asp=1)
image.plot(picture2, col=gray.colors(50), main="blurred with sigma = 6", asp=1)
drape.plot(1:nrow(picture), 1:ncol(picture), picture, border=NA, theta=0, phi=45, main="original spectrogram")
drape.plot(1:nrow(picture), 1:ncol(picture), picture2, border=NA, theta=0, phi=45, main="blurred with sigma = 6")

关于r - R中的图像平滑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17022379/

10-12 19:45