
Sinopsis
Contents
Pengubahan Kontras Gambar
clc;clear all;close all; I = imread('panoramic.jpg'); a = I+100; b = I-100; c = I*2; d = I/2; figure imshow(I),title('Gambar Asli'); figure, subplot(2,2,1),imshow(a),title('Tambah'); subplot(2,2,2),imshow(b),title('Kurang'); subplot(2,2,3),imshow(c),title('Kali'); subplot(2,2,4),imshow(d),title('Bagi');
>> a=uint8(200+100) a = uint8 255 >>
Mengubah Format Truecolor menjadi Grayscale
Setiap gambar terdiri dari 4 layer secara yaitu 1 Layer transparant dan 3 layer warna (RGB) atapun hanya 1 layer grayscale saja (monocrome). Tapi secara umum dalam format penyimpanan *.jpg *.bmp hanya terdiri dari format RGB ataupun grayscale. Pada sesi sebelumnya kalian sudah belajar membaca gambar dan menampilkannya dalam figure. Gambar Panoramic diatas adalah truecolor RBG, bisa kalian cek akan terdiri dari 3 layer
>> whos I Name Size Bytes Class Attributes I 296x399x3 354312 uint8
Atau dengan perintah ndims()
clc;clear all;close all; I = imread('panoramic.jpg'); if ndims(I)==3 disp('truecolor RGB'); else disp('grayscale'); end
hasil
truecolor RGB
Rumus umum pengubahan RGB to Grayscale yaitu
Kalian bisa bisa terapkan dalam function seperti berikut
clc;clear all;close all; I = imread('panoramic.jpg'); if ndims(I)==3 disp('truecolor RGB'); else disp('grayscale'); end gray = ubahkegray(I); figure imshow(gray); function gray = ubahkegray(RGB) RGB = double(RGB); gray = 0.2989*RGB(:,:,1)+0.5870*RGB(:,:,2)+0.1140 * RGB(:,:,3); gray = uint8(gray); end
Atau kalian langsung menggunakan saja function built in Matlab rgb2gray()
clc;clear all;close all; I = imread('panoramic.jpg'); if ndims(I)==3 disp('truecolor RGB'); else disp('grayscale'); end gray = rgb2gray(I); figure imshow(gray);
Distribusi Nilai Pixel / Histogram
Setiap gambar (format grayscale) akan mudah terlihat distribusi pixel atau disebut dengan histogram. Perhitungan histogram seperti berikut terdiri dari range 1 sampai dengan 5
Kalian bisa menggunakan kode berikut untuk menghitung dan menampilkan dalam grafik.
clc;clear all;close all; a = [4,6,3,1,1,2,4,5,5,5,5,5]; frekuensi = []; for i=1:6 frekuensi(i)= sum(sum(a==i)); end figure bar(frekuensi) xlabel('Nilai') ylabel('Frekuensi') title('Histogram')
Atau menggunakan function Matlab histcounts()
[frekuensi] = histcounts(a,6)
hasil
frekuensi = 2 1 1 2 5 1
Setelah kalian tahu kegunaan dari histogram, kalian dapat menampilkan sebuah histogram gambar dengan function imhist()
clc;clear all;close all; I = imread('panoramic.jpg'); if ndims(I)==3 gray = rgb2gray(I); else gray = I; end gray = rgb2gray(I); figure subplot(1,2,1),imshow(gray),title('Gambar') subplot(1,2,2),imhist(gray),title('Histogram')
Perataan Histogram / Histogram Equalization
clc;clear all;close all; I = imread('panoramic.jpg'); if ndims(I)==3 gray = rgb2gray(I); else gray = I; end gray = rgb2gray(I); perataan = histeq(gray); figure subplot(2,2,1),imshow(gray),title('Gambar') subplot(2,2,2),imhist(gray),title('Histogram') subplot(2,2,3),imshow(perataan),title('Perataan Histogram') subplot(2,2,4),imhist(perataan),title('Perataan Histogram')
Format Color Space HSV
Selain format RGB (format layar komputer, kalau kalian menggunakan pengolah grafis ada CMYK yaitu format printer) ada lagi format penyajian HSV (ref:https://id.wikipedia.org/wiki/HSL_dan_HSV) atau HSL yang merupakan kepanjangan dari HSL (hue, saturation, lightness) dan HSV (hue, saturation, value)
Sebagian besar televisi, layar komputer, dan proyektor menghasilkan warna dengan menggabungkan cahaya merah, hijau, dan biru dalam berbagai intensitas — apa yang disebut warna primer aditif RGB. Campuran yang dihasilkan dalam ruang warna RGB dapat mereproduksi berbagai warna (disebut gamut)
Kalian bisa pelajari di ref: https://en.wikipedia.org/wiki/HSL_and_HSV. Di Matlab untuk mengubah RGB ke HSV menggunakan function rgb2hsv()
clc;clear all;close all; I = imread('panoramic.jpg'); HSV = rgb2hsv(I); figure subplot(1,2,1),imshow(I),title('RBG') subplot(1,2,2),imshow(HSV),title('HSV')
Koreksi Gamma (Gamma Correction)
Kontras dapat diperbaiki menggunakan faktor koreksi gamma dengan rumus umum
Semakin kecil nilai maka akan semakin terang
clc;clear all;close all; I = imread('bike.jpg'); if ndims(I)==3 gray = rgb2gray(I); else gray = I; end gray = rgb2gray(I); y = 1/0.9; U = uint8(double(gray).^y); y2 = 1/0.8; U2 = uint8(double(gray).^y2); gabung = [gray;U;U2]; figure imshow(gabung)
Agar lebih kalian bisa array saja sehingga hemat ruang
, kalian bisa pelajari lagi ya disini Biar kalian lebih jelas, bisa koq diterapkan true color.
clc;clear all;close all; I = imread('bike.jpg'); y = 1/0.9; U = uint8(double(I).^y); y2 = 1/0.8; U2 = uint8(double(I).^y2); gabung = [I;U;U2]; figure imshow(gabung)
ternyata menggunakan faktor gamma untuk gambar diatas akan terlihat bagus dengan nilai ya. Pengolahan Citra Digital dengan Matlab – Enhancement dengan teknik faktor gamma bisa kalian gunakan untuk mengubah kontras secara lebih baik. Semua kegiatan diatas sering disebut operasi titik yang berarti faktor nilai tetangga tidak berpengaruh, nah pada pembahasan selanjutnya kalian akan belajar mengenai operasi spasial dengan teknik filtering/konvolusi. Konvolusi/Convolution sering disebut juga operasi penapisan.
Operasi Penapisan / Fiiltering
Operasi penapisan/filtering menggunakan teknik konvolusi dengan melibatkan sebuah filter/kernel atau sering disebut dengan istilah lain yaitu masking, template, structure element (pada operasi morfologi) agar lebih mudah dalam buku disebut kernel saja. Ukuran kernel paling kecil berupa array 2D yaitu : 2×2, 3×3, 5×5 square array, sedangkan jenis kernel bisa dikaitkan dengan output yang dihasilkan seperti
1. Kernel mean
2. Kernel gaussian
3. Kernel low-pass
4. Kernel high pass
Kalau kalian ingin tahu cara kerja konvolusi bisa kunjungi link berikut https://www.softscients.web.id/2018/08/bab-4-operasi-dasar-olah-citra-digital.html
Daripada ditulis ulang, kalian bisa pelajari sendiri saja, oiya kalian bisa koq langsung menggunakan function di matlab yaitu semuanya menggunakan type double, jadi kalian jangan lupa untuk melakukan casting data dulu.
tapis mean
tapis low-pass
tapis high-pass
tapis sharpen
tapis blur
tapi emboss
Kernel Sharpening
Kalian bisa sharpening untuk menajamkan warna
clc;clear all;close all; I = imread('panoramic.jpg'); kernel_sharpen = 0.45*[ 0,-1,0; 1,5,-1; 0,-1,0]; I = double(I); for i=1:3 output(:,:,i) = conv2(I(:,:,i),kernel_sharpen,'same'); end output = uint8(output); imshow([I,output]);
Kernel Blur
Kalian juga bisa menggunakan kernel blur seperti berikut
clc;clear all;close all; I = imread('panoramic.jpg'); kernel_blur = 0.01.*[1,2,3,2,1; 2,4,5,4,2; 3,5,6,5,3; 2,4,5,4,2; 1,2,3,2,1] I = double(I); for i=1:3 output(:,:,i) = conv2(I(:,:,i),kernel_blur,'same'); end output = uint8(output); imshow([I;output]);
Semua jenis kernel diatas bisa kalian coba dengan mengatur nilai array kernelnya, selain menggunakan function , kalian bisa menggunakan function yang telah disediakan khusus
, ada banyak sekali variasinya yaitu
- h = fspecial(type)
- h = fspecial(‘average’,hsize)
- h = fspecial(‘disk’,radius)
- h = fspecial(‘gaussian’,hsize,sigma)
- h = fspecial(‘laplacian’,alpha)
- h = fspecial(‘log’,hsize,sigma)
- h = fspecial(‘motion’,len,theta)
- h = fspecial(‘prewitt’)
- h = fspecial(‘sobel’)