Cara melakukan cropping citra secara otomatis


Dalam bidang pengolahan citra digital, segmentasi merupakan proses yang bertujuan untuk memisahkan suatu region dengan region lainnya. Pemisahan didasarkan pada perbedaan karakteristik antar region seperti perbedaan tingkat kecerahan, warna, tekstur, dll. Proses tersebut menghasilkan keluaran berupa citra biner di mana region yang telah tersegmentasi (pada umumnya disebut juga dengan foreground) akan berwarna putih atau bernilai 1. Sedangkan region lainnya (disebut juga dengan background) akan berwarna hitam atau bernilai 0.

Ada berbagai jenis metode segmentasi citra di antaranya adalah thresholding, active contour, deteksi tepi, transformasi hough, watershed, region growing, dll. Pada contoh ini ditunjukkan sebuah proses segmentasi citra dengan metode thresholding. Citra keluaran dari proses tersebut adalah citra biner yang kemudian digunakan untuk melakukan cropping dan juga perhitungan luas, keliling, dan centroid dari masing-masing objek.

Langkah-langkah pemrograman matlab untuk melakukan segmentasi citra adalah sebagai berikut:
1. Membaca citra asli

clc; clear; close all; warning off all;
originalImage = imread('doodles.jpg');
figure, imshow(originalImage);

sehingga diperoleh tampilan citra asli seperti pada gambar di bawah ini:

1

2. Melakukan operasi thresholding

bw = im2bw(originalImage,.9);
figure, imshow(bw);

sehingga citra yang dihasilkan adalah:

2

3. Pada citra biner di atas tampak bahwa objek yang dikehendaki berwarna hitam sedangkan background berwarna putih. Untuk dapat melakukan analisis citra (seperti perhitungan luas, keliling, dan centroid) maka citra tersebut harus dikomplemenkan yang artinya objek diubah warnanya menjadi putih, sedangkan background diubah menjadi hitam.

bw = imcomplement(bw);
figure, imshow(bw);

citra yang dihasilkan yaitu:

3

4. Selanjutnya dilakukan operasi morfologi agar warna putih pada citra biner memenuhi seluruh luasan objek (mengisi lubang-lubang pada objek)

bw = imfill(bw,'holes');
figure, imshow(bw);

diperoleh citra:

4

5. Citra biner tersebut kemudian digunakan sebagai informasi lokasi objek untuk melakukan cropping terhadap citra asli secara otomatis

blobMeasurements = regionprops(bw, 'all');
numberOfBlobs = size(blobMeasurements, 1);

figure,
for k = 1 : numberOfBlobs           % Loop through all blobs.
    % Find the bounding box of each blob.
    thisBlobsBoundingBox = blobMeasurements(k).BoundingBox;  % Get list of pixels in current blob.

    % Extract out this coin into it's own image.
    subImage = imcrop(originalImage, thisBlobsBoundingBox);
    
    % Display the image.
    subplot(3, 4, k);
    imshow(subImage);
    caption = sprintf('Object Num.%d',k);
    title(caption);
end

Citra hasil cropping ditunjukkan pada gambar di bawah ini:

5

6. Melakukan perhitungan luas, keliling, dan centroid pada masing-masing objek


% Print header line in the command window.
fprintf(1,'|Blob Number|    Area    |  Perimeter  |      Centroid      |\n');
% Loop over all blobs printing their measurements to the command window.
for k = 1 : numberOfBlobs           % Loop through all blobs.
    blobArea = blobMeasurements(k).Area;                % Get area.
    blobPerimeter = blobMeasurements(k).Perimeter;        % Get perimeter.
    blobCentroid = blobMeasurements(k).Centroid;        % Get centroid one at a time
    fprintf(1,'| %9d | %10.1f | %11.1f | %8.1f  %8.1f |\n', k, blobArea, blobPerimeter, blobCentroid);
end

sehingga pada Command Window akan tampak hasil perhitungan seperti pada gambar berikut:

6

Citra dan source code pemrograman matlab di atas dapat diunduh melalui laman berikut ini: Source Code

Posted on July 7, 2016, in Pengolahan Citra and tagged , , , , , , . Bookmark the permalink. Leave a comment.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: