Perbaikan Kualitas Citra Berbasis Transformasi Fourier

(1)

PERBAIKAN KUALITAS CITRA BERBASIS TRANSFORMASI

FOURIER

SKRIPSI

RANI SUCI PRIMA

060823003

DEPARTEMEN MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA

MEDAN

2009


(2)

PERBAIKAN KUALITAS CITRA BERBASIS TRANSFORMASI

FOURIER

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Sarjana Sains

RANI SUCI PRIMA

060823003

DEPARTEMEN MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA

MEDAN 2009


(3)

DAFTAR ISI

Halaman

ABSTRAK

ABSTRACT

DAFTAR ISI

DAFTAR GAMBAR DAFTAR TABEL

BAB 1 PENDAHULUAN

1.1Latar Belakang 1

1.2Identifikasi Masalah 2

1.3Perumusan Masalah 3

1.4Pembatasan Masalah 3

1.5Kontribusi Penelitian 3

1.6Tujuan Penelitian 3

1.7Metode Penelitian 3

1.8Tinjauan Pustaka 4

1.9Diagram Konsepsi 5

BAB 2 LANDASAN TEORI

2.1 Citra 6

2.2 Pengolahan Citra 7

2.3 Perbaikan Citra 10

2.3.1 Penajaman Citra 11

2.3.2 Pemodelan Histrogram 12

2.4 Transformasi Fourier 17

2.4.1 Dasar-Dasar Transformasi Fourier 17

A. Transformasi Fourier 1D 19

B. Transformasi Fourier 2D 19

2.4.2 Transformasi Fourier Diskrit 19

A. Transformasi Fourier Diskrit 1D 20

B. Transformasi Foureir Diskrit 2D 20

2.4.3 Transformasi Fourier Diskrit dalam Perbaikan Citra 20 BAB 3 ANALISIS PERBAIKAN KUALITAS CITRA

3.1 Analisis Citra 24

3.1.1 Pengaturan Warna Pada Gambar 24

3.1.2 Pemodelan Histogram 26

3.1.3 Penghalusan Citra 28

3.1.4 Penajaman Citra 30


(4)

3.3Proses dan Cara Penggunaan Program 33 BAB 4 IMPLEMENTASI SISTEM

4.1 Implementasi. 38

4.1.1 Pengguanaa Program 39

BAB 5 KESIMPULAN DAN SARAN

5.1 Kesimpulan 44

5.2 Saran 42


(5)

ABSTRAK

Pada tahun 1822, Joseph Fourier, ahli matematika dari Prancis menemukan bahwa: setiap fungsi periodik (sinyal) dapat dibentuk dari penjumlahan gelombang-gelombang sinus/cosinus. Transformasi citra sesuai namanya merupakan proses perubahan bentuk citra untuk mendapatkan informasi tertentu.

Tugas akhir ini membahas tentang proses perbaikan kualitas gambar yang berbasiskan Transformasi Fourier untuk mendapatkan hasil gambar sesuai dengan kebutuhan pengguna. Jika terdapat suatu gambar yang belum memenuhi keinginan dari pengguna, maka dilakukanlah suatu perbaikan kualitas gambar tersebut yang berbasiskan transformasi fourier.


(6)

THE IMPROVEMENT OF IMAGE QUALITY WAS BASED ON THE FOURIER TRANSFORMATION

ABSTRACT

During 1822, Joseph Fourier, the mathematician from France found that: each periodic function (the signal) could be formed from adding of the sinuses of waves/cosinus. The transformation of the image in accordance with his name was the process of the change in the form of the image of getting certain information.

The task of this end discussed about the process of the improvement of the quality of the picture that had the transformation fourier to get results of the picture in a accordance with the requirement for the user. If being gotten a picture that did not yet fill the wish from the user, then was carried out by en improvement of the quality of this picture that had the transformation fourier.


(7)

DAFTAR GAMBAR

Halaman

Gambar 1.1 Diagram Konsepsi 5

Gambar 2.1 Contoh Citra Analog dan Citra Digital 8

Gambar 2.2 Proses Pengolahan Citra 9

Gambar 2.3 Perbaikan Citra dengan Teknik High-Bost 11

Gambar 2.4 Ekualisasi Histogram pada Citra 12

Gambar 2.5 Tiga Bidang Studi yang Berkaitan dengan Citra 12

Gambar 2.6 Hubungan Grafika Komputer 13

Gambar 2.7 Contoh Grafika Komputer 13

Gambar 2.8 Hubungan Pengolahan Citra 14

Gambar 2.9 Operasi Penghilangan Derau 14

Gambar 2.10 Operasi Titik 15

Gambar 2.11 Perbaikan Citra dengan Penghalusan 16 Gambar 2.12 Pengaburan akibat Peratan-ratan dengan Berbagai Ukuran Jendela 16

Gambar 2.13 Transformasi Fourier 18

Gambar 2.14 Penerapan Transformasi Fourier 20

Gambar 2.15 Penerapan Logarithmic Transformasi Fourier 21

Gambar 2.16 Transformasi Fourier Pola Periodik 22

Gambar 2.17 2 Piksel Lebar Garis Vertikal Trnasformasi Fourier 22

Gambar 2.18 Citra dengan Spektrum Fouriernya 23

Gambar 3.1 Histogram Gambar dengan Tingkat Kontras yang Berbeda 27 Gambar 3.2 Penerapan Transformasi Fourier dari Garis Diagonal 31

Gambar 3.3 Fourier Frekuensi 31

Gambar 3.4 Pengaturan Frekuensi Lebih Besar dari Nol 31 Gambar 3.5 Penerapan Invers Transformasi Fourier 32 Gambar 3.6 Penerapan Invers Transformasi Fourier Kompleks 32 Gambar 3.7 Filter untuk Menghilangkan Pola-Pola pada Citra Awal 33

Gambar 4.1 Form Utama 38

Gambar 4.2 Form Editor 39

Gambar 4.3 Citra sebelum Dilakukan Perbaikan 39

Gambar 4.4 Citra dengan Kecerahan +40 40

Gambar 4.5 Citra dengan Kecerahan -40 40

Gambar 4.6 Citra dengan ketajaman +10 41

Gambar 4.7 Perbaikan Citra dengan Cara Kehalusan dengan Tingkatan 2 41

Gambar 4.8 Citra Awal 43


(8)

ABSTRAK

Pada tahun 1822, Joseph Fourier, ahli matematika dari Prancis menemukan bahwa: setiap fungsi periodik (sinyal) dapat dibentuk dari penjumlahan gelombang-gelombang sinus/cosinus. Transformasi citra sesuai namanya merupakan proses perubahan bentuk citra untuk mendapatkan informasi tertentu.

Tugas akhir ini membahas tentang proses perbaikan kualitas gambar yang berbasiskan Transformasi Fourier untuk mendapatkan hasil gambar sesuai dengan kebutuhan pengguna. Jika terdapat suatu gambar yang belum memenuhi keinginan dari pengguna, maka dilakukanlah suatu perbaikan kualitas gambar tersebut yang berbasiskan transformasi fourier.


(9)

THE IMPROVEMENT OF IMAGE QUALITY WAS BASED ON THE FOURIER TRANSFORMATION

ABSTRACT

During 1822, Joseph Fourier, the mathematician from France found that: each periodic function (the signal) could be formed from adding of the sinuses of waves/cosinus. The transformation of the image in accordance with his name was the process of the change in the form of the image of getting certain information.

The task of this end discussed about the process of the improvement of the quality of the picture that had the transformation fourier to get results of the picture in a accordance with the requirement for the user. If being gotten a picture that did not yet fill the wish from the user, then was carried out by en improvement of the quality of this picture that had the transformation fourier.


(10)

BAB 1

PENDAHULUAN

1.1Latar Belakang

Pemrosesan citra adalah ilmu untuk memanipulasi gambar, yang melingkupi teknik-teknik untuk memperbaiki atau mengurangi kualitas gambar, menampilkan bagian tertentu dari gambar, membuat sebuah gambar yang baru dari beberapa bagian gambar yang sudah ada, dan beberapa teknik manipulasi gambar lainnya. Suatu citra yang mempunyai kontras rendah dapat dihasilkan dari sumber citra dengan proses pencahayaan atau penerangan yang rendah atau karena adanya kesalahan setting pada saat pengambilan citra berlangsung.

Citra digital merupakan suatu array dua dimensi atau suatu matriks yang elemen – elemennya menyatakan tingkat keabuan dari elemen gambar. Secara konseptual citra (ƒ) bisa dianggap sebagai fungsi riil yang terdefinisi pada domain riil juga. Jadi untuk kasus dua dimensi citra, citra dapat ditulis sebagai berikut :

R y x f( , )→

di mana :

x, y Є R, dengan R adalah himpunan bilangan riil, sehingga citra tersebut bisa dinyatakan ƒ (x, y), maka proses image enhancement berbasis transformasi citra pada penelitian ini dilakukan dengan:

a. Mentrasformasikan citra asal ke dalam domain yang sesuai bagi proses image enhancement ini.


(11)

b. Melakukan proses enhancement pada domain tersebut.

c. Mengambil citra kedalam domain spasial untuk ditampilkan atau untuk diproses lebih lanjut.

Salah satu metode transformasi paling populer dalam aplikasi pengolahan citra digital adalah Fast Fourier Transform (FFT). Pada metode ini informasi citra digital ditransformasikan lebih dahulu dengan transformasi fourier, kemudian dilakukan manipulasi pada hasil transformasi fourier tersebut. Transformasi fourier mengubah ƒ(x) menjadi sejumlah eksponensial kompleks. Transformasi fourier dari ƒ(x), didefinisikan sebagai berikut:

∞ −

= f x j ux dx

u

F( ) ( )exp[ 2π ]

di mana:

j = −1

Persamaan diatas adalah persamaan Transformasi Fourier. Jika ƒ(x) adalah bilangan riil, maka F(u) merupakan bilangan kompleks yang dapat diuraikan menjadi:

F(u)=R(u)+ jI(u)

di mana R(u) dan I(u) adalah komponen riil dan imajiner dari F(u).

Oleh karena itu dalam penelitian ini dilakukan perbaikan kualitas citra yang berbasis Transformasi Fourier.

1.2Identifikasi Masalah

Proses perbaikan kualitas gambar yang berbasiskan Transformasi Fourier dilakukan untuk mendapatkan hasil gambar sesuai dengan kebutuhan pengguna. Jika terdapat suatu gambar yang belum memenuhi keinginan dari pengguna, maka dilakukanlah suatu perbaikan kualitas gambar tersebut yang berbasiskan transformasi fourier.


(12)

1.3Perumusan Masalah

Bagaimana menganalisa dan mengimplementasikan perbaikan kualitas citra berbasis transformasi fourier, pada kontras dan pengaturan warna gambar sesuai dengan keinginan pengguna.

1.4Pembatasan Masalah

Batasan masalah pada perbaikan citra ini adalah perbaikan pada kontras dan pengaturan warna pada gambar, dan dalam penelitian ini penulis membatasi tentang perbaikan kualitas pada pencitraan medis.

1.5Kontribusi Penelitian

Selain menambah pemahaman dan pengetahuan penulis tentang image enhancement, hasil dari penelitian ini dapat digunakan untuk perbaikan gambar sesuai dengan kebutuhan para pengguna.

1.6Tujuan Penelitian

Tujuan penelitian image enhancement berbasis Transformasi Fourier adalah untuk memperbaiki kualitas gambar menjadi lebih baik sesuai dengan kebutuhan pengguna.

1.7Metode Penelitian

Secara umum penelitian ini melakukan pembahasan masukan program image enhancement dan menerapkan hasil perbaikan citra dalam suatu bentuk program, dengan beberapa tahapan yaitu:

1. Dilakukan penginputan citra yang asli yang belum mengalami perbaikan. 2. Dilakukan proses konversi citra.


(13)

3. Setelah pegolahan citra dilakukan proses perbaikan kualitas citra yaitu thresholding citra yaitu pengaturan derajat keabuan dan filtering yaitu penyaringan informasi spektral sehingga dihasilkan citra baru yang mempunyai variasi nilai spektral yang berbeda dari citra asli. Dalam hal inilah dilakukan pentransformasian citra asli ke citra baru berbasis transformasi fourier.

1.8Tinjauan Pustaka

Aniati Murni dalam buku Pengantar Pengolahan Citra memuat tentang pengolahan citra yaitu image enhancement serta tentang transformasi fourier.

Riyanto Sigit, ST dan kawan-kawan dalam buku Step by Step Pengolahan Citra Digital, memuat tentang pengolahan citra untuk mengubah citra warna yaitu gray-scale dan thresholding serta tentang image enhancement yaitu histogram serta pembuatan histogram citra.

M. Syamsa Ardisasmita dalam makalahnya Segmentasi dan Rekonstruksi Citra Organ Dalam Tiga Dimemsi Menggunakan Matematika Morfologi daan Triagulasi Delaunay. Disini dilakukan eksperimen dalam visualisasi anatomi patologi sistem pencitraan medis dalam 3 (tiga) dimensi yang berguna untuk perencanaan pembedahan dan perhitungan dosis radiasi pasien.

Setyo Nugroho dalam makalahnya berjudul Penerapan Metode Transformasi Fourier Untuk Perbaikan Citra Digital yang membahas mengenai perbaikan kualitas suatu citra dengan metode frequency domain dan diimplementasikan dengan program mathlab. Disini dilakukan eksperimen untuk memperoleh informasi citra, menampilkan citra, melakukan transformasi fourier pada citra dan menampilkan spektrum fourier dari citra serta menampilkan citra digital hasil dari proses. Setelah dilakukan proses perbaikan citra tersebut, maka citra yang dijadikan sampel terjadi pengurangan noise. Atau dapat dikatakan dengan dilakukan pemrosesan citra digital dengan metode frequency domain dapat melakukan perbaikan pada citra yang tercemari oleh noise tertentu.


(14)

1.9Diagram Konsepsi

Gambar 1.1 Diagram Konsepsi File Citra Asli

(Citra Sebelum Perbaikan)

Citra Setelah Mengalami Perbaikan

Perbaikan Kualitas Citra, meliputi : Pengaturan warna atau kekontrasan

Penajaman gambar Penghalusan gambar


(15)

BAB 2

LANDASAN TEORI

2.1 Citra

Citra (image) adalah gambar pada bidang dua dimensi. Ditinjau dari sudut pandang matematis, citra merupakan fungsi menerus (continue) dari intensitas cahaya pada bidang dua dimensi. Citra sebagai output dari suatu sistem perekaman data dapat bersifat :

1. Optik, berupa foto.

2. Analog berupa sinyal video, seperti gambar pada monitor televisi. 3. Digital yang dapat langsung disimpan pada suatu pita magnetik.

Citra dapat dikelompokkan menjadi dua bagian yaitu citra diam (still image) adalah citra tunggal yang tidak bergerak dan citra bergerak (moving image) yaitu rangkaian citra diam yang ditampilkan secara beruntun (sekuensial), sehingga memberi kesan pada mata sebagai gambar yang bergerak. Setiap citra didalam rangkaian itu disebut frame. Gambar-gambar yang tampak pada film layar lebar atau televisi yaitu terdiri dari ratusan sampai ribuan frame.

Dari sudut pandang pencitraan, citra (image) adalah rekaman hasil interaksi antara gelombang dengan benda (object), yang memberikan sebagian gambaran atau informasi dari benda tersebut. Proses pembentukan citra dengan merekam hasil interaksi inilah yang disebut sebagai proses pencitraan (imaging). Dengan demikian ada 3 (tiga) komponen utama dalam pencitraan, yaitu :


(16)

1. Gelombang pengindera (sensing waves) 2. Benda (object)

3. Alat pengindera (sensor)

Untuk sebuah sistem koordinat merah-hijau-biru, nilai instanious trimulusnya adalah: R(x,y,t) =

0

C (x,y,t,λ)RS(λ)d λ

G(x,y,t) =

0

C (x,y,t,λ)GS(λ)d λ

B(x,y,t) =

0

C (x,y,t,λ)BS(λ)d λ

Jika RS(λ),GS(λ),BS(λ) adalah nilai spectral trimulusnya untuk himpunan warna primer

merah, hijau dan biru, maka spectral trimulus adalah dalam efek, nilai trimulus dibutuhkan untuk memperlihatkan sejumlah cahaya dengan panjang gelombang λ. Dalam sebuah sistem citra multispectral, field citra diamati dan dimodelkan sebagai sebuah integral berat spectral dari fungsi cahaya citra. Fieldspectral citra adalah:

F1(x,y,t) =

0

C (x,y,t,λ)RS(λ)d λ

Di mana S1(λ) adalah respon spectral sensor.

2.2 Pengolahan Citra

Pengolahan citra digital adalah pemrosesan citra menjadi citra yang lain dengan kualitas yang lebih baik, yaitu pemrosesan pada usaha untuk memanipulasi. Citra yang telah menjadi gambar lain menggunakan algoritma atau teknik tertentu. Pengolahan citra mempunyai tujuan yaitu:

1. Proses memperbaiki kualitas citra agar mudah diinterpretasikan oleh manusia atau komputer

2. Teknik pengolahan citra dengan mentrasformasikan citra menjadi citra lain 3. Pengolahan citra merupakan proses awal dari komputer visi


(17)

Pada umumnya pengolahan citra berhubungan dengan citra-citra digital. Dalam hal ini, citra f(x,y) diperoleh secara diskrit dan kemudian dikuantisasi. Maka akan diperoleh suatu citra baru, fˆ: (m,n) → I dengan m,n ∈ I; di mana I adalah himpunan bilangan bulat (integer). Namun demikian, secara umum sistem pengolahan citra mengandaikankan citra asal yang bernilai riil dan menghasilkan bilangan riil juga, meskipun secara teknis pada akhirnya citra ini didigitalkan sebelum disimpan.

Ada beberapa hal yang penting didalam pengolahan citra digital, antara lain teknik-teknik pengambilan citra, model citra digital, sampling dan kua ntitasi, histogram, proses filtering, perbaikan citra sampai pada pengolahan citra digital yang lebih lanjut seperti segmentasi, image clustering dan ekstrasi ciri.

Ada perbedaan yang sangat mendasar mengenai citra digital dan citra analog yang terlihat pada gambar dibawah :

Continous image projected Result of image sampling onto a sensor array and quantization

Gambar 2.1 Contoh Citra Analog dan Citra Digital

Citra digital merupakan representatif dari citra yang diambil oleh mesin dengan bentuk pendekatan berdasarkan sampling dan kuantitasi. Sampling menyatakan besarnya kota-kotak yang disusun dalam baris dan kolom. Dengan kata lain sampling pada citra menyatakan besar kecilnya ukuran pixel (titik) pada citra, jika kuantitasi menyatakan besarnya nilai tingkat kecerahan yang dinyatakan dalam nilai tingkat keabuan (gray scale) sesuai dengan jumlah bit biner yang digunakan oleh


(18)

mesin, maka dapat dikatakan bahwa kuantitasi pada citra menyatakan jumlah warna yang ada pada citra.

Proses pengolahan citra secara diagram yaitu proses dimulai dari pengambilan citra, perbaikan citra sampai dengan pernyataan representatif citra digambarkan denga gambar:

Gambar 2.2 Proses Pengolahan Citra

Secara umum teknik pengolahan citra digital dibagi menjadi 3 tingkat pengolahan, yakni:

1. Tahap 1 yang dinamakan dengan Low-Level Processing (pengolahan tingkat rendah). Pengolahan ini operasional-operasional dasar dalam pengolahan citra, seperti pengurangan noise (noise redution), perbaikan citra (image enhancement) dan restorasi citra (image restoration).

2. Tahap 2 yang dinamakan dengan Mid-Level Processing (pengolahan tingkat menengah). Pengolahan ini meliputi segmentasi pada citra, deskripsi objek dan klasifikasi objek secara terpisah.

3. Tahap 3 yang dinamakan dengan High-Level Processing (pengolahan tingkat tinggi), yang meliputi analisis citra.

Operasi – operasi pengolahan citra meliputi perbaikan kualitas citra, yakni perbaikan kualitas citra ini bertujuan memperbaiki kualitas citra dengan memanipulasi parameter-parameter citra. Melalui operasi ini, ciri-ciri khusus yang terdapat dalam didalam citra dapat lebih ditonjolkan. Dalam perbaikan kualitas citra dapat dilakukan operasi – operasi citra, seperti yang tertulis dalam buku Pengolahan Citra Digital yaitu

a. Perbaikan kontras gelap dan terang Capture

(Pengambilan Gambar)

Perbaikan Kualitas Citra

Proses Representasi Citra


(19)

b. Perbaikan tepian objek c. Penajaman

d. Pemberian warna semu e. Penapisan derau

Gambar adalah contoh operasi penajaman. Operasi ini menerima masukan sebuah citra yang gambarnya hendak dibuat tampak lebih tajam. Bagian citra yang ditajamkan adalah tepi-tepi objek.

2.3 Perbaikan Citra

Perbaikan citra adalah proses penajaman fitur tertentu dari citra (misalnya tepian, wilayah atau kontras) agar citra dapat ditampilkan secara lebih baik dan bisa dianalisis secara lebih teliti. Perbaikan citra tidak meningkatkan kandungan informasi dari citra tersebut, melainkan memperlebar jangkauan dinamik dari suatu fitur (feature) sehingga bisa dideteksi atau diamati dengan lebih mudah dan tepat. Tantangan terbesar dalam perbaikan citra adalah penentuan dan kuantifikasi kriteria atau fitur yang akan ditingkatkan. Hal ini karena kriteria atau fitur tersebut sangat bergantung pada aplikasi dan seringkali dirumuskan secara heuristik.

Perbaikan citra dapat dilakukan dengan beberapa macam cara yang dapat dibagi kedalam dua kelompok, yakni perbaikan citra dalam domain spasial dan perbaikan citra dalam domain frekuensi (Fourire). Pembagian ini didasarkan pada kawasan dilakukannya proses perbaikan dan seringkali proses perbaikan pada kedua kawasan ini ekivalen. Jika demikian halnya, pemilihan pengolahan pada kawasan Fourier memberikan keuntungan dengan tersedianya algoritma cepat FFT (Fast Fourier Transform).

Agar citra yang mengalami gangguan mudah diinterpretasikan baik oleh manusia atau mesin, maka citra tersebut perlu dimanipulasi menjadi citra lain yang kualitasnya lebih baik. Pengolahan citra adalah pemrosesan citra menggunakan


(20)

komputer menjadi citra yang kualitasnya lebih baik. Secara umum operasi-operasi yang diterapkan pada citra, jika :

a. Adanya perbaikan atau modifikasi citra perlu dilakukan untuk meningkatkan kualitas penampakan atau untuk menonjolkan beberapa aspek informasi yang terkandung didalam citra

b. Elemen didalam citra perlu dikelompokkan, disesuaikan atau diukur c. Sebahagian citra perlu digabung dengan bagian citra yang lain.

2.3.1 Penajaman Citra

Penajaman citra adalah proses untuk menampakkan struktur halus yang hilang karena adanya efek pengaburan. Penajaman dilakukan dengan suatu tapis lolos tinggi atau dengan sebuah operator yang invarian-geser, misalnya dengan mask yg berisi kombinasi bilangan positif-negatif yg sesuai. Dengan mask ini, perubahan derajat keabuan didalam citra menjadi lebih tajam.

Teknik lain adalah high-boost yang ekivalen dengan pengurangan citra asal yang diperkuat dengan citra yang sudah ditapis lolos rendah.

)) , ( ( )

, ( ) ,

(m n Af m n lowpass f m n

g = −

=(A−1)f(m,n)+[f(m,n)−lowpass(f(m,n))] =(A−1)f(m,n)+highpass(f(m,n))

Jadi, untuk A>1, setiap kali citra asal ditambahkan ke citra yang telah ditajamkan. Hasilnya mirip citra asal tetapi denag tepian yang tajam.


(21)

2.3.2 Pemodelan Histogram

Histogram citra menyatakan frekuensi kemunculan berbagai derajat keabuan dalam citra. Teknik pemodelan histogram mengubah citra hingga memiliki histogram sesuai keinginan. Contohnya adalah ekualisasi histogram yang bertujuan mendapatkan histogram citra dengan distribusi seragam.

Gambar 2.4 Ekualisasi histogram pada citra: (a) sebelum dan (b) setelah ekualisasi

Dalam bidang ilmu komputer terdapat tiga bidang studi yang berkaitan dengan data citra, yang memiliki tujuan yang berbeda yaitu:

a. Grafika Komput er (computer graphic) b. Pengolahan Citra (image processing)

c. Pengenalan Pola (pattern recognition/image interpretation)

Hubungan dari ketiga bidang ilmu tersebut dapat dilihat pada gambar berikut :

Gambar 2.5 Tiga Bidang studi yang berkaitan dengan citra

Grafika komputer bertujuan untuk menghasilkan citra yang lebih tepat yang disebut grafik atau picture dengan primitif-primitif geometri, seperti garis, lingkaran,


(22)

volume dan lain-lain. Primitif-primitif geometri tersebut memerlukan data deskriptif unutk melukis elemen-elemen gambar. Contoh dari data deskriptif adalah koordinat titik, panjang garis, jari-jari lingkaran, tebal garis, warna dan lain-lain. Grafika komputer mempunyai peranan penting dalam visualisasi dan virtual reality.

Gambar 2.6 Hubungan Grafika Komputer

Contoh grafika komputer misalnya menggambar sebuah ‘rumah’ yang dibentuk oleh garis-garis lurus, dengan data masukan berupa koordinat awal dan koordinat ujung garis, seperti pada gambar di bawah

(a) Program Grafika Komputer untuk membuat gambar ‘rumah (b) Gambar 2.7 Contoh Grafika Komputer

Pengolahan citra bertujuan memperbaiki kualitas citra agar mudah diinterpretasikan olah manusia atau mesin yaitu komputer. Teknik-teknik pengolahan citra mentransformasikan citra menjadi citra yang lain. Dalam pengolahan citra, masukannya adalah citra dan keluarannya adalah berupa citra juga, tetapi keluaran tersebut telah memiliki kualitas yang lebih baik dari citra masukan. Termasuk dalam bidang ini juga adalah pemampata citra (image compression).


(23)

Gambar 2.8 Hubungan Pengolahan Citra

Contoh operasi pengolahan citra lainnya adalah penghilangan derau (noise) pada citra Lena (Gambar 2.9). Citra Lena yang di sebelah kiri mengandung derau berupa bintik-bintik putih (derau). Dengan operasi penapisan (filtering), derau pada citra masukan ini dapat dikurangi sehingga dihasilkan citra Lena yang kualitasnya lebih baik.

(a) Citra Lena yang mengandung derau, (b) hasil dari operasi penapisan derau. Gambar 2.9 Operasi Penghilangan Derau

Dalam perbaikan citra pada Domaian Spasial terdapat dua operasi yaitu: 1. Operasi Titik

Operasi titik (point operation) adalah operasi tanpa memori (zero memory atau memoryless), dimana nilai derajat keabuan suatu piksel dipetakan ke derajat keabuan baru melalui transformasi .


(24)

Gambar 2.10 Operasi titik :

(a) sretching , (b) clipping dan (c) thresholding

Sebagai contoh kontrras rendah yang timbul akibat pencahayaan yang buruk atau efek non-linier sensor dapat diatasi dengan penarikan kontras (contrast stretching).

Pada daerah yang kontrasnya direndahkan, kemiringannya dibuat > 1, sedangkan parameter a dan b diperoleh dari histogram citra. Operasi yang lebih sederhana lagi adalah pemotongan (clipping) dan thresholding. Jika pada persamaan diatas nilai parameter α = γ = 0, maka proses ini disebut sebagai clipping. Sedangkan thresholding adalah kasus dari clipping dimana parameter a = b = 1.

Operasi titik lain adalah citra negatif digital yang diperoleh dengan membalik penskalaan derajat keabuan. Jika f(m,n) adalah nilai derajat keabuan untuk piksel pada posisi (m,n), dan L nilai maksimum dari piksel, maka citra negatif g(m,n) diperoleh dengan mengubah nilai tersebut dengan formula g(m,n)=L-f(m,n).

2. Operasi Spasial

Operasi spasial adalah operasi pengubahan suatu nilai piksel dengan mempertimbangkan nilai piksel tetangganya. Contoh yang sederhana adalah proses penghalusan (smoothing) citra f(m,n)dengan menggantikan suatu nilai piksel


(25)

Suatu piksel digantikan dengan setengah nilai awal ditambah rata-rata satu piksel di atas, di bawah, di samping kiri dan di samping kanannya. Rata-rata spasial dipakai untuk penghalusan, penapisan lolos rendah (low-pass) dan pencuplikan citra bagian (subsampling). Untuk citra dengan derau:

G(m,n)= f(m,n)+η(m,n)

dimana η(m,n) adalah derau putih dengan variansi, maka perata-rataan memberikan citra hasil:

dengan η(m,n)adalah rata-rata spasial η(m,n). Jika mean dari η(m,n) nol, maka daya derau ditekan sebanyak cacah piksel dalam jendela

Gambar 2.11 Perbaikan citra dengan penghalusan

Dari rumus tersebut bisa disimpulkan bahwa semakin besar ukuran jendela, akan semakin besar pula derau yang bisa ditekan. Akan tetapi, ada dua hal yang harus dipertimbangkan dalam memilih ukuran jendela untuk perata-rataan domain spasial. Pertama, jendela yang besar memerlukan waktu perhitungan yang lebih banyak. Kedua, fitur halus citra akan menjadi kabur dengan semakin besarnya ukuran jendela.


(26)

2.4 Transformasi Fourier

2.4.1 Dasar-dasar Transformasi Fourier

Kesatuan transformasi dua dimensi telah menemukan dua apliksi utama dalam pengolahan citra. Transformasi terbukti berguna untuk mengeluarkan keragaman yang terdapat dalam suatu citra. Sebagai contoh, dengan menggunakan transformasi fourier, nilai rata-rata atau terminologi dc sebanding dengan amplitudo rata-rata dari suatu citra dan terminologi rata-rata frekuensi tinggi (terminologi ac) memberikan suatu indikasi amplitudo dan orientasi sisi dalam suatu citra.

Reduksi dimensi dalam perhitungan adalah aplikasi kedua pengolahan citra. Dengan kata lain, koefisien yang kecil dari transformasi-tranformasi tersebut dapat ditiadakan dari operasi pemrosesan, seperti penyaringan tanpa harus kehilangan banyak akurasi pemrosesan. Aplikasi lain yang terdapat dalam pengkodean citra adalah transformasi pengkodean citra, dimana reduksi lebar pita(brandwith) dicapai dengan cara membuang atau nyata sekali mengakuantisasi koefisien transformasi low-magnitude.

Transformasi kesatuan adalah suatu jenis transformasi linier spesifik, dimana transformasi ini memiliki operasi linier. Transformasi kesatuan dari N1 x N2 array

citra F(n1,n2) menghasilkan transformasi array citra N1 x N2 seperti penjelasan berikut

∑ ∑

= = = 1 1 1 2 1 2 ) 2 , 1 ; 2 , 1 ( ) 2 , 1 ( ) 2 , 1 ( N n N n m m n n A n n F m m F

Di mana A(n1,n2;m1,m2) merepresentasikan transformasi inti depan. Transformasi

kebalikan atau transformasi invers menyediakan paengalamatan dari transformasi daerah kebaris citra.

Mengapa dibutuhkannya transformasi yaitu setiap orang pada suatu saat pernah menggunakan suatu teknik analisa dengan transformasi untuk menyederhanakan penyelesaian suatu masalah. Misalkan penyelesaian suatu fungsi y = x/z . Solusi penyelesaian persamaan tersebut dapat dilakukan secara analisis


(27)

konvensional yaitu dengan pembagian secara manual. Sedangkan analisis transformasi yaitu melakukan transformasi :

log(y) = log(x) – log(z)

look-up table → pengurangan → look-up table.

Transformasi juga juga diperlukan jika ingin mengetahui suatu informasi tertentu yang tidak tersedia sebelumnya. Misalkan jika ingin mengetahui informasi frekuensi kita memerlukan transformasi fourier. Sedangkan jika ingin mengetahui informasi tentang kombinasi skala dan frekuensi kita memerlukan transformasi wavelet.

Transformasi Fourier adalah suatu model transformasi yang memindahkan domain spasial atau domain waktu menjadi domain frekuensi.

Gambar 2.13 Transformasi Fourier

Transformasi fourier merupakan suatu proses yang banyak digunakan untuk memindahkan domain dari suatu fungsi atau objek ke dalam domain frekuensi. Di dalam pengolahan citra digital, transformasi fourier digunakan untuk mengubah domain spasial citra menjadi domain frekuensi. Analisis-analisis dalam domain frekuensi banyak digunakan seperti filtering. Dengan menggunakan transformasi fourier, sinyal atau citra dapat dilihat sebagai objek dalam domain frekuensi.


(28)

A. Transformasi Fourier 1D

Transformasi fourier kontinu 1D dari suatu fungsi waktu f(t) didefenisikan dengan :

F(

∞ −

= f(t).e )

(ω -jωtdt

Di mana F(ω) adalah fungsi dalam domain frekuensi

ω adalah frekuensi radial 0 - 2πf, atau dapat dituliskan bahwa ω = 2πf

B.Transformasi Fourier 2D

Transformasi fourier kontinu 2D dari suatu fungsi spasial f(x,y) didefenisikan dengan :

F(ω1,ω2) =

∞ ∞ − ∞ ∞ − e y x

f( , ). -j(ω1x+ω2y)dxdy

Di mana F(ω1,ω2) adalah fungsi dalam domain frekuensi

f(x,y) adalah frekuensi spasial atau citra

ω1dan ω2 frekuensi radial 2π

Transformasi fourier yang digunakan dalam pengolahan citra digital adalah transformasi fourier 2D.

2.4.2 Transformasi Fourier Diskrit

Transformasi fourier diskrit atau disebut dengan Discrete Fourier Transform (DCT) adalah model transformasi fourier yang dikenakan pada fungsi diskrit, dan hasilnya juga diskrit. DFT didefenisikan dengan :

F(k) =

= N n e n f 1 ).


(29)

A. Transformasi Fourier Diskrit 1D

DFT seperti rumus diatas dinamakan dengan DFT 1-dimensi, DFT semacam ini banyak digunakan dalam pengolahan sinyal digital.

B.Transformasi Fourier Diskrit 2D

Transformasi Fourier Diskrit (DFT) 2-dimensi adalah transformasi fourier diskrit yang telah dikenakan pada fungsi 2D (fungsi dengan dua variabel bebas), yang didefenisikan sebagai berikut :

F(k1,k2) =

= 1

0 1

N

n

=

2

0 2

N

n

f (n1,n2).e-jπT(k1n1/N1+k2n2/N2)

DFT 2D ini banyak digunakan dalam pengolahan citra digital, karena data citra digunakan sebagai fungsi 2D.

2.4.3 Transformasi Fourier dalam Perbaikan Citra

Transformasi Fourier yang digunakan jika ingin mengakses geometris karakteristik dari domain spasial gambar, maka gambar di Fourier domain decomposed ke dalam komponen sinusoidal, mudah untuk diperiksa frekuensinya atau proses tertentu dari gambar, sehingga mempengaruhi struktur geometris dalam domain spasial.

Dalam implementasi gambar bergeser sedemikian rupa bahwa Nilai DC (yakni gambar berarti) F (0,0) akan ditampilkan di bagian tengah gambar. Yang jauh dari titik pusat gambar, semakin tinggi adalah frekuensi yang sesuai. Transformasi Fourier yang besarnya dihitung dari hasil yang kompleks.


(30)

Terlihat bahwa nilai DC yang jauh dari komponen terbesar dari gambar. Namun, rentang dinamis yang koefisien Fourier (yakni nilai-nilai intensitas di gambar Fourier) terlalu besar untuk ditampilkan pada layar, sehingga semua nilai-nilai lain muncul sebagai hitam. Penerapan logarithmic transformasi ke foto diperoleh

Gambar 2.15 Penerapan Logarithmic Transformasi

Hasilnya menunjukkan bahwa gambar berisi semua komponen frekuensi, tetapi yang besarnya lebih kecil untuk mendapatkan frekuensi yang lebih tinggi. Oleh karena itu, lebih rendah frekuensi berisi informasi dari gambar yang semakin tinggi. Gambar yang di transform juga memberitahu bahwa terdapat dua arah mendominasi dalam gambar Fourier, satu lewat vertikal dan horizontal melalui pusat. Ini berasal dari pola yang biasa di latar belakang foto yang asli. Dengan tahapan pelaksanaan Transformasi Fourier yang sama akan muncul dalam gambar.

Nilai setiap titik menentukan tahap yang sesuai frekuensi. Seperti pada gambar besarnya, dapat mengenali garis vertikal dan horisontal sesuai dengan pola pada gambar asli. Tahap gambar yang tidak menghasilkan banyak informasi baru tentang struktur tata ruang domain gambar, sehingga dalam contoh berikut akan dibatasi hanya menampilkan besarnya dari Fourier Transform.

Gambar ini berisi frekuensi yang sama (frekuensi dan jumlah) sebagai input gambar yang asli dengan sebenarnya gambar tersebut rusak. Ini menunjukkan bahwa tahap informasi sangat penting untuk membangun kembali gambar yang benar dalam domain spasial.

Akan dilakukan suatu percobaan dengan beberapa gambar untuk lebih mudah memahami sifat dari transform. Respon dari Transformasi Fourier pola periodik ke dalam domain spasial foto dapat dilihat sangat mudah dalam buatan gambar berikut.


(31)

Gambar 2.16 Transformasi Fourier Pola Periodik

Menunjukkan 2 piksel lebar garis vertikal. Transformasi Fourier ini adalah gambar yang ditampilkan dalam

Gambar 2.17 2(dua) Piksel Lebar Garis Vertikal Transformasi Fourier Dilihat secara lebih cermat, dapat dilihat bahwa nilai-nilai utama. Nilai DC dan sejak Fourier gambar simetris ke pusat, dua poin sesuai dengan frekuensi dari garis dalam gambar asli. Diperoleh bahwa dua titik berada pada garis horisontal melalui pusat gambar, karena gambar intensitas dalam domain spasial perubahan yang paling horizontal. Berikut adalah contoh gambar beberapa citra dengan spectrum fouriernya :


(32)

(33)

BAB 3

ANALISIS PERBAIKAN KUALITAS CITRA

3.1 Analisis Citra

Image enhancement terbagi dalam 2 kategori, yaitu metode spatial domain dan metode frequency domain. Spatial domain berkenaan dengan ruang gambar itu sendiri, dan berdasarkan manipulasi langsung pixel- pixel dari gambar. Frequency domain didasarkan pada modifikasi transformasi Fourier pada gambar. Proses spatial domain mempunyai bentuk rumus :

)] , ( [ ) ,

(x y T f x y

g =

Di mana f(x,y) adalah input image, g(x,y) adalah gambar yang telah diproses, dan T adalah operator dari f.

3.1.1 Pengaturan Warna Pada Gambar

Semakin pentingnya peran gambar digital dalam kehidupan sehari-hari ini makin meningkatkan kebutuhan akan gambar digital yang bebas dari adanya noise sehingga gambar digital yang ada dapat terlihat dengan jelas. Noise yang dimaksud disini adalah detail gambar yang kurang jelas karena pencahayaan yang kurang bagus. Dari gambar digital yang jelas itu nantinya diharapkan dapat memberikan informasi yang tepat bagi orang yang hendak memanfaatkan gambar digital tersebut.

Color constancy atau ketetapan warna adalah salah satu keistimewaan dari sistem penglihatan manusia, yang mengusahakan agar warna yang diterima dari suatu benda terlihat sama meskipun berada pada kondisi pencahayaan yang berbeda-beda. Misalnya apel akan terlihat berwarna hijau pada saat siang hari dengan pencahayaan


(34)

yang utama adalah putih matahari. Apel tersebut juga akan terlihat berwarna hijau pada saat matahari terbenam atau dengan pencahayaan berwarna merah. Hal ini yang membantu kita untuk mengidentifikasi suatu benda.

Karena kelebihan dari color constancy itu, maka dikembangkan algoritma yang dapat mengakomodasikan color constancy sehingga dapat dimanfaatkan untuk sistem penglihatan pada robot ataupun computer vision.

Berdasar pada teori bahwa image terdiri dari dua komponen, yaitu illumination dan reflectance dan dengan mengetahui bahwa illumination part mendominasi frekuensi rendah dan reflectance part mendominasi frekuensi tinggi pada frequency domain, maka apabila kedua komponen itu dapat dipisahkan dengan melemahkan frekuensi rendah dan menguatkan frekuensi tinggi akan menimbulkan perbaikan (enhancement) dan penajaman (sharpening) pada image. Sebuah image mempunyai persamaan sebagai berikut:

f(x,y) = i(x,y) * r(x,y)

Di mana f(x,y) adalah sebuah image merupakan hasil perkalian (product) dari i(x,y) yang merupakan komponen illumination dengan r(x,y) yang merupakan komponen reflectance.

Untuk menjaga apabila ada piksel yang bernilai 0 yang akan menimbulkan error pada proses logaritma, seluruh piksel akan ditambahkan dengan offset sebesar 1 agar terhindar dari error tersebut. Karena karakteristik yang dimiliki oleh komponen illumination dan reflectance bekerja pada domain frekuensi, maka harus dilakukan transformasi fourier pada image.

Setelah dipindah dalam domain frekuensi, barulah image tersebut diproses dengan menggunakan filter yang sesuai agar tujuan awal dapat tercapai yaitu untuk melemahkan frekuensi rendah dan memperkuat frekuensi tinggi sehingga terjadi image enhancement dan image sharpening dengan formula:


(35)

= H(u,v) Fi(u,v) + H(u,v) Fr(u,v)

Di mana S(u,v) adalah transformasi fourier dari image yang telah diproses. Sehingga untuk mendapatkan hasil yang sebenarnya perlu dikembalikan ke dalam spatial domain dengan formula :

s(x,y) = F-1{S(u,v)}

= F-1{H(u,v) Fi(u,v)} + F-1{H(u,v) Fr(u,v)} = i’(x,y) + r’(x,y) (5)

Langkah terakhir adalah menghilangkan operasi logaritma yang dilakukan diawal proses dengan cara melakukan operasi eksponensial sehingga dapat diperoleh enhanced image yang diinginkan dilambangkan dengan g(x,y), yaitu :

g(x,y) = ℮s(x,y)

= ℮i’(x,y) * ℮r’(x,y)

3.1.2 Pemodelan Histogram

Histogram adalah dasar dari sejumlah teknik pemrosesan citra pada domain spasial, seperti perbaikan, kompresi dan segmentasi citra. Histogram mudah untuk dikalkulasikan dalam suatu software dan hanya membutuhkan hardware-hardware yang ekonomis dalam penerapannya. Hal ini yang menjadikannya sebagai alat yang popular dalam hal pemrosesan gambar.

Histogram dari suatu citra digital dengan range tingkat [0…L-1] adalah sebuah fungsi diskrit h(rk)=nk, dengan rk adalah tingkat keabuan ke-k dan nk adalah jumlah piksel dalam citra yang memiliki tingkat keabuan rk.

Sumbu horisontal dari histogram menyatakan nilai tingkat keabuan rk. Sumbu vertikal menyatakan nilai dari h(rk)=nk atau p(rk) = nk/n (jika nilainya dinormalisasi).


(36)

Gambar 3.1 Histogram Gambar dengan Tingkat Kekontrasan Citra yang Berbeda

Persamaan histogram atau lebih dikenal dengan “Histogram equalization” digunakan untuk memperlebar range tingkat keabuan, sehingga akan meningkatkan kekontrasan citra. Memiliki persamaan transformasi seperti berikut:

untuk k=0,1,2,…,L-1

Metode pemrosesan histogram yang sudah dibahas, yaitu “histogram equalization” bersifat global, karena piksel-piksel dimodifikasi menggunakan fungsi transformasi berbasis pada intensitas seluruh piksel pada citra. Seringkali diperlukan perbaikan pada suatu daerah yang kecil pada di dalam citra.


(37)

Teknik “histogram equalization” bisa diterapkan untuk perbaikan lokal. Caranya, definisikan daerah ketetanggaan (neighborhood), dan pindahkan pusat neighborhood piksel demi piksel pada keseluruhan citra. Pada setiap lokasi piksel, histogram dari piksel-piksel dalam neighborhood dihitung. Selanjutnya dispesifikasikan fungsi transformasi “histogram equalization” dan fungsi ini digunakan untuk memetakan intensitas piksel pada pusat neighborhood. Ulangi langkah tersebut pada seluruh piksel dalam citra.

Jarak dari titik ke pusat dapat dijelaskan sebagai berikut, maksimum frekuensi yang dapat diwakili dalam domain spasial adalah dua piksel lebar jalur (satu putih, satu hitam).

3.1.3. Penghalusan Citra

Filter penghalusan digunakan untuk mengaburkan (blurring) citra dan untuk mereduksi noise. Blurring biasa digunakan sebagai langkah pra pemrosesan, seperti untuk menghilangkan detail kecil dari suatu citra sebelum dilakukan ekstraksi objek, dan untuk menghubungkan celah kecil yang memisahkan garis atau kurva. Reduksi noise bisa diselesaikan dengan pengkaburan baik dengan menggunakan filter linier maupun filter non-linier.

a. Filter Penghalusan Linear

b. Order-Statistics Filters

Order-statistics filters adalah filter spasial nonlinear yang responnya didasarkan pada pengurutan (ranking) dari intensitas piksel-piksel yang


(38)

dilingkup oleh filter. Selanjutnya, intensitas piksel pada pusat filter diganti dengan intensitas hasil pengurutan.

Order-statistics filter yang banyak digunakan adalah filter median, yang mengganti intensitas piksel pada pusat filter dengan median dari intensitas neighborhood. Filter median cukup efektif untuk menghilangkan impulse noise, atau disebut juga salt-and-pepper noise karena kemunculan noise yang seperti titik putih dan hitam dalam citra.

Median, x, dari sekumpulan nilai adalah suatu nilai yang dipilih sedemikian rupa sehingga separuh dari kumpulan nilai kurang dari atau sama dengan x, dan separuhnya lagi lebih besar atau sama dengan x.

Pertama kali, intensitas piksel dalam neighborhood diurutkan, menentukan nilai median, dan selanjutnya mengganti intensitas piksel pada pusat neighborhood dengan median. Jika ukuran neighborhood adalah 3 x 3, maka median adalah nilai terbesar ke 5. Klaster piksel terang atau gelap yang terisolasi di tengah tetangganya, dan memiliki luas kurang dari n2/2, dapat dihilangkan dengan filter median n x n.

Order-statistics filters lain yang bisa digunakan adalah max filter (memilih nilai terbesar), yang berguna untuk memilih intensitas paling terang dalam citra. Selain itu, bisa juga digunakan min filter dan mean filter.

Smoothing (blurring) dapat dilakukan dengan menurunkan range pada komponen high-frequency dari transformasi image tersebut. Ada tiga tipe lowpas

filters, yaitu: ideal, Butterworth, danGaussian (dengan range mulai dari yangpaling

sharp/tajam ke yang paling smooth/lembut).

Butterworth filter merupakan transisi dari kedua tipe lainnya, dikarenakan memiliki parameter filter order, jika nilaiparameter ini tinggi hasil filteringnya akan mendekati ke ideal filter, sebaliknya jika nilaiparameter ini rendah hasil filteringnya akanmendekati ke Gaussian filter.


(39)

3.1.4 Penajaman citra

Tujuan utama dari sharpening (penajaman) ialah untuk memperoleh detail yang jelas dari suatu citra atau meningkatkan detail dari citra yang telah kabur baik karena kesalahan atau sebagai dampak dari suatu metode pengmbilan citra tertentu.

Penajaman citra bisa didapat pada frequency domain dengan menggunakan proses high-pass filtering, dengan mengurangi komponen low-frequency tanpa mengganggu informasi high-frequency pada transformasi Fourier-nya. High-pass

filtering merupakan kebalikan dari low-pass filtering, persamaannya:

Hhp (u,v) = 1 – Hlp (u,v)

di mana Hlp (u,v), merupakan fungsi transfer dari lowpass filter yang berkaitan. Oleh

sebab itu, bila lowpass filter mengurangi (mengatenuasi) frequency, higpass filter akan melewatkannya, begitu pula sebaliknya.

3.2 Analisis Fourier

Transformasi Fourier dua dimensi dipergunakan untuk menghitung spektrum energi citra pada domain frekuensi. Perbaikan penampilan citra dan koreksi linear dapat dilakukan dengan filter komponen-komponen frekuensi. Pilihan jenis filter tergantung pada frekuensi guling dari peralatan sistem optik dan faktor linear yang menyebabkan kualitas citra mengalami degradasi. Setelah itu transformasi Fourier balik pada komponen-komponen frekuensi akan mengembalikan citra terkoreksi ke domain spasial. Karena data ditra digital sangat besar maka untuk meningkatkan waktu perhitungan algoritma Transformasi Fourier Cepat (FFT), harus digunakan beberapa unit pengolah (CPU) yang bekerja secara paralel.

Dengan demikian, dalam poin Fourier gambar pertengahan antara pusat dan Edge dari gambar, yaitu mewakili frekuensi adalah setengah dari maksimum. Penyelidikan lebih lanjut dari Fourier gambar menunjukkan bahwa besarnya frekuensi yang lain pada gambar kurang dari 1/100.


(40)

Efek yang mirip seperti dalam contoh di atas dapat terlihat ketika menerapkan ke Transformasi Fourier yang terdiri dari garis diagonal.

Gambar 3.2 Penerapan Transformasi Fourier dari Garis Diagonal

Ini menunjukkan besarnya dari Tranforamsi Fourier, yang memperlihatkan bahwa komponen utama dari transformasi gambar adalah Nilai DC dan dua poin sesuai dengan frekuensi yang stripes.

Gambar 3.3 Fourier Frekuensi

Dibandingkan dengan yang asli gambar Fourier, beberapa poin lagi muncul. Yang keseluruhannya sama pada diagonal sebagai tiga komponen utama, yaitu semua berasal dari garis berkala. Frekuensi yang mewakili semua Multiples dari frekuensi dasar dari garis dalam domain spasial gambar.

Transformasi Fourier gambar dapat digunakan untuk menyaring frekuensi. Sebuah contoh sederhana yang diilustrasikan dengan gambar di atas. Jika dikalikan (kompleks) Fourier gambar diperoleh di atas dengan foto yang berisi lingkaran (dari r = 32 pixels), dapat terlihat seperti pada gambar.


(41)

Dengan penerapan inverse Transformasi Fourier diperoleh

Gambar 3.5 Penerapan Invers Transformasi Fourier

Selain dapat menjelaskan hal ini dengan menambahkan kompleks gambar Fourier dari dua contoh gambar sebelumnya. Untuk menampilkan hasil dan menekankan puncak utama seperti dapat dilihat pada gambar serta menerapkan inverse Transformasi Fourier ke kompleks gambar hasil

Gambar 3.6 Penerapan Invers Transformasi Fourier Kompleks

Dalam fourier ruang itu dapat melihat bahwa baris utama di puncak Fourier domain diputar menurut rotasi dari masukan gambar. Kedua baris di logaritmik gambar (tegak lurus ke arah utama) berasal dari sudut hitam dalam gambar yang sudah diputar.

Ditemukan batas yang memisahkan puncak utama dari latar belakang yang memiliki jumlah yang wajar dalam gambar Fourier yang dihasilkan dari huruf. Jika menurunkan nilai dan latar belakang ini, maka meningkatkan perbedaan utama ke puncak. Jika bentuk teks baris yang baik ,maka hal ini dapat dilakukan dengan menggunakan morphological operator.

Gambar 3.7.a meperlihatkan citra obyek dengan latar belakang pita-pita horizontal. Kemudian dilakukan transformasi Fourier sehingga menghasilkan spectrum frekuensi citra pada gambar 3.7.b. Filter dilakukan pacta spektrum frekuensi dari titik-titik vertikal yang berhubungan dengan pola pita-pita horizontal (Gambar 3.7.c).


(42)

Akhirnya dengan transformasi Fourier inverse diperoleh citra tanpa pola-pola pita (Gambar 3.7.d). Analisis Fourier dapat digunakan untuk mengukur posisi, area dan parameter partikel-partikel lainnya dari suatu citra. Penggunaan analisis Fourier terutama untuk mengoreksi pola-pola gangguan yang bersifat periodik.

Gambar 3.7 Filter untuk Menghilangkan Pola-Pola Pita pada Citra Awal

3.3 Proses dan Cara Penggunaan Program a. Proses Perbaikan Citra

Dalam proses perbaikan citra ini proses-proses yang dilakukan adalah : 1. Citra masukan yang belum mengalami perbaikan

2. Citra tersebut dibaca apakah telah dalam bentuk analog

3. Dilakukan koversi citra yaitu dari citra analog ke digital, agar citra tersebut dapat diproses dalam komputer

4. Dilakukan pengaturan kecerahan citra, dalam hal ini dilakukan pengaturan tingkat kecerahan citra tersebut. Langkah yang dilakukan dalam proses ini adalah apakah citra tersebut akan dinaikkan tingkat kecerahannya atau bernilai positif atau akan


(43)

diturunkan tingkat kecerahannya atau yang bernilai negatif. Perintah yang digunakan adalah :

Val = GetVal(-255, 255, 0, "Brighten") If Val = 1000 Then Exit Function LoadFile Target

For i = 0 To YRes For j = 0 To XRes

R = Pic(j, i, 0) + Val If R < 0 Then R = 0 G = Pic(j, i, 1) + Val If G < 0 Then G = 0 b = Pic(j, i, 2) + Val If b < 0 Then b = 0 PicTemp(j, i, 0) = R PicTemp(j, i, 1) = G PicTemp(j, i, 2) = b Next

Part1 = Int((i / YRes) * P1Val) DoEvents

Next

Draw Target

5. Dilakukan pengaturan ketajaman citra, dalam hal ini langkah yang dilakukan adalah apakah citra tersebut akan dinaikkan yang akan menghasilkan citra menjadi lebih tajam. Perintah yang digunakan adalah :

On Error Resume Next

Dim SharpenPercent As Double, VPic(2) As Integer, SharpenVal As Integer

SharpenVal = GetVal(1, 500, 1, "Sharpen") If SharpenVal = 1000 Then Exit Function SharpenVal = SharpenVal + 1

LoadFile Target

SharpenPercent = SharpenVal / 10 For i = 1 To YRes

For j = 1 To XRes For k = 0 To 2

VPic(k) = Pic(j, i, k) + SharpenPercent * (Pic(j, i, k) - Pic(j - 1, i - 1, k))

If VPic(k) < 0 Then VPic(k) = 0 If VPic(k) > 255 Then VPic(k) = 255 PicTemp(j, i, k) = VPic(k)

Next Next

Part1 = Int((i / YRes) * P1Val) DoEvents

Next

Draw Target

6. Dilakukan pengaturan tingkat kehalusan citra, dalam hal ini langkah yang dilakukan adalah citra akan dinaikkan tingkat kehalusannya yang akan


(44)

menghasilkan citra lebih halus namun terlihat samar. Perintah yang digunakan adalah :

SmoothVal = GetVal(1, 10, 1, "Smooth") If SmoothVal = 1000 Then Exit Function SmoothVal = SmoothVal + 2

LoadFile Target

For i = Int(SmoothVal / 2) To YRes - Int(SmoothVal / 2) For j = Int(SmoothVal / 2) To XRes - Int(SmoothVal / 2)

For k = -Int(SmoothVal / 2) To Int(SmoothVal / 2) For l = -Int(SmoothVal / 2) To Int(SmoothVal / 2)

For m = 0 To 2

VPic(m) = VPic(m) + Pic(j + k, i + l, m)

Next Next Next

For m = 0 To 2

VPic(m) = VPic(m) / SmoothVal ^ 2 Next

For k = 0 To 2

PicTemp(j, i, k) = VPic(k) Next

Next

Part1 = Int((i / YRes) * P1Val) DoEvents

Next

Draw Target

7. Dilakukan proses transformasi fourier pada citra yaitu fungsi FFT2. Fungsi ini digunakan untuk melakukan transformasi fourier terhadap array 2dimensi. Hasil yang diperoleh juga akan berbetuk array 2dimensi. FFT 2D adalah DFT 2D dengan teknik perhitungan yang cepat dengan memanfaatkan sifat periodikal dari transformasi fourier. Maka dengan menggunakan sifat fungsi sinus dan kosinus, algoritma darinFFT 2D adalah :

 Hitung terlebih dahulu FFT 2D untuk n1 = 1 s/d N ½ dan n2 =1 s/d N 2/2

menggunakan rumus DFT yaitu :

F(k1,k2) =

∑ ∑

= = 1 0 1 2 0 2 ). 2 , 1 ( N n N n e n n

f -j2πT(k1n1/N1+k2n2/N2)


(45)

Perintah yang digunakan yaitu : n1 = 0

For i = 1 To Picture1.ScaleWidth Step 15 n1 = n1 + 1

n2 = 0

For j = 1 To Picture1.ScaleWidth Step 15 warna = Picture1.Point(i, j)

r = warna And RGB(255, 0, 0)

g = Int((warna And RGB(0, 255, 0)) / 265)

b = Int(Int((warna And RGB(0, 0, 255)) / 256) / 256) n2 = n2 + 1

x(n1, n2) = Int((r + g + b) / 3)

Picture1.PSet (i, j), RGB(x(n1, n2), x(n1, n2), x(n1, n2))

Next j Next i

Picture2.ScaleHeight = m1 + 1 Picture2.ScaleWidth = m2 + 1 Picture3.ScaleHeight = m1 + 1 Picture3.ScaleWidth = m2 + 1 For i = 1 To m1

For j = 1 To m2 fr = 0 fi = 0

For k1 = 1 To n1 For k2 = 1 To n2

fr = fr + x(k1, k2) * Cos(6.28 * (i * k1 / m1 + j * k2 / m2))

fi = fi - x(k1, k2) * Sin(6.28 * (i * k1 / m1 + j * k2 / m2))

Next k2 Next k1

w = 255 * Abs(fr) / (n1 * n2)

Picture2.Line (i - 0.5, j - 0.5)-(i + 0.5, j + 0.5), RGB(w, w, w), BF

w = 255 * Abs(f1) / (n1 * n2)

Picture3.Line (i - 0.5, j - 0.5)-(i + 0.5, j + 0.5), RGB(w, w, w), BF

xr(i, j) = fr ' xi(i, j) = fi Next j


(46)

b. Langkah – Langkah Penggunaan Program

1. Buka aplikasi visual basic pada program perbaikan citra

2. Pilih menu program, dimana terdapat dua menu yaitu menu file dan menu edit. Dimana kedua menu ini mempunyai fungsi yang berbeda.

Menu file yang berupa :

a) New : yaitu untuk membuka file baru

b) Open : yaitu untuk membuka file yang telah tersimpan pada program c) Save : yaitu untuk menyimpan file pada program

d) Save As : yaitu untuk menyimpan file ke media lain e) Close/Exit : yaitu untuk keluar dari program

Dan menu edit inilah untuk melakukan perbaikan-perbaikan citra yang akan diolah yang diantaranya :

a) Brighten : yaitu untuk pengaturan kecerahan gambar

b) Sharpen : yaitu untuk pengaturan tingkat ketajaman gambar c) Smooth : yaitu untuk pengaturan tingkat kehalusan gambar.

3. Setelah dilakukan pemilihan pengaturan gambar, akan diperolah hasil gambar setelah pengolahan sesuai dengan keinginan. Dan jika ingin menyimpan hasil pengolahan ini dapat menggunakan menu save pada file.


(47)

BAB 4

IMPLEMENTASI SISTEM

4.1 Implementasi

Implementasi perbaikan citra menggunakan transformasi fourier dibuat dengan menggunaka Microsoft Visual Basic 6.0. Aplikasi terdiri beberapa menu editing untuk perbaikan citra. Pada implementasi aplikasi ini dibutuhkan komputer dengan spesifikasi sebagai berikut :

1. Processor Pentium IV 2.0 Ghz 2. Memori DDR 256Mb

3. HDD 40 Gb

4. Sistem Operasi Microsoft Windows XP Sp2 5. Microsoft Visual Basic 6.0 Sp6.


(48)

Gambar 4.2 Form Editor 4.1.1 Penggunaan Program

Pada penggunaan program perbaikan citra ini dilakukan perbaikan citra berupa file citra yang berekstensi jpeg. Pada file citra tersebut dilakukan beberapa percobaan-percobaan perbaikan citra yang tersedia pada aplikasi tersebut.


(49)

1. Perbaikan citra dengan tingkatan kecerahannya (Brighten) dengan tingkat kecerahan (brighten) +40 dan -40

Gambar 4.4 Citra dengan kecerahan +40

Citra setelah dilakukan perubahan dengan penambahan kecerahan +40, maka citra terlihat lebih terang dapat membantu kita melihat lebih terang bagian-bagian dari unsur janin. Seperti yang terlihat pada gambar 4.4

Dilakukan perubahan citra dengan tingkat kecerahan -40

Gambar 4.5 Citra dengan kecerahan -40

Setelah dilakukan perubahan citra dengan tingkat kecerahan -40, maka citra terlihat lebih gelap dari sebelumnya, dimana citra menjadi lebih gelap.


(50)

2. Perbaikan citra dengan tingkatan ketajaman (sharpen) dengan ketajaman +10

Gambar 4.6 Citra dengan ketajaman +10 3. Perbaikan citra dengan cara kehalusan dengan tingkatan 2

Gambar 4.7 Perbaikan citra dengan cara kehalusan dengan tingkatan 2 Setelah melakukan perbaikan-perbaikan citra dan didapat bentuk citra yang di inginkan, citra tersebut dapat langsung disimpan kedalam nama file sama atau menyimpan file citra tersebut dengan nama file berbeda dengan memilih save as pada menu file.


(51)

Penjabaran implementasi citra diatas dapat dilihat pada table berikut : Table 4.1 Penambahan dan Pengurangan Kecerahan Jenis Perbaikan Citra Nilai

Pengolahan Hasil Pengolahan

Perbaikan Bighten (Tingkat Kecerahan)

-40 Citra terlihat lebih gelap (hitam) +40

Citra terlihat lebih terang dan lebih terlihat jelas unsur-unsur

gambar.

-60 Citra terlihat lebih gelap dari tingkat pengolahan -40 +60 Citra terlihat semakin terang Diperoleh kesimpulan bahwa jika tingkat kecerahan semakin besar dalam nilai positif

maka gambar akan terlihat lebih terang dan jelas, dan jika tingkat kecerahan semakin besar dalam nilai negaif maka tingkat kecerahan gambar akan semakin gelap dan

hitam. Dapat dilihat pada gambar 4.4 dan 4.5 Perbaikan Sharpen (Tingkat

Ketajaman)

10 Citra terlihat tidak terlampau tajam

20 Citra terlihat lebih tajam dari angka 10

Diperoleh kesimpulan bahwa semakin besar tingkat ketajaman yang digunakan, maka gambar akan terlihat lebih tajam, dan dapat dilihat pada contoh gambar 4.6 Perbaikan Smooth (Tingkat

Kehalusan)

2 Citra terlihat halus yaitu terlihat lebih samar

5 Citra terlihat lebih halus dari tingkat kehalusan 2 Diperoleh kesimpulan bahwa semakin tinggi tingkat kehalusan yang digunakan, maka

gambar terlihat akan lebih halus dan samar, yang dapat kita lihat pada gambar 4.7 Dari hasi gambar yang telah diperbaiki dan tabel dapat disimpulkan bahwa pergeseran kekanan (menaikkan nilai kecerahan pada citra), akan menyebabkan citra lebih putih. Dan pergeseran kekiri (menurunkan nilai kecerahan pada citra), akan menyebabkan citra lebih gelap.


(52)

4. Dilakukan Transformasi Fourier pada citra diperoleh hasil pada gambar 4.9

Gambar 4.8 Citra Awal

Bagian Real Bagian Imajiner

Gambar 4.9 Hasil Transformasi Fourier Pada Citra 4.8

Pada citra yang didominasi dengan warna hitam gambar 4.8, yang telah ditransformasi fourier pada bagian real akan menyebabkan hasil yang hanya memperlihatkan titik putih pada sisi kanan pada bagian realn dan blur hitam pada bagian imajiner yang terlihat pada gambar 4.9. Hal ini akan membuat lebih sulit dalam melakukan analisis terhadap frekuensi suatu citra. Hal ini disebabkan terjadinya nilai dominan pada suatu frekuensi. Untuk mengurangi dominasi tersebut digunakan fungsi logaritma yang dikenakan pada magnitudenya.


(53)

BAB 5

KESIMPULAN DAN SARAN

4.1 Kesimpulan

Dari hasil uji coba yang telah dilakukan dapat disimpulkan bahwa :

1. Citra yang didominasi warna hitam akan menjadi lebih jelas apabila dilakukan pergeseran tingkat kecerahan (brighten) yang bernilai positif

2. Sebaliknya jika citra yang didominasi warna hitam tersebut digeser tingkat kecerahannya yang bernilai negative, maka akan semakin kabur dan tidak jelas unsur-unsur janin yang terdapat di dalam citra

3. Berbeda dengan citra yang didominasi selain warna hitam, gambar akan semakin kabur jika tingkat kecerahan digeser ke positif dan akan semakin terang apabila di geser ke negatif.

4.2 Saran

Sebagai saran yang ditujukan kepada pembaca yang ingin melakukan perbaikan kualitas citra dengan menggunakan bahasa pemograman Microsoft Visual Basic 6.0 Sp 6, perlu memperhatikan pergeseran tingkat kecerahan (brighten). Sebab ditemukan perbedaan hasil antara penggunaan gambar yang didominasi warna hitan dengan gmbar yang didominasi warna lain.

Untuk itu penulis berharap agar pembaca dapat mengembangkannya baik dalam penganalisaan maupun mengimplementasikanya dalam bahasa pemograman komputer.


(54)

DAFTAR PUSTAKA

Basuki Achmad. 2005. “Pengolahan Citra Digital menggunakan Visual Basic”. Graha Ilmu. Yogyakarta.

DC Champeney. 1985. ”Fourier Transform in Physic”. Student Monographs in Physic. England.

Fourier transform – wikipedia. (n.d.). Fourier Transform.

org/wiki/Fourier_transform, diakses terakhir tanggal 15 Juli 2009.

Milan Sanka, Vaclac Hlavoc and Roger Boyle. 1998. ”Image aprocessing Analysis and Machine Vision”. PWS Publishing.

Murni Aniati. 1992. ”Pengantar Pengolahan Citra”. PT. Elex Media Komputindo Kel Gramedia Bekerja sama dengan Pusat Antar Universitas Sumatera Utara. Jakarta.

Mursita Danang. 2005. ”Matematika Lanjut Untuk Perguruan Tinngi”. Rekayasan Sains. Bandung.

Perbaikan Kualitas Citra, karya Setyo Nugroho.

Rafael C. Conzalez, Richard E. Woods. 1993. “Digital Image Processing”. Addison Wesley Publishing Company Inc. USA.

Salusu. A. 2003. ”Teori dan Penyelesaian Kalkulus Lanjutan”. Graha Ilmu. Jakarta. Sigit Riyanto, ST dkk. 2005. “Step by Step Pengolahan Citra Digital”. Yogyakarta.


(55)

Dim XRes As Integer, YRes As Integer, cState As String

Dim Pic(600, 600, 2) As Integer, PicTemp(600, 600, 2) As Integer Dim Part1 As Integer, Part2 As Integer

Private Type ColRGB Red As Integer Green As Integer Blue As Integer End Type

Event Resize(Width As Long, Height As Long) Event Progress(Prog As Integer, State As String) Const P1Val = 75

Const P2Val = 100 - P1Val Const S1 = "Reading File:" Const S2 = "Analyzing File:" Const S3 = "Drawing Image:" Const S4 = "Done"

Private Function LoadFile(Picture As PictureBox) On Error Resume Next

Dim Counter1 As Long, Counter2 As Long, Val As Long Timer.Enabled = True

Part1 = 0 Part2 = 0 cState = S1

Picture.ScaleMode = 3 XRes = Picture.ScaleWidth YRes = Picture.ScaleHeight For Counter1 = 1 To YRes For Counter2 = 1 To XRes

Val = Picture.Point(Counter2, Counter1) Pic(Counter2, Counter1, 0) = GetRGB(Val).Red Pic(Counter2, Counter1, 1) = GetRGB(Val).Green Pic(Counter2, Counter1, 2) = GetRGB(Val).Blue Next Counter2

DoEvents Next Counter1 cState = S2 End Function

Function OpenPicture(Filename As String) On Error Resume Next

Target.Picture = LoadPicture(Filename) End Function

Private Function GetRGB(ByVal Color As Long) As ColRGB On Error Resume Next

GetRGB.Red = Color Mod &H100

GetRGB.Green = (Color \ &H100) Mod &H100 GetRGB.Blue = (Color \ &H10000) Mod &H100 End Function

Function invert()

On Error Resume Next

Dim VPic(2) As Integer, i As Integer, j As Integer, k As Integer LoadFile Target

For i = 0 To YRes For j = 0 To XRes For k = 0 To 2


(56)

PicTemp(j, i, k) = 255 - Pic(j, i, k) Next

Next

Part1 = Int((i / YRes) * P1Val) DoEvents

Next

Draw Target End Function

Function diffuse()

On Error Resume Next

Dim RndX As Integer, RndY As Integer, i As Integer, j As Integer, DiffuseVal As Integer

DiffuseVal = GetVal(1, 25, 1, "Diffuse") If DiffuseVal = 1000 Then Exit Function LoadFile Target

For i = DiffuseVal To YRes - DiffuseVal For j = DiffuseVal To XRes - DiffuseVal RndX = Rnd * DiffuseVal

RndY = Rnd * DiffuseVal

PicTemp(j, i, 0) = Pic(j + RndX, i + RndY, 0) PicTemp(j, i, 1) = Pic(j + RndX, i + RndY, 1) PicTemp(j, i, 2) = Pic(j + RndX, i + RndY, 2) Next

Part1 = Int((i / YRes) * P1Val) DoEvents

Next

Draw Target End Function

Function emboss()

On Error Resume Next

Dim VPic As Integer, EmbossVal As Integer EmbossVal = GetVal(1, 10, 1, "Emboss") If EmbossVal = 1000 Then Exit Function LoadFile Target

For i = EmbossVal To YRes - EmbossVal For j = EmbossVal To XRes - EmbossVal For k = 0 To 2

VPic = Pic(j, i, k) - Pic(j - EmbossVal, i - EmbossVal, k) + 128

If VPic < 0 Then VPic = 0 If VPic > 255 Then VPic = 255 PicTemp(j, i, k) = VPic

Next Next

Part1 = Int((i / YRes) * P1Val) DoEvents

Next

Draw Target End Function

Function smooth()

On Error Resume Next

Dim i As Integer, j As Integer, VPic(2) As Integer

Dim k As Integer, l As Integer, m As Integer, SmoothVal As Integer

SmoothVal = GetVal(1, 10, 1, "Smooth") If SmoothVal = 1000 Then Exit Function SmoothVal = SmoothVal + 2


(57)

LoadFile Target

For i = Int(SmoothVal / 2) To YRes - Int(SmoothVal / 2) For j = Int(SmoothVal / 2) To XRes - Int(SmoothVal / 2) For k = -Int(SmoothVal / 2) To Int(SmoothVal / 2) For l = -Int(SmoothVal / 2) To Int(SmoothVal / 2) For m = 0 To 2

VPic(m) = VPic(m) + Pic(j + k, i + l, m) Next

Next Next

For m = 0 To 2

VPic(m) = VPic(m) / SmoothVal ^ 2 Next

For k = 0 To 2

PicTemp(j, i, k) = VPic(k) Next

Next

Part1 = Int((i / YRes) * P1Val) DoEvents

Next

Draw Target End Function

Function sharpen()

On Error Resume Next

Dim SharpenPercent As Double, VPic(2) As Integer, SharpenVal As Integer

SharpenVal = GetVal(1, 500, 1, "Sharpen") If SharpenVal = 1000 Then Exit Function SharpenVal = SharpenVal + 1

LoadFile Target

SharpenPercent = SharpenVal / 10 For i = 1 To YRes

For j = 1 To XRes For k = 0 To 2

VPic(k) = Pic(j, i, k) + SharpenPercent * (Pic(j, i, k) - Pic(j - 1, i - 1, k))

If VPic(k) < 0 Then VPic(k) = 0 If VPic(k) > 255 Then VPic(k) = 255 PicTemp(j, i, k) = VPic(k)

Next Next

Part1 = Int((i / YRes) * P1Val) DoEvents

Next

Draw Target End Function

Function engrave()

On Error Resume Next

Dim VPic(2) As Integer, bRelX As Integer, bRelY As Integer, EngraveVal As Integer

EngraveVal = GetVal(1, 10, 1, "Engrave") If EngraveVal = 1000 Then Exit Function LoadFile Target

For i = EngraveVal To YRes - EngraveVal For j = EngraveVal To XRes - EngraveVal For k = 0 To 2

VPic(k) = Pic(j, i, k) - Pic(j + EngraveVal, i + EngraveVal, k) + 128


(58)

If VPic(k) < 0 Then VPic(k) = 0 If VPic(k) > 255 Then VPic(k) = 255 PicTemp(j, i, k) = VPic(k)

Next Next

Part1 = Int((i / YRes) * P1Val) DoEvents

Next

Draw Target End Function

Function mosaic()

On Error Resume Next

Dim sMosaic As Integer, VPic As Integer, MosaicVal As Integer MosaicVal = GetVal(1, 50, 0, "Mosaic")

If MosaicVal = 1000 Then Exit Function LoadFile Target

MosaicVal = MosaicVal + 2

BlockSize = MosaicVal * MosaicVal

For i = 0 To YRes - MosaicVal Step MosaicVal For j = 0 To XRes - MosaicVal Step MosaicVal mr = 0: mg = 0: mb = 0

For k1 = 0 To MosaicVal For k2 = 0 To MosaicVal

mr = mr + Pic(j + k1, i + k2, 0) mg = mg + Pic(j + k1, i + k2, 1) mb = mb + Pic(j + k1, i + k2, 2) Next

Next

mr = mr / BlockSize mg = mg / BlockSize mb = mb / BlockSize For k1 = 0 To MosaicVal For k2 = 0 To MosaicVal

PicTemp(j + k2, i + k1, 0) = mr PicTemp(j + k2, i + k1, 1) = mg PicTemp(j + k2, i + k1, 2) = mb Next

Next

sMosaic = 0 Next

Part1 = Int((i / YRes) * P1Val) DoEvents

Next

Draw Target End Function

Function midday()

On Error Resume Next

Dim sMosaic As Integer, VPic As Integer, MosaicVal As Integer MosaicVal = GetVal(1, 4, 1, "Midday")

If MosaicVal = 1000 Then Exit Function LoadFile Target

MosaicVal = 5 - MosaicVal

BlockSize = MosaicVal * MosaicVal For i = 0 To YRes - MosaicVal For j = 0 To XRes - MosaicVal mr = 0: mg = 0: mb = 0 For k1 = 0 To MosaicVal For k2 = 0 To MosaicVal


(59)

mr = mr + Pic(j + k1, i + k2, 0) mg = mg + Pic(j + k1, i + k2, 1) mb = mb + Pic(j + k1, i + k2, 2) Next

Next

mr = mr / BlockSize mg = mg / BlockSize mb = mb / BlockSize For k1 = 0 To MosaicVal For k2 = 0 To MosaicVal

PicTemp(j + k2, i + k1, 0) = mr PicTemp(j + k2, i + k1, 1) = mg PicTemp(j + k2, i + k1, 2) = mb Next

Next

sMosaic = 0 Next

Part1 = Int((i / YRes) * P1Val) DoEvents

Next

Draw Target End Function

Function neon()

On Error Resume Next Dim VPic(2) As Integer LoadFile Target

For i = 0 To YRes For j = 0 To XRes For k = 0 To 2

g1 = (Pic(j, i, k) - Pic(j + 1, i, k)) ^ 2 g2 = (Pic(j, i, k) - Pic(j, i + 1, k)) ^ 2 VPic(k) = 2 * (g1 + g2) ^ 0.5

If VPic(k) > 255 Then VPic(k) = 255 PicTemp(j, i, k) = VPic(k)

Next Next

Part1 = Int((i / YRes) * P1Val) DoEvents

Next

Draw Target End Function

Function ColourToMono() On Error Resume Next Dim GreyVal As Integer LoadFile Target

For i = 0 To YRes For j = 0 To XRes

GreyVal = 0.3 * Pic(j, i, 0) + 0.59 * Pic(j, i, 1) + 0.11 * Pic(j, i, 2)

For k = 0 To 2

PicTemp(j, i, k) = GreyVal Next

Next

Part1 = Int((i / YRes) * P1Val) DoEvents

Next

Draw Target End Function


(60)

Function brighten() On Error Resume Next

Dim Val As Integer, R As Integer, G As Integer, b As Integer Val = GetVal(-255, 255, 0, "Brighten")

If Val = 1000 Then Exit Function LoadFile Target

For i = 0 To YRes For j = 0 To XRes

R = Pic(j, i, 0) + Val If R < 0 Then R = 0 G = Pic(j, i, 1) + Val If G < 0 Then G = 0 b = Pic(j, i, 2) + Val If b < 0 Then b = 0 PicTemp(j, i, 0) = R PicTemp(j, i, 1) = G PicTemp(j, i, 2) = b Next

Part1 = Int((i / YRes) * P1Val) DoEvents

Next

Draw Target End Function

Function EditRed()

On Error Resume Next

Dim Val As Integer, R As Integer, G As Integer, b As Integer Val = GetVal(-255, 255, 0, "Edit Red")

If Val = 1000 Then Exit Function LoadFile Target

For i = 0 To YRes For j = 0 To XRes

R = Pic(j, i, 0) + Val If R < 0 Then R = 0 G = Pic(j, i, 1) b = Pic(j, i, 2) PicTemp(j, i, 0) = R PicTemp(j, i, 1) = G PicTemp(j, i, 2) = b Next

Part1 = Int((i / YRes) * P1Val) DoEvents

Next

Draw Target End Function

Function EditBlue() On Error Resume Next

Dim Val As Integer, R As Integer, G As Integer, b As Integer Val = GetVal(-255, 255, 0, "Edit Blue")

If Val = 1000 Then Exit Function LoadFile Target

For i = 0 To YRes For j = 0 To XRes R = Pic(j, i, 0) G = Pic(j, i, 1)

b = Pic(j, i, 2) + Val If b < 0 Then b = 0


(61)

PicTemp(j, i, 0) = R PicTemp(j, i, 1) = G PicTemp(j, i, 2) = b Next

Part1 = Int((i / YRes) * P1Val) DoEvents

Next

Draw Target End Function

Function EditGreen() On Error Resume Next

Dim Val As Integer, R As Integer, G As Integer, b As Integer Val = GetVal(-255, 255, 0, "Edit Green")

If Val = 1000 Then Exit Function LoadFile Target

For i = 0 To YRes For j = 0 To XRes R = Pic(j, i, 0)

G = Pic(j, i, 1) + Val If G < 0 Then G = 0 b = Pic(j, i, 2) PicTemp(j, i, 0) = R PicTemp(j, i, 1) = G PicTemp(j, i, 2) = b Next

Part1 = Int((i / YRes) * P1Val) DoEvents

Next

Draw Target End Function

Private Function Draw() On Error Resume Next

Dim R As Integer, G As Integer, b As Integer SetUndo

cState = S3 Target.Cls

For i = 0 To YRes For j = 0 To XRes

R = PicTemp(j, i, 0) G = PicTemp(j, i, 1) b = PicTemp(j, i, 2)

Target.PSet (j, i), RGB(R, G, b) Next

Part2 = Int((i / YRes) * P2Val) DoEvents

Next

Part1 = P1Val Part2 = P2Val cState = S4

RaiseEvent Progress(100, cState) Timer.Enabled = False

UserControl.Width = UserControl.Width + 1 UserControl.Width = UserControl.Width - 1 End Function

Private Function GetVal(MinVal As Integer, MaxVal As Integer, Val As Integer, Title As String) As Integer


(62)

SelVal.ProgMax = MaxVal SelVal.ProgMin = MinVal SelVal.ProgVal = Val SelVal.EditVal = Title SelVal.Show 1

Do While SelVal.Visible = True DoEvents

Loop

GetVal = SelVal.ProgVal DoEvents

End Function

Private Sub Target_Resize() On Error Resume Next

UserControl.Width = Target.Width UserControl.Height = Target.Height

RaiseEvent Resize(Target.Width, Target.Height) End Sub

Private Function SetUndo() On Error Resume Next

UndoPic.Picture = Target.Image DoEvents

End Function

Function undo()

On Error Resume Next

Target.Picture = UndoPic.Image End Function

Private Sub Timer_Timer() Dim tVal As Integer tVal = Part1 + Part2

RaiseEvent Progress(tVal, cState) End Sub

Function tonebalance() On Error Resume Next Dim MidVal As Integer LoadFile Target

For i = 0 To 255 BalVal(i) = 0 Next

For i = 0 To YRes For j = 0 To XRes

MidVal = 0.3 * Pic(j, i, 0) + 0.59 * Pic(j, i, 1) + 0.11 * Pic(j, i, 2)

BalVal(MidVal) = BalVal(MidVal) + 1 DoEvents

Next Next SetVal End Function

Function sShift(Min As Integer, Max As Integer, Val As Integer) On Error Resume Next

Dim MidVal As Integer, tVal As Integer LoadFile Target

For i = 0 To YRes For j = 0 To XRes


(63)

MidVal = 0.3 * Pic(j, i, 0) + 0.59 * Pic(j, i, 1) + 0.11 * Pic(j, i, 2)

If MidVal >= Min And MidVal <= Max Then tVal = Pic(j, i, 0) - Val

If tVal < 0 Then tVal = 0 PicTemp(j, i, 0) = tVal

tVal = Pic(j, i, 1) - Val If tVal < 0 Then tVal = 0 PicTemp(j, i, 1) = tVal

tVal = Pic(j, i, 2) - Val If tVal < 0 Then tVal = 0 PicTemp(j, i, 2) = tVal Else

PicTemp(j, i, 0) = Pic(j, i, 0) PicTemp(j, i, 1) = Pic(j, i, 1) PicTemp(j, i, 2) = Pic(j, i, 2) End If Next Next Draw End Function Function SetVal() Graph.Show 1

Do While Graph.Visible = True DoEvents

Loop

If Graph.MaxVal = -1 Then Exit Function sShift Graph.MinVal, Graph.MaxVal, Graph.Val End Function

Function ColourBalance() On Error Resume Next LoadFile Target For j = 1 To 3

For i = 0 To 255 ColVal(j, i) = 0 Next

Next

For i = 0 To YRes For j = 0 To XRes For k = 1 To 3

ColVal(k, Pic(j, i, k - 1)) = ColVal(k, Pic(j, i, k - 1)) + 1

Next DoEvents Next Next SetVal2 End Function Function SetVal2() ColGraph.Show 1

Do While ColGraph.Visible = True DoEvents

Loop


(1)

PicTemp(j, i, 0) = R PicTemp(j, i, 1) = G PicTemp(j, i, 2) = b Next

Part1 = Int((i / YRes) * P1Val) DoEvents

Next

Draw Target End Function

Function EditGreen() On Error Resume Next

Dim Val As Integer, R As Integer, G As Integer, b As Integer Val = GetVal(-255, 255, 0, "Edit Green")

If Val = 1000 Then Exit Function LoadFile Target

For i = 0 To YRes For j = 0 To XRes R = Pic(j, i, 0)

G = Pic(j, i, 1) + Val If G < 0 Then G = 0 b = Pic(j, i, 2) PicTemp(j, i, 0) = R PicTemp(j, i, 1) = G PicTemp(j, i, 2) = b Next

Part1 = Int((i / YRes) * P1Val) DoEvents

Next

Draw Target End Function

Private Function Draw() On Error Resume Next

Dim R As Integer, G As Integer, b As Integer SetUndo

cState = S3 Target.Cls

For i = 0 To YRes For j = 0 To XRes

R = PicTemp(j, i, 0) G = PicTemp(j, i, 1) b = PicTemp(j, i, 2)

Target.PSet (j, i), RGB(R, G, b) Next

Part2 = Int((i / YRes) * P2Val) DoEvents

Next

Part1 = P1Val Part2 = P2Val cState = S4

RaiseEvent Progress(100, cState) Timer.Enabled = False

UserControl.Width = UserControl.Width + 1 UserControl.Width = UserControl.Width - 1 End Function

Private Function GetVal(MinVal As Integer, MaxVal As Integer, Val As Integer, Title As String) As Integer


(2)

SelVal.ProgMax = MaxVal SelVal.ProgMin = MinVal SelVal.ProgVal = Val SelVal.EditVal = Title SelVal.Show 1

Do While SelVal.Visible = True DoEvents

Loop

GetVal = SelVal.ProgVal DoEvents

End Function

Private Sub Target_Resize() On Error Resume Next

UserControl.Width = Target.Width UserControl.Height = Target.Height

RaiseEvent Resize(Target.Width, Target.Height) End Sub

Private Function SetUndo() On Error Resume Next

UndoPic.Picture = Target.Image DoEvents

End Function Function undo()

On Error Resume Next

Target.Picture = UndoPic.Image End Function

Private Sub Timer_Timer() Dim tVal As Integer tVal = Part1 + Part2

RaiseEvent Progress(tVal, cState) End Sub

Function tonebalance() On Error Resume Next Dim MidVal As Integer LoadFile Target

For i = 0 To 255 BalVal(i) = 0 Next

For i = 0 To YRes For j = 0 To XRes

MidVal = 0.3 * Pic(j, i, 0) + 0.59 * Pic(j, i, 1) + 0.11 * Pic(j, i, 2)

BalVal(MidVal) = BalVal(MidVal) + 1 DoEvents

Next Next SetVal End Function

Function sShift(Min As Integer, Max As Integer, Val As Integer) On Error Resume Next

Dim MidVal As Integer, tVal As Integer LoadFile Target

For i = 0 To YRes For j = 0 To XRes


(3)

MidVal = 0.3 * Pic(j, i, 0) + 0.59 * Pic(j, i, 1) + 0.11 * Pic(j, i, 2)

If MidVal >= Min And MidVal <= Max Then tVal = Pic(j, i, 0) - Val

If tVal < 0 Then tVal = 0 PicTemp(j, i, 0) = tVal

tVal = Pic(j, i, 1) - Val If tVal < 0 Then tVal = 0 PicTemp(j, i, 1) = tVal

tVal = Pic(j, i, 2) - Val If tVal < 0 Then tVal = 0 PicTemp(j, i, 2) = tVal Else

PicTemp(j, i, 0) = Pic(j, i, 0) PicTemp(j, i, 1) = Pic(j, i, 1) PicTemp(j, i, 2) = Pic(j, i, 2) End If

Next Next Draw End Function Function SetVal() Graph.Show 1

Do While Graph.Visible = True DoEvents

Loop

If Graph.MaxVal = -1 Then Exit Function sShift Graph.MinVal, Graph.MaxVal, Graph.Val End Function

Function ColourBalance() On Error Resume Next LoadFile Target For j = 1 To 3

For i = 0 To 255 ColVal(j, i) = 0 Next

Next

For i = 0 To YRes For j = 0 To XRes For k = 1 To 3

ColVal(k, Pic(j, i, k - 1)) = ColVal(k, Pic(j, i, k - 1)) + 1

Next DoEvents Next

Next SetVal2 End Function

Function SetVal2() ColGraph.Show 1

Do While ColGraph.Visible = True DoEvents

Loop


(4)

ColShift ColGraph.MinVal, ColGraph.MaxVal, ColGraph.Val, ColGraph.Opt

End Function

Function ColShift(Min As Integer, Max As Integer, Val As Integer, Opt As Integer)

On Error Resume Next Dim tVal As Integer LoadFile Target If Opt = 0 Then

For i = 0 To YRes For j = 0 To XRes For k = 0 To 2

If Pic(j, i, k) >= Min And Pic(j, i, k) <= Max Then

PicTemp(j, i, k) = Pic(j, i, k) - Val Else

PicTemp(j, i, k) = Pic(j, i, k) End If

Next Next Next Else

For i = 0 To YRes For j = 0 To XRes For k = 0 To 2

PicTemp(j, i, k) = Pic(j, i, k) Next

Next Next

For i = 0 To YRes For j = 0 To XRes

If Pic(j, i, Opt - 1) >= Min And Pic(j, i, Opt - 1) <= Max Then

tVal = Pic(j, i, Opt - 1) - Val If tVal < 0 Then tVal = 0

PicTemp(j, i, Opt - 1) = tVal Else

PicTemp(j, i, Opt - 1) = Pic(j, i, Opt - 1) End If

Next Next End If Draw End Function

Function SavePic(Filename As String) On Error Resume Next

SavePicture Target.Image, Filename End Function

Dim n1, n2, m1, m2 As Integer Dim x(400, 400) As Integer

Dim xr(400, 400), xi(400, 400) As Integer Private Sub Command1_Click()

n1 = 0

For i = 1 To Picture1.ScaleWidth Step 15 n1 = n1 + 1


(5)

For j = 1 To Picture1.ScaleWidth Step 15 warna = Picture1.Point(i, j)

r = warna And RGB(255, 0, 0)

g = Int((warna And RGB(0, 255, 0)) / 265)

b = Int(Int((warna And RGB(0, 0, 255)) / 256) / 256) n2 = n2 + 1

x(n1, n2) = Int((r + g + b) / 3)

Picture1.PSet (i, j), RGB(x(n1, n2), x(n1, n2), x(n1, n2)) Next j

Next i

Picture2.ScaleHeight = m1 + 1 Picture2.ScaleWidth = m2 + 1 Picture3.ScaleHeight = m1 + 1 Picture3.ScaleWidth = m2 + 1 For i = 1 To m1

For j = 1 To m2 fr = 0 fi = 0

For k1 = 1 To n1 For k2 = 1 To n2

fr = fr + x(k1, k2) * Cos(6.28 * (i * k1 / m1 + j * k2 / m2))

fi = fi - x(k1, k2) * Sin(6.28 * (i * k1 / m1 + j * k2 / m2))

Next k2 Next k1

w = 255 * Abs(fr) / (n1 * n2)

Picture2.Line (i - 0.5, j - 0.5)-(i + 0.5, j + 0.5), RGB(w, w, w), BF

w = 255 * Abs(f1) / (n1 * n2)

Picture3.Line (i - 0.5, j - 0.5)-(i + 0.5, j + 0.5), RGB(w, w, w), BF

xr(i, j) = fr ' xi(i, j) = fi Next j

Next i End Sub

Private Sub Command2_Click()

Dim xa(100, 100), xg(100, 100) As Integer Picture4.ScaleHeight = m1 + 1

Picture4.ScaleWidth = m2 + 1 Picture5.ScaleHeight = m1 + 1 Picture5.ScaleWidth = m2 + 1 xam = 0

xgm = 0

For i = 1 To m1 For j = 1 To m2

xa(i, j) = (xr(i, j) ^ 2 + xi(i, j) ^ 2) ^ 0.5 ' xg(i, j) = xi(i, j) / xr(i, j)

If xa(i, j) > xam Then xam = xa(i, j)

If Abs(xg(i, j)) > xgm Then xgm = Abs(xg(i, j)) Next j

Next i

For i = 1 To m1 For j = 1 To m2

' w = Int(256 * xa(i, j) / xam)

Picture4.Line (i - 0.5, j - 0.5)-(i + 0.5, j + 0.5), RGB(w, w, w), BF


(6)

' w = Int(256 * Abs(xg(i, j)) / xgm)

Picture5.Line (i - 0.5, j - 0.5)-(i + 0.5, j + 0.5), RGB(w, w, w), BF

Next j Next i End Sub

Private Sub Command3_Click() Unload Me

End Sub

Private Sub Form_Load() m1 = 16: m2 = 16