Search

Selasa, 10 Juli 2012

OPERASI GEOMETRI PADA CITRA

OPERASI GEOMETRI PADA CITRA
Pada operasi geometrik, koordinat pixel berubah akibat transformasi, sedangkan intensitasnya tetap. Pada operasi aritmetika koordinat pixel tetap sedangkan intensitasnya berubah.
Contoh operasi geometri : translasi, rotasi, penskalaan citra dan pencerminan citra (flipping)
a. Translasi
rumus translasi citra :
x’=x+m m adalah besar pergeseran dalam arah x
y’=y+n n adalah besar pergeseran dalam arah y
B[x][y]=A[x+m][y+n]
 B adalah citra hasil translasi dari A
void translasi(Citra A, Citra B,int N,int M, int n int m)
/*Mentranslasi citra A sejauh m,n Hasil translasi disimpan di dalam B. Ukuran citra adalah N x M
*/
{ int i, j,n;
for (i=0; i<=N-1; i++)
for (j=0; j<=M-1; j++)
{
B[i][j]=A[i+m][j+n];
}
}
citra semula hasil translasi dengan m=23 n=25
B. Rotasi
Rumus rotasi citra :
x’=x cos() – y sin()
y’= x sin() + y cos()
Jika sudut rotasinya 90°, maka implementasinya lebih mudah dilakukan dengan cara menyalin pixel-pixel baris ke pixel-pixel kolom pada arah rotasi. Rotasi 180° diimplementasikan dengan melakukan rotasi 90° dua kali.
Rotasi 90° berlawanan arah jarum jam
void translasi(Citra A, Citra B,int N,int M)
/* Rotasi citra sejauh 90° berlawanan arah jarum jam
*/
{ int i, j, k;
for (i=0; i<=N-1; i++)
{
k=M-1
for (j=0; j<=M-1; j++)
{
B[k][i]=A[i][j];
k--;
}
}
}
void translasi(Citra A, Citra B,int N,int M)
/* Rotasi citra sejauh 90° searah jarum jam
*/
{ int i, j, k;
k=M-1
for (i=0; i<=N-1; i++)
{
for (j=0; j<=M-1; j++)
{
B[j][k]=A[i][j];
}
k--;
}
}
c. Penskalaan Citra
Penskalaan citra disebut image zooming yaitu pengubahan ukuran citra (membesar/zoom out atau mengecil/zoom in)
Rumus penskalaan :
x’=sx . x sx : faktor skala arah x
y’=sy . y sy : faktor skala arah y
Operasi zoom out (pembesaran) dengan faktor 2 (sx=sy = 2) diimplementasikan dengan menyalin setiap pixel sebanyak 4 kali.
Jadi citra 2 x 2 pixel akan menjadi 4 x 4 pixel
Operasi zoom in (pengecilan) dengan faktor skala = ½ dilakukan dengan mengambil rata-rata dari 4 pixel yang bertetangga menjadi 1 pixel
void zoom_out(Citra A, Citra B,int N,int M)
/* Perbesaran citra A dengan faktor skala 2
*/
{ int i, j, k, m, n;
m=0; n=0
for (i=0; i<=N-1; i++)
{
for (j=0; j<=M-1; j++)
{
B[m][n]=A[i][j];
B[m][n+1]=A[i][j];
B[m+1][n]=A[i][j];
B[m+1][n+1]=A[i][j];
N=n+2;
}
m=m+2
n=0
}
}
Citra semula Citra diperbesar 2 kali
d. Flipping
Flipping adalah operasi pencerminan (image reflection).
Ada 2 macam flipping : horisontal dan vertikal
a. Asli b. flip horizontal c. flip vertikal
Flipping horizontal adalah pencerminan pada sumbu Y (cartesian) dari citra A menjadi citra B, yang diberikan oleh
B[x][y] = A[N-x][y]
Flipping vertikal adalah pencerminan pada sumbu X (cartesian) dari citra A menjadi citra B, yang diberikah oleh
B[x][y] = A[x][M-y]
Pencerminan pada titik asal (cartesian) dari citra A menjadi citra B :
B[x][y] = A[N-x][M-y]
Pencerminan pada garis x=y dari citra A menjadi citra B :
B[x][y] = A[y][x]
void translasi(Citra A, Citra B,int N,int M)
/* flipping vertikal (pencerminan terhadap sumbu x)
*/
{ int i, j, k;
k=M-1
for (i=0; i<=N-1; i++)
{
for (j=0; j<=M-1; j++)
{
B[k][j]=A[i][j];
}
k--;
}
}

Tidak ada komentar:

Posting Komentar