|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GİRİŞ Görüntü işleme ile lastik izi tanıma projesinin açıklaması Bu projede Matlab 6.5 uygulaması ile çeşitli program algoritmalarıkullanarak lastik izi tanımlaması yapılacaktır. Program birfotoğraftaki lastik izinin yerini tespit edecek, lastik izindekiolukların ve blokların dizilimine göre daha önceden hazırladığımız veribankası ile karşılaştıracak ve o fotoğraftaki lastik izinin markasını,modelini tahmini olarak belirleyecek. Veri bankasında birçok lastikizinin yapısal bilgileri, markaları, modelleri bulunmaktadır. Pratik olarak eşleme testlerinde ele alınan noktalar şunlardır:Olukların açıları, blok genişlikleri, zigzaglı yapı, baskın yapı, dikeyoluklar, yatay oluklar vb… Nerelerde kullanılır? Kullanım alanı genelde kriminal vakalardır. Herhangi bir polisiyevakada olay yerindeki lastik izlerinin marka model tespiti davanınsonuçlarını büyük oranda etkileyecektir. Bunun dışında bu programı lastik üreticileri kalite kontrolde kullanabilir. Lastik izi tanımlamada görüntü işleme ve kimyasal analizin farkı Kimyasal analiz ile lastik izi tanımlama şu anda kriminallaboratuarları tarafından kullanılan en yaygın yöntemdir. Bu yöntemdebeton veya asfalt gibi sert yüzeylerde yapılan frenlerin yüzeydebıraktığı fiziksel kalıntının analizi yapılır. Yerden alınan lastikkalıntılarının karbon ve çeşitli element analizlerinden lastiğinyapısına ve yaşına ulaşmak yaklaşık olarak mümkündür. Ne var ki buyöntem sadece sert yüzeylerde yapılan frenlerde kullanılabiliyor. Görüntü işleme ile yapılan tanımlama ise yumuşak ortamlardakullanılabiliyor. Aracın kum, toprak, çamur gibi yumuşak yüzeydengeçmesi sonucu lastik bu yüzeyde iz yapacaktır. Bu izin resmininçekilip, sayısallaştırılıp, programa verilmesi sonucunda bu lastiğinmarkası ve modeli tespit edilecektir. Şartları Bu programın çalışabilmesi için lastik izinin çekildiği yerdekiışıklılık oldukça önemlidir. Işığı dik açıyla alan, lastik iziyleilgisi olmayan gölgeleri barındırmayan bir fotoğraf çekilmelidir. Bunundışında izin içinde taş gibi bir tepecik ve bir oyukluk olması gerçekmarka, model tahmine yaklaşma olasılığını düşürür. LASTİKLERİN YAPILARI Bu projede lastiklerin yapısal olarak değerlendirilecek özellikleri şunlardır: Simetriklik, genel yapı, merkez özelliği, çevresel oluklar, ana bloklar, yatay çıkıntılar. Bu özellikler lastikleri birbirinden ayıran özelliklerdir. Simetriklik Sağ ve sol tarafları aynı olan lastiklerdir.
Merkez özelliği Lastiğin orta kısmında bloklar olabilir, oluklar olabilir
Düz, kavisli, zigzag
Lastiğin merkezi etrafına dağılmış ana blokların şekil özellikleri.
* Yapacağım testler her lastiğin niteliğini bu özellikler bazında bulmaya yönelik olacaktır. MATLAB’TA GÖRÜNTÜ İŞLEME *Her programın başına kolaylık olması amacıyla şu satırları yazacağım: clear all; (kaydedilmiş bütün değişkenleri siler) close all; (Matlab ve komut penceremiz dışındaki bütün pencereleri kapatır.örn: grafik, imge) clc; (ekranı temizler) Lastik izi içeren imgeyi Matlab’ta açmak Bir imgeyi Matlab’ta açmak, imgenin renk ve ışıklılık bilgilerini, Matlab’ta bir matrise atmak anlamına gelir. Örneğin her kutucuğun bir pikseli ifade ettiği aşağıdaki 9 piksellikimgenin Matlab’taki matrise dökülmüş hali yanındaki gibidir.
İskelet çıkarmak İlk olarak kalın blokları incelterek vektör haline getirmeye çalıştım. Bunu Matlab’ın hazır fonksiyonu olan bwmorhp’un iskelet özelliği ile yaptım. Kendi çizdiğim lastik izine (şekil2) aşağıdaki programı uygulayıp şekil 3 teki vektörel izleri elde ettim. imge=imread(’lastik.bmp’); cikis = bwmorph(imge,’skel’,Inf);
İmgedeki her pikseli 1 veya 0 değerli hale getirmektir. Bunun içinbir eşik değer belirledim. Belli bir ışıklılık değerinin altındakipikselleri 1 ve üstündekileri 0 yaptım. Böylece lastikteki karanlıkyerler (gölgede kalan oluklar, girintiler) beyaz, diğer düz yüzeylersiyah oldu. Bu bana çalışmada kolaylık sağladı.
imge=rgb2gray(I); birli=(imge<113); Bu programda imgeyi açtıktan sonra Matlab’ın hazır fonksiyonu olan rgb2gray kullanılarak imge siyah beyaz hale getirilmiştir. Denemelerden sonra bu imge için eşit değeri 113 bulunmuştur. Konvolusyon Konvolusyonda bir pikselin değeri çevresindeki piksellerin ağırlıklı ortalamasıyla bulunur. ![]() Konvolusyon örneği: I=imread(’HPIM4603.JPG’); imge=rgb2gray(I); kernel = [-1 -1 -1;-1 10 -1;-1 -1 -1]; filt=conv2(imge,kernel);
Kernel oluşturmak Birler kerneli: ones(boyut); Sıfırlar kerneli: zeros(boyut); Filtre oluşturmak Matlab’ın hazır fonksiyonu olan fspecial bize istediğimiz filtre matrisini oluşturur. ‘average’ ortalama ‘disk’ dairesel ‘gaussian’ Gauss alçak geçiren ‘laplacian’ 2 boyutlu Laplas ‘log’ Gauss filtresinin laplası ‘motion’ hareket filtresi ‘prewitt’ Prewitt yatay kenar bulma ’sobel’ Sobel yatay kenar bulma ‘unsharp’ keskinlikleri yok etme, yumuşatma ‘average’ örneği: I=imread(’HPIM4603.JPG’); imge=double(rgb2gray(I)); kernel = fspecial(’average’,10); filt=conv2(imge,kernel); Burada ‘average’ kullanarak 10×10 luk bir filtre matrisi oluşturduk.Daha sonra imgemizle convolusyona soktuğumuzda şekil 8 deki imgeyi eldeettik.
clear all;close all; I=imread(’HPIM4603.JPG’); imge=double(rgb2gray(I)); kernel = fspecial(’disk’,4); filt=conv2(imge,kernel); Bu programda bir matris içinde yarıçapı 4 olan daire oluşturulmuştur. Matrisin boyutu 2*yarıçap+1 dir.
‘motion’örneği I=imread(‘HPIM4603.JPG’); imge=double(rgb2gray(I)); kernel = fspecial(’motion’,100); filt=conv2(imge,kernel); Burada imgeyi 1×101 lik hareket filtresi matrisi ile konvolusyona sokuyoruz.
Morfolojik işlemler Yapısal işlemlerdir. İmge içerisindeki şekiller üzerinde yapılanaçma(opening), kapatma(closing) işlemleridir. Açma şekli büyütür,kapatma küçültür. Şekle dayalı görüntü işlemede çok kullanılan bir yöntemdir. Açma işlemi ![]() Kapatma işlemi ![]() Oluk tespiti Olukların tespiti için denediğim bir yöntem: I=imread(‘HPIM4603.JPG’); imge=double(rgb2gray(I)); kernel = fspecial(’motion’,100); filt=conv2(imge,kernel); birli=255*(filt<70); BW3 = bwmorph(birli,’skel’,Inf); kernel2=ones(20,1); i4=conv2(BW3,kernel2); kernel3=ones(1,300); i5=imerode(i4,kernel3);
Blokların tespiti için denediğim başka bir yöntem: clear all;close all; imge=(rgb2gray(imread(’HPIM4621.jpg’))); [w,h]=size(imge); kernel=fspecial(’motion’,h); yatay=imfilter(imge,kernel); yataylojik=(yatay>(mean(mean(yatay)))); kernel=ones(1,h); yatayyay=imdilate(yataylojik,kernel); yatayyay1=(yatayyay==0); etiketyatay=bwlabel(yatayyay1,8); if yatayyay1(1,1)==1 yatayyay1=yatayyay1.*(~(etiketyatay==1)); end if yatayyay1(w,h)==1 yatayyay1=yatayyay1.*(~(etiketyatay==max(max(etiketyatay)))); end iskelet= bwmorph(yatayyay1,’skel’,Inf); dizi=(iskelet((1:w),((h/2):(h/2))))’; [wdizi,hdizi]=size(dizi); adet=0; for i=1:hdizi adet=adet+dizi(i); end bosluk=zeros(1,adet); c=1; for i=1:hdizi if dizi(i)==1 bosluk(c)=i; c=c+1; end end oran=0; for i=1:(adet-1) oran(i)=(bosluk(i+1)-bosluk(i))/(bosluk(adet)-bosluk(1)); end oran
Etiketleme sadece 1 ve 0’lardan oluşan imgelerde 1 kümelerinesırayla değer vermektir. Yani 1. 1’ler kümesindeki pikseller 1, 2.1’ler kümesindeki pikseller 2, 3. 1’ler kümesindeki pikseller 3…değerini alır. Örnek
Bu yöntem morfolojik çalışmada çok kullanışlıdır. İmgenin 1,2,3 içeren şekillerini ayrı ayrı çağırabiliriz. Örnek olarak imge==3 komutu bize şekil 27’yi gönderir.
Lastikteki bir ize polinom benzeteceğiz. Böylece o izin verilerielimizde imge olarak değil, polinom katsayısı olarak bulunacak. Böyleceizler üzerinde işlem yapmak çok daha kolaylaşacak. Bu iş için polyfit ve polyval fonksiyonlarını kullanacağız. polyfit ve polyval fonksiyonları nasıl çalışır? Polyfit fonksiyonuna 3 eleman veririz. Bunlar; değer dizisi , sıra dizisi, kat. Örnek a=[2 3 5 10 15 20 30 40 50 55]; b= 1:1:10; fit=polyfit(b,a,2); deger=polyval(fit,b); figure;plot(a,b,’o',deger,b);
Bir imgeye polinom uydurmak için 1 olan pikselleri tespit edip bupiksellerin satır, sütun bilgilerini polyfit’e göndermemiz gerekir. [w,h]=size(imge); c=1; for i=1:w for j=1:h if imge(i,j)==1 b(c)=w-i;a(c)=j; c=c+1; end end end
Yukarıda gösterdiğimiz polyfit fonksiyonunu kullanarak yatayçıkıntılara polinom uyduracağım. (benim üzerinde çalıştığım imgededikey çıkıntılar) I=imread(’HPIM4603.JPG’); imge=double(rgb2gray(I)); [w,h]=size(imge); kok=10; isiklilikdegeri=mean(mean(imge)); kernel = fspecial(’sobel’)'; filt=imfilter(imge,kernel); birli=(filt>isiklilikdegeri); morph = bwmorph(birli,’skel’,Inf); etiket=bwlabel(morph,8); [w1,h1]=size(etiket); etiketmax=max(max(etiket)); etiketsay=zeros(1,etiketmax); for i=1:w1 for j=1:h1 for k=1:etiketmax if etiket(i,j)==k etiketsay(k)=etiketsay(k)+1; end end end end for i=1:etiketmax if etiketsay(i)==(max(max(etiketsay))) maxdegeri=i; end end tara=(etiket==maxdegeri); [w2,h2]=size(tara); c=1; for i=1:w2 for j=1:h2 if tara(i,j)==1 b(c)=h2-i;a(c)=j; c=c+1; end end end fit=polyfit(b,a,kok); deger=polyval(fit,b);
1.0e+003 * 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0001 -0.0032 0.0609 -0.6762 3.3380 *Yapılan denemeler sonucunda bu iz için en uygun polinom katının 10 olduğu tespit edilmiştir. Emrah Üstün |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||