Pengolahan Citra - 03 Tranformasi Geometri
Pengolahan Citra - 03 Tranformasi Geometri
Tranformasi Geometri
Disusun oleh: Teady Matius Prodi Teknik Informatika - Universitas Bunda Mulia Dari berbagai sumber
Matriks Tranformasi
Matriks Tranformasi menggunakan matriks 3x3
a11 a 21 a31
Matriks Identitas
1 0 0 0 1 0 0 0 1
Translasi
Perpindahan Objek dari titik P ke titik P secara linier x = x + dx y = y + dy
x, y koordinat saat ini. x, y : koordinat yang baru dx: jarak perpindahan arah sumbu x dy: jarak perpindahan searah sumbu y
Contoh Translasi
Matriks Translasi
1 0 dx 0 1 dy 0 0 1
Contoh Translasi
procedure TForm1.ButtonPindahClick(Sender: TObject); var i, j : integer; begin dX := StrToInt(EditDx.Text); dY := StrToInt(EditDy.Text); newX := curX + dX; newY := curY + dY; if CheckBoxCopyRect.Checked then begin Image1.Canvas.CopyRect(Rect(0,0,lebar,tinggi),Form1.Canvas,Rect(curX,curY,curX+lebar,curY+tinggi)); canvas.Pen.Color := clBtnFace; canvas.Rectangle(curX,curY,curX+lebar,curY+tinggi); Canvas.CopyRect(Rect(newX, newY, newX+lebar, newY+tinggi),Image1.Canvas,Rect(0,0,lebar, tinggi)); end else begin if rgTranslasi.ItemIndex = 0 then begin //copykan Grafik ke Temp Image1.Canvas.CopyRect(Rect(0,0,lebar,tinggi),Form1.Canvas,Rect(curX,curY,curX+lebar,curY+tinggi)); //hapus grafik asal for i:=0 to tinggi-1 do for j:=0 to lebar-1 do canvas.Pixels[curX + j, curY + i] := clBtnFace; //buat grafik baru for i:=0 to tinggi-1 do begin for j:=0 to lebar-1 do begin canvas.Pixels[newX + j, newY + i] := Image1.Canvas.Pixels[j, i]; end; end; end else begin //hapus dahulu grafik lama canvas.Pen.Color := clBtnFace; canvas.Ellipse(curX, curY, curX+lebar, curY+tinggi); //gambar grafik baru canvas.Pen.Color := clBlack; canvas.Ellipse(newX, newY, newX+lebar, newY+tinggi); end; end; curX := newX; curY := newY; end;
Penskalaan
Matriks Skala
Sx 0 0 0 Sy 0 0 0 1
Rotasi
Ide dasar dari rotasi adalah melakukan perputaran pada sumbunya. Koordinat yang di pergunakan untuk perhitungan adalah koordinat kartesian Karena koordinat sumbu y delphi berbeda, maka harus dilakukan penyesuaian
cos sin 0
sin 0 cos 0 0 1
sin 0 x y cos 0 0 1 1
Shearing
Tranformasi dengan membebani pada sisi tertentu, sehingga di hasilkan objek yang terdistorsi Contoh: huruf italic:
0 0 1
0 x 0 y 1 1
Sehingga tidak menjadi masalah, karena hanya perlu menggambar ulang dengan vektor-vektor yang didapat. Tetapi pada operasi raster, atau objek lebih satu setiap titik harus dihitung berdasarkan sudut kemiringannya Karena itu sebaiknya operasi shering dilakukan berdasarkan sudut kemiringannya. Pada operasi raster ataupun grafik yang objeknya lebih dari satu, jika diketahui shx, cari sudut kemiringannya!!!
1 cos / sin 0 0 1 0 0 0 1
x' 1 cos / sin 0 x y ' = 0 1 0 y 1 0 0 1 1
Contoh Shear X
0 0 1 0 0 1
0 0 x 1 0 y 0 1 1
1 0 0 cos / sin 1 0 0 0 1
1 0 0 x x' y ' = cos / sin 1 0 y 1 0 0 1 1
1 sh y 0
shx 1 0
0 0 1
Latihan
Susunlah matrik shear x y berdasarkan sudut , dan carilah persamaannya untuk mendapatkan x dan y
Tugas
1. Buatlah program untuk memanggil gambar dan menampilkan pada TImage 2. Buatlah program untuk menyimpan gambar dari TImage ke sebuah file 3. Buatlah program untuk menampilkan gambar dan mengcopykan gambar tersebut ke komponen TImage yang lain dengan menggunakan CopyRect() 4. Buatlah program untuk menampilkan gambar dan mengcopykan gambar tersebut ke komponen TImage yang lain dengan cara dicopykan pixel per pixel