Zamandaki Korelasyonun Hesaplamalı Karmaşıklığı ve Frekans Uzayda Çarpma


12

Görüntü işleme teknikleri için 2d korelasyonu ile çalışıyorum (örüntü tanıma vb.). Zaman uzayda korelasyon üzerinden frekans uzayında çarpımın ne zaman kullanılacağını nasıl anlatacağım konusunda teorik bir yaklaşım olup olmadığını merak ediyordum. 2 x frekans alanı boyutları için açıkça daha hızlıdır, ancak örneğin 11 gibi küçük, asal boyutlara ne dersiniz?

Yanıtlar:


10

Bunun geleneksel bir CPU, tek çekirdekli, basit bir iş parçacığı, süslü bir donanım yürütmediğini varsayacağım. Bundan daha fazlası varsa, muhtemelen daha basit bir sistemin gerekçesinde yapılan düzeltmelerle açıklanabilir. Tartışmak için belirli bir sistem veya bir dizi olasılığı kapsayan bir ders kitabı veya araştırma makalesi olmadan daha fazlası söylenemez.

İki boyutun gücü hakkında endişelenmezdim. Önemli değil. Kelebek birimleri ile FFT algoritmaları ve sadece 2 değil, 3 veya herhangi bir küçük sayı faktörleri için var olan. Asal boyutlu veri serileri için de akıllı algoritmalar var. Bu geçici yapısı nedeniyle Wikipedia'dan alıntı yapmayı sevmiyorum , ama yine de:

asal N için bile tüm N için O (N log N) karmaşıklığına sahip FFT'ler vardır

Keyfi N için FFT uygulamaları GPL'd FFTW kütüphanesinde bulunabilir .

Ciddi mühendislik açısından tek güvenilir yol inşa etmek ve ölçmektir, ancak teoriden kesinlikle değişkenler arasındaki ilişkileri görmek için bir fikir edinebiliriz. Her yöntem için kaç aritmetik işlemin yapıldığına dair tahminlere ihtiyacımız var.

Çarpma, yıllar içinde muazzam bir şekilde küçülse bile, çoğu CPU'daki toplamadan hala daha yavaştır, bu yüzden çarpımları sayalım. Muhasebe için de muhasebe biraz daha düşünmek ve bir şeyleri takip etmek alır.

Her çıkış pikseli için yinelenen, aslında evrişim çekirdeğini kullanarak çoğaltan ve ekleyen basit bir evrişim, W² · K² çarpımlarına ihtiyaç duyar; burada W, görüntünün bir tarafı boyunca piksel sayısıdır (basitlik için kare olduğu varsayılır) ve K, boyuttur konveksiyon çekirdeğinin bir tarafı boyunca piksel olarak. Giriş görüntüsünün çekirdeğini ve aynı boyuttaki bölümünü kullanarak bir çıkış pikselini hesaplamak için K² çarpımları gerekir. Giriş görüntüsüyle aynı sayı olan tüm çıkış pikselleri için tekrarlayın.

(N mults ) doğrudan = W² · K²

Fourier uzayında işi yapmak için görüntüyü Fourier dönüştürmeliyiz. Bu, her sütuna ayrı ayrı ve ardından her satıra bir FFT uygulanarak yapılır. N veri noktaları için FFT yaklaşık 2N · log (N) çarpımı alır; N'nin bir sütun veya satırın uzunluğu olan W olmasını istiyoruz. Buradaki tüm logaritmalar temel iki.

W satırları ve W sütunları vardır, bu nedenle tüm FFT'ler yapıldıktan sonra 2W · (2W · log (W)) çarpımı yaptık. İkiye katlayın, çünkü çekirdeğin Fourier dönüşümü ile çarptıktan sonra, mantıklı görüntüye geri dönmek için verileri ters-Fourier yapmak zorundayız. Bu 8W² · log (W). Tabii ki, çekirdeğin Fourier dönüşümü ile çarpılarak başka bir W² çarpımı yapılmalıdır. (Bir kez yapılır, çıkış pikseli başına, satır veya herhangi bir şey için bir kez değil.) Bunlar karmaşık çarpmalardır, yani bu 4W² gerçek çarpmadır.

Yani, yukarı gitmedim (ve muhtemelen yapmadım)

(N mults ) Fourier = 4W² · (2 ​​· log (W) + 1)

İşleri ne zaman doğrudan yapmak istiyoruz? K, W² · K²'yi 4W² · (2 ​​· log (W) + 1) 'den küçük yapacak kadar küçük olduğunda. W²'nin ortak bir faktörü kolayca etkisiz hale getirilir. İdealleştirilmiş tahminlerle uğraştığımız için muhtemelen "+1" yi bırakabiliriz. +1, gerçek sayımlara göre hatalarda, eklemelerin sayılmamasından, döngü ek yüklerinden vb. Kaybolur. Bırakır:

K² < 8·log(W)

Bu, bir frekans uzayı yaklaşımı üzerinde doğrudan bir yaklaşım seçmek için yaklaşık koşuldur.

Aynı boyuttaki iki görüntünün korelasyonunun K = W büyüklüğünde bir çekirdekle kıvrık olması gibi olduğunu unutmayın.

Bu, tepegöz, opcodların boru hatları, float ve sabit noktaya karşı hesaba katılması ve GPGPU ve özel donanım ile pencereden atılması için rafine edilebilir ve tartışılabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.