praktikum dan quis
TRANSCRIPT
![Page 1: Praktikum dan quis](https://reader037.vdocuments.pub/reader037/viewer/2022100521/588972631a28ab44758b6c1f/html5/thumbnails/1.jpg)
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](https://reader037.vdocuments.pub/reader037/viewer/2022100521/588972631a28ab44758b6c1f/html5/thumbnails/2.jpg)
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](https://reader037.vdocuments.pub/reader037/viewer/2022100521/588972631a28ab44758b6c1f/html5/thumbnails/3.jpg)
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](https://reader037.vdocuments.pub/reader037/viewer/2022100521/588972631a28ab44758b6c1f/html5/thumbnails/4.jpg)
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](https://reader037.vdocuments.pub/reader037/viewer/2022100521/588972631a28ab44758b6c1f/html5/thumbnails/5.jpg)
!------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](https://reader037.vdocuments.pub/reader037/viewer/2022100521/588972631a28ab44758b6c1f/html5/thumbnails/6.jpg)
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](https://reader037.vdocuments.pub/reader037/viewer/2022100521/588972631a28ab44758b6c1f/html5/thumbnails/7.jpg)
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](https://reader037.vdocuments.pub/reader037/viewer/2022100521/588972631a28ab44758b6c1f/html5/thumbnails/8.jpg)
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](https://reader037.vdocuments.pub/reader037/viewer/2022100521/588972631a28ab44758b6c1f/html5/thumbnails/9.jpg)
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](https://reader037.vdocuments.pub/reader037/viewer/2022100521/588972631a28ab44758b6c1f/html5/thumbnails/10.jpg)
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](https://reader037.vdocuments.pub/reader037/viewer/2022100521/588972631a28ab44758b6c1f/html5/thumbnails/11.jpg)
! 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](https://reader037.vdocuments.pub/reader037/viewer/2022100521/588972631a28ab44758b6c1f/html5/thumbnails/12.jpg)
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](https://reader037.vdocuments.pub/reader037/viewer/2022100521/588972631a28ab44758b6c1f/html5/thumbnails/13.jpg)
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](https://reader037.vdocuments.pub/reader037/viewer/2022100521/588972631a28ab44758b6c1f/html5/thumbnails/14.jpg)
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](https://reader037.vdocuments.pub/reader037/viewer/2022100521/588972631a28ab44758b6c1f/html5/thumbnails/15.jpg)
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](https://reader037.vdocuments.pub/reader037/viewer/2022100521/588972631a28ab44758b6c1f/html5/thumbnails/16.jpg)
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