Latest Posts
Showing posts with label Seismic Processing. Show all posts

Prosesing Data Seismik menggunakan Matlab (Part 1) - Load data, otak-atik dan cek geometri

Hello, digital world..

Hari ini mau saya mau iseng-iseng mengolah data seismik menggunakan Matlab setelah melihat buku karangan Wail A Mousa & co., Processing of Seismic Reflection Data Using MATLAB. Kode-kode dan data untuk latihan sudah dibuat beliau dan dapat diunduh di link berikut.

Oke setelah mendapatkan data bernama Book_Seismic_Data.mat tersebut, kita buka dengan perintah :

>>load Book_Seismic_Data.mat

Pada workspace matlab dapat dilihat ada dua buah variabel dari file tersebut, yaitu D untuk matriks rekaman data dengan panjang trace 594 dan panjang sampel rekaman 150, lalu variabel H yang berisi header dari data tiap trace tersebut.

Menampilkan Rekaman
Untuk menampilkan data, pertama-tama harus kita ketahui waktu cuplik (sampling time) rekaman terlebih dahulu dari variabel H dengan menggunakan perintah :

>>dt=H(1).dt/1000/1000;

kenapa perlu dibagi 1e-6 ? karena umumnya header dt itu dalam satuan µsec.
Selanjutnya untuk menampilkan data anda dapat secara manual menggunakan perintah :
>> x=1:size(D,2); z=0:dt:(size(D,1)-1)*dt; 
>> pcolor(x,z,-1*D); shading interp; axis ij; colormap(gray); colorbar;
>> xlabel('trace number'); ylabel('time (s)');
Plot data dengan colormap gray, dapat diketahui jumlah shotnya ada 18

Jika ingin menggunakan warna umum RGB rekaman seismik :
>> x=1:size(D,2); z=0:dt:(size(D,1)-1)*dt; 
>> pcolor(x,z,-1*D); shading interp; axis ij; colormap(seis_colors); colorbar;
>> xlabel('trace number'); ylabel('time (s)');


Dan juga dari program milik Mousa dapat menampilkan wigglenya dengan perintah
>> x=1:size(D,2); z=0:dt:(size(D,1)-1)*dt; 
>>mwigb(D,1,x,z); axis([0 600 0 3]);
>>xlabel('trace number'); ylabel('time (s)') 


Dari gambar di atas dapat diketahui bahwa jumlah shot yang nya ada 18 buah (bisa juga dilihat nomor fldr pada variabel H dengan perintah "H(end).fldr").

Menampilkan Desain Survei Posisi Shot, Receiver, dan Stacking Chart
Pertama-tama kita ektrak terlebih dahulu nilai geometri dari header, anda bisa menggunakan fungsi extract_geometry.m milik Mousa atau run perintah berikut

>>sx=[H.sx]; sy=[H.sy]; gx=[H.gx]; gy=[H.gy]; 
sz=[H.selev]; gz=[H.gelev]; sg=[H.fldr];
count=1; l=1; k=2;
for i=1:length(sg)
    if k<=length(sg) && sg(k-1)==sg(k)
        count=count+1;
    else
        num_trace_per_sg(l)=count;
        num_sg(l)=l;
        count=1;
        l=l+1;
    end
    k=k+1;
end

dimana variabel tersebut merupakan :
sx: sources x-axis locations
sy: sources y-axis locations
gx: receivers x-axis locations
gy: receivers y-axis locations
num_sg: number of shot gathers
num_trace_per_sg: number of traces/shot gather
sz: elevations of the sources
gz: elevations of the receivers

Untuk melihat jumlah trace tiap shot, dapat dilihat menggunakan perintah :
>>figure,stem(shot_gathers,num_trace_per_sg)
xlabel('Shot gather numbers','FontSize',14)
ylabel('Number of traces/shot gather','FontSize',14)
axis([0,max(shot_gathers)+1,0,max(num_trace_per_sg)+2])
set(gca,'YMinorGrid','on')

dapat dilihat bahwa tiap shot memiliki 33 trace. Selanjutnya posisi ketinggian receiver dan shot dapat dilihat dengan perintah :

>>figure,plot(sz,'*-')
xlabel('Number of traces','FontSize',14)
ylabel('Sources elevation (ft)','FontSize',14)
grid

>>figure,plot(gz,'*-')
xlabel('Number of traces','FontSize',14)
ylabel('Receivers elevation (ft)','FontSize',14)
grid

dan stacking chart dapat kita lihat dengan perintah :
>>num_shots=length(shot_gathers);
stacking_chart(sx,gx,num_shots,num_trace_per_sg)


untuk selanjutnya, akan kita bahas tentang editing dan QC data, kill trace seismik yang rekamannya kacau dan sebagainya..

see ya,

L

Install Seismic Un*x di windows menggunakan Cygwin

Hello Digital Worlds,

Kebanyakan problem kita saat mau memakai beberapa software geofisika itu support OSnya yang kebanyakan berbasis Linux. Beberapa orang yang kadang males karena sudah terbiasa memakai windows (seperti saya, males je wis jatuh cinta sama windows xp) menggunakan program seperti Cygwin dan Vmware untuk menjalankan program2 tsb..

Oke langsung to the point aja.. Gimana sih cara installnya di cygwin?

1. Siap-siap file, folder, dan alamat direktorinya.
- Yang jelas softwarenya didownload dulu. Kalau belum pindah alamatnya ya di sini .
- Taruh pada folder baru misal bernama "seismicunix" di direktori anda pada cygwin di C:\cygwin\home\(nama_user)*.
(nama user) disini nama usermu, misal dikomputer saya direktorinya C:\cygwin\home\leo\seismicunix\

- Buka CygwinX -> pilih X Win Server. Ekstrak pada cygwin terminal dengan perintah
$ tar -xvf cwp_su_all_43R3.tgz -C /home/(nama_user)/seismicunix

2. Edit bashrc dan makefile.config
- Kembali ke windows explorer, buka file .bashrc pada direktori windows C:\cygwin\home\(nama_user) dengan text editor (notepad, etc.)
- tambahkan baris terakhir pada file tersebut dengan alamat install seismic unix seperti pada contoh berikut :
export CWPROOT=/home/leo/seismicunix  <- misal untuk komputerku
export PATH=$PATH:$CWPROOT/bin
Lalu save.

- Setelah itu edit isi makefile.config pada direktori C:\cygwin\home\(nama_user)\seismicunix\src dengan perintah di bawah ini :
 

3. Installing
- Balik ke CygwinX, masuk ke folder /src pada direktori seismic unix.
$ cd /home/(nama_user)/seismicunix/src
- Install dengan perintah-perintah berikut, accept, accept, minum kopi, yes, yes, etc sabar tunggu sampai tiap program selesai :
$ make install
$ make xtinstall
$ make finstall
$ make mglinstall
$ make utils
$ make xminstall
$ make sfinstall
 
- Loh kok error? Kembali ke Windows Explorer (lagi), buka file text "stdio_s.h" pada C:\cygwin\home\(nama_user)\seismicunix\src\Sfio\src\lib\sfio\Stdio_s . Pada baris ke delapan ubah tulisan
dari :
typedef struct _sfio_s        *__FILE;
menjadi :
 /*typedef struct _sfio_s *__FILE;*/

Setelah itu save. Kembali ke CygwinX, jalankan kembali perintah :
$ make sfinstall
 
- Loh kok masih error!? Sabar. Kembali lagi ke Windows Eksplorer, buka file text "sfstdio.h" pada C:\cygwin\home\(nama_user)\seismicunix\src\Sfio\src\lib\sfio\Stdio_b . Pada baris ke tigapuluh ubah tulisan
dari :
typedef FILE  *__FILE;
menjadi :
/*typedef FILE        *__FILE;*/

Setelah itu save. Kembali ke CygwinX, jalankan kembali perintah :
$ make sfinstall
- BAM! You did it. Untuk mengetest apakah program berjalan silahkan close cygwin lalu buka kembali CygwinX-nya. Tulis perintah :
$ suplane | suximage title="Cie yg bisa nginstalll"
 akan muncul seperti ini:
 
Kira-kira begitu sih, simpel kan? :) 
Semoga bermanfaat ya..
nb: untuk tutorial pengolahan bisa dilihat di ensiklopedi seismik milik Agus Abdullah, Phd
See ya,
L

Interactive Muting pada Seismic Un*x


“Disclaimer: banyak istilah, arti, dan hal-hal lain yang saya rubah arti atau pengertiannya sehingga kadang tidak seperti arti sebenarnya. Tujuan saya melakukan itu untuk memudahkan pembaca dalam memahami isi dari post-post seperti ini. ”

Setahun terakhir saya sedang tertarik dengan yang namanya prosessing seismik karena ingin melihat kecocokan model yang dibuat pada SPECFEM-nya Komatitsch and Martin dengan hasil forward modellingnya. Well, minimnya pelatih di Laboraturium Paradigm dan kadang error juga software Echos-nya  memaksa saya beralih menggunakan seismic un*x dalam hal pengolahan. Selain open source, tutorialnya pun banyak di internet, untuk yang bahasa Indonesia dapat dilihat di ensiklopedi seismik milik Agus Abdullah, P.hd. (terima kasih untuk ilmu dan inspirasi dari blog beliau)

Muting merupakan salah satu tahap dalam pengolahan data seismik untuk menghilangkan noise gelombang langsung dengan cara merendahkan bahkan bisa dengan membuat nilainya menjadi nol pada matriks yang kita tunjuk sebagai gelombang langsung.  Pada seismic un*x perintahnya adalah sumute. Kekurangannya disini kita harus memasukkan satu persatu matriks yang akan kita mute. Tentu akan lebih mudah lagi jika kita melakukan muting dengan cara interaktif seperti pada software-software terkenal (contoh: Echos Paradigm, dll) bukan?

Pada seismic un*x sebenarnya sudah ada contoh pada demo untuk muting tapi hanya sekedar untuk contoh data suplane. Oleh karena itu saya buat bashscript interactive muting untuk data dengan shot banyak (baik untuk yang tipe split spread shot juga).

Langkah-langkahnya :
1. Taruh program ini pada file data berada. Edit parameter di dalam file mutepick sesuai dengan parameter data anda. Jalankan sh mutepick pada terminal. Lalu pick titik-titik garis mute-nya.




Sebelum muting

Setelah muting


























2. Setelah preview hasil pick mute anda untuk 1 shot ditampilkan dan hasilnya OK, sekarang run program octave/matlab mute_parring.m
3. Setelah file par dibuat menggunakan kode octave/matlab di atas, selanjutnya kita aplikasikan dengan bash script muteit berikut:
4. Setelah itu lanjutkan saja perintah setelah mute it berjalan

Setelah perintah dari program terakhir dijalankan maka data anda setiap shot sudah diberlakukan muting. Kira-kira begitu saja postingan saya. InsyaAllah untuk berikutnya saya akan menceritakan tentang interactive velocity picking menggunakan bashscript di seismic unix.

see ya,
L