Anda di halaman 1dari 19

LAPORAN TUGAS BESAR

PEGOLAHAN CITRA DIGITAL

PENGGUNAAN TRESHOLDING DENGAN METODE OTSU


UNTUK MENCARI TITIK BUSUK PADA BUAH

Oleh:

Arif Pamenang (13115014)


Nugraha Triokta P (13115025)
Retno Aljum’ah Tarihoran (13115029)
Husnul Khotimah Bafadhal (13116026)
Tito Chandra Dinata (13116048)

PROGRAM STUDI TEKNIK ELEKTRO


JURUSAN TEKNOLOGI PRODUKSI INDUSTRI
INSTITUT TEKNOLOGI SUMATERA
LAMPUNG SELATAN
2019
ABSTRAK

Indonesia adalah negara dengan wilayah kepulauan yang luas, memiliki


garis pantai yang panjang, daerah yang dilintasi oleh “ring of fire” dan beriklim
tropis. Sehingga membuat Indonesia memiliki banyak potensi energi terbarukan.
Salah satu contohnya adalah energi angin. Energi yang cocok untuk diterapkan di
sepanjang garis pantai dan daerah dengan dataran tinggi. Komponen utama untuk
mengkonversi energi angin menjadi energi listrik sendiri adalah generator.
Generator sendiri memiliki banyak jenis. Salah satunya adalah generator dengan
permanent magnet. Sebelum generator dengan permanent magnet dibuat, tentunya
diperlukan studi dan penelitian yang cukup panjang. Sehingga mendapatkan
generator yang terbaik untuk Pembangkit Listrik Tenaga Angin. Salah satu faktor
penting yang membuat generator yang didesain dan dirancang layak untuk dibuat,
adalah besar tegangan keluarannya. Meningkatkan tegangan keluaran sendiri bisa
dengan berbagai cara. Salah satunya dengan memvariasikan lebar magnet
menggunkan software desain elektromagnetik berbasis Finite Element Method
(FEM). Sehingga tegangan keluaran atau tegangan output generator dapat
dianalisis.

Kata Kunci : Magnet, Variasi, Tegangan, FEM, Generator.


BAB I
PENDAHULUAN

1.1 Latar Belakang


Dalam dunia industri supplayer buah-buahan segar, tentunya dibutuhkan
kualitas buah yang terjamin dari produsen sehingga bisa memberikan kepercayaan
kepada konsumen. Salah satu standarisasi buah bahwa buah-buahan tersebut
masih segar saat melakukan sortir yaitu tidak adanya busuk pada buah atau buah
dalam keadaan benar-banar segar dan tidak busuk sedikitpun.
Sortir buah segar dalam artian tidak ada parameter busuk pada buah bisa
dengan menggunakan pencitraan digital. Sehingga nantinya buah-buahan yang
busuk ataupun buah-buahan yang cacat dapat terdeteksi. Sehingga membuat
kemungkinan buah-buah yang tidak layak tidak terdistribusi kepada konsumen.
Dan kepercayaan konsumen terhadap supplayer buah-buah segar dapat terjamin.
Salah satu pencitraan digital yang bisa digunakan untuk mendeteksi busuk
ataupun kecacatan pada buah adalah thresholding dengan metode otsu.

2
BAB II
TEORI DASAR

2.1 Segmentasi
Merubah citra digital warna abu-abu menjadi hitam putih berdasarkan
perbandingan nilai threshold dengan nilai warna pixel citra digital.

segmentasi

Figure 1 Citra Buah Yang Busuk/Cacat Saat Figure 2 Citra Buah Yang Busuk/Cacat Saat
Belum Disegmentasi Belum Disegmentasi

2.2 Histogram
Histogram citra adalah grafik yang menggambarkan penyebaran nilai-nilai
intensitas pixel dari suatu citra atau bagian tertentu di dalam citra.
2.3 Thresholding
Thresholding merupakan salah satu metode segmentasi citra di mana
prosesnya didasarkan pada perbedaan derajat keabuan citra. Dalam proses nya
dibutuhkan suatu nilai batas yang disebut nilai threshold. Nilai intensitas citra
yang lebih dari atau sama dengan nilai threshold akan diubah menjadi citra
putih yang bernilai (1) sedangkan nilai intensitas citra yang kurang dari nilai
threshold akan diubah menjadi citra hitam hitam yang bernililai (0). Sehingga
keluaran dari hasil thresholding adalah berupa citra biner.

2.4 Thresholding Metode Otsu


Yaitu merupakan salah satu metode untuk mensegmentasi citra digital.
Threshold metode otsu diperkenalkan oleh Nobuyuki Otsu dalam tulisannya A
Threshold Selection Method from Gray-Level Histogram. Threshold metode
otsu melakukan penyeleksian nilai threshold dari histogram citra abu-abu.
Metode penyeleksian nilai threshold dilakukan dengan memakai pendekatan
statistika.

5
BAB III
METODE PENELITIAN

1.1 Finite Element Method (FEM) dan MagNet Software


FEM atau Finite Element Method adalah suatu metode numerik
untuk menyelesaikan suatu masalah dengan membagi objek analisis
menjadi beberapa bagian-bagain kecil yang berhingga, dengan
menggunakan persamaan differensial. Bagian-bagian kecil yang dianalisis
nanantinya semua hasilnya digabungkan kembali untuk mendapatkan
BAB IV
HASIL PEMBAHASAN

4.1 PENGGUNAAN TRESHOLDING DENGAN METODE OTSU


UNTUK MENCARI TITIK BUSUK PADA BUAH

Program pada MATLAB

ai = imread('a5.jpg');
mi=imread('mango_infected.png');
m4=imread('m4.PNG');

img = imread('potato.png');
type = 'a';
[L, Centers] = imsegkmeans(img, 3);
B = labeloverlay(img,L);
rgbImage = B;
% Display the original image.
subplot(4, 5, 1);
imshow(rgbImage);
title('Original Image(Potato)');
% Split the original image into color bands.
redBand = rgbImage(:,:, 1);
greenBand = rgbImage(:,:, 2);
blueBand = rgbImage(:,:, 3);
% Threshold each color band.
redthreshold = 100;
greenThreshold = 140;
blueThreshold = 170;
redMask = (redBand < redthreshold);
greenMask = (greenBand > greenThreshold);
blueMask = (blueBand < blueThreshold);
% Combine the masks to find where all 3 are "true."
damagedAreasMask = uint8(redMask & greenMask & blueMask);
subplot(4, 5, 2);
imshow(damagedAreasMask, []);
title('Damaged Areas Mask');
maskedrgbImage = uint8(zeros(size(damagedAreasMask))); % Initialize
maskedrgbImage(:,:,1) = rgbImage(:,:,1) .* damagedAreasMask;
maskedrgbImage(:,:,2) = rgbImage(:,:,2) .* damagedAreasMask;
maskedrgbImage(:,:,3) = rgbImage(:,:,3) .* damagedAreasMask;
reqInfo = maskedrgbImage(:, :, 1) > 0 & maskedrgbImage(:, :, 2) > 0 &
maskedrgbImage(:, :, 3) > 0;
res = sum(reqInfo(:));
disp(res)
t = 10000;
if type=='b'
t = 5000;
end
if res>t
subplot(4, 5, 3);
imshow(maskedrgbImage);
title('Result: Infected');
else
subplot(4, 5, 3);
imshow(maskedrgbImage);
title('Result: Good');
end

%===================================================
==============================%
18
img = imread('good_potato.jpg');
[L, Centers] = imsegkmeans(img, 3);
B = labeloverlay(img,L);
rgbImage = B;
% Display the original image.
subplot(4, 5, 4);
imshow(rgbImage);
title('Original Image(Potato)');
% Split the original image into color bands.
redBand = rgbImage(:,:, 1);
greenBand = rgbImage(:,:, 2);
blueBand = rgbImage(:,:, 3);
% Threshold each color band.
redthreshold = 100;
greenThreshold = 140;
blueThreshold = 170;
redMask = (redBand < redthreshold);
greenMask = (greenBand > greenThreshold);
blueMask = (blueBand < blueThreshold);
% Combine the masks to find where all 3 are "true."
damagedAreasMask = uint8(redMask & greenMask & blueMask);
maskedrgbImage = uint8(zeros(size(damagedAreasMask))); % Initialize
maskedrgbImage(:,:,1) = rgbImage(:,:,1) .* damagedAreasMask;
maskedrgbImage(:,:,2) = rgbImage(:,:,2) .* damagedAreasMask;
maskedrgbImage(:,:,3) = rgbImage(:,:,3) .* damagedAreasMask;
%imtool(maskedrgbImage);
reqInfo = maskedrgbImage(:, :, 1) > 0 & maskedrgbImage(:, :, 2) > 0 &
maskedrgbImage(:, :, 3) > 0;
res = sum(reqInfo(:));
disp(res)
19
t = 10000;
if type=='b'
t = 5000;
end
if res>t
subplot(4, 5, 5);
imshow(maskedrgbImage);
title('Result: Infected');
else
subplot(4, 5, 5);
imshow(maskedrgbImage);
title('Result: Good');
end

%===================================================
============================%
img = imread('banana.png');
%img = imread('b1.jpg');
%img = imread('b2.jpg');
type = 'b';

[L, Centers] = imsegkmeans(img, 3);


B = labeloverlay(img,L);
rgbImage = B;
% Display the original image.
subplot(4, 5, 6);
imshow(rgbImage);
title('Original Image(Banana)');
% Split the original image into color bands.
redBand = rgbImage(:,:, 1);
greenBand = rgbImage(:,:, 2);
20
blueBand = rgbImage(:,:, 3);
% Threshold each color band.
redthreshold = 100;
greenThreshold = 140;
blueThreshold = 170;
redMask = (redBand < redthreshold);
greenMask = (greenBand > greenThreshold);
blueMask = (blueBand < blueThreshold);
% Combine the masks to find where all 3 are "true."
damagedAreasMask = uint8(redMask & greenMask & blueMask);
subplot(4, 5, 7);
imshow(damagedAreasMask, []);
title('Damaged Areas Mask');
maskedrgbImage = uint8(zeros(size(damagedAreasMask))); % Initialize
maskedrgbImage(:,:,1) = rgbImage(:,:,1) .* damagedAreasMask;
maskedrgbImage(:,:,2) = rgbImage(:,:,2) .* damagedAreasMask;
maskedrgbImage(:,:,3) = rgbImage(:,:,3) .* damagedAreasMask;
%imtool(maskedrgbImage);
reqInfo = maskedrgbImage(:, :, 1) > 0 & maskedrgbImage(:, :, 2) > 0 &
maskedrgbImage(:, :, 3) > 0;
res = sum(reqInfo(:));
disp(res)
t = 10000;
if type=='b'
t = 5000;
end
if res>t
subplot(4, 5, 8);
imshow(maskedrgbImage);
title('Result: Infected');
else
21
subplot(4, 5, 8);
imshow(maskedrgbImage);
title('Result: Good');
end

%===================================================
==============================%

%img = imread('b1.jpg');
img = imread('b2.jpg');
[L, Centers] = imsegkmeans(img, 3);
B = labeloverlay(img,L);
rgbImage = B;
% Display the original image.
subplot(4, 5, 9);
imshow(rgbImage);
title('Original Image(Banana)');
% Split the original image into color bands.
redBand = rgbImage(:,:, 1);
greenBand = rgbImage(:,:, 2);
blueBand = rgbImage(:,:, 3);
% Threshold each color band.
redthreshold = 100;
greenThreshold = 140;
blueThreshold = 170;
redMask = (redBand < redthreshold);
greenMask = (greenBand > greenThreshold);
blueMask = (blueBand < blueThreshold);
% Combine the masks to find where all 3 are "true."
damagedAreasMask = uint8(redMask & greenMask & blueMask);
maskedrgbImage = uint8(zeros(size(damagedAreasMask))); % Initialize
22
maskedrgbImage(:,:,1) = rgbImage(:,:,1) .* damagedAreasMask;
maskedrgbImage(:,:,2) = rgbImage(:,:,2) .* damagedAreasMask;
maskedrgbImage(:,:,3) = rgbImage(:,:,3) .* damagedAreasMask;
%imtool(maskedrgbImage);
reqInfo = maskedrgbImage(:, :, 1) > 0 & maskedrgbImage(:, :, 2) > 0 &
maskedrgbImage(:, :, 3) > 0;
res = sum(reqInfo(:));
disp(res)
t = 10000;
if type=='b'
t = 5000;
end
if res>t
subplot(4, 5, 10);
imshow(maskedrgbImage);
title('Result: Infected');
else
subplot(4, 5, 10);
imshow(maskedrgbImage);
title('Result: Good');
end

%===================================================
==============================%
% display the Original Image
subplot(4,5,12);
imshow(ai);
title('Internal Image(Apple)')
%
%===================================================
==============================================
23
n=imhist(ai); % Compute the histogram
N=sum(n); % sum the values of all the histogram values
max=0; %initialize maximum to zero
%
%===================================================
=============================================
for i=1:256
P(i)=n(i)/N; %Computing the probability of each intensity level
end
%
%===================================================
=============================================
for T=2:255 % step through all thresholds from 2 to 255
w0=sum(P(1:T)); % Probability of class 1 (separated by threshold)
w1=sum(P(T+1:256)); %probability of class2 (separated by threshold)
u0=dot([0:T-1],P(1:T))/w0; % class mean u0
u1=dot([T:255],P(T+1:256))/w1; % class mean u1
sigma=w0*w1*((u1-u0)^2); % compute sigma i.e variance(between
class)
if sigma>max % compare sigma with maximum
max=sigma; % update the value of max i.e max=sigma
threshold=T-1; % desired threshold corresponds to maximum
variance of between class
end
end
%
%===================================================
=================================================
bw=im2bw(ai,threshold/255); % Convert to Binary Image
subplot(4,5,13);
imshow(bw);
24
title("Otsu threshold");
imgc = uint8(imcomplement(bw));
%imshow(imgc); % Display the Binary Image

finalImage = uint8(zeros(size(ai)));
finalImage(:,:,1) = ai(:,:,1) .* imgc;
finalImage(:,:,2) = ai(:,:,2) .* imgc;
finalImage(:,:,3) = ai(:,:,3) .* imgc;
%imshow(finalImage);
reqInfo = finalImage(:, :, 1) > 0 & finalImage(:, :, 2) > 0 & finalImage(:, :,
3) > 0;
res = sum(reqInfo(:));
disp(res)
t = 10000;
%if type=='b'
% t = 5000;
%end
subplot(4,5,14);
if res>t
imshow(finalImage);
title('Result: Infected');
else
imshow(finalImage);
title('Result: Good');
end

%===================================================
=======================%
subplot(4,5,16);
imshow(mi);
title('infected mango(Spongy tissue)');
25
subplot(4,5,17);
imshow(m4);
title('x-ray image');
m4=rgb2gray(m4);
x=(m4>150);
subplot(4,5,18);
imshow(x);
title('segmented defected region');
mi2 = imread('m3.png');
subplot(4,5,19);
imshow(mi2);
title('good mango');
m4=rgb2gray(mi2);
x=(m4>150);
subplot(4,5,20);
imshow(x);
title('non-infected mango');

Hasil citra program MATLAB

26
Dari hasil percobaan tresholding pada citra digital kita dapat
mengolah citra sehingga perbedaan degradasi warna pada sebuah
citra dapat terlihat secara detail dan terukur secara pixel,pada
pemanfaatan kali ini kami menggunakan tresholding dengan
metode otsu untuk menghasilkan tresholding yang maksimal
sehingga menghasilkan batas degradasi yang sangat akurat dan
jelas.

Dengan metode otsu ini kami menggunakanya untuk melihat


kondisi dari beberapa sample buat yang terdapat area busuk pada
bagian sisi yang tertangkap menjadi citra, sehingga dengan
mengolah citra tersebut menggunakan metode otsu ini kita dapat
membedakan daerah pada buah yang masih bagus dan yang telah
mengalami pembusukan.

Dengan cara ini juga kita dapat membuat sebuah alat yang dapat
mensortir buah-buahan bagus dan busuk dengan menggunakan
sensor kamera untuk menangkap citra digital yang kemudian dapat
diolah menjadi citra grayscale yang telah di tresholding kemudian
alat dapat memisahkan buah-buah yang layak dan tidak layak
untuk diknsumsi.

27
BAB V
KESIMPULAN

KESIMPULAN
1. Tegangan semakin bertambah jika lebar magnet semakin besar. Karena
jika dimensi magnet semakin besar maka semakin besar pula medan
magnet dan semakin banyak flux linkage yang dihasilkan oleh magnet
REFERENSI

[1] Maziati Akmal Mohd Hatta, Mohd Warikh Abd Rashid, Umar Al Amani Haji
Azlan, Kk Swee Leong, Nurul Azuwa Azmi. “2016 International Conference
on Computer & Communication Engineering”. Finite element method of
MEMS piezoelectric energy harvester using lead-free material. pp. 511 -515.

[2] Gieras, Jacek F. Electrical machines : fundamentals of electromechanical


energy. Boca Raton : CRC Press, 2017, pp. 369 – 373.

[3] E. S Hamdi. Design of Small Electrical Mechines. Chichester, New York :


Wiley, 1994, pp. 2 - 9 .

[4] Nanang Sudrajat, Tony Kristiantoro. “Jurnal Fisika dan Aplikasinya”.


Fabrikasi Magnet Permanent Bounded NdFeB untuk Prototipe Generator,
vol. 9, pp. 12 - 14, Jan 2013.

[5] https://www.eclipsemagnetics.com/media/wysiwyg/datasheets/
magnet_materials_and_assemblies/ndfeb_neodymium_iron_boron-
standard_ndfeb_range_datasheet_rev1.pdf (Diakses Tanggal, 7 Oktober
2019)

[6] Chapman, Stephen J. Electrical Machinery Fundamental , 5 ,Marty Lange,


New York : McGraw-Hill, 2012, pp. 29 -31.

[7] A. E Fitzgerald, Charles Kingsley Jr, Stephen D. Umans. Electrical


Machinery, 6 ,Michelle L. Flomenhoft, New York : McGraw-Hill, 2003,
pp. 21 -17.

[8] Hanselman, Duane C. Brushless Permanent Motor Design , 2 , Lebanon,


Ohio : Magna Physics Publishing, 2003, pp. 111 -115.

[9] J. D Wdwards. An Introduction to MahNet for Static 2D Modeling. Canada :


Infolytica Corporation, 2014, pp. 1.

26

Anda mungkin juga menyukai