Cumartesi, Aralık 29, 2007

Poor because Poor !

Yıllar yıllar evvel - hey gidi günler hey - Üniversitede okurken diğer mühendislik bölümlerinin aksine biz ekonomi dersini İktisadi ve idari bilimler fakültesinden aldık. Diğer mühendislik bölümleri Mühedislik Bilimlerinden alıyordu. Ve bizim dönemimizde bir de yeni bir uygulama yapıldı. Dersin Her bölümünü ayrı bir hoca gelip ders anlatmıştı. Ekonominin bir çeşit mission impossible* olduğunuda oradan öğrendik. Hocalardan biri Fakir ülkeler niçin fakirdir üzerine bir şeyler anlatmıştı. Ve o Anllattığı şeyler aklımızda yer etmişti . Çok sonra öğrendim ki bu konunun evveliyatı varmış.
ben size konuyu oradan aktarmak istiyorum

...

ODTÜ, İdari Bilimler Fakültesi'nin kurucusu Fuat Çobanoğlu, 1959 yılında bizlere ‘‘Fakir milletler, niçin fakirdir?’’ diye yazılı bir sınav vermişti. Bir hafta sonra yazılının sonuçlarını sorduğumuzda, ‘‘Nasıl olsa saçmalamışsınızdır, zaten ben káğıtları mandalcıya verdim’’ dedi. İsyan ettik. Peki öyleyse, sınavı sözlü olarak tekrar ediyorum; sırayla cevaplayın dedi. Hatırladığım kadarıyla cevaplarımız üç sebepte birleşti. Bunlardan birincisi, ‘‘Medeniyet sıcaktan kaçar’’, ikincisi ‘‘Dinler, gelişmeyi köstekler’’, üçüncüsü ise ‘‘Gelişmiş ülkeler, az gelişmişleri sömürür’’ idi. Fuat Bey, medeniyetin sıcak ülkelerde kurulduğunu söyleyerek, tek fiskeyle birinci cevabı yıktı. Dinlerin gelişmeyi kösteklediği iddiasına karşı, insanlığın tarihi gelişiminde, dinlerin medeniyete çok büyük katkılarda bulunduğunu örnekleriyle anlattı. O sebep de havaya uçtu. Geldik üçüncü sebebe. Yani ‘‘sömürü’’ teorisine. Şu soruyu sordu. Niçin siyah Afrikalılar, yaptıkları top ve tüfeklerle, gemilerine binip Avrupa sahillerine çıkarak beyaz Avrupalıları sömürge ulus haline getirmediler? Verdiğimiz cevap, siyahların o kadar ileri olmadığı idi. Çobanoğlu, işte ben de onu soruyorum. Niçin siyahlar, beyazlar kadar ileri gidememiştir? Sizin cevabınız, geriliğin (yani fakirliğin) nereden kaynaklandığının değil, geri kalmış olanların niçin başının beladan kurtulamadığının açıklaması.

Peki hocam siz söyleyin, dedik. Fakir ülkeler, niçin fakirdir?

(Son söz, Çobanoğlu'ndan.)

SON SÖZ: Fakir ülkeler, fakir olduğu için fakirdir.
...
Saçamamı buludunuz. Şöyle açıklayayım Pek çok sektörde para kazanabilmeniz için para harcamanız gerekir. yine Ege Cansenden devam edelim

‘Fakir ülkeler niçin fakirdir’ sorusuna verilen ‘çünkü fakirdir’ cevabı, saçma değildir. Çünkü, fakirlik hangi sebepten başlamış olursa olsun; fakir ülkelerin, fakir oldukları için fakir kalma ihtimalleri büyüktür. Fakirlik, tuzaklarlarla dolu bir kısır döngüdür. Önemli olan, bu çemberinin nereden ve nasıl kırılacağının bilmektir. Zenginleşememek ‘fakirlik tuzaklarından’ kurtulamamaktır. Dolayısıyla, refaha giden yolun birinci adımı, ‘fakirlik tuzakları’nın neler olduğunu teşhis ve bunlardan kurtulma yöntemlerini bulmaktır.

Peki bütün bunların burada işimi ne ? açıklayayım. Bence Programlama bu kısır döngüyü kırmamızda yardımı olacak bir sektördür. Çünkü Başlangıç için gereken sermayeye** sahibiz ve dünyanın herhangi bir yerindeki yazılımcının imkanları bizim burada sahip olduğumuzun üstünde değil.

Peki niçin olmuyor niçin dünya çapında yazılım şirketlerimiz yok. Anlatacağız efendim sabırlı olun ...

* Economics is the study of the use of SCARCE resources to SATISFY UNLİMİTED human wants
** Orta halli bir bilgisayar İntenet gibi devasa bir kaynak ve Çalışan bir kafa ve en önemlisi çalışan insan. En önemlisi diye özellikle yazdım diğerlerine fazlasıyla sahip olupta internette ömür çürüten pek çok insan var...

Salı, Aralık 25, 2007

FLTK Linkleri


Yazdığım programların tamamında FLTK kullandığımı biliyorsunuz. Bu programları epey bir indiren de var downloads sayıları öyle gösteriyor. Ama kimseden kod konusunda yorum ve düzeltme isteği gelmiyor. Ben bunu FLTK nın pek bilinmemesine bağlıyorum. Bu eksikliğe bir nebze olsun faydası dokunacak kaynakları göstereyim istedim
Öncelikle Ana Site
http://www.fltk.org/
Online Dökümantasyonu
http://www.fltk.org/documentation.php/doc-1.1/toc.html
PDF versiyonu da var referans bilgilerinin yanında nasıl kullanılacağına dair örnekler ve yazılar içeren bir e-kitap.

FLTK nin 3 ana versiyonu var 1.1.x , 1.3.x ve  2.0.x. Sondan başlarsak  2. versiyonu daha gelişmiş bir sürüm olarak dizayn ediliyormuş fakat kararlı bir sürümü yok. Yakın gelecekte de olacak gibi görünmüyor, tavsiyem hiç bulaşmayın.

1.1.x serisi daha bir oturmuş 1.1.9 kararlı sürümü olarak var 1.1.10 in eli kulağında. Ve söylenenlere göre bu 1.1.x serisinin son sürümü olacak. Benim tavsiyem vede kullandığım 1.1.x versiyonu.

Bana UTF8 lazım diyorsanız  1.3.x de UTF8 de var. yapı olarak 1.1.x serisine benziyor extra widgetlerde eklenmesi düşünülüyor. Halen kararlı bir sürümü olmasada oldukça kararlı bir yapısı olduğu söyleniyor. Zaten 1.1.10 dan sonra bütün çalışmalar bu seriye yönelecek gibi görünüyor. 


FLTK öğrenecekseniz size ilk seçenek olarak Erco'nun videolarını önerebiliriz
Yine Erco'nun küçük örneklerden oluşan Erco's FLTK Cheat Page de işinize yarayacak pek çok şey bulabilirsiniz Size tavsiyem referans olarak da kullanın.
Oralara  kadar gitmişken  Fl_Table ,  Fl_Native_File_Chooser  ve Fl_Tree ye bakmadan geçmeyin çok faydalı ve kullanışlı bileşenler.

Bir FLTK ya giriş yazısı : Beginner Fltk Tutorial

Pekiii bir yerlerde takıldınız nereden yardım alacaksınız 2 seçeneğiniz var. Ana sitedeki forum kısmı yada GIDForums -> Computer Programming Forums -> FLTK Forum
Son bahsettiğimiz. forumdan FLTK kullanımı ile ilgili iki makale
GUI programming with FLTK
FLTK && fluid In Motion

FLUID den daha önceleri bahsetmiştim. FLTK'nın GUI tasarlamak için çok pratik bir aracı.
FLTK ve FLUID için hazırlanmış bir dizi makale 1 2 3 4 yazılar Almanca fakat FoxLingo'nuz varsa problem yok :)

FLTK nın en büyük eksikliği insan Kullanan ve ilgilenen insan sayısı artsa pek çok GUI kütüphanesini geçer. Çünkü çok sağlam ve bir temeli var. Hemen her platformda çalışıyor.
Ama ilgilenen sayısının eksikliği, Kaynak, ekstra bileşen -widget - ve örnek azlığına sebep oluyor. Bu eksikliği bir nebze olsun gidermenin yolu FLTK kullanılarak yazılmış programların
Kodlarını inclemekten geçer. Bunlardan bazıları

Gmsh: a three-dimensional finite element mesh generator
Avimator is an easy-to-use, open source tool for creating and editing avatar animations for Second Life.
PosteRazor Make your own poster!
Nuke : The Nuke-2D compositing software allows for the creation of complex interactive digital composites using relatively modest computing hardware. FLTK nın babası Bill Spitzak'ın yazdığı ödüllü program ayrıca bakınız Linux and Star Trek ve FLTK ile yapamayacağınızın olmadığını anlayın
flPhoto : flPhoto is a basic image management and display program
Sudoku : Sudoku game
SPTK library : FLTK temelli bir GUI kütüphanesi yanında pek çok Veritabanına ulaşmanızı sağlayan SPDB ile birlikte
Ve Ekstra bileşenler
Fltk_Contour : The Fltk_Contour is an attempt to develop an easy scientific data visualization widget for the FLTK library.
Flmm : Flmm is a collection of new and improved widgets for the FLTK toolkit.

Bütün bunların üstüne benim yazdığım programlarda sizin için -pek iyi olmasada -örnek sayılabilir. FannTool, BluePlayer, BushSweeper, ...
FLTK öğrenmeye başlarsanız elimden geldiğince yardımcı olmaya çalışacağımı söylememe gerek yok sanırım...

Cumartesi, Aralık 01, 2007

Ölümden Yaşama


Baş koymuşum Türkiyemin yoluna
Düzlüğüne yokuşuna ölürüm
Asırlardır kır atımı suladım
Irmağının akışına ölürüm

Uğrunda ölürüz öldürürüz. Bir şehidin yerini bin alır. En son ocağımız sönmeden sönmez bu şafaklarda yüzen al sancak. Fakat...

Bu ülke 89'dan beri su alan bir gemi. Fransız ihtilali yalnız Batı feodalitesini değil ihtiyar şark'ın da ölümü olacaktır. Osmanlı, bir başka medeniyetin varlığını o zaman farkeder: henüz ne imanını kaybetmiştir ne de haysiyetini... Zirvelerden bakar Diyar' ı küfre; Avrupa maddedir kendisi ruh. Bu tanımadığı dünyanın kesif ve müselsel taarruzları karşısında kuvvetinden şüphe etmeye başlar,.. Hayret yerini hayranlığa bırakır., hayranlık Teslimiyete.

Fakat kabul edelim ki cenk devri bitti Bayrağın bayrak olması için kan, Toprağın vatan olması için ölmek yetmiyor. Iramağın akışına ölmek değil, bir zerresini boşa akıtmamak için alınteri dökmek lazım. Sıktığında şüheda fışkıran toprağın düzlüğünü, yokuşunu artık alın terimizle sulamanın vakit gelmedimi ?
Bayrakları bayrak yapan üstündeki kandır,
Vatan eğer uğrunda ölen varsa vatandır.
Yüzyıllarca uygulanmış ama yeterli olmamıştır. Üstüne birazda

Bayrakları bayrak yapan üstündeki alınteridir,
Vatan eğer uğrunda yaşayan varsa vatandır.
demek lazım

Mehmet Akif'in "Allah bir daha bu millete istiklal marşı yazdırmasın" duasına canı gönülden amin deyip bunun için gerekli olan fiili duaya -çalışmaya uğrunda yaşamaya - bir an önce başlayın.

Not : Bu yazı kısmen Uçaktaki bir tanımadıkla yapılan memleket kurtarma sohbeti sonrası Münih te bir Otel odasında güneş doğarken yazıldı

Perşembe, Kasım 22, 2007

OpenCv'ye Giriş 5

OpenCv'ye giriş seri yazılarımızı - Nihayet - bitiriyoruz. Yazı dizimize olan müthiş ilgi - ! sizlik - için teşekkürlerimizi bir borç biliriz

Bu yazımızda video ve web camden görüntü almayı anlatıyoruz. bu işe elin oğlu capture demiş.
Hareketli görüntü dediğimizde zaten görüntünün peş peşe gösterilmesi ile oluşuyor.

* capture için CvCapture tipinde bir işaretçi kullanıyoruz
CvCapture *cap;
* Video Dosyası için cvCaptureFromFile fonksiyonu kullanıyoruz.
CvCapture* cvCaptureFromFile( const char* dosya_adi );
cap=cvCaptureFromFile("video.avi");
* Web Cam için cvCaptureFromCAM fonksiyonu kullanıyoruz.
CvCapture* cvCaptureFromCAM( int index );
index : Kamera No, index olara -1 kullandığımızda hangi kamera varsa onu kullanır.
cap=cvCaptureFromCAM( -1 );
* Capture ile işimiz bittiğinde cvReleaseCapture fonksiyonuyla ile gereken temizlik yapılıyor.
void cvReleaseCapture( CvCapture** capture );
cvReleaseCapture( &cap );
* Alacağımız hareketli görüntünün çeşitli özelliklerini öğrenmek için cvGetCaptureProperty fonksiyonu kullanılır.
double cvGetCaptureProperty( CvCapture* capture, int property_id );
capture : cvCaptureFromFile veya cvCaptureFromCAM ile elde ettiğimiz işaretçi
property_id : Öğrenmek istediğimiz özellik
yani
CV_CAP_PROP_POS_MSEC : Video dosyası için milisaniye cinsinden geçen süre
CV_CAP_PROP_POS_FRAMES : Frame indeksi - 0 ilk -
CV_CAP_PROP_POS_AVI_RATIO : - Video dosyası için gösterilen yerini (0 ile 1 ) gösteren indeks 0 başlangıç 1 bitiş
CV_CAP_PROP_FRAME_WIDTH : Görüntü Eni - X -
CV_CAP_PROP_FRAME_HEIGHT : Görüntü Boyu - Y -
CV_CAP_PROP_FPS : Saniyedeki Görüntü sayısı
CV_CAP_PROP_FOURCC : 4 karekterden oluşan Video Sıkıştırma Format kısaltması - codec - CV_CAP_PROP_FRAME_COUNT - Video dosyasındaki frame sayısı
* Bahsi geçen Özellikleri değiştirmek için cvSetCaptureProperty fonksiyonu kullanılır benzeri şekilde
int cvSetCaptureProperty( CvCapture* capture, int property_id, double value );
property_id : Bir önceki fonksiyonda geçti
value : Değiştirmek istediğimiz özelliğin yeni değeri.
Dikkat edilmesi gereken bir nokta her özelliği istediğiniz gibi değiştiremiyorsunuz. Bazıları Web Cam için bazıları Video dosyası için geçerli detay için OpenCv dökümantasyonuna bakın

* Sıra görüntüyü almaya geldi bu iş için cvQueryFrame fonksiyonunu kullanıyoruz
IplImage* cvQueryFrame( CvCapture* capture );
oda bize daha önce öğrendiğimiz IplImage cinsinden görüntüyü veriyor gerisi artık bize kalmış OpenCv nin imkanlarıyla istediğimizi yapabiliriz...

Örnek Kod için Buyrunuz : Ders5

Deeep Not : Bu serimizi hele şükür bitirdik. Mütevazi bir bilgisayarda aldık ama henüz içini ayarlayamadık, Yeni projelerimiz var, yazılacak pek çok konu da var. Ama Bir taraftan okur-yazamaz olmamız diğer taraftan vakitsizlik engelliyor. Arayan soranların hatrına İnşallah yazmaya başlayacağız.






Cumartesi, Kasım 10, 2007

Uzun yola çıkmaya hüküm giydim !

Mataramda Tuzlu Su
West Indies,Kızıl Elma,İtaki,Maçin!
Uzun yola çıkmaya hüküm giydim.
Beyazların yöresinde nasibim kalmadı
yerlilerin topraklarına karşı şuç işledim
zorbaların arasında tehlikeli bir nifak
uyrukların arasında uygunsuz biriyim
vahşetim
beni baygın meyvaların lezzetinden kopardı
kendime dünyada bir
acı kök tadı seçtim
yakın yerde soluklanacak gölge bana yok
uzun yola çıkmaya hüküm giydim.

Uzak nedir?
Kendinin bile ücrasında yaşayan benim için
gidecek yer ne kadar uzak olabilir?
Başım açık, saçlarımı ikiye
ortadan ayırdım
kimin ülkesinden geçsem
şakaklarımda dövmeler beni ele verecek
cesur ve onurlu diyecekler
halbuki suskun ve kederliyim
korsanlardan kaptığım gürlek nara
işime yaramıyor
rençberlerin o rahat
ve oturmuş lehçesinden tiksinirim
boynumda
bana yargı yükleyenlerin
utançlarından yapılma mücevherler
sırtımda sağır kantarı gizli bilgilerin
mataramdaki suya tuz ekledim, azığım yok
uzun yola çıkmaya hüküm giydim.

Bir hayatı,ısmarlama bir hayatı bırakıyorum
görenler üstünde iyi duruyor derdi her bakışta
askerken kantinden satın aldığım cep aynası
bazı geceler çıkarken
uçarı bir gülümseyişle takındığım muşta
gibi lükslerim de burda kalacak
siparişi yargıcılar tarafından verilmiş
bu hayattan ne koku, ne yankı, ne de boya
taşımamı yasaklayan belgeyi imzaladım
burada bitti artık işim, ocağım yok
uzun yola çıkmaya hüküm giydim.


İsmet Özel
Bir kaç günlüğüne Uzakta - yurt dışında- olacağım dualarınızı eksik etmeyin

Perşembe, Kasım 01, 2007

EXPIRED DOMAIN - mdkgroup

Genç düşünce, forumlarda kanat çırpar. Yasak bölge tanımayan bir tecessüs; tanımayan, daha doğrusu tanımak istemeyen. En çatık kaşlılarında bile insanı gülümseten bir "itimâd-ı nefs", dünyanın kendisi ile başladığını vehmeden bir saffet var. Tomurcukların vaitkâr gururu.

Bir şehrin iç sokakları gibi mahrem ve samimidirler. Devrin çehresini makyajsız olarak onlarda bulursunuz. Müzeden çok antikacı dükkânı, mühmel ve derbeder.

Forum, hür tefekkürün kalesi. Belki serseri ama taze ve sıcak bir tefekkür. Kitap, çok defa tek insanın eseri, tek düşüncenin yankısı; Forum bir zekâlar topluluğunun. Bir neslin vasiyetnamesidir forum; vasiyetnamesi, daha doğrusu mesajı. Kapanan her forum, kaybedilen bir savaş, hezimet veya intihar...
Bir süredir mdkgorup forumuna girmeye kalktığımda "EXPIRED DOMAIN" mesajıyla karşılaşıyorum. Reverse Engineering Konusunda pek çok şey öğrendiğim ve MrStop, Vona, Slayer, Odin, ve adınını sayamadığım pek çok zeka ile sanal olarak tanışma fırsatı bulduğum
Forumun bu şekil de kapanması dokundu bana olmasın sonumuz böyle !

Pazartesi, Ekim 29, 2007

OpenCv'ye Giriş 4


Bu dersten önceki öğrendiklerinizle elinizdeki görüntü ile ilgili hertürlü işlemi yapabilirsiniz. Fakat gerek yok OpenCv size pekçok temel Görüntü işleme fonksiytonlarını sağlamış numune bazından 5 tanesi programımızda kullancağız.
Programımızı indirin, inceleyin ve deneyin : ders4
Denemek için üstteki resimden bir konu mankeni seçiyoruz
Gözünüz boşuna Lena'yı aramasın. Hem zaten biz bu mankeni BushSweeper da kullanmıştık. Konunun Detayları Görüntü işlemeye giriyor ve bu konuda bilgi sahibi olmanız lazım ben işlem sonuçlarını verip geçeceğim

Erode : Aşındırma (erozyon, erosion)

Kullanılan fonksiyon cvErode
Detayı : http://homepages.inf.ed.ac.uk/rbf/HIPR2/erode.htm


Dilate : Genişletme (dilation)
Kullanılan fonksiyon cvDilate
Detayı : http://homepages.inf.ed.ac.uk/rbf/HIPR2/dilate.htm

Smooth : Yumuşatma !
Kullanılan fonksiyon cvSmooth
Detayı : http://homepages.inf.ed.ac.uk/rbf/HIPR2/gsmooth.htm



Threshold :
Kullanılan fonksiyon cvThreshold Detaylı kullanımı için bakınız
Detayı : http://homepages.inf.ed.ac.uk/rbf/HIPR2/threshld.htm

Edge : Kenar Bulma - Canny metoduyla -


Kullanılan fonksiyon cvCanny
Detayı : http://homepages.inf.ed.ac.uk/rbf/HIPR2/canny.htm

Çarşamba, Ekim 24, 2007

Çalınabilenler ve Çalınamayanlar

Eşkıyalar eşyalarla yeni bir yola revan olmadan önce delikanlı soyulan kafileden kopup peşlerinden koşmaya başladı yol kesenlerin. Herkes canını kurtardığına sevinirken o malının arkasından feryat ediyor, nefes nefese yetişmeye çalışıyordu haydutlara.

“Defterlerim!” diyordu. “Onlar sizin işinize yaramaz! Ne olur geri verin onları!” Reis, bir el işaretiyle durdurdu adamlarını ve bu acemi gence gülümseyerek kulak verdi: “Diğer eşyalarım sizde kalsın. Sadece defterlerimi istiyorum! Üç yıldır sırf bu notları tutabilmek için memleketimden uzak kaldım. Bu bilgileri edinebilmek için diz çöküp dirsek çürüttüm. Her sayfasında göz nuru var onların!” Bu sözler üzerine haydutların başı gülümsemesine bir adım daha attırıp gülmeye başladı. “Sen nasıl olur da ilim tahsil ettiğini söylersin. Baksana defterlerin ve notların elinden alınınca ilimsiz, irfansız kalıveriyorsun!” dedikten sonra adamlarına kitap ve defterlerin geri verilmesini emretti. Genç sevinçle notlarına kavuşurken, hüzünle ayrıldı oradan. Eşkıyanın dudaklarından çıkan bu iki cümle makasın iki kanadı gibi zihninde sürekli işliyor, kendini savunmak için attığı bütün düğümleri bir çırpıda kesip atıyordu. Adam haklıydı. Memleketine döner dönmez ilk işi kağıtta olanları kalbine nakşetmek olmalıydı. Genç söyleyene değil söyletene baktı ve üç yılda yazdıklarını üç yılda temize çekti kalbinde. *
Şimdi Bu kıssada nereden çıktı diyebilirsiniz, açıklayayım. Dün gece evimden Bilgisayarım çalındı, Ama bilgilerim çalınamadı - Elhamdülillah ala külli hal sival-küfri ved-dalal -

Deme şu niçin şöyle
Yerincedir ol öyle
Bak sonuna sabreyle
Mevlâ görelim neyler
Neylerse güzel eyler
Yalnız geciken yazı ve programlar için ; zamanım yok bahanesine bilgisyarım yok bahanaesi de eklenebilir dikkatinize :)


* Kısasa daki genç İmam-ı Gazalidir...

Cumartesi, Ekim 20, 2007

Fl_OpenCV 0.7 çıktı


Sonunda epeydir planladığım özellikleri Fl_OpenCv ye ekledim. bazı kısımları yeniden yazdım.
Yeni özelliklerine gelecek olursak
  • WebCam ve Video dosyasından görüntü alabiliyoruz.
  • Görüntüyü pencere içine sığacak halde ebatlandırarak gösterebiliyoruz.
Yeni özelliklerin birkısmının kullanımını gösterecek şekilde Yüz bulma örnek programız geliştirildi. video ve webcam görüntüsü kullanabilir hale getirildi.
Indirmek için : NewFace

Not : OpenCv'ye Giriş yazı dizimizin dördüncüsünün - temel Görüntü işleme fonksiyonları - örnek programı epeydir hazır. Bir türlü elim varıp yazısını yazamadım. Pek ilgi gösterende olmadı zaten, Yazının beşincisi - Video fonksiyonları - sonuncusu olabilir. Kısmet...

Pazartesi, Ekim 15, 2007

FannTool - 0.80 Çıktı


FannTool'un yeni versiyonu çıktı.
Başlıca göerebileceğiniz değişiklik
Artık eğittiğiniz YSA yı FannTool içinden çalıştırbilemenizdir.
Vakit bulabilirsem bir de kullanımını anlatacak bir yazı hazırlamam lazım.
FannTool - 0.8 for Linux
FannTool - 0.8 for Windows

İstek öneri ve hata bildirimlerinizi memnuniyetle bekleriz...

Pazartesi, Ekim 08, 2007

Mevlam sana ersem diye

Mevlam sana ersem diye
Aşka düşen pervaneyim
Cemalini görsem diye
Aşka düşen pervaneyim

Derdinle ağlar inlerim
Aşka düşer hep inlerim
Bülbül şakır ben dinlerim
Aşka düşen pervaneyim

Göz yaşlarım durmaz akar
Seller gibi ağlar coşar
Vuslat ümidiyle yaşar
Aşka düşen pervaneyim

Kevni temaşa eylerim
Nevayı aşkı söylerim
Sensiz cihanı neylerim
Aşka düşen pervaneyim
Epeydir dinlemediğim bir ilahiydi bu sabah yeniden dinledim...
Tavsiye ederim dinleyin
Kadir geceleriniz hakkınızda hayırlara vesile olsun...
Dualarınıza muhtacız bekleriz...

Pazar, Ekim 07, 2007

OpenCv'ye Giriş 3

ilk örneğimizde görüntü dosyasını okuyup ekranda gösterdik. Ama eksik bir nokta kaldı kaydetmek için ne yapacağız ?
Görüntüyü Kaydetmemiz gerektiğinde cvSaveImage fonksiyonunu kullanıyoruz.

int cvSaveImage( const char* filename, const CvArr* image );
filename : Kaydedilecek Görüntüye vereceğimiz dosya ismi dosya isminde kullandığımız
uzantıya göre kaydedilir. mesela a.jpg dersek jpg formatında a.bmp dersek bmp formatında
kaydedilir.
image : Kaydedilecek Görüntünün işaretçisi

Görüntü dediğimiz şey Renk noktalarından - piksel - oluşan 2 boyutlu bir matristir. görüntüyle ilgili işlemler için bizim bu noktaları okuyup yazmamız lazım. Piksel deki renk değerleri değişik şekillerde tutulabilir ben yaygın olan iksini belirteceğim
Gri Resim : Her piksel renk değeri tek kanalda 1 byte da tutulur 0 siyah en koyu -255 beyaz en parlak renk
RGB Renkli Resim : Her renk değeri Kırmızı - Red - Yeşil -Green- ve Mavi -Blue- olmak üzere 3 kanalda tutulur her kanal büyüklüğü 1 byte dır.
Konunun detayları için bakınız : Sayısal Resim , Renkler , Gri ve Renkli Resimler

OpenCv de bu işi nasıl yaparız ?
Biraz karmaşık görülebilecek fakat en hızlı yolu işaretçileri kullanmaktır. bu değerlere ulaşmak için IplImage yapısını kullanacağız. görüntü bir matrsidir dedik
sütün sayısı -x ekseni - yani eni width değerinde tutulur.
satır sayısı -y ekseni - yani yüksekliği height değerinde tutulur
IplImage in imageData işaretçisi piksel değerlerinin başlangıcıdır.

int height = grnt->height; // yükseklik
int width = grnt->width; // En
int step = grnt->widthStep; // En x Kanal
int channels = grnt->nChannels; // Kanal sayısı
uchar *data = (uchar *)grnt->imageData;
uğraşmak istediğimiz pikselin koordinatlarını (x y) kullanarak
data[y*step+x*channels+k]
yani (10,20) koordinatlarındaki piksel için
Gri resim için
data[20*step+10*channels+0]
RGB Renkli resim için
data[20*step+10*channels+0] // Mavi
data[20*step+10*channels+1] // Yeşil
data[20*step+10*channels+2] // Kırmızı
şeklinde okuyup yazabiliriz.

Aşağıda bir örnek program var Örnek Program da iki tane görüntü açıyoruz Ekranda gösterirken İlk görüntüden ikinci görüntüye geçiş yapıyoruz. İlk görüntü silikleşirken ikinci görünmeye başlıyor.
Ders3
indirin çalıştırın inceleyin anlamadığınız yer olursa - olmaz ya hani belki - çekinmeden sorabilirsiniz...


Örnekte ilk defa kullandığımız fonksiyonları kısaca anlatalım
IplImage* cvCreateImage( CvSize size, int depth, int channels );
İstenen özelliklerde Boş görüntü oluşturmak için kullanılır.

size : Oluşturulcak Görüntünün ebatları
CvSize ebatları tutan bir yapıdır
typedef struct CvSize
{
int width; /* width of the rectangle */
int height; /* height of the rectangle */
}
CvSize;
şeklinde tanımlanmış değerlere atama yapmak için
cvSize( int width, int height );
fonksiyonu kullanılır.

depth : Biz buna renk derinliği diyelim Oluşturulacak görüntünün piksel renk değerlerinin
her kanal için büyüklüğü tanımlanır. biz genellikle IPL_DEPTH_8U yani 8 bit - 1 byte - işaretsiz tamsayı kullanıyoruz. tabii değişik alternatiflerde var
IPL_DEPTH_8U - unsigned 8-bit integers
IPL_DEPTH_8S - signed 8-bit integers
IPL_DEPTH_16U - unsigned 16-bit integers
IPL_DEPTH_16S - signed 16-bit integers
IPL_DEPTH_32S - signed 32-bit integers
IPL_DEPTH_32F - single precision floating-point numbers
IPL_DEPTH_64F - double precision floating-point numbers
gibi kafanızı karıştırmayın kullandıkça öğrenirsizin

channels : her piksel için kullanılan kanal sayısı 1 gri sevyeli resimler için 3 RGB renkli resimler için.
void cvResize( const CvArr* src, CvArr* dst, int interpolation=CV_INTER_LINEAR );
Görüntünün ebatlarını değiştirmenize yarar

src : Ebatı değiştirilecek resim
dst : Yeni ebatları içeren resim
interpolation : Ebat değişikliği işleminde kullanılacak yöntem
  • CV_INTER_NN - nearest-neigbor interpolation,
  • CV_INTER_LINEAR - bilinear interpolation (used by default)
  • CV_INTER_AREA - resampling using pixel area relation. It is preferred method for image
  • decimation that gives moire-free results. In case of zooming it is similar to CV_INTER_NN method.
  • CV_INTER_CUBIC - bicubic interpolation.
void cvMoveWindow( const char* name, int x, int y );
Pencereyi ekranda istediğiniz yerde konumlandırmanıza yarar.
name : Konumlandırılacak pencerenin adı
x ve y : Pencerenin ekrandaki sol üst köşesinin konumu

Son olarak Opencv için bir chm dosyası oluşturdum
Opencv.chm
indirin. CodeBlocks içinde
Settings -> Environment -> Help Files kısmından yardım dosyası olarak tanımlayın
ulaşımınız kolay olsun.

Cumartesi, Ekim 06, 2007

Kıyamet Nezaman Kopar ?


MCH - Ooo bk hoş geldin sen buralara uğrarmıydın ?
BK - İş güç pek fırsat bulamıyoruz ! ... Hocam nasılsınız ?
- Allah a şükürler olsun...
...
- Ben bir şey sormak istyordum ?
- buyur bildiğimiz kadarıyla cevaplandırmaya çalışırız.
- Efendim Ozon tabakası delinmiş buzullar erimeye başlamış küresel ısınma ve kuraklık başlamış, Ekolojik dengeler bozuluyormuş
- Buyrulur ki
" İnsanların ellerinin işledikleri günahlar sebebiyle,karada ve denizde fesat meydana çıktı ki(Allah)yaptıklarının bir kısmını kendilerine tattırsın, olur ki, belki geri dönerler. "
- üstelik ben geçenlerde Bir haber okudum Yemen de bir yanardağ faliyete geçmiş...
- eee
- Vakti zamanında kıyamet alametleri ile ilgili bir yazı okumuştum. orda ki alametlerden biride "Yemenden çıkacak ateş" diye hatırlıyorum neler oluyor hocam Kıyamet kopuyorda habrimiz mi yok ?
- Hoca Nasrettine Sormuşlar Kıyamet Nezaman kopar diye ?
- Ne demiş peki
- Nasrettin hoca şöyle cevaplandırmış "Bizim hanım öldüğünde küçük ben öldüğümde büyük
kıyamet kopar "
- yani ?
- Kişinin sevdiğinin ölümü o kişi için küçük bir kıyamet koparır. Kişinin ölmesiyle o kişi için kıyamet kopmuştur artık.
- Eline bir kitap alır ve okumaya başlar -
Ey gafil Nefsim! Bil ki, galat-ı his nev'inden, gayet muvakkat dünyayı lâyemut ve daimî görüyorsun. Etrafına ve dünyaya baktığın zaman bir derece sabit ve müstemir gördüğünden, fâni nefsini de o nazarla sabit telâkki ettiğinden, yalnız kıyametin kopacağından dehşet alıyorsun. Güya kıyametin kopmasına kadar yaşayacaksın gibi, yalnız ondan korkuyorsun. Aklını başına al. Sen ve hususî dünyan, daimî zeval ve fenâ darbesine mâruzsunuz. Senin bu galat-ı hissin ve mağlâtan şu misale benzer ki: Bir adam, elinde olan aynasını bir hane veya bir şehre veya bir bahçeye karşı tutsa, misalî bir hane, bir şehir, bir bahçe, o aynada görünür. Ednâ bir hareket ve küçük bir tagayyür aynanın başına gelse, o misalî hane ve şehir ve bahçede hercümerc ve karışıklık düşer. Hariçteki hakikî hane, şehir ve bahçenin devam ve bekası sana fayda vermez. Çünkü, senin elindeki aynadaki hane ve sana ait şehir ve bahçe, yalnız aynanın verdiği mikyas ve mizanladır.

Senin hayatın ve ömrün aynadır. Senin dünyanın direği ve aynası ve merkezi, senin ömrün ve hayatındır. Her dakikada o hane ve şehir ve bahçenin ölmesi mümkün ve harap olması muhtemel olduğundan, her dakika senin başına yıkılacak ve senin kıyametin kopacak bir vaziyettedir. Madem öyledir, sen bu hayatına ve dünyana, çekemedikleri ve kaldıramadıkları yükleri yükletme.
- Anladım kendi kıyametimiz için hazırlanmalıyız Kainatın ki için yapacağımız bir şey yok mu ?
- İyi bakarsan görebilirsin
- mesela
- mesela Kuranı Kerimde
"Yeyin - için ama israf etmeyin.Çünkü Allah israf edenleri sevmez."
buyruluyor
mesela Efendimiz
“Her kim boş, kuru ve çorak bir araziyi ihya ederse bu amelinden dolayı Allah tarafından mükâfatlandırılır. Herhangi bir canlı ondan faydalandıkça orayı ihya edene sadaka yazılır.”
mesela
...
...
...

mesela

“Kıyamet kopmaya yakınken elinizde bir ağaç fidanı varsa ve onu dikmeye vakit bulabilirseniz onu dikin”
- Anladım hocam
- İnşallah ?
- peki bir sorum daha var Kıyamet ne zaman kopacak ?
- La yağlemül gaybe illallah
...

Cumartesi, Eylül 29, 2007

OpenCv'ye Giriş 2

İlk yazımızın sonunda bir örnek vermiştik şimdi örneği biraz açıklayalım
Görüntü yükleye bilmek için cvLoadImage fonksiyonunu kullanıyoruz kullanımı gayet basit
IplImage* cvLoadImage( const char* filename, int iscolor=1 )

filename : Görüntü dosyasının ismi
iscolor : 1 ise her piksel 3 bytelık renk değeri içerir RGB yalnız dikkat OpenCv de renk sırası RGB ( Kırmızı-Yeşil-Mavi ) değil BGR ( Mavi-Yeşil-Kırmızı ) dır.
0 ise her piksel 1 bytelık renk -gri ton - degeri içerir
-1 ise okunan görüntü dosyası nasılsa öyle okunur...

bu fonkisyon Görüntü dosyasını hafızaya istendiği gibi IplImage yapısında yükler ve işaretçisini size döndürür. Bu görüntü ile işlem yapmak için bu işaretçiyi kullanılır.

IplImage yapısı şu şekilde tanımlanmıştır

typedef struct _IplImage
{
int nSize;
/* sizeof(IplImage) */
int ID;
/* version (=0)*/
int nChannels;
/* Most of OpenCV functions support 1,2,3 or 4 channels */
int alphaChannel;
/* ignored by OpenCV */
int depth;
/* pixel depth in bits: IPL_DEPTH_8U, IPL_DEPTH_8S, IPL_DEPTH_16U,
IPL_DEPTH_16S, IPL_DEPTH_32S, IPL_DEPTH_32F and
IPL_DEPTH_64F are supported */
char colorModel[4];
/* ignored by OpenCV */
char channelSeq[4];
/* ditto */
int dataOrder;
/* 0 - interleaved color channels, 1 - separate color channels.
cvCreateImage can only create interleaved images */
int origin;
/* 0 - top-left origin,
1 - bottom-left origin (Windows bitmaps style) */
int align;
/* Alignment of image rows (4 or 8).
OpenCV ignores it and uses widthStep instead */
int width;
/* image width in pixels */
int height;
/* image height in pixels */
struct _IplROI *roi;
/* image ROI. when it is not NULL, this specifies image region to process */
struct _IplImage *maskROI;
/* must be NULL in OpenCV */
void *imageId;
/* ditto */
struct _IplTileInfo *tileInfo;
/* ditto */
int imageSize;
/* image data size in bytes
(=image->height*image->widthStep
in case of interleaved data)*/
char *imageData;
/* pointer to aligned image data */
int widthStep;
/* size of aligned image row in bytes */
int BorderMode[4];
/* border completion mode, ignored by OpenCV */
int BorderConst[4];
/* ditto */
char *imageDataOrigin;
/* pointer to a very origin of image data
(not necessarily aligned) -
it is needed for correct image deallocation */
}
IplImage;

şimdilik IplImage'ın her şeyi neymiş diye uğraşmayın kullandıkça öğrenirsiniz.
Görüntüleri saklamak için kullanılan pek çok dosya formatı var. Bunlardan Bu fonksiyonla kullanabilecekleriniz

* Windows bitmaps - BMP, DIB;
* JPEG files - JPEG, JPG, JPE;
* Portable Network Graphics - PNG;
* Portable image format - PBM, PGM, PPM;
* Sun rasters - SR, RAS;
* TIFF files - TIFF, TIF.

Görüntüyle işimiz bittiğinde Hafızadan ayırdığımız yerleri boşaltmamız lazım bu iş için cvReleaseImage fonksiyonunu kullanıyoruz kullanımı gayet basit
void cvReleaseImage( IplImage** image );

dikkat edilmesi gereken bir nokta var elimizde işaretçinin de işaretçisini kullanıyoruz yani örnekteki gibi
cvReleaseImage( &grnt );
Evet Artık Görüntüyü yükledik artık sıra geldi ekranda göstermeye. Bu işi iki adımda yapıyoruz.
önce cvNamedWindow fonsiyonuyla bir pencere açıyoruz ve cvShowImage fonksiyonuyla pencerede görüntüyü gösteriyoruz.

Kullanımlarına gelince
int cvNamedWindow( const char* name, int flags );
name : Pencereye vereceğimiz isim daha sonra bu isimle ulaşılacağından aynı isimli iki pencere olmaz
flags : 1 ise Görüntü gerçek boyutlarında gösterilir
0 ise Görüntü pencere boyutlarında gösterilir

void cvShowImage( const char* name, const CvArr* image );
name : Görüntünün gösterileceği pencerenin ismi
image : Görüntünün işaretçisi

Pencereyle işimiz bittiğinde kapatmak için cvDestroyWindow fonksiyonu kullanılır.
void cvDestroyWindow( const char* name );
name : Kaptılacak pencerenin ismi

Şimdi örnekteki son OpenCv komutuna gelelim cvWaitKey fonksiyonu bir tuşa basıncaya kadar
ve belirtilen bekleme süresi doluncaya kadar program beklemede kalır
int cvWaitKey( int delay=0 );
delay : mili saniye biriminden bekleme süresi

İkinci yazımızın sonuna geldik. Görüş ve istekleriniz olursa bize bildirin dikkate almaya çalışırız. Eksik ve hatalarımız varsa bildirin memnun oluruz.





Cuma, Eylül 28, 2007

OpenCv'ye Giriş 1

Öncelikle OpenCv yi indirip bilgisayarınıza kurun
Windows için bir kurum programıya indirebiliyorsunuz
OpenCv_1.0.exe

OpenCv kütüphanesi normal olarak C: de Program Files kısmına kuruyor kendini

CodeBlocks'u çalıştırın
Create New Project -> Console Applicationı seçin


Projenize bir isim verip devam edin dil seçiminde ben C++ seçiyorum C de kullanabilirsiniz


Evet Artık projemiz oluştu şimdi OpenCv kütüp hanesi için gerekli ayarlamaları yapalım.
Aslında bütün kullanacağınız kütüphaneler için bu yaraların yapılması lazım
Öncelikle Derleyiciye başlık -header - dsyalarını nerede bulacağını gösteriyoruz
Project->Build Options->Search directories -> Compiler
gerekli dizinler gösteriliyor


Ardından Bağlayıcıya -Linker - kütüphaneyi - dosyalarını nerede bulacağını gösteriyoruz
Project->Build Options->Search directories -> Linker
gerekli dizini gösteriyoruz



Project->Build Options->Linker Settings den OpenCv de çoğu işimizi göremize yetecek kütüphane dosyalarını ekliyoruz



Hepsi bu kadar Artık Aşağıdaki Kodu yazın ve derleyip çalıştırın


// OpenCV nin ana fonksiyonlarının tanımlandığı başlık dosyası
#include "cv.h"
// OpenCV nin Kullanıcı ara birimi ile ilgili fonksiyonlarının tanımlandığı başlık
// dosyası
#include "highgui.h"
#include

int main()
{
char Buf[512];
IplImage* grnt;
/* Desteklenen Görüntü formatları
* Windows bitmaps - BMP, DIB;
* JPEG files - JPEG, JPG, JPE;
* Portable Network Graphics - PNG;
* Portable image format - PBM, PGM, PPM;
* Sun rasters - SR, RAS;
* TIFF files - TIFF, TIF.
*/
puts("Goruntu Dosyasini secin :");
gets(Buf);
grnt = cvLoadImage(Buf,1);
if(grnt){
//Yeni Pencere Oluştur
cvNamedWindow("Görüntü", 0);
//Görüntüyü Pencerede Göster
cvShowImage("Görüntü", grnt);
//Bir Tuşa basılmasını Bekle
cvWaitKey(0);
cvDestroyWindow( "Görüntü" ); // Pencereyi Yok et
cvReleaseImage( &grnt ); // Görüntüyü yüklediğimiz alanı serbest bırak
return 0;
}
else{
puts("Goruntu Dosyasini acamiyorum !!! :( ");
cvWaitKey(0);
return -1;
}
}







Delimiyim Ne !

- Bilmem kaçına gelmiş evli barklı işli güçlü hatta işi başından aşkını, oturmuş programlamayla üstelik üzerine bir de yapay zeka ile ilgileniyor. İlgilenmenin yanında oturup örnek programlar hazırlıyor, yazılar yazıyor... Delimidir ne !

- Sen Ne anlarsın bu işlerden hem sana ne bu konularda bilgili pek çok insan var. Eğer lüzüm varsa onlar yazar sana da ne oluyor... Delimisin ne ?

- Zaten çok sınırlı olan boş vakitlerimde böyle şeylerle uğraşmam doğru mu ? Acaba Kıymettar sermaye-i ömrümü bad-ı heva boşamı sarfediyorum ?
Delimiyim Ne ?

Gündüzü beklenen gecelerde
Bir hilal olduk
Doğunca gün
Batalım diye*

Gündüzü beklenen gecelerdeyiz. herkes gibi, herkes kadar gündüzü bekliyoruz.
Hilallerin kimi küskün saklanıyor vermiyor aydınlığını kimi bencil kendine saklıyor...
Hilal olabilmek ne haddimize...
bir yıldız böceğinin ne kadarcık aydınlığı olabilir işte o kadar...
ama kimbilir belkide bu, kimi Hilallerin küskünlüğünü, kimilerinin bencilliğini kaldırır...

Sermayeyi ömrün boşa geçmesi meselesine gelirsek
Efendimiz
“Hayrun Nas Men Yenfeûn Nas” (İnsanların Hayırlısı, İnsanlara Faydalı Olandır)
demiyor mu ?
bu fayda herkesin istidadına göre değil mi ? hem değil mi ki Zindan-ı Atalet** -tembllik zindanı- için deyiz her çalışma bu zindanı biraz da olsa açmıyor mu ?


* Bir şiir olarak aklımda kalmış fakat kimin bilemiyorum
** Münazarattan " Zindan-ı atâlete düştüğümüzün sebebi nedir?" sorusunun cevabına bakınız

Cuma, Eylül 21, 2007

Ramazan 3

Ramazan oruç ayı, Kur'an ayı.
Gündüzleri sıyâm, geceleri kıyâm.
Oruç, açlık için değil, yakınlaşmak için.
Namaz, yorulmak için değil, yakınlaşmak için.
Kur'an, okumuş olmak için değil, yakınlaşmak için.
Sadaka, harcamış olmak için değil, yakınlaşmak için.

Ramazan'ın önce Kur'an, sonra oruç ayı olduğunu bildiren,
bu mubârek ayı aydınlatan muhteşem ayete bakalım:

2:185 şehru ramadân
Ramazan ayı
ellezî unzile fîhil-qur°ân
ki onda Kur'an indirildi
huden linnâsi vebeyyinâtin
insanlara rehber ve apaçık belgeler olarak
minel-hudâ vel-furqân
yol gösterici ve ayırd edici
femen şehide minkumuş-şehra felyesumh
sizden bu aya erişen, onda oruç tutsun
vemen kâne marîdan ev 'alâ seferin
hasta veya yolculukta olan
fe'iddetun min eyyâmin uhar
(tutamadığı günlerin) sayısınca başka günlerde
yurîdullâhu bikumul-yusra
Allah sizin için kolaylık ister
velâ yurîdu bikumul-'usr
sizin için zorluk istemez
velitukmilul-'iddete velitukebbirullâhe
sayıyı tamamlamanızı ve Allah'ı yüceltmenizi ister
'alâ mâ hedâkum vele'allekum teşkurûn
size yol gösterdiğine karşılık; ola ki şükredersiniz.


Ramazan 1 : Ramazan güzeldir
Ramazan 2 : Ramazan-ı Şerife dairdir

Pazartesi, Eylül 10, 2007

cvBlobsLib , Etiketleme ve Fl_OpenCv 0.5



cvBlobsLib yine OpenCv ile yazılmış Etiketleme için kullanabileceğiniz bir kütüphane uzun uzadıya açıklama yazacak durumda değilim. Detaylı bilgi için linklere bakın olmadı sorunuzu
iletin bildiğimiz kadarıyla cevap vermeye çalışırız...

cvBlobsLib kütüphanesinin CodeBlocks için proje dosyasını oluşturup derledim kullanıma hazır
Buyrun cvBlobsLib.zip

cvBlobsLib kullanımını gösteren örnek program Blobs.zip
içinde Fl_OpenCv'nin 0.5 versiyonu var artık video dosyalarınızı da FLTK pencerelerinde gösterebileceksiniz. Örneğini daha sonra ekleyeceğim

Salı, Eylül 04, 2007

Mutluluk yarışı !

Gecenin üçüdür en uygun zaman, bahse girerim
düşünün: sabah çok yakın
oysa ışıltı yok ortalıkta
nerdeyse gece bitmiş
ama sürmekte karanlık

henüz uyanmış bazıları
henüz uyumamış bazıları
bazıları uyanmış uykusuna doymadan
bazıları uykusuna varmadan doymuş
...

En mutlu insanlar belki de
baca temizleyicileridir
öyle dar, öyle karanlık bir yerdedirler ki
yüreklerini geniş, dayanıklı
aydınlık tutmak zorundadırlar
buna yükümlü sayarlar kendilerini.
Baca temizleyicileri başkalarını sevmekle kalmaz
başkalarınca sevilirler aynı zamanda
çünkü herkesi düşünmeyecek kadar mutlu
herkes tarafından düşünülmeyecek kadar mutludurlar.
İsmet Özel- AKLA KARŞI TEZLER

Dökümcülerde baca temizleyicilerinden geri kalmazlar...

Pazartesi, Ağustos 27, 2007

Dua, dua, eller karıncalanmış...


Dua, dua, eller karıncalanmış;
Yıldızlar avuçta, gök parçalanmış.
Gözyaşı bir tarla, hep yoncalanmış...
Bir soluk, bir tütsü, bir uçan buğu;
İplik ki, incecik, örer boşluğu


“Rabbena zalemna enfusena Ve in lem tağfirlena ve terhemna lenekunenne minel hasirin.”
“Ey Rabbimiz! Biz nefsimize zulmettik. Eğer bizi bağışlamaz ve merhamet etmezsen, elbette büyük ziyana uğrayanlardan olacağız.”(Araf-23)

“Rabbic’alni mukimessalati ve min zürriyeti. Rabbena ve tekabbel dua. Rabbenağfirli veli valideyye velil muminine yevme yekumul hisab”
Rabbim beni namazı dosdoğru, mükemmel şekilde kılan bir insan yap. Zürriyetimden de böyle insanlar yarat. Ey Rabbimiz! Dualarımızı kabul et. Rabbimiz, Kıyametin kopacağı günde, beni ana ve babamı ve müminleri bağışla.-İbrahim–40–41

"Rabbişrahli sadri ve yessirli emri. Vahlul ukdeten min lisani yefkahu kavli”
Ey rabbim. Göğsümü aç, genişlet. İşimi kolaylaştır. Dilimde bulunan düğümü çöz de, anlasınlar beni(Taha:25-28)


Rabbi inni zalemtü nefsi fağfirli”
Ey Rabbim, ben nefsime zulmettim. Beni bağışla.”(Kasas-16)



"Rabbi hebli min ledünke zurriyetten tayyibeten.İnneke semiüddua”
Rabbim bana kendi katından tertemiz ve mübarek bir zürriyet ihsan et. Şüphe yok ki, sen duaları işitensin.(Âl-i İmran-38)

"Rabbena efriğ aleyna sabren ve sebbit akdemena vensurna alel kavmil kâfirin."
Ey Rabbimiz üzerimize sabır yağdır. Ayaklarımızı sabit kıl. Kafirlerden meydana gelen topluluğa karşı bize yardım et.(Bakara-250)

"Rabbena la tuziğ kulubena bade iz hedeytena ve heblena min ledünke rahmeh.İnneke entel vehhab.”
Rabbimiz hidayete erdikten sonra kalplerimizi batıla meylettirme. Şüphesiz sen ziyadesiyle bağışlayansın.”(Âl-i İmran–8,9)

"Ey Rabbimiz, bize dünyâda da iyilik, güzellik ver, âhirette de iyilik, güzellik ver. Bizi ateş azâbından koru,"
Ey Rabbim! Gizlide ve açıkda senden haşyetini istiyorum. Rızâ hâlinde de, gadab hâlinde de ihlâs sözünden ayırmamanı istiyorum, fakirlikte de zenginlikte de i'tidâlden ayırmamanı istiyorum. Senden tükenmez bir ni'met, kesilmez bir göz ferahlığı (yüzde açıkça görülen neş'e ve huzûr) istiyorum. Senden beni kazâna râzı kılmanı, ölümden sonra yaşamanın serinliğini istiyorum. Senden yüzüne bakmanın lezzetini; sana kavuşmanın şevkini istiyorum. Bütün bunları zarar vericinin zararından, sapdırıcı bir fitneden uzak olarak vermeni istiyorum. Ey Rabbim! Bizi îmân zîynetiyle süsle, bizi doğru yolda olan hidâyet rehberleri kıl.
"Ey kalbleri çekip çeviren Rabbim! Kalbimi dînin üzere sâbit kıl."
Ey kudret ve Hâkimiyet ve Mâlikiyeti bütün zâhirî seyyid ve meliklerin hadsiz derecede fevkinde bulunan, şeref-i intisâbı hiçbir seyyidin intisâbına benzemeyen ve Ona mensup olana kudretiyle herşeyi musahhar eden Hâkim-i Ezelî,
Ey lisân-ı hal ve kal ile edilen bütün dualara nihayetsiz rahmet ve kudretiyle ve nihayetsiz hikmetinin muktezâsınca icâbet eden Mücîb-i Rahîm,
Ey bütün hayır ve hasenât Onun elinde bulunan ve Onun tevfikiyle vücuda gelen, her hayrâtı yazan, her hasenâtı kaydeden, her a''mâl-i sâlihayı muhâfaza eden ve her hizmetin ücretini ve her hasenâtın mükâfâtını veren Hafîz-i Alîm,

Ey kemâlât-ı kibriyâsı mümkün ve mutasavver bütün mertebelerin üzerinde bulunan ve mahlûkatı mektûbat-ı Samedâniye ve memurîn-i İlâhiye mertebelerine çıkaran ve îman ve itaatle Ona intisab edenleri a''lâ-yı illiyîne yükseltip fazl ve keremiyle ulvî derecelere mazhar eden Fâtır-ı Hakîm,


Ey maddî ve mânevî nimetlere, rızıklara, ömürlere, hayır ve hasenelere bereket ihsân eden, nihayetsiz rahmet ve gınâ ve cûd ve sehâsıyla ziyadelikler veren Muhsin-i Kerîm,

Ey âsî kullarının hatalarını mağfiret etmek şanından olan Gafûr-u Rahîm,

Ey havl ve kuvvetiyle bütün belaları def eden Mevlâ-yı Azîm,

Ey büyük küçük bütün mevcudatın gizli ve açık bütün seslerini birden işiten ve hiçbir sadâ Ondan gizli kalmayan Semî-i Alîm,

Ey bütün mahlukatın sual ve dua lisanıyla ettikleri fakr ve ihtiyâcâtına dâimî cevap veren ve yerine getiren Kerîm-i Pürnevâl,

Ey en gizli mahlukatının en gizli arzularını ve en hafî niyazlarını bilen, işiten ve icâbet eden Alîm-i Zülcemal,

Sen aczden ve şerikten münezzeh ve mukaddessin. Senden başka ilâh yok ki bize imdad etsin. El-aman, el-aman! Bizi azap ateşinden ve Cehennemden halâs et.

Berat Kandilinizin Mübarek olmasını diler dualarınızı bekleriz

Salı, Ağustos 21, 2007

Fl_OpenCV 0.3 çıktı !



Fl_OpenCv : OpenCv görüntülerini FLTK penceresinde gösteren bir bileşen, eksiklikleri olmasına rağmen kullanılabilir durumda. Artık 8 bit gri görüntüleri de gösterebiliyorsunuz. Kullanımı için örnek programa bakabilirsiniz

Örnek program OpenCv nin Threshold fonksiyonunu kullanıyoruz
void cvThreshold( const CvArr* src, CvArr* dst, double threshold,
double max_value, int threshold_type );
Bu fonksiyonun bütün parametreleri ile oynayıp sonuçta ortaya çıkan yeni görüntüyü kaydede biliyorsunuz. Threshold tipi ve diğer ayrıntılar için OpenCv dökümantasyonuna bakınız
indirmek için buyrun : Threshold

Cumartesi, Ağustos 11, 2007

Ben Gittim, Yıkıldı Mı Bu Blog ! ?

Ben Gittim, Yıkıldı Mı Bu Şehir?

son göç bu gidiyorum
mektuplarınız karşılıksız kalacak artık...
bu şehre sığmıyor düşlerim
alışınca suskunluğa
buluyor beni de yüreği kavruk şair duruluğu
kendime yaklaştıkça tek kalıyorum
tüm ziyaretçilerim kapıdan dönecek artık...


uzun, ince bir yol var
bende başlayıp bende biten
gencecik bir bahar özlemiyle
kuşlara özeniyorum...
bu ayrılışlar bekleme yorgunluğumdur benim
şimdi mavi bir ikindide unutmuşken
bu yaşanmışlığı
bilmesem ne olur öykülerin bitişini
kuşlara özeniyorum
tüneğimi terkediyorum...

akşam olur gibi çekiliyorum
anısı sıcak sokaklardan...
tükettim ilkyazdan aşırdığım sevinçleri de
yürüdükçe eskiyen bir ömrüm
bakıldıkça kırışan bir yüzüm var
yıpranmışlığımı örten ne kaldı ki burada?..

evinden ayrılan bir gelinin hüznü gibi
yine de dönüp arkanı gitmek
ve sebepsiz suçluluk duygusu yok mu?
bu biletin elimde titremesi
son bakışın ezikliği...
oysa geldiğim gün gibi bu şehir
hala hiçbir albümde hatıra fotoğrafım yok
su gibi gidiyordum
su gibi dönmeyecektim...

Pazartesi, Ağustos 06, 2007

Yüz Bulma - Yüz Tanıma


Bir hafta sonu - daha doğrusu pazar -projesiyle yine karşınızdayız :)
Yüz Tanıma bir hafta sonuna sığamayacağı için Opencv nin imkanlarıyla Yüz Bulma pogramı yapacağız. Resim içerisindeki Yüz tanıma yada bir Nesne tanıma için ilk adım o nesnenin yerini tespit etmektir. işin teknik detayı için buyrunuz size bir döküman OpenCV's Rapid Object Detection

İşin pratik kısmına bahsetmek gerekirse Daha önceden hazırlanmış bir xml dosyasında tutulan nesne dedektörleri kullanılarak nesnelerin konumları resim üzerinde tespit ediliyor. Yazdığımız program işte bu OpenCv ile birlikte verilen bu nesne dedektörlerini kullanıyor. Pek tabii ki GUI olarak FLTK ve IDE olarak C::B kullanıldı

Üstteki resimde gözleri Lena'ya aşina olanları üzmüş olabilir. Fakat idare edin artık bu da Lazkopatlar :)

Neyse gevezeliği bırakıp programın linkini verelim FaceFind

Peki yüz tanıma işini nasıl yapacağız diyorsanız buyrun bu konuda güzel bir site hazırlanmış.
Face Recognation Homepage

  • PCA Principal Component Analysis
  • ICA Independent Component Analysis
  • LDA Linear Discriminant Analysis
  • EP eigenspace-based adaptive approach
  • EBGM Elastic Bunch Graph Matching
  • Kernel Methods|
  • Trace Transform
  • AAM Active Appearance Model
  • 3-D Morphable Model
  • 3-D Face Recognition
  • Bayesian Framework
  • SVM Support Vector Machine
  • HMM Hidden Markov Models
  • Boosting & Ensemble
gibi yüz tanıma algoritmaları hakkında pek çok dökümana ulaşabilirsiniz

Pazartesi, Temmuz 30, 2007

KGDD lerde Nodul sayısı tespiti


Eveet yeni bir Yapay zeka projesiyle karşınızdayız...
KGDD de ne demek derseniz kısa bir malzeme dersi yapalım :
KGDD Kürsel Grafitli Dökme Demirin kısaltmasıdır. Ductile cast iron yada nodular cast iron diye bilinir yabancı alemlerde. Her Malzeme için olduğu gibi KGDD içinde mikro yapı çok önemlidir. Mikro yapı tespiti için metallografik numunesi hazırlanır ve mikroskop altında incelenir. KGDD nin tespit edilmesi gereken mikro yapı parametrelerinden birde Nodül sayısıdır. Mikroskopla elde edilen görüntüyü standart görüntülerle karşılaştırarak Nodül sayısı tespit edilir. Yada el alemin yaptığı paket programlar kullanılır. Her ne ise işin detayını malzeme derslerine bırakıp basit bir nodül sayısı tespit programı yazıyoruz.

Görüntü işleme için OpenCv, kullanıcı arabirimi için FLTK ve YSA için fann kütüphaneleri kullanıldı. Ne elimde detaylı örnek resimler vardı nede benim detaylı bir proje için vaktim vardı. Malzeme ve Metalografi ile uğraşanaların programa bu nazarla bakmalarını rica ederiz. Standart resimlerin değişik kısımlarından aldığım 480x480 lik resimleri kullandım. YSA nın eğitimi için kullandığım resimler Trainin dizininde Test için kullanabileceğiniz resimler Test dizininde. Resim dosyalarının isimleri aynı zamanda Nodül sayısını da içeriyor. Yapılan işlemlerin safhalarını Bakan Bilgisayar - Gören Bilgisayar yazımızda görebilirsiniz.
Program kod olarak platform bağımsız. fakat linux versiyonunu bu aralar yayınlamam mümkün değil henüz OpenCv'yi Linux üzerine kuramadım. Programı çalıştırmak için OpenCv yi kuramanız lazım yada en azından Dll lerini bulup programın yanına bulundurmanız lazım
İndirmek için burdan buyrunuz Nodul

Pek zannetmiyorum ama eğer soracaklarınız olursa biz buradayız biliğimiz kadarıyla yardımcı olmaya çalışırız...



Perşembe, Temmuz 19, 2007

İlim Çindede olsa IV

Epeydir bu serimize devam etmiyorduk
Buyrun Yapay Zeka ile ilgili tonla kitap neler yok ki

  • Algorithmic Learning Theory
  • An Introduction to Genetic Algorithms
  • Applications of Artificial Intelligence in Finance and Economics
  • Artificial Intelligence and Expert Systems for Engineers
  • Artificial Intelligence Applications and Innovations
  • Computer-Aided Intelligent Recognition Techniques and Applications
  • Developments in Speech Synthesis
  • Fundamentals of Speech Recognition
  • Fuzzy Models and Algorithms for Pattern Recognition and Image Processing
  • Genetic Programming
  • Introduction to Pattern Recognition : Statistical, Structural, Neural and Fuzzy Logic Approaches
  • Multiagent Systems: A Modern Approach to Distributed Artificial Intelligence

özellikle gerçek uygulamlardan bahseden
Computer-Aided Intelligent Recognition Techniques and Applications
kitabını tavsiye ederim inceleyin.

Cumartesi, Temmuz 14, 2007

Üç ayların gölgesi üstümüze düştü

Yavrusunu arayan bir anne, Efendimiz Aleyhisselâm'ın gözüne ilişir. Kadın, bulduğu her çocuğu bağrına basar, yavrusu olmadığını anlayınca, bir diğerine koşar. Nihayet kendi çocuğunu bulunca kalbine sokarcasına davranışlarda bulunur. Efendimiz Aleyhisselâm çevresindekilere:
"Şu kadını görüyor musunuz, ne dersiniz o çocuğunu ateşe atar mı?" buyurur.
"Hayır, yâ Resûlâllah." derler.
"Allah o kadından daha çok merhametlidir."
buyurur.
Merhametlilerin en merhametlisinin rahmet vesilerinden üç aylar giriyor. Hatırlatıyor, Efendimizin dilinden dua ediyor
Allâhümme bârik lenâ fî Recebe ve Şaban ve belliğnâ Ramazan
ve dualarınız bekliyoruz..

Salı, Temmuz 10, 2007

Kırılamayacak Program olurmu ? 3

Serinin 3. ve de sonuncusu olmasını umduğum bu yazı gecikti kusura bakmayın. Aslında yazıyı taslak olarak hazırlamıştım. Fakat bir türlü fırsat bulup düzenleyemedim. Serimizin başlangıç sorusuna dönelim.
Kırılmıyacak program olur mu?
Programı kaynak koduyla dağıttığınızı düşünün Nasıl ki o dili bilen biri gereken yerleri değiştirip Ne şekilde olursa olsun korumayı kolayca kaldırabilir. İşte aynı şekilde Assembly bilen biri için programınızın koduna ulaşabiliyorsa korumayı da kaldırabilir. Yani
Teorik olarak Program çalışıyorsa kırılabilir.

Peki Kırılmasını nasıl zorlaştırabiliriz ?
  • Bir tanımla başlayalım, Programın kırılması ; "Koddaki kontrol kısımlarının devre dışı bırakılması -crack- yada kontrol kıstaslarının programın içinde tespit edilip haricen kullanılmasıyla-keygen- kontrol kısmının atlatılması" demektir. Tanımdan da anlayabileceğiniz gibi korumanın özü koda ulaşılmasını engellemektir.
  • Pek tabi ki bütün kodu didik didik incelemek çok zahmetli iştir o yüzden kodun kritik kısımlarına ulaşılmasını zorlaştırmak yeterli sayılabilir
  • Koda ulaşılmasını engellemenin en kolay ve ucuz yolu packer dediğimiz prograları kullanmaktan geçiyor. Bu programlar sizin programınızı sıkıştırıp bir kendi kendine hafızada açılıp hafızada çalışan bir program haline getirir. Unpacker denen programlarla programlarınızı eski haline çevrilebilsede, Programın kendisini kontrol ettirterek ve packerların en son versiyonlarının kullanımıyla Epey bir insanı programınızla uğraşmasını englleyebilirsiniz.
  • Program kendisini nasıl kontrol edebilir ? Programda değişiklik yapılıp yapılmadığını checksum'la yada CRC benzeri metodla kontrol edin. Eğer değişiklik yapılmışsa uyarı vermeyin programı saçma bir hatayla kırılmasını sağlayın.
  • Programıcı olarak kullanıcıyı yönlendirmek için mesaj vermek zorunda kalırız . mesela "Hatalı Kayıt No !.." gibi Bu da kodun kritik yerlerine ulaşılmasını çoook kolaylaştırır. Peki ne yapıla bilir mesela Hata mesajı vermeyip kullanıcı ister doğru ister yanlış kayıt no girsin programı kapatın. Program yeniden çalıştırıldığında kontrol edip ona göre deneme ya da kayıtlı olarak çalıştırın, Kayıt durumunu da mesela Programın versiyon bilgisinin verildiği hakkında -About- kısmında yazabilirsiniz.
  • Hiç mi mesaj veremeyeceğiz tabii ki hayır ; mesaj verecekseniz mesaj metnini şifreli olarak programın içinde tutun kullanacağınız zaman şifresini açıp kullanın.
  • Sahte kontrol kısımları hazırlayıp, şaşırtmacada yapabilirsiniz
  • Kritik kısımlarda kullandığınız dialog pencerelerini tamamen çalışma anında oluşturmanında büyük faydası olur.
  • Kontrol kısmının da bir timer'ın içinde yapılması debug edilmesini güçleştirir.
  • Birden fazla yerde kontrol edin Kontrol işlemini string karşılaştırma olarak kesinlikle yapmayın.
  • Reverse Engineering için epey gelişmiş programlar var. Bu tür progralarla kodunuza müdaheleyi engellemek için de epey karmaşık metod var. çok aşırıya kaçmamak kaydıyla şu yazıdan feyz alabilirsiniz.
  • Bu yazılardan da faydalanabilirsiniz 1, 2, 3, 4
  • Benim programım kıymetli kardeşim diyorsanız. Programınızın değerine ve de kesenize göre çeşitli ticari çözümler var; bakınız çeşitli Koruyucular -Protector-
  • Daha da olmadı Biraz tuzlu olmakla beraber Kırma işini donanım olarak korumaya yardım eden Dongle seçeneğinizde var

Cumartesi, Temmuz 07, 2007

Kırılamayacak Program olurmu ? 2

Bir önceki yazıda verdiğimiz Programı indirin ve inceleyin. Temel olarak kayıt işlemi yapması için gereken her şeye basit de olsa sahip.

Daha önce yazdığımız Anti-Crack yazısını da gözden geçirin

Derlenmiş program makina kodu olarak dosyada İşletim sisteminin belirlediği formatta tutulurlar.

Makina kodunun bire bir eşleniği Assembly programlama dilidir.

Biraz Assembly bilen biri bazı programları kullanarak programınıza müdahele edebilir

Debugger denen programlar Programınızı assembly olarak görmenize ve çalıştırabilmenizi sağlar

Önce Alet edavat toplayalım Bu basit program için sadece OllyDbg yeterli. Tabii pek çok alternatif program var. Mesela IDA için şu resme bir bakınız. Assembly koddan akış diyagramı bile çıkarıyor...

Uzun boylu anlatacak yada anlata bilecek değilim OllyDbg ile programımızı açıyoruz

Programın içindeki bütün stringleri tespit ettiriyoruz

Kayıtlı kullanıcı oldunuz mesajından pogramın bu kısmına zıplıyoruz

Bu mesajı veren koda zıplanan yeri buluyoruz o kısım işte bizim if ile kayıt numarasını kontrol ettiğimiz yer. o kısma bir breakpoint koyuyoruz
programı çalıştırıyoruz Kayıt numarasına rastgele birşeyler yazıp kayıt ol diyoruz. Breakpoint ile program duruyor. aman Allahım o da ne Hesaplanan kayıt no aşikare görülüyor.

Breakpoint koyduğumuz if kısmı var ya orada koşulu tersine çeviriyoruz
yani JE -> JNE çeviriyoruz , Programda sadece 1 bytelık değeri değiştiriyoruz 74 -> 75 oluyur. Program artık rastgele girdiğimiz kayıt numarasını kabul ediyor.

Sonra daha da ileriye gidiyoruz Programın "Hatalı Kayıt No" mesajının adresi yerine Gerçek Kayıt No adresini veriyoruz

Programa artık girdiğiniz yanlış Kayıt No için hata mesajı yerine Gerçek Kayıt No'yu gösteriyor

Programı niçin Nasrettin Hocanın türbesine benzettiğimi ve Artık Anahtarı nerede kaybettiğimizi anladınız sanırım. Artık Anti-Crack yazısını tekrar okuyun. !
Eskiden yazdığım Bir Parçacık kırılması zorlaştırılmış şu programı da inceleyin belki size ilham verir. Keygenme
Bir parçacık deyince yabana atmayın Adamlar Koca muhasebe paketini öylesine ortaya bırakıyorlar bu kadarcık bile uğraşmıyorlar...

Kırılamayacak Program olurmu ? 1



Hoca Nasrettin evinin önünde bir şeyler arıyormuş Komşusu görmüş ve sormuş
- Hayırdır hoca ne arıyorsun ?
- Abahtarımı kaybettim de
Komşu da bir süreliğine hocayla birlikte aramaya başlamış. Bir süre sonra hocaya sormuş
- Hoca buralarda kaybettiğine eminmisin ?
- Yooo ben anahtarı samanlıkta düşürdüm.
- İyide hoca niye burada arıyorsun
- Burası daha aydınlıkta ! ondan
-...
Büyüüüüüüüük emekler sarfederek programımınız yazdık satmak istiyoruz, Müşteride hazır fakat programımızı nasıl muhafaza edeceğiz. Sadece müşterimizin bu programı kullandığından nasıl emin olacağız?

Başlıyoruz diğer programları incelemeye; Programlarda genel olarak yapılan şey Kullanıcıdan bir kayıt numarası isteniyor numara doğru ise program kayıtlı hale geliyor kısıtlamaları kalkıyor, falan filan,...

Büyük bir şevkle başlıyoruz işe bilgisayarın sabit bir bilgisini alıyoruz. Sabit bilgi üzerinde bir takım işlemler yapıp Güvenlik kodu diye bir numara türetiyoruz. Müşterimiz kaydolmak istediğinde kendisinde kullanıcı adı ve Güvenlik kodunu istiyoruz. Güvenlik kodundan müşteri bilgisayarının sabit bilgisini çıkarıyoruz. Kullanıcı adıyla harmanlayıp Kayıt No oluşturuyoruz.
Buyrun Basit Kayıt Programımız hazır : Protect
Artık Programımız satılmaya hazır !... mı Acaba ?

Programlama forumlarında belli aralıklarla
... ile kopyalama koruması nasıl olabilir?
.. Lisans İşlemleri nasıl olacak
... Kırılamayacak program Nasıl olur ?

ve benzeri konular açılır ve başlanır havanda su dövülmeye Hard diskin Fabrika seri numarasını okuyalım, yok bilgisyarın mac adresini okuyalım, gibi öneriler gelir. Başa dönersek Hoca Nasrettin bize diyor ki : Anahtarı nerede kaybettiyseniz orada aramak gerektiğini biliyorsanız, Programı korumanın, Nereden kırıldığını bilmekle başlıyacağını bilmeniz lazım. Gerçekten Programcıların çoğu için bu konu karanlıktır. O yüzden çözümü başka yerlerde ararlar. Farzı muhal programınız kullanıcının cebindeki kimlik nosu okuyabilsede kullanıcının
retinasından kimliğinide alsa yaptığınız şey aydınlık diye samanlıkta kaybettiğiniz anahtarı kapıda aramaktır.
Bilin ki Bu haliyle Programınız Hoca Nasrettin'in türbesi gibi kapısında kilidi ! vardır ve fakat duvarları yoktur...




Perşembe, Temmuz 05, 2007

FGA 1.3.3 çıktı

Bizim Fatih Presta FGA – Fast Genetic Algorithm'nın yeni versiyonunu çıkarmış
Epey bir yenilik ve bir kılavuz eklenmiş.
FGA da neymiş diyorsanız bakınız 1 2

Pazartesi, Temmuz 02, 2007

YSA ile Tic-Tac-Toe

Orjinal ismiyle Tic-Tac-Toe yada benim kullandığım adıyla OXO bilmeyeniniz yoktur herhalde
Bu oyunu oynayacak bir YSA program yazmaya çalıştık.

Rastgele Eğitimli
1) YSA Dizaynı : YSA mız girdi olarak Tahtanın durumunu alıp Çıktı olarakta Hamlesini yaptığı Tahtanın durumunu veriyor. Yani (3x3) 9 giriş ve 9 çıkış değeri var Bilgisayrın hamleleri 1 İnsanın hamleleri -1 olarak kaydediliyor. Boş hücreler 0 değeri içeriyor.

2) Eğitim verilerini hazırlamak : Bu iş için bir programcık yazdım . Bilgisayar ve insan adına sırayla boş hücrelere rastgele hamle yapılıyor. Bilgisayarın kazandığı oyundaki hamleler kaydediliyor. Bu kayıtlardanda eğitim verilerimizi oluşturuyoruz. - oxo.dat -

3) Eğitim : Allaha şükür FannTool'u yazmışım. Eğitim işini çeşitli seçeneklerle oradan yapıp oxo.net diye kaydediyoruz.

4) GUI : OXO oynamak için bir program yazıyoruz. pek tabii ki CodeBlocks IDE si kullanılarak ve FLTK GUI kütüphanesiyle.

Sonucu görmek için bir deneme yapıyoruz. Pek de memnun olamıyoruz. Acaba neden diye şöyle bir düşünüyoruz. ve çünkü eğitim için kullandığımız veriler zeka içermiyor ki programımız zeki davransın. Zekice oynan bir oyunların verileri olmalı ki YSA mız Zekice oynaya bilsin. Böyle bir veri oluşturmak epey bir vakit alacaktı bende vazgeçtim

Böl Öğren
1) Sonra insanın oyunu nasıl oynadığını düşündüm. Insan önce kuralları öğreniyor Nasıl yeneceğini ve nasıl yenilmeyeceğini öğrenip ona göre hamle yapıyor.
2) OXO oyununda nasıl yenersiniz ? Satırlar yada Sutunlar yada Çapraz kutularda 2 tane işaretiniz varsa boş kutuyu doldurup 3 sayısına ulaşarak yenersiniz
3) OXO oyununda nasıl yenilmezsiniz ? Satırlar yada Sutunlar yada Çapraz kutularda 2 tane rakip işareti varsa boş kutuyu doldurup 3 sayısına ulaşmasını engellersiniz
4) Olay Üçlü hücreler üzerinde olduğunu öğrendik. iki adet YSA ya ihtiyacımız var. ilki Hangi 3 lü gurup daha önemli olduğunu tespit ediyor -value - İkinci YSA nasıl Hamle yapacağına karar veriyor -hamle-

5) Hücreleri önem sırasının tespiti için 3 giriş 1 çıkış kullanır. çıkış değeri olarak bir değer biçiyoruz mesela
1 1 0 ...... 1
-1-10 ...... 0.8

gibi çok fazla alternatif olmadığından elle hazırlıyoruz eğitim versini -value.dat- yine FannTool kullanılarak eğitip kaydediyoruz YSA yı -value.net-

6) En önemli olan Hücre gurubunu aldık bu gurup üzerine hamle yapmak için 3 giriş ve hamla yapılmış haliyle 3 çıkış mesela
1 1 0 -> 1 1 1
-1-10 -> -1-11

gibi çok fazla alternatif olmadığından yine elle hazırlıyoruz eğitim versini -hamle.dat- yine FannTool kullanılarak eğitip kaydediyoruz YSA yı -hamle.net-

7) Daha önce yazdığımız arabirime ekleyiveriyoruz. İlk metoda göre oldukça başarılı olduğunu görüyoruz.

Sonuç :
  • Sonuca bakıp İlk metoda haksızlık etemeyin suç eğitim verilerinde yoksa ikinci metodun hamle kısmındada aynı metod kullanılıyor Temporal Difference Learning bakınız tavlay oynayan versiyonu TD-Gammon
  • Sadece Verileri değiştirip tekrar eğitip aynı isimle kaydederek de programı geliştire bilirsiniz
  • Indirmek için buradan buyurun : Download oxo_game
  • Her türlü fikir, öneri ve hata bildirimlerinizi memnuniyetle bekleriz

Perşembe, Haziran 21, 2007

Fann GSoC da

Fann kütüphanesi Google Summer of Code ile zenginleşmeye başlıyor


VFANN (Vector Fast Artificial Neural Netwoks)


The goal of this project is to develop a vector version of FANN which can take advantage of modern CPUs like those implementing SSE or similar technologies.
Another goal of the project will be to add utility apps/functions/scripts in order to make using FANN easier. A fann_trainer script or application will be in good shape at the end of the project and will be capable of training different kind of network with appropriate algorithms.
If projects for a FANN GUI are accepted I'll collaborate with the other student in order to make the utilities well integrated.

Vektörlerle YSA oluşturulacak sebebi ise modern işlemcilere daha uygun olması

Self-Organizing Maps and Growing Neural Gas (GSoC)

Competitive artificial neural networks have increasingly become popular for visualization and clustering of the large amounts of data existing in many scientific fields. They are also used for pattern recognition, image analysis, and many other applications. This project will add Self-Organizing Maps and a similar dynamic algorithm called Growing Neural Gas into the FANN library. The implementation will be coded so as to support extensions such as adding multiple learning rules and neighborhood functions, and include features such as calculation of quantization error and other metrics.


Self-Organizing Maps ve bir benzeri sayılabilecek Growing Neural Gas tipinde YSA lar da FANN kütüphanesine dahil edilecek.



Discrete-Time Recurrent Networks (GSoC)
Recurrent networks are an important feature currently missing from the Fast Artificial Neural Network (FANN) library. Not only can they be used to model new problems, but they also better mimic the connectivity of biological neurons. For this project, the FANN library will be extended modularly to add support for discrete-time recurrent networks. The analogues of the feedforward training algorithms which FANN already supports -- recurrent backpropagation and recurrent cascade-correlation -- will be implemented. Unique to recurrent networks, Long Short-Term Memory will also be implemented to provide a method which can learn to store information over long time periods faster than recurrent backpropagation. This solution will include documentation, test cases, and a tutorial.

yine değişik tipte bir YSA FANN kütüphanesine dahil edilecek.

Conjugate gradient training methods support (GSoC)

Conjugate gradient algorithms are popular training methods in artificial neural networks. Due to speed and average memory requirements they are often good choice especially for large networks. This project consists of implementation of three such methods: Fletcher-Reeves, Polak-Ribiere and Powell-Beale.

Conjugate gradient öğrenme algoritmalarından Fletcher-Reeves, Polak-Ribiere ve Powell-Beale ekleniyor


OpenOffice.org Spreadsheet Plugin (GSoC)

Artificial neural networks have proved to be extremely helpful tool for various kind of tasks, from basic pattern recognition to data processing. As there are many tools for working with neural networks, most of them is either very expensive or requires programming skills to write appropriate programs that create and train networks. As FANN proved to be the de facto standard library in the FLOSS world for neural computation, its usage is uncomfortable and counterintuitive for many people because of the lack of a GUI. (Commercial Mathematica bindings are not considered because of the price of the product) Creating OpenOffice FANN plugin may help to widen even more the popularity of the library and provide a means of performing neural calculations to people without necessary programming background.

Open Office tablolama programı ile FANN kütüphanesinin kullanabilmek için eklenti


Native GUI (GSoC)
Using QT became possible to have also a real cross-platform native GUI, especially with QT4 (windows, linux, macOs). Goal: My objective is to create a user-friendly cross-platform native GUI using Qt4 libraries.

Qt kütüphanesi ile yazılması planlanan FANN Kullanıcı arabirimi benim yazdığım FannTool benzeri bir program