praktikum dan quis

16

Click here to load reader

Upload: daud-wilson

Post on 26-Jan-2017

185 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Praktikum dan quis

TUGAS TOMOGRAFI SEISMIK

MATERI PRAKTIKUM

DISUSUN OLEH

NAMA : Daud Wilson

NIM : 0907045056

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS MULAWARMAN

SAMARINDA

TAHUN 2014/2015

Page 2: Praktikum dan quis

MATERI KE-1

Belajar Membuka file citra objek (*dat)

program materi 1

parameter m=127, n=127

dimension a(m,n)

open(1,file='Tomo1.txt',status='old')

open(2,file='coba1.txt',status='unknown')

read(1,*)((a(i,j),j=1,n),i=1,m)

write(2,'128f5.1')((a(i,j),j=1,n),i=1,m)

end

MATERI KE-2

Belajar Menyimpan file citra objek (*dat)

program materi 2

parameter m=127, n=127

dimension a(m,n)

open(1,file='Tomo1.txt',status='old')

open(2,file='coba1.txt',status='unknown')

read(1,*)((a(i,j),j=1,n),i=1,m)

write(2,'128f5.1')((a(i,j),j=1,n),i=1,m)

end

MATERI KE-3

Belajar Membuat Citra Objek Berbentuk Lingkaran

program citra_object_berbentuk_lingkaran

parameter(m=127,n=127)

real :: jejari,akar,Mat

Dimension Mat(m,n)

open(4,file='Tomo_hasil.txt',status='unknown')

print*,'Ukuran jejari ='

read*,jejari

do i=1,m

do j=1,n

Mat(i,j)=0.0

enddo

enddo

do i=1,m

do j=1,n

akar=sqrt(real((i-m/2)*(i-m/2)+(j-n/2)*(j-n/2)))

!print*,'akar=',akar

if(akar<jejari)then

Mat(i,j)=1.5

else

Mat(i,j)=0.5

Page 3: Praktikum dan quis

endif

!print*,'jejari=',jejari

enddo

enddo

do i=1,m

write(4,'128f4.1')(Mat(i,j),j=1,n)

enddo

end program

MATERI KE-4

Belajar Membuat Citra Objek Berbentuk Cincin

program citra_object_berbentuk_lingkaran

parameter(m=127,n=127)

real :: panjang,lebar,Mat

Dimension Mat(m,n)

open(4,file='Tomo_hasil.txt',status='unknown')

print*,'ukuran panjang='

read*,panjang

print*,'ukuran lebar='

read*,lebar

do i=1,m

do j=1,n

Mat(i,j)=0.0

enddo

enddo

do i =1,n

do j=1,m

akar=sqrt(real((i-N/2)*(i-N/2)+(j-M/2)*(j-M/2)))

write(*,*)'akar=' akar

Page 4: Praktikum dan quis

if(akar.lt.panjang)then

matriks(i,j)=1

elseif(akar.ge.panjang)then.and.(akar.le.lebar))then

matriks(i,j)=1.5

elseif(akar.ge.lebar)

matriks(i,j)=0.5

write(*,*)'Jejari=' jejari

enddo

enddo

write(1,*) N,M

do i =1,n

write(1,10)(matriks(i,j),j=1,M)

enddo

stop

10 format(200(f10.2)

end program citra objek

MATERI KE-5

Belajar Membuat Citra Objek Berbentuk Segi Empat Panjang

program citra_object

parameter(m=127,n=127)

real :: panjang,lebar,Mat

Dimension Mat(m,n)

open(4,file='Tomo_hasil.txt',status='unknown')

print*,'ukuran panjang='

read*,panjang

print*,'ukuran lebar='

read*,lebar

do i=1,m

do j=1,n

Mat(i,j)=0.0

enddo

enddo

!------Logika 1 segiempat

x1=int((n-panjang)/2)

x2=int((n+panjang)/2)

y1=int((m-panjang)/2)

y2=int((m+panjang)/2)

do i=1,m

do j=1,n

Mat(i,j)=2

enddo

enddo

Page 5: Praktikum dan quis

!------Logika 2 segiempat

x1=int((n-panjang)/2)

x2=int((n+panjang)/2)

y1=int((m-panjang)/2)

y2=int((m+anjang)/2)

do i=1,m

do j=1,n

if (((i>=x2).or.(i<=x1)).or.((j>=y2).or.(j<=y1)))then

Mat(i,j)=0.5

else

Mat(i,j)=2

endif

enddo

enddo

do i=1,m

write(4,'127f6.1')(Mat(i,j),j=1,n)

enddo

end program

MATERI KE-6

Belajar Membandingkan Dua Citra Objek

program bandingkan

parameter(m=127,n=127)

real :: panjang,lebar,Mat,Mat2

real :: rmsd,miumax,miumin,sum,bedamiu,emax

Dimension Mat(m,n),Mat2(m,n)

open(1,file='Tomo_hasil.txt',status='unknown')

open(2,file='Tomo_hasil2.txt',status='unknown')

do i=1,m

Page 6: Praktikum dan quis

do j=1,n

Mat(i,j)=0

Mat2(i,j)=0

enddo

enddo

!----------- logika membanding

miumax=0

bedamiu=0

do i=1,m

do j=1,n

sum=sum+(Mat(i,j)-Mat2(i,j))*(Mat(i,j)-Mat2(i,j))

if (Mat2(i,j)>miumax)then

miumax = Mat2(i,j)

endif

if (abs(Mat2(i,j)-Mat(i,j))>bedamiu)then

bedamiu=abs(Mat2(i,j)-Mat(i,j))

endif

enddo

enddo

rmsd=100*sqrt(sum/(m*n))/miumax

emax=100*bedamiu/miumax

write(*,'(a$)')'Nilai rmsd ='

print*,rmsd

write(*,'(a$)')'Nilai emax ='

print*,emax

stop

end program

MATERI KE-7

Belajar Memutar Citra Objek Sejauh Sudut Tertentu

program pemutar obyek

real mat1(200,200),mat(200,200)

real sudut,tau,xx,yy,xa,ya

real mu1,mu2,mu3,mu4

real cosfi,sinfi,xcos

Page 7: Praktikum dan quis

real xsin,ycos,ysin

integer geser1,geser2

character namafile*30

do i=1,200

do j=1,200

mat1(i,j)=0

mat2(i,j)=0

enddo

enddo

write(*,'(a$)')'Nama file?'

read(*,*)namafile

open(1,file=namafile)

open(2,file='terputar.dat')

read(1,*)N,M

do i=1,N

read(1,*)(mat1(i,j),j=1,M)

enddo

c---logika memutar objek

write(*,'(a$)')'Sudut pemutaran='

read(*,*)sudut

tau=-sudut*3.14/180

cosfi=cos(tau)

sinfi=sin(tau)

do i=1,N

xx=float

xcos=xx*cosfi

xsin=xx*sinfi

do j=1,M

yy=float(j-M/2)

ycos=yy*cosfi

ysin=yy*sinfi

xa=ycos+xsin

ya=xcos-ysin

if(sqrt(xa*xa+ya*ya).le.N/2)then

dx=xa-int(xa)

dy=ya-int(ya)

c-----perumusan di bawah ini benar

dx=abs(dx)

dy=abs(dy)

a1=(1-dx)*(1-dy)

a2=dx*(1-dy)

a3=dx*dy

a4=(1-dx)*dy

vx=1

vy=1

if(dx.le.0)then

vx=-1

endif

if(dy.le.0)then

vy=-1

endif

Page 8: Praktikum dan quis

geser1=int(xa)+N/2

geser2=int(ya)+M/2

mu1=mat1(geser2,geser1)

mu2=mat1(geser2+vy,geser1)

mu3=mat1(geser2,geser1+vx)

mu4=mat1(geser2+vy,geser1+vx)

mat2(j,i)=a1*mu1+a2*mu2+a3*mu3+a4*mu4

mat2(j,i)=mu1+mu2+mu3+mu4

else

mat2(j,i)=mat1(j,i)

endif

enddo

enddo

write(2,*)N,M

do i=1,N

write(2,101)(mat2(i,j),j=1,M)

enddo

101 format(200(f10.2)

stop

end

MATERI KE-8

Belajar Memfilter Citra Objek

program deteksi tepi

realmat1(200,200),mat2(200,200),mafil(3,3)

character namafile*30

c-----------

do i=1,200

do j=1,200

mat1(i,j)=0

mat2(i,j)=0

enddo

enddo

write(*,'(a$)')'Nama File?'

read(*,*)namafile

open(1,file=namafile,status='unknown')

open(2,file='terfilter.dat')

read(1,*)N,M

do i=1,N

read(1,*)(mat1(i,j),j=1,M)

enddo

c----logika memfilter objek

do i=1,N

do j=1,M

Page 9: Praktikum dan quis

mat2(i,j)=mat1(i,j)*mafil(2,2)+mat1(i-1,j-1)*mafil(1,1)

. +mat1(i-1,j)*mafil(2,1)+mat1(i-1,j+1)*mafil(3,1)

. +mat1(i,j-1)*mafil(1,2)+mat1(i,j+1)*mafil(3,2)

. +mat1(i+1,j-1)*mafil(1,3)+mat1(i+1,j)*mafil(2,3)

. +mat(i+1,j+1)*mafil(3,3)

enddo

enddo

c-------

write(2,*)N,M

do i=1,N

write(2,101)(mat2(i,j),j=1,M)

enddo

101 format(200(f10.2)

stop

data((mafil(i,j),i=1,3),j=1,3)

./-1,1,2,

.-1,1,2,

.-1,1,2/

end

MATERI KE-9

Belajar Merekontruksi Citra Objek dari Citra Sinogram

program perekontruksi obyek

parameter(m=100,n=100,l=130)

real :: Matsino,Matrekon

real :: xr,tau,xx,yy,xa,samiu

Dimension Matsino(l,n),Matrekon(m,n)

open(2,file='hasil_tomo.txt',status='unknown')

do i=1,l

do j=1,n

Matsino(i,j)=0.0

enddo

enddo

do i=1,m

do j=1,n

Matrekon(i,j)=0.0

enddo

enddo

!logika rekonstruksi

do i = 1,m

samiu = 0.

do j = 1,n

do k = 0,l

xx=i-m/2

Page 10: Praktikum dan quis

yy=j-n/2

tau=3.14*k/180.

xr=(xx*cos(tau))+(yy*sin(tau))+n/2

xa=xr

xr=int(xr)

samiu=samiu+matsino(k,xr)+(xa-xr)

+ *(matsino(k,xr+1)-matsino(k,xr))

enddo

matrekon(i,j)=3.14*samiu/m

samiu=0.

enddo

enddo

do i = 1,m

write(2,'100f10.2')(matrekon(i,j),j=1,n)

enddo

stop

end program perekontruksi obyek

MATERI KE-10

Belajar Memfilter Citra Sinogram

program sinogram difilter

real mat1(400,200), mat(400,200)

real filter(400),tmpfil(400)

call bersih(mat1,400,200)

call bersih(mat2,400,200)

call hapus(filter,400)

call hapus(tmpfil,400)

call buka(mat1,N,M)

call konvolusi2(mat1,mat2,filter,N,M)

call simpan(mat2,N,M)

stop

1 format(200(f10.2)

end

Page 11: Praktikum dan quis

! berikut ini kumpulan subroutine

subroutine bersih (matriks,N,M)

real matriks(N+4,M+72)

do i=1,N

do j=1,M

matriks(i,j)=0

enddo

enddo

end

subroutine hapus

real larik(N)

do i=1,N

larik(i)=0.0

enddo

end

20 write(*,'(a$)')'Nama file sinogram yang hendak difilter(*.ATT)?'

read(*,*)namafile

open(1,file=namafile,status='old',err=10)

goto 30

10 call tiada(benar)

if(benar.eq.true) goto 20

30 read(1,*)N,M

do i=1,N

read(1,*)(matriks(i,j),j=1,M)

enddo

close (1)

end

subroutine simpan(matriks,N,M)

real matriks (400,200)

character namafile*30,keadaan*5

logical benar,benar1

write(*,'(a$)')'Mau mengganti file lama?(T/F)'

read(*,*)benar1

selesct case(bener1)

case(.true.)

keadaan='old'

case(.false.)

keadaan='new'

end select

60 write(*,'(a$)')'Nama file sinogram terfilter(*.ATT)?'

read(*,*)namafile

open(2,file=namafile,status=keadaan,err=40)

goto 50

40 call ada(benar)

if(benar.eq.true)goto 60

write(2,*)N,M

do j=1,N

Page 12: Praktikum dan quis

write(2,101)(matriks(j,i),i=1,M)

enddo

close(2)

101 format(400(f10.2))

end

subroutine tiada (kondisi)

logical kondisi

write(*,*)'File tiada ditemukan~'

kondisi=true

end

subroutine ada(kondisi)

logical kondisi

write(*,*)'Fole bernama itu sudah ada!'

kondisi=true

end

subroutine konvolusi(mat1, mat2, filter,N,M)

real mat1(400,200), mat2(400,200)

real filter(400), tmpfil(400)

real sum

integer ki

do j=1,N

do i=1,M

sum=0

do k=1,M

ki=k-i+M

sum=sum+mat1(j,k)*filter(ki)

enddo

tmpfil(i)=sum

enddo

do i=1,M

mat2(j,i)=tmpfil(i)

enddo

enddo

end

subroutine Ram_Lak (filter,M)

real filter(400)

do i=0,M

if(mod)i,2).eq.1)then

filter(M+1)=M*M/(3.14*3.14*i*i)

filter(M-i)=filter(M+i)

endif

enddo

filter(M)=M*M/4

end

subroutine Shep_Logan(filter,M)

real filter(400)

do i=0,M

Page 13: Praktikum dan quis

filter(M+1)=4*M*M/(3.14*3.14*(1-(4*i*i)))

filter(M-i)=filter(M+i)

enddo

filter(M)=4*M*M/(3.14*3.14)

end

subroutie Von_Hanning (filter,M)

real filter(400),tmpfil2(400)

call Ram_Lak(filter,M)

call hapus(tmpfil2,400)

do i=1,2*M

tmpfil2(i)=filter(i)/2+(filter(i-1)-filter(i+1))/4

enddo

do i=1,2*M

filter(i)=tmpfil2(fil

enddo

end

subroutine konvolusi2(mat1,mat2,filter,N,M)

real mat1(400,200),mat2(400,200)

real filter(400)

integer indeks (200,200)

real sum

call bersih(indeks,200,200)

do i=1,M

do k=1,M

indeks(i,k)=k-i+M

enddo

enddo

do j=1,N

do i=1,M

sum=0.0

do k=1,M

sum=sum+filter(indeks(i,k))*mat1(j,k)

enddo

mat2(j,i)=sum

enddo

enddo

end

subroutine ambil_filter(filter)

real filter(400)

character namafile*30

logical benar

call hapus(filter,400)

200 write(*,'(a$)')'Namafile filter(*.fil)?'

read(*,*)namafile

open(1,file=namafile,status='old',err=1000)

Page 14: Praktikum dan quis

goto 300

100 call tiada(benar)

if(benar.eq.true) goto 200

300 read(1,*)M

read(1,*)(filter(i),i=1,M)

do i=1,M

filter(M+i)=filter(i)

emddo

close(1)

end program

Page 15: Praktikum dan quis

NAMA : PRADITA RAHMAWATI

NIM : 1107045007

PRODI : FISIKA

QUIS : TOMOGRAFI SEISMIK

N

O

NAMA

PARTIKE

L

POSIS

I NILAI DI SETIAP SUDUT

KETERANGA

N X Y 0 45 90 135

18

0 225

27

0 315

36

0

1 A 0 2

0.

0 1.41 2.0 1.41 0.0 -1.4 -2.

-

1.41 0.0

(x)= 0X

2 B 6 0

6.

0 4.24 0.0

-

4.24 -6. -4.2 0.0 4.24 6.0

x = x

3 C 8 8

8.

0 11.3 8.0 0.00 -8. -11. -8. 0.00 8.0

4 D 0 4

0.

0 2.83

4.0

0 2.83 0.0 -2.8 -4.

-

2.83 0.0

-

-

-

-

-

-

-

-

-

6.

0

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

Page 16: Praktikum dan quis

HASIL SINOGRAM DALAM RUANG RADON

0

45

90

135

180

225

270

315

360

405

-20.0 -18.0 -16.0 -14.0 -12.0 -10.0 -8.0 -6.0 -4.0 -2.0 0.0 2.0 4.0 6.0 8.0 10.0 12.0 14.0 16.0 18.0 20.0

RU

AN

G R

AD

ON

A

B

C

D