Dikenli seçim için Görüntü İşleme yöntemi


11

3D ikili görüntü ve aşağıda tercih edilen çıktı olarak bir giriş var :

Giriş:

GİRİŞ

Tercih Edilen Çıktı:

ÇIKTI

Yukarıdaki tercih edilen çıktı gibi yalnızca dikenli cisimlerin kalması için hangi görüntü işleme yöntemlerini aramalıyım?


3D ikili görüntü ile ne demek istiyorsun ? Görüntüyü kolayca ayrı parçalara ayırabilir misiniz?
bjoernz

3D demek istediğim, bu tomografik bir görüntü.
Karl

1
spikyNesnenin ne olduğunu açıklayabilir misiniz ? Buna gerçekten dikenli ne diyor? dikenli cisimleri tespit etmenin temel özellikleri nelerdir?
Dipan Mehta

Bu durumda dikenli bir nesne, pürüzsüz olmayan ve bunların üzerinde dikenli şekiller olan bir 3D alandır.
Karl

Yanıtlar:


19

"Dikenli nesnenin" sınırlarında daha fazla köşe var, bu yüzden bir yaklaşım bunun için bir köşe dedektörü ayarlamak olacaktır .

Örneğin, mesafe dönüştürülmüş bir görüntünün yapı tensörünün (aşağıdaki Mathematica kodu) belirleyicisini hesapladım:

resim açıklamasını buraya girin

Histerezis ile ikili hale getirme, seçtiğiniz segmentasyon algoritması için iyi bir başlangıç ​​noktası olması gereken bu görüntüyü verir:

resim açıklamasını buraya girin

Mathematica kodu ( srcgönderdiğiniz kaynak resimdir)

İlk başta, giriş görüntüsünün mesafe dönüşümünü hesaplarım. Bu, tüm nesne alanı üzerinde (sadece kenarlık yerine) kontrast oluşturur, böylece tüm nesne algılanabilir.

dist = ImageData[DistanceTransform[src]];

Sonra yapı tensörünün bileşenlerini hazırlıyorum . Gauss türevleri için filtre boyutu 5 ise, pencere boyutu 20'dir.

gx = GaussianFilter[dist, 5, {1, 0}];
gy = GaussianFilter[dist, 5, {0, 1}];
gx2 = GaussianFilter[gx^2, 20];
gxy = GaussianFilter[gx*gy, 20];
gy2 = GaussianFilter[gy^2, 20];   

Her pikseldeki köşe filtresini hesaplamak için, bunları yapı tensörünün sembolik belirleyicisine takıyorum:

corners = Det[{{dx2, dxy}, {dxy, dy2}}] /. {dx2 -> gx2, dxy -> gxy, dy2 -> gy2};

Temel olarak aynı:

corners = gx2 * gy2 - gxy * gxy;

Bunu bir görüntüye dönüştürmek ve 0..1 aralığına ölçeklendirmek yukarıdaki köşe dedektörü görüntüsünü verir.

Son olarak, doğru eşiklerle ikili hale getirilmesi nihai, ikili görüntüyü verir:

MorphologicalBinarize[Image[corners], {0.025, 0.1}]

Çok güzel bir cevap! =)
Phonon

Cevaplarınız inanılmaz, onlardan çok şey öğreniyorum.
Andrey Rubshtein
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.