Competency Snapshot: Commits time and effort to achieve results
Praktikum dan quis
1. TUGAS TOMOGRAFI SEISMIK
MATERI PRAKTIKUM
DISUSUN OLEH
NAMA : Daud Wilson
NIM : 0907045056
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS MULAWARMAN
SAMARINDA
TAHUN 2014/2015
2. 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
3. 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
5. !------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
6. 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
7. 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
9. 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
11. ! 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
12. 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
13. 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)
14. 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
16. 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.010.012.014.016.018.020.0
RUANGRADON
A
B
C
D