MINI PHOTOSHOP
DISUSUN OLEH :
Puji syukur kami panjatkan kepada Tuhan Yang Maha Esa yang senantiasa
mencurahkan rahmat dan hidayah-Nya sehingga kami dapat menyelesaikan mata kuliah
Pengolahan Citra serta laporan proyek akhir bertema “Mini Photoshop”. Adapun laporan
ini berisi tentang proyek akhir yang kami buat dari hasil pembelajaran selama mata kuliah
berlangsung.
Tidak lupa ucapan terima kasih kepada Bapak Bambang Yuwono, S.T, M.T, yang
selalu membimbing dan mengajari kami dalam melaksanakan perkuliahan ini. Laporan ini
masih sangat jauh dari kesempurnaan, oleh karena itu kritik serta saran yang membangun
kami harapkan untuk menyempurnakan laporan akhir ini.
Atas perhatian dari semua pihak yang membantu penulisan ini, kami ucapkan
terima kasih. Semoga laporan ini dapat dipergunakan seperlunya.
Penyusun
ii
DAFTAR ISI
iii
BAB I
PENDAHULUAN
1.2. Tujuan
Tujuan utama dari program Mini Photoshop ini adalah untuk memudahkan
pengguna dalam mengedit gambar sesuai dengan keinginannya. Untuk lebih jelasnya
akan kami uraikan sebagai berikut.
1. Menyelesaikan tugas akhir dari mata kuliah pengolahan citra
2. Membangun aplikasi mini photoshop dengan beberapa fitur pengolahan citra
menggunakan matlab
1
BAB II
PEMBAHASAN
2.1. Dasar Teori
2.1.1. Matlab
MATLAB adalah aplikasi perangkat lunak yang dikembangkan oleh
MathWorks yang biasa digunakan untuk komputasi numerik, visualisasi,
dan pemrograman. Aplikasi ini memungkinkan pengguna untuk menulis
kode untuk menyelesaikan berbagai macam masalah matematika dan teknik,
termasuk komputasi linier, analisis data, pemodelan dan simulasi,
pengolahan sinyal dan citra, dan banyak lagi. MATLAB juga menyediakan
sejumlah alat grafis yang memungkinkan pengguna untuk
memvisualisasikan dan menganalisis data dengan mudah. Aplikasi ini
populer di kalangan insinyur, ilmuwan, dan mahasiswa di berbagai bidang,
termasuk teknik elektro, teknik mesin, dan ilmu komputer.
Untuk membuat aplikasi pengolahan citra dengan menggunakan
MATLAB, pertama-tama Anda perlu membuka aplikasi MATLAB dan
memuat citra yang akan Anda olah. Setelah itu, Anda dapat menggunakan
berbagai macam fungsi dan perintah yang disediakan oleh MATLAB untuk
mengolah citra tersebut. Beberapa tindakan yang dapat Anda lakukan antara
lain:
Mengubah ukuran citra: dapat menggunakan perintah “imresize”
untuk mengubah ukuran citra sesuai dengan kebutuhan Anda. Mengubah
citra ke grayscale: Anda dapat mengubah citra berwarna menjadi citra
grayscale dengan menggunakan perintah “rgb2gray”. Mencari tepi dari
citra: Anda dapat menggunakan perintah “edge “untuk mencari tepi dari
citra dan menampilkan hasilnya. Mengubah citra menjadi biner: Anda dapat
menggunakan perintah “im2bw“ untuk mengubah citra menjadi biner
dengan menentukan nilai ambang. Melakukan operasi logika pada citra:
Anda dapat melakukan operasi logika seperti AND, OR, dan NOT pada
citra dengan menggunakan perintah and, or, dan not. Untuk menyimpan
citra yang telah diolah, Anda dapat menggunakan perintah “imwrite”. Selain
itu, Anda juga dapat menampilkan citra yang telah diolah dengan
menggunakan perintah “imshow”.
2
3
axes(handles.axes3);
imhist(handles.file);
title('Grapic');
else
return
end
4
saveas(gcf,'picture.jpeg')
2.3.2. Histogram
Histogram digunakan untuk melihat persebaran warna pada gambar.
Langkah pertama untuk menampilkan histogram yaitu dengan mengambil
gambar atau citra menggunakan open file. Selanjutnya gambar akan
disimpan dalam bentuk matriks yang kemudian akan dicari nilai red, green,
blue-nya.
axes(handles.axes2);
imshow(J);
axes(handles.axes5);
imhist(J);
2.3.3. Equalization
Equalisasi Histogram adalah suatu proses perataan histogram,
dimana distribusi nilai derajat keabuan pada suatu citra dibuat rata. Yang
dimaksud dengan perataan histogram di sini adalah mengubah derajat
keabuan suatu
piksel (r) dengan derajat keabuan yang baru (s) dengan suatu fungsi transformasi T,
yang dalam hal ini s = T(r). Untuk dapat melakukan histogram equalization
ini diperlukan suatu fungsi distribusi kumulatif yang merupakan kumulatif
dari histogram. Histogram citra memberikan informasi tentang penyebaran
intensitas pixel-pixel di dalam citra. Misalnya, citra yang terlalu terang atau
terlalu gelap memiliki histogram yang sempit. Agar kita memperoleh citra
yang baik, maka penyebaran nilai intensitas harus diubah. Teknik yang
lazim dipakai adalah perataan histogram (histogram equalization). Tujuan
dari perataan histogram adalah untuk memperoleh penyebaran histogram
yang merata, sedemikian sehingga setiap derajat keabuan memiliki jumlah
pixel yang relatif sama
Berikut kode program dari Equalization yang digunakan pada proyek ini.
% --- Executes on button press in pushbutton11.
function pushbutton11_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton11 (see GCBO)
% eventdata reserved - to be defined in a future version of
MATLAB
7
axes(handles.axes2);
imshow(J);
axes(handles.axes5);
imhist(J);
2.3.4. Noise
Noise adalah gangguan yang terdapat pada citra yang dapat
menyebabkan citra terlihat buram atau tidak jelas. Noise dapat muncul
karena beberapa alasan, seperti ketidaksempurnaan perangkat pengambilan
citra, interferensi elektromagnetik, atau kondisi cuaca yang buruk. Noise
dapat mengganggu proses pengolahan citra karena dapat menyebabkan
informasi yang tidak diinginkan muncul pada citra, sehingga mengurangi
akurasi hasil pengolahan citra.
IM=getimage(handles.axes2);
noise = imnoise(IM ,'salt & pepper', 0.1);
axes(handles.axes2);
imshow(noise);
axes(handles.axes5);
imhist(noise);
temp=3
2.3.5. Edge
Edge adalah batas atau tepi dari suatu objek pada citra. Edge dapat
digunakan untuk mengidentifikasi objek pada citra atau untuk mengambil
informasi yang diinginkan dari citra. Edge dapat diidentifikasi dengan
mencari perubahan yang besar dari satu pixel ke pixel lainnya pada citra.
2.3.6. Grayscale
Fitur grayscale merupakan operasi yang dilakukan untuk mengubah
warna dari suatu citra berwarna (RGB) menjadi citra hitam putih. Proses
yang dilakukan dalam fungsi tersebut yaitu dengan menggunakan rumus
skala NTSC yang telah disepakati secara global yaitu 0.299 * Red + 0.587 *
Green
+ 0.114 * Blue.
axes(handles.axes2);
imshow(gray);
axes(handles.axes5);
imhist(gray);
temp=2;
2.3.7. Brightness
Kemudian pada proyek ini terdapat fitur lainnya yaitu fitur
Brightness. Fitur brightness digunakan untuk meningkatkan atau
menurunkan tingkat kecerahan dari suatu citra. Proses dari fitur ini hanya
menambahkan nilai tertentu ke dalam nilai matriks array pada citra dengan
hasil nilai tidak lebih dari 255 dan tidak kurang dari 0 apabila terdapat
kelebihan penambahan/pengurangan nilai. Pada proyek ini nilai tertentu
yang digunakan sebagai nilai tambah/kurang dimasukkan oleh pengguna
secara dinamis dari rentang 0-255. Implementasi dilakukan dengan
menggunakan library numpy untuk membatu melakukan operasi matriks
dengan mudah dan pada fungsi ini diberikan satu parameter penting yang
bernama value sebagai inputan nilai brightness-nya. Berikut kode program
yang digunakan.
MENINGKATKAN
MENGURANGI
% --- Executes on button press in radiobutton4.
function radiobutton4_Callback(hObject, eventdata, handles)
% hObject handle to radiobutton4 (see GCBO)
% eventdata reserved - to be defined in a future version of
MATLAB
% handles structure with handles and user data (see
GUIDATA)
2.3.8. Negative
Pada proyek ini juga dilakukan fungsi negative pada citra. Fungsi ini
berguna untuk memberikan efek reverse warna dari citra. Fungsi ini
dilakukan dengan sederhana yaitu melakukan invers nilai dari matriks array
citra tersebut yang memiliki rentang 0-255. Rumus fungsi ini sangat mudah
hanya mengurangi nilai 255 dengan nilai matriks citra atau bisa
menggunakan operasi bitwise not seperti konsep dari logika binary.
axes(handles.axes2);
imshow(negative);
axes(handles.axes5);
imhist(negative);
temp=1;
2.3.9. Mirroring
Mirroring adalah proses pencerminan citra secara vertikal,
horizontal, atau keduanya. Proses pencerminan secara vertikal adalah
mencerminkan citra berdasarkan sumbu x dan pencerminan secara
horizontal adalah mencerminkan citra berdasarkan sumbu y. Proses
pencerminan dilakukan dengan mencerminkan citra tanpa menggeser posisi
citra atau titik sumbu cermin berada pada bagian tengah citra.
Flip Horizontal Vertikal
% --- Executes on button press in horiverti.
function horiverti_Callback(hObject, eventdata, handles)
% hObject handle to horiverti (see GCBO)
% eventdata reserved - to be defined in a future version of
MATLAB
% handles structure with handles and user data (see
GUIDATA)
IM=getimage(handles.axes2);
I=flipdim(IM,1);
img =flipdim(I,2);
axes(handles.axes2);
imshow(img);
axes(handles.axes5);
imhist(img);
Flip Vertikal
% --- Executes on button press in verti.
function verti_Callback(hObject, eventdata, handles)
% hObject handle to verti (see GCBO)
% eventdata reserved - to be defined in a future version of
14
MATLAB
% handles structure with handles and user data (see
GUIDATA)
IM=getimage(handles.axes2);
img =flipdim(IM,1);
axes(handles.axes2);
imshow(img);
axes(handles.axes5);
imhist(img);
Flip Horizontal
% --- Executes on button press in hori.
function hori_Callback(hObject, eventdata, handles)
% hObject handle to hori (see GCBO)
% eventdata reserved - to be defined in a future version of
MATLAB
% handles structure with handles and user data (see
GUIDATA)
IM=getimage(handles.axes2);
img =flipdim(IM,2);
axes(handles.axes2);
imshow(img);
axes(handles.axes5);
imhist(img);
2.3.10. Sharpening
Sharpening atau penajaman merupakan fungsi yang ditujukan untuk
memperjelas tepi (edge) pada objek di dalam citra. Penajaman diperlukan
untuk mengatasi citra yang derau atau kabur. Untuk melakukan fitur ini
perlu menyiapkan sebuah matriks yang disebut sebagai kernel. Kernek yang
digunakan pada program ini yaitu bernilai [[0, -1, 0], [-1, 5, -1], [0, -1, 0]].
16
axes(handles.axes2);
imshow(filter);
axes(handles.axes5);
imhist(filter);
2.3.11. Smoothing
Smoothing adalah proses menghilangkan noise atau menghaluskan
citra dengan cara menyamakan pixel yang berdekatan. Smoothing dapat
dilakukan untuk meningkatkan kualitas citra atau untuk mengambil
informasi yang diinginkan dari citra.
axes(handles.axes2);
imshow(filter);
axes(handles.axes5);
imhist(filter);
2.3.12. Crop
Cropping adalah proses memotong bagian dari citra untuk
memperoleh citra yang lebih kecil atau hanya menampilkan bagian yang
diinginkan dari citra. Cropping dapat dilakukan untuk meningkatkan
kualitas citra atau untuk mengambil informasi yang diinginkan dari citra.
18
figure;imshow(IM);
[Ja,rect] = imcrop(IM);
axes(handles.axes2);
imshow(Ja);
axes(handles.axes5);
imhist(Ja);
Listing Program 13 Fungsi Crop
3.1. Kesimpulan
Hasil dari pembuatan program Mini Photoshop adalah sebagai berikut.
a. Perancangan program ini diharapkan dapat mempermudah proses pengolahan
citra. Perancangan program ini juga dapat membantu meningkatkan kualitas
gambar.
b. Desain program ini menggunakan matlab dan membangun kode secara
individual. Ini akan memberi pemahaman yang lebih baik tentang mata kuliah
pengolahan citra.
c. Terdapat 11 fitur yang diterapkan pada tugas proyek ini yang sudah bisa
berjalan dengan lancar termasuk saat membuka dan menyimpan file gambar.
3.2. Saran
Berdasarkan kesimpulan di atas, beberapa saran untuk berkontribusi pada
perbaikan program, yaitu:
a. Beberapa peningkatan yang masih dapat dilakukan terkhusus pada sisi user
interface (UI) sangat dimungkinkan dan perbaikan fitur-fitur pengolahan citra
yang dibuat lebih dinamis.
b. Untuk merancang program mini photoshop ini dapat dikembangkan lebih lanjut
untuk membuat program yang lebih kompleks sesuai kebutuhan dan mencapai
hasil yang terbaik.