| « Önceki başlık - Sonraki başlık » |
| Yazar |
Mesaj |
S. Gumrukcu
Kayıt: 23.09.2007 Mesajlar: 4
|
Tarih: 23 Eyl Pzr, 2007 20:27 Mesaj konusu: Kenar belirleme yöntemleri |
|
|
| Görüntü işleme üzerine lisans tezi aldım. Edge detection yapıp GUI oluşturmam lazım. Kenar belirleme yöntemlerinden üç tanesini gerçeklesem yeter fakat bunun için Toolbox'ın hazır fonksiyonlarını kullanamam ödev gereği. Kendim yazacağım algoritmaları. Bunun için neler yapmam lazım. Yardım ederseniz sevinirim.
|
|
| Başa dön |
|
 |
Seyhan Agaoglu
Kayıt: 15.02.2007 Mesajlar: 202 Şehir: İstanbul
|
Tarih: 23 Eyl Pzr, 2007 21:43 Mesaj konusu: |
|
|
Merhaba,
Kenar belirleme görüntüdeki özelliklerin çıkarılmasında önemli bir yere sahiptir. Bu konuda size iki tavsiyem olabilir. Birincisi IEEE Transaction on Image Processing dergisindeki makaleleri tarayabilirsin. Temel olarak kenar tanımlamayı iki uzayda gerçekleştirirsin;
- Uzamsal domende
- Frekans domeninde
Uzamsal domende maskeleme yaparak, frekans domeninde ise filtreleme yaparak bir görüntüdeki kenarları belirleyebilirsiniz. Görüntüdeki kenar bölgeler renk değişiminin ani olduğu yani frekansın yüksek olduğu bölgelerdir. Kısacası görüntüyü yüksek frekans geçiren bir filtreden geçirirseniz görüntüdeki kenarları da elde etmiş olursunuz. Bu konuda bir çok yöntem var. Konuyu daha iyi anlayabilmek için Rafael C. Gonzalez ve Richard E. Woods tarafından yazılmış Digital Image Processing kitabından yararlanabilirsiniz. Kitabın resmi sitesi budur, http://www.imageprocessingplace.com/
Bu da internet üzerinden konu hakkında yüzeysel olarak bilgi edinebileceğiniz bir site
http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/OWENS/LECT6/node2.html
İlk önce bahsettiğim kitabı okul kütüphanenizden temin edip gerekli yerleri okumanız gerekecektir.
İyi çalışmalar,
Seyhan
|
|
| Başa dön |
|
 |
S. Gumrukcu
Kayıt: 23.09.2007 Mesajlar: 4
|
Tarih: 24 Eyl Pts, 2007 16:04 Mesaj konusu: |
|
|
http://www.ccs.neu.edu/home/mtrubs/html/EdgeDetection.html
Bu adresteki edge uygulamalarındaki
% Go through each pixel in the image
for i=1:size(theta,1)
şekliyle başlayan döngünün programda ne işe yaradığını anlayamadım. Imfilter fonksiyonu ile çekirdek matrisi zaten resmin üzerinden geçirmiyor mu?
Aslında daha 1 haftadır bu konuyla uğraşıyorum. Toolbox'taki hazır fonksiyonları kullanmadan en az 3 kenar belirleme yöntemi algoritmasını gerçeklemem gerekiyor ve bunlar için bir de GUI oluşturacağım. Bu benim lisans tezim olacak. Bunu nasıl yapmalıyım?
|
|
| Başa dön |
|
 |
Evren Cesur
Kayıt: 15.02.2007 Mesajlar: 29 Şehir: İstanbul
|
Tarih: 24 Eyl Pts, 2007 22:08 Mesaj konusu: |
|
|
Merhaba,
Kodu çalıştırmadım, fakat anladığım kadarı ile sıfır geçişleri belirlemeye çalışıyor. Roberts yöntemi birinci türev ile iş yapıyor. Kodu bir daha incelediğim zaman ayrıntılı bir mesaj yazarım.
İyi çalışmalar.
Evren
_________________ Evren Cesur |
|
| Başa dön |
|
 |
Seyhan Agaoglu
Kayıt: 15.02.2007 Mesajlar: 202 Şehir: İstanbul
|
Tarih: 26 Eyl Çar, 2007 03:51 Mesaj konusu: |
|
|
| Evren Cesur demiş ki: |
| Kodu çalıştırmadım, fakat anladığım kadarı ile sıfır geçişleri belirlemeye çalışıyor. |
Evren sıfır geçişlerini imfilter fonksiyonu zaten hallediyor. Mesela şu satırı ele alalım
| Kod: |
| Gx = imfilter(f,Hx,'replicate','conv','same'); |
f = görüntümüz,
Hx = x yönündeki gradyanı hesaplayan operatör
replicate = sıfır geçişleri için sınırın dışındaki piksellerin görüntünün kenarındaki piksellerle aynı olduğunu kabul eder.
conv = konvolüsyon
same = filtrelemeden sonra oluşak görüntünün boyutları giriş görüntüsüyle aynı olacak
| Kod: |
| g = sqrt(Gx.*Gx + Gy.*Gy); |
Burada yazar (i,j) noktasındaki gradyanın genliğini hesaplıyor yani,
| Kod: |
% Go through each pixel in the image
for i=1:size(theta,1) |
burada ise kenar yönünün açısını yani teta açısını hesaplamaya çalışıyor yani,
Formülü böyle kullananlar da var,
Mesela eğer 0 olursa bu o noktada düşey bir kenarın olduğunu bize gösterir.
Selahaddin beyin şu aşamada bu kısımlarla ilgilenmesine gerek yok. Şu kısım onun için yeterli,
| Kod: |
f = double(f);
Hx = [1 0;0 -1];
Hy = Hx';
Gx = imfilter(f,Hx,'replicate','conv','same');
Gy = imfilter(f,Hy,'replicate','conv','same');
theta = zeros(size(f));
g = sqrt(Gx.*Gx + Gy.*Gy); |
sorasında şu kodu çalıştırırsa kenarları elde ettiği sonuç görüntüyü görür,
| Kod: |
| figure, imshow(uint8(g)) |
Onun ilgileneceği alan imfilter yerine onu vazifesini yapacak bir program yazmak olacak. x ve y yönündeki 2x2 gradyan operatörlerini görüntünün üzerinde gezdirmesi gerekiyor.
Buarada Selahaddin beyden gradyan nedir diye bir soru gelirse şuralara bakabilir;
http://tr.wikipedia.org/wiki/Gradyan
http://en.wikipedia.org/wiki/Gradient
Kısaca bir noktada fonksiyonun maksimum artış gösterdiği yönü gösteren vektördür.
İyi çalışmalar,
Seyhan
|
|
| Başa dön |
|
 |
S. Gumrukcu
Kayıt: 23.09.2007 Mesajlar: 4
|
Tarih: 26 Eyl Çar, 2007 22:47 Mesaj konusu: |
|
|
| Seyhan beye çok teşekkür ederim.
|
|
| Başa dön |
|
 |
kblyszgn
Kayıt: 06.05.2008 Mesajlar: 2
|
Tarih: 10 May Cmt, 2008 04:43 Mesaj konusu: marr - hildreth kenar belirleme yöntemleri |
|
|
| marr - hildreth kenar belirleme algoritmalarının gri ton görüntülere uygulaması hakkında proje ödevim var. Projeyi gerçeklememde neler yapabilirim, bana yardımcı olursanız sevinirim. Buna benzer yapmış olduğunuz ödev, proje vs. kodları varsa ve bu kodları paylaşırsanız incelemem için çok faydalı olacaktır.
|
|
| Başa dön |
|
 |
kblyszgn
Kayıt: 06.05.2008 Mesajlar: 2
|
|
| Başa dön |
|
 |
Seyhan Agaoglu
Kayıt: 15.02.2007 Mesajlar: 202 Şehir: İstanbul
|
Tarih: 11 May Pzr, 2008 20:25 Mesaj konusu: |
|
|
Kenar bulma genelde görüntü işlemede giriş seviyesindeki öğrencilere sıkça olarak verilen bir proje/ödevdir. Giriş seviyesi dememden dolayı basit olduğu zannedilmesin, uğraşması zevkli ve sonuç elde edildiğinde öğrenciyi derse ısındıran bir konudur.
Burada tek tek yöntemler üzerine durmaktansa ben genel olarak biraz ana konudan bahsedeyim. Sanırım bu konuda Türkçe kaynak olmamasından dolayı öğrenciler sıkıntı yaşıyorlar ve konunun özünü öğrenmekten çok direkt sonuca gidecek materyaller arıyorlar.
Türev Kavramı
Önce biraz gerilere gitmek gerekiyor. Hatırlanacağı gibi fonksiyonunun grafiğinin noktasındaki teğetinin eğimi olan değeri türevine eşitti. Bir başka örnek daha verelim örneğin hareketli bir cisim anında noktasında olsun. anında cismin bulunduğu nokta ile noktası arasındaki uzaklığı 'ye bağlı bir fonksiyon olup, cismin süresince katettiği yolu göstersin. Eğer cismin anındaki anlık hızını bulmamız gerekirse oranının iken limitini almamız gerekecektir. Dolayısıyla ani hız,
Yani doğru boyunca hareket eden ve hareket denklemi ile verilen cismin herhangi anındaki ani hızı türevine eşit değil midir?
Peki hareket denklemi 'nin zamana göre ikinci türevini aldığımızda neyi elde ediyorduk? Tabiki ivmeyi yani hızın zamana göre ani değişimlerini elde ediyorduk.
Sayısal fonksiyonlarda Türev
Sayısal fonksiyonların türevi aradaki fark ile tanımlanmaktadır. Fark almayı tanımlamak için çeşitli yollar bulunmaktadır. Sayısal fonksiyonların birinci türevini ifade edebilmek için şunları gözönüne alabiliriz;
- düz zeminde sıfır olmalıdır (görüntüde sabit grilik seviyesinde olan bölümler)
- grilik seviyesinde değişimlerin olduğu basamak (ani değişim) ya da rampa (yumuşak geçiş) durumlarında sıfırdan farklı olmalıdır
- rampa boyunca sıfırdan farklı olmalıdır
Benzer şekilde ikinci türev ise,
- düz zeminde sıfır olmalıdır
- grilik seviyesi bir basamak ya da rampa değişiminin başında ve sonunda sıfırdan farklı olmalıdır
- sabit eğilime sahip rampa boyunca sıfır olmalıdır
Sonlu sayısal niceliklerle uğraştığımıza ve muhtemel maksimum grilik seviyesi değişimleri de sonlu olduğuna göre en yakın mesafedeki değişim birbirine komşu iki piksel değeri arasında olacaktır. Buradan hareketle bir boyutlu fonksiyonun birinci türevi
denklemiyle verilir. Benzer şekilde ikinci türev ise
olacaktır. İki türev arasındaki farkı ise şöyle özetleyebiliriz,
- Birinci türev görüntüde genellikle kalın kenarlar üretir,
- İkinci türev görüntüdeki ince kenar, gürültü noktaları gibi ince detaylara daha iyi cevap verir
- Birinci türev genellikle grilik seviyesi basamak değişimine kuvvetli yanıt verir
- İkinci türev grilik seviyesi görüntüde basamak değişimlerine çift cevap üretir,
İkinci türevin görüntüdeki bir çizgiye ve noktaya verdiği cevap sırasıyla bir basamak değişimine ve çizgiye göre verdiği cevaptan daha kuvvetlidir. Dolayısıyla ikinci türev birinci türeve göre görüntüdeki ince detayları daha iyi yakalamamızı sağlar. Aynen bir önceki konuda söylediğim gibi hareketli bir cismin hızını bilmek yerine ivmesini bildiğimizde daha ayrıntılı bilgiye sahip olduğumuz gibi.
Laplacian
İki değişkenli görüntü fonksiyonu için basit bir isotropic türev operatörü Laplacian
denklemiyle verilir. -yönünde kısmi ikinci türevi göz önüne alırsak,
-yönünde kısmi ikinci türevi göz önüne alırsak,
olur. İki boyutlu Laplacian operatörünün sayısal uygulaması yukarıda verilen iki bileşenin toplanmasıyla elde edilir:
Laplacian bir türev operatörü olduğuna göre görüntüdeki grilik seviyesi süreksizliklerin altını çizecek, grilik seviyesinin çok yavaş değiştiği bölümlerin ise önemini azaltacaktır. Dolayısıyla Laplacian operatörü bir görüntüye uygulandığında çıkışta kenar çizgileri ve diğer süreksizlik arz eden noktaların grimsi, bir özelliğe sahip olmayan geri kalan kısımların ise siyah arkaplan olarak kaldığı bir görüntü elde edilir.
Marr-Hilderth Kenar Belirleme
Bu yöntem David Marr ve Ellen Hildreth tarafından "Theory of Edge Detection, Proc. R. Soc. London, B 207, 187-217, 1980" yayınlanan makalede geliştirilmiştir.
Marr-Hilderth yöntemi LoG (Laplacian of Gaussian) operatörünün sıfır kesişlerine dayanmaktadır. Sıfır kesişi bir fonksiyonun sıfır eksenini kestiği yerdir. Bu yöntemde sıfır kesişleri boyunca kenarları bulmak için Laplacian önişlem olarak uygulanan yumuşatma operatörüyle birleştirilmektedir. Yumuşatma operatörü,
denklemiyle verilmektedir. 'dir ve da standart sapmadır. fonksiyonun 'ye göre ikinci türevi yani 'nin Laplacian'ı;
Bu fonksiyon genellikle LoG (Laplacian of Gaussian) olarak adlandırılmaktadır. Laplacian operatörünün en büyük zaaflarından birisi gürültüye karşı çok duyarlı olmasıdır. Diğer bir nokta ise herbir kenar için iki değer üretmesidir. Bu istenmeyen bir özelliktir. Gürültünün meydana getireceği bozulmaları engellemek için Laplacian'dan önce görüntüye Gaussian operatörü uygulanır. Bu operatör aslında bir alçak geçiren filtredir ve görüntünün bulanıklaşmasına sebep olur. Ardından Laplacian uygulanarak sıfır kesişleri tespit edilir.
Şekil 1
Şekil 2
Şekil 1'deki rapma fonksiyonunu göstermektedir. Siyahtan beyaza yumuşak bir geçiş vardır. İdeal bir kenar aslında basamak fonksiyonudur ancak görüntüyü elde eden sistemler ve örnekleme işlmelerinden dolayı kenarlar daha çok rampa fonksiyonlarına benzemektedir. Gaussian fonksiyonunu göstermektedir. konvolüsyonu sonucunda gürültü yok edilmiştir. Sonucun birinci dereceden türevi alındığında piksel değerlerinin sabit kaldığı yerlerde değişim sıfır olduğu için sonuç sıfır olmuş, değişimin olduğu yerde (kenar) ise sonuç sıfırdan farklı olmuştur.
Şekil 2'de ise kenar tam olarak sıfır kesişinin olduğu yerdedir (3. grafik). Şekil 2, 2. grafikte LoG fonksiyonu gösterilmektedir. LoG benzerliğinden dolayı bazen Meksika şapkası fonksiyonu olarak da adlandırılmaktadır.
Marr-Hilderth yöntemiyle görüntüsünün kenarları belirlenmek isternise,
- LoG filtresi belirlenir,
-
- sonuç görüntü eşikdeğerinden geçirilir
- kenarları belirlemek için elde edilen görüntüye yüksek geçiren filtre (HPF) uygulanır
Yardım alabilmek için şu dokümana da bakabilirsiniz.
http://www.cis.rit.edu/class/simg782/lectures/lecture_15/lec782_05_15.pdf
Özet olarak, kenarlar bir görüntüdeki yüksek frekansların zaman uzayındaki karşılığıdır. Nasıl ki frekans tanım olarak saniyedeki çevrim sayısı ise görüntüdeki ani değişimlerin olduğu yerler frekans domeninde yüksek frekans bölgesine denk gelmektedir. -Salınımın az- Değişimin az olduğu yerde ise frekans düşüktür. Türev alarak bir nevi bu değişimin hızını, ikinci türev alarak da ivmesini hesaplamaktayız. Eğer bir kenar yoksa düzgün bir bölgeyse türev sonucu sıfır olur, eğer bir kenar, çizgi ya da gürültü noktası varsa türev sıfırdan farklı sonuç verir.
İyi çalışmalar.
|
|
| Başa dön |
|
 |
|
|
Bu forumda yeni konular açamazsınız Bu forumdaki mesajlara cevap veremezsiniz Bu forumdaki mesajlarınızı değiştiremezsiniz Bu forumdaki mesajlarınızı silemezsiniz Bu forumdaki anketlerde oy kullanamazsınız Bu foruma eklenti gönderemezsiniz Bu forumdan eklenti indirebilirsiniz
|
|
|