C++ & Opencv & Baduk(Go)
-
Öncellikle selamlar hocamlar, baştan söyleyeyim opencv hakkında bilgim yok. Yapmak istediğim uygulama board game olan go'yu içeriyor.
Go'da oyun biterken kimin kazandığını anlamak için şöyle bi yol izliyoruz... Beyaz taşların çevrelediği alanlar şekilde kare ile işaretlenmiş, siyah taşların çevrelediği alanlar üçgen ile işaretlenmiş(normal tahtada tabiki böyle bişi yok, o karelerin ve üçgenlerin üzerinde durduğu keşisim noktalarını sayıyoruz). En sonunda kimin çevrelediği alan daha fazlaysa oyunu o kazanıyor(alanlar içerisinde kalan diğer renkten taşların olması durumu var şuanlık bunu es geçiyorum sonraki aşama o).
(araya not oyunun temellerini öğrenmek istiyorsanız: http://playgo.to/iwtg/turkish/ şöyle etkileşimli bir web site mevcut gayet güzel anlatıyor)
Velhasıl fotoğrafta gördüğünüz tahta 13*13 boyutunda normalde 19*19 tahtalarda oynuyoruz. Telefondan çektiğim bi fotoğrafı uygulamaya atıp bana çıktı olarak beyazın çevrelediği alanı ve siyahın çevrelediği alanı vermesini istiyorum. Bunun için neleri öğrenmem gerekiyor araştıracağım teknik terimler nelerdir, kısaca benim için yol planını anlatacak biri var mı?
C++ ile yazacağım, opencv hakkında vereceğiniz her türlü iyi yazılmış tutorial makbule geçer ama önceliğim yol haritası.
Teşekkürler.
-
Bunun için OpenCV şart değil. Furrier dönüşümleri ile herhangi bir dilde yapabilirsin. Önce siyah beyaz çıktısını alacaksın tahtanın yuvarlarlakları kenar bulma formülü vs var. Gürültüleri vs giderip sonuca ulaşabilirsin.
Anahtar kelime Image Processing Fourier Transform
-
http://tomasm.cz/imago_files/go_image_recognition.pdf
Konu hakkında tez yazmışlar. İçinde bazı programların linkleri de mevcut.
-
hocamlar çok teşekkürler ikinizi de öptüm
-
MhmdAlmz bunu yazdı
Bunun için OpenCV şart değil. Furrier dönüşümleri ile herhangi bir dilde yapabilirsin. Önce siyah beyaz çıktısını alacaksın tahtanın yuvarlarlakları kenar bulma formülü vs var. Gürültüleri vs giderip sonuca ulaşabilirsin.
Anahtar kelime Image Processing Fourier Transform
:)) Tekerlegi tekrar icad etsin yani :)
Sen dinleme bu arkadasi hocam. Oturup bunu tek basina kodlamaya calisirsan cok eziyet cekersin. :D ( bu arada @MhmdAlmz gecen konunda bana da tesekkur etmisin rica ederim :) )
Sahne ile ilgili belli constraintler(turkce tam karsiligi gelmedi aklima) olursa daha rahat halledersin.
Go tahtasi hep sari mi olacak mesela?Veya masanin duracagi zeminin rengi belli olsa daha net sonuclar elde edebilirsin. Ama her yerde calissin istiyorum diyorsan o biraz daha zor olacaktir.
Genel olarak izleyecegin yol su sekilde.
Resmi renge gore filtreden gecir. (tahtayi zeminden ayirmak icin.)
Sonra kontur veya cizgi bul
Kontur buluyorsan poligona fit etmeye calis (approx polydp gibi bi fonksiyonu vardi)
Cizgi bulduysan cizginin kesisimlerini bul.Bu sekilde elinde koseler olmus olacak
Harris corner detector diye bi algoritma var ama genelde cok fazla kose buldugu icin senin senaryolarda guzel calismayacaktir.
Neyse efendim koseleri bulduktan sonra resmin o koselere gore homografisini alacaksin. Bu sayede artik tahtaya tepeden bakiyor olacaksin
Sonrasinda siyah ve beyaz icin fhresholddan gecirip taslarin lokasyonlarini cikartican.
Taslari cikarttiktan sonra morfolojik islemlerle birbirine baglayip tekrar kontur alip icte kalan alani falan hesaplayabilirsin zannimca.Tabi bu son basamak biraz zahmetli olabilir, su an kafamda boyle bir yol var ama cikan sonuca gore arada baska filtreler islemler vs uygulanabilir.
Isin icinden cikamayip vazgecersen haber ver, fikrini calip mobil uygulama yapabilirim :D
Kolay gelsin simdiden :))
-
NmC bunu yazdıMhmdAlmz bunu yazdı
Bunun için OpenCV şart değil. Furrier dönüşümleri ile herhangi bir dilde yapabilirsin. Önce siyah beyaz çıktısını alacaksın tahtanın yuvarlarlakları kenar bulma formülü vs var. Gürültüleri vs giderip sonuca ulaşabilirsin.
Anahtar kelime Image Processing Fourier Transform
:)) Tekerlegi tekrar icad etsin yani :)
Sen dinleme bu arkadasi hocam. Oturup bunu tek basina kodlamaya calisirsan cok eziyet cekersin. :D ( bu arada @MhmdAlmz gecen konunda bana da tesekkur etmisin rica ederim :) )
Sahne ile ilgili belli constraintler(turkce tam karsiligi gelmedi aklima) olursa daha rahat halledersin.
Go tahtasi hep sari mi olacak mesela?Veya masanin duracagi zeminin rengi belli olsa daha net sonuclar elde edebilirsin. Ama her yerde calissin istiyorum diyorsan o biraz daha zor olacaktir.
Genel olarak izleyecegin yol su sekilde.
Resmi renge gore filtreden gecir. (tahtayi zeminden ayirmak icin.)
Sonra kontur veya cizgi bul
Kontur buluyorsan poligona fit etmeye calis (approx polydp gibi bi fonksiyonu vardi)
Cizgi bulduysan cizginin kesisimlerini bul.Bu sekilde elinde koseler olmus olacak
Harris corner detector diye bi algoritma var ama genelde cok fazla kose buldugu icin senin senaryolarda guzel calismayacaktir.
Neyse efendim koseleri bulduktan sonra resmin o koselere gore homografisini alacaksin. Bu sayede artik tahtaya tepeden bakiyor olacaksin
Sonrasinda siyah ve beyaz icin fhresholddan gecirip taslarin lokasyonlarini cikartican.
Taslari cikarttiktan sonra morfolojik islemlerle birbirine baglayip tekrar kontur alip icte kalan alani falan hesaplayabilirsin zannimca.Tabi bu son basamak biraz zahmetli olabilir, su an kafamda boyle bir yol var ama cikan sonuca gore arada baska filtreler islemler vs uygulanabilir.
Isin icinden cikamayip vazgecersen haber ver, fikrini calip mobil uygulama yapabilirim :D
Kolay gelsin simdiden :))
Hocam çok teşekkürler böyle uzun açıklayıcı bir post için, eccük biraz bişiler okuyup araştırmam gerekiyor ki onlarıda mesajlarınızda buldum zaten, geriye kalan öğrenme ve uygulama aşaması olacak. Önce programı halledip daha sonra mobile dökeceğim aklımda bu vardı zaten belki cloud gibi bir sistemde çalıştırırım. İşin içinden çıkarım diye düşünüyorum ama eccük biraz fazla zamanımı alabilir tabi şu sıralar boş vaktim çok ben ufaktan başlıyım :D
-
Bir kaç mobil uygulama var zaten. Verdiğim tezin içinde linkleri var.
-
@NmC'nin söylediklerine ek olarak taşları bulmak için watershed algoritmasına bakabilirsin hocam
-
NmC bunu yazdıMhmdAlmz bunu yazdı
Bunun için OpenCV şart değil. Furrier dönüşümleri ile herhangi bir dilde yapabilirsin. Önce siyah beyaz çıktısını alacaksın tahtanın yuvarlarlakları kenar bulma formülü vs var. Gürültüleri vs giderip sonuca ulaşabilirsin.
Anahtar kelime Image Processing Fourier Transform
:)) Tekerlegi tekrar icad etsin yani :)
Sen dinleme bu arkadasi hocam. Oturup bunu tek basina kodlamaya calisirsan cok eziyet cekersin. :D ( bu arada @MhmdAlmz gecen konunda bana da tesekkur etmisin rica ederim :) )
Sahne ile ilgili belli constraintler(turkce tam karsiligi gelmedi aklima) olursa daha rahat halledersin.
Go tahtasi hep sari mi olacak mesela?Veya masanin duracagi zeminin rengi belli olsa daha net sonuclar elde edebilirsin. Ama her yerde calissin istiyorum diyorsan o biraz daha zor olacaktir.
Genel olarak izleyecegin yol su sekilde.
Resmi renge gore filtreden gecir. (tahtayi zeminden ayirmak icin.)
Sonra kontur veya cizgi bul
Kontur buluyorsan poligona fit etmeye calis (approx polydp gibi bi fonksiyonu vardi)
Cizgi bulduysan cizginin kesisimlerini bul.Bu sekilde elinde koseler olmus olacak
Harris corner detector diye bi algoritma var ama genelde cok fazla kose buldugu icin senin senaryolarda guzel calismayacaktir.
Neyse efendim koseleri bulduktan sonra resmin o koselere gore homografisini alacaksin. Bu sayede artik tahtaya tepeden bakiyor olacaksin
Sonrasinda siyah ve beyaz icin fhresholddan gecirip taslarin lokasyonlarini cikartican.
Taslari cikarttiktan sonra morfolojik islemlerle birbirine baglayip tekrar kontur alip icte kalan alani falan hesaplayabilirsin zannimca.Tabi bu son basamak biraz zahmetli olabilir, su an kafamda boyle bir yol var ama cikan sonuca gore arada baska filtreler islemler vs uygulanabilir.
Isin icinden cikamayip vazgecersen haber ver, fikrini calip mobil uygulama yapabilirim :D
Kolay gelsin simdiden :))
Arkadaş teknik terim istedi hocam :) Tekerleği demekki sıfırdan icat etmek istiyor.
Yoksa istediği şeyin hazırı bile var. Tıpkı Optik Okuyucu mantığında bir sistem istiyor aslında. Bununla ilgili bir sürü kaynak bulabilir internette :)
Bende buna benzer bir projenin hazır NodeJS ile yapılmış bir uygulaması var. Bende geliştiriyorum yani. Yanlış anlaşıldım herhalde gene .
Bu arada rica ederim.
-
Konuyla ilgisiz en son 3-4 sene önce bıraktığımda 9 kyu idim. Bu konuyu görünce bir maç oynadım 25 kyu adama yenildim :D
-
krypt bunu yazdı
Konuyla ilgisiz en son 3-4 sene önce bıraktığımda 9 kyu idim. Bu konuyu görünce bir maç oynadım 25 kyu adama yenildim :D
hocam bayağı paslanmışsın yav :D hangi server'da oynadın artık lelaa gibi botlar sayesinde internette cheater'lar arttı