Sie sind auf Seite 1von 14

LAPORAN PRAKTIKUM PENGOLAHAN CITRA

praktek 8 (Image Noise)

Disusun Oleh :

AHMAD WILDAN JAUHARI


NIM. 361655401107
3D

PROGRAM STUDI DIPLOMA III


PROGRAM STUDI TEKNIK INFORMATIKA
POLITEKNIK NEGERI BANYUWANGI
2018
1 Tuliskan semua kode program dan jelaskan bagian-bagian yang
dianggap penting.
Source Code
package Praktikum8;

import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Random;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.UIManager;
import org.jfree.data.category.DefaultCategoryDataset;

/**
*
* @author Ahmad Wildan Jauhari
*/
public class Praktek8 extends javax.swing.JFrame {

/**
* Creates new form Praktek8
*/
String srcIm = "Test1.jpg";
File input = new File(srcIm);
int width;
int height;
BufferedImage image = null;
ImageIcon imageIcon = null;

public Praktek8() {
initComponents();
}
@SuppressWarnings("unchecked")

private void LoadActionPerformed(java.awt.event.ActionEvent evt) {


// TODO add your handling code here:
File input = new File(srcIm);
try {
image = ImageIO.read(input);
} catch (IOException ex) {
Logger.getLogger(Praktek8.class.getName()).log(Level.SEVERE, null, ex);
}
imageIcon = new ImageIcon(image);
jLabel1.setIcon(imageIcon);
}

private void GrayscaleActionPerformed(java.awt.event.ActionEvent evt) {


// TODO add your handling code here:
try {
image = ImageIO.read(input);
width = image.getWidth();
height = image.getHeight();

for (int i = 0; i < width; i++) {


for (int j = 0; j < height; j++) {
Color w = new Color(image.getRGB(i, j));
//masing-masing warna r, g, b diubah menjadi gray
int red = (int) (w.getRed());
int green = (int) (w.getGreen());
int blue = (int) (w.getBlue());
//warna r, g, b digabungkan
int xg = (int) (red + green + blue) / 3;
Color newColor = new Color(xg, xg, xg);
image.setRGB(i, j, newColor.getRGB());
}
}
imageIcon = new ImageIcon(image);
jLabel3.setIcon(imageIcon);
} catch (IOException ex) {
Logger.getLogger(Praktek8.class.getName()).log(Level.SEVERE, null, ex);
}
}

private void NoiseGausianActionPerformed(java.awt.event.ActionEvent evt) {


// TODO add your handling code here:
input = new File(srcIm);
width = image.getWidth();
height = image.getHeight();
Random r = new Random();
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
Color w = new Color(image.getRGB(i, j));

int red = (int) (w.getRed());


int green = (int) (w.getGreen());
int blue = (int) (w.getBlue());

int xg = (int) (red + green + blue) / 3;


int xb = xg;
int nr = r.nextInt(100);
if (nr < nilaiBaru) {
int ns = r.nextInt(256) - 128;
xb = (int) (xg + ns);
if (xb < 20) {
xb = -0;
}
if (xb > 255) {
xb = 255;
}
}
Color newColor = new Color(xb, xb, xb);
image.setRGB(i, j, newColor.getRGB());
}
ImageIcon imageIcon = new ImageIcon(image);
jLabel3.setIcon(imageIcon);
}
}

private void NoiseSpeckleActionPerformed(java.awt.event.ActionEvent evt) {


// TODO add your handling code here:
input = new File(srcIm);
width = image.getWidth();
height = image.getHeight();
Random r = new Random();
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
Color w = new Color(image.getRGB(i, j));

int red = (int) (w.getRed());


int green = (int) (w.getGreen());
int blue = (int) (w.getBlue());

int xg = (int) (red + green + blue) / 3;


int xb = xg;
int nr = r.nextInt(100);
if (nr < 20) {
xb = 0;
}
Color newColor = new Color(xb, xb, xb);
image.setRGB(i, j, newColor.getRGB());
}
ImageIcon imageIcon = new ImageIcon(image);
jLabel3.setIcon(imageIcon);
}
}

private void NoiseSaltActionPerformed(java.awt.event.ActionEvent evt) {


// TODO add your handling code here:
input = new File(srcIm);
width = image.getWidth();
height = image.getHeight();
Random r = new Random();
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
Color w = new Color(image.getRGB(i, j));

int red = (int) (w.getRed());


int green = (int) (w.getGreen());
int blue = (int) (w.getBlue());

int xg = (int) (red + green + blue) / 3;


int xb = xg;
int nr = r.nextInt(100);
if (nr < 20) {
xb = 255;
}
Color newColor = new Color(xb, xb, xb);
image.setRGB(i, j, newColor.getRGB());
}
ImageIcon imageIcon = new ImageIcon(image);
jLabel3.setIcon(imageIcon);
}
}
public static void main(String args[]) {
/* Set the Nimbus look and feel */
try {
com.jtattoo.plaf.aluminium.AluminiumLookAndFeel.setTheme("Large-Font",
"Java Swing", "");

UIManager.setLookAndFeel("com.jtattoo.plaf.aluminium.AluminiumLookAndFeel")
;
new Praktek8();
} catch (Exception ex) {
ex.printStackTrace();
}

/* Create and display the form */


java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Praktek8().setVisible(true);
}
});
}

Analisa: Merupakan Suatu Perintah Untuk Memasukan suatu Method atau perintah dalam
Bahasa Pemrograman Java sehingga perintah tersebut dapat Aktif dan digunakan atau
berfungsi.

1. Load

Analisa : Menampilkan gambar pada jLabel1 dengan membaca data pada variabel input yang
bernilai “file” yang memanggil gambar dengan srcImg. Dengan meamsukan souce code File
input = new File(srcIm);’ merupakan library pada java yang fungsinya untuk memanggil isi
variabel srcIm yang ada pada class praktem8. ‘image = ImageIO.read(input); ‘ image disana
merupakan variabel dari type BufferedImage yang fungsinya untuk membaca file yang dikirim
darivariabelinputpadatypeFile.‘Logger.getLogger(praktek8.class.getName()).log(Level.SEVE
RE, null, ex); ‘ fungsinya yaitu memanggil gambar (load image) dengan melalui location file
yang sudah dideklarasikan pada kelas praktek8.‘imageIcon=newImageIcon(image);dan
Label1.setIcon(imageIcon);‘merupakan variabel yang fungsinya saling memanggil atau
mengambil data dari variabel input lalu diproses pada variabel ImageIcon dengan type
ImageIcon selanjutnya proses akhir memberikan hasil yang diproses oleh source code
‘jLabel1.setIcon(imageIcon);’.
2. Grayscale
Analisa : menampilkan gambar citra warna derajat keabuan. ‘image = ImageIO.read(input);’
fungsinya yaitu untuk mengirim ulang data file yang ada pada variabel input dengan type data
File. For (int i = 0; i < width; i++) { for (int j = 0; j < height; j++){ Color w = new
Color(image.getRGB(i, j)); } ’ yang fungsinya untuk menyalin file gambar dengan ketentuan
pada tombol Load. ‘Color w = new Color(image.getRGB(i, j)); ’ berfungsi untuk menyalin atau
mengambil warna dan ukuran gambar yang ada pada variabel image. penambahan source code
‘int red = (int) (w.getRed(); int green = (int) (w.getGreen()); int blue = (int) (w.getBlue());’
yang gunanya untuk mengkonversikan warna rgb ke warna grayscale. int xg = (int) (red + green
+ blue) / 3; digunakan untuk menghasilkan warna grayscale harus dibagi rata rata , Color
newColor = new Color(xg, xg, xg); merupakan gabungan warna yang sudah dikonversi dan
pada source code ‘image.setRGB(i, j, newColor.getRGB());’ berguna untuk memanggil data
warna yang sudah digabungkan sehingga warna berubah menjadi grayscale namun tampilan
gambarnya.
3. Noise Gausian

Analisa : menampilkan gambar dengan ada gangguan pada gambar berupa bintik hitam dan
putih, Random r = new Random(); digunakan untuk pendeklarasian variabel ”r” karena pada
noise nilai akan di acak/random. For (int i = 0; i < width; i++) { for (int j = 0; j < height; j++){
Color w = new Color(image.getRGB(i, j)); } ’ yang fungsinya untuk menyalin file gambar
dengan ketentuan pada tombol Load. ‘Color w = new Color(image.getRGB(i, j)); ’ berfungsi
untuk menyalin atau mengambil warna dan ukuran gambar yang ada pada variabel image. int
xg = (int) (red + green + blue) / 3; berfungsi menjadikan wana gambar grayscale, int xb = xg;int
nr = r.nextInt(100); digunakan untuk tipe data interger dengan nilai xb sama dengan xg
sedangkan tipe data nr sama dengan “r”. if (nr < 20) { int ns = r.nextInt(256) - 128; xb = (int)
(xg + ns); berfungsi jika nilai nr kurang dari 20% maka akan diproses dengan ns yang nilainya
hasil pengurangan 256 (nilai total pixel) dengan 128 ( nilai tengah) hasilnya akan dijumlahkan
dengan xg(nilai grayscale) yang sama dengan xb. Dan if (xb < 0) { xb = -xb; } berfungsi jika
nilai kurang dari nol maka hasilnya sama dengan -xb. Sedangkan if (xb > 255) { xb = 255; }
berfungsi jika nilai kurang dari 255 hasilnya sama dengan 255. Color newColor = new
Color(xg, xg, xg); merupakan gabungan warna yang sudah dikonversi dan pada source code
‘image.setRGB(i, j, newColor.getRGB());’ berguna untuk memanggil data warna yang sudah
digabungkan sehingga warna berubah menjadi grayscale dengan bintik warna hitam putih.
4. Noise Speckle
Analisa : menampilkan gambar dengan ada gangguan pada gambar berupa bintik hitam,
Random r = new Random(); digunakan untuk pendeklarasian variabel ”r” karena pada noise
nilai akan di acak/random. For (int i = 0; i < width; i++) { for (int j = 0; j < height; j++){ Color
w = new Color(image.getRGB(i, j)); } ’ yang fungsinya untuk menyalin file gambar dengan
ketentuan pada tombol Load. ‘Color w = new Color(image.getRGB(i, j)); ’ berfungsi untuk
menyalin atau mengambil warna dan ukuran gambar yang ada pada variabel image. int xg =
(int) (red + green + blue) / 3; berfungsi menjadikan wana gambar grayscale, int xb = xg;int nr
= r.nextInt(100); digunakan untuk tipe data interger dengan nilai xb sama dengan xg sedangkan
tipe data nr sama dengan “r”. if (nr < 20) { xb = 0; } berfungsi jika nilai kurang dari 20% maka
nilai dari xb sama dengan 0. Color newColor = new Color(xg, xg, xg); merupakan gabungan
warna yang sudah dikonversi dan pada source code ‘image.setRGB(i, j, newColor.getRGB());’
berguna untuk memanggil data warna yang sudah digabungkan sehingga warna berubah
menjadi grayscale dengan bintik warna hitam.
5. Noise Salt and Paper

Analisa : menampilkan gambar dengan ada gangguan pada gambar berupa bintik putih,
Random r = new Random(); digunakan untuk pendeklarasian variabel ”r” karena pada noise
nilai akan di acak/random. For (int i = 0; i < width; i++) { for (int j = 0; j < height; j++){ Color
w = new Color(image.getRGB(i, j)); } ’ yang fungsinya untuk menyalin file gambar dengan
ketentuan pada tombol Load. ‘Color w = new Color(image.getRGB(i, j)); ’ berfungsi untuk
menyalin atau mengambil warna dan ukuran gambar yang ada pada variabel image. int xg =
(int) (red + green + blue) / 3; berfungsi menjadikan wana gambar grayscale, int xb = xg;int nr
= r.nextInt(100); digunakan untuk tipe data interger dengan nilai xb sama dengan xg sedangkan
tipe data nr sama dengan “r”. if (nr < 20) { xb = 255; } berfungsi jika nilai kurang dari 20%
maka nilai dari xb sama dengan 0. Color newColor = new Color(xg, xg, xg); merupakan
gabungan warna yang sudah dikonversi dan pada source code ‘image.setRGB(i, j,
newColor.getRGB());’ berguna untuk memanggil data warna yang sudah digabungkan
sehingga warna berubah menjadi grayscale dengan bintik warna putih.

2) Pada program di atas, probabilitas kemunculan noise sudah


ditetapkan20%.Tambahkan textbox untuk mengubah nilai probabilitas
kemunculan noise mulai dari 0% dan 100%, dan buat programnya.

Soruce code:
private void NoiseGausianActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
File input = new File(srcIm);
input = new File(srcIm);
width = image.getWidth();
height = image.getHeight();
Random r = new Random();
String buram = gusion.getText();
int nilaiBaru = Integer.parseInt(buram);
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
Color w = new Color(image.getRGB(i, j));

int red = (int) (w.getRed());


int green = (int) (w.getGreen());
int blue = (int) (w.getBlue());
int xg = (int) (red + green + blue) / 3;
int xb = xg;
int nr = r.nextInt(100);
if (nr < nilaiBaru) {
int ns = r.nextInt(256) - 128;
xb = (int) (xg + ns);
if (xb < 0) {
xb = -xb;
}
if (xb > 255) {
xb = 255;
}
}
Color newColor = new Color(xb, xb, xb);
image.setRGB(i, j, newColor.getRGB());
}
ImageIcon imageIcon = new ImageIcon(image);
jLabel3.setIcon(imageIcon);
}
}

private void NoiseSpeckleActionPerformed(java.awt.event.ActionEvent evt) {


// TODO add your handling code here:
File input = new File(srcIm);
input = new File(srcIm);
width = image.getWidth();
height = image.getHeight();
Random r = new Random();
String buram = speckle.getText();
int nilaiBaru = Integer.parseInt(buram);
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
Color w = new Color(image.getRGB(i, j));

int red = (int) (w.getRed());


int green = (int) (w.getGreen());
int blue = (int) (w.getBlue());

int xg = (int) (red + green + blue) / 3;


int xb = xg;
int nr = r.nextInt(100);
if (nr < nilaiBaru) {
xb = 0;
}
Color newColor = new Color(xb, xb, xb);
image.setRGB(i, j, newColor.getRGB());
}
ImageIcon imageIcon = new ImageIcon(image);
jLabel3.setIcon(imageIcon);
}
}

private void NoiseSaltActionPerformed(java.awt.event.ActionEvent evt) {


// TODO add your handling code here:
File input = new File(srcIm);
input = new File(srcIm);
width = image.getWidth();
height = image.getHeight();
Random r = new Random();
String buram = salt.getText();
int nilaiBaru = Integer.parseInt(buram);
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
Color w = new Color(image.getRGB(i, j));

int red = (int) (w.getRed());


int green = (int) (w.getGreen());
int blue = (int) (w.getBlue());

int xg = (int) (red + green + blue) / 3;


int xb = xg;
int nr = r.nextInt(100);
if (nr < nilaiBaru) {
xb = 255;
}
Color newColor = new Color(xb, xb, xb);
image.setRGB(i, j, newColor.getRGB());
}
ImageIcon imageIcon = new ImageIcon(image);
jLabel3.setIcon(imageIcon);
}
}

Das könnte Ihnen auch gefallen