Görüntüden belirli bir arka plan nasıl kaldırılır?


11

Portakal

Gabor filtrelemesinden sonra elde edilen görüntü buydu ... Parlak beyaz yuvarlak kusur dışında görüntünün içindeki çizgileri kaldırmanın bir yolu var mı?

Gabor filtresinin başka bir yönelimini denediniz mi aşağıdaki sonuç:

resim açıklamasını buraya girin

Eşiklemeden sonra: Hangi yeterince iyi ama harika değil

resim açıklamasını buraya girin

Medyan filtrelemeden sonra:

resim açıklamasını buraya girin

Şimdiden teşekkürler


2
Medyan filtresi ile iyi iş çıkardın. İyi gidiyorsun.
12'de

Bu bir difüzyon filtresi uygulamak için iyi bir senaryo gibi görünüyor. Ayrıca soran deneyin: <br/> dsp.stackexchange.com/ <br> photo.stackexchange.com/ <br>
Danny Varod

Eşik değerden sonra medyan filtre uyguladınız mı? Eğer öyleyse, eşik olmadan deneyin.
Danny Varod

Evet, eşiklemeden sonra denedim ve daha önce de yaptığımda neredeyse aynı sonucu aldım
vini

Yanıtlar:


12

Gábor filtrenizin çıktısı güvenilirse ve görüntü verilerinizdeki varyasyon o kadar yüksek değilse, sonuç tamamen farklı görünüyorsa, aşağıdaki yaklaşımı kullanabilirsiniz (daha önce bahsedildiği yerlerde parçaları):

  1. Herhangi bir otomatik eşik algoritmasıyla ikinci görüntünüzü ikilileştirin. İşe yarayacak eşikler aralığı, göreceğiniz gibi geniş.

  2. Pikselin her bağlı bölgesini benzersiz bir değerle etiketlemek için bileşen etiketleme algoritması kullanın.

  3. Görüntünüzün her bileşeni için, nesnenizin dolu bir daireye ne kadar yakın olduğunu açıklayan bir özelliği hesaplayın. Bunun için örneğin kompaktlığı kullanabilirsiniz . Eşdeğer disk yarıçapı içindeki piksellerin altında kullandım . Bu yarıçap, nesnenizle aynı alana sahip bir diskin yarıçapıdır.

    1. Alan basitçe nesnenizin piksel sayısını sayıyor
    2. Alanı verilen bir dairenin yarıçapını hesaplamak da yönetilebilir olmalıdır
    3. Bu yarıçap içindeki piksel için, her görüntü nesnesinin merkezine ihtiyacınız vardır, ancak bu sadece nesne piksellerinin tüm konumlarının ortalamasıdır. Eğer bir fizikçiyseniz, o zaman birkaç nokta kütlenin kütle merkezini bilirsiniz. Bu eşdeğerdir.
    4. Şimdi her nesnenin her pikseli için merkezinden olan mesafeyi hesaplar ve dairenin yarıçapından daha küçük olup olmadığını kontrol edersiniz. İki sayıyı böldüğünüzde iç ve dış pikselin bir kısmını elde edersiniz.
  4. En yüksek kesire sahip nesneyi alın. Not: yalnızca bir piksele sahip nesneler 1 değerini alır. Bu nedenle, bir boyut eşiği ayarlamalı ve yalnızca 10 piksel gibi daha büyük nesneleri almalısınız.

Otomatik bir ikilemin çalışması gerektiğini görmek için, çok düşük ve çok yüksek bir eşiğin sonuçları şunlardır:

resim açıklamasını buraya girin resim açıklamasını buraya girin

Bileşen Etiketlemesini Güncelle

Bileşen etiketlemesinin seçimi uygulamanız için kritik değildir. Kendiniz uygulamanız gerekiyorsa, çok basit bir yöntem kullanmanızı öneririm. Tek geçişli versiyonu Vikipedi sitesinden çok kolaydır. Temel olarak ikili görüntünüzde yineleme yaparsınız ve beyaz olan ve zaten etiketlenmemiş bir pikselle karşılaştığınızda, bu nesne için yeni bir etiket kullanır ve bu pikselle başlarsınız.

Bu nesneyi bir etiketle etiketleme işlemi temelde taşkın dolgusuna benzer. Bu Wikipedia sitesinde algoritmada iç adım 1-4'tür. Bu etiketli pikselle başlarsınız ve tüm komşularını bir yığına koyarsınız (bir vektör kullandılar ). Yığındaki bir piksel için, ön plan olup olmadığını ve önceden etiketlenmemiş olup olmadığını kontrol edin. Etiketlemek zorunda kalırsanız, tüm komşularını tekrar yığına koyarsınız. Yığınız boşalana kadar bunu yapın.

Ardından taramaya görüntü boyunca devam edersiniz. Wiki sitesindeki açıklamanın aksine, orijinal görüntünüzden bir pikseli kaldırmanız gerekmez, etiket resminizde 0'dan farklı bir değere sahip olduğunuzda atlayabilirsiniz.


Burada hangi bileşen etiketleme algoritmasını referanslıyorsunuz?
vini

1
@vini, yayınımı güncelledim. Phonon, teşekkürler. Çok sayıda morfolojik önlem kullanıyoruz ve özellikle kompaktlık bir süre önce çok faydalı oldu.

yup great got it :)
vini

6

Birkaç fikir:

  1. Kenar kuvvetlerinin yoğunluğuna göre kenarları filtreleyin. Dairesel bir çekirdeğin yaklaşık değerini kullanarak ortalama kenar gücünü (veya başka bir ölçüyü) bulun. Eşik değerinin altındaki veya üzerindeki herhangi bir kenardan geçin ve eşiğin altındaki kenarları siyaha ayarlayın.
  2. Görüntüyü temizlemek için morfolojik bir "yakın" işlemi (dilate ardından erozyon) kullanın, sonra tüm lekeleri bulmak için bir bölge etiketleme algoritması (diğer bir deyişle bağlı bileşen, lekeler) kullanın. Blob verilerini boyut, majör / minör eksen oranına vb. Göre filtreleyin.
  3. Gauss bulanıklığını deneyin, ışığı karanlıktan segmentlere ayırmak için bir ikileştirme eşiği bulun ve sonra yukarıdaki 2. adımda açıklandığı gibi lekeleri filtreleyin. (Gauss bulanıklığının hızlı bir şekilde tahmin edilmesi için göz kapaklarınızı sıkın ve görüntüye gözlerini kısarak kapatın.)
  4. Photoshop veya GIMP'de birkaç filtre deneyin.

EDIT: medyan filtreleme adımından sonra, orada en çok yolunuz. Aferin! Yukarıda önerdiğim 2. madde (yakın, sonra bölge etiketleme) sizi geri kalan yollardan birine götüren bir tekniktir.


yup ne olacağını bilmenize izin verecek
vini

1

Aktif konturları deneyebilirsiniz. Her ne kadar yavaş olsa da, bu gibi karmaşık bir durumu ele alabilir.

Veya bu görüntüyü işlemek için bazı ön bilgileri kullanabilirsiniz. Örneğin, damla şeyin 'büyük' ​​ve 'bağlı' olduğunu biliyorsunuz. Böylece her bağlı bölgenin sayısını saydığınızda bulabilirsiniz.

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.