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