Gauss Filtreleme görüntü işleme alanında yaygın olarak kullanılmaktadır. Görüntünün gürültüsünü azaltmak için kullanılır. Bu yazıda bir oluşturacağız 2B Gauss Çekirdeği. 2B Gauss Çekirdeği aşağıda verilen Gauss Dağılımı'nı takip eder.
G(x y)=frac{1}{2pi sigma ^{2}}e^{-frac{x^{2}+y^{2}}{2sigma ^{2}}}
Burada y, dikey eksen boyunca orijinden olan mesafedir, x, yatay eksen boyunca orijinden olan mesafedir ve ? standart sapmadır.
Gauss Filtreleme Nedir?
Gauss Filtreleme, görüntü işlemede görüntüleri yumuşatmak ve gürültüyü azaltmak için kullanılan bir tekniktir. Merkezi piksellere daha fazla, çevredeki piksellere ise daha az ağırlık veren, Gauss işlevi adı verilen bir matematiksel işlev kullanarak bulanıklaştırma efekti uygulayarak çalışır. Bu, gren veya küçük yapılar gibi istenmeyen ayrıntıların ortadan kaldırılmasına yardımcı olan doğal görünümlü bir bulanıklığa neden olur. Gauss filtreleme, kenar algılama, nesne tanıma ve görüntü iyileştirme gibi görevlerde bir ön işleme adımı olarak yaygın şekilde kullanılır ve algoritmaların önemli özelliklere odaklanmasını kolaylaştırır.
C++'da uygulama
C++// C++ program to generate Gaussian filter #include #include #include using namespace std; // Function to create Gaussian filter void FilterCreation(double GKernel[][5]) { // initialising standard deviation to 1.0 double sigma = 1.0; double r s = 2.0 * sigma * sigma; // sum is for normalization double sum = 0.0; // generating 5x5 kernel for (int x = -2; x <= 2; x++) { for (int y = -2; y <= 2; y++) { r = sqrt(x * x + y * y); GKernel[x + 2][y + 2] = (exp(-(r * r) / s)) / (M_PI * s); sum += GKernel[x + 2][y + 2]; } } // normalising the Kernel for (int i = 0; i < 5; ++i) for (int j = 0; j < 5; ++j) GKernel[i][j] /= sum; } // Driver program to test above function int main() { double GKernel[5][5]; FilterCreation(GKernel); for (int i = 0; i < 5; ++i) { for (int j = 0; j < 5; ++j) cout << GKernel[i][j] << 't'; cout << endl; } }
Çıkış:
0.00296902 0.0133062 0.0219382 0.0133062 0.00296902
0.0133062 0.0596343 0.0983203 0.0596343 0.0133062
0.0219382 0.0983203 0.162103 0.0983203 0.0219382
0.0133062 0.0596343 0.0983203 0.0596343 0.0133062
0.00296902 0.0133062 0.0219382 0.0133062 0.00296902
Gauss Filtrelemenin Gerçek Dünya Uygulamaları
Gauss filtreleri birçok günlük teknolojide kullanılmaktadır. görüntü kalitesini artırın Ve yararlı bilgiler çıkarmak :
- Bilgisayarla Görme : Algılama algoritmalarını uygulamadan önce gürültüyü azaltarak kenarların ve şekillerin algılanmasına yardımcı olur.
- Tıbbi Görüntüleme : MRI veya CT taramalarını düzeltmek, dokuları ve anormallikleri tanımlamayı kolaylaştırmak için kullanılır.
- Nesne Algılama : Modellerin temel özelliklere odaklanmasına olanak tanıyarak dikkat dağıtıcı unsurları ortadan kaldırarak görüntüleri hazırlar.
- Fotoğraf Düzenleme Araçları : Genellikle uygulamak için kullanılır bulanıklık efektleri Daha temiz bir görünüm için görüntüleri yumuşatın veya grenliliği azaltın.
Diğer Filtrelerle Karşılaştırma
İşte nasıl Gauss filtresi diğer yaygın filtrelerden öne çıkıyor:
- Kutu Filtresi (Ortalama Filtre) : Görüntüyü vererek bulanıklaştırır eşit ağırlık çevredeki tüm piksellere. Gauss filtresi daha iyidir çünkü verir merkez piksellere daha fazla ağırlık daha yumuşak, daha doğal bir bulanıklık yaratır.
- Medyan Filtresi : Her pikseli şununla değiştirir: medyan kaldırmak için harika olan yakındaki değerlerin tuz-biber gürültüsü . Gaussian'ın aksine görüntüyü çok fazla bulanıklaştırmaz ancak kenarları bozabilir.
- İkili Filtre : Gaussian gibi ama aynı zamanda dikkate alıyor piksel yoğunluğu farklılıklar korunuyor kenarlar yumuşatma sırasında. Daha gelişmiş ama aynı zamanda daha da fazlası hesaplama açısından ağır .
2D ve 1D Gauss Filtreleme
A 2D Gauss filtresi içine bölünebilir iki 1D filtre — biri yatay ve biri dikey. Buna denir ayrılabilirlik ve bu, aynı anda tam 2 boyutlu çekirdeği uygulamamıza gerek olmadığı anlamına geliyor.
Neden önemlidir:
Büyük bir 2D çekirdekle (örneğin 5×5) ağır hesaplamalar yapmak yerine, 1D çekirdek yatay olarak sonra dikey olarak aynı çekirdek . Bu hesaplama süresini kısaltır ve aynı sonuç .
css metin hizalama
Performansla İlgili Hususlar
Oluşturma ve uygulama Gauss çekirdeği olabilir hesaplama açısından pahalı özellikle büyük görüntüler veya çekirdekler için.
- Zaman Karmaşıklığı :
- Bir çekirdek boyutu için k × k uygulanan n × n resim zaman karmaşıklığının ne olduğunu O(n² × k²) .
- Bunun nedeni, her piksel işleminin tüm çekirdek üzerinde döngüyü içermesidir.
- Optimizasyon – Ayrılabilir Filtreler :
Gauss çekirdekleri ayrılabilir yani bir 2D filtre kırılabilir iki 1D filtre : biri yatay, biri dikey.- Bu, zaman karmaşıklığını azaltır O(n² × k) yapmak çok daha hızlı daha büyük çekirdekler için.
Ayrılabilir filtrelerin kullanılması, gerçek dünya sistemlerinde kaliteyi kaybetmeden Gauss filtrelemeyi hızlandırmak için yaygın bir numaradır.
Okumalısınız
- Python ile bir görüntüye Gauss filtresi uygulama
- NumPy kullanarak 2 boyutlu Gauss dizisi nasıl oluşturulur?
- Gauss Fonksiyonlarının Entegrasyonu
Çözüm
Gauss filtreleme basit ama güçlü bir tekniktir. görüntü gürültüsünü ve bulanıklığı azaltmak Gauss fonksiyonuna dayalı düzgün ağırlıklı ortalama kullanılarak. Bu yazıda bir oluşturduk 2D Gauss çekirdeği ve çeşitli alanlardaki rolünü araştırdı gerçek dünya uygulamaları Bilgisayarla görme tıbbi görüntüleme ve fotoğraf düzenleme gibi. Ayrıca bunu diğer filtrelerle karşılaştırdık ve yolları tartıştık. performansı optimize edin ayrılabilir filtreler kullanarak. Genel Gauss filtrelemesi görüntü işlemede temel araç görüntü kalitesinin iyileştirilmesine yardımcı olur ve algoritmaların önemli görsel ayrıntılara odaklanmasını kolaylaştırır.