Sebuah image dengan foto pemandangan atau suatu barang yang berwarna-warni adalah hal yang biasa, tetapi bila image tersebut dijadikan warna hitam-putih dapat terkesan lebih berseni.
Pada Posting ini akan menjelaskan cara membuat image yang berwarna menjadi hitam putih menggunakan Sofware MatLab.
Matlab yang digunakan adalah pada posting ini adalah Matlab 2009
Berikut ini adalah Original Image yang akan diubah menjadi warna hitam-putih
Berikut ini adalah hasil manipulasi image menjadi Black & White
Berikut ini adalah Kode Program untuk menjadikan image menjadi Black & White menggunakan MatLab.
menghilangkan cache clear; %mengambil data gambar tmp = imread('sample.jpg'); %lakukan pembacaan pixel sebesar dimensi gambar yaitu 375x500x3 for i=1:375 for j=1:500 %nilai warna lebih kecil dari 128 dijadikan hitam %nilai warna lebih besar dari 128 dijadikan putih if(tmp(i,j,1) < 128) img(i,j,1) = 0; else img(i,j,1) = 256; end if(tmp(i,j,2) < 128) img(i,j,2) = 0; else img(i,j,2) = 256; end if(tmp(i,j,3) < 128) img(i,j,3) = 0; else img(i,j,3) = 256; end end end %menampikan gambar hasil manipulasi imshow(img);
Dimensi dari image sample.jpg (nama file contoh diatas) adalah 375x500x3. Apabila Anda menggunakan image yang lain sangat mungkin dimensinya berbeda.
Berikut ini adalah penjelasan dari angka-angka dimensi tersebut.
- 375 = Mengartikan Lebar Image
- 500 = Mengartikan Panjang Image
- 3 = Mengartikan image terdiri dari 3 matriks yaitu (Red, Green, Blue)
Algoritma Black & White
- Perubah warna pixel menjadi hitam-putih tersebut dilakukan pada tiga matriks (Red, Green, Blue)
- Apabila nilai warna pada sebuah pixel dari suatu matriks (Red, Green, Blue) lebih kecil dari 128 dijadikan angka 0
- Apabila nilai warna pada sebuah pixel lebih besar dari 128 dijadikan angka 256
mas tanya..
ReplyDeletetmp(i,j,1)
tmp(i,j,2)
ini maksudnya apa ce ms..
maklum masih newbie
Itu maksudnya dimensi lebar, panjang dan lapisan (red, green, blue).
Deletecontoh : tmp(i,j,1) artinya adalah
i = lebar
j = panjang
1 = lapisan (1=red, 2=green, 3=blue)
oh gtu ya tanya 1 lagi..tadi barusan tak coba ada eror
Deletekayak gini "??? Undefined function or method 'tmp' for input arguments of type 'double'.
Error in ==> segbiner at 14
if(tmp(i,j,1) < 128)"
apane ya mas..??
varibel tmp belum di definisikan, pada contoh di atas saya mendifinisikan varibel tmp seperti ini.
Deletetmp = imread('sample.jpg');
varibel tmp tersebut menyimpan isi dari file sample.jpg
oh iya2 haduh kurang teliti mas heh..
Deletekemaren tak tambahi, resize dan grasyscale, jadi nilai pixel grayscale yang ane segmetasi..
ada error gini "??? Attempted to access tmp(1,1,2); index out of bounds because
size(tmp)=[256,256,1].
Error in ==> segbiner at 20
if(tmp(i,j,2) < 128)"
mhon bantunya mas..^^
tanya lagi heeh, yang atas udah fix mas ^^,mas kalu data yang di olah grayscale kn dia pixelnya 0-255 ya mas ya
Deleteuntuk tmp(i,j,1) 1 kn lapisan mas, itu di pake gk kalu datanya grayclane..
mas kalu yang di segmetasi itu daerah tertetu gimana ya mas..?? kayak kondinat berapa sampek berapa gtu carane gimana ya..
ReplyDeletemisale cuma bagian atas aja...
Bisa, tinggal tentukan koorddinatnya saja.
ReplyDeletemisalakn mau bagian atas dan dimensinya 400px x 400px. maka yang perlu di ubah nila pixel nya
Dimensi Lebar :
tmp(0,0,1) sampai dengan tmp(100,0,1)
tmp(0,0,2) sampai dengan tmp(100,0,2)
tmp(0,0,3) sampai dengan tmp(100,0,3)
Dimensi Panjang :
tmp(0,0,1) sampai dengan tmp(0,100,1)
tmp(0,0,2) sampai dengan tmp(0,100,2)
tmp(0,0,3) sampai dengan tmp(0,100,3)
mas kalau cara nentuain kordinat gambar gimana mas..?? misalkan gambar yang di pake 256x256 gtu
Deletemisalkan gambar manusia, saya pengen yang di segmentasi hanya kepala saja gtu, cara nenetuin koordianate gtu mas gimana..??
pake proses croping gimana mas? jadi gambar sesuai dengan ukuran dari hasil croping mas,. saya dah coba.,
ReplyDeletetmp = imread('peta3.jpg');
tmp2 = imcrop(tmp);
[lebar,tinggi] = size(tmp2);
for i=1:lebar
for j=1:tinggi
%nilai warna lebih kecil dari 128 dijadikan hitam
%nilai warna lebih besar dari 128 dijadikan putih
if(tmp2(i,j,1) < 128)
img(i,j,1) = 0;
else
img(i,j,1) = 256;
end
if(tmp2(i,j,2) < 128)
img(i,j,2) =0;
else
img(i,j,2) = 256;
end
if(tmp2(i,j,3) < 128)
img(i,j,3) = 0;
else
img(i,j,3) = 256;
end
end
end
img=rgb2gray(img);
imshow(img);
tp ada error.,
??? Attempted to access tmp2(1,134,1); index out of bounds because size(tmp2)=[119,133,3].
Error in ==> coba5 at 8
if(tmp2(i,j,1) < 128)
Mas ini ko variabel img nya error ya
ReplyDelete