Cara menampilkan video pada GUI Matlab
Pengolahan video merupakan cabang ilmu yang merupakan bagian dari bidang sistem visi komputer (computer vision).
Video sejatinya merupakan sekumpulan citra yang dijalankan secara sekuensial dengan frame rate tertentu.
Pada umumnya pengolahan video dilakukan dengan langkah-langkah berikut:
1. Membaca file video asli
2. Mengekstrak setiap frame video
3. Mengolah setiap frame tersebut dengan metode dan tujuan tertentu
4. Menampilkan kembali hasil pengolahan frame citra secara sekuensial dalam bentuk video
Pengolahan video telah banyak dilakukan dan dikembangkan oleh para saintis di dunia karena perannya yang cukup besar dalam perkembangan teknologi.
Dalam bidang computer vision, kamera telah banyak dimanfaatkan untuk menggantikan maupun membantu peran mata manusia untuk mengawasi, mendeteksi, ataupun mengenali suatu obyek dalam video baik secara real-time maupun non real-time.
Oleh sebab itu, perkembangan ilmu pengetahuan khususnya pada bidang pengolahan citra digital dan pengolahan video terus menerus dilakukan.
Berikut ini merupakan contoh aplikasi pemrograman GUI Matlab mengenai pengolahan video sederhana di antaranya adalah untuk mengekstrak kanal warna citra RGB, mengkonversi ruang warna RGB menjadi grayscale, mengkonversi tone warna sepia, dan mengkonversi warna citra menjadi biner.
Format video yang dapat dibaca oleh Matlab di antaranya adalah .avi, .mpg, dan .mp4.
Tahapan pemrograman untuk pengolahan video adalah sebagai berikut:
2. Membuka file video yang ingin diolah
4. Menjalankan video kanal merah
5. Menjalankan video kanal hijau
6. Menjalankan video kanal biru
7. Menjalankan video dengan efek sepia
8. Menjalankan video grayscale
File source code lengkap beserta video pada pemrograman di atas dapat diperoleh melalui halaman berikut ini: Source Code
Sedangkan tampilan kodingnya adalah sebagai berikut:
function VideoProcessing() global vid f = figure('Name','Video Processing','MenuBar','none',... 'ToolBar','none','NumberTitle','off','Position',[180 100 1000 600]); panel1 = uipanel('Title','Panel','FontWeight','bold',... 'FontSize',10,'Position',[.06 .37 .2 .35]); panel2 = uipanel('Title','Video','FontWeight','bold',... 'FontSize',10,'Position',[.35 .3 .55 .55]); btn1 = uicontrol('Parent',f,'Style', 'pushbutton', 'String', 'Browse Video',... 'Position', [60 480 100 25],'Callback', @pushbutton1); btn2 = uicontrol('Parent',f,'Style', 'pushbutton', 'String', 'Play',... 'Position', [60 180 100 25],'Callback', @pushbutton2,'Enable','off'); htext = uicontrol('Style','text','String','Video Name:',... 'Position',[60 440 70 20]); edit1 = uicontrol('Style','edit','String','',... 'Position',[130 442 130 20],'Enable','inactive'); radio1 = uicontrol('Parent',panel1,'Style','radiobutton',... 'String','Original (RGB)','Position',[15 160 100 20],... 'Callback', @radiobutton1,'Value',1); radio2 = uicontrol('Parent',panel1,'Style','radiobutton',... 'String','Red Channel','Position',[15 135 100 20],... 'Callback', @radiobutton2); radio3 = uicontrol('Parent',panel1,'Style','radiobutton',... 'String','Green Channel','Position',[15 110 100 20],... 'Callback', @radiobutton3); radio4 = uicontrol('Parent',panel1,'Style','radiobutton',... 'String','Blue Channel','Position',[15 85 100 20],... 'Callback', @radiobutton4); radio5 = uicontrol('Parent',panel1,'Style','radiobutton',... 'String','Sepia','Position',[15 60 100 20],... 'Callback', @radiobutton5); radio6 = uicontrol('Parent',panel1,'Style','radiobutton',... 'String','Grayscale','Position',[15 35 100 20],... 'Callback', @radiobutton6); radio7 = uicontrol('Parent',panel1,'Style','radiobutton',... 'String','Binary','Position',[15 10 100 20],... 'Callback', @radiobutton7); ax1 = axes('Parent',panel2,'Position',[.002 .015 1 1],'XTick',[],... 'YTick',[],'Visible','off'); function pushbutton1(~,~) [filename,pathname] = uigetfile('*.*'); if ~isequal(filename,0); vid = fullfile(pathname,filename); set(edit1,'String',filename) set(btn2,'Enable','on') else return; end end function pushbutton2(~,~) obj.reader = vision.VideoFileReader(vid); while ~isDone(obj.reader) [frame,frameSize] = readFrame(); frame = im2uint8(frame); showFrameOnAxis(ax1,frame) end release(obj.reader); function [frame,frameSize] = readFrame() frame = obj.reader.step(); R = frame(:,:,1); G = frame(:,:,2); B = frame(:,:,3); if get(radio1,'Value') == 1 frame = obj.reader.step(); elseif get(radio2,'Value') == 1 frame = cat(3,R,G*0,B*0); elseif get(radio3,'Value') == 1 frame = cat(3,R*0,G,B*0); elseif get(radio4,'Value') == 1 frame = cat(3,R*0,G*0,B); elseif get(radio5,'Value') == 1 r = .393*R + .769*G + .189*B; g = .349*R + .686*G + .168*B; b = .272*R + .534*G + .131*B; frame = cat(3,r,g,b); elseif get(radio6,'Value') == 1 gray = (R+G+B)/3; frame = cat(3,gray,gray,gray); elseif get(radio7,'Value') == 1 gray = (R+G+B)/3; bw = ~im2bw(gray); frame = cat(3,bw,bw,bw); end frameSize = size(frame); end function showFrameOnAxis(hAxis,~) try hChild = get(hAxis, 'Children'); catch %#ok<CTCH> return; % hAxis does not exist; nothing to draw end isFirstTime = isempty(hChild); if isFirstTime hIm = displayImage(hAxis, frame); addScrollPanel(hAxis, hIm); else hIm = hChild; try set(hIm,'cdata',frame); drawnow; catch %#ok<CTCH> % figure closed return; end end end function addScrollPanel(hAxis, hIm) hPanel = get(hAxis,'parent'); pos = get(hAxis,'position'); hSP = imscrollpanel(hPanel,hIm); set(hSP,'Units','normalized', 'Position',pos); end %-------------------------------------------------------------------------- function hIm = displayImage(hAxis, ~) xdata = [1 frameSize(2)]; ydata = [1 frameSize(1)]; cdata = frame; cdatamapping = 'direct'; % hIm = image(xdata,ydata,cdata, ... % 'BusyAction', 'cancel', ... % 'Parent', hAxis, ... % 'CDataMapping', cdatamapping, ... % 'Interruptible', 'off'); hIm = image(cdata, ... 'BusyAction', 'cancel', ... 'Parent', hAxis, ... 'CDataMapping', cdatamapping, ... 'Interruptible', 'off'); set(hAxis, ... 'YDir','reverse',... 'TickDir', 'out', ... 'XGrid', 'off', ... 'YGrid', 'off', ... 'PlotBoxAspectRatioMode', 'auto', ... 'Visible', 'off'); end end function radiobutton1(~,~) set(radio1,'Value',1) set(radio2,'Value',0) set(radio3,'Value',0) set(radio4,'Value',0) set(radio5,'Value',0) set(radio6,'Value',0) set(radio7,'Value',0) end function radiobutton2(~,~) set(radio1,'Value',0) set(radio2,'Value',1) set(radio3,'Value',0) set(radio4,'Value',0) set(radio5,'Value',0) set(radio6,'Value',0) set(radio7,'Value',0) end function radiobutton3(~,~) set(radio1,'Value',0) set(radio2,'Value',0) set(radio3,'Value',1) set(radio4,'Value',0) set(radio5,'Value',0) set(radio6,'Value',0) set(radio7,'Value',0) end function radiobutton4(~,~) set(radio1,'Value',0) set(radio2,'Value',0) set(radio3,'Value',0) set(radio4,'Value',1) set(radio5,'Value',0) set(radio6,'Value',0) set(radio7,'Value',0) end function radiobutton5(~,~) set(radio1,'Value',0) set(radio2,'Value',0) set(radio3,'Value',0) set(radio4,'Value',0) set(radio5,'Value',1) set(radio6,'Value',0) set(radio7,'Value',0) end function radiobutton6(~,~) set(radio1,'Value',0) set(radio2,'Value',0) set(radio3,'Value',0) set(radio4,'Value',0) set(radio5,'Value',0) set(radio6,'Value',1) set(radio7,'Value',0) end function radiobutton7(~,~) set(radio1,'Value',0) set(radio2,'Value',0) set(radio3,'Value',0) set(radio4,'Value',0) set(radio5,'Value',0) set(radio6,'Value',0) set(radio7,'Value',1) end end
Posted on June 20, 2016, in Pengolahan Video and tagged aplikasi gui matlab pengolahan video, cara membuat aplikasi pengolahan video dengan gui matlab, cara membuat video processing matlab, cara menampilkan video pada gui matlab, contoh aplikasi video digital menggunakan matlab, contoh pengolahan video gui matlab, contoh pengolahan video sederhana menggunakan gui matlab, gui matlab untuk pengolahan video, konversi grayscale gui matlab, pengolahan video sederhana dengan gui matlab, pengolahan video transformasi ruang warna rgb, pengolahan video untuk thresholding, thresholding matlab, thresholding video matlab, tutorial menampilkan video pada gui matlab, video processing, video processing dengan gui matlab, video processing matlab, video processing menggunakan matlab. Bookmark the permalink. 16 Comments.
Assalamualikum mas, kira2 ada ga ya coding untuk menampilkan video real time menggunakan matlab yang terhubung dengan kamera? yang digunakan untuk pengenalan objek. jika ada, seperti apa ya mas?
Terimakasih mas atas jawabannya
waalaikumsalam satrio
untuk menampilkan video secara real time, satrio bisa mengintegrasikan koding pada dua halaman berikut
https://pemrogramanmatlab.com/2016/04/04/akuisisi-citra-digital-menggunakan-webcam/
dan
https://pemrogramanmatlab.com/2016/06/20/cara-menampilkan-video-pada-gui-matlab/
apa dari situ nanti kita bisa gunakan untuk keperluan deteksi objek secara realtime mas?
iya betul satrio
kalo ketika video berjalan apakah bisa ditambahkan untuk mengcapture video tersebut?terima kasih
Bisa ditambahkan ardhika ryzha
codingnya seperti gimana ya mas, tolong mas ajarin saya kalo bisa. saya sudah mencari tapi gak ketemu
ohiya semoga saya bisa
tolong ya mas ardhika.ryzha37@gmail.com terima kasih mas
mudah mudahan saya bisa membantu
Assalamu’alaikum mas, kodingan ini minimal memakai matlab versi brp ya?
waalaikumsalam koding di atas dapat dijalankan pada matlab versi R2015b
Assalamu’alaikum mas, kalau kita mau menampilkan video di axes yang telah kita desain itu bagimana caranya…… mas tolong beri codenya tentang video untuk tampilkan axes yang telah didesain
Waalaikumsalam Salvador pinto
mudah2an ke depan terdapat materi dan koding untuk menampilkan video pada axes yang telah didesain
Assalamualaikum. Untuk dapetin video aslinya itu darimana ya?
Waalaikumsalam
Video dan source code lengkap bisa dibeli melalui tokopedia