Bu kısıtlamalar / kalite metrikleri ile filtre geçmek istiyorum, bir 2D görüntü var:
- Görüntüye "ekleyemiyorum", bu nedenle sonuçtaki her piksel <= girişteki karşılık gelen piksel olmalıdır.
- Düşük geçişli kesme frekansı, aşağıdakileri denemek için bir parametre olmalıdır:
- Bu filtrenin tekrar tekrar uygulanması sonucu önemli ölçüde değiştirmemelidir.
- Bu algoritmayı çalıştırmak için gereken süre (5MPix görüntü için 5 dakika makul görünüyor)
- Filtrelenen ışık miktarını en aza indirme.
Aşağıda, eksiklikleri ile birlikte denediğim bazı yaklaşımlar verilmiştir:
Gauss filtresi normal gibi, daha sonra kısıtlama 1'e uymak için sonucu aşağı çekin. Bu, ilk 3 noktaya çok uygundur, ancak gerektiğinden çok daha fazla ışık azaltır.
Düzeltmek için aralarındaki "düşük" noktalardan "yukarı" ve "aşağı" parabollerden "yukarı" parabolleri takmak. Bu, 1D'de harika çalışır, ancak önce yatay olarak uygulanır, ardından dikey olarak 2B'de kötü sonuçlar verir. Çok daha uzun sürüyor, ancak uygulamam için çok uzun değil. Bununla birlikte, bu filtrenin tekrar tekrar uygulanması sonucu büyük ölçüde değiştirecektir. (1D) girişi mükemmel bir "aşağı" parabol ise (hiç filtrelenmemelidir), başlangıç / bitişte oturan 2 "yukarı" parabolle değiştirilir.
En iyi parametreleri bulmak için 2B "temel" fonksiyonların başka bir formunu ve doğrusal çözmeyi kullanma. Bu sadece şu anda bir fikir, henüz uygulanmadı / test edilmedi.
Sinyal işleme alanındaki deneyim alanım neredeyse tamamen görüntü işlemedir, bu yüzden sinyal işlemenin diğer alanlarında aktif olan uzmanların girişiyle bu soruna alternatifler bulmayı umuyorum.
güncelleme 2011/08/18
Mevcut reaksiyonlara dayanarak, tipik bir girdinin grafikleri ve başlangıçta tarif ettiğim 3 yaklaşımın + şimdiye kadar aldığım önerilerin sonuçlarını ekleyerek işleri biraz daha netleştirmeye karar verdim. Kolay karşılaştırma için, bu örneklerde sadece 1D filtreleme kullandım.
Girdi verileri:
Gauss filtresi + gereksinime uyacak şekilde aşağı indirin (1).
Aşağı indirmenin sağ tarafta gereksiz ışık azalmalarıyla sonuçlandığını görebilirsiniz.
Paraboller
Bence bu oldukça mükemmel, ne yazık ki ilk yatay, sonra dikey uygulanarak 2D'ye mükemmel bir şekilde dönüşmüyor. Bu durumda, takılan parabolleri kayan nokta çözünürlüğünde değerlendirebileceğimi görüyorsunuz, bu küçük bir faydadır, ancak kesinlikle gerekli değildir.
Gri tonlama erozyonu
rwong'un önerisine dayanarak gri tonlama erozyonunu denedim. "Takılı" parabollerimle aynı parabolik şekle sahip bir yapılandırma elemanı kullandım. Sonuç neredeyse tamamen aynı, bu yüzden umut verici görünüyor. Ancak, hala birkaç sorun var: 1. Yapılandırma öğem "yeterince büyük" değildi (zaten 801 piksel genişliğinde olmasına rağmen) 1. Yalnızca "yukarı" parabollerim var, bir parabolden geçişi düzeltmek için "aşağı paraboller" yok bir sonrakine.
Medyan filtreleme
Sadece bütünlük için dahil, gerçekten istediğim şey değil.
ham veri
Ham girdi verilerini + çeşitli python komutlarını pastebin üzerine yapıştırdım, böylece aynı verilerle de deney yapabilirsiniz.
http://pastebin.com/ASnJ9M0p