1. ALGORITMA
Secara umum Band Limited Impedance Inversion (BLIMP) merupakan salah satu metode inversi yang
menutupi sifat data seismik yang limited frequency (~ 10-80 Hz) dengan data low ( ~10 Hz) frequency
dari Impedance log. Ini dapat digunakan untuk membaliksan data seismik menggunakan data sumur,
atau beberapa fungsi impedansi yang diketahui, untuk menyediakan data frekuensi rendah, umum
digunakan pada metoda akuisisi, yang diperlukan untuk proses inversi. Algoritmanya adalah sebagai
berikut (Ferguson & Margrave, 1996),
1. Compute the linear trend of the impedance estimate and subtract it (this reduces edge effects
during subsequent frequency domain operations).
2. Compute the Fourier spectra of (1).
3. Apply a band-limited integration filter to each seismic trace and exponentiate the result.
4. Compute the Fourier spectra of (3).
5. Determine a scalar to match the mean power of (4) and (2) over the seismic signal band.
6. Multiply the spectra of (4) by the scalar from (5).
7. Low-pass filter (2) and add to (6).
8. Inverse Fourier transform (7).
9. Add the low-frequency trend from (1) to (7)
The required filters in steps (3), (5) and (7) are designed using the same user
specified Gaussian rolloff at high and low frequencies.
DATA AWAL
Sebagi data awal untuk melakukan proses BLIMP dibutuhkan data impedansi akustik dan data
seismik. Untuk kedua data ini, saya membuatnya secara sintetik. Berikut beberapa parameter yang
digunakan untuk men-generate data awal dan juga dalam proses me-run program BLIMP ini,
Data impedansi memakai TWT maksimal 1 s dan trend lnier dengan persamaan y=x*500 + 3500.
Besar nilai dan trend impedansi mencoba merefer pada litologi wet sand (dari Bourbie, Coussy,
and Zinszner, Acoustic of Porous Media, Gulf publishing).
Data seismik memakai mother wavelet jenis Ricket
Kedua data sintetik impedansi akustik dan juga sesimik di-generate dengan menggunakan fungsi
random dengan sampling rate 5 ms 200 data
Frekuensi sampling 200 Hz
Faktor skalar λ=2/ϒ dengan ϒ adalah faktor konversi
KODE MATLAB
Berikut kode matlab yang digunakan untuk mengeksekusi program Band-limited Impedance
Inversion sesuai dengan algoritma diatas,
%%% TUGAS UAS SEISMIK INVERSI RESRVOIR
%%% NAMA: FAJAR NUGRAHA PERDANA
%%% NIM: 12309023
%%% TANGGAL: 06 MEI 2013
%%% BAND LIMITED IMPEDANCE INVERSION
clc,clear all
%%% Membuat data sintetik impedansi akustik
TWT=(1:5:1000)/1000; % dalam second
2. 2
ndata=length(TWT);
AI_awal=400*ones(1,200); % ref impedansi wet sand
Q1=AI_awal(1:50)+200.*randn(1,50);
Q2=AI_awal(51:100)+(50.*randn(1,50));
Q3=AI_awal(101:150)+(100.*randn(1,50));
Q4=AI_awal(151:200)+(250.*randn(1,50));
AI_N=[Q1 Q2 Q3 Q4]; % matrix log - trend
trend=TWT*500+3500;
AI=AI_N+trend; % data sintetik log impedance
figure (9)
plot(TWT,AI)
title('Log Impedance')
ylabel('Acoustic Impedance')
xlabel('TWT (s)')
%%% Membuat data seismik sintetik
% Membuat Ricket wavelet
var=0.5; tmin=-10; tmax=10; dt=0.1;
t=(tmin:dt:tmax);
cakra=2 / sqrt(3*var)*pi^0.25;
bobby=1 - ((t.^2)/(var.^2));
yudha=exp((-t.^2)/(2*var.^2));
ric=cakra*bobby.*yudha;
figure(10)
plot(t,ric,'-r','LineWidth',2)
title('Ricker (Mexicanhat) Wavelet')
xlim([tmin tmax]); ylim([-1.5 2.5])
grid(gca,'minor')
% Membuat Koefisien refleksi
k=length(AI);
for i=1:(k-1);
RC(i)=(AI(i+1)-AI(i))/(AI(i+1)+AI(i));
end
RC=[0 RC];
% Membuat data seismik sintetik
seis_sin=conv(RC,ric); % konvolusi
seis_sin(length(seis_sin)-100:length(seis_sin))=[];
seis_sin(1:100-1)=[];
% Plot Imp, RC dan sintetik seismik
figure(11)
subplot(1,3,1)
plot(AI,TWT)
title('Log Impedance')
xlabel('Acoustic Impedance')
xlim([3000 5500])
ylabel('TWT (s)')
set(gca,'YDir','reverse')
subplot(1,3,2)
plot(RC,TWT)
title('Reflection Coefficient')
3. 3
xlabel('RC')
ylabel('TWT (s)')
set(gca,'YDir','reverse')
subplot(1,3,3)
plot(seis_sin,TWT)
title('Synthetic Seismic')
xlabel('Amplitude')
ylabel('TWT (s)')
set(gca,'YDir','reverse')
%%% STEP 1
% Compute the linear trend of the impedance estimate and subtract it (this reduces edge effects
during subsequent frequency domain operations).
reg=polyfit(TWT,AI,1); % Linier
trend_AI=polyval(reg,TWT); % Membuat nilai trend
figure(12)
subplot(1,3,1)
plot(AI,TWT)
title('Log Impedance')
xlabel('Acoustic Impedance')
xlim([3000 5500])
ylabel('TWT (s)')
set(gca,'YDir','reverse')
subplot(1,3,2)
plot(trend_AI,TWT,'r','LineWidth',2)
title('Linear Impedance Trend')
xlabel('Acoustic Impedance')
xlim([3000 5500])
ylabel('TWT (s)')
set(gca,'YDir','reverse')
% Log Impedance - Trend
IMP_Trend=AI-trend_AI;
subplot(1,3,3)
plot(IMP_Trend,TWT)
title('Log Impedance - Trend')
xlabel('Acoustic Impedance')
ylabel('TWT (s)')
set(gca,'YDir','reverse')
%%% STEP 2
% Compute the Fourier spectra of (1)
% Set parameter awal untuk Spectral Analysis dengan FFT
time=TWT; % Waktu
sampfreq=200; % Frequency sampling
fr=sampfreq*((0:ndata)/ndata); % Range frekuensi
% Membuat log data hasil FFT
A=fft(IMP_Trend,ndata); A=[A 0]; % FFT to freq domain
4. 4
B=A.*conj(A); % Magnitude
figure (13)
plot(fr(1:ndata +1),B(1:ndata +1)); % Menampilkan dengan fc
fill(fr(1:ndata +1),B(1:ndata +1),'b','EdgeColor','none')
line([100 100],[0 4e+7],'Color','r','LineStyle','-','LineWidth',2)
text(100,max(B),'Frequency Cut-off rightarrow','HorizontalAlignment','right')
title('Magnitude vs Frequency')
ylabel('|A|')
grid(gca,'minor')
%%% STEP 3 & 4
% Apply a band-limited integration filter to each seismic trace and exponentiate the result.
% Compute the Fourier spectra of (3)
% Membuat FFT data seismik
C=fft(seis_sin,ndata); C=[C 0]; % FFT to freq domain
D=C.*conj(C); % Magnitude
figure (14)
subplot(4,1,1)
plot(fr(1:ndata +1),D(1:ndata +1)); % Menampilkan dengan fc
fill(fr(1:ndata +1),D(1:ndata +1),'b','EdgeColor','none')
line([100 100],[0 10],'Color','r','LineStyle','-','LineWidth',2)
text(100,10,'Frequency Cut-off rightarrow','HorizontalAlignment','right')
title('Magnitude vs Frequency Seismogram Sintetik')
ylabel('|A|');
% Band-pass filter data seismik 10-80 hz
% Spectrum of band-pass filter(10-80hz)
n_lowfr=10*(ndata/200);
n_highfr=80*(ndata/200)-n_lowfr+1;
sisa_bandfr=ndata-2*n_highfr-2*n_lowfr+1;
band_freq=[zeros(1,n_lowfr) ones(1,n_highfr) zeros(1,sisa_bandfr) ones(1,n_highfr)
zeros(1,n_lowfr)];
subplot(4,1,2)
plot(fr(1:ndata +1),band_freq(1:ndata +1),'g','LineWidth',2)
title('Band-pass Filter 10-80 Hz')
% Filtered-bandpass seismic trace real-imajiner
filtered_seistrace_realimag=band_freq.*C;
subplot(4,1,3)
plot(fr(1:ndata +1),filtered_seistrace_realimag(1:ndata +1))
title('Seismic Trace Filtered Frequency')
ylabel('A')
% Filtered-bandpass seismic trace
filtered_seistrace=band_freq.*D;
subplot(4,1,4)
plot(fr(1:ndata +1),filtered_seistrace(1:ndata +1))
title('Seismic Trace Filtered Frequency')
ylabel('|A|')
xlabel('Frequency (Hz)')
%%% STEP 4+
% Inverse FFT dan plot hasil seismik trace yang telah ter-filter
E=(ifft(filtered_seistrace_realimag,ndata));
5. 5
figure (15)
subplot(2,1,1)
plot(TWT(1:ndata),seis_sin(1:ndata),'b','LineWidth',2)
title('Synthetic Seismic Trace')
ylabel('Amplitude')
xlabel('TWT (s)')
grid(gca,'minor')
subplot(2,1,2)
plot(TWT(1:ndata),E(1:ndata),'m','LineWidth',2)
title('Seismic Trace Filtered')
ylabel('Amplitude')
xlabel('TWT (s)')
grid(gca,'minor')
%%% STEP 5
% Determine a scalar to match the mean power of (4) and (2) over the seismic signal band.
gamma=((max(D)-min(D))/(max(B)-min(B)));
lambda=(2/gamma);
%%% STEP 6
% Multiply the spectra of (4) by the scalar from (5)
scaled_seis=filtered_seistrace*lambda;
scaled_seis_realimag=filtered_seistrace_realimag*sqrt(lambda);
%%% STEP 7
% Low-pass filter (2) and add to (6)
figure (16)
subplot(4,1,1)
plot(fr(1:ndata +1),B(1:ndata +1)); % Menampilkan dengan fc
fill(fr(1:ndata +1),B(1:ndata +1),'b','EdgeColor','none')
line([100 100],[0 4e+7],'Color','r','LineStyle','-','LineWidth',2)
text(100,max(B),'Frequency Cut-off rightarrow','HorizontalAlignment','right')
title('Magnitude vs Frequency')
ylabel('|A|')
% Lowpas-filter 10hz
% Spectrum of low-cut filter(10hz)
n_lowfr=10*(ndata/200)+1;
sisa_lowfr=ndata - 2*n_lowfr+1;
low_freq=[ones(1,n_lowfr) zeros(1,sisa_lowfr) ones(1,n_lowfr)];
subplot(4,1,2)
plot(fr(1:ndata +1),low_freq(1:ndata +1),'g','LineWidth',2)
title('Low-Cut filter 10 Hz')
% Lowpass 10hz real-imajiner
filtered_realimag=low_freq.*A;
subplot(4,1,3)
plot(fr(1:ndata +1),filtered_realimag(1:ndata +1))
title('Filtered 10 Hz')
ylabel('A');
% Filtered-lowpass for log
filtered_log=low_freq.*B;
subplot(4,1,4)
6. 6
plot(fr(1:ndata +1),filtered_log(1:ndata +1))
title('Filtered 10 Hz')
xlabel('Frequency (Hz)');
ylabel('|A|');
% Add filtered impedance log to spectrum of integrated RC
spc_log_scaled=scaled_seis+filtered_log;
spc_log_scaled_realimag=filtered_realimag+scaled_seis_realimag;
% Plotting hasil penggabungan
figure(17)
subplot(2,2,1)
plot(fr(1:ndata/2),filtered_log(1:ndata/2))
fill(fr(1:ndata/2),filtered_log(1:ndata/2),'b','EdgeColor','none')
title('Spectrum of filtered log')
ylabel('|A|')
xlabel('Frequency (Hz)')
subplot(2,2,2)
plot(fr(1:ndata/2),filtered_seistrace(1:ndata/2))
fill(fr(1:ndata/2),filtered_seistrace(1:ndata/2),'b','EdgeColor','none')
title('Spectrum of Integrated RC')
ylabel('|A|')
xlabel('Frequency (Hz)')
subplot(2,2,3:4)
plot(fr(1:ndata/2),spc_log_scaled(1:ndata/2),'b','LineWidth',2)
fill(fr(1:ndata/2),spc_log_scaled(1:ndata/2),'b','EdgeColor','none')
title('Spectrum of filtered log + Integrated RC')
ylabel('|A|')
xlabel('Frequency (Hz)')
%%% STEP 8 & 9
% Inverse Fourier transform (7)
% Add the low-frequency trend from (1) to (7)
F=(ifft(spc_log_scaled_realimag,ndata));
G=F+trend_AI;
figure (18)
plot(TWT(1:ndata),AI(1:ndata),'b')
hold on
plot(TWT(1:ndata),G(1:ndata),'r','LineWidth',2)
title('BLIMP vs Log Impedance')
ylabel('Acoustic Impedance')
xlabel('TWT (s)')
legend('Log','BLIMP')
7. 7
OUTPUT
Kode matlab diatas jika dijalankan maka akan memberikan output yang hampir semuanya berupa
gambar grafik dari proses BLIMP. Berikut output yang dihasilkan,
Figure 9
Data sintetik log impedansi
Figure 10
Ricket mother wavelet yang digunakan dalam membuat tras seismik
8. 8
Figure 11
Log impedansi, koeffisien refleksi, dan juga tras seismik sintetik hasil konvolusi RC dengan wavelet
Figure 12
Log impedansi dan trend yang dimilikinya
Figure 13
Spektrum frekuensi dari data log impedansi
9. 9
Figure 14
Data seismik yang berusaha difilter oleh filter frekuensi sedang-tinggi (10-80 Hz)
Figure 15
Tampilan tras seismik yang belum dan telah terfilter
Figure 16
Data log impedansi yang berusaha difilter oleh filter frekuensi rendah (~10 Hz)
10. 10
Figure 17
Kombinasi spektrum dari data log impedansi terfilter dan juga data seismik terfilter
Figure 18
Perbandingan dari impedansi log dan impedansi inversi
Dari gambar diatas dapat dilihat bahwa terjadi korelasi yang sangat baik antara data log impedansi
(biru), sebagai data awal yang kita punya, dengan data impedansi hasil dari pendekatan inversi
menggunakan BLIMP (merah). Terlihat juga data impedansi inversi mempunyai karakteristik grafik
yang lebih halus dibandingkan dengan data log impedansi.
Pustaka
Robert J. Ferguson and Gary F. Margrave, 1996, A simple algorithm for band-limited impedance
inversion: CREWES Research Report Vol. 8