Yazılım Mimarileri ve Tasarım Desenleri Üzerine

EmguCV – Template Matching(Şablon Eşleştirme) İle Görüntü Üzerinde Nesne Tespiti

Merhaba,

Görüntü işlemede; bir parçayı, o parçanın koparıldığı bütünden bağımsız bir şekilde değerlendirip tespit edebilmek için mühendisler birden çok farklı yaklaşım ve bu yaklaşımlara eşlik eden yöntemler oluşturmuşlardır. Bu içeriğimizde nesneyi tespit edebilme yaklaşımlarına genel olarak değinecek, bunlardan bir tanesini(Template Matching) pratikte ele alacağız.

Nesne tespiti için temelde dört farklı yöntem mevcuttur. Bunlar;

Template Matching yöntemi dışındaki yöntemler “Sınıflandırıcı” olarak tanımlanan Machine Learning algoritmalarıdır.

Şimdi Template Matching yöntemini EmguCV ile teknik olarak ele alalım.

            Image<Bgr, byte> kaynak = new Image<Bgr, byte>(Resimler.r1);
            Image<Bgr, byte> nesne = new Image<Bgr, byte>(Resimler.r2); //Aranan Nesne

            //Template Matching MatchTemplate ile uygulanmaktadır.
            using (Image<Gray, float> result = kaynak.MatchTemplate(nesne, TM_TYPE.CV_TM_CCOEFF_NORMED))
            {
                double[] minValues, maxValues;
                Point[] minLocations, maxLocations;
                result.MinMax(out minValues, out maxValues, out minLocations, out maxLocations);

                //Benzerlik eşiği. İdeal olanı siz seçeceksiniz.
                if (maxValues[0] > 0.6)
                {
                    Rectangle match = new Rectangle(maxLocations[0], nesne.Size);
                    kaynak.Draw(match, new Bgr(Color.Red), 3);
                }
            }
            
            pictureBox1.Image = kaynak.Bitmap;

Gördüğünüz üzere kaynak görüntüden bir parça olan şeklimizi Template Matching yöntemiyle tespit ederek etrafını çizdirmiş olduk.

Zamanla diğer algoritmalar üzerinede istişare edeceğimiz ümidindeyim. O halde şimdilik hoşçakalın diyorum.

Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…

Mobil sürümden çık