Wednesday, October 28, 2015

Histogram Numaralari

Matplotlib kutuphanesinin histogram hist cagrisinin histogram grafigini basmak haricinde bazi ek ozellikleri var. Mesela bir verinin histograminin kutu (bins) noktalarinin nerede oldugunu raporlattirabiliriz, ayrica bu kutularin  icine ne kadar veri dustugunu, sayi ya da normalize edilmis sayi olarak gorebiliriz. Normalize edilmis sayi ozellikle onemli cunku bu sayi, olasiliksal baglamda, bir tur sayisal yogunluk fonksiyonu (density function) olarak gorulebilir.

Ornek

1,2,3,..,40 sayilarini iceren bir vektor uzerinden,

hst = plt.hist(range(40), bins=3)
print hst[1]
print hst[0]

[  0.  13.  26.  39.]
[ 13.  13.  14.]

Sonuclardan birincisi her kutunun sinir noktalarini veriyor. 3 kutu olustur dedik (bins=3 ile) ve mesela 1. kutu 0 ile 13 arasinda olusmus, sonraki 23-26, vs. Kutular icinde  sirasiyla 13,13 ve 14 tane deger var. 

Eger kutu icindeki sayilari olasiliksal yogunluk degeri gibi gormek isteseydik, normed=True parametresini vermek lazim, 

hst = plt.hist(range(40), normed=True,bins=3)
print hst[0]

[ 0.025       0.025       0.02692308]

Yogunluklar birbirine cok yakin tabii ki cunku verimiz 1-40 arasi sayilar. Dagilimi daha degisik olan bir veri uzerinde farkli sayilar gorurduk. Mesela orta noktasi 10, standart sapmasi 0.1 olan normal (gaussian) dagilmis / uretilmis sayilar uzerinden, 

data = np.random.normal(mu,sigma,40)
hst = plt.hist(data, normed=True,bins=3)
print hst[0]
print hst[1]

[ 1.996045    4.19169449  1.7964405 ]
[  9.79075557   9.91600325  10.04125093  10.1664986 ]

Orta noktada cok daha fazla yogunluk oldugunu goruyoruz, bu normal tabii cunku dagilim da normal (!). Not: yogunluk fonksiyonu 1'den buyuk degerler dondurebilir (ama kumulatif yogunluk donduremez). 

Monday, October 12, 2015

ffmpeg, avconv

Bazi ffmpeg komutlari (buraya ekler olacak)

Format degisimi (ornekte mp4'den avi), video'nun bir kismini cekip cikartmak, mesela 100. saniyeden baslayarak 20 saniyelik kisim,

ffmpeg -i vid1.mp4 -ss 100 -t 20 -acodec copy -vcodec copy vid2.avi

Video'yu numarali JPG imaj dosyalari haline getirmek

ffmpeg -i vid.avi -vcodec mjpeg %05d.jpg

Ses ve goruntu dosyalarini islemek icin ffmpeg kullananlar icin Ubuntu 14'da surpriz: ffmpeg programi apt-get ile kurulamiyor. Dolambacli yollardan kurmak mumkun fakat yeni one surulen program avconv. Kurmak icin

sudo apt-get install libav-tools

Bir ses dosyasinin belli zaman araliklarindaki kismini cikartmak icin

avconv -i dosya.mp3 -ss 0:0:6 -t 0:0:8 -acodec copy parca.mp3

Bu komut dosyanin 6. saniyesinden baslayakara 8 saniyelik bir kismi cikartiyor. 

Diger bazli ffmpeg komutlari.. Mesela bir gorutuyu  cevirmek icin

ffmpeg.exe -i dosya.mp4 -vf "transpose=2" sonuc.mp4

transpose parametresine verilen degerlerin anlami var, 1 saat yonu, 2 saat yonu tersi.

Video ufaltmak icin

ffmpeg -i dosya.mp4 -filter:v scale=640:-1 -c:a copy sonuc.mp4

Genisligi 640 yap, geri kalan her seyi ona gore ayarla dedik.

Video birlestirmek icin bir ara formattan gecmek lazim.

ffmpeg -i dosya1.mp4 -q:v 1 -filter:v scale=500:-1 -f mpegts dosya1.ts
ffmpeg -i dosya2.mp4 -q:v 1 -filter:v scale=500:-1 -f mpegts dosya2.ts
..

Sonra birlestirmek icin

ffmpeg -i "concat:dosya1.ts|dosya2.ts|..."  -c copy sonuc.mp4

Eger Windows'da bir mp4 cikmiyorsa, bir cevrim sekli de soyle,

ffmpeg -i dosya.mp4 -r 30  -codec:v mpeg4 -flags:v +qscale -global_quality:v 0 -codec:a libmp3lame dosya.avi