Sayfalar

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

Salı, Haziran 19, 2007

Levlake Mazharına 4

EY SEVGİLİ

Senin kalbinden sürgün oldum ilkin
Bütün sürgünlüklerim bir bakıma bu sürgünün bir süreği
Bütün törenlerin şölenlerin ayinlerin yortuların dışında
Sana geldim ayaklarına kapanmaya geldim
Af dilemeye geldim affa layıkolmasam da
Uzatma dünya sürgünümü benim
Aşkın bu en onulmazından koparıp
Bir tuz bulutu gibi
Savuran yüreğime
Ah uzatma dünya sürgünümü benim
Nice yorulduğum ayakabılarımdan değil
Ayaklarımdan belli
Lambalar eğri
Aynalar akrep meleği
Zaman çarpılmış atın son hayali
Ev miras değil mirasın hayaleti
Ey gönlümün doğurduğu
Büyüttüğü emzirdiği
Kuş tüyünden
Ve kuş sütünden
Geceler ve gündüzlerde
Insanlığa anıt gibi yükselttigi
Sevgili
En sevgili
Ey sevgili
Uzatma dünya sürgünümü benim

Bütün şiirlerde söylediğim sensin
Suna dedimse sen Leyla dedimse sensin
Seni saklamak için görüntülerinden faydalandim Salome'nin Belkıs'ın
Boşunaydı saklamaya çalışmam öylesine aşikarsın bellisin
Kuşlar uçar senin gönlünü taklit için
Ellerinden devşirir bahar çiçeklerini
Deniz gözlerinden alır sonsuzluğun haberini
Ey gönüllerin en yumusağı en derini
Sevgili
En sevgili
Ey sevgili
Uzatma dünya sürgünümü benim

Yıllar geçti sapan ölümsüz iz bıraktı toprakta
Yıldızlara uzanıp hep seni sordum gece yarılarında
Çatı katlarında bodrum katlarında
Gölgendi gecemi aydınlatan eşsiz lamba
Hep Kanlıca'da Emirgan'da
Kandilli'nin kurşuni şafaklarında
Seninle söyleşip durdum bir ömrün baharında yazında
şimdi onun birden bire gelen sonbaharında
Sana geldim ayaklarına kapanmaya geldim
Af dilemeye geldim affa layık olmasam da
Ey çagdaş Kudüs (Meryem)
Ey sırrını gönlünde taşıyan Mısır (Züleyha)
Ey ipeklere yumuşaklık bağışlayan merhametin kalbi
Sevgili
En sevgili
Ey sevgili
Uzatma dünya sürgünümü benim


Dağların yıkılışını gördüm bir Venüs bardağında
Köle gibi satıldım pazarlar pazarında
Güneşin sarardığını gördüm Konstantin duvarında
Senin hayallerinle yandım düşlerin civarında
Gölgendi yansıyıp duran bengisu pınarında
Ölüm düşüncesinin beni sardığı şu anda
Verilmemiş hesapların korkusuyla
Sana geldim ayaklarına kapanmaya geldim
Af dilemeye geldim affa layık olmasam da
Sevgili
En sevgili
Ey sevgili
Uzatma dünya sürgünüm benim

Ülkendeki kuşlardan ne haber vardır
Mezarlardan bile yükselen bir bahar vardır
Aşk celladından ne çıkar madem ki yar vardır
Yoktanda vardan da ötede bir Var vardır
Hep suç bende değil beni yakıp yıkan bir nazar vardır
O şarkıya özenip söylenecek mısralar vardır
Sakın kader deme kaderin üstünde bir kader vardır
Ne yapsalar boş göklerden gelen bir karar vardır
Gün batsa ne olur geceyi onaran bir mimar vardır
Yanmışsam külümden yapılan bir hisar vardır
Yenilgi yenilgi büyüyen bir zafer vardır
Sırların sırrına ermek için sende anahtar vardır
Göğsünde sürgününü geri çağıran bir damar vardır
Senden umut kesmem kalbinde merhamet adlı bir çinar vardır
Sevgili
En sevgili
Ey sevgili



Sezai Karakoç

Pazartesi, Haziran 18, 2007

Bakan Bilgisayar - Gören Bilgisayar



Zeka Hakkında Kıssalı Yazılar - 4 *

Vakti zamanında padişahın birinin ahmak bir oğlu varmış. Padişah belki faydası olur umuduyla oğluna gizli bilimlerin öğretilmesini emretmiş. Memlektin en güzide alimlerinden dersler almış. Gel zaman git zaman icazet alacak dereceyede ulaşmış.

Padişah oğlunu imtihan etmek istemiş avcuna akik taşından bir yüzük alıp, oğlunu çağırtmış.
- Ey oğlum yıllarını verdin ve gizli ilimleri öğrendin
- Evet babacığım
- şimdi seni imtihan edeceğim.
- Evet babacığım
- Avcumun için de bir şey saklı bil bakalım ne
- Oğlan marifetini göstermeye başlar
- Avcunuzun içindeki şey yuvarlaktır babacığım
- Evet
- Ortası deliktir babacığım
- Eveeet
- Taştan yapılmıştır babacığım
- Eveeeeet
der padişah heyecan içinde ve sorar
- peki nedir o ?
Oğlan başlar sesli düşünmeye
- Yuvarlak ortası delik taştan, Tamam buldum babacığım değirmen taşı !

Padişahın ahmak oğlu öğrendiği gizli bilimlerin marifetiyle Padiaşın avcunun içine bakmıştır ve fakat Görememiştir. Bakmak ve görmek farklı farklı şeylerdir. Görmek baktığından gereken bilgiyi çıkaramaktır.

Günümüzde Bilgisayarlar da bakabiliyorlar fakat göremiyorlar. Bir kamera vasıtasıyla görüntüler Renk Noktacıklarından oluşan Matris Şeklinde alınabiliyor. Yani bigisayarda görülecek şeyin Renk Noktalarından oluşan bu bir matris den çıkarılması gerekiyor. Genel bir Yapay görme sistemi mevcut değil zaten şu an itibarıyla Genel bir Yapay zeka sistemi de yok. Yine de Bilgisyarlı Görme için sayısız çalışma yapılıyor. Sınırlandırılmış yönlendirilmiş sistemler hazırlanıyor. Genel Yapı itibarıyla bu sistemler Şöyle çalışıyorlar

Matris Görüntü -> Görüntü İşleme -> Yapay Zeka -> Bilgi


Mesela Elimizde geniş bir Nota arşivi bulunsun, Biz de bunu elektronik ortama geçirmek istiylelim. Kolaylıkla Notaların yazılı olduğu kağıtlar taratılarak görüntü olarak bilgisayara aktarılır. Bilgisayar artık Notalara bakmış olur ! Peki Bilgisayar Notaları nasıl görecek ?
Bunun için Bir Optik Nota Okuyucu** projesi yapmamız gerekir. Basitçe anlatırsak;
  1. Taranmış Notaların görüntüsü alınır. - Martis Görüntü -
  2. Notaların Daha belirgin olması için işleme tabi tutulur - Görüntü İşleme -
  3. Portrelerin Yerleri Belirgenleştirilerek Tespit edilir. - Görüntü İşleme -
  4. Notaları Portre üzerinde tanıyacak bir Örüntü tanıma sistemi oluşturulur - Örüntü Tanıma Yapay Zeka -
  5. Yerleri tespit edilen Portreler Notaları okunmak üzere Örüntü tanıma sistemine verilir.
  6. Okunan Notalar İstenen şekilde kaydedilir. Bilgisyar artık notaları görmüştür.

Görüntü işleme Yapay Zekanın bilgi çıkarabilmesini mümkün kılan ara bir safhadır. Fakat Sizinde tahmin edeceğiniz gibi Bu işin en Önemli safhası Yapay Zeka safhasıdır. Padişahın ahmak oğlunun durumuna düşmemek lazım..

* Zeka Hakkında Kıssalı Yazılar - 1 2 3 Seriyi hatırlatıp, tekrar başlanmasına vesile olan Volkan Salma 'ya ithaf olunur

** Yapay Zeka konusunda bizler pek çok projeye ihtiyaç duyuyoruz, ama görebildiğim kadarıyla Bitirme tezi veren öğrenciler hariç bu konularda fazla çalışan yok. Veritabanı programlarıyla köşeyi dönen vede çeşmenin başına kurulup ufacık yazılım güncellemelerinden Çuvalla para götüren yazılm firmları, alın bir kaç elemanda bu işler için, Çalışsınlar bu konularda size fazla bir zararları olmaz. Hatta başarılı olurlarsa rakiplerinizin kolaylıkla el atamıyacakları bir işe sahip olursunuz.

Cuma, Haziran 01, 2007

FannTool yazılmaya başladı !

FANN kullanımı hakkında yazdığım dizi sonunda farkına vardım ki nihai programı yazmadan önce YSA nın yapısıyla ilgili pek çok parametre ayarı yapmak gerekiyor. fannExplorer diye bir tuhaf program var ama benim hoşuma gitmedi .

Neyse efendim bende kollarımı sıvayıp basit bir program yazdım. FannTool henüz kodunu eklemedim. Şimdilik ön görücüye çıkarıyorum.
Windows için buyrun indirin FannTool
Deneyip fikirlerinizi bildirirseniz sevinirim

Cumartesi, Mayıs 26, 2007

Gök ekini biçmiş gibi...

Miskin âdem oğulları,
Ekinlere benzer gider.
Kimi biter kimi yiter,
yere tohum saçmış gibi.

Bu dünyada bir nesneye,
yanar içim göynür özüm.
Yiğit iken ölenlere,
Gök ekini biçmiş gibi.


22. Mayıs 2007 sıradan bir iş günüydü. İş yeri servisimizle yine her zamanki yolumuzdan şehre döndük. Son Durak Ulustu. Herşey sıradandı ta ki Saat 19 da Bentderesinde hemen bizim önümüzde Polis yolu kapatana kadar...
Orada indim ve yukarıya doğru yürümeye başladım. Ambulanslar bir bir peşine geçmeğe başladı. Ve gersini biliyorsunuz....

Her iş günü dönüşü indiğim yer, Dükkanların da alışveriş yaptığım veya vitrinlerine bakarak oyalandığım yer. Karşısındaki -Zincirli - Camide namaz kıldığım yer....

Ve Gök ekinler ; Damatlığını almaya gitmiş birisi, bir diğerinin iş yeriymiş, bir diğeri sadece oradan geçiyormuş, bir diğeri, bir diğeri, bir diğeri ...


Eğer dünya ebedî olsaydı, insan içinde ebedî kalsaydı ve firak ebedî olsaydı, elîmâne teessürat ve meyusâne teellümâtın bir mânâsı olurdu. Fakat madem dünya bir misafirhanedir; vefat eden ... nereye gitmişse, siz de, biz de oraya gideceğiz. Ve hem bu vefat ona mahsus değil, umumî bir caddedir. Hem madem mufarakat dahi ebedî değil; ileride hem berzahta, hem Cennette görüşülecektir. "El-hükmü lillâh," demeli. "O verdi, o aldı. Elhamdü lillâhi alâ külli hal" deyip sabırla şükretmeli.
gibi teselliler de olmasa, ne yapardık bilmem.

Ölenlerimize rahmet, yaralılarımıza acil şifa, Bu musibetinde bölünüşlüğmüze* ilaç olması duasıyla...

Naçar kalacak yerde
Nagâh açar o perde
Derman eder ol derde
Mevlâ görelim neyler
Neylerse güzel eyler


* Ne demişler "Hakikate nasihat ile seve seve gelmeyenleri, musibet döve döve getirir. "

Çarşamba, Mayıs 23, 2007

FANN Kullanımı 3 Uygulama

Bir önceki yazımızda bahsettiğimiz gibi bu yazımızda bir uygulama yapacağız. Sizden gelmesi beklenen değerli fikirler gelmeyince mecburen abuk bir konuda uygulma hazırlamak zorunda kaldık. Güneş lekeleri

Güneş lekeleri , Güneş'in yüzeyinde (ışık yuvarda), çevresine oranla daha düşük sıcaklığa sahip olan, ve mıknatıssal etkinliğin gözlemlendiği bölgelerdir. Her ne kadar 4000-4500 K sıcaklık ile son derece parlak olsalar da, çevrelerinin 5778 K'de olması, karanlık bölgeler olarak görüldüklerinden bu ismi alırlar.


Neyse işte insanların işi gücü yok bu lekeleri sayıp kaydını tutmuşlar.Biz de bu verileri kullanacağız.

Öncelikle Neural networks for financial time series prediction isimli dosyaya bir göz atın. O yazıda detaylarıyla anlatıldığı gibi Verileri aldığımız haliyle kullanmayız, ön işlemeden geçirmeliyiz. ( 3.4 Design of ANNs in finance kısmı )

Güneş lekelerinin (2006 - 1980) aralığında aylık ortamalarını raw.dat isimli dosyaya her satır 1 değer olarak kaydedildi. Öncelikle verileri YSA da kullanabilmek için - Kullandığınız aktivasyon fonksiyonuna göre - (0 , 1) yada ( -1 , 1 ) değerleri arasına çekiyoruz Normalizasyon. Bir ay sonraki ortalama güneş lekesi sayısını bulmak için önceki 24 ayın değerleri kullanılıyor. 2 adet gizli katman kullanılıyor yani YSA mızın yapısı girişten çıkışa doğru
24 -> 16 -> 7 -> 1

şeklinde oluyor. Peki Bu değerleri Nasıl belirliyoruz ? derseniz Net bir cevabı yok.* Genellikle Giriş ve çıkış düğüm sayısı bellidir. Saklı katman yada katmanlardaki düğüm sayıları YSA nın eğitim performansına göre seçilir.

Programımız
LoadRawData("raw.dat");
Normalize();
WriteTrainData(24,1,"sunspot.dat");
Train();
Test();
Run();

dan ibaret
Açıklamalarına gelince
  • LoadRawData : Ham verileri ismi verilen - Veri dosyasında Her satır 1 veri içeriyor- text dosyasından okuyup data dizisine aktarıyor

  • Normalize : Diziye atılmış verileri -0.8 ile 0.8 arsına çekerek Normalize ediyor

  • WriteTrainData : Normalize edilmiş verileri alıp FANN kütüphanesinin kullanabileceği veri dosyası olarak kaydediyor
  • Train : YSA yı Eğitiyor.

  • Test : test.dat dosyasındaki verileri kullanarak Eğitilmiş YSA'yı test edip sonuçta ulaşılan Hatadeğerini bildiriyor

  • Run : Verilerimizden Rasgele 10 adedini kullanarak YSA çalıştırılıyor ve YSA nın hesapladığı ve gerçek değeri birlikte gösteriyor

Şimdi gelelim benim yapmadığım fakat aslında yapılması gereken şeylerden bazılarına

1) Veri sayısı yeterince büyük olması lazım
2) Bu veriler Eğitim, Test ve Kontrol için 3 parçaya ayrılıp her işlem için kendine ayrılan veri kulanılması lazım.


Sonuçta yazılan proje : SunSpot

* bakınız NN_FAQ Bu YSA için yazılmış Sıkça Sorulan Soruları İndirmenizi ve incelemenizde tavsiye ediyorum FAQ. Kısmetse YSA da uygun dizayn için test programı yazmayı da düşünüyorum.

Cuma, Mayıs 18, 2007

Yakşıklı Fotoğrafım !




SetEnaniyet(KAF_DAGI);
Şenlikteki fotoğraflara göz gezdiriyordum ki BEN'im o yakışıklı fotoğrafıma rastaldım. Sizleri de bundan mahrum bırakmamak için buraya alıyorum. Niçin bu açıdan çekilmiş diyorsanız diğer açılardan fotoğraf çekmeğe cüret edildiğinde fotoğraf makinaları zarar görür!
Mesela Bu fotoğrafı çektirmek için neler çektim bir bilseniz ! Pek çok güzelim makina heder oldu. En sonunda Özel filitreler kullanarak ancak çektirebildim...
ReleaseEnaniyet();

Not : Bu yazımı Enaniyetli Müdür KÖA 'a ithaf ediyorum. ;)

Perşembe, Mayıs 10, 2007

Padişahın fakirhanemize teşrifini bekliyoruz

Vâsıl olmaz kimse Hakk’a cümleden dûr olmadan
Kenz açılmaz şol gönüle tâ ki pürnûr olmadan
Sür çıkar ağyarı dilden tâ tecelli ede Hakk
Padişah konmaz saraya hâne mamur olmadan
Şemsettin Sivasi (k.s.)

cümleden olmamıza, gönülümüzün pürkusurluğuna, ağyar ile meşgul olmasına rağmen
Padişahın fakirhanemize teşrifini bekliyoruz. - yıllardır -
Başka kapı yok

Senin kapından başka hangi kapıya gideyim? Hangi kapı var? Senden başka Rab yok ki dergâhına gidilsin. Senden başka hak mâbud yoktur ki ona iltica edilsin.
On Yedinci Lem'a

Çarşamba, Mayıs 09, 2007

FANN Kullanımı 2

Önce Hatırlayalım Neler yapmıştık ; YSA oluşturduk, Eğittik, Çalıştırdık ve tekrar kullanabilmek için kaydedip yüklemeyi öğrendik
Eveet çooooook ! yoğun istek üzerine devam ediyoruz

5) Test Etmek : Eğittiğimiz YSA yı test etmek gerekmektedir Eğitim için kullandığımız verinin % 10 - 30 arasındaki bir miktarda veriyle YSA test edilir ve Hata faktörüne bakılır. Öncelikle aynı Eğitim verisi için kullandığımız dosya yapısında bir dosya hazırlanır ve fann_read_train_from_file fonksiyonuyla yüklenir. Bundan sonra tek yapacağınız fann_test_data fonksiyonunu çağırmak. işi bitincede fann_destroy_train ile hafızdaki yerleri boşaltmak

Mesela :
struct fann_train_data *dt;
dt=fann_read_train_from_file("test.dat");
ann=fann_create_from_file("aproje.net");
fann_reset_MSE(ann);
fann_test_data(ann,dt);
printf("\n Test Sonucu MSE : %f \n\n", fann_get_MSE(ann) );
fann_destroy_train(dt);

MSE (Mean Square Error) dediğimiz şey ortalama karesel hata yani bizim YSA mız yaptığı - Eğitim yada Test - işte istenenle hesaplanan değerler arasındaki - Hata - farklarının karelerinin ortalaması gibi birşey

void fann_reset_MSE(struct fann *ann)
MSE değerini sıfırlar

float FANN_API fann_get_MSE(struct fann *ann)
MSE değerini okur


6) Diğer Faydalı Fonksiyonlar

Eğitim Algoritmalarını ayarlayanlar
enum fann_train_enum fann_get_training_algorithm(struct fann *ann)
Kullanılan Eğitim metodunu okur
void fann_set_training_algorithm(struct fann *ann,enum fann_train_enum training_algorithm)
* Eğitim metadunu değiştirir.

Eğitim metodları ise FANN_TRAIN_INCREMENTAL, FANN_TRAIN_BATCH, FANN_TRAIN_RPROP, FANN_TRAIN_QUICKPROP olarak 4 çeşittir. Metodların detayı için kitaplara yada google müracaat edilsin

* Öğrenme hızını ayarlayanlar

float fann_get_learning_rate(struct fann *ann)
kullanılan öğrenme hızını döndürür.
void fann_set_learning_rate(struct fann *ann, float learning_rate)
Öğrenme hızını ayarlar. Öğrenme hızı için geçerli Normal Değer 0.7
Bu fonkisyonları FANN_TRAIN_RPROP metodu için kullanamıyoruz

* Aktivasyon Fonksiyonlarını Ayarlayanlar
Daha önce geçmişti
Gizli katman için
fann_set_activation_function_hidden(
struct fann * ann,
enum fann_activationfunc_enum activation_function
)
Çıkış katamanı için
fann_set_activation_function_output(
struct fann * ann,
enum fann_activationfunc_enum activation_function
)

kullanılır

Aktivasyon fonksiyonlarıda ; FANN_LINEAR,FANN_THRESHOLD,FANN_THRESHOLD_SYMMETRIC,FANN_SIGMOID, FANN_SIGMOID_STEPWISE, FANN_SIGMOID_SYMMETRIC, FANN_GAUSSIAN, FANN_GAUSSIAN_SYMMETRIC, FANN_ELLIOT, FANN_ELLIOT_SYMMETRIC, FANN_LINEAR_PIECE, FANN_LINEAR_PIECE_SYMMETRIC gibi pek çok çeşit var detayı için bakınız

Bu yazının devamı olacak mı ? Kısmet, yazının devamı olarak basit bir uygulama yazmayı düşünüyorum. Şu an için aklımda bir uygulama yok fikrilerinize açığım. Hatta "Şu konuda elimde datalar var onları kullanabilirsiniz " derseniz büyük kolaylık olur.

Pazartesi, Mayıs 07, 2007

6. Linux ve Özgür Yazılım Şenliğinin ardından

Bütün bir yıl toz toprak içinde çalışan birisi için ODTÜ mesire yeri gibi geliyor bana. İnsanın içi açılıyor. Neyse efendim sözü fazla uzatmayalım. Pazar sabahı çıktım yola saat 9 da ODTÜ ye varmıştım.

Bu senede aynı geçen seneki gibi katılım pek fazla değildi. önce "OpenCV ile görüntü işleme ve bilgisayarlı görme" konulu seminere katıldım. Genel bir giriş anlatıldığından pek yeni birşey öğrendim diyemiyeceğim fakat Linux altında çalışmasını görmüş oldum -itiraf ediyorum Ben hala Linuxa kurmayı denemedim -

Bu seminerin çıkışındada İnternetten aşina olduğum volkansalma ve musaulker ile tanışma fırsatı oldu. Tabiii arkadaşların hayal kırıklığına uğradığının farkındayım. :) Senin Neren Blue Neren Kid ? der gibiydiler. Bu görüşmeye istinaden Profilimde düzeltme yaptım. Yarın öbür gün tanışırsak şaşırmayın.

Daha sonra "Açık Kaynak Kodlu Kütüphanelerle 3B Oyun Motoru Yazmak" konulu seminere girdim. OpenCv ye nazaran ilgi büyüktü. Kafama takılan "Niye hazırda olan Oyun motorları yerine yenisi yazılıyordu ?" sorusuna çoook güzel bir cevap aldık Hoca zoruyla oluyormuş. 4 Öğrenci arkadaş Proje olarak aldıkları bu iş için 2 kez bütün yazdıklarını çöpe atıp 3. de teslim etmişler. Hazır Oyun motorlarındanda söz ettiler tabi. Irrlicht den bahsetmediler. Niye diye de soramadım acelem vardı çıkmak zorundaydım malum Hastane ziyaret saati.

Ne "Gömülü Linux Geliştirme" konulu seminere katılabildim Ne volkansalma ve musaulker le tekrar görüşme imkanım oldu. Bu senede kısmet bu kadarmış.

Son olarak Gönül ister ki katılım daha fazla olsun yine de kimsenin moralini bozmasına gerek yok. Pazar sabahı yatmak yerine buraya gelecek azimde ve şevk de arkadaşlar var ya İnsana ümit veriyor.