﻿
{"id":6806,"date":"2017-08-02T09:36:25","date_gmt":"2017-08-02T09:36:25","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=6806"},"modified":"2017-08-02T09:36:25","modified_gmt":"2017-08-02T09:36:25","slug":"emgucv-template-matchingsablon-eslestirme-ile-goruntu-uzerinde-nesne-tespiti","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/emgucv-template-matchingsablon-eslestirme-ile-goruntu-uzerinde-nesne-tespiti\/","title":{"rendered":"EmguCV &#8211; Template Matching(\u015eablon E\u015fle\u015ftirme) \u0130le G\u00f6r\u00fcnt\u00fc \u00dczerinde Nesne Tespiti"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>G\u00f6r\u00fcnt\u00fc i\u015flemede; bir par\u00e7ay\u0131, o par\u00e7an\u0131n kopar\u0131ld\u0131\u011f\u0131 b\u00fct\u00fcnden ba\u011f\u0131ms\u0131z bir \u015fekilde de\u011ferlendirip tespit edebilmek i\u00e7in m\u00fchendisler birden \u00e7ok farkl\u0131 yakla\u015f\u0131m ve bu yakla\u015f\u0131mlara e\u015flik eden y\u00f6ntemler olu\u015fturmu\u015flard\u0131r. Bu i\u00e7eri\u011fimizde nesneyi tespit edebilme yakla\u015f\u0131mlar\u0131na genel olarak de\u011finecek, bunlardan bir tanesini(Template Matching) pratikte ele alaca\u011f\u0131z.<\/p>\n<p>Nesne tespiti i\u00e7in temelde d\u00f6rt farkl\u0131 y\u00f6ntem mevcuttur. Bunlar;<\/p>\n<ul>\n<li><em><strong>Template Matching(\u015eablon E\u015fle\u015ftirme)<\/strong><\/em><br \/>\nKaynak g\u00f6r\u00fcnt\u00fc \u00fczerinde nesneyi t\u00fcm piksellerde dola\u015farak aramaktad\u0131r. Buda g\u00f6r\u00fcnt\u00fcn\u00fcn birebir ayn\u0131s\u0131 olarak aranmas\u0131 demektir. Bu y\u00fczden nesneyi ay\u0131rt etmede \u00e7ok fazla ba\u015far\u0131l\u0131 de\u011fildir.<\/p>\n<p>Bu y\u00f6ntemin ba\u015far\u0131l\u0131 olmas\u0131 i\u00e7in aranan nesnenin kaynaktan kesilmi\u015f olmas\u0131 gerekmektedir. E\u011fer ki, siz bir elma ar\u0131yorsunuz ama kaynaktaki elma yar\u0131m elma ise arama sonucu ba\u015far\u0131s\u0131z olacakt\u0131r. Ayriyetten kaynaktaki nesne ile eldeki nesne g\u00f6r\u00fcnt\u00fcs\u00fc aras\u0131ndaki boyut oranlar\u0131 birebir ayn\u0131 olmal\u0131d\u0131r. Denklik durumunda bile arama sonucu olumsuz olabilir.<\/p>\n<p>Template Matching y\u00f6ntemi ile kaynak g\u00f6rsel \u00fczerinde aranan nesne Sliding Window(Kayan\/S\u00fcrg\u00fcl\u00fc Pencere) y\u00f6ntemi ile aran\u0131r. Kaynak \u00fczerinde nesne (1, 1) koordinatlar\u0131na yerle\u015ftirilir ve t\u00fcm pikseller \u00fczerinde tek tek kayd\u0131r\u0131larak e\u015fle\u015ftirilir.\n<\/li>\n<li><em><strong>HAAR Cascade<\/strong><\/em><br \/>\nXML alt yap\u0131l\u0131 olan bu veri setleri bir nesnenin negatif ve pozitif de\u011ferlerini tutmakta ve kar\u015f\u0131la\u015ft\u0131rma esnas\u0131nda kullan\u0131lmaktad\u0131r. Bununla ilgili en g\u00fczel \u00f6rnekleri <a href=\"http:\/\/www.gencayyildiz.com\/blog\/emgucv-face-eye-nose-and-mouth-detectionyuz-goz-burun-ve-agiz-algilama\/\" target=\"_blank\">\u015fu<\/a> ve <a href=\"http:\/\/www.gencayyildiz.com\/blog\/emgucv-algilanan-yuzun-resimden-cikartilmasi\/\" target=\"_blank\">\u015fu<\/a> makalelerde bulabilirsiniz.\n<\/li>\n<li><em><strong>LBP &#8211; Local Binary Pattern<\/strong><\/em><br \/>\nBu y\u00f6ntem kaynak g\u00f6r\u00fcnt\u00fcde aranan nesneyi piksel yo\u011funlu\u011funa(intensity) g\u00f6re bulmaktad\u0131r. Daha teknik olarak, bir noktan\u0131n etraf\u0131ndaki piksellerin yo\u011funluk de\u011ferlerine g\u00f6re olu\u015fan ikili(binary) \u00f6r\u00fcnt\u00fclerden yarat\u0131l\u0131r ve bu \u00f6r\u00fcnt\u00fcler \u00fczerinde i\u015flemler ger\u00e7ekle\u015ftirerek nesneyi aramaktad\u0131r.\n<\/li>\n<li><em><strong>HOG &#8211; Histogram of Oriented Gradients<\/strong><\/em>\n<\/li>\n<\/ul>\n<p>Template Matching y\u00f6ntemi d\u0131\u015f\u0131ndaki y\u00f6ntemler &#8220;S\u0131n\u0131fland\u0131r\u0131c\u0131&#8221; olarak tan\u0131mlanan Machine Learning algoritmalar\u0131d\u0131r.<\/p>\n<p>\u015eimdi Template Matching y\u00f6ntemini EmguCV ile teknik olarak ele alal\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            Image&lt;Bgr, byte&gt; kaynak = new Image&lt;Bgr, byte&gt;(Resimler.r1);\r\n            Image&lt;Bgr, byte&gt; nesne = new Image&lt;Bgr, byte&gt;(Resimler.r2); \/\/Aranan Nesne\r\n\r\n            \/\/Template Matching MatchTemplate ile uygulanmaktad\u0131r.\r\n            using (Image&lt;Gray, float&gt; result = kaynak.MatchTemplate(nesne, TM_TYPE.CV_TM_CCOEFF_NORMED))\r\n            {\r\n                double&#x5B;] minValues, maxValues;\r\n                Point&#x5B;] minLocations, maxLocations;\r\n                result.MinMax(out minValues, out maxValues, out minLocations, out maxLocations);\r\n\r\n                \/\/Benzerlik e\u015fi\u011fi. \u0130deal olan\u0131 siz se\u00e7eceksiniz.\r\n                if (maxValues&#x5B;0] &gt; 0.6)\r\n                {\r\n                    Rectangle match = new Rectangle(maxLocations&#x5B;0], nesne.Size);\r\n                    kaynak.Draw(match, new Bgr(Color.Red), 3);\r\n                }\r\n            }\r\n            \r\n            pictureBox1.Image = kaynak.Bitmap;\r\n<\/pre>\n<p><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/08\/EmguCV-Template-Matching\u015eablon-E\u015fle\u015ftirme-\u0130le-G\u00f6r\u00fcnt\u00fc-\u00dczerinde-Nesne-Tespiti.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/08\/EmguCV-Template-Matching\u015eablon-E\u015fle\u015ftirme-\u0130le-G\u00f6r\u00fcnt\u00fc-\u00dczerinde-Nesne-Tespiti.png\" alt=\"EmguCV - Template Matching(\u015eablon E\u015fle\u015ftirme) \u0130le G\u00f6r\u00fcnt\u00fc \u00dczerinde Nesne Tespiti\" width=\"435\" height=\"329\" class=\"aligncenter size-full wp-image-6813\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/08\/EmguCV-Template-Matching\u015eablon-E\u015fle\u015ftirme-\u0130le-G\u00f6r\u00fcnt\u00fc-\u00dczerinde-Nesne-Tespiti.png 435w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/08\/EmguCV-Template-Matching\u015eablon-E\u015fle\u015ftirme-\u0130le-G\u00f6r\u00fcnt\u00fc-\u00dczerinde-Nesne-Tespiti-300x227.png 300w\" sizes=\"auto, (max-width: 435px) 100vw, 435px\" \/><\/a><\/p>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz \u00fczere kaynak g\u00f6r\u00fcnt\u00fcden bir par\u00e7a olan \u015feklimizi Template Matching y\u00f6ntemiyle tespit ederek etraf\u0131n\u0131 \u00e7izdirmi\u015f olduk.<\/p>\n<p>Zamanla di\u011fer algoritmalar \u00fczerinede isti\u015fare edece\u011fimiz \u00fcmidindeyim. O halde \u015fimdilik ho\u015f\u00e7akal\u0131n diyorum.<\/p>\n<p>Sonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, G\u00f6r\u00fcnt\u00fc i\u015flemede; bir par\u00e7ay\u0131, o par\u00e7an\u0131n kopar\u0131ld\u0131\u011f\u0131 b\u00fct\u00fcnden ba\u011f\u0131ms\u0131z bir \u015fekilde de\u011ferlendirip tespit edebilmek i\u00e7in m\u00fchendisler birden \u00e7ok farkl\u0131 yakla\u015f\u0131m ve bu yakla\u015f\u0131mlara e\u015flik eden y\u00f6ntemler olu\u015fturmu\u015flard\u0131r. Bu i\u00e7eri\u011fimizde nesneyi tespit edebilme yakla\u015f\u0131mlar\u0131na&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":6813,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1905,1904],"tags":[1947,1940,1946,1945,1944,1942,1941,1943,1948,1949,1950,1939,1951,1938],"class_list":["post-6806","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-emgucv","category-goruntu-isleme","tag-emgucv-nesne-tespiti","tag-haar-cascade","tag-histogram-of-oriented-gradients","tag-hog","tag-hog-histogram-of-oriented-gradients","tag-lbp","tag-lbp-local-binary-pattern","tag-local-binary-pattern","tag-machine-learning","tag-machine-learning-algoritmalari","tag-machine-learning-algoritmasi","tag-sablon-eslestirme","tag-sliding-window","tag-template-matching"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/6806","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=6806"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/6806\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/6813"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=6806"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=6806"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=6806"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}