Расчеты нормализованной кросс-корреляции с нулевым средним в dm-скрипте - PullRequest
0 голосов
/ 02 июля 2018

Сейчас я пытаюсь создать dm-скрипт для расчета нормализованной взаимной корреляции (ZNCC) между двумя изображениями. При расчете ZNCC известно, что использование БПФ и интегрального изображения являются достаточно эффективной схемой. Поэтому я сделал следующий тестовый скрипт для вычисления интегрального изображения. Однако, по моему мнению, этот расчет недостаточно быстр для типичных размеров изображений с камер. У вас есть хорошая идея, чтобы улучшить скорость расчета интегральных расчетов изображения? Кроме того, кто-нибудь знает некоторые скрипты для быстрых расчетов ZNCC? Могу я забрать твои мозги?

Image integralImg( Image &inputImg ){
    Number nx, ny
    Number iu, iv, tmpval, fval, integ_pre1, integ_pre2, integ_pre3
    Image integImg := inputImg.ImageClone()
    integImg.SetName("Integral Image of " + inputImg.GetName())
    inputImg.GetSize(nx, ny)
    fval = inputImg.GetPixel(0, 0)
    integImg.SetPixel(0, 0, fval)
    FOR(iu = 1 ; iu < nx ; iu++){
        fval = inputImg.GetPixel(iu, 0)
        integ_pre1 = integImg.GetPixel(iu - 1, 0)
        integImg.SetPixel(iu, 0, fval + integ_pre1)
    }
    FOR(iv = 1 ; iv < ny ; iv++){
        fval = inputImg.GetPixel(0, iv)
        integ_pre2 = integImg.GetPixel(0, iv - 1)
        integImg.SetPixel(0, iv, fval + integ_pre2)
    }
    FOR(iv = 1 ; iv < ny ; iv++){
        FOR(iu = 1 ; iu < nx ; iu++){
            fval = inputImg.GetPixel(iu,iv)
            integ_pre1 = integImg.GetPixel(iu - 1, iv)
            integ_pre2 = integImg.GetPixel(iu, iv - 1)
            integ_pre3 = integImg.GetPixel(iu - 1, iv - 1)
            integImg.SetPixel(iu, iv, fval + integ_pre1 + integ_pre2 - integ_pre3)
        }
    }
    Return integImg
}
//
Number nx = 1024
Number ny = 1024
Image IMG := RealImage("test",4,nx,ny)
IMG = Random()
//
Image intIMG
intIMG := integralImg( IMG )
intIMG.ShowImage()

1 Ответ

0 голосов
/ 02 июля 2018

Можете ли вы не просто использовать команду

RealImage CrossCorrelate( RealImage source1, RealImage source2 )?

Если нет, можете ли вы объяснить мне, что именно отличается от ZNCC? (Обратите внимание, что вы можете легко сдвинуть каждое исходное изображение к среднему значению, равному нулю, на img -= mean(img))

...