Senin, 08 Oktober 2018

Pengolahan Citra Digital


Pengolahan citra ke citra negative, biner, dan rotasi menggunakan octave
Nama: DharmaAdi Prasetyo
NIM  :1503030030
Matkul: Pengolahan Citra Digital
Dosen Pengampu : Arif Johar Taufik S.T., M.T


A.    Citra Negatif
Membuat citra terlihat negatif dengan rumus:
citrab = 255 – citraa
nilai 255 ini apabila gambar yang akan diolah adalah 8 bit. Citra b adalah bentuk citra a yang baru berupa biner dengan mebaliknya menjadi negative seperti pada gambar 1 dibawah ini:
Gambar 1 citra negative
Program yang dibuat di octave adalah sebagai berikut:
clear;
function histo(Img)
% HISTO Digunakan sebagai contoh pembuatan histogram

[jum_baris, jum_kolom] = size(Img);
Img = double(Img);
Histog = zeros(256, 1);
for baris=1 : jum_baris
            for kolom=1 : jum_kolom
            Histog(Img(baris, kolom)+1) = ...
            Histog(Img(baris, kolom)+1) + 1;
            end
end
% Tampilkan dalam bentuk diagram batang
Horis = (0:255)';
bar(Horis, Histog);
endfunction
Img = imread('C:\Users\Public\Pictures\Sample Pictures\Koala.jpg');
Negatif= 255-Img;
subplot (2,2,1); imshow(Img); title ('Gambar Asli');
subplot (2,2,2); histo(Img); title ('Histo Gambar Asli');
subplot (2,2,3); imshow(Negatif); title ('Gambar Negatif');
subplot (2,2,4); histo(Negatif); title ('Histo Gambar Negatif');



B.     Citra biner
Strategi yang dipakai yaitu dengan menerapkan suatu nilai yang dikenal sebagai nilai ambang (threshold). Nilai tersebut dipakai untuk menentukan suatu intensitas akan dikonversikan menjadi 0 atau menjadi 1. Secara matematis, konversi dinyatakan dengan rumus:


Berikut adalah program pada octave:
clc; clear;

Img = imread('C:\Users\Public\Pictures\Sample Pictures\Koala.jpg');

[tinggi, lebar] = size(Img);
ambang = 127; % Nilai ini bisa diubah-ubah
biner = zeros(tinggi, lebar);
for j=1 : tinggi
            for i=1 : lebar
            if Img(j, i) >= ambang
            Biner(j, i) = 0;
            else
            Biner(j, i) = 1;
            end
end
subplot (2,1,1); imshow(Img); title ('Gambar Asli');
subplot (2,1,3); imshow(Biner); title ('Gambar Biner');
end

penjelasan:
Kode
Img = imread('C:\Users\Public\Pictures\Sample Pictures\Koala.jpg');
merupakan perintah untuk membaca citra Koala.png. Hasilnya disimpan
diImg. Lalu,
[tinggi, lebar] = size(Img);
berguna untuk mendapatkan lebar dan tinggi citra.
Pernyataan
ambang = 210;
digunakan untuk menentukan nilai ambang bagi penentuan konversi suatu piksel
menjadi 0 atau 1. Nilai ambang berkisar antara 0 sampai dengan 255.
Pernyataan
for j=1 : tinggi
for i=1 : lebar
if Img(j, i) >= ambang
Biner(j, i) = 0;
else
Biner(j, i) = 1;
end
end
end
menangani penentuan nilai 0 atau 1 pada citra biner untuk semua piksel dalam citra (ditangani dengan dua buah for). Penentuan dilakukan melalui pernyataan if. Dalam hal ini,
Img(j, i)
menyatakan nilai intensitas piksel pada (baris, kolom). Setelah
for j=1 : tinggi
berakhir, maka Biner berisi citra biner. Selanjutnya, citra ditampilkan melalui
subplot (2,1,1); imshow(Img); title ('Gambar Asli');
subplot (2,1,3); imshow(Biner); title ('Gambar Biner');
Hasilnya seperti berikut.
Gambar 2 Citra Biner
C.    Citra Rotasi
Suatu citra dapat diputar dengan sudut𝜃 seiring arah jarum jam atau berlawanan arah jarum jam dengan pusat putaran pada koordinat (0,0).
Dengan program dioctave:
% ROTASI Melakukan Operasi pemutaran citra.
% Menggunakan pendekatan pemetaan ke belakang
clear all;
F = imread('C:\Users\Public\Pictures\Sample Pictures\Koala.jpg');
[tinggi, lebar] = size(F);
sudut = 15; % Sudut pemutaran
rad = pi * sudut/180;
cosa = cos(rad);
sina = sin(rad);
F2 = double(F);
for y=1 : tinggi
for x=1 : lebar
x2 = round(x * cosa + y * sina);
y2 = round(y * cosa - x * sina);
if (x2>=1) && (x2<=lebar) && ...
(y2>=1) && (y2<=tinggi)
G(y, x) = F2(y2, x2);
else
G(y, x) = 0;
end
end
end
G = uint8(G);
subplot (2,1,1); imshow(F); title ('Gambar Asli');
subplot (2,1,2); imshow(G); title ('Gambar rotasi');

dan hasilnya adalah sebagai berikut:

Gambar 3 citra rotasi 15 derajat




Tidak ada komentar:

Posting Komentar