Pengolahan Citra Biner


Penghitungan terhadap atribut-atribut yang melekat pada suatu objek dalam citra digital secara sederhana dapat dilakukan dengan cara mengkonversi citra asli (RGB ataupun grayscale) menjadi citra biner terlebih dahulu. Setelah diperoleh citra biner, maka selanjutnya atribut-atribut (misalnya luas dan keliling) dapat dihitung. Namun terkadang citra biner tersebut perlu diolah lebih lanjut agar citra biner benar-benar tepat merepresentasikan objek yang dimaksud.

Berikut ini merupakan contoh aplikasi pemrograman matlab untuk melakukan proses segmentasi  dan analisis citra. Langkah-langkah nya yaitu:
1. Membaca dan menampilkan citra asli. Pada contoh ini citra yang digunakan adalah citra ‘airplane.jpg’ di mana objek yang dikehendaki adalah berupa pesawat, sedangkan background adalah berupa langit.

clc; clear; close all; warning off all;

Img = imread('airplane.jpg');
figure, imshow(Img);

sehingga diperoleh tampilan

2. Melakukan segmentasi dengan metode deteksi tepi. Deteksi tepi dilakukan melalui operasi konvolusi dengan operator selisih terpusat

% Konvolusi dengan operator selisih terpusat
I = double(rgb2gray(Img));
d1x = [-1 0 1];
d1y = [-1;0;1];
Ix = conv2(I,d1x,'same');
Iy = conv2(I,d1y,'same');
J = sqrt((Ix.^2)+(Iy.^2));
figure, imshow(J,[]);

hasil deteksi tepi yaitu

3. Melakukan operasi thresholding sehingga diperoleh citra biner yang merepresentasikan luasan dari objek. Luas objek kemudian dihitung dengan cara menjumlahkan seluruh angka 1 (piksel berwarna putih) pada citra biner yang diperoleh. Luas objek dihitung dalam satuan piksel.

K = J>10;
L = imclearborder(K);
M = imfill(L,'holes');
N = bwareaopen(M,100);
figure, imshow(N);
area = sum(sum(N))

diperoleh citra biner sebagai berikut

luas objek yang diperoleh adalah

4. Melakukan operasi morfologi untuk mendapatkan boundaries dari citra biner. Kemudian dilakukan penghitungan keliling objek dengan cara menjumlahkan seluruh angka 1 (piksel berwarna putih) pada citra biner yang diperoleh. Keliling objek dihitung dalam satuan piksel.

O = bwmorph(N,'remove');
figure, imshow(O);
perimeter = sum(sum(O))

sehingga didapatkan citra biner sebagai berikut

keliling objek yang diperoleh adalah

5. Menampilkan boundaries objek pada citra asli

% Membuat Boundaries
[B,L] = bwboundaries(N,'noholes');
figure,imshow(Img)
hold on
for k = 1:length(B)
boundary = B{k};
plot(boundary(:,2), boundary(:,1), 'y', 'LineWidth', 2)
end

dihasilkan tampilan seperti pada gambar berikut

6. Menampilkan bounding box pada citra asli

% Membuat Bounding Box
[row,col] = find(N==1);
 
[a,b] = size(N);
mask = false(a,b);
mask(min(row):max(row),min(col):max(col)) = 1;

mask =  bwperim(mask,8);
mask = imdilate(mask,strel('square',4));

R = Img(:,:,1);
G = Img(:,:,2);
B = Img(:,:,3);

R(mask) = 255;
G(mask) = 255;
B(mask) = 0;

RGB = cat(3,R,G,B);
figure, imshow(RGB);

Tampilan citra yang dihasilkan adalah

7. Melakukan cropping hasil segmentasi

% Melakukan cropping hasil segmentasi
crop = imcrop(Img,[min(col) min(row) max(col)-min(col) max(row)-min(row)]);
figure, imshow(crop);

Hasil proses cropping adalah

File source code lengkap beserta citra pada pemrograman di atas dapat diperoleh melalui halaman berikut ini: Source Code

Posted on October 18, 2016, in Pengenalan Matlab, Pengolahan Citra and tagged , , , , , , , , , , , , , , , , , , , . Bookmark the permalink. 18 Comments.

  1. mau nanya kalau mencari nilai skewness, kurtosis dan entrophy dari data ini apakah diperlukan proses pencarian luas dan keliling? atau langsung cari nilai skewness, kurtosis dan entrophy nya?
    terima kasih

    • Skewness, kurtosis dan entrophy merupakan parameter yang diekstrak dari ciri tekstur. Nilai tersebut diperoleh dari citra grayscale. Sedangkan luas dan keliling diekstrak dari ciri morfologi yang diperoleh dari citra biner

  2. Assalamualaikum
    permisi mas adi mau tanya
    J>10;
    N = bwareaopen(M,100);
    nilai 10 dan 100 nya itu berdasarkan apa ya mas?
    terimakasih sebelumnya

  3. Assalamualaikum mas

    sebelumnya makasih banyak ilmu2 nya mas, saya banyak belajar dari website ini. semoga kelak jadi amal jariah di akhirat nanti.

    saya mau nanya mas, perbedaan antara image processing thresholding dengan pengolahan citra biner apa ya mas?

    makasih banyak mas

    • waalaikumsalam rahmat

      thresholding merupakan salah satu metode untuk mengubah citra grayscale menjadi citra biner
      pengolahan citra biner ada berbagai macam seperti operasi morfologi, analisis objek, dll

  4. Mas Adi, misal deteksi tepi digunakan untuk jaringan syaraf tiruan apakah bisa ya?
    Trimakasih

  5. mau nanya mas, mencari nilai perimeter bisa di terapkan untuk deteksi tepi canny tidak?
    terima kasih atas bantuan dan ilmunya

  6. mau nanya mas, klo misal pesawatnya lebih dari satu atau ada 10 gtu bsa gak mas? saya nyoba pas memnuat boundingbos nya, dia ngedetect secara keseluruhan image nya mas.
    terima kasih mas.

  7. Mau nanya mas, apakah hasil segementasi thresholding & bounding box memiliki nilai yang bisa dipakai untuk proses klasterisasi citra?

    • Bisa kurnia
      Klasterisasi bisa dilakukan dengan cara melakukan ekstraksi ciri thd citra hasil segmentasi
      Atau bisa juga langsung tanpa melalui ekstraksi ciri secara manual

  8. Ekstraksi ciri ukuran parameternya area dan perimeter, Ekstraksi ciri bentuk parameternya metric dan eccentricity, maaf mas adi kalo untuk ekstrasi ciri tekstur parameternya apaya dari thd dan bounding box diatas? ,Terima kasih mas

Leave a comment