indoclub.com Segera gabung banyak keuntungan yang didapatkan
Search
Kamis, 07 Maret 2013
Senin, 04 Maret 2013
Selasa, 10 Juli 2012
KOMPRESI CITRA
KOMPRESI CITRA
Kompresi Citra adalah aplikasi kompresi data yang dilakukan terhadap citra digital dengan tujuan untuk mengurangi redundansi dari data-data yang terdapat dalam citra sehingga dapat disimpan atau ditransmisikan secara efisien.
TEKNIK KOMPRESI CITRA
Teknik kompresi pada citra tetap sama:
- Lossy Compression:
o Ukuran file citra menjadi lebih kecil dengan menghilangkan beberapa informasi dalam citra asli.
o Teknik ini mengubah detail dan warna pada file citra menjadi lebih sederhana tanpa terlihat perbedaan yang mencolok dalam pandangan manusia, sehingga ukurannya menjadi lebih kecil.
o Biasanya digunakan pada citra foto atau image lain yang tidak terlalu memerlukan detail citra, dimana kehilangan bit rate foto tidak berpengaruh pada citra.
o Beberapa teknik loseless:
ƒ Color reduction: untuk warna-warna tertentu yang mayoritas dimana informasi warna disimpan dalam color palette.
ƒ Chroma subsampling: teknik yang memanfaatkan fakta bahwa mata manusia merasa brightness (luminance) lebih berpengaruh daripada warna (chrominance) itu sendiri, maka dilakukan pengurangan resolusi warna dengan disampling ulang. Biasanya digunakan pada sinyal YUV.
• Chorma Subsampling terdiri dari 3 komponen: Y
(luminance) : U (CBlue) : V (CRed)
ƒ Transform coding: menggunakan Fourier Transform seperti DCT.
• Fractal Compression: adalah suatu metode lossy untuk mengkompresi citra dengan menggunakan kurva fractal. Sangat cocok untuk citra natural seperti pepohonan, pakis, pegunungan, dan awan.
• Fractal Compression bersandar pada fakta bahwa dalam sebuah image, terdapat bagian-bagian image yang menyerupai bagian bagian image yang lain.
• Proses kompresi Fractal lebih lambat daripada JPEG
sedangkan proses dekompresinya sama.
- Loseless Compression:
o Teknik kompresi citra dimana tidak ada satupun informasi citra yang dihilangkan.
o Biasa digunakan pada citra medis.
o Metode loseless: Run Length Encoding, Entropy Encoding
(Huffman, Aritmatik), dan Adaptive Dictionary Based (LZW)
HAL-HAL PENTING DALAM KOMPRESI CITRA
1. Scalability/Progressive Coding/Embedded Bitstream
• Adalah kualitas dari hasil proses pengkompresian citra karena manipulasi bitstream tanpa adanya dekompresi atau rekompresi.
• Biasanya dikenal pada loseless codec.
• Contohnya pada saat preview image sementara image tersebut didownload. Semakin baik scalability, makin bagus preview image.
• Tipe scalability:
a. Quality progressive: dimana image dikompres secara perlahan-lahan dengan penurunan kualitasnya
b. Resolution progressive: dimana image dikompresi dengan mengenkode resolusi image yang lebih rendah terlebih dahulu baru kemudian ke resolusi yang lebih tinggi.
c. Component progressive: dimana image dikompresi berdasarkan komponennya, pertama mengenkode komponen gray baru kemudian komponen warnanya.
2. Region of Interest Coding: daerah-daerah tertentu dienkode dengan kualitas yang lebih tinggi daripada yang lain.
3. Meta Information: image yang dikompres juga dapat memiliki meta
information seperti statistik warna, tekstur, small preview image, dan author atau copyright information
PENGUKURAN ERROR KOMPRESI CITRA
Dalam kompresi image terdapat suatu standar pengukuran error (galat)
kompresi:
- MSE (Mean Square Error), yaitu sigma dari jumlah error antara citra hasil kompresi dan citra asli.
MSE =
Dimana: I(x,y) adalah nilai pixel di citra asli
I’(x,y) adalah nilai pixel pada citra hasil kompresi
M,N adalah dimensi image
- Peak Signal to Noise Ratio (PSNR), yaitu untuk menghitung peak error.
PSNR = 20 * log10 (255 / sqrt(MSE))
Nilai MSE yang rendah akan lebih baik, sedangkan nilai PSNR yang tinggi akan lebih baik.
ALGORITMA KOMPRESI/DEKOMPRESI CITRA
Algoritma umum untuk kompresi image adalah:
1. Menentukan bitrate dan toleransi distorsi image dari inputan user.
2. Pembagian data image ke dalam bagian-bagian tertentu sesuai dengan tingkat kepentingan yang ada (classifying).
Menggunakan salah satu teknik: DWT (Discreate Wavelet Transform)
yang akan mencari frekuensi nilai pixel masing-masing, menggabungkannya menjadi satu dan mengelompokkannya sebagai berikut:
Dimana LL : Low Low Frequency (most importance)
HL : High Low Frequency (lesser importance)
LH : Low High Frequency (more lesser importance) HH : High High Frequency (most less importance)
Hasil dekomposisi 3 level decomposition
3. Pembagian bit-bit di dalam masing-masing bagian yang ada (bit allocation).
4. Lakukan kuantisasi (quantization).
o Kuantisasi Scalar : data-data dikuantisasi sendiri-sendiri
o Kuantisasi Vector : data-data dikuantisasi sebagai suatu himpunan nilai-nilai vektor yang diperlakukan sebagai suatu kesatuan.
5. Lakukan pengenkodingan untuk masing-masing bagian yang sudah dikuantisasi tadi dengan menggunakan teknik entropy coding (huffman dan aritmatik) dan menuliskannya ke dalam file hasil.
Sedangkan algoritma umum dekompresi image adalah:
1. Baca data hasil kompresi menggunakan entropy dekoder.
2. Dekuantisasi data.
3. Rebuild image.
BEBERAPA METODE KOMPRESI CITRA
Algoritma BMP GIF PNG JPEG
RLE
X
X
LZ
X
X
Huffman
X
X
DCT
X
TEKNIK KOMPRESI GIF
- GIF (Graphic Interchange Format) dibuat oleh Compuserve pada tahun 1987 untuk menyimpan berbagai file bitmap manjadi file lain yang mudah diubah dan ditransmisikan pada jaringan komputer.
- GIF merupakan format citra web yang tertua yang mendukung kedalaman warna sampai 8 bit (256 warna), menggunakan 4 langkah interlacing, mendukung transparency, dan mampu menyimpan banyak image dalam 1 file.
- Byte ordering: LSB – MSB
- Struktur file GIF:
Header
GSD
GCT
Image1
Image2
.
.
.
Image n
Trailer
o Header: menyimpan informasi identitas file GIF (3 bytes, harus string “GIF“) dan versinya (3 bytes, harus string “87a“ or “89b“)
o Global Screen Descriptor: mendefinisikan logical screen area dimana masing-masing file GIF ditampilkan.
o Global Color Table: masing-masing image dalam GIF dapat menggunakan global color table atau tabel warnanya sendiri- sendiri. Penggunaan GCT akan memperkecil ukuran file GIF.
o Image1, Image2, Image3, ... Image-n: dimana masing-masing image memiliki struktur blok sendiri-sendiri dan terminator antar file.
o Trailer: Akhir dari sebuah file GIF
- Kompresi GIF menggunakan teknik LZW: gambar GIF yang berpola horizontal dan memiliki perubahan warna yang sedikit, serta tidak bernoise akan menghasilkan hasil kompresan yang baik.
- LZW kurang baik digunakan dalam bilevel (hitam-putih) dan true color
- Format file GIF:
o GIF87a: mendukung interlacing dan mampu manyimpan beberapa image dalam 1 file, ditemukan tahun 1987 dan menjadi standar.
o GIF89a: kelanjutan dari 87a dan ditambahkan dengan dukungan transparency, mendukung text, dan animasi.
- Animated GIF: tidak ada standar bagaimana harus ditampilkan sehingga umumnya image viewer hanya akan menampilkan image pertama dari file GIF. Animated GIF memiliki informasi berapa kali harus diloop.
- Tidak semua bagian dalam animated GIF ditampilkan kembali, hanya bagian yang berubah saja yang ditampilkan kembali.
TEKNIK KOMPRESI PNG
- PNG (Portable Network Graphics) digunakan di Internet dan merupakan format terbaru setelah GIF, bahkan menggantikan GIF
untuk Internet image karena GIF terkena patent LZW yang dilakukan oleh Unisys.
- Menggunakan teknik loseless dan mendukung:
o Kedalaman warna 48 bit
o Tingkat ketelitian sampling: 1,2,4,8, dan 16 bit
o Memiliki alpha channel untuk mengkontrol transparency
o Teknik pencocokan warna yang lebih canggih dan akurat
- Diprakarsai oleh Thomas Boutell dari PNG Development Group, dan versi finalnya direlease pada 1 Oktober 1996, 1,5 tahun sejak project berjalan.
- Byte ordering: MSB-LSB
- Format penamaan file PNG diatur ke dalam suatu urutan blok biner yang disebut sebagai “chunk“ (gumpalan), yang terdiri dari:
o Length (4 bytes), berupa informasi ukuran PNG
o Type (4 byte), berupa informasi nama chunk
Nama chunk terdiri dari 4 karakter ASCII dengan spesifikasi:
ƒ Karakter ke-1,2, dan 4 boleh uppercase/lowercase
ƒ Jika karakter ke-1 uppercase, berarti critical chunk (harus valid), contohnya: IHDR, PLTE, IDAT, dan IEND.
ƒ Jika karakter ke-1 lowercase, berarti non-critical chunk
(contohnya: bKGD, cHRM, gAMA, hIST, pHYs, sBIT, tEXt, tIME, tRNS, zTXt)
ƒ Jika karakter ke-2 uppercase, berarti public (PNG Standard)
ƒ Jika karakter ke-2 lowercase, berarti private PNG
ƒ Jika karakter ke-4 lowercase, berarti save-to-copy
ƒ Jika karakter ke-4 uppercase, berarti unsave-to-copy
ƒ Karakter 3 harus uppercase
Contoh penamaan:
IHDR: critical, public, unsafe to copy gAMA: noncritical, public, unsafe to copy
pHYs: noncritical, public, safe to copy apPx: noncritical, private, safe to copy A1PX: invalid
ApPx: critical, private, safe to copy
apPX: noncritical, private, unsafe to copy aaaX: invalid
o Data (ukuran dinamis), berupa data PNG.
o CRC (Cyclic Redundancy Check), berupa CRC-32 untuk pendeteksian error checking pada saat transmisi data.
Proses PNG decoder adalah sebagai berikut:
ƒ Baca chunk data size
ƒ Baca dan simpan chunk type
ƒ Jika ukuran chunk data lebih besar daripada data buffer, alokasikan buffer yang lebih besar
ƒ Baca chunk data
ƒ Hitung CRC value dari chunk data
ƒ Baca CRC dari file yang diterima
ƒ Bandingkan hasil perhitungan CRC dengan CRC dari file, jika tidak sama, berarti chunk invalid, minta kirim ulang.
- Sedangkan struktur file PNG adalah:
o PNG Signature: tanda file PNG
o IHDR chunk: menyimpan dimension, depth, dan color type
o PLTE chunk: untuk PNG yang menggunakan color palette type
o IDAT chunk 1, IDAT chunk 2, IDAT chunk 3, ... IDAT chunk-n
o IEND chunk: end of PNG image
- PNG mendukung 5 cara untuk merepresentasikan warna, dimana tipe warna disimpan dalam bagian IHDR chunk:
o RGB Triple (R,G, dan B): untuk 8 atau 16 bits
o Color Palette: yang disimpan dalam PLTE chunk dengan bit depth
1,2,4 atau 8.
o Grayscale: 1 komponen warna per image, bisa digunakan untuk semua bit depth.
o RGB Alpha Channel:
ƒ agar image dan background dapat dikombinasikan
ƒ untuk mengkontrol transparency
ƒ hanya bisa digunakan pada bit depth 8 atau 16 bits
ƒ jika alpha channel 0 berarti 100% transparan, sehingga background terlihat seutuhnya.
ƒ Jika alpha channel 2image bit depth -1 berarti fully opaque,
sehingga background sama sekali tidak terlihat karena tertutup oleh image.
o Grayscale with Alpha Channel: hanya bisa 8/16 bits
- PNG mendukung interlacing yang disebut Adam 7, yang menginterlace berdasarkan pixel daripada berdasarkan baris. Adam akan membagi image ke dalam 8x8 pixel, yang akan diupdate dalam 7 fase interlacing sebagai berikut:
- Teknik kompresi yang digunakan adalah Deflate yang merupakan kelanjutan dari algoritma Lempel-Ziv. Cara kerja Deflate sama dengan LZW dan melakukan scanning secara horisontal.
TEKNIK KOMPRESI JPEG
- JPEG (Joint Photograpic Experts Group) menggunakan teknik kompresi lossy sehingga sulit untuk proses pengeditan.
- JPEG cocok untuk citra pemandangan (natural generated image),
tidak cocok untuk citra yang mengandung banyak garis, ketajaman warna, dan computer generated image
- JPEG’s compression models:
o Sequential: kompresi dilakukan secara top-down, left-right menggunakan proses single-scan dan algoritma Huffman Encoding 8 bit secara sekuensial
While MORESCANS do
Begin
End
ReadScanData
PerformDCT ColorConvert DisplayImage
o Progressive: kompresi dilakukan dengan multiple-scan secara
progresif, sehingga kita dapat mengira-ira gambar yang akan kita download.
While MORESCANS do
Begin
End
ReadScanData PerformDCT ColorConvert DisplayImage
o Hierarchical: super-progressive mode, dimana image akan dipecah-pecah menjadi sub image yang disebut frame. Frame pertama akan membentuk image dalam resolusi rendah hingga berangsur-angsur ke resolusi tinggi.
o Loseless (JPEG-LS): exact image
- JPEG merupakan nama teknik kompresi, sedangkan nama format filenya adalah JFIF (JPEG File Interchange Format)
Start of Image (SOI)
APP0 JFIF
Optional JFIF Extension Header
Tables
Start of Frame
Tabels
Start of Scan 1
Scan 1 Data
.
.
.
Tabels
Start of Scan n
Scan n Data
End of Image
- Tingkat kompresi yang baik untuk JPEG adalah 10:1-20:1 untuk citra foto, 30:1-50:1 untuk citra web, dan 60:1-100:1 untuk kualitas rendah seperti citra untuk ponsel.
- Byte order: MSB-LSB
- Tahapan kompresi JPEG:
o Sampling: adalah proses pengkonversian data pixel dari RGB ke YUV/YIQ dan dilakukan down sampling. Biasanya sampling dilakukan per 8x8 blok, semakin banyak blok yang dipakai makin bagus kualitas sampling yang dihasilkan.
o DCT (Discreate Cosine Transform) : hasil dari proses sampling akan digunakan sebagai inputan proses DCT, dimana blok 8x8 pixels akan diubah menjadi fungsi matriks cosinus
o Quantization: proses membersihkan koefisien DCT yang tidak penting untuk pembentukan image baru. Hal ini yang menyebabkan JPEG bersifat lossy.
o Entropy Coding: proses penggunaan algoritma entropy, misalnya Huffman atau Aritmatik untuk mengenkodekan koefisien hasil proses DCT yang akan mengeliminasi nilai-nilai matriks yang bernilai nol secara zig-zag order.
Original
Image
8 x 8
DCT
Quantization DPCM
DC Entropy
Coding
RLC
Quantization Table AC
- Dalam JPEG terdapat beberapa “marker“ sebagai tanda yang
memisahkan antar komponennya yang berukuran 2 bytes, dimana byte pertama selalu bernilai FF16 sedangkan bit kedua bisa berupa:
o APPn: untuk menghandle application specific data, misalnya
informasi tambahan yang ada dalam JPEG
o COM (Comment): untuk memberikan komentar plain text string seperti copyright.
o DHT (Define Huffman Table): menyimpan tabel kode-kode
Algoritma Huffman
o DRI (Define Resart Interval): sebagai tanda resart interval
o DQT (Define Quantization Table): mendefinisikan tabel kuantisasi yang digunakan dalam proses kompresi
o EOI (End of Image): tanda akhir file JPEG
o RSTn: restart marker
o SOI (Start of Image): tanda awal image
o SOFn: start of frame
o SOS: start of scan
- Secara umum JPEG/JFIF file menyimpan informasi:
o Signature untuk mengidentifikasikan JPEG file
o Colorspace o Pixel density o Thumbnails
o Relationship of pixels to sampling frequency
JPEG 2000
- Adalah pengembangan kompresi JPEG.
- Didesain untuk internet, scanning, foto digital, remote sensing, medical imegrey, perpustakaan digital dan e-commerce
- Kelebihan:
o Dapat digunakan pada bit-rate rendah sehingga dapat digunakan untuk network image dan remote sensing
o Menggunakan Lossy dan loseless tergantung kebutuhan bandwidth. Loseless digunakan untuk medical image
o Transmisi progresif dan akurasi & resolusi pixel tinggi
o Menggunakan Region of Interest (ROI)
o Robustness to bit error yang digunakan untuk komunikasi jaringan dan wireless
o Open architecture: single compression/decompression
o Mendukung protective image security: watermarking, labeling, stamping, dan encryption
o Mendukung image ukuran besar 64k x 64k, size up to 232 - 1
o Mendukung meta data dan baik untuk computer-generated imagenary. Dulu JPEG standar baik untuk natural imagenary.
Kompresi Citra adalah aplikasi kompresi data yang dilakukan terhadap citra digital dengan tujuan untuk mengurangi redundansi dari data-data yang terdapat dalam citra sehingga dapat disimpan atau ditransmisikan secara efisien.
TEKNIK KOMPRESI CITRA
Teknik kompresi pada citra tetap sama:
- Lossy Compression:
o Ukuran file citra menjadi lebih kecil dengan menghilangkan beberapa informasi dalam citra asli.
o Teknik ini mengubah detail dan warna pada file citra menjadi lebih sederhana tanpa terlihat perbedaan yang mencolok dalam pandangan manusia, sehingga ukurannya menjadi lebih kecil.
o Biasanya digunakan pada citra foto atau image lain yang tidak terlalu memerlukan detail citra, dimana kehilangan bit rate foto tidak berpengaruh pada citra.
o Beberapa teknik loseless:
ƒ Color reduction: untuk warna-warna tertentu yang mayoritas dimana informasi warna disimpan dalam color palette.
ƒ Chroma subsampling: teknik yang memanfaatkan fakta bahwa mata manusia merasa brightness (luminance) lebih berpengaruh daripada warna (chrominance) itu sendiri, maka dilakukan pengurangan resolusi warna dengan disampling ulang. Biasanya digunakan pada sinyal YUV.
• Chorma Subsampling terdiri dari 3 komponen: Y
(luminance) : U (CBlue) : V (CRed)
ƒ Transform coding: menggunakan Fourier Transform seperti DCT.
• Fractal Compression: adalah suatu metode lossy untuk mengkompresi citra dengan menggunakan kurva fractal. Sangat cocok untuk citra natural seperti pepohonan, pakis, pegunungan, dan awan.
• Fractal Compression bersandar pada fakta bahwa dalam sebuah image, terdapat bagian-bagian image yang menyerupai bagian bagian image yang lain.
• Proses kompresi Fractal lebih lambat daripada JPEG
sedangkan proses dekompresinya sama.
- Loseless Compression:
o Teknik kompresi citra dimana tidak ada satupun informasi citra yang dihilangkan.
o Biasa digunakan pada citra medis.
o Metode loseless: Run Length Encoding, Entropy Encoding
(Huffman, Aritmatik), dan Adaptive Dictionary Based (LZW)
HAL-HAL PENTING DALAM KOMPRESI CITRA
1. Scalability/Progressive Coding/Embedded Bitstream
• Adalah kualitas dari hasil proses pengkompresian citra karena manipulasi bitstream tanpa adanya dekompresi atau rekompresi.
• Biasanya dikenal pada loseless codec.
• Contohnya pada saat preview image sementara image tersebut didownload. Semakin baik scalability, makin bagus preview image.
• Tipe scalability:
a. Quality progressive: dimana image dikompres secara perlahan-lahan dengan penurunan kualitasnya
b. Resolution progressive: dimana image dikompresi dengan mengenkode resolusi image yang lebih rendah terlebih dahulu baru kemudian ke resolusi yang lebih tinggi.
c. Component progressive: dimana image dikompresi berdasarkan komponennya, pertama mengenkode komponen gray baru kemudian komponen warnanya.
2. Region of Interest Coding: daerah-daerah tertentu dienkode dengan kualitas yang lebih tinggi daripada yang lain.
3. Meta Information: image yang dikompres juga dapat memiliki meta
information seperti statistik warna, tekstur, small preview image, dan author atau copyright information
PENGUKURAN ERROR KOMPRESI CITRA
Dalam kompresi image terdapat suatu standar pengukuran error (galat)
kompresi:
- MSE (Mean Square Error), yaitu sigma dari jumlah error antara citra hasil kompresi dan citra asli.
MSE =
Dimana: I(x,y) adalah nilai pixel di citra asli
I’(x,y) adalah nilai pixel pada citra hasil kompresi
M,N adalah dimensi image
- Peak Signal to Noise Ratio (PSNR), yaitu untuk menghitung peak error.
PSNR = 20 * log10 (255 / sqrt(MSE))
Nilai MSE yang rendah akan lebih baik, sedangkan nilai PSNR yang tinggi akan lebih baik.
ALGORITMA KOMPRESI/DEKOMPRESI CITRA
Algoritma umum untuk kompresi image adalah:
1. Menentukan bitrate dan toleransi distorsi image dari inputan user.
2. Pembagian data image ke dalam bagian-bagian tertentu sesuai dengan tingkat kepentingan yang ada (classifying).
Menggunakan salah satu teknik: DWT (Discreate Wavelet Transform)
yang akan mencari frekuensi nilai pixel masing-masing, menggabungkannya menjadi satu dan mengelompokkannya sebagai berikut:
Dimana LL : Low Low Frequency (most importance)
HL : High Low Frequency (lesser importance)
LH : Low High Frequency (more lesser importance) HH : High High Frequency (most less importance)
Hasil dekomposisi 3 level decomposition
3. Pembagian bit-bit di dalam masing-masing bagian yang ada (bit allocation).
4. Lakukan kuantisasi (quantization).
o Kuantisasi Scalar : data-data dikuantisasi sendiri-sendiri
o Kuantisasi Vector : data-data dikuantisasi sebagai suatu himpunan nilai-nilai vektor yang diperlakukan sebagai suatu kesatuan.
5. Lakukan pengenkodingan untuk masing-masing bagian yang sudah dikuantisasi tadi dengan menggunakan teknik entropy coding (huffman dan aritmatik) dan menuliskannya ke dalam file hasil.
Sedangkan algoritma umum dekompresi image adalah:
1. Baca data hasil kompresi menggunakan entropy dekoder.
2. Dekuantisasi data.
3. Rebuild image.
BEBERAPA METODE KOMPRESI CITRA
Algoritma BMP GIF PNG JPEG
RLE
X
X
LZ
X
X
Huffman
X
X
DCT
X
TEKNIK KOMPRESI GIF
- GIF (Graphic Interchange Format) dibuat oleh Compuserve pada tahun 1987 untuk menyimpan berbagai file bitmap manjadi file lain yang mudah diubah dan ditransmisikan pada jaringan komputer.
- GIF merupakan format citra web yang tertua yang mendukung kedalaman warna sampai 8 bit (256 warna), menggunakan 4 langkah interlacing, mendukung transparency, dan mampu menyimpan banyak image dalam 1 file.
- Byte ordering: LSB – MSB
- Struktur file GIF:
Header
GSD
GCT
Image1
Image2
.
.
.
Image n
Trailer
o Header: menyimpan informasi identitas file GIF (3 bytes, harus string “GIF“) dan versinya (3 bytes, harus string “87a“ or “89b“)
o Global Screen Descriptor: mendefinisikan logical screen area dimana masing-masing file GIF ditampilkan.
o Global Color Table: masing-masing image dalam GIF dapat menggunakan global color table atau tabel warnanya sendiri- sendiri. Penggunaan GCT akan memperkecil ukuran file GIF.
o Image1, Image2, Image3, ... Image-n: dimana masing-masing image memiliki struktur blok sendiri-sendiri dan terminator antar file.
o Trailer: Akhir dari sebuah file GIF
- Kompresi GIF menggunakan teknik LZW: gambar GIF yang berpola horizontal dan memiliki perubahan warna yang sedikit, serta tidak bernoise akan menghasilkan hasil kompresan yang baik.
- LZW kurang baik digunakan dalam bilevel (hitam-putih) dan true color
- Format file GIF:
o GIF87a: mendukung interlacing dan mampu manyimpan beberapa image dalam 1 file, ditemukan tahun 1987 dan menjadi standar.
o GIF89a: kelanjutan dari 87a dan ditambahkan dengan dukungan transparency, mendukung text, dan animasi.
- Animated GIF: tidak ada standar bagaimana harus ditampilkan sehingga umumnya image viewer hanya akan menampilkan image pertama dari file GIF. Animated GIF memiliki informasi berapa kali harus diloop.
- Tidak semua bagian dalam animated GIF ditampilkan kembali, hanya bagian yang berubah saja yang ditampilkan kembali.
TEKNIK KOMPRESI PNG
- PNG (Portable Network Graphics) digunakan di Internet dan merupakan format terbaru setelah GIF, bahkan menggantikan GIF
untuk Internet image karena GIF terkena patent LZW yang dilakukan oleh Unisys.
- Menggunakan teknik loseless dan mendukung:
o Kedalaman warna 48 bit
o Tingkat ketelitian sampling: 1,2,4,8, dan 16 bit
o Memiliki alpha channel untuk mengkontrol transparency
o Teknik pencocokan warna yang lebih canggih dan akurat
- Diprakarsai oleh Thomas Boutell dari PNG Development Group, dan versi finalnya direlease pada 1 Oktober 1996, 1,5 tahun sejak project berjalan.
- Byte ordering: MSB-LSB
- Format penamaan file PNG diatur ke dalam suatu urutan blok biner yang disebut sebagai “chunk“ (gumpalan), yang terdiri dari:
o Length (4 bytes), berupa informasi ukuran PNG
o Type (4 byte), berupa informasi nama chunk
Nama chunk terdiri dari 4 karakter ASCII dengan spesifikasi:
ƒ Karakter ke-1,2, dan 4 boleh uppercase/lowercase
ƒ Jika karakter ke-1 uppercase, berarti critical chunk (harus valid), contohnya: IHDR, PLTE, IDAT, dan IEND.
ƒ Jika karakter ke-1 lowercase, berarti non-critical chunk
(contohnya: bKGD, cHRM, gAMA, hIST, pHYs, sBIT, tEXt, tIME, tRNS, zTXt)
ƒ Jika karakter ke-2 uppercase, berarti public (PNG Standard)
ƒ Jika karakter ke-2 lowercase, berarti private PNG
ƒ Jika karakter ke-4 lowercase, berarti save-to-copy
ƒ Jika karakter ke-4 uppercase, berarti unsave-to-copy
ƒ Karakter 3 harus uppercase
Contoh penamaan:
IHDR: critical, public, unsafe to copy gAMA: noncritical, public, unsafe to copy
pHYs: noncritical, public, safe to copy apPx: noncritical, private, safe to copy A1PX: invalid
ApPx: critical, private, safe to copy
apPX: noncritical, private, unsafe to copy aaaX: invalid
o Data (ukuran dinamis), berupa data PNG.
o CRC (Cyclic Redundancy Check), berupa CRC-32 untuk pendeteksian error checking pada saat transmisi data.
Proses PNG decoder adalah sebagai berikut:
ƒ Baca chunk data size
ƒ Baca dan simpan chunk type
ƒ Jika ukuran chunk data lebih besar daripada data buffer, alokasikan buffer yang lebih besar
ƒ Baca chunk data
ƒ Hitung CRC value dari chunk data
ƒ Baca CRC dari file yang diterima
ƒ Bandingkan hasil perhitungan CRC dengan CRC dari file, jika tidak sama, berarti chunk invalid, minta kirim ulang.
- Sedangkan struktur file PNG adalah:
o PNG Signature: tanda file PNG
o IHDR chunk: menyimpan dimension, depth, dan color type
o PLTE chunk: untuk PNG yang menggunakan color palette type
o IDAT chunk 1, IDAT chunk 2, IDAT chunk 3, ... IDAT chunk-n
o IEND chunk: end of PNG image
- PNG mendukung 5 cara untuk merepresentasikan warna, dimana tipe warna disimpan dalam bagian IHDR chunk:
o RGB Triple (R,G, dan B): untuk 8 atau 16 bits
o Color Palette: yang disimpan dalam PLTE chunk dengan bit depth
1,2,4 atau 8.
o Grayscale: 1 komponen warna per image, bisa digunakan untuk semua bit depth.
o RGB Alpha Channel:
ƒ agar image dan background dapat dikombinasikan
ƒ untuk mengkontrol transparency
ƒ hanya bisa digunakan pada bit depth 8 atau 16 bits
ƒ jika alpha channel 0 berarti 100% transparan, sehingga background terlihat seutuhnya.
ƒ Jika alpha channel 2image bit depth -1 berarti fully opaque,
sehingga background sama sekali tidak terlihat karena tertutup oleh image.
o Grayscale with Alpha Channel: hanya bisa 8/16 bits
- PNG mendukung interlacing yang disebut Adam 7, yang menginterlace berdasarkan pixel daripada berdasarkan baris. Adam akan membagi image ke dalam 8x8 pixel, yang akan diupdate dalam 7 fase interlacing sebagai berikut:
- Teknik kompresi yang digunakan adalah Deflate yang merupakan kelanjutan dari algoritma Lempel-Ziv. Cara kerja Deflate sama dengan LZW dan melakukan scanning secara horisontal.
TEKNIK KOMPRESI JPEG
- JPEG (Joint Photograpic Experts Group) menggunakan teknik kompresi lossy sehingga sulit untuk proses pengeditan.
- JPEG cocok untuk citra pemandangan (natural generated image),
tidak cocok untuk citra yang mengandung banyak garis, ketajaman warna, dan computer generated image
- JPEG’s compression models:
o Sequential: kompresi dilakukan secara top-down, left-right menggunakan proses single-scan dan algoritma Huffman Encoding 8 bit secara sekuensial
While MORESCANS do
Begin
End
ReadScanData
PerformDCT ColorConvert DisplayImage
o Progressive: kompresi dilakukan dengan multiple-scan secara
progresif, sehingga kita dapat mengira-ira gambar yang akan kita download.
While MORESCANS do
Begin
End
ReadScanData PerformDCT ColorConvert DisplayImage
o Hierarchical: super-progressive mode, dimana image akan dipecah-pecah menjadi sub image yang disebut frame. Frame pertama akan membentuk image dalam resolusi rendah hingga berangsur-angsur ke resolusi tinggi.
o Loseless (JPEG-LS): exact image
- JPEG merupakan nama teknik kompresi, sedangkan nama format filenya adalah JFIF (JPEG File Interchange Format)
Start of Image (SOI)
APP0 JFIF
Optional JFIF Extension Header
Tables
Start of Frame
Tabels
Start of Scan 1
Scan 1 Data
.
.
.
Tabels
Start of Scan n
Scan n Data
End of Image
- Tingkat kompresi yang baik untuk JPEG adalah 10:1-20:1 untuk citra foto, 30:1-50:1 untuk citra web, dan 60:1-100:1 untuk kualitas rendah seperti citra untuk ponsel.
- Byte order: MSB-LSB
- Tahapan kompresi JPEG:
o Sampling: adalah proses pengkonversian data pixel dari RGB ke YUV/YIQ dan dilakukan down sampling. Biasanya sampling dilakukan per 8x8 blok, semakin banyak blok yang dipakai makin bagus kualitas sampling yang dihasilkan.
o DCT (Discreate Cosine Transform) : hasil dari proses sampling akan digunakan sebagai inputan proses DCT, dimana blok 8x8 pixels akan diubah menjadi fungsi matriks cosinus
o Quantization: proses membersihkan koefisien DCT yang tidak penting untuk pembentukan image baru. Hal ini yang menyebabkan JPEG bersifat lossy.
o Entropy Coding: proses penggunaan algoritma entropy, misalnya Huffman atau Aritmatik untuk mengenkodekan koefisien hasil proses DCT yang akan mengeliminasi nilai-nilai matriks yang bernilai nol secara zig-zag order.
Original
Image
8 x 8
DCT
Quantization DPCM
DC Entropy
Coding
RLC
Quantization Table AC
- Dalam JPEG terdapat beberapa “marker“ sebagai tanda yang
memisahkan antar komponennya yang berukuran 2 bytes, dimana byte pertama selalu bernilai FF16 sedangkan bit kedua bisa berupa:
o APPn: untuk menghandle application specific data, misalnya
informasi tambahan yang ada dalam JPEG
o COM (Comment): untuk memberikan komentar plain text string seperti copyright.
o DHT (Define Huffman Table): menyimpan tabel kode-kode
Algoritma Huffman
o DRI (Define Resart Interval): sebagai tanda resart interval
o DQT (Define Quantization Table): mendefinisikan tabel kuantisasi yang digunakan dalam proses kompresi
o EOI (End of Image): tanda akhir file JPEG
o RSTn: restart marker
o SOI (Start of Image): tanda awal image
o SOFn: start of frame
o SOS: start of scan
- Secara umum JPEG/JFIF file menyimpan informasi:
o Signature untuk mengidentifikasikan JPEG file
o Colorspace o Pixel density o Thumbnails
o Relationship of pixels to sampling frequency
JPEG 2000
- Adalah pengembangan kompresi JPEG.
- Didesain untuk internet, scanning, foto digital, remote sensing, medical imegrey, perpustakaan digital dan e-commerce
- Kelebihan:
o Dapat digunakan pada bit-rate rendah sehingga dapat digunakan untuk network image dan remote sensing
o Menggunakan Lossy dan loseless tergantung kebutuhan bandwidth. Loseless digunakan untuk medical image
o Transmisi progresif dan akurasi & resolusi pixel tinggi
o Menggunakan Region of Interest (ROI)
o Robustness to bit error yang digunakan untuk komunikasi jaringan dan wireless
o Open architecture: single compression/decompression
o Mendukung protective image security: watermarking, labeling, stamping, dan encryption
o Mendukung image ukuran besar 64k x 64k, size up to 232 - 1
o Mendukung meta data dan baik untuk computer-generated imagenary. Dulu JPEG standar baik untuk natural imagenary.
OPERASI GEOMETRI PADA CITRA
OPERASI GEOMETRI PADA CITRA
Pada operasi geometrik, koordinat pixel berubah akibat transformasi, sedangkan intensitasnya tetap. Pada operasi aritmetika koordinat pixel tetap sedangkan intensitasnya berubah.
Contoh operasi geometri : translasi, rotasi, penskalaan citra dan pencerminan citra (flipping)
a. Translasi
rumus translasi citra :
x’=x+m m adalah besar pergeseran dalam arah x
y’=y+n n adalah besar pergeseran dalam arah y
B[x][y]=A[x+m][y+n]
B adalah citra hasil translasi dari A
void translasi(Citra A, Citra B,int N,int M, int n int m)
/*Mentranslasi citra A sejauh m,n Hasil translasi disimpan di dalam B. Ukuran citra adalah N x M
*/
{ int i, j,n;
for (i=0; i<=N-1; i++)
for (j=0; j<=M-1; j++)
{
B[i][j]=A[i+m][j+n];
}
}
citra semula hasil translasi dengan m=23 n=25
B. Rotasi
Rumus rotasi citra :
x’=x cos() – y sin()
y’= x sin() + y cos()
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.
Rotasi 90° berlawanan arah jarum jam
void translasi(Citra A, Citra B,int N,int M)
/* Rotasi citra sejauh 90° berlawanan arah jarum jam
*/
{ int i, j, k;
for (i=0; i<=N-1; i++)
{
k=M-1
for (j=0; j<=M-1; j++)
{
B[k][i]=A[i][j];
k--;
}
}
}
void translasi(Citra A, Citra B,int N,int M)
/* Rotasi citra sejauh 90° searah jarum jam
*/
{ int i, j, k;
k=M-1
for (i=0; i<=N-1; i++)
{
for (j=0; j<=M-1; j++)
{
B[j][k]=A[i][j];
}
k--;
}
}
c. Penskalaan Citra
Penskalaan citra disebut image zooming yaitu pengubahan ukuran citra (membesar/zoom out atau mengecil/zoom in)
Rumus penskalaan :
x’=sx . x sx : faktor skala arah x
y’=sy . y sy : faktor skala arah y
Operasi zoom out (pembesaran) dengan faktor 2 (sx=sy = 2) diimplementasikan dengan menyalin setiap pixel sebanyak 4 kali.
Jadi citra 2 x 2 pixel akan menjadi 4 x 4 pixel
Operasi zoom in (pengecilan) dengan faktor skala = ½ dilakukan dengan mengambil rata-rata dari 4 pixel yang bertetangga menjadi 1 pixel
void zoom_out(Citra A, Citra B,int N,int M)
/* Perbesaran citra A dengan faktor skala 2
*/
{ int i, j, k, m, n;
m=0; n=0
for (i=0; i<=N-1; i++)
{
for (j=0; j<=M-1; j++)
{
B[m][n]=A[i][j];
B[m][n+1]=A[i][j];
B[m+1][n]=A[i][j];
B[m+1][n+1]=A[i][j];
N=n+2;
}
m=m+2
n=0
}
}
Citra semula Citra diperbesar 2 kali
d. Flipping
Flipping adalah operasi pencerminan (image reflection).
Ada 2 macam flipping : horisontal dan vertikal
a. Asli b. flip horizontal c. flip vertikal
Flipping horizontal adalah pencerminan pada sumbu Y (cartesian) dari citra A menjadi citra B, yang diberikan oleh
B[x][y] = A[N-x][y]
Flipping vertikal adalah pencerminan pada sumbu X (cartesian) dari citra A menjadi citra B, yang diberikah oleh
B[x][y] = A[x][M-y]
Pencerminan pada titik asal (cartesian) dari citra A menjadi citra B :
B[x][y] = A[N-x][M-y]
Pencerminan pada garis x=y dari citra A menjadi citra B :
B[x][y] = A[y][x]
void translasi(Citra A, Citra B,int N,int M)
/* flipping vertikal (pencerminan terhadap sumbu x)
*/
{ int i, j, k;
k=M-1
for (i=0; i<=N-1; i++)
{
for (j=0; j<=M-1; j++)
{
B[k][j]=A[i][j];
}
k--;
}
}
Pada operasi geometrik, koordinat pixel berubah akibat transformasi, sedangkan intensitasnya tetap. Pada operasi aritmetika koordinat pixel tetap sedangkan intensitasnya berubah.
Contoh operasi geometri : translasi, rotasi, penskalaan citra dan pencerminan citra (flipping)
a. Translasi
rumus translasi citra :
x’=x+m m adalah besar pergeseran dalam arah x
y’=y+n n adalah besar pergeseran dalam arah y
B[x][y]=A[x+m][y+n]
B adalah citra hasil translasi dari A
void translasi(Citra A, Citra B,int N,int M, int n int m)
/*Mentranslasi citra A sejauh m,n Hasil translasi disimpan di dalam B. Ukuran citra adalah N x M
*/
{ int i, j,n;
for (i=0; i<=N-1; i++)
for (j=0; j<=M-1; j++)
{
B[i][j]=A[i+m][j+n];
}
}
citra semula hasil translasi dengan m=23 n=25
B. Rotasi
Rumus rotasi citra :
x’=x cos() – y sin()
y’= x sin() + y cos()
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.
Rotasi 90° berlawanan arah jarum jam
void translasi(Citra A, Citra B,int N,int M)
/* Rotasi citra sejauh 90° berlawanan arah jarum jam
*/
{ int i, j, k;
for (i=0; i<=N-1; i++)
{
k=M-1
for (j=0; j<=M-1; j++)
{
B[k][i]=A[i][j];
k--;
}
}
}
void translasi(Citra A, Citra B,int N,int M)
/* Rotasi citra sejauh 90° searah jarum jam
*/
{ int i, j, k;
k=M-1
for (i=0; i<=N-1; i++)
{
for (j=0; j<=M-1; j++)
{
B[j][k]=A[i][j];
}
k--;
}
}
c. Penskalaan Citra
Penskalaan citra disebut image zooming yaitu pengubahan ukuran citra (membesar/zoom out atau mengecil/zoom in)
Rumus penskalaan :
x’=sx . x sx : faktor skala arah x
y’=sy . y sy : faktor skala arah y
Operasi zoom out (pembesaran) dengan faktor 2 (sx=sy = 2) diimplementasikan dengan menyalin setiap pixel sebanyak 4 kali.
Jadi citra 2 x 2 pixel akan menjadi 4 x 4 pixel
Operasi zoom in (pengecilan) dengan faktor skala = ½ dilakukan dengan mengambil rata-rata dari 4 pixel yang bertetangga menjadi 1 pixel
void zoom_out(Citra A, Citra B,int N,int M)
/* Perbesaran citra A dengan faktor skala 2
*/
{ int i, j, k, m, n;
m=0; n=0
for (i=0; i<=N-1; i++)
{
for (j=0; j<=M-1; j++)
{
B[m][n]=A[i][j];
B[m][n+1]=A[i][j];
B[m+1][n]=A[i][j];
B[m+1][n+1]=A[i][j];
N=n+2;
}
m=m+2
n=0
}
}
Citra semula Citra diperbesar 2 kali
d. Flipping
Flipping adalah operasi pencerminan (image reflection).
Ada 2 macam flipping : horisontal dan vertikal
a. Asli b. flip horizontal c. flip vertikal
Flipping horizontal adalah pencerminan pada sumbu Y (cartesian) dari citra A menjadi citra B, yang diberikan oleh
B[x][y] = A[N-x][y]
Flipping vertikal adalah pencerminan pada sumbu X (cartesian) dari citra A menjadi citra B, yang diberikah oleh
B[x][y] = A[x][M-y]
Pencerminan pada titik asal (cartesian) dari citra A menjadi citra B :
B[x][y] = A[N-x][M-y]
Pencerminan pada garis x=y dari citra A menjadi citra B :
B[x][y] = A[y][x]
void translasi(Citra A, Citra B,int N,int M)
/* flipping vertikal (pencerminan terhadap sumbu x)
*/
{ int i, j, k;
k=M-1
for (i=0; i<=N-1; i++)
{
for (j=0; j<=M-1; j++)
{
B[k][j]=A[i][j];
}
k--;
}
}
OPERASI-OPERASI DASAR PENGOLAHAN CITRA DIGITAL
OPERASI-OPERASI DASAR
PENGOLAHAN CITRA DIGITAL
Operasi-operasi yang dilakukan pada pengolahan citra digital dapat dikelompokkan menjadi empat level komputasi yaitu level : titik, lokal, global dan objek.
1. Level Titik
Operasi pada level titik hanya dilakukan pada pixel tunggal di dalam citra.Operasi titik dikenal juga dengan nama operasi pointwise.
Operasi ini terdiri dari : Mengakses pixel pada lokasi tertentu Memodifikasi dengan operasi linier atau nonlinier Menempatkan nilai pixel baru pada lokasi yang sesuai pada citra baru. Ulangi langkah-langkah tersebut untuk seluruh pixel.
Secara matematis, operasi pada level titik dinyatakan sebagai berikut:
Dimana :
fA : Citra masukan
fB : Citra keluaran
Otitik : Operasi matematis (linier / non linier)
Operasi pada level titik dibagi menjadi tiga macam yaitu berdasarkan : intensitas, geometri dan gabungan intensitas dan geometri
a. Berdasarkan Intensitas
Nilai intensitas u suatu pixel diubah dengan transformasi h menjadi nilai intensitas baru v.
Contoh operasi titik berdasarkan intensitas adalah operasi ambang batas (thresholding). Pada operasi ini nilai pixel dipetakan ke salah satu dari dua nilai berdasarkan nilai ambang.
)},({),(yxfOyxfAtitikB)},({yxfOtitik],0[, )(Lvuuhv
Jika nilai a1 = 0 dan a2 = 1, maka operasi ini mentransformasikan citra hitam putih menjadi citra biner. Misalkan citra hitam putih yang memiliki gray level 256, dipetakan menjadi citra biner, maka fungsi transformasinya adalah sebagai berikut:
pixel-pixel yang nilai intensitasnya di bawah 128 diubah menjadi hitam (nilai intensitas = 0), sedangkan pixel-pixel yang nilai intensitasnya di atas 128 diubah menjadi putih (nilai intensitas =1).
Citra Asli Citra biner Citra negatif
Algoritma : transformasi citra hitam-putih menjadi citra biner
void biner(Citra A, citra_biner B, int T, int N, int M)
/* Membuat citra biner dari citra A berdasarkan nilai ambang (treshold) T yang dispesifikasikan. Ukuran citra adalah N x M. citra_biner adalah tipe data untuk citra biner). */
{ int i, j;
citra_biner B;
for (i=0; i<=N-1; i++)
for (j=0; j<=M-1; j++)
{
if (A[i][j] < T)
B[i][j] = 0;
Else
B[i][j] = 1;
}
}
TyxfaTyxfayxf),( ,),( ,)',(21128),( ,1128),( ,0)',(yxfyxfyxf
Contoh operasi titik yang lain adalah :
1. operasi negatif yaitu mendapatkan citra negatif meniru film negatif pada fotografi dengan cara mengurangi nilai intensitas pixel dari nilai keabuan maksimum. Misal citra dengan 256 derajat keabuan (8 bit), maka citra negatif diperoleh dengan persaman
f(x,y)’ = 255 – f(x,y)
sedangkan citra dengan 128 derajat keabuan
f(x,y)’ = 127 – f(x,y)
Algoritma citra hitam putik ke citra negatif
void negatif(Citra A, citra B, int N, int M)
{ int i, j;
for (i=0; i<=N-1; i++)
for (j=0; j<=M-1; j++)
{
B[i][j] = 255 – A[i][j]
}
}
2. Pemotongan (clipping) : operasi ini dilakukan jika nilai pixel hasil pengolahan citra terletak dibawah nilai intensitas minimum atau di atas nilai intensitas maksimum:
3. Pencerahan citra (image brightening)
Kecerahan citra dapat diperbaiki dengan menambahkan (atau mengurangkan sebuah konstanta kepada (atau dari) setiap pixel di dalam citra f(x,y)’ = f(x,y) + b
Jika b positif, kecerahan citra bertambah, sebaliknya jika b negatif kecerahan citra berkurang.
Semula citra zelda tampak gelap, tetapi dengan menambahkan setiap nilai pixel dengan b=10, citra zelda menjadi lebih terang.
Operasi pencerahan citra dapat menghasilkan nilai dibawah intensitas minimum atau diatas nilai intensitas maksimum. Oleh karena itu operasi clipping perlu diterapkan.
0),(,0255),(0),(255),(,255)',(yxfyxfyxfyxfyxf
Algoritma pencerahan citra untuk citra 256 derajat keabuan
void negatif(Citra A, citra B, int N, int M, int b)
{ int i, j;
for (i=0; i<=N-1; i++)
for (j=0; j<=M-1; j++)
{
temp = A[i][j] + b;
/* clipping */
if (temp < 0)
B[i][j] = 0;
else
if(temp > 255)
B[i][j] = 255;
else
B[i][j] = temp;
}
}
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)
c. Berdasarkan intensitas dan geometri
Operasi ini tidak hanya mengubah nilai intensitas pixel, tapi juga mengubah posisinya. Misalnya image morphing, yaitu perubahan bentuk objet beserta nilai intensitasnya.
2. Aras Lokal
Operasi pada aras lokal menghasilkan citra keluaran yang intensitas suatu pixel bergantung pada intensitas pixel-pixel tetangganya
N : neighborhood, yaitu pixel-pixel yang berada disekitar (x,y)
Contoh operasi beraras lokal adalah operasi konvolusi untuk mendeteksi tepi(edge detection) dan pelembutan citra (image smoothing).
Gambar Hasil pendeteksian semua tepi dari citra lena
),(),(),(),(yxNyxyxfOyxfjijiAlokalB
3. Aras Global
Operasi pada aras global menghasilkan citra keluaran yang intensitas suatu pixel bergantung pada intensitas keseluruhan pixel
Contohnya operasi penyetaraan histogram untuk meningkatkan kualitas citra.
4. Aras Objek
Tujuan dari operasi pada aras objek adalah untuk mengenali objek tersebut, misalnya dengan menghitung rata-rata intensitas, ukuran, bentuk, karakteristik lain dari objek.
Operasi Aritmetika
Karena citra digital adalah matriks, maka operasi aritmetika juga berlaku yang meliputi :
1. Penjumlahan atau pengurangan antara dua citra A dan B
C(x,y) = A(x,y) B(x,y)
2. Perkalian dua citra
C(x,y) = A(x,y) B(x,y)
3. Penjumlahan / pengurangan citra A dengan skalar c
C(x,y) = A(x,y) c
4. Perkalian/pembagian citra A dengan sebuah skalar c
C(x,y) = c . A(x,y)
Operasi Boolean pada citra
Operasi boolean terdiri dari and, or dan not
C(x,y) = A(x,y) and B(x,y)
C(x,y) = A(x,y) or B(x,y)
C(x,y) = not A(x,y)
Pada citra biner, operasi not dapat digunakan untuk menentukan komplemen dari citra.
Ganesha not Ganesha
)},({),(yxfOyxfAglobalB
void not(Citra A, citra B, int N, int M)
{ int i, j;
for (i=0; i<=N-1; i++)
for (j=0; j<=M-1; j++)
{
B[i][j] = ! A[i][j];
}
}
HISTOGRAM CITRA
Histogram citra adalah grafik yang menggambarkan penyebaran nilai-nilai intensitas pixel dari suatu citra atau bagian tertentu di dalam citra. Histogram juga dapat menunjukkan banyak hal tentang kecerahan (brightness) dan kontras (contrast) dari sebuah gambar. Secara grafis histogram ditampilkan dengan diagram batang
Misal citra digital memiliki L derajat keabuan. (misalnya citra dengan kuantisasi derajat keabuan 8-bit, nilai derajat keabuan dari 0 – 255) secara matematis dapat dihitung dengan rumus :
Dimana ni = jumlah pixel yang memiliki derajat keabuan I
n = jumlah seluruh pixel di dalam citra
Sebagai contoh matrik citra berukuran 8 x 8 dengan derajat keabuan dari 0 sampai 15 ( ada 16 buah derajat keabuan)
121314111001278991011131522010054141013543201111088111212129108956141515810002101412108773
ni
Hi=ni/n (n=64)
0
8
0.125
1
4
0.0625
2
5
0.078125
3
2
0.03125
4
2
0.03125
5
3
0.046875
6
1
0.015625
7
3
0.0156875
8
6
0.09375
9
3
0.046875
10
7
0.109375
11
4
0.0625
12
5
0.078125
13
3
0.046875
14
4
0.0625
15
3
0.046875
Semakin besar nilai ni maka semakin besar pula nilai hi
Algoritma Perhitungan Histogram
1,.....1,0,Linnhii
Citra masukan mempunyai 256 derajat keabuan yang nilai-nilainya dari 0 sampai 255. Intensitas pixel disimpan di dalam image[0..N-1] [0..M-1], sedangkan histogram disimpan di dalam tabel Hist[0..255]
void histogram(Citra Image,int N,int M, float Hist[256])
/*Menghitung histogram utk citra Image yang berukuran NxM
Histogram disimpan di dlm tabel Hist yang bertipe float
*/
{ int i, j,n;
/* inisialisasi Hist[0..255] dengan 0 */
for (i=0; i<=255; i++)
Hist[i]=0;
for (i=0; i<=N-1; i++)
for (j=0; j<=M-1; j++)
Hist[image[i][j]]=Hist[Image[i][j]]+1;
/*normalisasi Hist[i] dengan jumlah seluruh pixel */
n=N*M
for (i=0; i<=255; i++)
Hist[i]=Hist[i]/(float)n;
}
Kapal 512x512 8 bit Histogram citra kapal
Khusus citra berwarna, histogramnya dibuat untuk setiap kanal RGB (merah, hijau dan biru).
Histogram citra banyak memberikan informasi penting sbb:
1. Nilai hi, menyatakan peluang (probability) pixel P(i), dengan derajat keabuan i. Jumlah seluruh nilai hi sama dengan 1 atau
2. Puncak histogram menunjukkan intensitas pixel yang menonjol. Lebar dari puncak menunjukkan rentang kontras dari gambar. Citra yang mempunyai kontras terlalu terang atau terlalu gelap 101Liih
memiliki histogram sempit. Histogramnya terlihat hanya menggunakan setengah dari daerah derajat keabuan.
Citra yang baik memiliki histogram yang mengisi daerah derajat keabuan secara penuh dangan distribusi yang merata pada setiap intensitas pixel
Citra Gelap Citra terang
Citra normal (normal brightness) normal brightness & high contrast
Citra Lena yang terlalu gelap, nampak histogram menumpuk di sebelah kiri
Citra Lena yang terlalu terang, nampak histogram menumpuk di sebelah kanan
Citra Lena yang bagus (normal)
PENGOLAHAN CITRA DIGITAL
Operasi-operasi yang dilakukan pada pengolahan citra digital dapat dikelompokkan menjadi empat level komputasi yaitu level : titik, lokal, global dan objek.
1. Level Titik
Operasi pada level titik hanya dilakukan pada pixel tunggal di dalam citra.Operasi titik dikenal juga dengan nama operasi pointwise.
Operasi ini terdiri dari : Mengakses pixel pada lokasi tertentu Memodifikasi dengan operasi linier atau nonlinier Menempatkan nilai pixel baru pada lokasi yang sesuai pada citra baru. Ulangi langkah-langkah tersebut untuk seluruh pixel.
Secara matematis, operasi pada level titik dinyatakan sebagai berikut:
Dimana :
fA : Citra masukan
fB : Citra keluaran
Otitik : Operasi matematis (linier / non linier)
Operasi pada level titik dibagi menjadi tiga macam yaitu berdasarkan : intensitas, geometri dan gabungan intensitas dan geometri
a. Berdasarkan Intensitas
Nilai intensitas u suatu pixel diubah dengan transformasi h menjadi nilai intensitas baru v.
Contoh operasi titik berdasarkan intensitas adalah operasi ambang batas (thresholding). Pada operasi ini nilai pixel dipetakan ke salah satu dari dua nilai berdasarkan nilai ambang.
)},({),(yxfOyxfAtitikB)},({yxfOtitik],0[, )(Lvuuhv
Jika nilai a1 = 0 dan a2 = 1, maka operasi ini mentransformasikan citra hitam putih menjadi citra biner. Misalkan citra hitam putih yang memiliki gray level 256, dipetakan menjadi citra biner, maka fungsi transformasinya adalah sebagai berikut:
pixel-pixel yang nilai intensitasnya di bawah 128 diubah menjadi hitam (nilai intensitas = 0), sedangkan pixel-pixel yang nilai intensitasnya di atas 128 diubah menjadi putih (nilai intensitas =1).
Citra Asli Citra biner Citra negatif
Algoritma : transformasi citra hitam-putih menjadi citra biner
void biner(Citra A, citra_biner B, int T, int N, int M)
/* Membuat citra biner dari citra A berdasarkan nilai ambang (treshold) T yang dispesifikasikan. Ukuran citra adalah N x M. citra_biner adalah tipe data untuk citra biner). */
{ int i, j;
citra_biner B;
for (i=0; i<=N-1; i++)
for (j=0; j<=M-1; j++)
{
if (A[i][j] < T)
B[i][j] = 0;
Else
B[i][j] = 1;
}
}
TyxfaTyxfayxf),( ,),( ,)',(21128),( ,1128),( ,0)',(yxfyxfyxf
Contoh operasi titik yang lain adalah :
1. operasi negatif yaitu mendapatkan citra negatif meniru film negatif pada fotografi dengan cara mengurangi nilai intensitas pixel dari nilai keabuan maksimum. Misal citra dengan 256 derajat keabuan (8 bit), maka citra negatif diperoleh dengan persaman
f(x,y)’ = 255 – f(x,y)
sedangkan citra dengan 128 derajat keabuan
f(x,y)’ = 127 – f(x,y)
Algoritma citra hitam putik ke citra negatif
void negatif(Citra A, citra B, int N, int M)
{ int i, j;
for (i=0; i<=N-1; i++)
for (j=0; j<=M-1; j++)
{
B[i][j] = 255 – A[i][j]
}
}
2. Pemotongan (clipping) : operasi ini dilakukan jika nilai pixel hasil pengolahan citra terletak dibawah nilai intensitas minimum atau di atas nilai intensitas maksimum:
3. Pencerahan citra (image brightening)
Kecerahan citra dapat diperbaiki dengan menambahkan (atau mengurangkan sebuah konstanta kepada (atau dari) setiap pixel di dalam citra f(x,y)’ = f(x,y) + b
Jika b positif, kecerahan citra bertambah, sebaliknya jika b negatif kecerahan citra berkurang.
Semula citra zelda tampak gelap, tetapi dengan menambahkan setiap nilai pixel dengan b=10, citra zelda menjadi lebih terang.
Operasi pencerahan citra dapat menghasilkan nilai dibawah intensitas minimum atau diatas nilai intensitas maksimum. Oleh karena itu operasi clipping perlu diterapkan.
0),(,0255),(0),(255),(,255)',(yxfyxfyxfyxfyxf
Algoritma pencerahan citra untuk citra 256 derajat keabuan
void negatif(Citra A, citra B, int N, int M, int b)
{ int i, j;
for (i=0; i<=N-1; i++)
for (j=0; j<=M-1; j++)
{
temp = A[i][j] + b;
/* clipping */
if (temp < 0)
B[i][j] = 0;
else
if(temp > 255)
B[i][j] = 255;
else
B[i][j] = temp;
}
}
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)
c. Berdasarkan intensitas dan geometri
Operasi ini tidak hanya mengubah nilai intensitas pixel, tapi juga mengubah posisinya. Misalnya image morphing, yaitu perubahan bentuk objet beserta nilai intensitasnya.
2. Aras Lokal
Operasi pada aras lokal menghasilkan citra keluaran yang intensitas suatu pixel bergantung pada intensitas pixel-pixel tetangganya
N : neighborhood, yaitu pixel-pixel yang berada disekitar (x,y)
Contoh operasi beraras lokal adalah operasi konvolusi untuk mendeteksi tepi(edge detection) dan pelembutan citra (image smoothing).
Gambar Hasil pendeteksian semua tepi dari citra lena
),(),(),(),(yxNyxyxfOyxfjijiAlokalB
3. Aras Global
Operasi pada aras global menghasilkan citra keluaran yang intensitas suatu pixel bergantung pada intensitas keseluruhan pixel
Contohnya operasi penyetaraan histogram untuk meningkatkan kualitas citra.
4. Aras Objek
Tujuan dari operasi pada aras objek adalah untuk mengenali objek tersebut, misalnya dengan menghitung rata-rata intensitas, ukuran, bentuk, karakteristik lain dari objek.
Operasi Aritmetika
Karena citra digital adalah matriks, maka operasi aritmetika juga berlaku yang meliputi :
1. Penjumlahan atau pengurangan antara dua citra A dan B
C(x,y) = A(x,y) B(x,y)
2. Perkalian dua citra
C(x,y) = A(x,y) B(x,y)
3. Penjumlahan / pengurangan citra A dengan skalar c
C(x,y) = A(x,y) c
4. Perkalian/pembagian citra A dengan sebuah skalar c
C(x,y) = c . A(x,y)
Operasi Boolean pada citra
Operasi boolean terdiri dari and, or dan not
C(x,y) = A(x,y) and B(x,y)
C(x,y) = A(x,y) or B(x,y)
C(x,y) = not A(x,y)
Pada citra biner, operasi not dapat digunakan untuk menentukan komplemen dari citra.
Ganesha not Ganesha
)},({),(yxfOyxfAglobalB
void not(Citra A, citra B, int N, int M)
{ int i, j;
for (i=0; i<=N-1; i++)
for (j=0; j<=M-1; j++)
{
B[i][j] = ! A[i][j];
}
}
HISTOGRAM CITRA
Histogram citra adalah grafik yang menggambarkan penyebaran nilai-nilai intensitas pixel dari suatu citra atau bagian tertentu di dalam citra. Histogram juga dapat menunjukkan banyak hal tentang kecerahan (brightness) dan kontras (contrast) dari sebuah gambar. Secara grafis histogram ditampilkan dengan diagram batang
Misal citra digital memiliki L derajat keabuan. (misalnya citra dengan kuantisasi derajat keabuan 8-bit, nilai derajat keabuan dari 0 – 255) secara matematis dapat dihitung dengan rumus :
Dimana ni = jumlah pixel yang memiliki derajat keabuan I
n = jumlah seluruh pixel di dalam citra
Sebagai contoh matrik citra berukuran 8 x 8 dengan derajat keabuan dari 0 sampai 15 ( ada 16 buah derajat keabuan)
121314111001278991011131522010054141013543201111088111212129108956141515810002101412108773
ni
Hi=ni/n (n=64)
0
8
0.125
1
4
0.0625
2
5
0.078125
3
2
0.03125
4
2
0.03125
5
3
0.046875
6
1
0.015625
7
3
0.0156875
8
6
0.09375
9
3
0.046875
10
7
0.109375
11
4
0.0625
12
5
0.078125
13
3
0.046875
14
4
0.0625
15
3
0.046875
Semakin besar nilai ni maka semakin besar pula nilai hi
Algoritma Perhitungan Histogram
1,.....1,0,Linnhii
Citra masukan mempunyai 256 derajat keabuan yang nilai-nilainya dari 0 sampai 255. Intensitas pixel disimpan di dalam image[0..N-1] [0..M-1], sedangkan histogram disimpan di dalam tabel Hist[0..255]
void histogram(Citra Image,int N,int M, float Hist[256])
/*Menghitung histogram utk citra Image yang berukuran NxM
Histogram disimpan di dlm tabel Hist yang bertipe float
*/
{ int i, j,n;
/* inisialisasi Hist[0..255] dengan 0 */
for (i=0; i<=255; i++)
Hist[i]=0;
for (i=0; i<=N-1; i++)
for (j=0; j<=M-1; j++)
Hist[image[i][j]]=Hist[Image[i][j]]+1;
/*normalisasi Hist[i] dengan jumlah seluruh pixel */
n=N*M
for (i=0; i<=255; i++)
Hist[i]=Hist[i]/(float)n;
}
Kapal 512x512 8 bit Histogram citra kapal
Khusus citra berwarna, histogramnya dibuat untuk setiap kanal RGB (merah, hijau dan biru).
Histogram citra banyak memberikan informasi penting sbb:
1. Nilai hi, menyatakan peluang (probability) pixel P(i), dengan derajat keabuan i. Jumlah seluruh nilai hi sama dengan 1 atau
2. Puncak histogram menunjukkan intensitas pixel yang menonjol. Lebar dari puncak menunjukkan rentang kontras dari gambar. Citra yang mempunyai kontras terlalu terang atau terlalu gelap 101Liih
memiliki histogram sempit. Histogramnya terlihat hanya menggunakan setengah dari daerah derajat keabuan.
Citra yang baik memiliki histogram yang mengisi daerah derajat keabuan secara penuh dangan distribusi yang merata pada setiap intensitas pixel
Citra Gelap Citra terang
Citra normal (normal brightness) normal brightness & high contrast
Citra Lena yang terlalu gelap, nampak histogram menumpuk di sebelah kiri
Citra Lena yang terlalu terang, nampak histogram menumpuk di sebelah kanan
Citra Lena yang bagus (normal)
CITRA
MODEL CITRA
Citra ada dua macam yaitu citra kontinyu dan citra diskrit (citra digital).
Citra kontinyu dihasilkan sistem optik yang menerima sinyal analog, misalnya mata manusia dan kamera analog. Citra diskrit dihasilkan melalui proses digitalisasi sehingga mampu menghasilkan citra diskrit / digital misalnya kamera digital dan scanner. Citra merupakan fungsi kontinyu dari intensitas cahaya pada bidang dua dimensi, dinyatakan dalam bentuk fungsi: f(x, y) dimana: (x, y) : koordinat pada bidang dua dimensi f(x, y) : intensitas cahaya (brigthness) pada titik (x, y), besarnya 0 < f(x, y) < ∞ Contoh penentuan koordinat titik pada citra y 0,0 x . f(x,y) Intensitas cahaya, f(x, y), sebenarnya merupakan hasil kali antara jumlah cahaya yang berasal dari sumbernya (illumination) dengan derajat kemampuan obyek memantulkan cahaya (reflectance), dinyatakan dalam bentuk persamaan berikut : f(x, y) = i(x, y) . r(x, y) dimana: i(x, y) : illumination, besarnya 0 < i(x, y) < ∞ r(x, y) : reflectance, besarnya 0 < r(x, y) < 1 • Nilai i(x, y) ditentukan oleh sumber cahaya. • Contoh nilai i(x, y) : 1. Pada hari cerah, matahari menghasilkan i(x, y) ≈ 9000 foot candles 2. Pada hari mendung, matahari menghasilkan i(x, y) ≈ 1000 foot candles 3. Pada malam bulan purnama, sinar bulan menghasilkan i(x, y) ≈ 0.01 foot candles • Nilai r(x, y) ditentukan oleh karakteristik obyek di dalam gambar. • Contoh nilai r(x, y) : 1. Benda hitam mempunyai r(x, y) = 0.01 2. Dinding putih mempunyai r(x, y) = 0.8 3. Benda logam stainless steel mempunyai r(x, y) = 0.65 4. Salju mempunyai r(x, y) = 0.93 • Intensitas dari suatu gambar hitam putih, f pada titik (x, y) disebut derajat keabuan (gray level) dinotasikan dengan l yang memiliki rentang nilai dari Lmin sampai Lmax, dinyatakan sebagai berikut : Lmin < l < Lmax Interval (Lmin, Lmax) disebut skala keabuan (gray scale) Untuk alasan praktis Interval (Lmin, Lmax) sering digeser menjadi (0, L), dimana intensitas 0 menyatakan hitam dan L menyatakan putih. Contoh citra hitam putih dengan 256 level artinya skala keabuan dari 0 sampai 255 atau (0, 255). Dalam hal ini 0 menyatakan hitam dan 255 menyatakan putih dan skala bergerak dari 0 sampai dengan 255. Citra hitam putih disebut juga citra satu kanal, karena warnanya hanya ditentukan oleh satu fungsi saja, sedangkan citra berwarnya disebut dengan citra spektral, karena warna citra disusun oleh tiga unsur warna yang disebut unsur RGB.
DIGITALISASI CITRA
Digitalisasi adalah proses representasi citra dari fungsi kontinyu menjadi nilai-nilai diskrit. Citra yang dihasilkan dari digitalisasi disebut citra digital (digital image).
Umumnya citra digital berbentuk empat persegi panjang dan dimensi ukurannya dinyatakan dengan panjang x lebar.
Misalkan suatu citra yang panjangnya M dan lebarnya N dan memiliki derajat keabuan L dapat dinyatakan dengan fungsi berikut : ┌ 0 ≤ x < M f(x, y) ┤ 0 ≤ y < N └ 0 < f < L Citra digital yang berukuran M x N biasanya dinyatakan dalam bentuk matriks yang berukuran M baris dan N kolom, sebagai berikut: a f(0, 0) f(0, 1) …. f(0, N-1) f(1, 0) f(1, 1) …. f(0, N-1) f(x, y) ≈ : : : : : : : : f(M-1, 0) f(M-1, 1) …. f(M-1, N-1) Setiap elemen pada citra digital ( elemen matriks) disebut image element, picture element atau pixel atau pel.
Contoh :
PROSES DIGITALISASI CITRA Proses digitalisasi citra ada dua macam :
1. Digitalisasi spasial (x, y), disebut sampling
2. Digitalisasi intensitas f(x, y), disebut kuantisasi Sumber Cahaya Normal Normal f(x,y)
133........198225220::::::::::::132........233196231241........2061650200........1551250 Ad.1 Sampling Citra kontinyu dibagi-bagi menjadi grid-grid berbentuk bujur sangkar dan pada setiap grid mengandung jumlah pixel tertentu. Sampling Citra Kontinyu Citra Digital Dalam implementasi biasanya jumlah sampling diasumsikan perpangkatan dari dua, sehingga dapat dituliskan: N = 2n dimana : N = Jumlah sampling pada suatu baris/kolom n = Bilangan bulat positif Contoh 256 x 256 pixel 64 x 64 pixel 32 x 32 pixel Ad. 2 Kuantisasi Proses kuantisasi membagi skala keabuan / gray scale (0, L) menjadi sejumlah level, dinotasikan dengan G dan nilainya berupa bilangan bulat (integer), biasanya G merupakan hasil perpangkatan dari dua : G = 2m dimana : G = Derajat keabuan / gray scale m = Bilangan bulat positif Gray scale Scale (0, L) Pixel Depth 21 (2) 0 - 1 1 bit 24 (16) 0 - 15 4 bit 27 (16) 0 - 127 7 bit 28 (256) 0 - 255 8 bit Contoh 256 Level 128 Level 64 Level Jumlah bit yang dibutuhkan untuk menyimpan citra digital yang disampling menjadi N x N pixels dan dikuantisasi menjasi G gray level adalah : b = N x N x m dalam satuan bit
ELEMEN-ELEMEN CITRA DIGITAL
1. Kecerahan (Brightness)
Kecerahan adalah kata lain untuk intensitas cahaya. Kecerahan pada sebuah titik (pixel) di dalam citra bukanlah intensitas riil, tetapi sebenar-nya adalah intensitas rata-rata dari suatu area yang melingkupinya.
2. Kontras (Contrast)
Kontras menyatakan sebaran terang (lightness) dan gelap (darkness) di dalam sebuah gambar.
3. Kontur (Contour)
Kontur adalah keadaan yang ditimbulkan oleh perubahan intensitas pada pixel-pixel bertetangga.
4. Warna (Colour)
Warna adalah persepsi yang dirasakan oleh sistem visual manusia terhadap panjang gelombang cahaya yang dipantulkan oleh obyek. Setiap warna mempunyai panjang gelombang (λ) yang berbeda. - Merah : panjang gelombang paling tinggi - Ungu : panjang gelombang paling rendah
5. Bentuk (Shape)
Shape adalah properti intrinsik dari obyek tiga dimensi, dengan pengertian bahwa shape merupakan properti intrinsik utama sistem visual manusia. 6. Tekstur (Texture) Tekstur dicirikan sebagai distribusi spasial dari derajat keabuan di dalam sekumpulan pixel-pixel yang bertetangga. Jadi tekstur tidak dapat didefi-nisikan hanya untuk sebuah pixel.
ELEMEN SISTEM PEMROSESAN CITRA DIGITAL Secara umum pemrosesan citra digital melibatkan komponen:
1. Digitizer
Merupakan sistem penangkap citra digital yang melakukan penjelajahan citra dan mengkonversinya ke representasi numerik sebagai masukan bagi komputer digital. Hasil dari digitizer berupa matriks yang elemennya menyatakan nilai intensitas cahaya pada suatu titik. Contoh : Scanner Kamera Digital 2. Komputer Digital
Merupakan sistem pemroses citra, bisa berupa komputer mikro sampai komputer berukuran besar seperti Super Computer yang dapat melakukan berbagai macam pemrosesan citra digital resolusi tinggi. Contoh : Super computer PC Komputer
3. Piranti Tampilan
Berfungsi untuk mengkonversi matriks intensitas yang merepresentasikan citra ke tampilan yang dapat diintepretasikan oleh mata manusia. Contoh : Monitor Printer Plotter
4. Media Penyimpan
Piranti yang berfungsi untuk menyimpan citra digital secara permanen sehingga citra digital dapat diambil kembali untuk diproses sewaktu-waktu dan piranti ini biasanya memiliki kapasitas memory yang cukup besar. Contoh : Hardisk CD / DVD Magnetic Tape SKEMA PEMROSESAN CITRA DIGITAL Citra Digitizer Komputer Digital Piranti Tampilan Media Penyimpan
Citra kontinyu dihasilkan sistem optik yang menerima sinyal analog, misalnya mata manusia dan kamera analog. Citra diskrit dihasilkan melalui proses digitalisasi sehingga mampu menghasilkan citra diskrit / digital misalnya kamera digital dan scanner. Citra merupakan fungsi kontinyu dari intensitas cahaya pada bidang dua dimensi, dinyatakan dalam bentuk fungsi: f(x, y) dimana: (x, y) : koordinat pada bidang dua dimensi f(x, y) : intensitas cahaya (brigthness) pada titik (x, y), besarnya 0 < f(x, y) < ∞ Contoh penentuan koordinat titik pada citra y 0,0 x . f(x,y) Intensitas cahaya, f(x, y), sebenarnya merupakan hasil kali antara jumlah cahaya yang berasal dari sumbernya (illumination) dengan derajat kemampuan obyek memantulkan cahaya (reflectance), dinyatakan dalam bentuk persamaan berikut : f(x, y) = i(x, y) . r(x, y) dimana: i(x, y) : illumination, besarnya 0 < i(x, y) < ∞ r(x, y) : reflectance, besarnya 0 < r(x, y) < 1 • Nilai i(x, y) ditentukan oleh sumber cahaya. • Contoh nilai i(x, y) : 1. Pada hari cerah, matahari menghasilkan i(x, y) ≈ 9000 foot candles 2. Pada hari mendung, matahari menghasilkan i(x, y) ≈ 1000 foot candles 3. Pada malam bulan purnama, sinar bulan menghasilkan i(x, y) ≈ 0.01 foot candles • Nilai r(x, y) ditentukan oleh karakteristik obyek di dalam gambar. • Contoh nilai r(x, y) : 1. Benda hitam mempunyai r(x, y) = 0.01 2. Dinding putih mempunyai r(x, y) = 0.8 3. Benda logam stainless steel mempunyai r(x, y) = 0.65 4. Salju mempunyai r(x, y) = 0.93 • Intensitas dari suatu gambar hitam putih, f pada titik (x, y) disebut derajat keabuan (gray level) dinotasikan dengan l yang memiliki rentang nilai dari Lmin sampai Lmax, dinyatakan sebagai berikut : Lmin < l < Lmax Interval (Lmin, Lmax) disebut skala keabuan (gray scale) Untuk alasan praktis Interval (Lmin, Lmax) sering digeser menjadi (0, L), dimana intensitas 0 menyatakan hitam dan L menyatakan putih. Contoh citra hitam putih dengan 256 level artinya skala keabuan dari 0 sampai 255 atau (0, 255). Dalam hal ini 0 menyatakan hitam dan 255 menyatakan putih dan skala bergerak dari 0 sampai dengan 255. Citra hitam putih disebut juga citra satu kanal, karena warnanya hanya ditentukan oleh satu fungsi saja, sedangkan citra berwarnya disebut dengan citra spektral, karena warna citra disusun oleh tiga unsur warna yang disebut unsur RGB.
DIGITALISASI CITRA
Digitalisasi adalah proses representasi citra dari fungsi kontinyu menjadi nilai-nilai diskrit. Citra yang dihasilkan dari digitalisasi disebut citra digital (digital image).
Umumnya citra digital berbentuk empat persegi panjang dan dimensi ukurannya dinyatakan dengan panjang x lebar.
Misalkan suatu citra yang panjangnya M dan lebarnya N dan memiliki derajat keabuan L dapat dinyatakan dengan fungsi berikut : ┌ 0 ≤ x < M f(x, y) ┤ 0 ≤ y < N └ 0 < f < L Citra digital yang berukuran M x N biasanya dinyatakan dalam bentuk matriks yang berukuran M baris dan N kolom, sebagai berikut: a f(0, 0) f(0, 1) …. f(0, N-1) f(1, 0) f(1, 1) …. f(0, N-1) f(x, y) ≈ : : : : : : : : f(M-1, 0) f(M-1, 1) …. f(M-1, N-1) Setiap elemen pada citra digital ( elemen matriks) disebut image element, picture element atau pixel atau pel.
Contoh :
PROSES DIGITALISASI CITRA Proses digitalisasi citra ada dua macam :
1. Digitalisasi spasial (x, y), disebut sampling
2. Digitalisasi intensitas f(x, y), disebut kuantisasi Sumber Cahaya Normal Normal f(x,y)
133........198225220::::::::::::132........233196231241........2061650200........1551250 Ad.1 Sampling Citra kontinyu dibagi-bagi menjadi grid-grid berbentuk bujur sangkar dan pada setiap grid mengandung jumlah pixel tertentu. Sampling Citra Kontinyu Citra Digital Dalam implementasi biasanya jumlah sampling diasumsikan perpangkatan dari dua, sehingga dapat dituliskan: N = 2n dimana : N = Jumlah sampling pada suatu baris/kolom n = Bilangan bulat positif Contoh 256 x 256 pixel 64 x 64 pixel 32 x 32 pixel Ad. 2 Kuantisasi Proses kuantisasi membagi skala keabuan / gray scale (0, L) menjadi sejumlah level, dinotasikan dengan G dan nilainya berupa bilangan bulat (integer), biasanya G merupakan hasil perpangkatan dari dua : G = 2m dimana : G = Derajat keabuan / gray scale m = Bilangan bulat positif Gray scale Scale (0, L) Pixel Depth 21 (2) 0 - 1 1 bit 24 (16) 0 - 15 4 bit 27 (16) 0 - 127 7 bit 28 (256) 0 - 255 8 bit Contoh 256 Level 128 Level 64 Level Jumlah bit yang dibutuhkan untuk menyimpan citra digital yang disampling menjadi N x N pixels dan dikuantisasi menjasi G gray level adalah : b = N x N x m dalam satuan bit
ELEMEN-ELEMEN CITRA DIGITAL
1. Kecerahan (Brightness)
Kecerahan adalah kata lain untuk intensitas cahaya. Kecerahan pada sebuah titik (pixel) di dalam citra bukanlah intensitas riil, tetapi sebenar-nya adalah intensitas rata-rata dari suatu area yang melingkupinya.
2. Kontras (Contrast)
Kontras menyatakan sebaran terang (lightness) dan gelap (darkness) di dalam sebuah gambar.
3. Kontur (Contour)
Kontur adalah keadaan yang ditimbulkan oleh perubahan intensitas pada pixel-pixel bertetangga.
4. Warna (Colour)
Warna adalah persepsi yang dirasakan oleh sistem visual manusia terhadap panjang gelombang cahaya yang dipantulkan oleh obyek. Setiap warna mempunyai panjang gelombang (λ) yang berbeda. - Merah : panjang gelombang paling tinggi - Ungu : panjang gelombang paling rendah
5. Bentuk (Shape)
Shape adalah properti intrinsik dari obyek tiga dimensi, dengan pengertian bahwa shape merupakan properti intrinsik utama sistem visual manusia. 6. Tekstur (Texture) Tekstur dicirikan sebagai distribusi spasial dari derajat keabuan di dalam sekumpulan pixel-pixel yang bertetangga. Jadi tekstur tidak dapat didefi-nisikan hanya untuk sebuah pixel.
ELEMEN SISTEM PEMROSESAN CITRA DIGITAL Secara umum pemrosesan citra digital melibatkan komponen:
1. Digitizer
Merupakan sistem penangkap citra digital yang melakukan penjelajahan citra dan mengkonversinya ke representasi numerik sebagai masukan bagi komputer digital. Hasil dari digitizer berupa matriks yang elemennya menyatakan nilai intensitas cahaya pada suatu titik. Contoh : Scanner Kamera Digital 2. Komputer Digital
Merupakan sistem pemroses citra, bisa berupa komputer mikro sampai komputer berukuran besar seperti Super Computer yang dapat melakukan berbagai macam pemrosesan citra digital resolusi tinggi. Contoh : Super computer PC Komputer
3. Piranti Tampilan
Berfungsi untuk mengkonversi matriks intensitas yang merepresentasikan citra ke tampilan yang dapat diintepretasikan oleh mata manusia. Contoh : Monitor Printer Plotter
4. Media Penyimpan
Piranti yang berfungsi untuk menyimpan citra digital secara permanen sehingga citra digital dapat diambil kembali untuk diproses sewaktu-waktu dan piranti ini biasanya memiliki kapasitas memory yang cukup besar. Contoh : Hardisk CD / DVD Magnetic Tape SKEMA PEMROSESAN CITRA DIGITAL Citra Digitizer Komputer Digital Piranti Tampilan Media Penyimpan
Jumat, 04 November 2011
APRESIASI TEKS SENI BERBAHASA
Pengertian
Apresiasi teks seni berbahasa dapat di artikan sebagai kegiatan untuk memahami suatu karya bermedium bahasa dengan sungguh-sungguh timbul penghargaan terhadap karya itu karya itu karena sadar akan keindahan dan kehalusanya. Keindahan suatu karya itu antara lain terwujud oleh adanya makna, rasa, atau amanat yang disampaikan secara terselubung dengan memanfaatkan struktur tata bahasa dan pilihan kata/ungkapan tertentu sehingga melahirkan majas,rima,ritma,peribahasa,imaji(daya bayang) asosiasi dsb..
Apresiasi dapat bersifat verbal , dapat pula kinetik. Verbal artinya berhubungan dengan kata atau ucapan , sedangkan kinetik artinya berhubungan dengan gerak. Apresiasi dapat bersifat tulis, dapat pula lisan. Selain itu, apresiasi dapat bersifat reseptif, dapat pula produktif.
Bentuk apresiasi karya tahap pertama ialah yang barsifat resptif , seperti membaca mendegarkan , atau menonton sehingga memahami dan menikmati karya tersebut untuk mengetahui sejauh mana seseorang telah berhasil memahami atau menikmati suatu karya.
Penjelasan
Apresiasi dapat diartikan suatu langkah untuk mengenal, memahami, dan menghayati suatu karya sastra yang berakhir dengan timbulnya pencelupan atau rasa menikmati karya tersebut dan berakibat subjek apresiator dapat menghargai karya sastra yang dinikmatinya secara sadar. Karya sastra dapat dikenal atau dipahami melalui unsur-unsur yang membangunnya atau disebut dengan unsur intrinsik. Yang dimaksud unsur-unsur intrinsik, yaitu tema, plot/alur, tokoh, watak tokoh, latar, setting, amanat/pesan, sudut pandang, dan gaya bahasa. Selain dari unsur intrinsik dan teks seni berbahasa, juga dapat diapresiasi dengan menelaah penggunaan atau pilihan kata serta istilah yang terdapat dalam teks tersebut. Termasuk dalam hal ini, mencari kata-kata kunci yang menjadi penanda tema teks yang bersangkutan.
Di samping pengamatan terhadap unsur-unsur intrinsik dan pemakaian unsur bahasanya, untuk memahami suatu karya sastra atau teks seni berbahasa dapat dilakukan pula pengamatan terhadap unsur-unsur ekstrinsik, yaitu hal-hal yang melatar belakangi terciptanya teks seni berbahasa tersebut. Hal-hal tersebut antara lain latar belakang pengarang, tujuan penulisan, latar sosial-budaya, lingkungan kehidupan pengarang, serta latar belakang pendidikan. Sebelum melakukan apresiasi, umumnya seseorang memilih bentuk karya sastra atau jenis teks seni berbahasa yang disukai, misalnya bentuk karya sastra prosa, puisi, drama, atau film. Kesukaan itu akan melangkah pada upaya seseorang untuk mengetahui atau memahami lebih dalam karya yang dipilihnya. Sebuah karya sastra dapat disukai dan digemari oleh seseorang oleh karena karya tersebut dapat memberi kesan tersendiri yang menimbulkan empati bagi penggemarnya. Hal itu disebabkan proses penciptaan karya sastra meliputi hal-hal berikut ini :
1. Upaya mengeksplorasi jiwa pengarangnya yang diejawantahkan ke dalam bentuk bahasa yang akan disampaikan kepada orang lain.
2. Upaya menjadikan sastra media komunikasi antara pengarang atau pencipta dan peminat sastra.
3. Upaya menjadikan sastra sebagai alat penghibur dalam arti merupakan alat pemuas hati peminat sastra.
4. Upaya menjadikan isi karya sastra merupakan satu bentuk ekspresi yang mendalam dari pengarang atau sastrawan terhadap unsur-unsur kehidupan. Dengan kata lain, merupakan hasil proses yang matang bukan sekadar diciptakan.
Untuk mengapresiasi sebuah karya sastra atau teks seni berbahasa, perlu dilakukan aktivitas berupa:
1. Mendengarkan/menyimak
2. Membaca
3. Menonton
4. Mempelajari bagian-bagiannya
5. Menceritakan kembali
6. Mengomentari
7. Meresensi
8. Membuat parafrasa
9. Menjawab pertanyaan yang berkaitan dengan karya tersebut
10. Merasakan seperti: mendeklamasikan (untuk puisi ) atau melakonkan (untuk drama)
11. Membuat sinopsis untuk cerita, dan sebagainya
Selain aktivitas merespons karya sastra seperti disebutkan di atas, langkah-langkah mengapresiasi sebuah karya sastra yang diminati secara umum meliputi hal-hal berikut:
1. Menginterpretasi atau melakukan penafsiran terhadap karya sastra berdasarkan sifat-sifat karya sastra tersebut.
2. Menganalisis atau menguraikan unsur-unsur karya sastra tersebut, baik unsur intrinsik maupun ekstrinsiknya.
3. Menikmati atau merasakan karya sastra berdasarkan pemahaman untuk mendapatkan penghayatan.
4. Mengevaluasi atau menilai karya sastra dalam rangka mengukur kualitas karya tersebut.
5. Memberikan penghargaan kepada karya sastra berdasarkan tingkat kualitasnya.
Contoh
- kisah dalam film Titanic yang dilatarbelakangi oleh kisah nyata tenggelamnya kapal Titanic yang disebut-sebut sebagai unsinkable ship ( kapal yang tak bias tenggelam ) oleh para perancangnya.
- Novel Ziarah karya Iwan Simatupang juga diduga sebagai refleksi goncangan jiwa pengarang akibat kematian istrinya.
- Puisi “Cintaku Jauh di Pulau” karya Chairil Anwar diakui memiliki daya ramal terhadap diri Chairil Anwar sendiri : meninggal dalam usia muda, sebelum cita-citanya tercapai.
Apresiasi teks seni berbahasa dapat di artikan sebagai kegiatan untuk memahami suatu karya bermedium bahasa dengan sungguh-sungguh timbul penghargaan terhadap karya itu karya itu karena sadar akan keindahan dan kehalusanya. Keindahan suatu karya itu antara lain terwujud oleh adanya makna, rasa, atau amanat yang disampaikan secara terselubung dengan memanfaatkan struktur tata bahasa dan pilihan kata/ungkapan tertentu sehingga melahirkan majas,rima,ritma,peribahasa,imaji(daya bayang) asosiasi dsb..
Apresiasi dapat bersifat verbal , dapat pula kinetik. Verbal artinya berhubungan dengan kata atau ucapan , sedangkan kinetik artinya berhubungan dengan gerak. Apresiasi dapat bersifat tulis, dapat pula lisan. Selain itu, apresiasi dapat bersifat reseptif, dapat pula produktif.
Bentuk apresiasi karya tahap pertama ialah yang barsifat resptif , seperti membaca mendegarkan , atau menonton sehingga memahami dan menikmati karya tersebut untuk mengetahui sejauh mana seseorang telah berhasil memahami atau menikmati suatu karya.
Penjelasan
Apresiasi dapat diartikan suatu langkah untuk mengenal, memahami, dan menghayati suatu karya sastra yang berakhir dengan timbulnya pencelupan atau rasa menikmati karya tersebut dan berakibat subjek apresiator dapat menghargai karya sastra yang dinikmatinya secara sadar. Karya sastra dapat dikenal atau dipahami melalui unsur-unsur yang membangunnya atau disebut dengan unsur intrinsik. Yang dimaksud unsur-unsur intrinsik, yaitu tema, plot/alur, tokoh, watak tokoh, latar, setting, amanat/pesan, sudut pandang, dan gaya bahasa. Selain dari unsur intrinsik dan teks seni berbahasa, juga dapat diapresiasi dengan menelaah penggunaan atau pilihan kata serta istilah yang terdapat dalam teks tersebut. Termasuk dalam hal ini, mencari kata-kata kunci yang menjadi penanda tema teks yang bersangkutan.
Di samping pengamatan terhadap unsur-unsur intrinsik dan pemakaian unsur bahasanya, untuk memahami suatu karya sastra atau teks seni berbahasa dapat dilakukan pula pengamatan terhadap unsur-unsur ekstrinsik, yaitu hal-hal yang melatar belakangi terciptanya teks seni berbahasa tersebut. Hal-hal tersebut antara lain latar belakang pengarang, tujuan penulisan, latar sosial-budaya, lingkungan kehidupan pengarang, serta latar belakang pendidikan. Sebelum melakukan apresiasi, umumnya seseorang memilih bentuk karya sastra atau jenis teks seni berbahasa yang disukai, misalnya bentuk karya sastra prosa, puisi, drama, atau film. Kesukaan itu akan melangkah pada upaya seseorang untuk mengetahui atau memahami lebih dalam karya yang dipilihnya. Sebuah karya sastra dapat disukai dan digemari oleh seseorang oleh karena karya tersebut dapat memberi kesan tersendiri yang menimbulkan empati bagi penggemarnya. Hal itu disebabkan proses penciptaan karya sastra meliputi hal-hal berikut ini :
1. Upaya mengeksplorasi jiwa pengarangnya yang diejawantahkan ke dalam bentuk bahasa yang akan disampaikan kepada orang lain.
2. Upaya menjadikan sastra media komunikasi antara pengarang atau pencipta dan peminat sastra.
3. Upaya menjadikan sastra sebagai alat penghibur dalam arti merupakan alat pemuas hati peminat sastra.
4. Upaya menjadikan isi karya sastra merupakan satu bentuk ekspresi yang mendalam dari pengarang atau sastrawan terhadap unsur-unsur kehidupan. Dengan kata lain, merupakan hasil proses yang matang bukan sekadar diciptakan.
Untuk mengapresiasi sebuah karya sastra atau teks seni berbahasa, perlu dilakukan aktivitas berupa:
1. Mendengarkan/menyimak
2. Membaca
3. Menonton
4. Mempelajari bagian-bagiannya
5. Menceritakan kembali
6. Mengomentari
7. Meresensi
8. Membuat parafrasa
9. Menjawab pertanyaan yang berkaitan dengan karya tersebut
10. Merasakan seperti: mendeklamasikan (untuk puisi ) atau melakonkan (untuk drama)
11. Membuat sinopsis untuk cerita, dan sebagainya
Selain aktivitas merespons karya sastra seperti disebutkan di atas, langkah-langkah mengapresiasi sebuah karya sastra yang diminati secara umum meliputi hal-hal berikut:
1. Menginterpretasi atau melakukan penafsiran terhadap karya sastra berdasarkan sifat-sifat karya sastra tersebut.
2. Menganalisis atau menguraikan unsur-unsur karya sastra tersebut, baik unsur intrinsik maupun ekstrinsiknya.
3. Menikmati atau merasakan karya sastra berdasarkan pemahaman untuk mendapatkan penghayatan.
4. Mengevaluasi atau menilai karya sastra dalam rangka mengukur kualitas karya tersebut.
5. Memberikan penghargaan kepada karya sastra berdasarkan tingkat kualitasnya.
Contoh
- kisah dalam film Titanic yang dilatarbelakangi oleh kisah nyata tenggelamnya kapal Titanic yang disebut-sebut sebagai unsinkable ship ( kapal yang tak bias tenggelam ) oleh para perancangnya.
- Novel Ziarah karya Iwan Simatupang juga diduga sebagai refleksi goncangan jiwa pengarang akibat kematian istrinya.
- Puisi “Cintaku Jauh di Pulau” karya Chairil Anwar diakui memiliki daya ramal terhadap diri Chairil Anwar sendiri : meninggal dalam usia muda, sebelum cita-citanya tercapai.
Sabtu, 15 Oktober 2011
Inovasi dan Perilaku Inovatif
1. Pengertian Inovasi
Istilah inovasi dalam organisasi pertama kali diperkenalkan oleh Schumpeter pada tahun 1934. Inovasi dipandang sebagai kreasi dan implementasi ‘kombinasi baru’. Istilah kombinasi baru ini dapat merujuk pada produk, jasa, proses kerja, pasar, kebijakan dan sistem baru. Dalam inovasi dapat diciptakan nilai tambah, baik pada organisasi, pemegang saham, maupun masyarakat luas. Oleh karenanya sebagian besar definisi dari inovasi meliputi pengembangan dan implementasi sesuatu yang baru (dalam de Jong & den Hartog, 2003) sedangkan istilah ‘baru’ dijelaskan Adair (1996) bukan berarti original tetapi lebih ke newness (kebaruan). Arti kebaruan ini, diperjelas oleh pendapat Schumpeter bahwa inovasi adalah mengkreasikan dan mengimplementasikan sesuatu menjadi satu kombinasi.
Dengan inovasi maka seseorang dapat menambahkan nilai dari produk, pelayanan, proses kerja, pemasaran, sistem pengiriman, dan kebijakan, tidak hanya bagi perusahaan tapi juga stakeholder dan masyarakat (dalam de Jong & Den Hartog, 2003). ’Kebaruan’ juga terkait dimensi ruang dan waktu. ’Kebaruan’ terikat dengan dimensi ruang. Artinya, suatu produk atau jasa akan dipandang sebagai sesuatu yang baru di suatu tempat tetapi bukan barang baru lagi di tempat yang lain. Namun demikian, dimensi jarak ini telah dijembatani oleh kemajuan teknologi informasi yang sangat dahsyat sehingga dimensi jarak dipersempit. Implikasinya, ketika suatu penemuan baru diperkenalkan kepada suatu masyarakat tertentu, maka dalam waktu yang singkat, masyarakat dunia akan mengetahuinya.
Dengan demikian ’kebaruan’ relatif lebih bersifat universal. ’Kebaruan’ terikat dengan dimensi waktu. Artinya, kebaruan di jamannya. Jika ditengok sejarah peradaban bangsa Indoensia, maka pada jaman tersebut maka bangunan candi Borobudur, pembuatan keris oleh empu, pembuatan batik adalah suatu karya bersifat inovatif di jamannya. Ruang lingkup inovasi dalam organisasi (Axtell dkk dalam Janssen, 2003), bergerak mulai dari pengembangan dan implementasi ide baru yang mempunyai dampak pada teori, praktek, produk, atau skala yang lebih rendah yaitu perbaikan proses kerja sehari-hari dan desain kerja. Oleh karenanya, penelitian inovasi dalam organisasi dapat dilakukan dalam 3 level yaitu inovasi level individu, kelompok, dan organisasi (Adair, 1996; de Jong & Den Hartog, 2003).
Jika dilihat dari kecepatan perubahan dalam proses inovasi ada dua macam inovasi yaitu inovasi radikal dan inovasi inkremental (Scot & Bruece, 1994).
a. Inovasi radikal dilakukan dengan skala besar, dilakukan oleh para ahli di bidangnya dan biasanya dikelola oleh departemen penelitian dan pengembangan. Inovasi radikal ini sering kali dilakukan di bidang manufaktur dan lembaga jasa keuangan.
b. Inovasi inkremental merupakan proses penyesuaian dan mengimplementasikan perbaikan yang berskala kecil. Yang melakukan inovasi ini adalah semua pihak yang terkait sehingga pendekatan pemberdayaan sesuai dengan model inovasi inkremental ini (Bryd & Brown, 2003; Jones, 2004).
Lebih lanjut De Jong & Den Hartog, (2003) menguraikan bahwa inovasi inkremental terlihat pada sektor kerja berikut ini :
a. Knowledge-intensive service (KIS) yakni usahanya meliputi pengembangan ekonomi sebagai contoh konsultan akuntansi, administrasi, R&D service, teknik, komputer, dan manajemen. Sumber utama inovasi dari kemampuan mereka untuk memberikan hasil desain yang sesuai untuk pengguna layanan mereka. Inovasi mereka hadirkan setiap kali dan tidak terstruktur.
b. Supplier-dominated services meliputi perdagangan retail, pelayanan pribadi (seperti potong rambut), hotel dan restaurant.
Macam inovasi berdasarkan fungsi ada dua yaitu inovasi teknologi dapat berupa produk, pelayanan atau proses produksi dan inovasi administrasi dapat bersifat organisasional, struktural, dan inovasi sosial (Brazeal & Herbert, 1997).
2. Perilaku inovatif
Pengertian perilaku inovatif menurut Wess & Farr (dalam De Jong & Kemp, 2003) adalah semua perilaku individu yang diarahkan untuk menghasilkan, memperkenalkan, dan mengaplikasikan hal-hal ‘baru’, yang bermanfaat dalam berbagai level organisasi. Beberapa peneliti menyebutnya sebagai shop-floor innovation (e.g., Axtell et al., 2000 dalam De Jong & Den Hartog, 2003). Pendapat senada dikemukakan oleh Stein & Woodman (Brazeal & Herbert,1997) mengatakan bahwa inovasi adalah implementasi yang berhasil dari ide-ide kreatif. Bryd & Bryman (2003) mengatakan bahwa ada dua dimensi yang mendasari perilaku inovatif yaitu kreativitas dan pengambilan resiko. Demikian halnya dengan pendapat Amabile dkk (de Jong & Kamp, 2003) bahwa semua inovasi diawali dari ide yang kreatif.
Kreativitas adalah kemampuan untuk mengembangkan ide baru yang terdiri dari 3 aspek yaitu keahilan, kemampuan berfikir fleksibel dan imajinatif, dan motivasi internal (Bryd & Bryman, 2003). Dalam proses inovasi, individu mempunyai ide-ide baru, berdasarkan proses berfikir imajinatif dan didukung oleh motivasi internal yang tinggi. Namun demikian sering kali, proses inovasi berhenti dalam tataran menghasilkan ide kreatif saja dan hal ini tidak dapat dikategorikan dalam perilaku inovatif. Dalam mengimplementasikan ide diperlukan keberanian mengambil resiko karena memperkenalkan ‘hal baru’ mengandung suatu resiko. Yang dimaksud dengan pengambilan resiko adalah kemampuan untuk mendorong ide baru menghadapi rintangan yang menghadang sehingga pengambilan resiko merupakan cara mewujudkan ide yang kreatif menjadi realitas (Bryd & Brown, 2003). Oleh karenanya, jika tujuan semula melakukan inovasi untuk kemanfaatan organisasi, tetapi jika tidak dikelola dengan baik justru menjadi bumerang. Adapun inovasi yang sesuai dengan perilaku inovatif adalah inovasi inkremental. Dalam hal ini, yang melakukan inovasi bukan hanya para ahli saja tetapi semua karyawan yang terlibat dalam proses inovasi tersebut. Oleh karenanya sistem pemberdayaan karyawan sangat diperlukan dalam perilaku inovatif ini.
Dalam penelitian ini, inovasi difokuskan bukan pada output inovatif. Fokus penelitian ini perilaku inovatif yang merupakan faktor kunci dari inovasi inkremental (Scott & Bruce, 1994; de Jong & Kemp, 2003). Yang dimaksud dengan perilaku inovatif dalam penelitian ini adalah semua perilaku individu yang diarahkan untuk menghasilkan dan mengimplementasikan hal-hal ‘baru’, yang bermanfaat dalam berbagai level organisasi; yang terdiri dari dua dimensi yaitu kreativitas dan pengambilan resiko dan proses inovasinya bersifat inkremental.
3. Proses Inovasi dan Pengelolaannya
Inovasi sebagai suatu proses digambarkan sebagai proses yang siklus dan berlangsung terus menerus, meliputi fase kesadaran, penghargaan, adopsi, difusi dan implementasi (Damanpour dkk dalam Brazeal, D.V. dan Herbert, T.T. 1997).
De Jong & Den Hartog (2003) merinci lebih mendalam proses inovasi dalam 4 tahap yaitu:
a. Melihat kesempatan bagi karyawan untuk mengidentifikasi kesempatan.
Kesempatan dapat berawal dari ketidakkongruenan dan diskontinuitas yang terjadi karena adanya ketidaksesuaian dengan pola yang diharapkan misalnya timbulnya masalah pada pola kerja yang sudah berlangsung, adanya kebutuhan konsumen yang belum terpenuhi, atau adanya indikasi trends yang sedang berubah.
b. Mengeluarkan ide.
Dalam fase ini, karyawan mengeluarkan konsep baru dengan tujuan menambah peningkatan. Hal ini meliputi mengeluarkan ide sesuatu yang baru atau memperbaharui pelayanan, pertemuan dengan klien dan teknologi pendukung. Kunci dalam mengeluarkan ide adalah mengkombinasikan dan mereorganisasikan informasi dan konsep yang telah ada sebelumnya untuk memecahkan masalah dan atau meningkatkan kinerja. Proses inovasi biasanya diawali dengan adanya kesenjangan kinerja yaitu ketidaksesuaian antara kinerja aktual dengan kinerja potensial.
c. Implementasi.
Dalam fase ini, ide ditransformasi terhadap hasil yang konkret. Pada tahapan ini sering juga disebut tahapan konvergen. Untuk mengembangkan ide dan mengimplementasikan ide, karyawan harus memiliki perilaku yang mengacu pada hasil. Perilaku inovasi Konvergen meliputi usaha menjadi juara dan bekerja keras. Seorang yang berperilaku juara mengeluarkan seluruh usahanya pada ide kreatif. Usaha menjadi juara meliputi membujuk dan mempengaruhi karyawan dan juga menekan dan bernegosiasi. Untuk mengimplementasikan inovasi sering dibutuhkan koalisi, mendapatkan kekuatan dengan menjual ide kepada rekan yang berpotensi.
d. Aplikasi.
Dalam fase ini meliputi perilaku karyawan yang ditujukan untuk membangun, menguji, dan memasarkan pelayanan baru. Hal ini berkaitan dengan membuat inovasi dalam bentuk proses kerja yang baru ataupun dalam proses rutin yang biasa dilakukan.
Proses inovasi (http;//infomgt.bi.no/euram/material/p-luno.doc), terdiri atas:
a. mengeluarkan ide yaitu meliputi pembentukan rancangan teknis dan desain.
b. resolusi masalah yaitu meliputi mengambil keputusan dan memecah ide ke dalam komponen yang lebih kecil, menentukan prioritas untuk tiap komponen atau elemen, membagi alternatif masalah, dan menilai desain alternatif menggunakan kriteria yang telah dipaparkan dalam tahap pertama fase yang menciptakan penemuan dalam proses inovasi adalah adopsi dan implementasi
Proses inovasi (http:/faculty.babson.edu/gordon/ manuscript/ECIS05.doc) adalah:
a. Inisiasi yaitu kegiatan yang mencakup keputusan dalam organisasi untuk mengadopsi inovasi
b. pengembangan yaitu kegiatan yang meliputi desain dan pengembangan produk dan perencanaan proses inovasi dalam fase inovasijadi fase ini meliputi mengeluarkan ide dan pemecahan masalah
c. implementasi yaitu kegiatan ini meliputi penerapan desain inovasi yang telah dibuat sebelumnya dalam fase pengembangan
Adair (1996) mengatakan ada 3 fase dalam proses inovasi sebagai berikut:
a. Generating ideas.
Keterlibatan individu dan tim dalam menghasilkan ide untuk memperbaiki produk, proses dan layanan yang ada dan menciptkaan sesuatu yang baru.
b. Harvesting ideas.
Melibatkan sekumpulan orang untuk mengumpulkan dan mengevaluasi ide-ide.
c. Developing and implementing these ideas.
Mengembangkan ide-ide yang telah terkumpul dan selanjutnya mengimplementasikan ide tersebut.
Hussey (2003) berupaya membentuknya dalam tahapan dan dibuat dengan akronim EASIER yaitu:
a. Envisioning yaitu proses ini meliputi penyamaan pandangan mengenai masa depan untuk membentuk tujuan berinovasi. Visi ini harus meliputi ukuran, inovasi apa yang dilakukan untuk organisasi, ruang lingkup inovasi, dan bagaimana visi tersebut sesuai dengan visi organisasi.
b. Activating yaitu penyampaian visi ke publik agar tercapai sebuah komitmen terhadap visi sehingga strategi akan relevan dengan visi begitupula dengan implementasi visi.
c. Supporting yaitu tahapan ini merupakan upaya seorang pemimpin tidak hanya di dalam memberikan perintah dan instruksi kepada bawahan, namun juga keterampilan di dalam menginspirasi bawahannya untuk bertindak inovatif. Dalam hal ini diperlukan kepekaan pemimpin dalam memahami bawahannya. Oleh karena itu, pemimpin hendaknya bersikap emphatik.
d. Installing yaitu pada tahapan ini merupakan tahapan implementasi. Dalam hal ini yang perlu diperhatikan adalah kompleksitas strategi yang diperlukan dalam berinovasi dan konsekuensi yang diterima.
Berikut ini beberapa hal yang dapat membantu seseorang di dalam memberikan masukan dalam implementasi sebuah inovasi sebagai berikut:
a). meyakinkan bahwa konsekuensi yang terjadi dapat dipahami kemudian,
b). mengidentifikasi apakah tindakan yang dilakukan membawa perubahan,
c). mengalokasikan tanggung jawab dari berbagai tindakan yang diterima,
d). memprioritaskan tindakan yang diterima,
e). memberikan anggaran yang sesuai, mengatur tim kerja dan struktur yang dibutuhkan,
f). mengalokasikan orang-orang yang tepat,
g). menentukan kebijakan yang dibutuhkan untuk memperlancar implementasi inovasi.
e. Ensuring yaitu kegiatan yang meliputi monitoring dan evaluasi. Hal ini dilakukan untuk meyakinkan bahwa tindakan yang dilakukan sudah tepat waktu dan sesuai rencana. Apabila tidak sesuai dengan rencana maka rencana alternative apa yang dapat diambil. Selain itu, tahapan ini juga dipergunakan untuk memantau apakah hasil sesuai dengan yang diharapkan sehingga apabila tidak, maka akan dibuat langkah penyesuaian.
f. Recognizing yaitu tahapan ini meliputi segala macam bentuk penghargaan terhadap bentuk inovasi. Hal tidak hanya meliputi reward dalam bentuk finansial tapi dapat juga berbentuk kepercayaan, ucapan terima kasih yang tulus, serta bentuk promosi.
Berdasarkan pendapat di atas maka dapat disimpulkan bahwa ada beberapa tahap dalam proses inovasi adalah sebagai berikut:
a. Melihat peluang.
Peluang muncul ketika ada persoalan yang muncul atau dipersepsikan sebagai suatu kesenjangan antara yang seharusnya dan realitanya. Oleh karenanya, perilaku inovatif dimulai dari ketrampilan melihat peluang.
b. Mengeluarkan ide.
Ketika dihadapkan suatu masalah atau dipersepsikan sebagai masalah maka gaya berfikir konvergen yang digunakan yaitu mengeluarkan ide yang sebanyak-banyaknya terhadap masalah yang ada. Dalam tahap ini kreativitas sangat diperlukan.
c. Mengkaji ide.
Tidak Semua ide dapat dipakai, maka dilakukan kajian terhadap ide yang muncul. Gaya berfikir divergen atau mengerucut mulai diterapkan. Salah satu dasar pertimbangan adalah seberapa besar ide tersebut mendatangkan kerugian dan keuntungan. Ide yang realistic yang diterima, sementara ide yang kurang realistic dibuang. Kajian dilakukan terus menerus sampai ditemukan alternative yang paling mempunyai probabilitas sukses yang paling besar.
d. Implementasi.
Dalam tahap ini, keberanian mengambil resiko sangat diperlukan. Resiko berkaitan dengan probabilitas kesuksesan dan kegagalan, oleh karenanya David Mc Clelland menyarankan pengambilan resiko sebaiknya dalam taraf sedang. Hal ini berakaitan dengan probabilitas untuk sukses yang disebabkan oleh kemampuan pengontrolan perilaku untuk mencapai tujuan atau berinovasi.
5. Pengelolaan Perilaku Inovatif
Bharawaj & Menon pada tahun 2000 melakukan survey lebih dari 600 unit bisnis dan mendapatkan hasil bahwa yang menentukan inovasi pada level organisasi adalah:
(a) mekanisme kreativitas individual,
(b) mekanisme kreativitas organisasi, dan
(c) ke dua faktor secara bersama-sama (Hyland & Beckett, 2004).
Ulrich (dalam Hyland & Beckett, 2004) mengatakan bahwa ada 3 premis yang berkaitan dengan inovasi yaitu persoalan inovasi, inovasi itu multifaceted, dan inovasi sebuah budaya.
Hickman & Raia (dalam Hyland & Beckett, 2004) mengatakan bahwa inovasi dapat terjadi dalam lingkungan yang berfikir divergen, imajinasi, ketidakaturan, uncertainty, dan toleransi terhadap ambigiusitas. Bukan dalam sistem berfikir konvergen yang mempertahankan aturan organisasi.
Strategi apa yang perlu diperhatikan dalam memunculkan inovasi?
Pertama, perlu mempertimbangkan pertambahan keuntungan yang akan dicapai. Hal ini dapat dilakukan melalui pengukuran sampai sejauh mana kompetitor akan sulit mengikuti langkah yang diambil.
Kedua apakah ada kemungkinan untuk memperluas keuntungan yang akan diperoleh (Hussey, 2003). Dengan demikian, bagian akhir dari sebuah inovasi adalah sejauh mana langkah yang diambil dapat menguntungkan dan tidak diambil keuntungannya oleh pesaing dan mendapatkan keuntungan.
Organisasi inovatif dikatakan Bryd & Brown (2003) adalah sebagai berikut:
a. adanya dorongan bagi para anggotanya untuk bekerja secara mandiri
b. memberikan penghargaan kepada para anggota yang memiliki arahan tersendiri (inner-directed) dan mengembangkan ide-ide mereka
c. menilai keunikan dan bakat tiap kontributor
d. menampilkan ketangguhan ketika menghadapi hambatan
e. mengetahui bagaimana cara berkembang di lingkungan yang ambigu/ tidak menentu
f. menciptakan lingkungan yang setiap orang yang berada di dalamnya dihargai dan dinilai karena menjadi dirinya sendiri
g. memperkenalkan perilaku penerimaan yang baik
Istilah inovasi dalam organisasi pertama kali diperkenalkan oleh Schumpeter pada tahun 1934. Inovasi dipandang sebagai kreasi dan implementasi ‘kombinasi baru’. Istilah kombinasi baru ini dapat merujuk pada produk, jasa, proses kerja, pasar, kebijakan dan sistem baru. Dalam inovasi dapat diciptakan nilai tambah, baik pada organisasi, pemegang saham, maupun masyarakat luas. Oleh karenanya sebagian besar definisi dari inovasi meliputi pengembangan dan implementasi sesuatu yang baru (dalam de Jong & den Hartog, 2003) sedangkan istilah ‘baru’ dijelaskan Adair (1996) bukan berarti original tetapi lebih ke newness (kebaruan). Arti kebaruan ini, diperjelas oleh pendapat Schumpeter bahwa inovasi adalah mengkreasikan dan mengimplementasikan sesuatu menjadi satu kombinasi.
Dengan inovasi maka seseorang dapat menambahkan nilai dari produk, pelayanan, proses kerja, pemasaran, sistem pengiriman, dan kebijakan, tidak hanya bagi perusahaan tapi juga stakeholder dan masyarakat (dalam de Jong & Den Hartog, 2003). ’Kebaruan’ juga terkait dimensi ruang dan waktu. ’Kebaruan’ terikat dengan dimensi ruang. Artinya, suatu produk atau jasa akan dipandang sebagai sesuatu yang baru di suatu tempat tetapi bukan barang baru lagi di tempat yang lain. Namun demikian, dimensi jarak ini telah dijembatani oleh kemajuan teknologi informasi yang sangat dahsyat sehingga dimensi jarak dipersempit. Implikasinya, ketika suatu penemuan baru diperkenalkan kepada suatu masyarakat tertentu, maka dalam waktu yang singkat, masyarakat dunia akan mengetahuinya.
Dengan demikian ’kebaruan’ relatif lebih bersifat universal. ’Kebaruan’ terikat dengan dimensi waktu. Artinya, kebaruan di jamannya. Jika ditengok sejarah peradaban bangsa Indoensia, maka pada jaman tersebut maka bangunan candi Borobudur, pembuatan keris oleh empu, pembuatan batik adalah suatu karya bersifat inovatif di jamannya. Ruang lingkup inovasi dalam organisasi (Axtell dkk dalam Janssen, 2003), bergerak mulai dari pengembangan dan implementasi ide baru yang mempunyai dampak pada teori, praktek, produk, atau skala yang lebih rendah yaitu perbaikan proses kerja sehari-hari dan desain kerja. Oleh karenanya, penelitian inovasi dalam organisasi dapat dilakukan dalam 3 level yaitu inovasi level individu, kelompok, dan organisasi (Adair, 1996; de Jong & Den Hartog, 2003).
Jika dilihat dari kecepatan perubahan dalam proses inovasi ada dua macam inovasi yaitu inovasi radikal dan inovasi inkremental (Scot & Bruece, 1994).
a. Inovasi radikal dilakukan dengan skala besar, dilakukan oleh para ahli di bidangnya dan biasanya dikelola oleh departemen penelitian dan pengembangan. Inovasi radikal ini sering kali dilakukan di bidang manufaktur dan lembaga jasa keuangan.
b. Inovasi inkremental merupakan proses penyesuaian dan mengimplementasikan perbaikan yang berskala kecil. Yang melakukan inovasi ini adalah semua pihak yang terkait sehingga pendekatan pemberdayaan sesuai dengan model inovasi inkremental ini (Bryd & Brown, 2003; Jones, 2004).
Lebih lanjut De Jong & Den Hartog, (2003) menguraikan bahwa inovasi inkremental terlihat pada sektor kerja berikut ini :
a. Knowledge-intensive service (KIS) yakni usahanya meliputi pengembangan ekonomi sebagai contoh konsultan akuntansi, administrasi, R&D service, teknik, komputer, dan manajemen. Sumber utama inovasi dari kemampuan mereka untuk memberikan hasil desain yang sesuai untuk pengguna layanan mereka. Inovasi mereka hadirkan setiap kali dan tidak terstruktur.
b. Supplier-dominated services meliputi perdagangan retail, pelayanan pribadi (seperti potong rambut), hotel dan restaurant.
Macam inovasi berdasarkan fungsi ada dua yaitu inovasi teknologi dapat berupa produk, pelayanan atau proses produksi dan inovasi administrasi dapat bersifat organisasional, struktural, dan inovasi sosial (Brazeal & Herbert, 1997).
2. Perilaku inovatif
Pengertian perilaku inovatif menurut Wess & Farr (dalam De Jong & Kemp, 2003) adalah semua perilaku individu yang diarahkan untuk menghasilkan, memperkenalkan, dan mengaplikasikan hal-hal ‘baru’, yang bermanfaat dalam berbagai level organisasi. Beberapa peneliti menyebutnya sebagai shop-floor innovation (e.g., Axtell et al., 2000 dalam De Jong & Den Hartog, 2003). Pendapat senada dikemukakan oleh Stein & Woodman (Brazeal & Herbert,1997) mengatakan bahwa inovasi adalah implementasi yang berhasil dari ide-ide kreatif. Bryd & Bryman (2003) mengatakan bahwa ada dua dimensi yang mendasari perilaku inovatif yaitu kreativitas dan pengambilan resiko. Demikian halnya dengan pendapat Amabile dkk (de Jong & Kamp, 2003) bahwa semua inovasi diawali dari ide yang kreatif.
Kreativitas adalah kemampuan untuk mengembangkan ide baru yang terdiri dari 3 aspek yaitu keahilan, kemampuan berfikir fleksibel dan imajinatif, dan motivasi internal (Bryd & Bryman, 2003). Dalam proses inovasi, individu mempunyai ide-ide baru, berdasarkan proses berfikir imajinatif dan didukung oleh motivasi internal yang tinggi. Namun demikian sering kali, proses inovasi berhenti dalam tataran menghasilkan ide kreatif saja dan hal ini tidak dapat dikategorikan dalam perilaku inovatif. Dalam mengimplementasikan ide diperlukan keberanian mengambil resiko karena memperkenalkan ‘hal baru’ mengandung suatu resiko. Yang dimaksud dengan pengambilan resiko adalah kemampuan untuk mendorong ide baru menghadapi rintangan yang menghadang sehingga pengambilan resiko merupakan cara mewujudkan ide yang kreatif menjadi realitas (Bryd & Brown, 2003). Oleh karenanya, jika tujuan semula melakukan inovasi untuk kemanfaatan organisasi, tetapi jika tidak dikelola dengan baik justru menjadi bumerang. Adapun inovasi yang sesuai dengan perilaku inovatif adalah inovasi inkremental. Dalam hal ini, yang melakukan inovasi bukan hanya para ahli saja tetapi semua karyawan yang terlibat dalam proses inovasi tersebut. Oleh karenanya sistem pemberdayaan karyawan sangat diperlukan dalam perilaku inovatif ini.
Dalam penelitian ini, inovasi difokuskan bukan pada output inovatif. Fokus penelitian ini perilaku inovatif yang merupakan faktor kunci dari inovasi inkremental (Scott & Bruce, 1994; de Jong & Kemp, 2003). Yang dimaksud dengan perilaku inovatif dalam penelitian ini adalah semua perilaku individu yang diarahkan untuk menghasilkan dan mengimplementasikan hal-hal ‘baru’, yang bermanfaat dalam berbagai level organisasi; yang terdiri dari dua dimensi yaitu kreativitas dan pengambilan resiko dan proses inovasinya bersifat inkremental.
3. Proses Inovasi dan Pengelolaannya
Inovasi sebagai suatu proses digambarkan sebagai proses yang siklus dan berlangsung terus menerus, meliputi fase kesadaran, penghargaan, adopsi, difusi dan implementasi (Damanpour dkk dalam Brazeal, D.V. dan Herbert, T.T. 1997).
De Jong & Den Hartog (2003) merinci lebih mendalam proses inovasi dalam 4 tahap yaitu:
a. Melihat kesempatan bagi karyawan untuk mengidentifikasi kesempatan.
Kesempatan dapat berawal dari ketidakkongruenan dan diskontinuitas yang terjadi karena adanya ketidaksesuaian dengan pola yang diharapkan misalnya timbulnya masalah pada pola kerja yang sudah berlangsung, adanya kebutuhan konsumen yang belum terpenuhi, atau adanya indikasi trends yang sedang berubah.
b. Mengeluarkan ide.
Dalam fase ini, karyawan mengeluarkan konsep baru dengan tujuan menambah peningkatan. Hal ini meliputi mengeluarkan ide sesuatu yang baru atau memperbaharui pelayanan, pertemuan dengan klien dan teknologi pendukung. Kunci dalam mengeluarkan ide adalah mengkombinasikan dan mereorganisasikan informasi dan konsep yang telah ada sebelumnya untuk memecahkan masalah dan atau meningkatkan kinerja. Proses inovasi biasanya diawali dengan adanya kesenjangan kinerja yaitu ketidaksesuaian antara kinerja aktual dengan kinerja potensial.
c. Implementasi.
Dalam fase ini, ide ditransformasi terhadap hasil yang konkret. Pada tahapan ini sering juga disebut tahapan konvergen. Untuk mengembangkan ide dan mengimplementasikan ide, karyawan harus memiliki perilaku yang mengacu pada hasil. Perilaku inovasi Konvergen meliputi usaha menjadi juara dan bekerja keras. Seorang yang berperilaku juara mengeluarkan seluruh usahanya pada ide kreatif. Usaha menjadi juara meliputi membujuk dan mempengaruhi karyawan dan juga menekan dan bernegosiasi. Untuk mengimplementasikan inovasi sering dibutuhkan koalisi, mendapatkan kekuatan dengan menjual ide kepada rekan yang berpotensi.
d. Aplikasi.
Dalam fase ini meliputi perilaku karyawan yang ditujukan untuk membangun, menguji, dan memasarkan pelayanan baru. Hal ini berkaitan dengan membuat inovasi dalam bentuk proses kerja yang baru ataupun dalam proses rutin yang biasa dilakukan.
Proses inovasi (http;//infomgt.bi.no/euram/material/p-luno.doc), terdiri atas:
a. mengeluarkan ide yaitu meliputi pembentukan rancangan teknis dan desain.
b. resolusi masalah yaitu meliputi mengambil keputusan dan memecah ide ke dalam komponen yang lebih kecil, menentukan prioritas untuk tiap komponen atau elemen, membagi alternatif masalah, dan menilai desain alternatif menggunakan kriteria yang telah dipaparkan dalam tahap pertama fase yang menciptakan penemuan dalam proses inovasi adalah adopsi dan implementasi
Proses inovasi (http:/faculty.babson.edu/gordon/ manuscript/ECIS05.doc) adalah:
a. Inisiasi yaitu kegiatan yang mencakup keputusan dalam organisasi untuk mengadopsi inovasi
b. pengembangan yaitu kegiatan yang meliputi desain dan pengembangan produk dan perencanaan proses inovasi dalam fase inovasijadi fase ini meliputi mengeluarkan ide dan pemecahan masalah
c. implementasi yaitu kegiatan ini meliputi penerapan desain inovasi yang telah dibuat sebelumnya dalam fase pengembangan
Adair (1996) mengatakan ada 3 fase dalam proses inovasi sebagai berikut:
a. Generating ideas.
Keterlibatan individu dan tim dalam menghasilkan ide untuk memperbaiki produk, proses dan layanan yang ada dan menciptkaan sesuatu yang baru.
b. Harvesting ideas.
Melibatkan sekumpulan orang untuk mengumpulkan dan mengevaluasi ide-ide.
c. Developing and implementing these ideas.
Mengembangkan ide-ide yang telah terkumpul dan selanjutnya mengimplementasikan ide tersebut.
Hussey (2003) berupaya membentuknya dalam tahapan dan dibuat dengan akronim EASIER yaitu:
a. Envisioning yaitu proses ini meliputi penyamaan pandangan mengenai masa depan untuk membentuk tujuan berinovasi. Visi ini harus meliputi ukuran, inovasi apa yang dilakukan untuk organisasi, ruang lingkup inovasi, dan bagaimana visi tersebut sesuai dengan visi organisasi.
b. Activating yaitu penyampaian visi ke publik agar tercapai sebuah komitmen terhadap visi sehingga strategi akan relevan dengan visi begitupula dengan implementasi visi.
c. Supporting yaitu tahapan ini merupakan upaya seorang pemimpin tidak hanya di dalam memberikan perintah dan instruksi kepada bawahan, namun juga keterampilan di dalam menginspirasi bawahannya untuk bertindak inovatif. Dalam hal ini diperlukan kepekaan pemimpin dalam memahami bawahannya. Oleh karena itu, pemimpin hendaknya bersikap emphatik.
d. Installing yaitu pada tahapan ini merupakan tahapan implementasi. Dalam hal ini yang perlu diperhatikan adalah kompleksitas strategi yang diperlukan dalam berinovasi dan konsekuensi yang diterima.
Berikut ini beberapa hal yang dapat membantu seseorang di dalam memberikan masukan dalam implementasi sebuah inovasi sebagai berikut:
a). meyakinkan bahwa konsekuensi yang terjadi dapat dipahami kemudian,
b). mengidentifikasi apakah tindakan yang dilakukan membawa perubahan,
c). mengalokasikan tanggung jawab dari berbagai tindakan yang diterima,
d). memprioritaskan tindakan yang diterima,
e). memberikan anggaran yang sesuai, mengatur tim kerja dan struktur yang dibutuhkan,
f). mengalokasikan orang-orang yang tepat,
g). menentukan kebijakan yang dibutuhkan untuk memperlancar implementasi inovasi.
e. Ensuring yaitu kegiatan yang meliputi monitoring dan evaluasi. Hal ini dilakukan untuk meyakinkan bahwa tindakan yang dilakukan sudah tepat waktu dan sesuai rencana. Apabila tidak sesuai dengan rencana maka rencana alternative apa yang dapat diambil. Selain itu, tahapan ini juga dipergunakan untuk memantau apakah hasil sesuai dengan yang diharapkan sehingga apabila tidak, maka akan dibuat langkah penyesuaian.
f. Recognizing yaitu tahapan ini meliputi segala macam bentuk penghargaan terhadap bentuk inovasi. Hal tidak hanya meliputi reward dalam bentuk finansial tapi dapat juga berbentuk kepercayaan, ucapan terima kasih yang tulus, serta bentuk promosi.
Berdasarkan pendapat di atas maka dapat disimpulkan bahwa ada beberapa tahap dalam proses inovasi adalah sebagai berikut:
a. Melihat peluang.
Peluang muncul ketika ada persoalan yang muncul atau dipersepsikan sebagai suatu kesenjangan antara yang seharusnya dan realitanya. Oleh karenanya, perilaku inovatif dimulai dari ketrampilan melihat peluang.
b. Mengeluarkan ide.
Ketika dihadapkan suatu masalah atau dipersepsikan sebagai masalah maka gaya berfikir konvergen yang digunakan yaitu mengeluarkan ide yang sebanyak-banyaknya terhadap masalah yang ada. Dalam tahap ini kreativitas sangat diperlukan.
c. Mengkaji ide.
Tidak Semua ide dapat dipakai, maka dilakukan kajian terhadap ide yang muncul. Gaya berfikir divergen atau mengerucut mulai diterapkan. Salah satu dasar pertimbangan adalah seberapa besar ide tersebut mendatangkan kerugian dan keuntungan. Ide yang realistic yang diterima, sementara ide yang kurang realistic dibuang. Kajian dilakukan terus menerus sampai ditemukan alternative yang paling mempunyai probabilitas sukses yang paling besar.
d. Implementasi.
Dalam tahap ini, keberanian mengambil resiko sangat diperlukan. Resiko berkaitan dengan probabilitas kesuksesan dan kegagalan, oleh karenanya David Mc Clelland menyarankan pengambilan resiko sebaiknya dalam taraf sedang. Hal ini berakaitan dengan probabilitas untuk sukses yang disebabkan oleh kemampuan pengontrolan perilaku untuk mencapai tujuan atau berinovasi.
5. Pengelolaan Perilaku Inovatif
Bharawaj & Menon pada tahun 2000 melakukan survey lebih dari 600 unit bisnis dan mendapatkan hasil bahwa yang menentukan inovasi pada level organisasi adalah:
(a) mekanisme kreativitas individual,
(b) mekanisme kreativitas organisasi, dan
(c) ke dua faktor secara bersama-sama (Hyland & Beckett, 2004).
Ulrich (dalam Hyland & Beckett, 2004) mengatakan bahwa ada 3 premis yang berkaitan dengan inovasi yaitu persoalan inovasi, inovasi itu multifaceted, dan inovasi sebuah budaya.
Hickman & Raia (dalam Hyland & Beckett, 2004) mengatakan bahwa inovasi dapat terjadi dalam lingkungan yang berfikir divergen, imajinasi, ketidakaturan, uncertainty, dan toleransi terhadap ambigiusitas. Bukan dalam sistem berfikir konvergen yang mempertahankan aturan organisasi.
Strategi apa yang perlu diperhatikan dalam memunculkan inovasi?
Pertama, perlu mempertimbangkan pertambahan keuntungan yang akan dicapai. Hal ini dapat dilakukan melalui pengukuran sampai sejauh mana kompetitor akan sulit mengikuti langkah yang diambil.
Kedua apakah ada kemungkinan untuk memperluas keuntungan yang akan diperoleh (Hussey, 2003). Dengan demikian, bagian akhir dari sebuah inovasi adalah sejauh mana langkah yang diambil dapat menguntungkan dan tidak diambil keuntungannya oleh pesaing dan mendapatkan keuntungan.
Organisasi inovatif dikatakan Bryd & Brown (2003) adalah sebagai berikut:
a. adanya dorongan bagi para anggotanya untuk bekerja secara mandiri
b. memberikan penghargaan kepada para anggota yang memiliki arahan tersendiri (inner-directed) dan mengembangkan ide-ide mereka
c. menilai keunikan dan bakat tiap kontributor
d. menampilkan ketangguhan ketika menghadapi hambatan
e. mengetahui bagaimana cara berkembang di lingkungan yang ambigu/ tidak menentu
f. menciptakan lingkungan yang setiap orang yang berada di dalamnya dihargai dan dinilai karena menjadi dirinya sendiri
g. memperkenalkan perilaku penerimaan yang baik
Senin, 11 Juli 2011
Jumat, 08 Juli 2011
Contoh Surat Lamaran Kerja
Attention To:
HRD Manager
Muhammadiyah University Of Purwokerto
Jl. Raya Dukuhwaluh
Purwokerto
Dear Sir/Madam,
I have read from your advertisement at Kompas that your university is looking for lecturer. Based on the advertisement, I am interested in applying application for Engineer position according with my background educational as Informatic Engineering.
My name is Susilo Utomo, I am twenty years old. I have graduated from Informatic Engineering of Department on March 2007. My specialization in Informatic Engineering. I consider myself that I have qualifications as you want. I have good motivation for progress and growing, eager to learn, and can work with a team (team work) or by myself. Beside that I posses adequate computer skill and have good command in English (oral and written).
With my qualifications, I confident that I will be able to contribute effectively to university. Herewith I enclose my :
1. Copy of Bachelor Degree (S-1) Certificate and Academic Transcript.
2. Curriculum Vitae.
3. Copy of Job Training Certificate from Unocal Indonesia Company.
4. Recent photograph with size of 4x6
I would express my gratitude for your attention and I hope I could follow your recruitment test luckily.
Sincerely yours,
Susilo Utomo
____________________________________________________________________________________
Perhatian Untuk:
HRD Manajer
Muhammadiyah University Of Purwokerto
Jl. Raya Dukuhwaluh
Purwokerto
Dear Sir / Madam,
Saya telah membaca dari iklan Anda di Kompas bahwa universitas Anda sedang mencari dosen. Berdasarkan iklan, saya tertarik dalam menerapkan aplikasi untuk posisi Insinyur sesuai dengan latar belakang saya pendidikan sebagai Teknik Informatika.
Nama saya Susilo Utomo, saya dua puluh tahun. Saya telah lulus dari Teknik Informatika Departemen pada Maret 2007. Saya spesialisasi di bidang Teknik Informatika. Saya menganggap diri saya bahwa saya memiliki kualifikasi seperti yang Anda inginkan. Saya memiliki motivasi yang baik untuk kemajuan dan berkembang, bersemangat untuk belajar, dan dapat bekerja dengan tim (team work) atau sendiri. Selain itu saya dimiliki keterampilan komputer yang memadai dan memiliki perintah yang baik dalam bahasa Inggris (lisan dan tertulis).
Dengan kualifikasi saya, saya yakin bahwa saya akan dapat memberikan kontribusi secara efektif ke universitas. Dengan ini saya saya melampirkan:
1. Copy Sarjana (S-1) Sertifikat dan Transkrip Akademik.
2. Kurikulum Vitae.
3. Copy Sertifikat Kerja Praktek dari Unocal Indonesia Company.
4. Foto terakhir dengan ukuran 4x6
Saya akan mengungkapkan rasa terima kasih atas perhatian dan saya berharap bisa mengikuti tes rekrutmen untungnya Anda.
Hormat kami,
Susilo Utomo
HRD Manager
Muhammadiyah University Of Purwokerto
Jl. Raya Dukuhwaluh
Purwokerto
Dear Sir/Madam,
I have read from your advertisement at Kompas that your university is looking for lecturer. Based on the advertisement, I am interested in applying application for Engineer position according with my background educational as Informatic Engineering.
My name is Susilo Utomo, I am twenty years old. I have graduated from Informatic Engineering of Department on March 2007. My specialization in Informatic Engineering. I consider myself that I have qualifications as you want. I have good motivation for progress and growing, eager to learn, and can work with a team (team work) or by myself. Beside that I posses adequate computer skill and have good command in English (oral and written).
With my qualifications, I confident that I will be able to contribute effectively to university. Herewith I enclose my :
1. Copy of Bachelor Degree (S-1) Certificate and Academic Transcript.
2. Curriculum Vitae.
3. Copy of Job Training Certificate from Unocal Indonesia Company.
4. Recent photograph with size of 4x6
I would express my gratitude for your attention and I hope I could follow your recruitment test luckily.
Sincerely yours,
Susilo Utomo
____________________________________________________________________________________
Perhatian Untuk:
HRD Manajer
Muhammadiyah University Of Purwokerto
Jl. Raya Dukuhwaluh
Purwokerto
Dear Sir / Madam,
Saya telah membaca dari iklan Anda di Kompas bahwa universitas Anda sedang mencari dosen. Berdasarkan iklan, saya tertarik dalam menerapkan aplikasi untuk posisi Insinyur sesuai dengan latar belakang saya pendidikan sebagai Teknik Informatika.
Nama saya Susilo Utomo, saya dua puluh tahun. Saya telah lulus dari Teknik Informatika Departemen pada Maret 2007. Saya spesialisasi di bidang Teknik Informatika. Saya menganggap diri saya bahwa saya memiliki kualifikasi seperti yang Anda inginkan. Saya memiliki motivasi yang baik untuk kemajuan dan berkembang, bersemangat untuk belajar, dan dapat bekerja dengan tim (team work) atau sendiri. Selain itu saya dimiliki keterampilan komputer yang memadai dan memiliki perintah yang baik dalam bahasa Inggris (lisan dan tertulis).
Dengan kualifikasi saya, saya yakin bahwa saya akan dapat memberikan kontribusi secara efektif ke universitas. Dengan ini saya saya melampirkan:
1. Copy Sarjana (S-1) Sertifikat dan Transkrip Akademik.
2. Kurikulum Vitae.
3. Copy Sertifikat Kerja Praktek dari Unocal Indonesia Company.
4. Foto terakhir dengan ukuran 4x6
Saya akan mengungkapkan rasa terima kasih atas perhatian dan saya berharap bisa mengikuti tes rekrutmen untungnya Anda.
Hormat kami,
Susilo Utomo
Selasa, 05 Juli 2011
Replication
Melakukan copy dari 1 atau lebih server (disebut sebagai Replicas) demi availability dan performance yang lebih baik.
Keputusan yang salah dalam menentukan arsitektur Replikasi, bisa berarti :
worse performance – suatu “update” harus di-apply kesemua Replicas dan disinkronisasi
worse availability – beberapa algoritma membutuhkan banyak Replicas untuk beroperasi, padahal dalam kenyataan hanya beberapa diantaranya yang digunakan
Snapshot Replication
Mencopy semua data dari ARTIKEL ke SUBSCRIBER
Mengabaikan data yang telah dimodifikasi di SUBSCRIBER (subscriber menjadi Read Only)
Network Bandwidth yang dibutuhkan sangat besar
Mudah implementasinya
Proses Copy Artikel terjadi dalam suatu waktu
Transactional Replication
Proses Copy Transaksi dari Artikel, dengan memanfaatkan Transaction Log milik Publication DB
Setiap perubahan data yang terjadi akan dicopy dulu ke Distributor, baru kemudian dicopy ke Subscriber
Lebih efisien daripada Snapshot Replication
Traffic Network menjadi minimal (krn butuh bandwidth kecil)
Real Time
Modifikasi data di Subscriber tetap dipertahankan
Transactional publication with updatable subscriptions Replication
Seperti Transactional Replication
Bedanya, Subscriber bisa juga mempublikasi ke Pusblisher
Keputusan yang salah dalam menentukan arsitektur Replikasi, bisa berarti :
worse performance – suatu “update” harus di-apply kesemua Replicas dan disinkronisasi
worse availability – beberapa algoritma membutuhkan banyak Replicas untuk beroperasi, padahal dalam kenyataan hanya beberapa diantaranya yang digunakan
Snapshot Replication
Mencopy semua data dari ARTIKEL ke SUBSCRIBER
Mengabaikan data yang telah dimodifikasi di SUBSCRIBER (subscriber menjadi Read Only)
Network Bandwidth yang dibutuhkan sangat besar
Mudah implementasinya
Proses Copy Artikel terjadi dalam suatu waktu
Transactional Replication
Proses Copy Transaksi dari Artikel, dengan memanfaatkan Transaction Log milik Publication DB
Setiap perubahan data yang terjadi akan dicopy dulu ke Distributor, baru kemudian dicopy ke Subscriber
Lebih efisien daripada Snapshot Replication
Traffic Network menjadi minimal (krn butuh bandwidth kecil)
Real Time
Modifikasi data di Subscriber tetap dipertahankan
Transactional publication with updatable subscriptions Replication
Seperti Transactional Replication
Bedanya, Subscriber bisa juga mempublikasi ke Pusblisher
Senin, 04 Juli 2011
Transaction
Transaction Database
Dalam database management system (dbms) ada yang di sebut transaction. Transaction dalam dbms ini bertujuan untuk menggabungkan beberapa statement perubahan kedalam database menjadi dianggap satu kesatuan. Dilakukan semuanya atau tidak sama sekali (all or nothing) sehingga tidak terjadi ketidakkonsistenan data.. Transaksi mempunyai 2 fungsi utama:
1. Menyediakan reliabilitas, artinya jika terjadi kesalahan pada salah satu statement maka seluruh perubahan akan digagalkan. Sehingga data yang tersimpan benar benar reliable(dapat diandalkan).
2. Melakukan isolasi, artinya satu transaksi harus di proses satu persatu. Sehingga tidak ada kemungkinan 2 program mengakses atau bahkan mengubah data sekaligus.
Dalam transaksi ada 4 komponen utama, yaitu Atomicity, Consistency, Isolation and Durability yang biasa di singkat dengan ACID. Berikut penjelasannya:
Atomicity
Adalah suatu aturan dimana perubahan dilakukan secara keseluruhan atau tidak sama sekali. Sehingga jika di tengah transaksi terjadi kegagalan maka seruluruh perubahan akan di batalkan dan di kembalikan kekondisi semula. Kegagalan disini bisa terjadi karena aplikasi, system, database dsb.
Contoh (Ambil kasus transfer di suatu bank dari rek A ke rek B dengan nilai transfer 1000):
Maka stepnya adalah sebagai berikut:
1. Cek saldo A apakah mencukupi, jika mencukupi maka lanjut ke step ke-2. Jika tidak maka transaksi selesai dan tidak ada perubahan.
2. Kurangi saldo A sebesar 1000
3. Tambahkan saldo B sebesar 1000
Seluruh step diatas harus digabungkan sehingga apabila setelah step ke-2 terjadi kesalahan maka seluruh perubahan transaksi harus di batalkan. Setelah transaksi berhasil maka akan di lakukan commit.
Consistency
Menunjukkan konsistensi data yang ada setelah terjadi transaksi. Misalnya pada contoh kasus sebelumya, jika saldo A = 2000 dan saldo B = 500, maka setelah transaksi saldo A = 1000 dan saldo B = 1500. Nah beberapa hal yang biasanya ditangani oleh dbms adalah mengenai integrity constraint. Sedangkan jika berupa hasil perhitungan bisa di lakukan oleh aplikasi.
Isolation
Pada prinsip isolation, data yang sedang di lakukan perubahan tidak boleh diakses oleh lebih dari satu operasi. Harus hanya satu operasi yang melakukan perubahan ini. Sehingga jika ada operasi lain yang akan merubah maka harus menunggu sampai transaksi yang berlangsung selesai.
Misal ada 2 transaksi transfer antara rek A, dan rek B yang terjadi secara bersamaan:
T1 : Transfer A->B senilai 500
• Kurangi saldo A 500
• Tambah saldo B 500
T2 : Transfer B->A senilai 1000
• Kurangi saldo B 1000
• Tambah saldo A 1000
Nah bayangkan jika transaksi tersebut terjadi secara bersamaan dan di proses tanpa isolasi sehingga akan menjadi:
• Kurangi saldo A 500
• Tambah saldo B 500
• Kurangi saldo B 1000
• Tambah saldo A 1000
Jika terjadi kegagalan pada T1, maka data akan tidak konsisten sebab pada T2 sudah mengganti menambahkan saldo pada B. Demikian pentingnya isolasi, sehingga data tidak akan bisa di akses secara bersamaan oleh lebih dari satu operasi.
Durability
Kemampuan DBMS untuk menyimpan data transaksi yang terjadi. Sehingga jika terjadi kegagalan, DBMS menjamin bahwa data transaksi yang telah tersimpan tidak akan hilang. Banyak DBMS yang menuliskan log untuk suatu transaksi yang dapat digunakan ketika terjadi error pada hardware maupun software.
Salah satu poin penting dalam database transaction adalah atomic, yaitu beberapa perintah dianggap sebagai satu kesatuan. Kalau satu gagal, yang lain harus dibatalkan.
Ini adalah fundamental dari pemrograman dengan menggunakan database relasional.
Pada kasus apa perlu transaction? Ya pada semua kasus yang perlu atomic. Contohnya : header detail. Sekali insert, 1 header dan beberapa detail. Kalo pada waktu insert detail gagal, ya headernya harus diundo, kalo ngga ada header yang gantung tanpa detail sehingga datanya juga jadi salah.
Sekarang balik saya tanya, aplikasi apa yang gak pake skema header detail? Kecuali aplikasi prakarya tugas sekolah, aplikasi bisnis pasti pake header detail.
Itu masalah atomicity. Kemudian ada masalah isolation. Isolation ini artinya, transaction yang belum dicommit, tidak akan bisa dibaca oleh session lain. Contohnya gini, kita terima order 1000 item. Tentunya butuh waktu untuk menginsert 1000 record, misalnya butuh waktu 2 detik. Di dunia prosesor, 2 detik itu lama sekali, dan banyak hal bisa terjadi dalam rentang waktu tersebut. Nah, akan terjadi musibah, kalo kita ternyata ada fitur untuk menghitung jumlah order, katakan saja querynya seperti ini.
select sum(nilai) from t_order where tanggal = '2011-02-02'
yang berjalan di tengah-tengah proses insert tadi, misalnya pada waktu baru terinsert 53 order saja. Query hitung ini dijalankan oleh user lain. Suatu hal yang sangat umum terjadi, aplikasi diakses beberapa user berbarengan.
Query ini akan menghasilkan nilai yang salah, karena 1000 order itu belum tentu sukses diinsert. Misalnya pada record ke 143 terjadi mati lampu, hardisk penuh, komputer hang, browser ketutup, laptop kesiram kopi, usernya menekan tombol cancel, validasi stok produk tidak cukup, atau whatever kejadian remeh-temeh yang umum terjadi dalam kehidupan sehari-hari, tentu akan terjadi kekacauan. Karena tidak atomic, maka kita tidak tau sudah berapa record yang terinsert, sehingga menyulitkan proses recovery. Order mana yang harus diinsert ulang, dan order mana yang sudah masuk? Karena tidak ada isolation, maka user yang menjalankan perhitungan order akan mendapat hasil yang tidak sahih kebenarannya.
Seandainya saja kita menggunakan transaction dengan benar, maka pada waktu terjadi sesuatu pada waktu proses insert tadi, maka posisi database akan dikembalikan ke posisi sebelum insert dilakukan. Karena posisi sebelum insert kita tahu dengan pasti, maka recovery gampang. Insert ulang saja 1000 order tadi tanpa kecuali. Sederhana dan mudah.
Jadi kalo ada di sini yang bilang bikin aplikasi bisnis tanpa transaction, maka itu adalah nonsense. Tidak peduli kalo sampe saat ini jalan lancar, maka itu hanyalah kebetulan belaka, dan kita tidak mau selamanya mengandalkan keberuntungan kan? Kalau sampai saat ini berjalan lancar, ya mungkin aplikasinya cuma dipakai 1 concurrent user saja dan itupun jarang-jarang pake.
Nah, jadi transaction itu adalah fitur fundamental yang harus digunakan, sama seperti kalo kita keluar rumah ya harus pake celana. Di daerah lain sana orang kemana2 cuma pake koteka, dan saya tidak mau berdebat dengan mereka urusan celana. Jadi kalo masih ada yang bersikukuh bikin aplikasi bisnis gak pake transaction, ya silahkan, saya tidak mau berdebat urusan ini. Percuma berdebat sama orang yang gak pake celana ;p
Selanjutnya, sebetulnya apa benar transaction itu memberatkan aplikasi? Hmm … ini sebetulnya hanyalah mitos belaka. Yang mau mendebat silahkan sajikan benchmark antara non-transactional dan transactional. Kalo selisih performance cuma 100%, artinya kalo non-transactional cuma 2 kali lebih lemot, saya mendingan upgrade hardware daripada mengorbankan data integrity untuk gain performance yang tidak seberapa ini.
Jadi, apa kita tidak boleh pakai MyISAM ? Tentu ada waktu dan tempatnya. Data2 read only seperti misalnya tabel kategori, master produk, bolehlah pake MyISAM. Tapi kalo sudah data header detail, ya harus InnoDB dan harus menggunakan transaction supaya atomic.
Setelah kita menggunakan InnoDB, sebetulnya kita tidak bisa non-transactional. Kalo kita tidak begin dan commit secara explisit, sebenarnya untuk tiap SQL statement, itu dianggap satu transaction. Sehingga SQL seperti ini :
update table harga set nilai = nilai + 1000;
Sebetulnya akan dijalankan seperti ini ;
begin;
update table harga set nilai = nilai + 1000;
commit;
Ini namanya fitur autocommit. Di MySQL defaultnya dienable.
Dengan adanya autocommit ini, justru kita akan lebih lemot kalo tidak menggunakan transaction secara benar. Contoh, insert 100 data produk. Kalo tanpa begin dan commit explisit, berarti ada 100 begin dan ada 100 commit, artinya 100 kali menjalankan transaction. Akan lebih efisien kalo kita lakukan explisit, seperti ini :
begin;
insert into table produk (kode) values ('P-001');
... ulangi 99 kali lagi ..
commit;
Cara di atas hanya akan membutuhkan satu transaction saja. Jauh lebih efisien.
Baiklah, ada beberapa pesan moral di artikel ini
1. Header detail harus dioperasikan secara atomic
2. Operasi yang belum selesai, tidak boleh dilihat session lain, sehingga untuk aplikasi multiuser, pasti butuh isolation
3. Karena aplikasi bisnis umumnya multiuser, dan pasti punya skema header-detail, maka pasti harusmenggunakan transaction
4. Masalah performance di transaction umumnya mitos belaka, dan walaupun ada, tidak sebanding dengan mengabaikan integritas data
5. Jangan lupa pakai celana kalau keluar rumah
Pembaca setia blog saya tentu paham bahwa biasanya saya memberikan anjuran dengan kata-kata sebaiknya, tergantung situasi, dan istilah-istilah yang relatif. Tapi di artikel ini, banyak kata-kata pasti, harus, dan sejenisnya. Ini karena masalah transaction ini berkaitan dengan integritas data. Aplikasi yang kita buat haruslah bisa dipercaya untuk menghasilkan perhitungan yang benar. Tanpa menjaga integritas data dengan transaction, mustahil perhitungan yang benar bisa didapatkan.
Dalam database management system (dbms) ada yang di sebut transaction. Transaction dalam dbms ini bertujuan untuk menggabungkan beberapa statement perubahan kedalam database menjadi dianggap satu kesatuan. Dilakukan semuanya atau tidak sama sekali (all or nothing) sehingga tidak terjadi ketidakkonsistenan data.. Transaksi mempunyai 2 fungsi utama:
1. Menyediakan reliabilitas, artinya jika terjadi kesalahan pada salah satu statement maka seluruh perubahan akan digagalkan. Sehingga data yang tersimpan benar benar reliable(dapat diandalkan).
2. Melakukan isolasi, artinya satu transaksi harus di proses satu persatu. Sehingga tidak ada kemungkinan 2 program mengakses atau bahkan mengubah data sekaligus.
Dalam transaksi ada 4 komponen utama, yaitu Atomicity, Consistency, Isolation and Durability yang biasa di singkat dengan ACID. Berikut penjelasannya:
Atomicity
Adalah suatu aturan dimana perubahan dilakukan secara keseluruhan atau tidak sama sekali. Sehingga jika di tengah transaksi terjadi kegagalan maka seruluruh perubahan akan di batalkan dan di kembalikan kekondisi semula. Kegagalan disini bisa terjadi karena aplikasi, system, database dsb.
Contoh (Ambil kasus transfer di suatu bank dari rek A ke rek B dengan nilai transfer 1000):
Maka stepnya adalah sebagai berikut:
1. Cek saldo A apakah mencukupi, jika mencukupi maka lanjut ke step ke-2. Jika tidak maka transaksi selesai dan tidak ada perubahan.
2. Kurangi saldo A sebesar 1000
3. Tambahkan saldo B sebesar 1000
Seluruh step diatas harus digabungkan sehingga apabila setelah step ke-2 terjadi kesalahan maka seluruh perubahan transaksi harus di batalkan. Setelah transaksi berhasil maka akan di lakukan commit.
Consistency
Menunjukkan konsistensi data yang ada setelah terjadi transaksi. Misalnya pada contoh kasus sebelumya, jika saldo A = 2000 dan saldo B = 500, maka setelah transaksi saldo A = 1000 dan saldo B = 1500. Nah beberapa hal yang biasanya ditangani oleh dbms adalah mengenai integrity constraint. Sedangkan jika berupa hasil perhitungan bisa di lakukan oleh aplikasi.
Isolation
Pada prinsip isolation, data yang sedang di lakukan perubahan tidak boleh diakses oleh lebih dari satu operasi. Harus hanya satu operasi yang melakukan perubahan ini. Sehingga jika ada operasi lain yang akan merubah maka harus menunggu sampai transaksi yang berlangsung selesai.
Misal ada 2 transaksi transfer antara rek A, dan rek B yang terjadi secara bersamaan:
T1 : Transfer A->B senilai 500
• Kurangi saldo A 500
• Tambah saldo B 500
T2 : Transfer B->A senilai 1000
• Kurangi saldo B 1000
• Tambah saldo A 1000
Nah bayangkan jika transaksi tersebut terjadi secara bersamaan dan di proses tanpa isolasi sehingga akan menjadi:
• Kurangi saldo A 500
• Tambah saldo B 500
• Kurangi saldo B 1000
• Tambah saldo A 1000
Jika terjadi kegagalan pada T1, maka data akan tidak konsisten sebab pada T2 sudah mengganti menambahkan saldo pada B. Demikian pentingnya isolasi, sehingga data tidak akan bisa di akses secara bersamaan oleh lebih dari satu operasi.
Durability
Kemampuan DBMS untuk menyimpan data transaksi yang terjadi. Sehingga jika terjadi kegagalan, DBMS menjamin bahwa data transaksi yang telah tersimpan tidak akan hilang. Banyak DBMS yang menuliskan log untuk suatu transaksi yang dapat digunakan ketika terjadi error pada hardware maupun software.
Salah satu poin penting dalam database transaction adalah atomic, yaitu beberapa perintah dianggap sebagai satu kesatuan. Kalau satu gagal, yang lain harus dibatalkan.
Ini adalah fundamental dari pemrograman dengan menggunakan database relasional.
Pada kasus apa perlu transaction? Ya pada semua kasus yang perlu atomic. Contohnya : header detail. Sekali insert, 1 header dan beberapa detail. Kalo pada waktu insert detail gagal, ya headernya harus diundo, kalo ngga ada header yang gantung tanpa detail sehingga datanya juga jadi salah.
Sekarang balik saya tanya, aplikasi apa yang gak pake skema header detail? Kecuali aplikasi prakarya tugas sekolah, aplikasi bisnis pasti pake header detail.
Itu masalah atomicity. Kemudian ada masalah isolation. Isolation ini artinya, transaction yang belum dicommit, tidak akan bisa dibaca oleh session lain. Contohnya gini, kita terima order 1000 item. Tentunya butuh waktu untuk menginsert 1000 record, misalnya butuh waktu 2 detik. Di dunia prosesor, 2 detik itu lama sekali, dan banyak hal bisa terjadi dalam rentang waktu tersebut. Nah, akan terjadi musibah, kalo kita ternyata ada fitur untuk menghitung jumlah order, katakan saja querynya seperti ini.
select sum(nilai) from t_order where tanggal = '2011-02-02'
yang berjalan di tengah-tengah proses insert tadi, misalnya pada waktu baru terinsert 53 order saja. Query hitung ini dijalankan oleh user lain. Suatu hal yang sangat umum terjadi, aplikasi diakses beberapa user berbarengan.
Query ini akan menghasilkan nilai yang salah, karena 1000 order itu belum tentu sukses diinsert. Misalnya pada record ke 143 terjadi mati lampu, hardisk penuh, komputer hang, browser ketutup, laptop kesiram kopi, usernya menekan tombol cancel, validasi stok produk tidak cukup, atau whatever kejadian remeh-temeh yang umum terjadi dalam kehidupan sehari-hari, tentu akan terjadi kekacauan. Karena tidak atomic, maka kita tidak tau sudah berapa record yang terinsert, sehingga menyulitkan proses recovery. Order mana yang harus diinsert ulang, dan order mana yang sudah masuk? Karena tidak ada isolation, maka user yang menjalankan perhitungan order akan mendapat hasil yang tidak sahih kebenarannya.
Seandainya saja kita menggunakan transaction dengan benar, maka pada waktu terjadi sesuatu pada waktu proses insert tadi, maka posisi database akan dikembalikan ke posisi sebelum insert dilakukan. Karena posisi sebelum insert kita tahu dengan pasti, maka recovery gampang. Insert ulang saja 1000 order tadi tanpa kecuali. Sederhana dan mudah.
Jadi kalo ada di sini yang bilang bikin aplikasi bisnis tanpa transaction, maka itu adalah nonsense. Tidak peduli kalo sampe saat ini jalan lancar, maka itu hanyalah kebetulan belaka, dan kita tidak mau selamanya mengandalkan keberuntungan kan? Kalau sampai saat ini berjalan lancar, ya mungkin aplikasinya cuma dipakai 1 concurrent user saja dan itupun jarang-jarang pake.
Nah, jadi transaction itu adalah fitur fundamental yang harus digunakan, sama seperti kalo kita keluar rumah ya harus pake celana. Di daerah lain sana orang kemana2 cuma pake koteka, dan saya tidak mau berdebat dengan mereka urusan celana. Jadi kalo masih ada yang bersikukuh bikin aplikasi bisnis gak pake transaction, ya silahkan, saya tidak mau berdebat urusan ini. Percuma berdebat sama orang yang gak pake celana ;p
Selanjutnya, sebetulnya apa benar transaction itu memberatkan aplikasi? Hmm … ini sebetulnya hanyalah mitos belaka. Yang mau mendebat silahkan sajikan benchmark antara non-transactional dan transactional. Kalo selisih performance cuma 100%, artinya kalo non-transactional cuma 2 kali lebih lemot, saya mendingan upgrade hardware daripada mengorbankan data integrity untuk gain performance yang tidak seberapa ini.
Jadi, apa kita tidak boleh pakai MyISAM ? Tentu ada waktu dan tempatnya. Data2 read only seperti misalnya tabel kategori, master produk, bolehlah pake MyISAM. Tapi kalo sudah data header detail, ya harus InnoDB dan harus menggunakan transaction supaya atomic.
Setelah kita menggunakan InnoDB, sebetulnya kita tidak bisa non-transactional. Kalo kita tidak begin dan commit secara explisit, sebenarnya untuk tiap SQL statement, itu dianggap satu transaction. Sehingga SQL seperti ini :
update table harga set nilai = nilai + 1000;
Sebetulnya akan dijalankan seperti ini ;
begin;
update table harga set nilai = nilai + 1000;
commit;
Ini namanya fitur autocommit. Di MySQL defaultnya dienable.
Dengan adanya autocommit ini, justru kita akan lebih lemot kalo tidak menggunakan transaction secara benar. Contoh, insert 100 data produk. Kalo tanpa begin dan commit explisit, berarti ada 100 begin dan ada 100 commit, artinya 100 kali menjalankan transaction. Akan lebih efisien kalo kita lakukan explisit, seperti ini :
begin;
insert into table produk (kode) values ('P-001');
... ulangi 99 kali lagi ..
commit;
Cara di atas hanya akan membutuhkan satu transaction saja. Jauh lebih efisien.
Baiklah, ada beberapa pesan moral di artikel ini
1. Header detail harus dioperasikan secara atomic
2. Operasi yang belum selesai, tidak boleh dilihat session lain, sehingga untuk aplikasi multiuser, pasti butuh isolation
3. Karena aplikasi bisnis umumnya multiuser, dan pasti punya skema header-detail, maka pasti harusmenggunakan transaction
4. Masalah performance di transaction umumnya mitos belaka, dan walaupun ada, tidak sebanding dengan mengabaikan integritas data
5. Jangan lupa pakai celana kalau keluar rumah
Pembaca setia blog saya tentu paham bahwa biasanya saya memberikan anjuran dengan kata-kata sebaiknya, tergantung situasi, dan istilah-istilah yang relatif. Tapi di artikel ini, banyak kata-kata pasti, harus, dan sejenisnya. Ini karena masalah transaction ini berkaitan dengan integritas data. Aplikasi yang kita buat haruslah bisa dipercaya untuk menghasilkan perhitungan yang benar. Tanpa menjaga integritas data dengan transaction, mustahil perhitungan yang benar bisa didapatkan.
Langganan:
Postingan (Atom)