SlideShare a Scribd company logo
1 of 16
Download to read offline
TUGAS TOMOGRAFI SEISMIK
MATERI PRAKTIKUM
DISUSUN OLEH
NAMA : Daud Wilson
NIM : 0907045056
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS MULAWARMAN
SAMARINDA
TAHUN 2014/2015
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
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
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
!------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
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
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
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
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
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
! 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
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
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)
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
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
- - - - - - - -
- - - - - - - - -
- - - - - - - - -
- - - - - - - - -
- - - - - - - - -
- - - - - - - - -
- - - - - - - - -
- - - - - - - - -
- - - - - - - - -
- - - - - - - - -
- - - - - - - - -
- - - - - - - - -
 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

More Related Content

Viewers also liked

slides_online_optimization_david_mateos
slides_online_optimization_david_mateosslides_online_optimization_david_mateos
slides_online_optimization_david_mateosDavid Mateos
 
Caldecott rental application
Caldecott rental applicationCaldecott rental application
Caldecott rental applicationfloepi
 
Guide pratique - Installer une pompe à chaleur - Ademe
Guide pratique - Installer une pompe à chaleur - AdemeGuide pratique - Installer une pompe à chaleur - Ademe
Guide pratique - Installer une pompe à chaleur - AdemeBuild Green
 
السيرة الذاتية 2016
السيرة الذاتية  2016السيرة الذاتية  2016
السيرة الذاتية 2016Mohd Fayez TAMIMI
 
Competency Snapshot: Commits time and effort to achieve results
Competency Snapshot: Commits time and effort to achieve resultsCompetency Snapshot: Commits time and effort to achieve results
Competency Snapshot: Commits time and effort to achieve resultsTalent Management LLC
 

Viewers also liked (11)

MissTanya
MissTanyaMissTanya
MissTanya
 
slides_online_optimization_david_mateos
slides_online_optimization_david_mateosslides_online_optimization_david_mateos
slides_online_optimization_david_mateos
 
Unidad 8
Unidad 8Unidad 8
Unidad 8
 
Caldecott rental application
Caldecott rental applicationCaldecott rental application
Caldecott rental application
 
Guide pratique - Installer une pompe à chaleur - Ademe
Guide pratique - Installer une pompe à chaleur - AdemeGuide pratique - Installer une pompe à chaleur - Ademe
Guide pratique - Installer une pompe à chaleur - Ademe
 
Arco capaz
Arco capazArco capaz
Arco capaz
 
السيرة الذاتية 2016
السيرة الذاتية  2016السيرة الذاتية  2016
السيرة الذاتية 2016
 
Unidad 8
Unidad 8Unidad 8
Unidad 8
 
csevw4g
csevw4gcsevw4g
csevw4g
 
Le puis canadien
Le puis canadien Le puis canadien
Le puis canadien
 
Competency Snapshot: Commits time and effort to achieve results
Competency Snapshot: Commits time and effort to achieve resultsCompetency Snapshot: Commits time and effort to achieve results
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
  • 4. 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
  • 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
  • 8. 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
  • 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
  • 10. 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
  • 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
  • 15. 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  • 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