Как рассчитать смещение изображения с взаимной корреляцией в R? - PullRequest
0 голосов
/ 27 мая 2019

Я сравниваю два спутниковых изображения (одно оптическое и одно SAR) и хочу определить смещение между ними.Оба изображения имеют пространственное разрешение 30м.Я хотел бы проанализировать смещение в пикселях (например, больше, чем половина пикселя = 15 м).Я нашел код и адаптировал его к своим данным.Скрипт генерирует изображение с взаимной корреляцией, но я не понимаю, что мне нужно сделать, чтобы сгенерировать графику, где я могу видеть смещение в пикселях (то есть в метрах).Например, если есть смещения более 15 м и т. Д. Это изображения, которые я анализирую.

Вот мои изображения: сначала оптический, а затем 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

Вот результат кросс-корреляции.

введите описание изображения здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...