Pengolahan Citra Menggunakan Octave – Rotasi Citra

Bila kita mengurangi koordinat x dan y dengan nilai m dan n pada translasi. Di proses rotasi gambar ini, kita melakukan hal sama dimana kita menentukan piksel baru dengan menggunakan persamaan trigonometri. Kita akan menggunakan rumus:




x = (x + m) * cos(sudut) + (y + n) * sin(sudut)
y = (y + n) * cos(sudut) - (x + m) * sin(sudut)

Variabel m dan n adalah titik dimana kita akan melakukan rotasi, jadi rotasi tidak hanya dilakukan terhadap titik (0,0) saja, kita dapat memilih sembarang titik untuk melakukan proses rotasi. Sudut didapatkan dengan mengalikan sudut input dengan pi kemudian dibagi 180.

Sebagai contoh berikut adalah source code untuk melakukan rotasi citra di Octave:



disp("<---> Operasi Rotasi pada Gambar <--->")

img_path = "assets/lena.jpg";
img = imread(img_path);
img = rgb2gray(img);

img_size = size(img);
new_img = zeros(img_size(1), img_size(2));
width = img_size(1);
height = img_size(2);
teta = pi * 60 / 180;
cursor_x = 50;
cursor_y = 50;

for x = 1 : width
    for y = 1 : height
      new_x = round((x+cursor_x) * cos(teta) + (y+cursor_y) * sin(teta));
      new_y = round((y+cursor_y) * cos(teta) - (x+cursor_x) * sin(teta));
      if (((new_x > 1) && (new_x < width)) && ((new_y > 1) && (new_y < height))) 
        new_img(x, y) = img(new_x, new_y);
      else
        new_img(x, y) = 0;
      end
  end
end

new_img = uint8(new_img);
imshow(new_img);

clear all;

Berikut adalah contoh eksekusi dari source code diatas:

rotasi sudut=60,x=50,y=50

rotasi sudut=60,x=50,y=50

rotasi sudut=30,x=250,y=250

rotasi sudut=30,x=250,y=250

rotasi sudut=5,x=50,y=50

rotasi sudut=5,x=50,y=50

Referensi:

  • Modul Pengolahan Citra Digital, Minarni S.Si., M.T., SISFO Institut Teknologi Padang
  • Buku Pengolahan Citra Digital, Rinaldi Munir
  • Pengolahan Citra – Teori dan Aplikasi, Abdul Kadir

Leave a Reply