Penghitungan Otomatis Jumlah Sel Darah Merah Dan Identifikasi Fase Plasmodium Falciparum Menggunakan Operasi Morfologi
Berikut ini merupakan pemrograman GUI Matlab mengenai aplikasi pengolahan citra digital untuk melakukan analisis citra sampel darah mikroskopis yang terjangkit malaria.
GUI yang dirancang merupakan bagian dari penelitian yang berjudul The Automatic Counting of The Number of Red Blood Cells and Identification of Plasmodium Falciparum Phase using Morphological Operations
Tujuan dari penelitian tersebut adalah:
1. Menghitung jumlah sel darah merah total,
2. Menghitung jumlah parasit yaitu plasmodium falciparum, dan
3. Mengidentifikasi fase perkembangan plasmodium falciparum
Proses pemisahan sel bertumpuk dilakukan dengan menggunakan operasi morfologi. Proses pemisahan ini dilakukan agar hasil penghitungan sel darah merah menjadi lebih akurat.
Sedangkan proses penghitungan dan identifikasi fase plasmodium falciparum dilakukan dengan melakukan ekstraksi ciri morfologi parasit.
Perkembangan parasit penyebab malaria terdiri dari tiga fase yaitu fase trophozoite (pertumbuhan), fase schizont (pembiakan), dan fase gametocyte (pembentukan kelamin).
Parasit pada fase trophozoite dikenali dengan ukurannya yang sangat kecil dibandingkan dengan ukuran sel normal. Parasit pada fase schizont dikenali dengan bentuknya yang hampir bulat. Sedangkan parasit pada fase gametocyte dikenali dengan bentuknya yang memanjang atau cenderung elips.
GUI Matlab untuk melakukan analisis citra sampel darah mikroskopis yang terjangkit malaria terdiri dari tiga buah tampilan yaitu:
2. Tampilan menu penghitungan step by step
3. Tampilan menu penghitungan otomatis
Langkah-langkah untuk melakukan penghitungan dan identifikasi pada menu step by step adalah sebagai berikut:
4.1. Buka citra sel darah merah
4.7. Identifikasi fase perkembangan parasit
Sedangkan langkah-langkah untuk melakukan penghitungan dan identifikasi pada menu otomatis adalah:
5.1. Buka citra sel darah merah
5.2. Proses penghitungan dan identifikasi
Tampilan source code menu penghitungan otomatis adalah sebagai berikut:
function varargout = Otomatis(varargin) % OTOMATIS M-file for Otomatis.fig %     OTOMATIS, by itself, creates a new OTOMATIS or raises the existing %     singleton*. % %     H = OTOMATIS returns the handle to a new OTOMATIS or the handle to %     the existing singleton*. % %     OTOMATIS('CALLBACK',hObject,eventData,handles,...) calls the local %     function named CALLBACK in OTOMATIS.M with the given input arguments. % %     OTOMATIS('Property','Value',...) creates a new OTOMATIS or raises the %     existing singleton*. Starting from the left, property value pairs are %     applied to the GUI before Otomatis_OpeningFcn gets called. An %     unrecognized property name or invalid value makes property application %     stop. All inputs are passed to Otomatis_OpeningFcn via varargin. % %     *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one %     instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help Otomatis % Last Modified by GUIDE v2.5 18-Jul-2014 09:15:11 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ...    'gui_Singleton', gui_Singleton, ...    'gui_OpeningFcn', @Otomatis_OpeningFcn, ...    'gui_OutputFcn', @Otomatis_OutputFcn, ...    'gui_LayoutFcn', [] , ...    'gui_Callback',  []); if nargin && ischar(varargin{1})    gui_State.gui_Callback = str2func(varargin{1}); end if nargout    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else    gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before Otomatis is made visible. function Otomatis_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject   handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles   structure with handles and user data (see GUIDATA) % varargin  command line arguments to Otomatis (see VARARGIN) % Choose default command line output for Otomatis handles.output = hObject; % Update handles structure guidata(hObject, handles); setappdata(0,'datacontainer',hObject); movegui(hObject,'onscreen')% To display application onscreen movegui(hObject,'center') % To display application in the center of screen % UIWAIT makes Otomatis wait for user response (see UIRESUME) % uiwait(handles.figure1); clear all clc axis off hold off % --- Outputs from this function are returned to the command line. function varargout = Otomatis_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject   handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles   structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % --- Executes on button press in BUKA_CITRA_BT. function BUKA_CITRA_BT_Callback(hObject, eventdata, handles) % hObject   handle to BUKA_CITRA_BT (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles   structure with handles and user data (see GUIDATA) [nama_file1,nama_path1]=uigetfile( ...    {'*.bmp;*.jpg','File Citra (*.bmp,*.jpg)';    '*.bmp','File Bitmap (*.bmp)';...    '*.jpg','File jpeg (*.jpg)';    '*.*','Semua File (*.*)'},...    'Buka File Citra Asli'); if ~isequal(nama_file1,0)    handles.data1 = imread(fullfile(nama_path1,nama_file1));    guidata(hObject,handles);    axes(handles.axes1);    imshow(handles.data1),title('Citra Asli',...        'FontName','Maiandra GD','FontSize',14,'FontWeight','bold');    mydatacontainer = getappdata(0,'datacontainer');    setappdata(mydatacontainer,'gambaroriginal',handles.data1);    setappdata(mydatacontainer,'nama_file1',nama_file1); else    return; end set (handles.NAMA_CITRA_ST,'String',nama_file1); set (handles.LEBAR_CITRA_ST,'String',size(handles.data1,1)); set (handles.PANJANG_CITRA_ST,'String',size(handles.data1,2)); diary Automatic_data.txt; Nama_Citra = nama_file1 % --- Executes on button press in RESET_BT. function PROSES_BT_Callback(hObject, eventdata, handles) % hObject   handle to RESET_BT (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles   structure with handles and user data (see GUIDATA) % NORMALISASI mydatacontainer = getappdata(0,'datacontainer'); gambarasli = getappdata(mydatacontainer,'gambaroriginal'); K = rgb2gray(gambarasli); m = medfilt2(K); setappdata(mydatacontainer,'m',m); % MENAMPILKAN CITRA NORMALISASI axes(handles.axes2); imshow(m),title('Citra Normalisasi',...    'FontName','Maiandra GD','FontSize',14,'FontWeight','bold'); hold on % THRESHOLDING n = imadjust(m,stretchlim(m),[1 0]); q = 1.28*graythresh(n); r = im2bw(n,q); % PEMISAHAN SEL fill = imfill(r,'holes'); se = strel('disk',5); erodedBW = imerode(fill,se); bw = imdilate(erodedBW,se); % MENAMPILKAN CITRA SEL TOTAL axes(handles.axes3); imshow(bw), title('Citra Sel Total',...    'FontName','Maiandra GD','FontSize',14,'FontWeight','bold'); hold on % MENGHITUNG RATA-RATA LUAS SEL NORMAL clear = imclearborder(bw,4); [B,L] = bwboundaries(clear,'noholes'); stats = regionprops(L,'Area'); for k = length(B)    area = [stats.Area];    rata2 = sum(area)/numel(area); end % MENGHITUNG JUMLAH SEL TOTAL L = bwlabel(bw); Jumlah_Sel_Total = max(max(L)) nilai = num2str(Jumlah_Sel_Total); set(handles.JUMLAH_SEL_TOTAL_ED,'String',nilai); % PARASIT mydatacontainer = getappdata(0,'datacontainer'); m = getappdata(mydatacontainer,'m'); q = 255*graythresh(m); num_citra = double(handles.data1); [m, n] = size(handles.data1); for i = 1:m    for j = 1:n        num_citra(i,j) = num_citra(i,j)+q;        if num_citra(i,j) > 255            num_citra(i,j) = 0;        end;        if num_citra(i,j) < 0            num_citra(i,j) = 255;        end;    end; end; P = uint8(num_citra); gambar = im2bw(P); Q = imclearborder(gambar); se = strel('disk',15); fc = imclose(Q,se); I6 = bwareaopen(fc,7); % MENAMPILKAN CITRA PARASIT axes(handles.axes4); [B,L] = bwboundaries(I6,'noholes'); imshow(L), title('Citra Parasit',...    'FontName','Maiandra GD','FontSize',14,'FontWeight','bold'); hold on % MENGHITUNG JUMLAH PARASIT Z = bwlabel(I6); Jumlah_Parasit = max(max(Z)) nilai = num2str(Jumlah_Parasit); set(handles.JUMLAH_PARASIT_ED,'String',nilai); % MENGHITUNG PERBANDINGAN LUAS PARASIT DENGAN LUAS RATA-RATA SEL for k = 1:length(B)    boundary = B{k};    plot(boundary(:,2), boundary(:,1), 'w', 'LineWidth', 2) end stats = regionprops(L,'Area','centroid','Perimeter'); threshold = 0.94; % loop over the boundaries for k = 1:length(B)       % obtain (X,Y) boundary coordinates corresponding to label 'k'    boundary = B{k};       % compute a simple estimate of the object's perimeter    perimeter = stats(k).Perimeter;       % obtain the area calculation corresponding to label 'k'    area = stats(k).Area;    perbandingan = area/rata2;       % compute the roundness metric    metric = 4*pi*area/perimeter.^2;       % mark objects above the threshold with a black circle    if metric > threshold;        centroid = stats(k).Centroid;        plot(centroid(1),centroid(2),'ko');    end       % MENGIDENTIFIKASI JENIS FASE PLASMODIUM FALCIPARUM    if perbandingan <= 0.08;        text(boundary(2,2),boundary(1,1)+40,'trophozoite','Color','g',...            'FontName','Maiandra GD','FontSize',12,'FontWeight','bold');        Fase = 'trophozoite'           elseif metric > 0.826;        text(boundary(2,2),boundary(1,1)+40,'schizont','Color','y',...            'FontName','Maiandra GD','FontSize',12,'FontWeight','bold');        Fase = 'schizont'           else        text(boundary(2,2),boundary(1,1)+40,'gametocyte','Color','r',...            'FontName','Maiandra GD','FontSize',12,'FontWeight','bold');        Fase = 'gametocyte'    end end diary off; % --- Executes on button press in PANDUAN_BT. function PANDUAN_BT_Callback(hObject, eventdata, handles) % hObject   handle to PANDUAN_BT (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles   structure with handles and user data (see GUIDATA) guidata(infoto); % --- Executes on button press in RESET_BT. function RESET_BT_Callback(hObject, eventdata, handles) % hObject   handle to RESET_BT (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles   structure with handles and user data (see GUIDATA) set(handles.JUMLAH_SEL_TOTAL_ED,'String','') set(handles.JUMLAH_PARASIT_ED,'String','') set(handles.NAMA_CITRA_ST,'String',''); set(handles.LEBAR_CITRA_ST,'String',''); set(handles.PANJANG_CITRA_ST,'String',''); axes(handles.axes1) cla('reset') set(gca,'XTick',[]) set(gca,'YTick',[]) axes(handles.axes2) cla('reset') set(gca,'XTick',[]) set(gca,'YTick',[]) axes(handles.axes3) cla('reset') set(gca,'XTick',[]) set(gca,'YTick',[]) axes(handles.axes4) cla('reset') set(gca,'XTick',[]) set(gca,'YTick',[]) % --- Executes on button press in KEMBALI_BT. function KEMBALI_BT_Callback(hObject, eventdata, handles) % hObject   handle to KEMBALI_BT (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles   structure with handles and user data (see GUIDATA) close(Otomatis); guidata(ProgramPerhitunganSel); function JUMLAH_SEL_TOTAL_ED_Callback(hObject, eventdata, handles) % hObject   handle to JUMLAH_SEL_TOTAL_ED (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles   structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of JUMLAH_SEL_TOTAL_ED as text %       str2double(get(hObject,'String')) returns contents of JUMLAH_SEL_TOTAL_ED as a double % --- Executes during object creation, after setting all properties. function JUMLAH_SEL_TOTAL_ED_CreateFcn(hObject, eventdata, handles) % hObject   handle to JUMLAH_SEL_TOTAL_ED (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles   empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. %      See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))    set(hObject,'BackgroundColor','white'); end function JUMLAH_PARASIT_ED_Callback(hObject, eventdata, handles) % hObject   handle to JUMLAH_PARASIT_ED (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles   structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of JUMLAH_PARASIT_ED as text %       str2double(get(hObject,'String')) returns contents of JUMLAH_PARASIT_ED as a double % --- Executes during object creation, after setting all properties. function JUMLAH_PARASIT_ED_CreateFcn(hObject, eventdata, handles) % hObject   handle to JUMLAH_PARASIT_ED (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles   empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. %      See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))    set(hObject,'BackgroundColor','white'); end % --- Executes during object creation, after setting all properties. function axes5_CreateFcn(hObject, eventdata, handles) % hObject   handle to axes5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles   empty - handles not created until after all CreateFcns called % Hint: place code in OpeningFcn to populate axes5 axes (hObject); imshow('Otomatis.jpg');
Posted on August 10, 2015, in Pengenalan Matlab, Pengenalan Pola, Pengolahan Citra and tagged aplikasi matlab biologi, aplikasi matlab mikroskopis, aplikasi pengolahan citra untuk penghitungan jumlah sel darah merah, cara membuat aplikasi gui matlab pengolahan citra digital, cara membuat aplikasi gui matlab sederhana, cara menghitung sel darah merah menggunakan citra matlab, contoh aplikasi matlab pengolahan citra digital, contoh aplikasi matlab sederhana, contoh aplikasi pengolahan citra digital menggunakan gui matlab, contoh aplikasi pengolahan citra digital menggunakan matlab, contoh aplikasi program pengolahan citra digital, contoh gui matlab pengolahan citra, contoh koding matlab thresholding, contoh pengenalan pola menggunakan matlab, contoh penghitungan sel darah merah menggunakan matlab, deteksi malaria menggunakan matlab, gui matlab, identifikasi fase perkembangan plasmodium malaria, operasi morfologi, pengolahan citra plasmodium malaria, perhitungan jumlah sel darah merah menggunakan matlab, plasmodium falciparum, thresholding dengan metode otsu, thresholding menggunakan MATLAB. Bookmark the permalink. 20 Comments.
pak mau tanya, kalau ingin mencoba source code ini dengan gambar sel darah yang lain bagaimana ya?
maaf untuk penelitian ini, hanya koding dan tampilan program yang bisa saya share
untuk file koding dan citranya belum bisa saya bagikan karena penelitian ini merupakan penelitian saya yang sdh dipublikasi (bisa dilihat pada alamat berikut: https://www.academia.edu/11333701/THE_AUTOMATIC_COUNTING_OF_THE_NUMBER_OF_RED_BLOOD_CELLS_AND_IDENTIFICATION_OF_PLASMODIUM_FALCIPARUM_PHASE_USING_MORPHOLOGICAL_OPERATIONS)
salam….
maaf kisanak ^_^
perkenalkan saya prabowo dari boyolali, mau tanya teknik untuk memisahkan warna biru dan merah gmn ya cara nya…
kasus dalam pemisahan bakteri TB dengan teknik pewarnaan ziel nelsen
^_^
bisa dilihat pada paper saya berikut https://undip.academia.edu/AdiPamungkas
Maaf mas.,.,
perkenalkan saya prabowo dari boyolali yang koment
bolehkah saya minta kontak jnengan.,.,?
mau sowan tempat e jnengan.,.,,.
ini email saya.,.,.,
prabowo.sukses@gmail.com
Mas Adi, frame aplikasinya saya suka, kalo boleh tau caranya bagaimana ya mengubah frame aplikasi jadi lebih custom seperti aplikasi tsb ? Thx
background merupakan file berekstensi .jpg yang dapat dibuat menggunakan software aplikasi corel draw ataupun photoshop
Permisi mas adi, apa boleh saya meminta kontak mas adi?
ini kontak saya ya mas teukufajarzuhriansyah@gmail.com
mohon bantuannya mas
Kontak person saya bisa dilihat pada halaman berikut ini
https://pemrogramanmatlab.com/about/
Assamualaikum pak.saya mau tau mendapatkan citra asli pada setiap golongan darah seperti citra asli golongan darah O,A,B,,AB dri mana pak?.Mohon bantuannya pak.
Waalaikumsalam nona
Bisa diperoleh dengan mengakuisisi citra darah di laboratorium menggunakan mikroskop digital
assamualaikum pak jadi program perhitungan jumlah sel darah diatas digunakan untuk menentukan jenis golongan darah yh pak soalnya saya ada tugas mengenai sistem biometrika pengenalan citra DNA tapi masalahnya masih belum banyak jurnal yang dipost diinternet mengenai pengenalan atau pendeteksian golongan darah DNA sehingga saya tidak referensinya untuk mencari algoritma atau perhitungan matematis nya???
waalaikumsalam nona
perhitungan sel darah merah digunakan oleh dokter untuk mendiagnosa jenis penyakit seorang pasien
assalamualaikum mz adi, nama saya lusi…
saya mau tanya untuk bagian mengidentifikasi jenis fase P.falciparum, nilai dari perbandingan (0.08) dan metric (0.826) itu diperoleh dari mana ych?. dan apa boleh saya menghubungi mz adi secara pribadi? kebetulan saya pemula dalam matlab dan bidang penelitian. dan sekarang sedang mengerjakan program tesis untuk parasit malaria juga.terimakasi
waalaikumsalam lusi
nilai tersebut diperoleh dari proses trial & error
mz adi getappdata itu dipakai kalau kita menggunakan gui ych? kalau semiasal kita masih menggunakan command window, getappdata di ganti dengan apa ych?
getappdata digunakan untuk menyimpan variabel agar variabel dapat dipanggil oleh button yg lain di dalam GUI
Jika mengkoding di dalam command window maka variabel tidak perlu disimpan, langsung dipanggil saja di perintah di bawahnya
Mas kalo cara mendapatkan nilai gula dalam suatu citra dan ditampilkan melalui gui? Terima kasih
bisa dipelajari kembali cara mendapatkan nilai gula dalam suatu citra dan ditampilkan melalui gui
mas adi, kalo mw buat tampilan program seperti programnya mas itu gimana yah mas,