Penerapan gambar di Citra Digital
Pengertian Pengolahan Citra Digital Dan Pemanfaatannya
Pengolahan Citra Digital----- Sebagai mahasiswa teknik Informatika kita harus Mengenal mata kuliah yang satu ini, Pengolahan Citra Digital. Biasanya Pengolahan Citra Digital di ajarkan di semester 6 atau 7, tergantung program studi masing-masing universitas. Pengertian dari Pengolahan Citra Digital adalah : proses yang bertujuan untuk memanipulasi dan menganalisis citra dengan bantuan komputer. Baik citra yang berdimensi 2 atau citra 3 dimensi.
Pengolahan citra digital dapat dikelompokkan dalam dua jenis kegiatan :
1. Memperbaiki kualitas suatu gambar, sehingga dapat lebih mudah diinterpretasi oleh mata manusia. Perbaikan ini termasuk dalam image Enhancement, sehingga di dapati kualitas citra yang lebih bagus dari sebelumnya, ada banyak sekali metode dalam perbaikan citra digital. Nanti akan dijelaskan admin pada postingan, berikutnya. Tunggu dan sabar kuliah onlinenya yahh :D
2. Mengolah informasi yang terdapat pada suatu gambar untuk keperluan pengenalan objek secara otomatis. Sebagai contoh aplikatifnya, image detection, sebuah potret wajah seseorang yang telah disimpan dalam databse, akan dapat dikenali oleh sistem komputer yang telah memuat pengolahan citra digital. Sebagai contoh simplenya, dalam aplikasi facebook anda, ketika anda mengunggah sebuah foto, maka facebook akan mengenali wajah siapa saja yang ada dalam foto tersebut. Nah, dalam image detection, akan ada syarat serta ketentuan tertentu yang harus di penuhi.
Bidang aplikasi kedua yang sangat erat hubungannya dengan ilmu pengetahuan pola (pattern recognition) yang umumnya bertujuan mengenali suatu objek dengan cara mengekstrak informasi penting yang terdapat pada suatu citra. Bila pengenalan pola dihubungkan dengan pengolahan citra, diharapkan akan terbentuk suatu sistem yang dapat memproses citra masukan sehingga citra tersebut dapat dikenali polanya. Proses ini disebut pengenalan citra atau image recognition. Proses pengenalan citra ini sering diterapkan dalam kehidupan sehari-hari.
Pengolahan citra dan pengenalan pola menjadi bagian dari proses pengenalan citra. Kedua aplikasi ini akan saling melengkapi untuk mendapatkan ciri khas dari suatu citra yang hendak dikenali. Secara umum tahapan pengolahan citra digital meliputi akusisi citra, peningkatan kualitas citra, segmentasi citra, representasi dan uraian, pengenalan dan interpretasi.
1. program citra berwarna dll
a=imread('c:\image\MAWI 1.jpg');
red=a(:,:,1);
green=a(:,:,2);
blue=a(:,:,3);
subplot(2,2,1);imshow(a),title('empat bola')
subplot(2,2,2);imshow(red),title('empat bola merah')
subplot(2,2,3);imshow(green),title('empat bola hijau')
subplot(2,2,4);imshow(blue),title('empat bola biru')
x=imread('c:\image\MAWI 1.jpg');
z=x + 80 ;
subplot(1,2,1);imshow(x)
subplot(1,2,2);imshow(z)
y=2.5 * x;
subplot(2,2,1);imshow(x)
subplot(2,2,1);imshow(x)
subplot(2,2,2);imshow(z)
subplot(2,2,3);imshow(y)
figure(1);imshow(x)
figure(1);imshow(x)
figure(2);imshow(z)
figure(3);imshow(y)
2. Program kode program mengubah citra berwarna ke citra abu-abu
img=imread('c:\image\MAWI 1.jpg');
x=uint8(0.2989 * double(img(:,:,1))...
+ 0.5870 *double(img(:,:,2)) + 0.1141 *double(img(:,:,3)));
subplot(2,2,1);imshow(img),title('Rosmawi')
subplot(2,2,2);imshow(x),title('Rosmawi Keluaran')
program mengetahui susunan warna pada citra
a=imread('c:\image\MAWI 1.jpg');
red =a(:,:,1);
green=a(:,:,2);
blue =a(:,:,3);
subplot(2,2,1);imshow(a),title('Masukan empat bola')
subplot(2,2,2);imshow(red),title('empat bola merah')
subplot(2,2,3);imshow(green),title('empat bola hijau')
subplot(2,2,4);imshow(blue),title('empat bola biru')
program mengubah citra abu-abu ke citra biner
img=imread('c:\image\MAWI 1.jpg');
[tinggi,lebar] = size(img);
ambang=150;
biner=zeros(tinggi, lebar);
for baris=1 : tinggi
for kolom=1 : lebar
if img(baris,kolom) >=ambang
biner(baris, kolom) = 0;
else
biner(baris,kolom) =1;
end
end
end
subplot(1,2,1);imshow(img),title('Masukan citra abu-abu')
subplot(1,2,2);imshow(biner),title('citra biner')
imshow(biner)
RGB=imread('C:\Image\MAWI 1.jpg');
YCBCR = rgb2ntsc(RGB);
Y=YCBCR(:,:,1); %Ekstraksi matriks Y
Cb=YCBCR(:,:,2); %Ekstraksi matriks Bc
Cr=YCBCR(:,:,3); %Ekstraksi matriks Br
subplot(2,2,1); imshow(RGB);
subplot(2,2,2); imshow(Y);
subplot(2,2,3); imshow(Cb);
subplot(2,2,4); imshow(Cr);
program pemotongan aras keabuan
f = imread('c:\image\mobil.tif');
[jum_baris, jum_kolom] = size(f);
g = f;
for baris=2 : jum_baris-1
for kolom=2 : jum_kolom-1
minpiksel = min([f(baris-1, kolom-1) ...
f(baris-1, kolom) f(baris, kolom+1) ...
f(baris, kolom-1) ...
f(baris, kolom+1) f(baris+1, kolom-1) ...
f(baris+1, kolom) f(baris+1, kolom+1)]);
makspiksel = max([f(baris-1, kolom-1) ...
f(baris-1, kolom) f(baris, kolom+1) ...
f(baris, kolom-1) ...
f(baris, kolom+1) f(baris+1, kolom-1) ...
f(baris+1, kolom) f(baris+1, kolom+1)]);
if f(baris, kolom) < minpiksel
g(baris, kolom) = minpiksel;
else
if f(baris, kolom) > makspiksel
g(baris, kolom) = makspiksel;
else
g(baris, kolom) = f(baris, kolom);
end
end
end
end
Program filter Batas
==========================
f = imread('c:\image\mobil.tif');
[jum_baris, jum_kolom] = size(f);
g = f;
for baris=2 : jum_baris-1
for kolom=2 : jum_kolom-1
minpiksel = min([f(baris-1, kolom-1) ...
f(baris-1, kolom) f(baris, kolom+1) ...
f(baris, kolom-1) ...
f(baris, kolom+1) f(baris+1, kolom-1) ...
f(baris+1, kolom) f(baris+1, kolom+1)]);
makspiksel = max([f(baris-1, kolom-1) ...
f(baris-1, kolom) f(baris, kolom+1) ...
f(baris, kolom-1) ...
f(baris, kolom+1) f(baris+1, kolom-1) ...
f(baris+1, kolom) f(baris+1, kolom+1)]);
if f(baris, kolom) < minpiksel
g(baris, kolom) = minpiksel;
else
if f(baris, kolom) > makspiksel
g(baris, kolom) = makspiksel;
else
g(baris, kolom) = f(baris, kolom);
end
end
end
end
subplot(1,2,1);imshow(f)
subplot(1,2,2);imshow(g)
Program Filter Pererataan
===============================
f = imread('c:\image\boneka2.tif');
[jum_baris, jum_kolom] = size(f);
f2=double(f);
for baris=2 : jum_baris - 1
for kolom=2 : jum_kolom - 1
jumlah= f2 (baris - 1, kolom - 1) + ...
f2(baris - 1 , kolom) + ...
f2(baris - 1, kolom - 1) + ...
f2(baris, kolom - 1) + ...
f2(baris, kolom) + ...
f2(baris, kolom + 1) + ...
f2(baris +1, kolom - 1) + ...
f2(baris+1, kolom) + ...
f2(baris+1, kolom + 1) ;
g(baris, kolom) = uint8 ( 1/9 * jumlah);
end
end
subplot(1,2,1);imshow(f)
subplot(1,2,2);imshow(g)
program filter median
=======================
f = imread('c:\image\mobil.tif');
[jum_baris, jum_kolom] = size(f);
for baris=2 : jum_baris - 1
for kolom=2 : jum_kolom - 1
data= [f(baris-1, kolom-1) ...
f(baris-1, kolom) ...
f(baris-1, kolom+1) ...
f(baris, kolom-1) ...
f(baris, kolom) ...
f(baris, kolom+1) ...
f(baris+1, kolom-1) ...
f(baris+1, kolom) ...
f(baris+1, kolom-1)];
%urutkan
for i=1 : 8
for j=i+1 : 9
if data(i) > data(j)
temp =data(i);
data(i)=data(j);
data(j)=temp;
end
end
end
%ambil nilai median
g(baris,kolom)=data(5);
end
end
subplot(1,2,1);imshow(f)
subplot(1,2,2);imshow(g)
program penggeseran citra
---------------------------------------------
f=imread('c:\image\kartun.tif');
[jum_baris,jum_kolom]=size(f);
sx=20; %penggeseran arah horizontal
sy=60; %penggeseran arah vertikal
f2=double(f);
g=zeros(size(f2));
for baris=1 : jum_baris
for kolom=1: jum_kolom
xlama=baris - sx;
ylama=kolom - sy;
if (xlama >=1) && (xlama<=jum_baris) && ...
(ylama >=1) && (ylama<=jum_kolom)
g(baris,kolom)=f2(xlama, ylama);
else
g(baris,kolom)=0;
end
end
end
h=uint8(g);
subplot(1,2,1);imshow(f)
subplot(1,2,2);imshow(h)
program memutar citra
============================
f=imread('c:\image\kartun.tif');
[jum_baris, jum_kolom]=size(f);
sudut=10; %sudut pemutaran
rad=pi * sudut/180;
cosa=cos(rad);
sina=sin(rad);
f2=f;
for y=1 : jum_baris
for x=1 :jum_kolom
x2=round(x * cosa + y * sina);
y2=round(y * cosa - x * sina);
if (x2>= 1) && (x2<=jum_kolom) && ...
(y2 >=1) && (y2<=jum_baris)
g(y,x)=f2(y2,x2);
else
g(y,x)=0;
end
end
end
subplot(1,2,1);imshow(f)
subplot(1,2,2);imshow(g)
Program memperbesar Citra dengan fungsi
----------------------------------------------------
function g = perbesar(citra, sy, sx)
f = imread(citra);
[baris, kolom] = size(f);
baris_baru = baris * sy;
kolom_baru = kolom * sx;
f2 = double(f);
for y=1 : baris_baru
y2 = ((y-1) / sy) + 1;
for x=1 : kolom_baru
x2 = ((x-1) / sx) + 1;
g(y, x) = f(floor(y2), floor(x2));
end
end
h = uint8(g);
end %akhir fungsi
u=imread('c:\image\lena128.tif');
z=perbesar('c:\image\lena128.tif', 0.25, 0.25);
subplot(1,2,1);imshow(u),title('citra masukan')
subplot(1,2,2);imshow(z),title('citra perbesar')
program memperbesar citra cara tanpa fungsi
=========================================
f=imread('c:\image\lena128.tif');
[baris, kolom] = size(f);
sy=0.5;
sx=2;
baris_baru = baris * sy;
kolom_baru = kolom * sx;
f2=f;
for y=1 : baris_baru
y2 = ((y-1) / sy) + 1;
for x=1 : kolom_baru
x2 = ((x-1) / sx) + 1;
g(y, x) = f(floor(y2), floor(x2));
end
end
subplot(1,2,1);imshow(f),title('citra masukan')
subplot(1,2,2);imshow(g),title('citra perbesar')
program pencerminan citra secara horizontal dengan fungsi
==============================================
function g = cerminh(f)
[tinggi, lebar] = size(f);
for y=1 : tinggi
for x=1 : lebar
x2 = lebar - x + 1;
y2 = y;
g(y, x) = f(y2, x2);
end
end
h = uint8(g);
end %akhir fungsi
f=imread('c:\image\kartun.tif');
h=cerminh(f);
subplot(1,2,1);imshow(f),title('citra masukan')
subplot(1,2,2);imshow(h),title('citra cermin horizontal')
program pencerminan citra secara horizontal dengan fungsi cara kedua
====================================================
function g = cerminh(f)
[jum_baris, jum_kolom] = size(f);
for baris=1 : jum_baris
for kolom=1 : jum_kolom
x2 = jum_kolom - kolom + 1;
y2 = baris;
g(baris,kolom) = f(y2, x2);
end
end
%g = uint8(g);
end %akhir fungsi
f=imread('c:\image\kartun.tif');
g=cerminh(f);
subplot(1,2,1);imshow(f),title('citra masukan')
subplot(1,2,2);imshow(g),title('citra cermin horizontal')
program pencerminan citra secara horizontal tanpa fungsi
==============================================
f=imread('c:\image\kartun.tif');
[jum_baris, jum_kolom] = size(f);
for baris=1 : jum_baris
for kolom=1 : jum_kolom
x2 = jum_kolom - kolom + 1;
y2 = baris;
g(baris,kolom) = f(y2, x2);
end
end
subplot(1,2,1);imshow(f),title('citra masukan')
subplot(1,2,2);imshow(g),title('citra cermin horizontal')
program mencari tepi biner objek tanpa fungsi
===========================================
f=imread('c:\image\daun_bin.tif');
[jum_baris, jum_kolom] = size(f);
g=f;
g = zeros(jum_baris, jum_kolom);
for q = 2 : jum_baris - 1
for p = 2 : jum_kolom - 1
p0 = f(q, p+1);
p1 = f(q-1, p+1);
p2 = f(q-1, p);
p3 = f(q-1, p-1);
p4 = f(q, p-1);
p5 = f(q+1, p-1);
p6 = f(q+1, p);
p7 = f(q+1, p+1);
sigma = p0 + p1 + p2 + p3 + p4 + p5 + p6 + p7;
if sigma == 8
g(q, p) = 0;
else
g(q, p) = f(q, p);
end
end
end
subplot(1,2,1);imshow(f)
subplot(1,2,2);imshow(g)
function hasil=perim1(bw)
u=inbound_tracing(bw);
hasil=length(u) -1;
end %akhir fungsi
img=imread('c:\image\daun_bin.tif');
perim1(img)
===========================================
f=imread('c:\image\daun_bin.tif');
[jum_baris, jum_kolom] = size(f);
g=f;
g = zeros(jum_baris, jum_kolom);
for q = 2 : jum_baris - 1
for p = 2 : jum_kolom - 1
p0 = f(q, p+1);
p1 = f(q-1, p+1);
p2 = f(q-1, p);
p3 = f(q-1, p-1);
p4 = f(q, p-1);
p5 = f(q+1, p-1);
p6 = f(q+1, p);
p7 = f(q+1, p+1);
sigma = p0 + p1 + p2 + p3 + p4 + p5 + p6 + p7;
if sigma == 8
g(q, p) = 0;
else
g(q, p) = f(q, p);
end
end
end
subplot(1,2,1);imshow(f)
subplot(1,2,2);imshow(g)
function hasil=perim1(bw)
u=inbound_tracing(bw);
hasil=length(u) -1;
end %akhir fungsi
img=imread('c:\image\daun_bin.tif');
perim1(img)

program pusat massa dan fitur menggunakan pusat massa dengan fungsi
==========================================================
function [pusat_x, pusat_y] = centroid(BW)
% CENTROID Untuk memperoleh pusat massa sebuah objek
% yang terletak pada citra biner BW
[tinggi, lebar] = size(BW);
pusat_x = 0;
pusat_y = 0;
luas = 0;
for q = 1 : tinggi
for p = 1 : lebar
if BW(q, p) == 1
luas = luas + 1;
pusat_x = pusat_x + p;
pusat_y = pusat_y + q;
end
end
end
pusat_x = pusat_x / luas;
pusat_y = pusat_y / luas;
end %akhir fungsi
Daun = imread('C:\Image\daun_bin.tif');
[x, y] = centroid(Daun); imshow(Daun);
[panjang, lebar] = size(Daun);
line([0 lebar], [round(y) round(y)],’Color’,’b’)
line([round(x) round(x)], [0 panjang],’Color’,’b’)
Program Citra berwarna RGB Ke CMYK dengan fungsi sudah dimodifikasi
======================================================
function [c,m,y,k] = rgbkecmyk(r,g,b)
if max(max(r)) > 1.0 || max(max(g)) > 1.0 || max(max(b)) > 1.0
r = double(r) / 255;
g = double(g) / 255;
b = double(b) / 255;
end
u = 0.5;
be = 1;
[tinggi, lebar] = size(r);
for baris=1: tinggi
for kolom=1: lebar
kb = min([(1-r(baris,kolom)) (1-g(baris,kolom)) (1-b(baris,kolom))]);
if kb == 1
c(baris,kolom) = 0;
m(baris,kolom) = 0;
y(baris,kolom) = 0;
else
c(baris,kolom) = (1.0 - r(baris,kolom) - u * kb);
m(baris,kolom) = (1.0 - g(baris,kolom) - u * kb);
y(baris,kolom) = (1.0 - b(baris,kolom) - u * kb);
k(baris,kolom) = be * kb;
end
end
end
% Konversikan ke jangkauan [0,255]
c = uint8(c * 255);
m = uint8(m * 255);
y = uint8(y * 255);
k = uint8(k * 255);
end %akhir fungsi
[c,m,y,k] = rgbkecmyk(171, 215, 170)
konversi rgb ke cmyk dengan nilai =
c = 64
m = 20
y = 65
k = 40
img = imread('c:\Image\lapangan.tif');
[c,m,y,k] = rgbkecmyk(img(:,:,1), img(:,:,2), img(:,:,3));
subplot(1,2,1);imshow(img)
subplot(1,2,2);imshow([c,m,y,k])

Program deteksi garis citra biner dengan fungsi
=================================
function [g] = deteksi(f, h, potong, pembulatan)
if nargin < 3
potong = false;
end
if nargin < 4
pembulatan = true;
end
[tinggi_f, lebar_f] = size(f);
[tinggi_h, lebar_h] = size(h);
if rem(lebar_h, 2) == 0 || rem(tinggi_h, 2) == 0
disp('lebar dan tinggi h harus ganjil');
return;
end
m2 = floor(tinggi_h / 2);
n2 = floor(lebar_h / 2);
% Menentukan ukuran hasil beserta penentu koordinat horizontal/vertikal/45/-45
if potong == true
sisi_m2 = m2;
sisi_n2 = n2;
g = zeros(tinggi_f - 2 * m2, lebar_f - 2 * n2);
else
sisi_m2 = 0;
sisi_n2 = 0;
g = zeros(size(f));
end
f2=double(f);
for y=m2+1 : tinggi_f-m2
for x=n2+1 : lebar_f-n2
% Pelaksanaan korelasi f(baris, kolom)
jum = 0;
for p= -m2 : m2
for q= -n2 : n2
jum = jum + h(p+m2+1,q+n2+1) * f2(y+p, x+q);
end
end
g(y - sisi_m2, x - sisi_n2) = jum;
end
end
if pembulatan == true
g = uint8(g);
end
end %akhir fungsi
h1 = [-1 2 -1; -1 2 -1 ; -1 2 -1];
img = imread('C:\image\kotak.png');
g = deteksi(img, h1);
subplot(1,2,1);imshow(img)
subplot(1,2,2);imshow(g,[0 1])

Program Deteksi garis pada citra Biner
====================================
function [G] = deteksi(F, H, potong, pembulatan)
if nargin < 3
potong = false;
end
if nargin < 4
pembulatan = true;
end
[tinggi_f, lebar_f] = size(F);
[tinggi_h, lebar_h] = size(H);
if rem(lebar_h,2) == 0 || rem(tinggi_h,2) == 0
disp('Lebar dan tinggi H harus ganjil');
return;
end
m2 = floor(tinggi_h/2);
n2 = floor(lebar_h/2);
% Menentukan ukuran hasil beserta
% penentu ofset koordinat
if potong == true
sisi_m2 = m2;
sisi_n2 = n2;
G = zeros(tinggi_f - 2 * m2, lebar_f - 2 * n2);
else
sisi_m2 = 0;
sisi_n2 = 0;
G = zeros(size(F));
end
F2=double(F);
for y=m2+1 : tinggi_f-m2
for x=n2+1 : lebar_f-n2
% Pelaksanaan korelasi F(baris, kolom)
jum = 0;
for p=-m2 : m2
for q=-n2 : n2
jum = jum + H(p+m2+1,q+n2+1) * ...
F2(y+p, x+q);
end
end
G(y - sisi_m2, x - sisi_n2) = jum;
end
end
if pembulatan == true
G = uint8(G);
end
end %akhir fungsi
H1 = [-1 -1 2; -1 2 -1 ; 2 -1 -1];
img = imread('C:\image\kotak.png');
G = deteksi(img, H1);
subplot(1,2,1);imshow(img)
subplot(1,2,2);imshow(G,[0 1])
H1 = [-1 -1 -1; 2 2 2; -1 -1 -1];
img = imread('C:\image\kotak.png');
G = deteksi(img, H1);
subplot(1,2,1);imshow(img)
subplot(1,2,2);imshow(G,[0 1])
H1 = [-1 2 -1; -1 2 -1;-1 2 -1];
img = imread('C:\image\kotak.png');
G = deteksi(img, H1);
subplot(1,2,1);imshow(img)
subplot(1,2,2);imshow(G,[0 1])
H1 = [2 -1 -1; -1 2 -1;-1 -1 2];
img = imread('C:\image\kotak.png');
G = deteksi(img, H1);
subplot(1,2,1);imshow(img)
subplot(1,2,2);imshow(G,[0 1])

Program derau gaussian dengan fungsi
==================================================
function [g] = gaussian(f, sigma, mu)
% g = Menghasilkan citra yang telah diberi derau menggunakan gaussian.
% f = citra masukan berskala keabuan
% sigma = standar deviasi fungsi gaussian
% mu = rerata fungsi Gaussian
if nargin < 3
mu = 0; % Nilai bawaan mu
end
if nargin < 2
sigma = 1; % Nilai bawaan standar deviasi
end
[m, n] = size(f);
g = double(f);
for i=1 : m
for j=1 : n
derau = randn * sigma + mu;
g(i,j) = round(f(i, j) + derau);
if g(i,j) >= 255
g(i,j) = 255;
elseif g(i,j) <= 0
g(i,j) = 0;
end
end
end
g = uint8(g);
end %akhir fungsi
f = imread('c:\image\kartun.tif');
g = gaussian(f, 150);
subplot(1,2,1);imshow(f), title('citra masukan')
subplot(1,2,2);imshow(g), title('citra keluaran')

Program garam dan merica dengan fungsi
=================================
function [g] = gamer(f, probabilitas)
if nargin < 2
probabilitas = 0.05; % Nilai bawaan
end;
[m, n] = size(f);
g = double(f);
for i=1 : m
for j=1 : n
nilai_acak = rand;
if nilai_acak <= probabilitas / 2
g(i,j) = 0;
elseif (nilai_acak > probabilitas / 2) && ...
(nilai_acak <= probabilitas)
g(i,j) = 255;
end
end
end
g = uint8(g);
end %akhir fungsi
f = imread('c:\image\boneka.tif');
g = gamer(f, 0.05);
subplot(1,2,1);imshow(f), title('citra masukan')
subplot(1,2,2);imshow(g), title('citra keluaran')

Tidak ada komentar:
Posting Komentar