Aplikasi Rotasi Gambar (Citra Digital) dengan Slider di GUI MATLAB

Halo sobat Sidat.ID, bagaimana kabar sobat semua ? semoga selalu dalam keadaan sukses dan sehat ya. Kali ini kita akan membahas tutorial pemrograman MATLAB yaitu Membuat Aplikasi Rotasi Gambar (Citra Digital) dengan Slider di GUI MATLAB. Jadi, bagaimana program ini akan bekerja ?

Secara sederhana , kita akan merotasi citra yang kita inputkan pada derajat tertentu. Derajat itu akan maksimal di 360 derajat, dan minimal di 0 derajat. Kemudian , penentuan derajat dari rotasi citra akan kita gunakan GUI Slider sebagai alat bantunya. Jadi user akan menggeser slider kekanan dan kekiri untuk melakukan rotasi citra. Tanpa berlama-lama lagi, yuk kita eksekusi programnya


Membuat User Interface dengan GUI MATLAB

Pertama, kita akan buat terlebih dahulu user interface yang akan menghubungkan user dengan program. Kita akan membuat tampilan yang sederhana untuk user dapat mengerti penggunaanya dengan mudah.

Sobat ketikkan "guide" di halaman kerja MATLAB. Selanjutnya sobat pilih "Blank GUI (Default)". Kalau sobat masih bingung cara memulainya, silahkan ketika pada tautan berikut ini : Cara Menampilkan Gambar di GUI Matlab.

Kedua, sobat tambahkan GUI Static Txt, AXIS, Edit Text, Button, dan juga Slider. Sobat bisa perhatikan pada gambar berikut ini sebagai contoh GUI-nya. Kalau sobat ingin membuat yang lainnya, silahkan sesuaikan dengan keinginan sobat.


Penjelasan GUI

  1. Tulisan ROTASI CITRA MENGGUNAKAN SLIDER adalah menggunakan Static text.
  2. Kotak Besar di Kiri adalah penampil Gambar / Citra Asli menggunakan AXES dengan nama tag axes1.
  3. Kotak besar di Kanan adalah penampil Gambar Hasil Rotasi mnggunakan AXES dengan nama tag axes2.
  4. Tombol Browse menggunakan button dengan nama tag  pushbutton1. Berfungsi untuk menginputkan gambar dari direktori. Kemudian gambar akan tampil pada axes1.
  5. Path_gambar dibuat dengan Edit Text diberikan nama tag edit1. Berfungsi untuk menampilkan posisi dimana gambar tersebut diambil.
  6. Slider dibuat dengan nilai max = 360 dan nilai min = 0 diberikan nama tag slider1 dan enable = off. Fungisnya untuk memberikan nilai rotasi sebesar 0 sampai 360 pada citra asli. Kemudian hasilnya akan muncul pada axes2.
  7. Angka 0 dibuat menggunakan static text dan diberikan nama tag text3 serta Enable = inactiv.

Untuk memberi nama tag, merubah isi static text, memberi nilai slider sobat bisa melakukannya dengan cara :

  • Double klik pada elemen GUI, atau
  • Klik kanan pada elemen GUI dan pilih Property Inspector.


Penempatan Code Program

Pertama, kita akan menempatkan code program untuk membuka gambar / citra. Sobat klik kanan pada button BROWSE dan pilih View Callback - Callback. Selanjutnya sobat ketikkan code berikut :

% hObject    handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global image_op;
[namafile, formatfile] = uigetfile('*.png; *.bmp; *.jpg', 'membuka gambar'); %memilih gambar
if formatfile == 0
return;
end
image_op = imread([formatfile, namafile]);
guidata(hObject, handles);
axes(handles.axes1);
imshow(image_op);
title('Gambar Asli');

%path gambar
image_path = fullfile(formatfile, namafile);
set(handles.edit1,'String', image_path);
set(handles.slider1,'Enable','on');


Ketika user mengklik tombol BROWSE, maka akan terbuka direktori di laptop/PC dan user memilih sebuah gambar. Gambar / Citra tersebut akan disimpan pada variabel image_op. Selanjutnya gambar ditampilkan pada axes1 dan posisi dari gambar disimpan pada variabel image_path dan ditampilkan di edit text.

Kedua, kita akan menempatkan code program untuk rotasi gambar / citra pada elemen slider. Klik kanan pada slider dan pilih callback. Kemudian sobat ketikkan code berikut ini :

function slider1_Callback(hObject, eventdata, handles)
% hObject handle to slider1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'Value') returns position of slider
% get(hObject,'Min') and get(hObject,'Max') to determine range of slider
global image_op;
set(handles.slider1,'max',360);
set(handles.slider1,'min',0);
% max_min = get(handles.slider1,'value');
% citra = handles.data1;
% axes(handles.axes1)
% imshow(citra)
% title('gambar asli');
slider_value = get(handles.slider1,'value');
handles.slider_value = round(slider_value);
guidata(hObject,handles);
set(handles.text3,'string',handles.slider_value);

result_rotation = imrotate(image_op,handles.slider_value,'bilinear','crop');
handles.resut_rotation = result_rotation;
guidata(hObject,handles);
axes(handles.axes2);
imshow(result_rotation);
title('Hasil Rotasi Gambar');

Pada code diatas, kita setting nilai slider max di 360 dan min di 0. kemudian kita buat sebuah variabel slider_value yang akan menampung nilai dari slider yang di geser oleh user dari 0-360.

Selanjutnya, kita buat sebuah variabel yang menampung hasil dari rotasi gambar pada variabel result_rotation. kita gunakan fungsi matlab yaitu imrotate dan menyesuaikan dengan nilai dari slider_value.

Hasil dari rotasi gambar / citra pada variabel result_rotation akan ditamplkan ada axes2 dan diberikan keterangan title "hasil rotasi gambar". 

Terkahir, sobat save codingnya. dan siap untuk running program.


Hasil Running Program

Nah, sobat sudah save codingnya dan bisa running programnya. Tampilan dari aplikasi rotasi citra akan seperti berikut . Kemudian sobat bisa mengklik BROWSE untuk membuka gambar. 

Tombol slider akan nonaktif sementara, dan akan aktif ketika user sudah berhasil membuka gambar pada axes1.


Selanjutnya, fungsi rotasi akan menggunakan elemen slider yang dapat digeser ke kanan dan kekiri oleh user. Serta ditampilkan berapa kemiringan atau jumlah rotasi yang telah dilakukan dalam rentang nilai 0 sampai 360.

Oke sobat sekian dulu tutorial pemprgraman MATLAB untuk tutorial Membuat Aplikasi Rotasi Gambar (Citra Digital) dengan Slider di GUI MATLAB. Kalau sobat ada pertanyaan, silahkan ketikkan pada kolom komentar di bawah. Dan sampai jumpa pada tutorial berikutnya, salam Sidat.ID. 

Comentarios