Anda di halaman 1dari 22

LAPORAN PROYEK PENGOLAHAN CITRA

MINI PHOTOSHOP

DISUSUN OLEH :

Anggota : Hartanta Dwi Putra Sembiring 123200037


Alfath Hudal Hakim 123200045
Gilang Yoenal Marinta 123200056

PROGRAM STUDI INFORMATIKA


JURUSAN INFORMATIKA
FAKULTAS TEKNIK INDUSTRI
UNIVERSITAS PEMBANGUNAN NASIONAL ”VETERAN”
YOGYAKARTA
2022
KATA PENGANTAR

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.

Yogyakarta, Desember 2022

Penyusun

ii
DAFTAR ISI

LAPORAN PROYEK PENGOLAHAN CITRA...................................................................i


KATA PENGANTAR...........................................................................................................ii
DAFTAR ISI.........................................................................................................................iii
BAB I PENDAHULUAN.....................................................................................................1
1.1. Latar Belakang.........................................................................................................1
1.2. Tujuan......................................................................................................................1
BAB II PEMBAHASAN.......................................................................................................2
2.1. Dasar Teori..............................................................................................................2
2.2. Deskripsi Umum Proyek Akhir...............................................................................3
2.3. Output dan Penjelasan Listing Program..................................................................3
BAB III KESIMPULAN DAN SARAN..............................................................................19
3.1. Kesimpulan............................................................................................................19
3.2. Saran......................................................................................................................19

iii
BAB I
PENDAHULUAN

1.1. Latar Belakang


Data atau informasi tidak hanya disajikan dalam bentuk teks, tetapi juga dapat
berupa gambar, video, dan audio (musik). Keempat jenis data atau informasi ini biasa
disebut dengan multimedia. Di era teknologi saat ini, multimedia tidak bisa dipisahkan.
Website di Internet dibuat semenarik mungkin dengan memasukkan visual berupa
gambar. Gambar merupakan bagian dari komponen multimedia yang penting untuk
informasi visual. Gambar memiliki fitur yang bukan merupakan bagian dari data
tekstual, yaitu gambar yang kaya informasi. Artinya, sebuah gambar dapat memberikan
lebih banyak informasi daripada informasi yang disajikan sebagai teks. Meskipun
gambar kaya akan informasi, gambar kita sering mengalami penurunan kualitas (quality
loss), misalnya dengan error atau noise, warna yang terlalu kontras, tidak tajam, kabur,
dll. Tentu saja jenis gambar ini menjadi lebih sulit untuk diinterpretasikan karena
informasi yang disampaikan oleh gambar tersebut kurang jelas.
Untuk itu perlu dilakukan perbaikan citra untuk meningkatkan kualitas citra.
Bidang keilmuan yang bersangkutan dengan proses peningkatan kualitas citra adalah
pengolahan citra (digital image processing). Peningkatan citra adalah cabang dari ilmu
pengolahan citra. Image enhancement adalah pengolahan citra, khususnya
menggunakan komputer dengan tujuan untuk meningkatkan kualitas citra.

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

2.2. Deskripsi Umum Proyek Akhir


Program ini merupakan program yang dapat digunakan untuk melakukan
proses editing pada citra atau gambar dengan berbagai macam cara dan fitur yang
disediakan.
Program dimulai dari open file untuk membuka sebuah gambar. Lalu
program akan secara otomatis melakukan kalkulasi untuk menghitung dan
menampilkan histogram. Setelah itu proses edit citra dapat dilakukan dengan
memilih beberapa macam fitur yang ada. Masing-masing fitur memiliki input yang
berbeda-beda tergantung metode yang digunakan. Setelah selesai melakukan proses
edit citra, hasil edit dapat disimpan dalam format jpg.

2.3. Output dan Penjelasan Listing Program


2.3.1. Open File dan Save File
Open file pertama kali dilakukan dengan menentukan jenis file yang
akan dibuka, yaitu berjenis ekstensi jpeg, JPEG, jpg, JPG, dan png.
Selanjutnya mengambil gambar pada direktori yang diinginkan serta
menyimpan alamat tersebut pada variable tertentu yang dilanjutkan dengan
menampilkan gambar .

% --- Executes on button press in file.


function file_Callback(hObject, eventdata, handles)
% hObject handle to file (see GCBO)
% eventdata reserved - to be defined in a future version of
MATLAB
% handles structure with handles and user data (see
GUIDATA)
[nama_file,path] =
uigetfile({'.jpg';'*bmp';'.png';'.tif';'.webp'},...
'Buka Gambar');
if ~isequal (nama_file,0)
handles.file = imread(fullfile(path,nama_file));
guidata(hObject,handles);
axes(handles.axes4);
imshow(handles.file);
title('foto');

axes(handles.axes3);
imhist(handles.file);
title('Grapic');
else
return

end
4

Listing Program 1 Program Open File

Gambar 1 Open File

Setelah gambar selesai diedit, maka proses selanjutnya adalah


menyimpan gambar menggunakan fungsi save_file().

% --- Executes on button press in save.


function save_Callback(hObject, eventdata, handles)
% hObject handle to save (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);
figure;imshow(IM);

saveas(gcf,'picture.jpeg')

Listing Program 2 Program Save File


5

Gambar 2 Save File

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.

function pushbutton11_Callback(hObject, eventdata,


handles)
% hObject handle to pushbutton11 (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);
J=histeq(IM);

axes(handles.axes2);
imshow(J);

axes(handles.axes5);
imhist(J);

Listing Program 3 Program Histogram


6

Gambar 3 Menampilkan Histogram

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

% handles structure with handles and user data (see


GUIDATA)
IM=getimage(handles.axes2);
J=histeq(IM);

axes(handles.axes2);
imshow(J);

axes(handles.axes5);
imhist(J);

Listing Program 4 Fungsi Equalization

Gambar 4 Hasil Fungsi Equalization

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.

% --- Executes on button press in noise.


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

IM=getimage(handles.axes2);
noise = imnoise(IM ,'salt & pepper', 0.1);
axes(handles.axes2);
imshow(noise);

axes(handles.axes5);
imhist(noise);
temp=3

Listing Program 5 Fungsi Noise

Gambar 5 Hasil Fungsi Noise

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.

% --- Executes on button press in edge.


function edge_Callback(hObject, eventdata,
handles)
% hObject handle to edge (see GCBO)
% eventdata reserved - to be defined in a
future version of MATLAB
% handles structure with handles and user
data (see GUIDATA)mg=getimage();
IMA=getimage(handles.axes2);
IM=rgb2gray(IMA);
BW2 = edge(IM,'canny');
axes(handles.axes2);
imshow(BW2);
axes(handles.axes5);
imhist(BW2);
9

Listing Program 6 Fungsi Edge

Gambar 6 Hasil Fungsi Noise

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.

% --- Executes on button press in Gray.


function Gray_Callback(hObject, eventdata, handles)
% hObject handle to Gray (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);
gray = rgb2gray(IM);

axes(handles.axes2);
imshow(gray);

axes(handles.axes5);
imhist(gray);
temp=2;

Listing Program 7 Fungsi Grayscale


10

Gambar 7 Hasil Fungsi Grayscale

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

% --- Executes on button press in radiobutton3.


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

% Hint: get(hObject,'Value') returns toggle state of


radiobutton3
set(handles.radiobutton3, 'Value',1);
set(handles.radiobutton4, 'Value',0);
rd=1;
handles.rd=rd;
guidata(hObject,handles);

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)

% Hint: get(hObject,'Value') returns toggle state of


radiobutton4
set(handles.radiobutton4, 'Value',1);
set(handles.radiobutton3, 'Value',0);
rd=2;
handles.rd=rd;
guidata(hObject,handles);

Listing Program 8 Fungsi Brightness

Gambar 8 Hasil Fitur Meningkatkan Brightness


12

Gambar 9 Hasil Fitur Mengurangi Brightness

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.

% --- Executes on button press in Negative.


function Negative_Callback(hObject, eventdata, handles)
% hObject handle to Negative (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);
negative = 255 - IM;

axes(handles.axes2);
imshow(negative);

axes(handles.axes5);
imhist(negative);
temp=1;

Listing Program 9 Fungsi Negative


13

Gambar 10 Hasil Fungsi Negative

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);

Listing Program 10 Fungsi Mirror

Gambar 11 Hasil Fungsi Mirroring Horizontal Vertikal


15

Gambar 12 Hasil Fungsi Mirroring Horizontal

Gambar 13 Hasil Fungsi Mirroring Vertikal

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

% --- Executes on button press in Sharpening.


function Sharpening_Callback(hObject, eventdata, handles)
% hObject handle to Sharpening (see GCBO)
% eventdata reserved - to be defined in a future version of
MATLAB
% handles structure with handles and user data (see
GUIDATA)
G = [0 -1 0;
-1 5 -1;
0 -1 0];
IM=getimage(handles.axes2);
filter = uint8(convn(double(IM), double(G)));

axes(handles.axes2);
imshow(filter);

axes(handles.axes5);
imhist(filter);

Listing Program 11 Fungsi Sharpening

Gambar 14 Hasil Fungsi Sharpening

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.

% --- Executes on button press in smoth.


function smoth_Callback(hObject, eventdata, handles)
17

% hObject handle to smoth (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);
G = [1/9 1/9 1/9;
1/9 1/9 1/9;
1/9 1/9 1/9];
filter = uint8(convn(double(IM), double(G)));

axes(handles.axes2);
imshow(filter);

axes(handles.axes5);
imhist(filter);

Listing Program 12 Fungsi Smoothing

Gambar 15 Hasil Fungsi Smoothing

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

Untuk melakukan cropping pada citra menggunakan MATLAB,


Anda dapat menggunakan perintah imcrop.

% --- Executes on button press in crop.


function crop_Callback(hObject, eventdata, handles)
% hObject handle to crop (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);

figure;imshow(IM);
[Ja,rect] = imcrop(IM);

axes(handles.axes2);
imshow(Ja);

axes(handles.axes5);
imhist(Ja);
Listing Program 13 Fungsi Crop

Gambar 16 Hasil Fungsi Edge Detection


BAB III
KESIMPULAN DAN SARAN

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.

Anda mungkin juga menyukai