Anda di halaman 1dari 39

Seismic Unix

Seismic Unix adalah program untuk mengolah data seismik yang digagas oleh Center for Wave
Phenomena, Colorado School of Mines. Seismik Unix atau sering dikenal dengan SU merupakan open
sourceyang

bekerja

didalam

platform

Unix/Linux.

Didalamnya terdapat ratusan function yang cukup lengkap yang diperlukan untuk pengolahan data
seismik.

Untuk menginstall program SU didalam PC atau Laptop, berikut adalah tahapan yang bisa diikuti:
1.

Install Linux OS misalnya Ubuntu 10.10 yang compatible dengan hampir semua PC atau
Laptop. Ubuntu 10.10 bisa didownload secara gratis. Googling dengan kata kunci ubuntu10.10-desktop-i386.iso

2. Download SU di sini
3. Pada terminal Linux, ketiklah: mkdir seismic_unix untuk membuat directory baru yang
bernama seismic_unix
4. Pindahkan file yang didownload pada tahapan 2 dibawah directory seismic_unix
5.

Lalu masuklah ke directory seismic unix dengan mengetik cd seismic_unix pada terminal,
sehingga jika anda mengetikpwd anda akan berada di /home/agus/seismic_unix (contoh)

6. Ketik tar -xvvf cwp_su_all_42_tar.Z


7.

Semua file yang diekstrak dengan tar di atas akan disimpan dibawah directory src yang secara
otomatis terbentuk.

8. Masih didalam direktory seismic_unix, install beberapa aplikasi yang diperlukan dengan
mengetik: sudo apt-get install lesstif2 lesstif2-dev gfortran libglu1mesa libglu1-mesa-dev freeglut3 freeglut3-dev libxmu6 libxmu-dev
libxi6 libxi-dev
9. Reboot mesin anda
10. Masuklah ke directory src sehingga anda berada di: /home/agus/seismic_unix/src

11. Ketik: gedit Makefile.config lalu gantilah CC = cc dengan CC = gcc dan C++ = c+
+ dengan C++ = g++ lalu save dan exit
12. Pada terminal linux, ketik: export CWPROOT=/home/agus/seismic_unix enter lalu
ketik lagiexport PATH=$PATH:$CWPROOT/bin
13. Masih didalam directory src ketik: make install lalu entermake xtinstall lalu
enter make finstall lalu entermake mglinstall lalu enter make xminstall lalu
enter
14. Test program dengan mengetik pada terminal: suplane | suxwigb Maka anda akan
mendapatkan plot berikut:

NOTE: Setelah logout, keluar terminal, atau membuka terminal baru, kadang-kadang perintah SU
tidak dikenal dengan munculnya pesan .."command not found" , untuk mengantisipasi hal ini ketik
kode berikut di ./bashrc, gedit ~/.bashrc lalu save :
export CWPROOT=/home/agus/seismic_unix
export PATH=$PATH:$CWPROOT/bin

Untuk mengekplorasi lebih jauh, anda bisa melihat demonya pada directory demos dibawah directory
src:

/home/agus/seismic_unix/src/demos
Contoh saya membuka directory 3D_Data_Viewing, lihatlah README file untuk instruksinya. Pada
terminal saya ketik sh Make3Ddatautuk mengenerate data seismic dengan format su i.e. data3d.su
lalu

ketik sh

Trip4 untuk

mendapatkan

gambar

berikut:

Seismic Processing with Seismic Unix - Part1


Sebagaimana yang kita ketahui, Seismic Unix memiliki ratusan fungsiyang berguna untuk mengolah
data

seismic.

Untuk melakukan latihan pengolahan data seismik, berikut adalah tahapan yang bisa diikuti:

Tahap1:
Download data seismik 2 dimensi dengan format segy (388.9MB) disini
Tahap2:
Simpanlah file tersebut dalam folder tertentu, katakanlah processing, lalu ekstrak sehingga kita
akan memperoleh beberapa file berikut: Line_001.sgy, Line_001.SPS, Line001.RPS, Line_001.XPS,
dan Line_001.TXT. File dengan ektensi SPS dan RPS berisikan informasi sumber-penerima seperti
indeks (nomor), koordinat, elevasi, statik, dll. File XPS berisikan informasi hubungan sumber-

penerima (relational) dan TXT berisikan informasi tentang parameter survey. Berikut adalah isi dari
Line_001.TXT:

Tahap 3:
Untuk melakukan processing dengan Seismic Unix, terlebih dahulu kita melakukan konversi format
data seismik dari segy ke su.

segyread tape=Line_001.sgy verbose=1 endian=0 > Line_001.su

Pada perintah di atas, saya mendefiniskan endian=0 karena saya menggunakan mesin little endian
(Laptop/PC). Jika anda menggunakan workstation anda harus medefinisikan endian=1.

Tahap 4:
Analisa header data su dengan perintah
surange < Line_001.su

Sehingga diperoleh:

Dari informasi di atas terlihat


bahwa data seismik ini memiliki jumlah trace 71284, ep adalah shot number dari 32 sampai 282 = 251
shots, serta indeks trace dalam setiap shot tracf dari -1 sampai 282. Dengan kata lain jumlah trace
dalam setiap shot adalah 284.

Tahap 5:
Untuk mengevaluasi data yang kita miliki lakukan peritah berikut:

suwind < Line_001.su key=ep min=32 max=32 | suxwigb perc=80

Perintah di atas, kita memilih data dengan suwind untuk shot ke 32, lalu ditampilkan sebagai wiggle
dengan suxwigb dengan persentase amplitudo 80.

Gambar di bawah ini (kiri) adalah hasil dari perintah di atas, serta zoom in (kanan) dari trace-trace
awal. Terlihat bahwa 2 trace pertama adalah data source signature yang didefinisikan dengan tracf=-1
dan tracf=0.

Lakukanlah proses ini untuk beberapa tempat dengan ep berbeda. Kesimpulan yang saya peroleh
adalah semua shot memiliki 284 trace dengan 2 trace pertama sebagai source signature yang
ditanamkan pada setiap shot record.

Tahapan berikutnya

Seismic Processing with Seismic Unix - Part2


Lihat tahapan-tahapan sebelumnya

Tahap 6:
Pada tahapan ini, saya akan menghilangkan (kill), trace vibroseis dengan key=tracf -1 dan 0. Dari
surange, kita mengetahui bahwa rentang tracf dimulai dari -1,0,1,2,3...,282. Perintah berikut adalah
cara untuk tidak melibatkan trace vibroseis yang tertanam pada shot gather.

suwind < Line_001.su key=tracf min=1 max=282 > Line_001_kill_vibro.su

Coba tampilkan dengan perintah berikut lalu zoom in dengan meng-klik left button, tahan dan geser
untuk memastikan trace vibroseis telah hilang (untuk meng-unzoom, klik pada window xwigb).

suwind < Line_001_kill_vibro.su key=ep min=32 max=32 | suxwigb perc=80

Lalu saya ingin menampilkan shot 32 dalam bentuk image,

suwind < Line_001_kill_vibro.su key=ep min=32 max=32 | suximage perc=80

Dari gambar di atas terlihat sebuah rekaman yang masih penuh dengan noise seperti ground roll, air
blast, direct wave, coherent noise, trace yang tidak koheren (time shift), amplitudo yang tidak sama
antara

zona

dangkal

dan

dalam

(akibat geometrical

spreading),

Tahap

dll.

7:

Perintah berikut ini adalah cara untuk mengkompensasi penurunanamplitudo dengan AGC
(Automatic Gain Control). Perlu diingat bahwa AGC merupakan operasi trace by trace, bisa
digunakan hanya untuk interpretasi bukan untuk analisis AVO. Untuk analisis AVO sebaiknya
digunakan dB/sec gain setelah koreksi NMO.

sugain < Line_001_kill_vibro.su agc=1 wagc=0.2 > Line_001_kill_vibro_agc.su

Tampilkan:

suwind < Line_001_kill_vibro_agc.su key=ep min=32 max=32 | suximage perc=80

Gambar di atas adalah shot gather AGC

Tahapan berikutnya

Seismic Processing with Seismic Unix - Part3


Lihat tahapan sebelumnya

Tahap 8:
Sebagaimana yang kita perhatikan pada tahapan sebelumnya, shot gather yang kita miliki masih
mengandung berbagai macam noise, diantara noise yang paling dominan adalah ground roll.

Untuk mengeliminasi ground roll, pada tahapan ini kita akan melakukan F-K filtering. Dimana F-K
merupakan spectrum frekuensi (F) terhadap bilangan gelombang (K). Fungsi Seismic Unix untuk
melakuan F-K filtering adalah sudipfilt.

Sebelum melakukan F-K filtering, data yang kita miliki harus memiliki sampling spatial (d2) yang
pada hakikatnya merupakan jarak antara trace atau geophone interval (dalam hal ini 25 meter atau
0.025km).

sushw < Line_001_kill_vibro_agc.su key=d2 a=0.025 > Line_001_kill_vibro_agc_d2.su

Setelah memasukkan d2 terhadap trace header (perintah di atas), marilah kita melakukan test dengan
memilih shot gather 32 (ep=32).

suwind < Line_001_kill_vibro_agc_d2.su key=ep min=32 max=32 >


Line_001_kill_vibro_agc_d2_shot32.su

Didalam terminal ketiklah gedit & lalu copy-paste dan save kode berikut lalu berilah nama testfk

#!/bin/sh
slopes=-0.5,-0.3,0.3,0.5
amps=1,1,1,1
bias=0.0
dx=0.025
dt=0.002

sudipfilt < Line_001_kill_vibro_agc_d2_shot32.su dt=$dt dx=$dx \


slopes=$slopes amps=$amps bias=$bias |
suximage title="slope=$slopes amps=$amps bias=$bias" \
windowtitle="Shot 32" \
label1="Samples" label2="Trace" f1=1 d1=1 f2=1 d2=1 perc=80&

sudipfilt < Line_001_kill_vibro_agc_d2_shot32.su dt=$dt dx=$dx \


slopes=$slopes amps=$amps bias=$bias | suspecfk | suximage title="F-K Spectrum of Shot 32" \
windowtitle="F-K" label1="Frequency" label2="K" legend=1 cmap=hsv1 perc=97&

Lalu ketik pa da terminal linux sh testfk


Maka anda akan memperoleh gambar seperti di bawah ini. Data seismik sebelum F-K filter (kiri) dan
Spektrum F-K (kanan).

Klik untuk mem perbesar gambar.

Parameter utama dari operasi F-K


filtering adalah slopes, amps, bias. Slopes adalah kemiringan dari F-K spectrum, amps=1,1,1,1 (tidak
melakukan filter), amps=1,0,0,1 (reject filter), amps=0,1,1,0 (pass filter). dx adalah geophone interval
dalam km dan dt adalah time sampling interval dalam detik. Sedangkan bias adalah parameter
aliasing. Bias=0 artinya data yang kita miliki tidak memiliki aliasing. Coba anda lakukan test jika
bias=0,25 lalu lihat perbedaannya.

Gambar dibawah ini adalah hasil jika saya menggunakan:


slopes=-0.5,-0.3,0.3,0.5, amps=0,1,1,0, bias=0.0, dx=0.025, dt=0.002

Bandingkan shot gather diatas


(setelah F-K) dengan shot gather sebelumnya (sebelum F-K), perhatikan ground roll yang sudah
mulai

tereliminasi.

Gambar dibawah ini adalah jika saya memilih amps=1,0,0,1 (reject filter). Kita melihat bahwa inilah
noise

yang

kita

kehendaki

untuk

di-reject.

Untuk analisa F-K, anda bisa melakukan test dengan berbagai macam slopes katakanlah slopes=-1,0.5,0.5,1. Lihat hasilnya, lalu anda putuskan mana yang paling baik. Lakukanlah untuk beberapa
lokasiep, jika sudah memperoleh hasil yang terbaik dengan parameter tertentu, maka anda bisa
melakukan F-K filter untuk seluruh shot gather yang kita miliki dengan mengetikkan kode berikut
(buat satu baris).
sudipfilt < Line_001_kill_vibro_agc_d2.su dt=0.002 dx=0.025 slopes=-0.5,-0.3,0.3,0.5 amps=0,1,1,0
bias=0 > Line_001_kill_vibro_agc_d2_fk.su

Lihat berikutnya

Seismic Processing with Seismic Unix - Part4


Lihat tahapan sebelumnya

Tahap 9:
Setelah kita melakukan eliminasi groundroll dengan F-K filtering, pada tahapan ini kita akan
melakukan eliminasi noise-noise yang lainnya dengan menggunakan bandpass filter (sufilter).

Didalam bandpass filter terdapat empat parameter frekuensi yang harus kita tentukan f1,f2,f3 dan f4.
Pemilihan rentang frekuensi yang akan diloloskan merupakan hal yang sangat krusial, jangan sampai
proses ini menghilangkan data reflektor yang anda miliki. Untuk menghindari hal ini anda harus
memperhatikan spektrum frekuensi serta rekaman reflektor yang dilihat pada shot gather.

Didalam terminal linux, ketiklah gedit & lalu copy, paste dan save kode berikut lalu beri nama filter

#!/bin/sh

#memilih shot dengan ep=80


suwind < Line_001_kill_vibro_agc_d2_fk.su key=ep min=80 max=80 >
Line_001_kill_vibro_agc_d2_fk_ep80.su

#menampilkan shot dengan ep=80


suximage < Line_001_kill_vibro_agc_d2_fk_ep80.su perc=80 &

#memilih shot dengan ep=80 dan tracf 100-105


suwind < Line_001_kill_vibro_agc_d2_fk_ep80.su key=tracf min=100 max=105 >
Line_001_kill_vibro_agc_d2_fk_ep80_tracf100_105.su

#spectrum untuk shot dengan ep=80 dengan tracf 100-105


suspecfx < Line_001_kill_vibro_agc_d2_fk_ep80_tracf100_105.su | suxwigb &

#melakukan filter untuk shot dengan ep=80


sufilter < Line_001_kill_vibro_agc_d2_fk_ep80.su f=10,15,50,60 >
Line_001_kill_vibro_agc_d2_fk_ep80_flt.su

#menampilkan shot yang telah difilter


suximage < Line_001_kill_vibro_agc_d2_fk_ep80_flt.su perc=80 &

#memilih shot yang telah difilter dengan tracf 100-105


suwind < Line_001_kill_vibro_agc_d2_fk_ep80_flt.su key=tracf min=100 max=105 >
Line_001_kill_vibro_agc_d2_fk_ep80_flt_tracf100_105.su

#spectrum untuk shot dengan ep=80 dengan tracf 100-105 setelah filter
suspecfx < Line_001_kill_vibro_agc_d2_fk_ep80_flt_tracf100_105.su | suxwigb &

Lalu ketik sh filter sehingga kita memperoleh gambar berikut:

Gambar di atas adalah shot gather


dengan ep=80 (kiri) serta spektrum frekuensi untuk shot gather tersebut dengan tracf ke 100 sampai
105 (kanan). Perhatikan noise yang terdapat pada data, serta rentang frekuensi yang masih full
bandwidth dari 8 sampai 100Hz (sumbu vertikal pada gambar sebelah kanan adalah frekuensi dalam
Hz). Alasan saya memilih tracf ke 100 sampai 105 karena trace tersebut adalah mid offset, dari
surange pada tahapan-tahapan sebelumnya kita mengetahui bahwa tracf yang kita miliki dimulai dari
1

s/d

282.

Gambar di bawah ini adalah hasil setelah difilter dengan bandpass filter 10,15,50,60Hz, yang berarti
saya hanya meloloskan frekuensi dari 10 sampai 60Hz. Anda mungkin berargumen bahwa pemilihan
cut off frekuensi 10Hz sangat membahayakan data seismik yang kita miliki, akan tetapi saya beralasan
bahwa untuk kasus data ini, walaupun cut off 10Hz, reflektor yang saya miliki masih bisa
terselamatkan (lihat shot gather). Tentu saja sebelumnya saya melakukan test dengan berbagai
kombinasi frekuensi dari mulai 3,6,50,60Hz, 4,8,50,60Hz, 5,10,50,60Hz dan seterusnya.

Lakukanlah proses di atas untuk


beberapa lokasi ep, jika anda sudah memperoleh hasil yang paling baik, maka anda dapat
menerapkannya untuk seluruh data yang kita miliki dengan perintah sbb:

sufilter < Line_001_kill_vibro_agc_d2_fk.su f=10,15,50,60 > Line_001_kill_vibro_agc_d2_fk_flt.su

Tahap

10:

Pada tahapan ini kita akan menerapkan proses deconvolusi yang bertujuan untuk meningkatkan
resolusi temporal dari reflektor serta menekan multiple. Namun sebelum melakukan deconvolusi,
saya akan menerapkan autocorrelation terlebih dahulu yang sangat membantu mempelajari perilaku
multiple.

Kode di bawah ini adalah kode untuk melakukan test autocorrelation dan deconvolusi. Parameter
utama yang harus kita perhatikan adalah minlag dan maxlag, sedangkan ntout adalah jumlah sampel
hasil autocorrelasi yang akan dihasilkan. Anda bisa melakukan test dengan pnoise yang berbeda.

Pada terminal linux ketik gedit, copy paste kode berikut lalu save dengan nama decon

#!/bin/sh

minlag=0.02
maxlag=0.1
pnoise=0.001
ntout=120

#memilih data dengan ep=150


suwind < Line_001_kill_vibro_agc_d2_fk_flt.su key=ep min=150 max=150 >
Line_001_kill_vibro_agc_d2_fk_flt_ep150.su

#menampilkan data dengan ep=180


suximage < Line_001_kill_vibro_agc_d2_fk_flt_ep150.su perc=80 &

#melakukan autocorrelation dan menampilkan autocorrelation-nya


suacor < Line_001_kill_vibro_agc_d2_fk_flt_ep150.su suacor ntout=$ntout | suximage perc=80 &

#melakukan deconvolusi
supef < Line_001_kill_vibro_agc_d2_fk_flt_ep150.su >
Line_001_kill_vibro_agc_d2_fk_flt_ep150_decon.su minlag=$minlag maxlag=$maxlag pnoise=$pnoise

#menampilkan hasil deconvolusi


suximage < Line_001_kill_vibro_agc_d2_fk_flt_ep150_decon.su perc=80 &

#melakukan autocorrelation dari data yang telah di-deconvolusi


suacor < Line_001_kill_vibro_agc_d2_fk_flt_ep150_decon.su suacor ntout=$ntout | suximage perc=80
&

Lalu pada terminal linux ketik sh decon


Gambar dibawah ini adalah gather sebelum deconvolusi (kiri) serta autocorrelation (kanan)

Untuk menentukan minlag dan


maxlag, lihatlah penampang autocorrelation. minlag dihitung dari peak amplitude sampai zero
crosing yang kedua. Hasil pengamatan saya menunjukkan bahwa peak amplitude data ini adalah

sekitar 0.12s dan zero crossing yang kedua sekitar 0.14s, dengan demikian minlag=0.14-0.12=0.02,
sedangkan maxlag 0.1 dipilih karena reverberasi masih terulang sampai sekitar 0.22s. sehingga
maxlag=0.22-0.12=0.1s.

Gambar di bawah ini adalah hasil deconvolusi serta autocorrelation-nya. Perhatikan bentuk wavelet
setelah deconvolusi yang lebih ramping (meningkat resolusi temporal), serta reverberasi yang sudah
tereliminasi. Hal ini bisa kita lihat baik pada shot gather walaupun pada autocorrelation.

Setelah anda puas dengan hasil


test, maka terapkanlah deconvolusi untuk seluruh data, dengan perintah sbb (satu baris):
supef < Line_001_kill_vibro_agc_d2_fk_flt.su > Line_001_kill_vibro_agc_d2_fk_flt_decon.su
minlag=0.02 maxlag=0.1 pnoise=0.001

Tahap berikutnya

Seismic Processing with Seismic Unix - Part5


Lihat tahapan sebelumnya

Tahap 11:

Pada tahapan ini, saya akan menunjukkan bagaimana caranya melakukan edit geometry. Edit
geometry sangat penting dilakukan karena bermanfaat untuk sorting dari shot gather ke CMP gather,
koreksi statik, regularisasi bin, dll.

Jika kita melakukan surange, berikut adalah key yang kita miliki:

Dari hasil surange di atas terlihat


bahwa data tersebut belum memiliki informasi geometri seperti koordinat sumber, penerima, offset,
cdp,

dll.

Marilah kita lihat kembali 3 file geometri untuk data ini i.e. Line_001.SPS (sumber), Line_001.RPS
(receiver),

Line_001.XPS

(relational).

Jika kita membuka file Line_001.SPS dengan gedit, maka akan diperoleh informasi sbb:

Di dalam file Line_001.SPS, baris


ke 1 s/d 20 merupakan header yang menjelaskan lokasi kolom (COLS) untuk setiap parameter
sumber: point number (nomor sumber), Static Correction, Map grid easting (X coordinate), Map grid
northing

(Y

coordinate),

Surface

Elevation,

dll.

Data ini memiliki point number (shot number) 701, 703, 705, ...1201. Informasi 1V1 bukanlah bagian
dari point number (lihat kembali header, COLS dari point number adalah 18-25), dengan gedit
informasi posisi baris (Ln) dan kolom (Col) bisa dilihat di pojok kanan bawah. Dari sini kita
mengetahui bahwa jumlah sumber (shot) adalah (1201-701)/2+1 = 251 shots. Koreksi statik untuk

shot pertama dan seterusnya: -50, -50, -51, dst. Koordinat X shot pertama: 688081.8, koordinat Y
shot pertama: 3838302.1, dan elevasi shot pertama: 46.0.

Demikian juga dengan file Line_001.RPS (informasi receiver):

Point number (receiver number) adalah 561, 562, ..., 1342. Koreksi statik untuk receiver 561: -48,
Koordinat X untuk receiver 561:684590.2, koordinat Y receiver 561:3837867.6, dan elevasi receiver
561:41.0.

Sedangkan file Line_001.XPS, memuat informasi hubungan sumber penerima:

Perhatikan

informasi

di

atas

dengan

sebaik-baiknya:

Point Number (COLS 30-37): 701, 703, ...1201 merupakan penomoran untuk shot pertama, kedua,
dst.

From
To

receiver
receiver

untuk
untuk

shot

701:

561

shot

701:842

(receiver
(receiver

pertama
terakhir

untuk
untuk

shot
shot

701)
701)

From Channel : 1 dan To Channel: 282 untuk semua shot adalah sama artinya setiap shot memiliki
jumlah

trace

282.

Setelah kita memahami konfigurasi file di atas, saya akan membuat sebuah matrix dengan jumlah
kolom 10 i.e. [sx,xy,selev,sstat,gx,gy,gelev,gstat,cdp,offset] dengan jumlah baris sebanyak jumlah trace
yang

saya

miliki

(70782).

Dengan menggunakan gedit copy-lah kode berikut, save, lalu beri nama geom

#!/bin/sh
# skip header dengan (NR>20), remove 1V1
# ekstrak source number (col2), sx (col8),sy (col9), selev (col10),sstat (col3)
awk ' gsub(/1V1/,"") {if (NR > 20) {print $2,$8, $9, $10,$3 }}' Line_001.SPS > sps.txt

# skip header dengan (NR>20), remove 1G1


# ekstrak receiver number (col2), gx (col8),gy (col9), gelev (col10),gstat (col3)
awk ' gsub(/1G1/,"") {if (NR > 20) {print $2,$8, $9, $10,$3 }}' Line_001.RPS > rps.txt

Pada terminal linux ketik sh geom

Lalu dengan gedit copy-lah kode berikut, save, lalu beri namageomoctave.m

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%
clear; clc
load sps.txt
load rps.txt

% Ingat no of shots: 251,no of receiver in each shot: 282,total number of traces is 251*282=70782

%%%menyusun matrix sps untuk seluruh trace (70782)%%%%%%


for i=1:251
sps_for_traces_in_each_shot{i}=repmat(sps(i,:),282,1);
end
sps_all_traces=cell2mat(sps_for_traces_in_each_shot');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%

%%%menyusun matrix rps untuk seluruh trace (70782)%%%%%%


for i=1:251
rps_for_traces_in_each_shot{i}=rps([(i*2)-1:281+(i*2)-1]',:);
end
rps_all_traces=cell2mat(rps_for_traces_in_each_shot');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%

%%%% menghitung offset


sx=sps_all_traces(:,2);
sy=sps_all_traces(:,3);
selev=sps_all_traces(:,4);
sstat=sps_all_traces(:,5);

gx=rps_all_traces(:,2);
gy=rps_all_traces(:,3);
gelev=rps_all_traces(:,4);
gstat=rps_all_traces(:,5);
ox=gx-sx;
oy=gy-sy;
offset=sqrt(ox.^2+oy.^2);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%

%%%menghitung cdp untuk masing-masing trace


%%%dikarenakan interval geophone 25m dan interval sumber 50m, maka:
%%%cdp untuk shot pertama adalah 1 s/d 282
%%%cdp untuk shot kedua adalah 5 s/d 286

%%%cdp untuk shot ketiga adalah 9 s/d 290 dst....(lihat ilustrasi stacking diagram dibawah untuk
memahaminya)
for i=1:251
cdp_each_shot{i}=[(4*i-3):281+(4*i-3)]';
end
cdp_all_traces=cell2mat(cdp_each_shot');

geom_header=[sx,sy,selev,sstat,gx,gy,gelev,gstat,cdp_all_traces,offset];

save -ascii geom_header.txt geom_header

%%%%plot koordinat sumber dan penerima


plot(sx,sy,'r*'); hold on
plot(gx,gy,'b^')
%%%%akhir dari kode

Lalu ketik octave untuk memasuki terminal octave. Jika belum memiliki octave (octave adalah open
source yang mirip dengan Matlab), anda bisa menginstall dengan mengetik sudo apt-get install
octave3.2

Pada terminal octave ketik geomoctave untuk mengeksekusi kode di atas sehingga kita akan memiliki
matriks geom_header.txt dan plot koordinat sumber dan penerima.

Keluarlah dari octave dengan menekan ctrl+z

Gambar dibawah ini adalah ilustrasi stacking chart untuk interval sumber 2X interval receiver.
Perhatikan CDP yang pertama untuk shot kedua terletak pada CDP ke 5 dari shot pertama, CDP yang
pertama untuk shot ketiga terletak pada CDP ke 9 untuk shot kedua, dst.

courtesy freeusp.org

Gambar di bawah ini adalah koordinat sumber (merah) dan penerima (biru). Perhatikan bahwa posisi
sumber dan penerima tidak benar-benar berada dalam satu garis lurus, hal demikian terjadi karena
kondisi medan yang bersangkutan. Jadi, walaupun secara teoritik kita menghendaki group interval
25m dan shot interval 50m, tetapi pada kenyataannya sangat sulit untuk diwujudkan.

Selanjutnya, ubahlah format dari


geom_header.txt menjadi binary dengan mengetikkan:

a2b < geom_header.txt n1=10 > geom_header.bin

a2b adalah perintah untuk mengubah format ascii ke binary, n1=10 adalah jumlah kolom dalam
matriks geom_header.txt

Check-lah dengan mengetikkan ls -l, lihat jika ukuran file geom_header.bin adalah 2831280 byte atau
4*10(kolom)*70782(jumlah baris = jumlah trace).

Setelah itu anda siap untuk menuliskan geom_header.bin ke dalam trace header dari data anda
dengan perintah di bawah ini (buat dalam satu baris):

sushw < Line_001_kill_vibro_agc_d2_fk_flt_decon.su infile=geom_header.bin


key=sx,sy,selev,sstat,gx,gy,gelev,gstat,cdp,offset > Line_001_kill_vibro_agc_d2_fk_flt_decon_geom.su

Dengan perintah

surange < Line_001_kill_vibro_agc_d2_fk_flt_decon_geom.su

Perhatikan bahwa informasi geometry dan cdp sudah berada dalam trace header data seismik anda.

Untuk keperluan sorting dari shot gather ke CMP gather, dua informasi penting yang harus dimiliki
adalah

cdp

dan

offset.

Data ini memiliki cdp: 1 1282 (1 - 1282), jika angka yang berada di luar kurung sama dengan yang
berada di dalam kurung maka penomoran cdp data ini benar, sedangkan jika kita lihat nilai offset: 12
3525 (3518 - 3509), rentang angkanya berbeda. Hal ini terjadi karena angka offset yang exact sangat
sulit diperoleh akibat medan akuisi (lihat plot x-y coordinate sebelumnya). Oleh mengantisipasi hal
ini,

saya

akan

melakukan

'regularisasi'

offset.

Kita mengetahui dari shot gather bahwa geometri akuisisi data tersebut adalah split-spread dengan
interval geophone = 25m dan jarak dari sumber ke geophone pertama=25m.

Ketik gedit copy, paste kode di bawah ini dan save dengan nama regoff.m

clear; clc
%%%offset regularization...
right=[25:25:3525]';
left=[-3525:25:-25]';
offset_each_shot=[left;right];
offset_all_shot=repmat(offset_each_shot,251,1);

%%%mengganti offset pada geom_header.txt dengan offset yang baru


load geom_header.txt
geom_header_reg_offset=[geom_header(:,[1:9]),offset_all_shot];
save -ascii geom_header_reg_offset.txt geom_header_reg_offset
%%%%%

Ketik octave, lalu pada terminal octave ketik regoff

Keluar dari octave dengan ctrl+z, lalu pada terminal linux ketik:

a2b < geom_header_reg_offset.txt n1=10 > geom_header.bin

Ulangi perintah sushw di atas, lalu dengan surange diperoleh:

Dari hasil surange di atas, terlihat bahwa cdp dan offset memiliki nilai yang sama antara di luar
kurung dan dalam kurung.

Tahap 12:
Pada tahap ini, kita akan melakukan sorting dari shot ke cmp gather dengan perintah susort berikut
(buat dalam satu baris):

susort cdp offset <Line_001_kill_vibro_agc_d2_fk_flt_decon_geom.su >


Line_001_kill_vibro_agc_d2_fk_flt_decon_geom_cdp.su

Lalu pilihlah cdp tertentu dan tampilkan:

suwind < Line_001_kill_vibro_agc_d2_fk_flt_decon_geom_cdp.su key=cdp min=1000 max=1002 |


suxwigb perc=95

Sehingga diperoleh gambar sbb (klik untuk memperbesar):

Tahap berikutnya

Seismic Processing with Seismic Unix - Part6


Lihat tahapan sebelumnya
Tahap

13:

Pada tahap ini saya akan menunjukkan bagaimana caranya melakukan koreksi NMO dan membuat
Brute

Stack.

Pada Seismic Unix, koreksi NMO dilakukan dengan perintah sunmo. Informasi penting untuk sunmo

yang

harus

kita

berikan

adalah

pasangan

kecepatan(m/s)

dan

waktu(s).

Untuk kasus data ini, saya melakukan trial and error untuk mencari 3 pasangan waktu dan nilai
velocity yang paling optimal (yang ditentukan dengan reflektor yang flat). Test ini saya lakukan pada
CMP 1000 s/d 1002 (lihat tahapan sebelumnya untuk melihat CMP yang belum dikoreksi NMO).
Pasangan kecepatan dan waktu yang diperoleh adalah vnmo=1700,2750,3000 dan tnmo=0.1,1.0,2.0

Berikut adalah kode untuk koreksi NMO (buat dalam satu baris):

sunmo vnmo=1700,2750,3000 tnmo=0.1,1.0,2.0 <


Line_001_kill_vibro_agc_d2_fk_flt_decon_geom_cdp.su >
Line_001_kill_vibro_agc_d2_fk_flt_decon_geom_cdp_nmo_v1.su

Lalu saya menampilkan hasilnya:

suwind < Line_001_kill_vibro_agc_d2_fk_flt_decon_geom_cdp_nmo_v1.su key=cdp min=1000


max=1002 | suxwigb perc=95

Sehingga diperoleh gambar sbb (klik untuk memperbesar):

Pada gambar di atas terlihat


bahwa reflektor pada CMP 1000-1002 sudah terlihat cukup flat. Disamping itu proses muting
nampaknya telah dilakukan secara otomatis bersamaan dengan nmo. Muting tersebut dilakukan
untuk event yang mengalami NMO strech yang signifikan.

Tahap 14:

Setelah kita cukup puas dengan hasil NMO, maka kita siap untuk memproduksi brute stack dengan
perintah:

sustack < Line_001_kill_vibro_agc_d2_fk_flt_decon_geom_cdp_nmo_v1.su > Line001_brute_stack.su

Lalu saya tampilkan dengan:

suximage < Line001_brute_stack.su cmap=hsv17 perc=90

Sehingga diperoleh penampang seismik dibawah ini (klik untuk memperbesar):

Untuk mengubah skala warna pada brute stack, kita bisa melakukannya dengan mengubah parameter
cmap. Berikut adalah contoh jika saya menggunakan cmap=hsv4.

Tahap berikutnya

Seismic Processing with Seismic Unix - Part7


Lihat Tahap sebelumnya

Tahap 15:
Pada tahapan ini, saya akan menunjukkan bagaimana melakukan velocity analysis dengan Interactive
Velocity

Analysis.

Lihat

Lakukan

juga

pemilihan

contoh

setiap

penggunaan

50

CMP

tool

pada

data

tersebut disini.

input

berikut:

Line_001_kill_vibro_agc_d2_fk_flt_decon_geom_cdp.su, yang kita miliki sebelumnya.

suwind < Line_001_kill_vibro_agc_d2_fk_flt_decon_geom_cdp.su key=cdp min=200 max=1000 j=50 >


inva_every_50cmp.su

Jika proses picking telah dilakukan untuk seluruh cmp yang dimiliki, maka secara otomatis akan
terbentuk file inva_every_50cmp.par

Tahap 16:
Setelah diperoleh model kecepatan, maka kita siap untuk melakukan koreksi NMO untuk seluruh
CMP.

sunmo < Line_001_kill_vibro_agc_d2_fk_flt_decon_geom_cdp.su >


Line_001_kill_vibro_agc_d2_fk_flt_decon_geom_cdp_nmo_v2.su par=inva_every_50cmp.par

Dengan output
Line_001_kill_vibro_agc_d2_fk_flt_decon_geom_cdp_nmo_v2.su

Setelah itu lakukan proses stacking:


sustack < Line_001_kill_vibro_agc_d2_fk_flt_decon_geom_cdp_nmo_v2.su > Line001_stack_vel2.su

Lalu tampilkan dengan perintah:

suximage

<

Line001_stack_vel2.su

cmap=hsv17

perc=90

title='Setelah

Velocity

Picking'

&

Gambar di atas adalah stack


dengan menggunakan velocity analysis yang saya pick. Bandingkan hasilnya dengan brute stack yang
dihasilkan pada tahapan sebelumnya (gambar di bawah):

Berikut

adalah

animasi

perbandingan antara brute stack (kecepatan tunggal) dengan stack dari velocity pick (click untuk
memperbesar).

Tahap berikutnya

Seismic Processing with Seismic Unix - Part8


Lihat tahap sebelumnya
Pada bagian ini, saya akan menunjukkan bagaimana caranya melakukan elevation statics dan residual
statics

untuk

data

seismik

yang

kita

miliki.

Elevation statics umumnya dilakukan sebelum koreksi NMO pada tahap 13. Akan tetapi untuk
melihat efek elevation statics terhadap citra seismik, saya lakukan setelah memperoleh citra yang
terbaik. Hal ini sah-sah saja untuk dilakukan, mengingat kita masih memiliki peluang untuk terus
memperbaiki citra tersebut diantaranya dengan analisa kecepatan pada interval CMP yang lebih
rapat,

analisa

pada

super

gather,

dll.

Informasi yang harus kita miliki untuk melakukan elevation statics adalah elevasi sumber-penerima
relatif terhadap datum serta kecepatan sedimen di bawah sumber-penerima sehingga diperoleh waktu
tempuh

gelombang

dari

elevasi

yang

bersangkutan

terhadap

datum.

Untuk data ini, waktu tempuh sumber dan penerima (elevation statics) telah dilakukan dan sudah
diselipkan ke dalam trace header. Sehingga, jika kita melakukan surange diperoleh hasil sbb:

Dari hasil surange di atas, terlihat elevation statics dari sumber (selev) dan penerima (gelev) telah
berada

pada

trace

header.

Jika kita tidak memiliki informasi gelev dan selev, maka kita harus menghitungnya melalui first break
picking dari gelombang refraksi.

Elevation statics dilakukan dengan perintah:

sustatic < Line_001_kill_vibro_agc_d2_fk_flt_decon_geom.su >


Line_001_kill_vibro_agc_d2_fk_flt_decon_geom_elev_stat.su hdrs=1

sustatic adalah perintah untuk elevation static, hdrs=1 menunjukkan bahwa data statics berada pada
trace header. Untuk mempelajari options atau parameter yang digunakan pada sustatic, ketiklah
sustatic pada terminal linux.

Gambar dibawah ini adalah shot gather sebelum elevation static:

Gambar dibawah ini adalah shot


gather setelah elevation statics yang ditampilkan dengan perintah:

suwind < Line_001_kill_vibro_agc_d2_fk_flt_decon_geom_elev_stat.su key=ep min=32 max=32 |

suxwigb perc=80 &

Perbandingannya (klik untuk memperbesar):

Gambar dibawah ini menunjukkan stack sebelum elevation statics yang kita peroleh sebelumnya:

Gambar di bawah ini adalah stack


setelah elevation statics dengan dengan mengunakan model kecepatan dari analisa kecepatan
sebelumnya. Lakukan proses yang sama (Tahap 16), dengan mengganti data input dan output.

Saya melakukan sorting dari shot ke cmp dengan perintah:

susort cdp offset < Line_001_kill_vibro_agc_d2_fk_flt_decon_geom_elev_stat.su >


Line_001_kill_vibro_agc_d2_fk_flt_decon_geom_cdp_elev.su

Lalu, pada nmo.sh:


Input: Line_001_kill_vibro_agc_d2_fk_flt_decon_geom_cdp_elev.su
Output: Line_001_kill_vibro_agc_d2_fk_flt_decon_geom_cdp_elev_nmo_v2.su

Run dengan mengetikkan sh nmo.sh

Lakukan stacking:
sustack < Line_001_kill_vibro_agc_d2_fk_flt_decon_geom_cdp_elev_nmo_v2.su >
Line001_stack_vel2_elev.su

Tampilkan:
suximage < Line001_stack_vel2_elev.su cmap=hsv17 perc=90 title='After Elevation Statics' &

Berikut perbandingannya:

Tahap 17:
Pada Seismic Unix, residual static dilakukan dengan perintah suresstat dimana metoda yang
digunakan mengacu pada Ronen dan Claerbout, Geophysics 50, 2759-2767 (1985).
Berbeda dengan elevation statics, residual statics dilakukan setelah koreksi NMO, akan tetapi harus
dilakukan pada domain shot gather dengan key=fldr.

Berikut adalah tahapan untuk melakukan residual statics:

Lakukan sorting:
susort < Line_001_kill_vibro_agc_d2_fk_flt_decon_geom_cdp_elev_nmo_v2.su >
Line_001_kill_vibro_agc_d2_fk_flt_decon_geom_cdp_elev_nmo_v2_fldr.su fldr offset

Hitung residual statics:


suresstat < Line_001_kill_vibro_agc_d2_fk_flt_decon_geom_cdp_elev_nmo_v2_fldr.su ssol=sstats
rsol=rstats ntraces=70782 ntpick=50 niter=5 nshot=481 nr=282 nc=70782 sfold=282 rfold=282
cfold=284

ntraces=70782 (jumlah seluruh trace pada data)

ntpick=50 (banyaknya sample maksimum untuk melakuan shifting dalam korelasi) niter=5
(jumlah iterasi, pada mesin 32bit dengan Intel Core Duo, 1.5GB Mem memerlukan waktu 1215 menit)

nshot=481 (fldr maksimum, lakukan surange untuk melihat semua key)

nr=282 (jumlah receiver maksimum pada shot)

nc=70782 (harus sama dengan banyaknya seluruh trace) sfold=282 (harus sama dengan nr)

rfold=282 (maksimum ep)

cfold=284 (maksimum cdpt)

Perintah di atas akan menghasilkan dua file i.e. sstats and rstats yang masing-masing berisikan source
and receiver statics. Terapkankanlah statics tersebut dengan perintah:

sustatic < Line_001_kill_vibro_agc_d2_fk_flt_decon_geom_cdp_elev_nmo_v2.su >


Line_001_kill_vibro_agc_d2_fk_flt_decon_geom_cdp_elev_nmo_v2_rstat.su \
hdrs=3 sou_file=sstats rec_file=rstats ns=481 nr=1282

hdrs=3 (Angka 3 memerinta sustatic untuk membaca statics dari file)

sou_file=sstats (file source statics)

rec_file=rstats (file receiver statics)

ns=481 (harus sama dengan nshot pada command sebelumnya)

nr=1282 (banyaknya cdp didalam stack data)

Gambar di bawah ini adalah stack sebelum elevation dan residual statics.

Gambar di bawah ini adalah


penampang setelah elevation dan residual statics.
Lakukan perintah-perintah sbb:

Stacking:
sustack < Line_001_kill_vibro_agc_d2_fk_flt_decon_geom_cdp_elev_nmo_v2_rstat.su >
Line001_stack_vel2_elev_rstat.su

Dikarenakan kedua koreksi statics tersebut mengakibatkan time shifting, maka untuk kenyamanan
dalam membandingkan hasilnya, saya lakukan shiting dengan perintah:

suresamp < Line001_stack_vel2_elev_rstat.su > Line001_stack_vel2_elev_rstat_shift.su ns=1501


dt=0.002 tmin=0.25

ns=1501 (banyaknya sample)

dt=0.002 (samping interval dalam detik)

tmin=0.25 (di shifting ke atas 0.25 detik)

Tampilkan:
suximage < Line001_stack_vel2_elev_rstat_shift.su cmap=hsv17 perc=90 title='After Elevation and

Residual Statics' &

Dan perbandingannya:

Dari perbandingan di atas, terlihat bahwa residual statics masih belum memberikan hasil yang
optimal, walaupun di beberapa tempat memberikan hasil yang lebih baik.

Anda masih bisa memperbaiki hasilnya dengan melakukan perubahan dari parameter-parameter
yang saya pilih sebelumnya.

Tahap berikutnya
Tips untuk membuat animasi GIF dan menampilkannya pada blogspot:
1.

Install imagemagick untuk mengkonversi png ke gif format,sudo apt-get install


imagemagick (saya perlu ini karena hasil screen capture saya berupa png)

2. Pada folder dimana file-file png berada ketik: for file in *.png; do echo "convert $file $
(basename $file .png).gif"; done
3. Copy semua print out dari tahap 2 lalu paste pada terminal linux (print outnya akan
seperti: convert filename.png finename.gif)
4. Install gifsicle untuk menghasilkan animasi gif: sudo apt-get install gifsicle
5.

Contoh perintah untuk menganimasi dua file gif: gifsicle --delay 200 --loop=1000 stack1.gif
stack2.gif > anim.gif

6. Buat account photobucket http://photobucket.com/


7.

Upload anim.gif

8. Pada photobucket, double clicks gambar anim.gif


9. Click HTML code (di sebelah kanan anim.gif, dalam 'Share this photo' box)
10. Masuk ke blogspot, new post in HTML Mode lalu paste html code dari tahap 9

Seismic Processing with Seismic Unix - Part9


Tahap sebelumnya

Tahap 18:
Pada tahapan ini, saya akan menunjukkan bagaimana melakukan PoSTM (Post Stack Time Migration)
dengan

menggunakan

Seismic

Unix.

Seismic Unix menyediakan fungsi migrasi dengan menggunakan beberapa metodologi diantaranya
Stolt Migration, Gazdag atau Phase-Shift Migration, Claerbout's Migration, dll. Teknik-teknik migrasi
tersebut

memiliki

kelebihan

dan

kekurangannya

masing-masing.

Saya akan menerapkan PoSTM pada data telah distack dengan menggunakan velocity analysis dan
juga telah mengalami koreksi statik. Saya memilih Metoda Stolt, karena metoda ini sangat cepat dan
cukup robust.

Sebelumnya, saya akan menerapkan mute dan tapering (walaupun pada sustolt sendiri diterapkan
tapering) sehingga diperoleh ujung lintasan kiri, kanan dan atas yang lebih gradual. Hal ini penting
dilakukan karena perbedaan amplitudo yang tiba-tiba akan menghasilkan migration artifacts.

Setelah itu migrasi diterapkan dengan menggunakan kecepatan RMS (yang saya ambil dari CMP ke
1000) dari hasil velocity analysis sebelumnya.

Berikut ini adalah kode Bourne Shell untuk melakukan mute, menampilkan stack sebelum migrasi,
melakukan Stolt Migration dan sekaligus menampilkan hasilnya:

#!/bin/sh

sumute < Line001_stack_vel2_elev_rstat.su key=tracl xmute=1,150,1132,1132 tmute=3.0,0.2,0.2,3.0


ntaper=50 > Line001_stack_vel2_elev_rstat_mute.su

suximage < Line001_stack_vel2_elev_rstat_mute.su key=cdp perc=90 title='Before Stolt Migration' &

time=0.0187891,0.494781,0.914405,1.37787,1.94781,2.90605
vels=1992.35,2211.92,2488.77,2765.61,2975.64,3319.31

sustolt < Line001_stack_vel2_elev_rstat_mute.su \


cdpmin=1 cdpmax=1282 dxcdp=50 \
tmig=$time vmig=$vels \
smig=0.6 vscale=1 lstaper=50 lbtaper=50 | suximage title="After Stolt Migration" key=cdp min=100
max=1100 perc=90 verbose=0 &

exit

Copy-lah code di atas dengan menggunakan text editor (vi, pico, gedit, atau nedit) lalu save dengan
nama tertentu katakanlah stoltmig. Lalu ketik sh stoltmig
Berikut adalah stack sebelum migrasi (untuk mengubah skala warna, tekan hurup r pada ximage yang
aktif, untuk mengeksplorasi lebih jauh ketik ximage pada terminal linux).

Setelah Migrasi:

Animasi (klik untuk


memperbesar)

Anda mungkin juga menyukai