PENGOLAHAN CITRA DENGAN MATLAB
Ade Winarni
Kata Pengantar
Modul Pengolahan Citra| 1
Puji syukur di panjatkan atas kehadirat Allah SWT, karena atas Rahmat dan
HidayahNya buku Pengolahan Citra Dengan Matlab dapat terselesaikan. Mudah-
mudahan buku ini dapat memberikan manfaat bagi penulis pribadi khususnya dan
para pembaca umumnya.
Buku ini dilengkapi dengan penjelasan dan praktek dengan menggunakan matlab
materi mencakup :
Operasi Titik (Point Operation)
Operasi Spasial (Spatial Operation) / Filtering
Oprasi Geometri
Oprasi Aritmatika
Pembangkitan Noise dan Reduksi Noise
Deteksi Tepi Citra
Kompresi Data Citra
Morphological Image Processing
Penulis menyadari bahwa dalam menulis dan menyusun makalah ini masih sangat
jauh dari kesempurnaan. Oleh karena itu, segala kritik dan saran yang bersifat
membangun sangat kami harapkan demi perbaikan kedepannya.
Tanjungpinang
Ade Winarni,ST.,MT
Modul Pengolahan Citra| 2
1. Pendahuluan
Citra sebagai salah satu komponen multimedia memegang peranan sangat penting
sebagai bentuk informasi visual. Citra adalah gambar pada bidang dua dimensi
dan jika ditinjau dari sudut pandang matematis, citra merupakan fungsi kontinu
dari intensitas cahaya pada bidang dua dimensi, sumber cahaya menerangi objek,
objek memantulkan kembali sebagian dari berkas cahaya tersebut, pantulan
cahaya ini ditangkap oleh alat-alat optik sehingga bayangan objek tersebut
terekam (Munir, 2004).
Perbaikan citra bertujuan untuk meningkatkan kualitas tampilan citra untuk
pandangan manusia atau untuk mengkonversi suatu citra agar memiliki format
yang lebih baik sehingga citra tersebut menjadi lebih mudah diolah dengan mesin
(komputer). Peningkatan kualitas citra merupakan langkah pra pengolahan yang
penting sebelum melakukan proses analisis dan representasi citra.
Perbaikan Citra (Image Enhancement), perbaikan terhadap suatu citra dapat
dilakukan dengan:
1. operasi titik (point operation)
2. operasi spasial (spatial operation)
3. operasi geometri (geometric operation)
4. operasi aritmatik (arithmetic operation)
Modul Pengolahan Citra| 3
OPERASI TITIK (POINT OPERATION)
Modul Pengolahan Citra| 4
Oprasi TItik (point operation)
Operasi titik dilakukan dengan mengoperasikan piksel, tanpa memperhatikan konsep
tetangga (neighborhood), sehingga lebih mudah dilakukan. Operasi titik biasanya
digambarkan dalam bentuk histogram citra
Histogram Citra
Histogram adalah grafik yang menunjukkan frekuensi kemunculan setiap nilai
gradasi warna, histogram menampilkan banyaknya piksel dalam suatu citra yang
dikelompokkan berdasarkan level nilai intensitas piksel yang berbeda. Histogram
citra ditampilkan dalam grafik dua dimensi (2D), dengan sumbu x menyatakan
nilai intensitas piksel dan sumbu y menyatakan frekuensi kemunculan suatu nilai
intensitas piksel
Pembacaan Image
Fungsi pada matlab untuk membaca file image adalah
Imread(‘filename’);
Perintah diatas digunakan untuk membaca format file diantaranya:
Format Deskripsi Extension
TIFF Tagged Image File Format .tif/.tiff
JPEG Join Photographics Expert’s Group .jpg/ .jpeg
BMP Windows Bitmap .bmp
PNG Portable Network Graphics .png
XWD X-Window Dump .xwd
GIF Graphics Interchange Format .gif
Jenis Citra
1. Citra Biner : Memiliki hanya 2 kemungkinan warna yaitu hitam dan putih
2. Citra Gray scale : Memiliki warna hitam, keabuan dan putih
3. Citra warna (8bit) : Memiliki jumlah warna maksimum 256 warna
4. Citra warna (16 bit) : Memiliki 65.536 warna
Modul Pengolahan Citra| 5
5. Citra warna (24 bit) : Memiliki 16.777.216 warna
Citra RGB
Terdiri dari tiga komponen:R,G,B. Di matlab bissa menggunakan fungsi berikut
>> fR = image(:,:,1);
>> fG = image(:,:,2);
>> fB = image(:,:,3);
>> subplot(2,2,1),imshow(image),title('image asli'), subplot(2,2,2),
imshow(fB),title('Komponen Red'),subplot(2,2,3),imshow(fG),
title('Komponen Green'),subplot(2,2,4),imshow(fB),title('Komponen Blue');
Modul Pengolahan Citra| 6
Citra grayscale
Peningkatan kualitas citra dapat dilakukan melalui transformasi intensitas citra,
yaitu besar intensitas setiap piksel pada citra diubah, tetapi dengan posisi piksel
yang tetap . Transformasi ini dapat dilakukan dengan menggunakan fungsi
transformasi skala keabuan atau Gray-Scale Transformation Function, fungsi ini
memetakan fungsi input fi(x,y) yang bertindak sebagai citra input menjadi fungsi
output fo(x,y) yang bertindak sebagai citra output. Citra warna dapat diubah
menjadi citra grayscale dengan cara menghitung rata-rata elemen warna Red,
Green dan Blue (RGB) Secara matematis, dapat ditulis sebagai berikut:
f0(x,y) fi R (x, y) fiG (x, y) fi B (x, y)
3
Contoh Kasus:
Diketahui citra warna 7 bit (128 warna) dengan ukuran 3 x 3 akan diubah
menjadi citra grayscale
R = 50 R = 40 R = 90
G = 65 G = 40 G = 60
B = 50 B = 55 B = 90
R = 40 R = 50 R = 40
G = 80 G = 80 G = 90
B = 30 B = 50 B = 80
R = 80 R = 70 R = 80
G = 60 G = 70 G = 90
B = 40 B = 70 B = 70
Modul Pengolahan Citra| 7
Jawab :
Proses Transformasi Grayscale :
Posisi (1,1) = (50 + 65 + 50) / 3 = 55
Posisi (1,2) = (40 + 40 + 50) / 3 = 45
Posisi (1,3) = (90 + 60 + 90) / 3 = 80
Posisi (2,1) = (40 + 80 + 30) / 3 = 50
Posisi (2,2) = (50 + 80 + 50) / 3 = 60
Posisi (2,3) = (40 + 90 + 80) / 3 = 70
Posisi (3,1) = (80 + 60 + 40) / 3 = 60
Posisi (3,2) = (70 + 70 + 70) / 3 = 70
Posisi (3,3) = (80 + 90 + 70) / 3 = 80
Matriks Grayscale: 80
55 45 70
50 60 80
60 70
Histogram Citra Grayscale:
Modul Pengolahan Citra| 8
Hisogram citra menggunakan Matlab
>> image = imread('apple.jpg');
>> gray = rgb2gray(image);
>> subplot(1,2,1),imshow(gray),title('image asli'), subplot(1,2,2),
imhist(gray), title('histogram')
Keterangan image = imread('apple.jpg'); //Berfungsi membaca image
Baris (1) gray = rgb2gray(image); // Berfungsi untuk merubh citra RGB
Baris (2) menjadi citra Graysqale
subplot(1,2,1),imshow(gray),title('image asli'), subplot(1,2,2),
Baris (3) imhist(gray), title('histogram')
Hasil histogram yang di peroleh
Modul Pengolahan Citra| 9
Merubah Citra RGB ke Graysqale menggunakan Matlab
>> x = imread('apple.jpg');
>> gray = rgb2gray(x);
>> subplot(1,2,1),imshow(x),title('citra RGB'),
subplot(1,2,2),imshow(gray),title('citra Graysqale');
Keterangan : x= imread('bunga.jpg'); // Berfungsi untuk membaca image
Baris (1)
Baris (2) gray = rgb2gray(x); // Berfungsi untuk merubah citra RGB
menjadi Graysqale
Baris (3) imshow (gray); // Berfungsi untuk menampilkan hasil konversi
citra
Hasil dari Proses RGB menjadi Graysqale adalah sebagai berikut :
Modul Pengolahan Citra| 10
Brightness adjustment
Semakin tinggi tingkat kecerahan suatu citra maka konsentrasi nilai piksel pada
histogram akan bergeser ke sisi kanan, sebaliknya semakin rendah tingkat
kecerahan suatu citra maka konsentrasi nilai piksel pada histogram akan bergeser
ke sisi kiri
Untuk mengontrol nilai warna citra agar diperoleh tingkat kecerahan sesuai
dengan yang diinginkan, maka dapat menggunakan fungsi sebagai berikut
′ = +
U’ adalah citra setelah operasi, U adalah citra sebelum operasi dan c adalah
konstanta penyesuaian. Apabila nilai piksel setelah operasi melebihi nilai
maksimum intensitas, maka nilai piksel akan dijadikan nilai maksimum intensitas,
dan apabila nilai piksel setelah operasi lebih kecil dari nol, maka nilai piksel akan
dijadikan nol
Contoh Kasus:
Pada citra grayscale sebelumnya, akan dilakukan proses peningkatan kecerahan,
dengan nilai peningkatan sebesar: c = 50
citra grayscale:
55 45 80
50 60 70
60 70 80
Modul Pengolahan Citra| 11
Jawab : Matrik Citra Hasil :
Proses Peningkatan Kecerahan: 105 95 130
100 110 120
Posisi (1,1) = 55 + 50 = 105 110 120 130
Posisi (1,2) = 45 + 50 = 95
Posisi (1,3) = 80 + 50 = 130
Posisi (2,1) = 50 + 50 = 100
Posisi (2,2) = 60 + 50 = 110
Posisi (2,3) = 70 + 50 = 120
Posisi (3,1) = 60 + 50 = 110
Posisi (3,2) = 70 + 50 = 120
Posisi (3,3) = 80 + 50 = 130
Brightness adjustment dengan menggunakan Matlab :
>> apple = imread ('apple.jpg');
>> jum =imadd (apple,50);
>> subplot(1,2,1),imshow(apple),title('citra Asli'),
subplot(1,2,2),imshow(jum),title('citra Hasil Penembahan');
Keterangan apple = imread ('apple.jpg'); // Berfungsi untuk membaca image
jum =imadd (apple,50); // Berfungsi untuk menambahkan image
Baris (1) dengan konstanta 50
Baris (2) subplot(1,2,1),imshow(apple),title('citra Asli'),
Baris (3) subplot(1,2,2),imshow(jum),title('citra Hasil Penembahan');
//Berfungsi untuk menampilkan hasil
Modul Pengolahan Citra| 12
*) menjumlahkan citra dengan citra atau citra dengan suatu konstanta
sehingga menghasilka citra baru. Hasil dari penjumlahan akan menghasilkan
citra yang lebih terang/tinggi brightness nya.
Negation
Negasi adalah proses pemetaan nilai piksel suatu citra. Pada citra biner, piksel
hitam dijadikan putih dan piksel putih dijadikan hitam, pada citra grayscale, nilai
maksimum piksel dikurangi dengan nilai piksel yang sedang diproses. Secara
matematis dapat ditulis sebagai berikut
′ = −
U’ adalah citra setelah operasi, U adalah citra sebelum operasi, l adalah nilai bit
dari gray level
Modul Pengolahan Citra| 13
Contoh Kasus:
Pada citra grayscale sebelumnya, akan dilakukan proses negasi
Posisi (1,1) = 255 – 55 = 200 Matriks Citra Hasil
Posisi (1,2) = 255 – 45 = 210 200 210 175
Posisi (1,3) = 255 – 80 = 175 205 195 185
Posisi (2,1) = 255 – 50 = 200 195 185 175
Posisi (2,2) = 255 – 60 = 195
Posisi (2,3) = 255 – 70 = 185
Posisi (3,1) = 255 – 60 = 195
Posisi (3,2) = 255 – 70 = 185
Posisi (3,3) = 255 – 80 = 175
Negasi dengan Matlab
>> semangka = imread('semangka.png');
>> ib = im2bw(semangka,graythresh(semangka));
>> ibinvert = ~ib;
>> subplot(1,2,1),imshow(semangka),title('citra Asli'),
subplot(1,2,2),imshow(ibinvert),title('citra Biner');
Keterangan semangka = imread('semangka.png'); // Berfungsi untuk
Baris (1) membaca image
Baris (2) ib = im2bw(semangka,graythresh(semangka)); //Berfungsi
mengubah citra menjadi citra biner
Baris (3) ibinvert = ~ib; //Berfungsi untuk invert dari baris 2
Baris (4) Berfungsi untuk menampilkan hasil
Modul Pengolahan Citra| 14
Hasil negasi dengan matlab
Koreksi gamma
Brightness suatu citra dapat diperbaiki dengan menggunakan koreksi gamma
Bentuk umum dari transformasi gamma adalah:
′ = /
U’ adalah citra setelah operasi, U adalah citra sebelum operasi dan adalah faktor
koreksi gamma (0 < < 1)
*) Semakin kecil faktor koreksi, maka citra output akan semakin terang
Semakin tinggi faktor koreksi, maka citra output akan mendekati citra asli
Modul Pengolahan Citra| 15
Contoh Kasus:
Pada citra grayscale sebelumnya, akan dilakukan proses koreksi gamma,
dengan nilai gamma : = 0.8
Posisi (1,1) = 551/0.8 = 150
Posisi (1,2) = 451/0.8 = 117 Matriks Citra Hasil:
150 117 239
Posisi (1,3) = 801/0.8 = 239 133 167 202
167 202 239
Posisi (2,1) = 501/0.8 = 133
Posisi (2,2) = 601/0.8 = 167
Posisi (2,3) = 701/0.8 = 202
Posisi (3,1) = 601/0.8 = 167
Posisi (3,2) = 701/0.8 = 202
Posisi (3,3) = 801/0.8 = 239
Fungsi untuk melakukan gamma correction adalah
g = imadjust (f, [low_in high_in], [low_out high_out], gamma)
Memetakan nilai intensitas citra ke nilai yang baru di citra g, untuk nilai di
antara low_in dan high_in akan dipetakan di antara low_out dan high_out.
Untuk nilai intensitas di bawah low_in dan di atas high_in akan dipotong,
sehingga nilai di bawah low_in akan dipetakan ke low_out dan nilai di
atas high_in akan dipetakan ke high_out.
Nilai parameter in dan out antara 0 dan 1
Modul Pengolahan Citra| 16
Koreksi gamma dengan Matlab
>> apple = imread('agray.jpg');
>> j= imadjust(apple,[0.15 0.9],[0 1]);
>> subplot(2,2,1),imshow(apple),subplot(2,2,2),imhist(apple),
subplot(2,2,3),imshow(j), subplot(2,2,4),imhist(j);
Keterangan apple = imread('agray.jpg'); // Berfungsi untuk membaca
Baris (1) image
Baris (2) j= imadjust(apple,[0.15 0.9],[0 1]); // Berfungsi untuk gamma
correction
Baris (3) subplot(2,2,1),imshow(apple),subplot(2,2,2),imhist(apple)
subplot(2,2,3),imshow(j), subplot(2,2,4),imhist(j); // Berfungsi
untuk menampilkan hasil
Hasil koreksi gamma dengan matlab
Modul Pengolahan Citra| 17
operasi spasial (spatial operation) / Filtering
Modul Pengolahan Citra| 18
Operasi Spasial (spatial operation) / Filtering
Kernel & Konvolusi
Proses spasial filtering tidak dapat dilepaskan dari teori kernel (mask) dan
konvolusi. Sebelum pembahasan operasi spasial maka akan diawali dengan
konsep kernel dan konvolusi
Kernel
adalah matrik yang pada umumnya berukuran kecil dengan elemen-elemennya
adalah berupa bilangan. Kernel digunakan pada proses konvolusi. Oleh karena itu
kernel juga disebut dengan convolution window (jendelan konvolusi). Ukuran
kernel dapat berbeda-beda, seperti 3x3, 5x5 dan sebagainya. Elemen-elemen
kernel yang juga disebut bobot (weight) merupakan bilangan-bilangan yang
membentuk pola-pola tertentu. Kernel biasa juga disebut dengan filter, template,
mask serta sliding window.
Contoh Kernel 3 x 3 :
Konvolusi
didefinisikan secara sederhana sebagai operasi penjumlahan dari perkalian dengan
notasi operasi ( * ), yang mengalikan sebuah citra dengan sebuah maks atau
kernel . Konvolusi dalam notasi matematika didefinisikan sebagai berikut:
dimana :
I’(u,v) : hasil konvolusi
I (u,v) : Citra asli
h(i,j) : kernel
Modul Pengolahan Citra| 19
Operasi konvolusi → menggeser kernel pixel per pixel ‐ hasil disimpan dalam
matriks baru
Ilustrasi konvolusi
Contoh Konvolusi
Citra f(x,y) berukuran 5 x 5 dan dibuat kernel berukuran 3 x 3
F(1,1) = (4*0) + (4*-1) + (3*0) +(6*-1) + (6*4) +(5*-1) +(5*0) +(6*-1)+(6*0)
Modul Pengolahan Citra| 20
Dengan cara yang sama lakukan untuk tahap berikutnya:
Hasil Akhir Contoh Konvolusi :
Bila hasil konvolusi negatif, maka nilai dijadikan 0. (clipping)
Bila hasil konvolusi > derajat keabuan maksimum, maka nilai diubah ke
derajat keabuan maksimum. (clipping)
Modul Pengolahan Citra| 21
Filtering
Beberapa filter yang sering digunakan:
Low pass (Mean Filter, Gaussian Filter)
High pass
Median
Low Pass Filter
Low pass filter adalah suatu proses pada gambar/citra dari bentuk filter yang
mengambil data pada frekuensi rendah dan membuang frekuensi tinggi yang
mempunyai tujuan mengurangi noise pada suatu image. Low pass filter
menghasilkan citra yang lebih lembut (smooth) sehingga terkesan kabur (blur).
Yang tergolong low pass filter adalah:
Mean filter /averaging filter
Gaussian filter
Low Pass Filter tanpa penambahan noise dengan matlab
>> gambar = imread('cell.tif');
>> imgd = im2double(gambar);
>> f = ones(3,3)/9;
>> img1 = filter2(f, imgd);
>> subplot(1,2,1);imshow(imgd),title('citra awal'),subplot(1,2,2);
imshow(img1),title('citra hasil low pass filter ');
Keterangan
Baris(1) gambar = imread('cell.tif'); // Berfungsi untuk membaca image
Baris(1) imgd = im2double(gambar); // Ubah gambar menjadi double
Baris(1) f = ones(3,3)/9; // ones : matriks yang semua datanya bernilai 1
Baris(1) img1 = filter2(f, imgd); //Fungsi Filtering
Baris(1) subplot(1,2,1);imshow(imgd),title('citra awal'),subplot(1,2,2);
imshow(img1),title('citra hasil low pass filter '); //menampilkan hasil
Modul Pengolahan Citra| 22
Hasil yang diperoleh
Low Pass Filter dengan penambahan noise dengan matlab
>> gambar = imread('cell.tif');
>> imgd = im2double(gambar);
>> imgd = imnoise(imgd,'salt & pepper',0.02);
>> f = ones(3,3)/9;
>> img1 = filter2(f, imgd);
>> subplot(1,2,1);imshow(imgd),title('citra awal dengan noise'),
subplot(1,2,2);imshow(img1),title('citra hasil low pass filter ');
Keterangan gambar = imread('cell.tif'); // Berfungsi untuk membaca image
imgd = im2double(gambar); // Ubah gambar menjadi double
Baris (1) imgd = imnoise(imgd,'salt & pepper',0.02); // Berfungsi untuk
Baris (2) menambahkan
Baris (3) f = ones(3,3)/9; // ones : matriks yang semua datanya bernilai 1
Baris (4) img1 = filter2(f, imgd); //fungsi filtering
Baris (5) subplot(1,2,1);imshow(imgd),title('citra awal dengan noise'),
Baris (6) subplot(1,2,2);imshow(img1),title('citra hasil low pass filter ');
//menampilkan hasil
Modul Pengolahan Citra| 23
Hasil Low Pass Filter dengan penambahan noise dengan matlab
Mean filter
Pada averaging filter untuk mendapatkan nilai pixel baru yaitu dengan nilai rata-
rata dari pixel tetangga dan pixel citra aslinya.
Contoh filter mean 3 x 3
Modul Pengolahan Citra| 24
Contoh Low pass filter
Filter Matrik Citra Asli Matrik Hasil Filtering
Cara Menghitung
I’(2,2) = (1* 1/9) + (1*1/9) + (3*1/9)+ (1*1/9) + (1*1/9) + (4*1/9) +
(2*1/9) + (1*1/9) + (3*1/9)
= 1.89 = 2
Atau
Filter Matrik Citra Asli Matrik Hasil Filtering
I’(2,2) = (1+1+3+1+1+4+2+1+3)/9
= 1.89 = 2
I’(2,3) = (1+3+3+1+4+4+1+3+3)/9
= 2.56 = 3
dst
Modul Pengolahan Citra| 25
Gaussian Filter
Filter Gaussian adalah salah satu filter linear dengan nilai pembobotan untuk
setiap anggotanya dipilih berdasarkan bentuk fungsi Gaussian. Filter Gaussian
digunakan untuk proses penghalusan (smoothing), pengaburan (bluring) dan
menghilangkan derau (noise).
Fungsi Gaussian 1 dimensi (1-D) dapat dinyatakan sebagai berikut
dengan δ menyatakan standar deviasi dari distribusi.
Gambar Distribusi Gaussian 1-D dengan mean = 0 dan δ =1
Kernel Gaussian 1D dengan δ = 1 filter 1 x 5
Dst
Modul Pengolahan Citra| 26
Maka, kernel gaussian dapat dituliskan 0.544 0.004 0.000
0.000 0.004 0.054 0.242 0.399
Gaussian 2 Dimensi (2-D)
Fungsi Gaussian 2 dimensi (2-D) dapat dinyatakan sebagai berikut:
Gambar Distribusi Gaussian 2-D . dengan mean = (0,0) dan δ =1
Contoh Gaussian 1D
Kernel Matrik Citra Asli Matrik Citra Hasil
121 233 11
355 18
446 18
Modul Pengolahan Citra| 27
Contoh Gaussian 2-D
Gaussian 2-D merupakan 2 x 1-D, Hasil Gaussian 1-D di lakukan perhitungan
gaussian 1-D sehingga menghasilkan gaussian 2-D
Hasil Gaussian 1-D Filter Gaussian Hasil
11 1 65
18 2
18 1
Gaussian Filtering dengan matlab
>> gambar=imread('apple.jpg');
>> gaussianFilter = fspecial('gaussian', [12, 12], 5);
>> hasil = imfilter(gambar, gaussianFilter, 'symmetric', 'conv');
>> subplot(1,2,1),imshow(gambar),title('RGB'),subplot(1,2,2),
imshow(hasil),title('gaussianFilter');
Keterangan
Baris (1) gambar=imread('apple.jpg'); // Berfungsi untuk membaca image
Baris (2) gaussianFilter = fspecial('gaussian', [12, 12], 5); // fungsi Gaussian filter
Baris (3) hasil = imfilter(gambar, gaussianFilter, 'symmetric', 'conv');
// fungsi filtering
Baris (4) subplot(1,2,1),imshow(gambar),title('RGB'),subplot(1,2,2),
imshow(hasil),title('gaussianFilter'); // menampilkan hasil
Hasil Citra Sebelum dan sesudah Filtering, Hasilnya menjadi bluring/ kabur
Modul Pengolahan Citra| 28
High Pass Filter
High Pass Filter merupakan kebalikan dari Low pass filter . High Pass Filter
memperthanakan (mempertajam) komponen frekuensi tinggi dan menghilangkan
frekuensi rendah. Nilai koefisien filter pada koordinat pusat bernilai positif dan
koefisien kelilingnya bernilai negatif.
Contoh high pass filter 3 x 3
0 -1 0
-1 4 -1
0 -1 0
Contoh High Pass Filter
Matrik Citra Asli Filter Matrik Citra Hasil
00000 0 -1 0
01110 -1 4 -1 212
01110 0 -1 0 101
01110 101
01110 1 -5 1
01610 -4 20 -4
01110 2 -4 1
00010
Cara menghitung
O(22) = (0*0) + (0*(-1)) + (0*0) +(0*(-1)) + (1*4) + (1*(-1)) +
(0 * 0) + (1*(-1)) + (1*0)
=2
Dst.
Modul Pengolahan Citra| 29
Median Filter
Filter median merupakan filter spasial nonlinear, yang hasil prosesnya
berdasarkanpada peringkat (rangking) nilai pixel. Median dalam statistik berarti
mencari nilai yang berada di tengah deretan semua angka yang telah diurutkan.
Median ini bermanfaat untuk mengatasi masalah derau (noise).
Contoh Median Filter Citra asli yang telah
Citra Asli 0diur0utk0an 0 0 1 1 1 1
00000
01110 Citra Hasil
01110
01110 010
01110 111
01010 111
01110 111
00010 111
011
00000 000111111
01110
01110 010
01110 111
01110 111
01010 111
01110 111
00010 011
Modul Pengolahan Citra| 30
Median Filter dengan penambahan noise
>> gambar = imread('cell.tif');
>> g = imnoise(gambar,'gaussian',0.02);
>> filter = medfilt2(g);
>> subplot(1,2,1);imshow(g),title('citra awal dengan noise'),
subplot(1,2,2);imshow(filter),title('citra hasil Median filter');
Keterangan gambar = imread('cell.tif'); // Berfungsi untuk membaca image
Baris (1)
Baris (2) g = imnoise(gambar,'gaussian',0.02); //berfungsi untuk menmbahkan
noise
Baris (3) filter = medfilt2(g); // fungsi median filtering
Baris (4)
subplot(1,2,1);imshow(g),title('citra awal dengan noise'),
subplot(1,2,2);imshow(filter),title('citra hasil Median filter'); //
menampilkan hasil
Hasil Median Filter dengan penambahan noise
Modul Pengolahan Citra| 31
Konvolusi dengan Matlab
>> gambar=imread('apple.jpg');
>> mask = [-1 -1 -1; -1 8 -1; -1 -1 -1];
>> gray=rgb2gray(gambar);
>> thresh=graythresh(gray);
>> imbw=im2bw(gray,thresh);
>> hasil=conv2(double(imbw),mask,'valid');
>> subplot(1,2,1);imshow(g),title('citra awal dengan noise')
subplot(1,2,2);imshow(filter),title('citra hasil Median filter');
Keterangan gambar=imread('apple.jpg'); // Berfungsi untuk membaca image
Baris (1) mask = [-1 -1 -1; -1 8 -1; -1 -1 -1]; // Fungsi masking
Baris (2) gray=rgb2gray(gambar); // Fungsi untuk merubah citra RGB menjadi
Baris (3) grayscal
thresh=graythresh(gray); // Fungsi metode threshold
Baris (4) imbw=im2bw(gray,thresh); // mengkonversi citra grayscale menjadi citra
Baris (5) biner
hasil=conv2(double(imbw),mask,'valid'); // fungsi konvolusi
Baris (6) subplot(1,2,1);imshow(g),title('citra awal dengan noise')
Baris (7) subplot(1,2,2);imshow(filter),title('citra hasil Median filter');
// menampilkan hasil
Citra sebelum dan sesudah Konvolusi
Modul Pengolahan Citra| 32
Oprasi Geometri
Modul Pengolahan Citra| 33
Oprasi Geometri
Proses perubahan hubungan spasial antara setiap pixel pada citra Memetakan pixel
citra input dari posisi awal (x1,y1) ke posisi baru (x2,y2). Proses dalam operasi
geometri citra:
a. Translasi
b. Penskalaan
c. Rotasi
d. Refleksi
Translasi
Memindahkan setiap elemen pixel citra input (x1,y1) ke posisi baru pada citra
output (x2,y2) sesuai dengan nilai variabel translasi (p,q). Proses translasi :
Contoh : x2 = x1 + p
(x1,y1 ) = (2,3) y2 = y1 + q
(p,q) = (2,2)
(x2,y2)
Jawab : (x1,y1)
x2 = x1 + p
x2 = 2 +2 = 4
y2 = y1 + q
y2= 3+2 = 5
(x2,y2) = (4,5)
Modul Pengolahan Citra| 34
Pensekalaan (Pengubahan ukuran Citra(imresize))
Penskalaan adalah operasi geometri untuk memberikan efek memperbear atau
memperkecil ukuran citra input sesuai dengan variabel penskalaannya. Proses
penskalaan:
P0 SP Pi
L0 Sl Li
dimana :
(Pi, Li) adalah ukuran citra input
(P0,L0) adalah ukuran citra output
(Sp, Si) adalah variabel penskalaan
Contoh
(Sp, Si) = 3,3
(Pi, Li) = 2,4
Po = 3 x 2 = 5
Lo = 3 x 4 = 12
Citra Asli
Citra Hasil
Pensekalaan dengan matlab
>> image = imread ('apple.jpg');
>> j = imresize(image,[100 150],'bilinear');
>> subplot(1,2,1),imshow(image),title('Gambar Asli'),
subplot(1,2,2),imshow(j),title('Resize');
Keterangan
Baris (1) image = imread ('apple.jpg'); // Berfungsi untuk membaca image
Baris (2) j = imresize(image,[100 150],'bilinear'); // fungsi Resize
Baris (3) subplot(1,2,1),imshow(image),title('Gambar Asli'),
subplot(1,2,2),imshow(j),title('Resize'); // menampilkan hasil
Modul Pengolahan Citra| 35
Hasil Pensekalaan dengan matlab
Pemotongan Citra(imcrop)
Adalah proses untuk memotong sebuah citra yang ukuran pemotongannya bisa
kita tentukan sendiri.
Pemotongan Citra(imcrop) dengan matlab
>> i = imread('pohon1.png');
>> l = imcrop(i,[120 75 130 112]);
>> subplot(1,2,1),imshow(i),title('Cropping'),subplot(1,2,2),
imshow(l),title('Cropping');
Keterangan i = imread('pohon1.png');
Baris (1) l = imcrop(i,[120 75 130 112]); // daerah crop
Baris (2) subplot(1,2,1),imshow(i),title('Cropping'),subplot(1,2,2),
Baris (3) imshow(l),title('Cropping'); // menampilkan hasil
Modul Pengolahan Citra| 36
Hasil Pemotongan Citra (imcrop) dengan matlab
Rotasi Citra (imrotate)
Rotasi merupakan transformasi geometri untuk memindahkan nilai pixel dari
posisi awal (x1,y1) ke posisi akhir (x2,y2) dan ditentukan oleh rotasi sebesar θ
terhadap koordinat titik pusat (m,n). Proses rotasi :
x2 cos( ) (x1 m) sin( ) ( y1 n) m
y2 sin( ) (x1 m) cos( ) ( y1 n) n
Contoh Soal :
(x1,y1) = (3,4 )
θ = 30 derajat dengan (m,n) = (0,0)
Jawab :
X2 = cos (30) x (3-0) – sin (30) x (4-0) +0
X2 = 0,87 x 3 - 0,5 x 4
X2= 2,61 – 2
X2 = 0,61
Y2 = sin (30) x (3-0) + cos (30) x (4-0) +0
Y2 = 0,5 x 3 + 0,87 x4
Y2 = 1,5 + 3,48
Y2 = 4,98
(x2,y2) = (0,61, 4,98)
Modul Pengolahan Citra| 37
Rotasi Citra (imrotate) dengan matlab
>> image = imread ('apple.jpg');
>> k = imrotate( image,45);
>> subplot(1,2,1),imshow(image),title('Gambar Asli'),
subplot(1,2,2),imshow(k),title('Resize');
Keterangan
Baris (1) image = imread ('apple.jpg'); //Berfungsi untuk membaca image
Baris (1)
Baris (1) k = imrotate( image,45); // fungsi rotasi
subplot(1,2,1),imshow(image),title('Gambar Asli'),
subplot(1,2,2),imshow(k),title('Resize'); //menampilkan hasil
Hasil Rotasi Citra (imrotate) dengan matlab
Modul Pengolahan Citra| 38
Operasi Refleksi
Refleksi atau pencerminan adalah proses pengolahan citra secara geometri dengan
memindahkan nilai-nilai pixel dari posisi awal (x1,y1) ke posisi baru (x2,y2)
sesuai dengan posisi pencerminan (x0,y0). Posisi pencerminan :
o Terhadap sumbu y di posisi y0 :
x2 = - x1 + (2*x0)
y2 = y1
o Terhadap sumbu x di posisi x0 :
x2 = x1
y2 = - y1 + (2*y0)
o Terhadap sumbu x dan y di posisi x0 dan yo :
x2 = - x1 + (2*x0)
y2 = - y1 + (2*y0)
Contoh :
(x1,y1) = (2,3)
y0 = 2
Repleksikan terhadap sumbu X.
x2 = x1
x2 = 2;
y2 = - y1 + (2*y0)
y2 = -3 + (2 *2)
y2 = 1
(x2,y2 ) = (2,1)
Operasi Refleksi (Flipping) dengan matlab
>> img = imread('cell.tif');
>> m = fliplr(img);
>> subplot(1,2,1),imshow(img),title('Gambar Asli'),
subplot(1,2,2),imshow(m),title('Flipping');
Keterangan img = imread('cell.tif'); //Berfungsi untuk membaca image
m = fliplr(img); // fungsi refleksi bisa jg menggunakan flipud(up-down)
Baris (1) subplot(1,2,1),imshow(img),title('Gambar Asli'),
Baris (2) subplot(1,2,2),imshow(m),title('Flipping'); // Menampilkan hasil
Baris (3)
Modul Pengolahan Citra| 39
Hasil Operasi Refleksi (Flipping) dengan matlab
Modul Pengolahan Citra| 40
Oprasi Aritmatika
Modul Pengolahan Citra| 41
Oprasi Aritmatika
Proses pengolahan citra dengan menggunakan operator aritmatika atau operator
logika yang diterapkan pada tiap pixel citra. Proses dalam operasi aritmatika:
a. Penjumlahan
b. Pengurangan
c. Perkalian
d. Pembagian
e. Logika AND/NAND
f. Logika OR/NOR
g. Logika XOR/XNOR
h. Logika NOT
Oprasi Penjumlahan
Oprasi penjumlahan menghasilkan citra yang lebih cerah dibandingkan dengan
citra asal, karna semakin tinggi nilai fiksel maka intensitas citra semakin cerah.
Oprasi Penjumlahan dengan matlab
>> x2 = imread('apple.jpg');
>> hasil = x2+100;
>> subplot(1,2,1),imshow(x2),title('citra asli'), subplot(1,2,2),
imshow(hasil),title('citra penjumlahan');
Keterangan
Baris (1) x2 = imread('apple.jpg'); // Berfungsi untuk menampilkan image
Baris (2) hasil = x2+100; // Berfungsi untuk menambahkan dengn konstanta 100
Baris (3) subplot(1,2,1),imshow(x2),title('citra asli'), subplot(1,2,2),
imshow(hasil),title('citra penjumlahan'); // Menampilkan hasil
Modul Pengolahan Citra| 42
Hasil Oprasi Penjumlhan dengan konstanta 100
Oprasi Pengurangan
Oprasi pengurangan pada citra menghasilkan citra yang lebih gelap
dibandingkan dengan citra asal, karna semakin rendah nilai fiksel maka
intensitas citra semakin gelap.
Oprasi Pengurangan dengan matlab
>> x = imread('apple.jpg');
>> hasil = x-50;
>> subplot(1,2,1),imshow(x),title('citra asli'),
subplot(1,2,2),imshow(hasil),title('citra penjumlahan');
Keterangan x = imread('apple.jpg');
hasil = x-50;
Baris (1) subplot(1,2,1),imshow(x),title('citra asli'),
Baris (2) subplot(1,2,2),imshow(hasil),title('citra penjumlahan');
Baris (3)
Modul Pengolahan Citra| 43
Hasil Oprasi Pengurangan di kurangi dengan konstanta 50
Oprasi Perkalian
Sama halnya dengan penambahan , perkalian pada citra akan menghasilkan citra
yang lebih terang, karna nilai fiksel menjadi lebih besar.
Oprasi Perkalian dengan matlab
>> x = imread('apple.jpg');
>> hasil = x*50;
>> subplot(1,2,1),imshow(x),title('citra asli'), subplot(1,2,2),
imshow(hasil),title('citra perkalian');
Keterangan x = imread('apple.jpg'); //Berfungsi untuk membaca image
hasil = x*50; // Berfungsi untuk mengalikan dengan konstanta 50
Baris (1) subplot(1,2,1),imshow(x),title('citra asli'), subplot(1,2,2),
Baris (2) imshow(hasil),title('citra perkalian');
Baris (3)
Modul Pengolahan Citra| 44
Hasil Oprasi Perkalian dengan konstanta 50
Oprasi Pembagian
Oprasi pembagian pada citra akan menghasilkan citra lebih gelap seperti pada
saat di lakukan proses pengurangan hal ini karna nilai fiksel menjadi lebih
rendah.
Oprasi pembagian dengan matlab
>> x = imread('apple.jpg');
>> hasil = x/10;
>> subplot(1,2,1),imshow(x),title('citra asli'), subplot(1,2,2),
imshow(hasil),title('citra pembagian');
Keterangan
Baris (1) x = imread('apple.jpg'); //Berfungsi untuk membaca image
Baris (2) hasil = x/10; //Berfungsi untuk membagi dengan konstanta 10
Baris (3) subplot(1,2,1),imshow(x),title('citra asli'), subplot(1,2,2),
imshow(hasil),title('citra pembagian'); // Berfungsi untuk menampilkan
hasil
Modul Pengolahan Citra| 45
Hasil Oprasi Perkalian dengan konstanta 50
Oprasi Logika AND/NAND
Oprasi logika AND bias dilakukan dengan dua buah citra yang berbeda
Oprasi Logika AND/NAND dengan matlab
>> A = imread('pohon1.png');
>> B = imread('pohon2.png');
>> ABW = im2bw(A);
>> BBW = im2bw(B);
>> hasil = and(ABW,BBW);
>> subplot(1,3,1),imshow(A),title('citra A'), subplot(1,3,2),
imshow(B),title('citra B'), subplot(1,3,3),imshow(hasil),title('citra hasil');
>>
Keterangan
Baris (1) A = imread('pohon1.png');
Baris (2) B = imread('pohon2.png');
Baris (3) ABW = im2bw(A);
Baris (4) BBW = im2bw(B);
Baris (5) hasil = and(ABW,BBW);
Baris (6) subplot(1,3,1),imshow(A),title('citra A'), subplot(1,3,2),
imshow(B),title('citra B'), subplot(1,3,3),imshow(hasil),title('citra hasil');
Modul Pengolahan Citra| 46
Hasil Oprasi Logika AND/NAND dengan matlab
Oprasi Logika OR/NOR
Oprasi Logika OR/NOR dengan matlab
>> A = imread('pohon1.png');
>> B = imread('pohon2.png');
>> ABW = im2bw(A);
>> BBW = im2bw(B);
>> hasil = or(ABW,BBW);
>> subplot(1,3,1),imshow(A),title('citra A'), subplot(1,3,2),
imshow(B),title('citra B'), subplot(1,3,3),imshow(hasil),title('citra hasil');
Keterangan
Baris (1) A = imread('pohon1.png'); // Berfungsi untuk membaca image A
Baris (2) B = imread('pohon2.png'); // Berfungsi untuk membaca image B
Baris (3) ABW = im2bw(A); // Berfungsi mengubah citra menjadi citra biner
Baris (4) BBW = im2bw(B); // Berfungsi mengubah citra menjadi citra biner
Baris (5) hasil = or(ABW,BBW); // Fungsi OR
Baris (6) subplot(1,3,1),imshow(A),title('citra A'), subplot(1,3,2),
imshow(B),title('citra B'), subplot(1,3,3),imshow(hasil),title('citra hasil'); //
Menampilkan Hasil
Modul Pengolahan Citra| 47
Hasil Oprasi Logika OR/NOR dengan Matlab
Oprasi Logika XOR/XNOR
Oprasi Logika XOR/XNOR dengan Matlab
>> A = imread('pohon1.png');
>> B = imread('pohon2.png');
>> ABW = im2bw(A);
>> BBW = im2bw(B);
>> hasil = xor(ABW,BBW);
>> subplot(1,3,1),imshow(A),title('citra A'), subplot(1,3,2),
imshow(B),title('citra B'), subplot(1,3,3),imshow(hasil),title('citra hasil');
Keterangan
Baris (1) A = imread('pohon1.png'); // Berfungsi untuk membaca image A
Baris (2) B = imread('pohon2.png'); // Berfungsi untuk membaca image B
Baris (3)
Baris (4) ABW = im2bw(A); // Berfungsi mengubah citra menjadi citra biner
Baris (5) BBW = im2bw(B); // Berfungsi mengubah citra menjadi citra biner
Baris (6) hasil = xor(ABW,BBW); // Berfungsi untuk fungsi XOR
subplot(1,3,1),imshow(A),title('citra A'), subplot(1,3,2),
imshow(B),title('citra B'), subplot(1,3,3),imshow(hasil),title('citra hasil'); //
Berfungsi untuk Menampilkan Hasil
Modul Pengolahan Citra| 48
Hasil Oprasi Logika OR/NOR
Oprasi Logika NOT
Oprasi Logika NOT
>> A = imread('pohon1.png');
>> ABW = im2bw(A);
>> hasil = not(ABW);
>> subplot(1,2,1),imshow(A),title('citra A'),subplot(1,2,2),imshow(hasil),title('citra hasil');
Keterangan A = imread('pohon1.png'); //Berfungsi untuk membaca image
ABW = im2bw(A); // Berfungsi mengubah citra menjadi citra biner
Baris (1) hasil = not(ABW); // Berfungsi untuk Fungsi NOT
Baris (2) subplot(1,2,1),imshow(A),title('citra A'),subplot(1,2,2),
Baris (3) imshow(hasil),title('citra hasil'); // Menampilkan Hasil
Baris (4)
Modul Pengolahan Citra| 49