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.