如何计算R中具有互相关的图像的位移?

时间:2019-05-27 18:20:30

标签: r

我正在比较两个卫星图像(一个光学图像和一个SAR),我想确定它们之间的位移。两幅图像的空间分辨率均为30m。我想分析像素位移(例如,大于一半的像素= 15m)。我找到了一个代码,并将其修改为我的数据。该脚本会生成一个互相关的图像,但是我不理解生成图形时必须要做的工作,在图形中我可以看到以像素为单位的位移(即以米为单位)。例如,如果位移大于15m,等等。 这些是我正在分析的图像。

Here my images: first optical and then SAR

请给我一个帮助!! :)

## read my images with raster 
f1 <- as.matrix(readPNG("optical.png", package="png"))
f2 <- as.matrix(readPNG("sar.png", package="png"))  
## take the fft of the first  frame
F1 <- fft(f1)
## take the Conjugate fft of the second frame
noise.b <- runif(length(f2),min(range(f2)),max(range(f2)))
f2 <- noise.b+f2
F2.c <- Conj(fft(f2))

## calculate the cross power spectrum according to the wiki article
R <- (F1*F2.c)/abs(F1*F2.c)
## take the inverse fft of R
r <- fft(R,inv=TRUE)/length(R)
## because the zero valued imaginary numbers are not needed
r <- Re(r)
## show the normalized cross-correlation
image(r)
## find the max in the cross correlation matrix, or the phase shift -
## between the two images
min.err <- which(r==max(r),arr.ind=TRUE)
shift <- (dim(f1)+3)/2-min.err

这是互相关的结果。

enter image description here

0 个答案:

没有答案