2. Agenda
Tentang Marvin
Arsitektur
Fitur
Kegunaan
Instalasi
Demonstrasi
3KA22
3. Agenda
Tentang Marvin
Arsitektur
Fitur
Kegunaan
Instalasi
Demonstrasi
3KA22
4. Tentang Mavin
Framework untuk memanipulasi/mengolah
gambar
Open Source dibawah lisensi LGPL
Dikembangkan menggunakan Java
Cross-platform
Dapat diperluas dengan mengimplementasikan
dalam bentuk plug-in
3KA22
5. Agenda
Tentang Marvin
Arsitektur
Fitur
Kegunaan
Instalasi
Demonstrasi
3KA22
7. Agenda
Tentang Marvin
Arsitektur
Fitur
Kegunaan
Instalasi
Demonstrasi
3KA22
8. Fitur
Plug-ins
Video Capturing
Multi-threading
Performance Meter
GUI API
Plug-in History
3KA22
9. Fitur – Plugins
Algoritma untuk memanipulasi gambar
diimplementasikan secara eksternal sebagai
sebuah plug-in
Marvin menyediakan antar muka untuk dapat
diimplementasikan oleh pengembang
Plug-in akan dimuat pada saat run-time
Sebuah plug-in dapat diintegrasikan dengan
plug-in lainnya, marvin editor, maupun
sebagai pihak ketiga/pustaka
3KA22
10. Fitur - Video Capturing
Memungkinkan
pengembang untuk
memproses video
secara real-time
Antar muka untuk
memproses video dan
gambar adalah sama
Dalam kasus video, plug-ins dapat
menyimpan frame sebelumnya untuk
dapat menganalisa beberapa frame
3KA22
11. Fitur - Multithreading
Mengizinkan pemrosesan beberapa gambar
dalam waktu bersamaan; atau
Membagi premrosesan satu gambar kedalam
beberapa thread
3KA22
12. Fitur – Performance Meter
Beberapa algoritma
pemrosesan gambar
dapat dibagi menjadi
beberapa proses.
Performance meter
mengizinkan
pengembang untuk
menganalisa setiap
proses.
3KA22
13. Fitur - GUI API
Marvin menyediakan antar
muka untuk dapat terhubung
dengan fitur antar muka
grafis.
Dengan mengimplementasikan
GUI API, pengembang tidak
perlu mengkhawatirkan
penangkapan event
komponen.
3KA22
14. Fitur - Plug-in History
Pada setiap proses MarvinPluginHistory
menyimpan semua plug-in dan masing-masing
konfigurasi
3KA22
15. Agenda
Tentang Marvin
Arsitektur
Fitur
Kegunaan
Instalasi
Demonstrasi
3KA22
16. Kegunaan
Pemrosesan gambar dalam jumlah banyak dan
berulang-ulang
Membuat editor yang dapat disesuaikan
kebutuhan dengan memanfaatkan plug-in yang
telah disediakan
Membuat filter dengan arsitektur berorientasi
objek mengikuti standart Marvin Plug-in API
Memanfaatkan Marvin GUI dan Plug-in API
untuk membuat implementasi baru
3KA22
17. Kegunaan
Menganalisa performa suatu filter baik
menggunakan performace meter maupun unit
testing pada saat fase pengembangan
3KA22
18. Agenda
Tentang Marvin
Arsitektur
Fitur
Kegunaan
Instalasi
Demo
3KA22
19. Instalasi
Masukkan pustaka Marvin Framework kedalam
Java classpath untuk dapat dijalankan pada
saat runtime
Muat plugin
MarvinImagePlugin imagePlugin = MarvinPluginLoader.
loadImagePlugin("org.marvinproject.image.color.grayScale.jar")
Eksekusi input
MarvinImage image = ...;
imagePlugin.process(image, image);
image.update()
3KA22
Marvin is an extensible, cross-platform and open source image processing framework developed in Java. The framework provides features to: manipulate images; manipulate captured video frames; multithreading image processing; integrate plug-ins with Graphical User Interface(GUI); analyze plug-in performance; extend features via plug-ins; unit test automation; The image processing algorithms are implemend as a plug-in and can be plugged into other plug-ins, thirdy-party applications and the MarvinEditor - an image editing software. Currently, there are 55 plug-ins available for a wide range of different purposes.
Marvin is an extensible, cross-platform and open source image processing framework developed in Java. The framework provides features to: manipulate images; manipulate captured video frames; multithreading image processing; integrate plug-ins with Graphical User Interface(GUI); analyze plug-in performance; extend features via plug-ins; unit test automation; The image processing algorithms are implemend as a plug-in and can be plugged into other plug-ins, thirdy-party applications and the MarvinEditor - an image editing software. Currently, there are 55 plug-ins available for a wide range of different purposes.
Algorithms to manipulate images are externally implemented as plug-ins. The framework provides an interface to manipulate plug-ins. The following source code loads a gray scale plug-in and processes an image: MarvinImage image = MarvinImageIO.loadImage(“test.jpg”); MarvinPluginImage plugin = MarvinPluginLoader.loadPluginImage("net.sourceforge.marvinproject.color.grayScale.jar"); plugin.process(a_image, a_image, a_null, MarvinImageMask.NULL_MASK, false); Plug-ins are loaded in run-time via reflection. It provides an easy-way to extensibility and allows plug-ins integration. A plug-in to show a gray scale histogram, for example, uses the gray scale plug-in before the histogram generation.
Video capturing is provided via Java Media Framework and allows developers to work with real-time video processing. For the plug-ins, the interface to work with videos and images are the same. In the case of videos, plug-ins can store past frames to analize multiple frames. Below is presented a real-time video filtering.
Marvin allows the processing of multiple images at the same time or the same image processed by multiple threads. Image processing plug-ins receive an image to be processed and a mask containing what pixels must be considered. Thus, different threads can work in the same image in different image´s segment, illustrated as folow:
Many image processing algorithms can be divided in few processes. An algorithm, for example, may be divided in five processes to find and segment the interest points of an image: representing the image in gray scale, border detection, binarization, Harris/Plassey application, render red points representing interest points. Each process has a different computational cost and the performance meter allows developers to analyze the performance of the entire algorithm and their processes individually, considering the number of steps and the execution spent time. Thus, it is possible a better understanding of the algorithm performance and facilitates optimizations, since is visible what algorithm processes are costly and most interesting to be optimized. Another performance meter application is to determine the complexity of an algorithm, Big-O notation, analyzing the number of steps executed for different image resolution. The image below presents the informations provided by the performance meter for the plug-in "Interest points".
The plug-ins can have user specified attributes that determines how it works and the Marvin framework provides features to integrate a GUI (Graphical User Interface) with these attributes. The Plug-in developer sets the relation between the plug-in attributes and the interface components, added to the plug-in window. When the component value is changed, the associated attribute value is changed automatically. The developer does not worry about handling component events or update the attributes. Below are an example of using GUI API: public void show(){ MarvinFilterWindow l_filterWindow = new MarvinFilterWindow("Brightness and Contrast", 400,350, getImagePanel(), this); l_filterWindow.addLabel("lblBrightness", "Brightness"); l_filterWindow.addHorizontalSlider("sliderBrightness", "brightness", -127, 127, 0, attributes); l_filterWindow.addPanelBelow(); l_filterWindow.addLabel("lblContrast", "Contrast"); l_filterWindow.addHorizontalSlider("sliderContrast", "contrast", -127, 127, 0, attributes); l_filterWindow.setVisible(true); } The code above creates a new MarvinFilterWindow that implements a thumbnail and buttons to preview, reset and apply a filter. The buttons preview and reset call the method process implemented in the plug-in. Two horizontal sliders are added to that windows, one associated with the attribute brightness and the other with contrast. The result window is presented below:
In some cases to achieve some result in an image, it is necessary to use a few processes. Preparing an image for pattern recognition, for example, in some applications it is interesting to remove noise, increase contrast and emphasize edges. For these cases that multiple processes are used, MarvinPluginHistory stores all plug-ins and their configurations applied to an image. The history can be exported as an image strip containing the configuration and resulting images of each used plug-in. This feature allows an analysis of an entire process considering each step. Other application is the comparison of the same application but with different settings. Below are an example of plug-in history:
Memanfaatkan fitur multithreading dapat memaksimalkan kinerja komputer dengan memproses beberapa gambar secara parallel, sangat berguna untuk memanipulasi secara berulang-ulang.
Marvin is an extensible, cross-platform and open source image processing framework developed in Java. The framework provides features to: manipulate images; manipulate captured video frames; multithreading image processing; integrate plug-ins with Graphical User Interface(GUI); analyze plug-in performance; extend features via plug-ins; unit test automation; The image processing algorithms are implemend as a plug-in and can be plugged into other plug-ins, thirdy-party applications and the MarvinEditor - an image editing software. Currently, there are 55 plug-ins available for a wide range of different purposes.