tamsayıları olan bir görüntü göz önüne alındığında , bu görüntünün herhangi bir isteğe göre noktasında enterpolasyonu olarak yazılabilir.m , n m ′ , n ′ben( m , n )m , nm', n'
ben~( m', n') = ∑m = ⌊ m'W -w+1⌊ m'⌋ +w Σn = ⌊ n'W -w+1⌊ n'⌋ +wben( m , n ) f ( m'- m , n'- n )
sonucu hala sadece gerçek altta yatan sürekli imge yaklaşık bir sonucudur ve farklı enterpolasyon fonksiyonlarının yaptığı tek şey, farklı sınırlamalar ve hedefler altındaki yaklaşım hatasını en aza indirmektir.ben~ben( x , y)
Sinyal işlemede enterpolasyon işlevinin ideal düşük geçiş filtresi olmasını istersiniz . Bununla birlikte, frekans tepkisi sonsuz destek gerektirir ve sadece bant sınırsız sinyaller için kullanışlıdır. Görüntülerin çoğu bantsız değildir ve görüntü işlemede göz önünde bulundurulması gereken başka faktörler de vardır (örneğin, gözlerin görüntüleri nasıl yorumladığı gibi. Matematiksel olarak en uygun olan görsel olarak çekici olmayabilir). Pencere işlevlerine çok benzeyen enterpolasyon işlevinin seçimi , eldeki özel probleme çok bağlıdır. Connes, Welch ve Parzen'i duymadım (belki de alana özeldirler), ancak diğerleri yukarıdaki Wikipedia bağlantısında verilen bir 1-D penceresi için matematiksel fonksiyonların 2-B eşdeğerleri olmalıdır.f( m , n )
Tıpkı zamansal sinyaller için pencere fonksiyonlarında olduğu gibi, bir görüntü enterpolasyonlu çekirdeğin frekans tepkisine bakarak ne yaptığını anlamak kolaydır. Gönderen pencere fonksiyonları üzerine cevabım :
Pencere işlevini tanımlayan iki ana faktör şunlardır:
- Ana lobun genişliği (yani, hangi frekans selesinin maksimum yanıtın yarısının gücü olduğu)
- Yan lobların zayıflaması (yani, yan lobların ana lobdan ne kadar uzakta olduğu). Bu, penceredeki spektral sızıntı hakkında bilgi verir.
Bu, enterpolasyon çekirdekleri için de geçerlidir. Seçim temel olarak frekans filtreleme (sidelobes zayıflatması), mekansal lokalizasyon (ana lob genişliği) ve zil (Gibbs efekti), takma, bulanıklaştırma, vb. Gibi diğer efektleri azaltma arasında bir takas şeklindedir. sinc çekirdeği ve Lanczos4 çekirdeği görüntüde "çalma" yapacaktır , oysa Gaussian bir yeniden örnekleme çalmaya başlamaz .
Mathematica'da farklı enterpolasyon fonksiyonlarının etkilerini görmenizi sağlayan basitleştirilmiş bir örnek:
true = ExampleData[{"TestImage", "Lena"}];
resampling = {"Nearest", "Bilinear", "Biquadratic", "Bicubic",
"Gaussian", "Lanczos", "Cosine", "Hamming", "Hann", "Blackman",
"Bartlett", "Connes", "Welch", "Parzen", "Kaiser"};
small = ImageResize[true, Scaled[1/4]];
Burada, true
bir "tam" görüntünün farklı eşdeğer olduğu kabul görüntüsünü temsil , ve daha küçük bir çaplı görüntüsünü temsil (nasıl bilmezler elde edilmiştir). Orijinaline aynı boyutta vermek üzere 4x ile enterpolasyon yapacağız . Aşağıda, bu enterpolasyonun sonuçlarını ve gerçek imajla karşılaştırmasını gösteriyorum:I ( m , n ) I ( m , n ) ˜ I ( m ′ , n ′ )ben( x ,y)small
ben( m , n )ben( m , n )ben~( m', n')
Farklı enterpolasyon işlevlerinin farklı etkileri olduğunu kendiniz görebilirsiniz. En yakın ve birkaç diğerleri çok kaba özelliklere sahiptir ve esasen pürüzlü çizgileri görebilirsiniz (ızgara görüntüsünü değil, tam boyutlu görüntüyü görebilirsiniz). Bikübik, biquadratic ve Parzen bunun üstesinden gelmekle birlikte çok fazla bulanıklığa neden olmaktadır. Tüm çekirdeğin içinde, Lanczos (görsel olarak) en çekici ve partinin en iyi işini yapan kişi gibi görünüyor.
Bu cevabı genişletmeye çalışacağım ve zamanım olduğunda farklılıkları gösteren daha sezgisel örnekler sunacağım. İnternette bulduğum bu oldukça kolay ve bilgilendirici makaleyi okumak isteyebilirsiniz (PDF uyarısı).