R でこの画像を滑らかにして、2 つのピークだけが残るようにするにはどうすればよいでしょうか?
これが 1 次元データの場合、移動平均を行うか、回帰関数を当てはめます。しかし、これらの方法を 2 次元行列に適用することに関する具体的な情報は見つかりませんでした。たとえばfilter()
、stats
パッケージから使用しようとしました。
クリギングについても考えましたが、これは補間に関するものですね。
R でこの画像を滑らかにして、2 つのピークだけが残るようにするにはどうすればよいでしょうか?
これが 1 次元データの場合、移動平均を行うか、回帰関数を当てはめます。しかし、これらの方法を 2 次元行列に適用することに関する具体的な情報は見つかりませんでした。たとえばfilter()
、stats
パッケージから使用しようとしました。
クリギングについても考えましたが、これは補間に関するものですね。
このパッケージには、ガウスぼかしを適用するspatstat
関数が含まれています。blur()
これにより、画像が滑らかになり、ほとんどのノイズが消え、2 つの主要なピークがはっきりと区別できるようになります。
この効果は次の図で見ることができ、特に 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")
focal
ラスター パッケージの関数を確認する必要があると思います。raster
例(ドキュメントからコピー):
r <- raster(ncols=36, nrows=18, xmn=0)
r[] <- runif(ncell(r))
# 3x3 mean filter
r3 <- focal(r, w=matrix(1/9,nrow=3,ncol=3))
ドキュメントには詳細が含まれています。