Anda di halaman 1dari 23

MODUL II

PENGOLAHAN CITRA DIGITAL


OPERASI DASAR PENGOLAHAN CITRA

Disusun Oleh :

Arina Zulfatul Mutamimmah 180491100019

LABORATORIUM SISTEM CERDAS DAN ROBOTIKA


PROGRAM STUDI TEKNIK MEKATRONIKA
JURUSAN TEKNIK ELEKTRO
FAKULTAS TEKNIK
UNIVERSITAS TRUNOJOYO MADURA
BANGKALAN
TAHUN 2021
MODUL II
OPERASI DASAR PENGOLAHAN CITRA

2.1. Tujuan
Melalui praktikum pada modul II yang berjudul Operasi Dasar Pengolahan
Citra diharapkan praktikan mampu.
1. Memahami konsep operasi dasar dalam pengolahan citra.
2. Mampu menjelaskan macam-macam bentuk operasi dasar dalam
pengolahan citra.
3. Mampu mengaplikasikan operasi dasar pengolahan citra menggunakan C#.

2.2. Alat dan Bahan


Alat dan bahan yang digunakan dalam praktikum pengolahan citra digital
modul II antara lain sebagai berikut.
1. Software Visual Studio.
2. Laptop.

2.3. Dasar Teori


Dalam modul kedua praktikum pengolahan citra digital akan membahas
tentang operasi dasar pengolahan citra menggunakan software Visual Studio
dengan Bahasa pemrograman yakni C#. Berikut adalah dasar teori yang dapat
dipaparkan dari praktikum kedua.
2.3.1. Operasi Titik (Operasi Negatif)
Operasi pada aras titik hanya dilakukan pada pixel tunggal di dalam citra.
Operasi titik dikenal juga dengan nama operasi pointwise. Operasi ini terdiri dari
pengaksesan pixel pada lokasi yang diberikan, memodifikasinya dengan operasi
operasi linier atau nonlinier dan menempatkan nilai pixel baru pada lokasi yang
bersesuaian di dalam citra yang baru. Operasi ini diulangi untuk keseluruhan pixel
di dalam citra. Secara matematis, operasi pada aras titik dapat dinyatakan dalam
persamaan sebagai berikut.
f B ( x , y )=Otitik {f A ( x , y ) }
f A dan f B masing-masing adalah citra masukan dan citra keluaran, O titik
dapat berupa operasi linier atau nonlinier, yang dimaksud dengan operasi linier
adalah operasi yang dapat dinyatakan secara matematis sebagai persamaan linier,
kebalikannya adalah persamaan nonlinier. Berikut adalah Gambar 2.1. yang
merupakan operasi aras titik pada citra digital.

Gambar 2.1. Operasi aras titik pada citra digital

Operasi pada aras titik dapat dibagi menjadi tiga macam: berdasarkan
intensitas, berdasarkan geometri, atau gabungan keduanya.
a. Berdasarkan intensitas
Nilai intensitas u suatu pixel diubah dengan transformasi h menjadi nilai
intensitas baru v:
v=h ( u ) ,u , v ∈[0 , L]
Contoh operasi titik berdasarkan intensitas adalah operasi pengambangan
(thresholding). Pada operasi pengambangan, nilai intensitas pixel dipetakan ke
salah satu dari dua nilai, a1 atau a2, berdasarkan nilai ambang (threshold) T:

{
f ( x , y )= a 1 , f ( x , y )<T
a2 , f ( x , y ) ≥ T

Jika a1 = 0 dan a2 = 1, maka operasi pengambangan mentransformasikan citra


hitam-putih ke citra biner. Dengan kata lain, nilai intensitas pixel semula
dipetakan ke dua nilai saja: hitam dan putih. Nilai ambang yang dipakai dapat
berlaku untuk keseluruhan pixel atau untuk wilayah tertentu saja (berdasarkan
penyebaran nilai intensitas pada wilayah tersebut).
Contoh operasi titik yang lain adalah operasi negatif yaitu mendapatkan
citra negatif (negative image) meniru film negatif pada fotografi dengan cara
mengurangi nilai intensitas pixel dari nilai keabuan maksimum. Misalnya pada
citra dengan 256 derajat keabuan (8 bit), citra negatif diperoleh dengan
persamaan:
f ( x , y )' =255−f (x , y )
Sedangkan pada citra dengan 128 derajat keabuan,
f (x , y )=127−f ( x , y)

b. Berdasarkan geometri
Posisi pixel diubah ke posisi yang baru, sedangkan intensitasnya tidak
berubah. Contoh operasi titik berdasarkan geometri misalnya pemutaran (rotasi),
pergeseran (translasi), penskalaan (dilatasi), pembetulan erotan (distorsi)
geometri.
c. Gabungan
Operasi ini tidak hanya mengubah nilai intensitas pixel, tapi juga
mengubah posisinya. Misalnya image morphing, yaitu perubahan bentuk objek
beserta nilai intensitasnya.
2.3.2. Operasi Aritmatika
Karena citra digital adalah matriks, maka operasi-operasi aritmetika
matriks juga berlaku pada citra. Ditinjau dari aras komputasi, operasi aritmetika
termasuk ke dalam operasi aras titik. Penjelasan masing-masing operasi aritmetika
matriks adalah sebagai berikut:
a. Penjumlahan atau pengurangan antara dua buah citra
Operasi aritmatika pada penjumlahan dua buah citra dapat dilhat pada
persamaan berikut:
C ( x , y )=A ( x , y ) +B (x , y )
C adalah citra baru yang intensitas setiap pixel-nya adalah jumlah dari intensitas
tiap pixel pada A dan B. Jika hasil penjumlahan intensitas lebih besar dari 255,
maka intensitasnya dibulatkan ke 255. Operasi penjumlahan citra dapat digunakan
untuk mengurangi pengaruh derau (noise) di dalam data, dengan cara merata-
ratakan derajat keabuan setiap pixel dari citra yang sama yang diambil berkali-
kali.
Operasi aritmatika pada pengurangan dua buah citra dapat dilhat pada
persamaan berikut:
C ( x , y )=A ( x , y )−B( x , y)
C adalah citra baru yang intensitas setiap pixel-nya adalah selisih antara intensitas
pixel pada A dan B. Ada kemungkinan hasil operasi ini menghasilkan nilai
negatif, oleh karena itu, operasi pengurangan citra perlu melibatkan operasi
clipping. Contoh aplikasi operasi pengurangan citra adalah untuk memperoleh
suatu objek dari dua buah citra [HEN95]. Citra pertama misalnya foto sebuah
ruangan yang kosong, citra kedua adalah foto ruangan yang sama tetapi ada orang
di dalamnya. Hasil pengurangan citra kedua dengan gambar pertama
menghasilkan citra yang latar belakangnya hitam, sedangkan latar depannya
(objek orang) berwarna putih. Pengurangan citra juga dapat digunakan untuk
mendeteksi perubahan yang terjadi
selama selang waktu tertentu bila dua buah citra yang diambil adalah citra dari
adegan yang sama. Teknik semacam ini dipakai pada moving images.
b. Perkalian dua buah citra
Operasi aritmatika pada perkalian dua buah citra dapat dilhat pada
persamaan berikut:
C ( x , y )=A ( x , y ) B( x , y)
Perkalian citra sering digunakan untuk mengoreksi ketidaklinieran sensor dengan
cara mengalikan matriks citra dengan matrik koreksi. Jadi, dalam hal ini A adalah
citra sedangkan B adalah matriks koreksi. Hasil operasi mungkin bernilai riil,
karena itu semua nilai dibulatkan ke nilai bulat terdekat, nilai maksimum adalah
255. Contoh perkalian citra A dengan matriks koreksi B dapat dilihat apada
Gambar 2.2 berikut.
Gambar 2.2 Perkalian citra

c. Penjumlahan atau pengurangan citra dengan scalar


Operasi aritmatika pada penjumlahan dan pengurangan dua buah citra
dengan skalar dapat dilhat pada persamaan berikut:
B ( x , y )= A( x , y)± c
Penjumlahan citra A dengan skalar c adalah menambah setiap pixel di dalam citra
dengan sebuah skalar c, dan menghasilkan citra baru B yang intensitasnya lebih
terang daripada A. Kenaikan intensitas sama untuk seluruh pixel, yaitu c.
Pengurangan citra A dengan skalar c adalah mengurangkan setiap pixel di dalam
citra dengah sebuah skalar c, dan menghasilkan citra baru B yang intensitasnya
lebih gelap daripada A. Penurunan intensitas sama untuk seluruh pixel, yaitu c.
Contoh operasi penjumlahan atau pengurangan citra dengan sebuah skalar adalah
operasi pencerahan citra. Baik operasi penjumlahan maupun pengurangan citra
dengan sebuah scalar melibatkan operasi clipping.
d. Perkalian atau pembagian citra dengan skalar
Operasi aritmatika pada perkalian dan pembagian dua buah citra dengan
skalar dapat dilhat pada persamaan berikut:
B ( x , y )=c . A ( x , y ) , dan B ( x , y )= A( x , y)/ c
Perkalian citra A dengan skalar c menghasilkan citra baru B yang intensitasnya
lebih terang daripada A. Kenaikan intensitas setiap pixel sebanding dengan c.
Operasi perkalian citra dengan skalar dipakai untuk kalibrasi kecerahan
(callibration of brightness). Pembagian citra A dengan skalar c menghasilkan
citra baru B yang intensitasnya lebih gelap daripada A. Penurunan intensitas
setiap pixel berbanding terbalik dengan c. Operasi pembagian citra dengan skalar
dipakai untuk normalisasi kecerahan (normalization of brightness).
2.3.3. Operasi Boolean
Selain operasi aritmetika, pemrosesan citra digital juga melibatkan operasi
Boolean (and, or, dan not). Operasi Boolean citra dapat dilihat pada persamaan
berikut.
C ( x , y )=A ( x , y )∧B ( x , y ) ,
C ( x , y )=A ( x , y )∨B ( x , y ) ,
C ( x , y )=not A ( x , y ) .
Operasi boleean pada citra dalam notasi Bahasa C, ketiga operasi tersebut ditulis
sebagai berikut:
C[x] [y]=A[x] [y] & B[x]
[y]
C[x] [y]=A[x] [y] | B[x] [y]
C[x] [y]= ! A[x] [y]
Operasi Boolean mempunyai terapan yang penting pada pemrosesan morfologi
pada citra biner. Operasi not dapat digunakan untuk menentukan komplemen dari
citra. Berikut Gambar 2.3. yang merupakan contoh hasil operasi not.

(a) Ganesha (b) Not ganesha


Gambar 2.3 Hasil operasi not

2.3.4. Operasi Geometri


Pada operasi geometrik, koordinat pixel berubah akibat transformasi,
sedangkan intensitasnya tetap. Ini berbeda dengan dengan operasi aritmetika yang
mana koordinat pixel tetap sedangkan intensitasnya berubah. Terdapat empat
operasi geometri yaitu sebagai berikut:
a. Translasi
Operasi geometri yang pertama yaitu translasi. Operasi Tranlasi citra dapat
dilihat pada persamaan berikut:
'
x =x+ m
'
y = y +n
m adalah besar pergeseran dalam arah x, sedangkan n adalah besar pergeseran
dalam arah y. Jika citra semula adalah A dan citra hasil translasi adalah B, maka
translasi dapat diimplementasikan dengan menyalin citra dari A ke B:
B [ x ] [ y ]= A [ x +m ] [ y +n ]
Berikut adalah Gambar 2.4. yang merupakan hasil translasi pada citra
kamera dengan m=30 dan n=25.

(a) citra semula (b) citra hasil translasi


Gambar 2.4. Translasi pada citra

b. Rotasi
Operasi geometri yang kedua yaitu rotasi. Operasi rotasi citra dapat dilihat
pada persamaan berikut:
x ' =x cos (θ )− y sin ( θ )
y ' =x sin (θ )+ y cos (θ)
θ = sudut rotasi berlawanan arah jarum jam (model rotasi citra dapat dilihat pada
Gambar 2.5) Jika citra semula adalah A dan citra hasil rotasi adalah B, maka
rotasi citra dari A ke B:
B[x’][y’] = B[x cos(q) – y sin()][x cos(q) + y cos(q)] = A[x][y]
Gambar 2.5 Model rotasi citra
Jika sudut rotasinya 90°, maka implementasinya lebih mudah dilakukan
dengan cara menyalin pixel-pixel baris ke pixel-pixel kolom pada arah rotasi.
Rotasi 180° diimplementasikan dengan melakukan rotasi 90° dua kali. Berikut
Gambar 2.6 yang merupakan hasil rotasi citra sejauh 90o.

(a) Citra asli (b) Citra hasil rotasi


Gambar 2.6 Rotasi pada citra

c. Penskalaan citra
Penskalaan citra, disebut juga image zooming, yaitu pengubahan ukuran
citra membesar (zoom out) atau mengecil (zoom in). Rumus penskalaan citra dapat
dilihat pada persamaan berikut.
x ' =s x . x
'
y =s y . y
sx dan sy adalah faktor skala masing-masing dalam arah x dan arah y. Jika citra
semula adalah A dan citra hasil penskalaan adalah B, maka penskalaan citra
dinyatakan sebagai:
B[x’][y’] = B[sx x][ sy y] = A[x][y]

Pada operasi zoom out citra 2 ´ 2 pixel akan menjadi 4 ´ 4 pixel. Operasi zoom in
(pengecilan) dengan faktor skala = ½ dilakukan dengan mengambil rata-rata dari
4 pixel yang bertetangga menjadi 1 pixel. Berikut Gambar 2.7. yang merupakan
contoh hasil penskalaan citra setelah diperbesar 2 kali.

(a) Ukuran normal (b) Diperbesar 2 kali


Gambar 2.7 Penskalaan citra

d. Flipping
Flipping adalah operasi geometri yang sama dengan pencerminan (image
reflection). Ada dua macam flipping yaitu horizontal dan vertical. Flipping
vertikal adalah pencerminan pada sumbu-X (cartesian) dari citra A menjadi citra
B, yang diberikan oleh persamaan berikut:
B[x][y] = A[x][M – y]
Flipping horizontal adalah pencerminan pada sumbu-Y (cartesian) dari citra A
menjadi citra B, yang diberikan oleh persamaan berikut:
B[x][y] = A[N – x][y]
Berikut adalah Gambar 2.8. yang merupakan contoh dari flipping horizontal dan
vertical pada citra.

(a) Citra asli (b) Flip horizontal (c) Flip vertical


Gambar 2.8 Flipping
2.4. Tugas Praktikum
Berikut adalah tugas praktikum yang diberikan pada modul II praktikum
pengolahan citra digital.
2.4.1. Operasi Negatif Pada Pengolahan Citra
Berikut adalah langkah-langkah operasi negatif pada pengolahan citra
menggunakan visual studio dengan Bahasa C#.
1. Pertama, buka software visual studio, kemudian susun form yang terdiri
beberapa toolbox yaitu groupbox, picturebox, dan button yang dapat
dilihat pada Gambar 2.9. berikut.

Gambar 2.9. Form operasi negatif


2. Setelah selesai menyusun tampilan pada form, klik dua kali pada button
maka akan menuju halaman program. Berikut adalah program untuk
operasi negatif pada sebuah citra.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace tprak_2
{
public partial class Form1 : Form
{
Image gambar1, gambar2;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog image = new OpenFileDialog();
image.Title = "Pilih Gambar";
image.Filter = "Jpeg Images (*.jpg) | *jpg|png Images (*.png) |
*.png";
if (image.ShowDialog() == DialogResult.OK){
gambar1 = new Bitmap(image.FileName);
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox1.Image = gambar1;
}
gambar2 = (Bitmap)gambar1.Clone();
Bitmap negative = new Bitmap(gambar2);
//Rumus untuk operasi negative image
for (int y = 0; y < negative.Height; y++){
for (int x = 0; x < negative.Width; x++){
Color c = negative.GetPixel(x, y);
int a = c.A;
int r = 255 - c.R;
int g = 255 - c.G;
int b = 255 - c.B;
//int neg = (r + g + b) / 3;
negative.SetPixel(x, y, Color.FromArgb(a, r, g, b));
}
}
pictureBox2.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox2.Image = negative;
}
}
}

3. Untuk melihat program berhasil atau tidak klik tombol start untuk running
program. Berikut adalah Gambar 2.9. yang merupakan hasil running untuk
operasi negative pada citra.
(a) Hasil running (b) Pilih gambar

(c) Hasil operasi negatif


Gambar 2.9. Operasi negatif pada citra
2.4.2. Operasi Aritmatika Pada Pengolahan Citra
Berikut adalah langkah-langkah operasi aritmatika pada pengolahan citra
menggunakan visual studio dengan Bahasa C#.
1. Buka software visual studio, susun komponen dari toolbox ke dalam form
yang terdiri dari 3 groupbox, 3 picturebox, dan 3 button, dan 6 textbox
seperti yang dapat dilihat pada Gambar 2.10. berikut
Gambar 2.10. Tampilan form aplikasi operasi aritmatika.

2. Jika sudah membuat tampilan design, kemudian buat program aplikasi


operasi aritmatika. Berikut adalah program untuk operasi aritmatika.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1{
public partial class Modul2_2 : Form{
Image originalA, originalB;
public Modul2_2(){
InitializeComponent();
}
private void BtnBrowseA_Click(object sender, EventArgs e){
//Arina Zulfatul Mutamimman
//180491100019
OpenFileDialog open = new OpenFileDialog();
open.Filter = "Jpeg Image (.jpg) | *.jpg|Png Image (.png) | *.png";
open.Filter += "|Bitmap Images(.bmp)|.bmp";
if (open.ShowDialog() == DialogResult.OK){
originalA = new Bitmap(open.FileName);
pictureBox1.Image = originalA;
int a = pictureBox1.Image.Width;
int b = pictureBox1.Image.Height;
textBoxHeightA.Text = b.ToString();
textBoxWidthA.Text = a.ToString();
}
}
private void BtnBrowseB_Click(object sender, EventArgs e){
OpenFileDialog open = new OpenFileDialog();
open.Filter = "Jpeg Image (.jpg) | *.jpg|Png Image (.png) | *.png";
open.Filter += "|Bitmap Images(.bmp)|.bmp";
if (open.ShowDialog() == DialogResult.OK){
originalB = new Bitmap(open.FileName);
pictureBox2.Image = originalB;
int i = pictureBox2.Image.Width;
int j = pictureBox2.Image.Height;
textBoxHeightB.Text = j.ToString();
textBoxWidthB.Text = i.ToString();
}
}
private void BtnHasil_Click(object sender, EventArgs e){
this.Cursor = Cursors.WaitCursor;
Application.DoEvents();
Bitmap bmpA = (Bitmap)pictureBox1.Image;
Bitmap bmpB = (Bitmap)pictureBox2.Image;
int w = Math.Min(bmpA.Width, bmpB.Width);
int h = Math.Min(bmpA.Height, bmpB.Height);
int[,] beda = new int[w, h];
int max_diff = 0;
for (int x = 0; x < w; x++){
for (int y = 0; y < h; y++){
Color color1 = bmpA.GetPixel(x, y);
Color color2 = bmpB.GetPixel(x, y);
beda[x, y] = (int)(
Math.Abs(color1.R + color2.R) +
Math.Abs(color1.G + color2.G) +
Math.Abs(color1.B + color2.B));
if (beda[x, y] > max_diff)
max_diff = beda[x, y];
}
}
Bitmap jumlah = new Bitmap(w, h);
for (int x = 0; x < w; x++){
for (int y = 0; y < h; y++){
int clr = (int)(255.0 / max_diff * beda[x, y]);
jumlah.SetPixel(x, y, Color.FromArgb(clr, clr, clr));
}
}
pictureBox3.Image = jumlah;
this.Cursor = Cursors.Default;
int o = pictureBox3.Image.Width;
int p = pictureBox3.Image.Height;
textBoxHeightC.Text = p.ToString();
textBoxWidthC.Text = o.ToString();
}
}
}
3. Klik tombol start untuk menjalankan program yang telah dibuat. Berikut
adalah Gambar 2.11. yang merupakan hasil running dari operasi aritmatika.

Gambar 2.11. Hasil aplikasi operasi aritmatika.

2.4.3. Operasi Geometri Pada Pengolahan Citra


Berikut adalah langkah-langkah operasi geometri pada pengolahan citra
menggunakan visual studio dengan Bahasa C#.
1. Pertama, buka software visual studio, Buat komponen toolbox yang terdiri
dari MenuScrip, ContextMenuScrip, 3 groupbox, 3 picturebox. Maka hasil
menambahkan file project baru seperti Gambar 2.12.

Gambar 2.2. Tampilan Form aplikasi operasi geometri.


2. Jika sudah membuat tampilan design, kemudian buat program aplikasi
operasi geometri. Berikut adalah program operasi geometri pada citra.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1{
public partial class Modul2_3 : Form{
//Arina Zulfatul Mutamimmah
//180491100019
Bitmap original;
Bitmap flip;
Bitmap zoom;
public Modul2_3(){
InitializeComponent();
}
private void OpenTool_Click(object sender, EventArgs e){
OpenFileDialog open = new OpenFileDialog();
open.Filter = "Jpeg Image (.jpg) | *.jpg|Png Image (.png) |*.png";
open.Filter += "|Bitmap Images(.bmp)|.bmp";
if (open.ShowDialog() == DialogResult.OK){
original = new Bitmap(open.FileName);
pictureBox1.Image = original;
}
}
private void Rotasi180Tool_Click(object sender, EventArgs e){
original.RotateFlip(RotateFlipType.Rotate180FlipNone);
pictureBox2.Image = original;
}
private void Rotasi90KananTool_Click(object sender, EventArgs e)
{
original.RotateFlip(RotateFlipType.Rotate90FlipXY);
pictureBox2.Image = original;
}
private void Rotasi90KiriTool_Click(object sender, EventArgs e{
original.RotateFlip(RotateFlipType.Rotate90FlipY);
pictureBox2.Image = original;
}
private void FlipTool_Click(object sender, EventArgs e){
flip = new Bitmap(original.Width, original.Height);
for (int x = 0; x < original.Width; x++){
for (int y = 0; y < original.Height; y++){
Color c = original.GetPixel(x, y);
flip.SetPixel(original.Width - 1 - x, y, c);
}
pictureBox2.Image = flip;
}
}
private void ZoomTool_Click(object sender, EventArgs e){
zoom = new Bitmap(original.Width * 2, original.Height * 2);
for (int x = 0; x < original.Width; x++){
for (int y = 0; y < original.Height; y++){
Color c = original.GetPixel(x, y);
zoom.SetPixel(2 * x, 2 * y, c);
zoom.SetPixel((2 * x) + 1, 2 * y, c);
zoom.SetPixel(2 * x, (2 * y) + 1, c);
zoom.SetPixel((2 * x) + 1, (2 * y) + 1, c);
}
}
pictureBox3.Image = zoom;
}
}
}
3. Hasil apilkasi operasi geometri yang ditunjukan pada Gambar 2.14.

Gambar 2.14. Hasil aplikasi operasi geometri.


2.5. Kesimpulan
Pada praktikum modul II dapat disimpulkan bahwa operasi pada aras titik
hanya dilakukan pada pixel tunggal di dalam citra. Nilai negatif pada pixel didapat
dengan cara mengurangi nilai intensitas pixel dari nilai keabuan maksimum. Pada
operasi aritmatika, penjumlahan citra didapat dari jumlah intensitas tiap pixel pada
citra pertama dan kedua. Jika hasil penjumlahan intensitas lebih besar dari 255,
maka intensitasnya dibulatkan ke 255. Pada operasi geometrik koordinat pixel
berubah akibat transformasi, sedangkan intensitasnya tetap. Terdapat 4 operasi
geometrik yaitu translasi, rotasi, penskalaan citra dan juga flipping.
2.6. Daftar Pustaka
[1] Munir, Rinaldi. 2019. Operasi-operasi Dasar PengolahanCitra. Program
Studi Teknik Informatika. ITB: Bandung.

Anda mungkin juga menyukai