PRAKTIKUM 2. MATRIK DAN JENIS CITRA 1. TUJUAN: Mahasiswa memahami konsep matriks dan berbagai jenis citra Mahasiswa memahami konsep threshold dan mampu menerapka konsep threshold di dalam script Mahasiswa mampu membuat script untuk mengkonversi jenis citra 2. TEORI DASAR. MATRIK CITRA
Citra digital direpresentasikan ke dalam bentuk matrik yaitu kumpulan pixel yang tersusun pada baris dan kolom (X,Y). Untuk melihat ukuran sebuah citra >> Ukuran = size(Img) Ukuran = 512
512
Maka citra Img terdiri dari baris sebanyak 512 pixel dan kolom sebanyak 5.12 pixel Matlab menyediakan beberapa fungsi yang dapat kita gunakan untuk menghasilkan bentuk-bentuk matriks yang diinginkan. Fungsi-fungsi tersebut antara lain: zeros : untuk membuat matriks yang semua datanya bernilai 0 ones : matriks yang semua datanya bernilai 1 rand : matriks dengan data random dengan menggunakan distribusi uniform randn : matris dengan data random dengan menggunakan distribusi normal eye : untuk menghasilkan matriks identitas >> a = zeros(2,3) a= 000 000 >> b = ones(1,3)
b= 111 >> c = rand(2,2) c= 0.9501 0.6068 0.2311 0.4860 >> d = rand (1,4) d= 0.8214 0.4447 0.6154 0.7919 >> e = eye(3,3) e= 100 010 001 JENIS CITRA CITRA BERWARNA Citra berwarna, atau biasa dinamakan citra RGB, merupakan jenis citra yang menyajikan warna dalam bentuk komponen R (merah), G (hijau), dan B (biru). Setiap komponen warna menggunakan 8 bit (nilainya berkisar antara 0 sampai dengan 255).
CITRA SKALA KEABUAN Citra keabuan memiliki komponen warna 0 yang menyatakan hitam dan 255 menyatakan warna putih. Skala keabuan memiliki rentang antara 0 sampai 255. CITRA BINER Citra biner memiliki hanya 2 komponen warna yaitu 0 menyatakan hitam dan 1 menyatakan putih. Thresholding citra adalah suatu metode untuk mengubah citra berderajat keabuan menjadi citra biner atau citra hitam putih sehingga dapat digunakan untuk memisahkan obyek dan backgroundnya. Proses Thresholding sering disebut dengan proses binerisasi. Citra hasil thresholding biasanya digunakan untuk segmentasi citra atau pengenalan objek dengan cara mengekstraksi fitur atau bagian dari citra.
Metode thresholding secara umum dibagi menjadi dua, yaitu : 1. Thresholding global Thresholding dilakukan dengan mempartisi histogram dengan menggunakan sebuah threshold (batas ambang) global T, yang berlaku untuk seluruh bagian pada citra. 2. Thresholding adaptif Thesholding dilakukan dengan membagi citra menggunakan beberapa sub citra. Lalu pada setiap sub citra, segmentasi dilakukan dengan menggunakan threshold yang berbeda.
3. PRAKTIKUM. KONVERSI CITRA RGB ke SKALA KEABUAN Salah satu contoh rumus yang biasa dipakai untuk mengubah ke skala keabuan yaitu: 𝐼 = 0,2989 𝑥 𝑅 + 0,5870 𝑥 𝐺 + 0,1141 𝑥 𝐵 Img = imread('lena.jpg'); Abu = uint8(0.2989 * double(Img(:,:,1)) + 0.5870*double(Img(:,:,2)) + 0.1141 * double(Img(:,:,3))); imshow(Abu); double dipakai untuk melakukan konversi dari tipe bilangan bulat 8 bit (uint8) ke tipe double (yang memungkinkan pemrosesan bilangan real berpresisi ganda). uint8 berguna untuk mengonversi dari tipe double ke uint8 (tipe bilangan bulat 8 bit). atau A=imread('lena.jpg'); X=rgb2gray(A); imshow(X); CITRA BINER Img = imread('lena.jpg'); BW = im2bw(Img, 0.5); imshow(BW); CITRA NEGATIVE A=imread('lena.jpg'); G=imcomplement(A); subplot(1,2,1);imshow(A); subplot(1,2,2);imshow(G); CITRA HSV A=imread('lena.jpg'); G=rgb2hsv(A); GH=G(:,:,1); GS=G(:,:,2); GV=G(:,:,3); subplot(2,3,1);imshow(A); subplot(2,3,2);imshow(G); subplot(2,3,4);imshow(GH); subplot(2,3,5);imshow(GS); subplot(2,3,6);imshow(GV); 4. TUGAS. Citra biner dapat digunakan untuk menentukan nilai ambang batas dari sebuah citra. Nilai ambang lebih dikenal dengan istilah threshold. % Teaching single threshold method clc; clear all; close all;
Im = imread('cameraman.tif'); s=size(Im); y=zeros(s(1),s(2)); for i=1:s(1) for j=1:s(2) if(Im(i,j)>100) y(i,j)=0; else y(i,j)=255; end end end subplot(1,2,1);imshow(Im,[]);title('Original Image'); subplot(1,2,2);imshow(y,[]);title('Thresholded Image');
% Teaching multiple threshold method clc; clear all; close all; Im = imread('lena.bmp'); s=size(Im); y=zeros(s(1),s(2)); for i=1:s(1) for j=1:s(2) if(Im(i,j)<100) y(i,j)=0; elseif (Im(i,j)> 200) y(i,j)=255; else y(i,j)=150; end end end subplot(1,2,1); imshow(Im,[ ]); title('Original Image'); subplot(1,2,2);imshow(y,[ ]); title('Multi Level Thresholded Image'); % Teaching various edge detection operators clc; clear all; close all; Im = imread('lena.bmp'); h1 =[0 1 1; -1 0 1;-1 -1 0]; h2 =[-1 -1 0; -1 0 1;0 1 1]; h3=[0 1 2; -1 0 1;-2 -1 0]; h4=[-2 -1 0; -1 0 1;0 1 2]; h5=[0 -1 0; -1 4 -1;0 -1 0]; h6=[-1 -1 -1; -1 8 -1;-1 -1 -1]; h7=[0 0 -1 0 0;0 -1 -2 -1 0;-1 -2 16 -2 -1; 0 -1 -2 -1 0; 0 0 -1 0 0]; I1 = imfilter(Im,h1); I2 = imfilter(Im,h2); I3 = imfilter(Im,h3); I4 = imfilter(Im,h4);
I5 = imfilter(Im,h5); I6 = imfilter(Im,h6); I7 = imfilter(Im,h7); subplot(2,4,1);imshow(Im); title('Original image'); subplot(2,4,2);imshow(I1);title('Prewitt Mask - Diagonal'); subplot(2,4,3);imshow(I2);title('Prewitt Mask - Diagonal'); subplot(2,4,4);imshow(I3);title('Sobel Mask - Diagonal'); subplot(2,4,5);imshow(I4);title('Sobel Mask - Diagonal'); subplot(2,4,6);imshow(I5);title('Laplacian Mask'); subplot(2,4,7);imshow(I6);title('Laplacian Mask'); subplot(2,4,8);imshow(I7);title('Laplacian of Gaussian Mask');