Izgara benzeri bir yapıyı tespit etmek için Hough dönüşümüne alternatifler


16

Bir ızgara şekli oluşturan birden çok 'açıları' oluşan bir görüntü var:

resim açıklamasını buraya girin

Biraz arama yaptıktan sonra, Hough iyi bir uyum gibi görünüyordu, çünkü satırlardaki kırılmalardan rahatsız olmuyor. Ancak, sahip olduğum sorun, çizgilerimin 'yağ' olması ve çalıştırdığım herhangi bir kenar algılaması (bu durumda Canny), çizginin kenarlarını seçer, ortayı değil:

resim açıklamasını buraya girin

Bu, Hough dönüşümünün orta çizgiyi değil, ızgara çizgilerimin 'yanlarından' birini (veya her ikisini) seçtiği anlamına gelir.

resim açıklamasını buraya girin

Ne aradığımı bildiğim göz önüne alındığında (bu ızgara benzeri şekil, her zaman kabaca aynı yönde), bana orta çizgileri vermek için 'kenar algılama' bölümünü gerçekleştirmenin daha iyi bir yolu var mı yoksa bakmalı mıyım tamamen farklı bir yöntemle?


Bağlam için, bu ızgara Tsai kamera kalibrasyonunu gerçekleştirmek için nominal bir ızgarayla karşılaştırılacaktır.
Benjol

"Kenar algılama çalıştırdım, çizginin kenarlarını seçer" Evet, çünkü kenar algılama kenarları sırtlara dönüştürür ve görüntünüz zaten sırtlar. Kenar, aydınlık ve karanlık arasındaki bir sınırdır.
Endolit

Yanıtlar:


10

Hough Transform gerçekten de bu durumda Grid'in toplanmasına yardımcı olacaktır. Çizgileri "inceltmek" için, İskeletleştirmenin işleyişini düşünmek isteyebilirsiniz

Bu, bunun gibi bir görüntü üretecektir: İskeletleme Çıktısı

İskeletlemenin çalışma şekli nedeniyle, yine de ızgarayla alakasız görünecek bazı çizgiler üretecektir, ancak "hatalı" yönlere doğru bu çizgiler, Hough Dönüşümünün çizgi algılamasını karıştırmak için çok fazla (en azından verilen resimde) değildir. iki ana çizgi setini farklı yönlerde açıkça seçecektir. (HT çıktısı şöyle görünür:) resim açıklamasını buraya girin

MATLAB kullanıyorsanız, bu yardım sayfasını kontrol etmek isteyebilirsiniz


Teşekkürler! Bu çok yardımcı olur. Henüz MATLAB lisansımı almadım, ancak AForge'un SimpleSkeletonization uygulamasını kullanarak denedim ve daha iyi çalışıyor ... Yine de mükemmel değil. Daha sonra test etmek için gerçek veriler elde ettiğimde bu konuyu tekrar ziyaret edeceğim.
Benjol

Orijinal görüntünüzü önce "en uygun" yağ ızgara çizgileri üretiyor gibi görünen bir eşikte eşleştirmeyi deneyebilirsiniz. İdeal olarak demek istediğim, en azından bağlı olmaları. Bu, iskeletleşmenin performansını artırabilir, ancak (eşik) belirlemek için ekstra bir parametreniz olur. Belki de görüntü elde etmenin nasıl geliştirileceğini araştırmaya değer.
A_A

evet, dediğim gibi, oynayacağım gerçek verilere sahip olduğumda, sisteme ince ayar yapmak zamanım olacak. Genel olarak Hough hakkında sahip olduğum en büyük şüphe teta'nın ayrıklaştırılması ihtiyacımız olan alt piksel hassasiyetine karşı çalışacaktır. (Bu ve lens sapmalarının çizgilerin eğri olabileceği anlamına gelmeyeceğine tamamen ikna olmadım, düz değil ...)
Benjol

11

Hough Dönüşümüne bir alternatif Radon Dönüşümüdür ( 1 , 2 ). Izgara benzeri bir yapıyı algılamak için bir algoritmanın kabaca açıklaması şöyle görünebilir:

1. Perform Radon Transform from 0 to 180 degrees.
2. Find the two highest maxima in the angle bins.
3. For the two angles with maximal amplitude find the local maxima within the bin.
4. You can use the constraint that the maxima should have even spacing to deal with outliers.

DÜZENLE :

1-3 adımını gösteren küçük bir matlab pasajı:

im = imread('grid.png');
[R, xp] = radon(im, 0:180);
imagesc(0:180, xp, R)

Radon Dönüşümü Sonucu

plot(max(R)) % the two maxima are at 65 & 117 degrees

Tüm açılardan maxima

plot(R(:, 65))

65 derecede maksimum

plot(R(:,117))

117 derecede Maxima

Sorunuzu yorumlardan yanıtlamak için: Bana verdiğiniz örnek bir görüntüden, bu yöntemin algılanan ızgaradaki küçük kusurlara karşı daha sağlam olduğu anlaşılıyor. İskeletler nadiren, sonraki Hough Dönüşümü için dezavantaj olabilecek düz çizgiler verecektir.


Teşekkürler, Hoon Dönüşümü ile karşılaştırıldığında Radon Dönüşümünün bana ne gibi bir avantaj sağlayacağını birkaç kelimeyle söyleyebilir misiniz?
Benjol

@benjol, cevabımı güncelledim.
bjoernz

Çok hoş, çok teşekkürler. Matlab'a erişebilmem için denemeye devam edeceğim!
Benjol

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.