Senin, 12 Mei 2008

The comparison of Pixel and Vector Based Image Processing

There are few methods of Surface Inspection using pixel based method, namely :
1. Traditional Object Recognition: this methods is identifies object by generalizing object's image pattern. The first step is extraction the features of the object and then train the system according to the features by using classifier algorithm, such as Neural Network or SVM. This method will face different challenges, such as : illumination variance and distribution, object surface characteristics, orientation and occlusion

2. Blob/Particle Analysis : This methods will extract any object in the surface by separate it from the background
then group it accordingly to form a blob.
The geometry of the blobs is then used for surface detection. This is very fast and practical method for simple surface
inspection. The disadvantage of this method is that separation of the object from the background is not an easy task
due to noise as a result of change of color, scratch, marking etc.

3. Template Matching with Normalized Grey Scale correlation :
In this method the template is stored and then matched with the object inspected with some correlation method.

The advantage of this method is that it is much more accurate and more robust than the previous two methods. The added advantages are that it is relatively easy to train an object and that the object does not need to be separated from
the background. The disadvantages of such a method are that it cannot handle much variation in rotation and size and is highly affected by non-uniform shading. In the application of inprocess inspection in industry, changes in rotation and size as well as non-uniform shading is the standard rather than the exception.

Now in contrast, the vector based image processing will be described and compared. In the previous three methods described above, the image processing are applied on the basis of pixel by pixel, hence pixel based image processing.

This method is slow and challenged by problems in different illumination, pose and occlusions.

Vector based image processing is totally different that it converts all the pixel into geometric features by means of synthetics or mathematical model.The geometric feature can be line segments, arcs, angles and open or closed geometric shapes.
By using geometric features, the image analysis is not affected by color changes or non-linear changes in size such as those found with components due to manufacturing variations. This method is also robust against variance in shading an non-linear lighting.

View Adhiguna Mahendra,Ph.D's profile on LinkedIn

Jumat, 09 Mei 2008

Intel OpenCV, alternatif Opensource Machine Vision

Kalau anda atau perusahaan anda tidak cukup punya dana untuk membeli Software NI Development Module atau Cognex VisionPro yang harganya berkisar dari 5000-20.000 USD, anda bisa mempertimbangkan OpenCV dari Intel sebagai alternatif solusi. Library open source ini bisa di-download dari

www.intel.com/technology/computing/opencv/

atau

http://sourceforge.net/projects/opencvlibrary

OpenCV adalah library Open Source untuk Computer Vision untuk C/C++, OpenCV didesain untuk aplikasi real-time, memiliki fungsi-fungsi akuisisi yang baik untuk image/video. OpenCV juga menyediakan interface ke Integrated Performance Primitives (IPP) Intel sehingga jika anda bisa mengoptimasi aplikasi Vision anda jika menggunakan prosesor Intel.

Feature yang dimiliki OpenCV antara lain :

* Manipulation data citra (alokasi, copying, setting, konversi).
* Citra dan video I/O (file dan kamera based input, image/video file output).
* Manipulasi Matriks dan Vektor beserta rutin-rutin aljabar linear (products, solvers, eigenvalues, SVD).
* Data struktur dinamis (lists, queues, sets, trees, graphs).
* Pemroses Citra fundamental (filtering, edge detection, corner detection, sampling and interpolation, color conversion, morphological operations, histograms, image pyramids).
* Analisis struktur(connected components, contour processing, distance transform, various moments, template matching, Hough transform, polygonal approximation, line fitting, ellipse fitting, Delaunay triangulation).
* Kalibrasi kamera (calibration patterns, estimasi fundamental matrix, estimasi homography, stereo correspondence).
* Analisis gerakan (optical flow, segmentation, tracking).
* Pengenalan obyek (eigen-methods, HMM).
* Graphical User Interface (display image/video, penanganan keyboard dan mouse handling, scroll-bars).
* Pelabelan citra (line, conic, polygon, text drawing)


OpenCV terdiri dari 3 library, yaitu
CV : untuk algoritma Image processing dan Vision
Highgui :untuk GUI, Image dan Video I/O
CXCORE : Untuk struktur data, support XML dan fungsi-fungsu grafis.


Selain itu OpenCV juga dilengkapi dengan Machine Learning library yang memiliki algoritma berikut :

* Naive Bayes classifier
* k-nearest neighbor algorithm
* Support Vector Machine
* Decision Trees
* Boosting
* Random forest
* Expectation Maximization
* Neural Networks


Library ini bisa di-compile dengan Visual C++ 6.0, Visual C++.Net 2003/2005/2008 baik Standard, Professional maupun express edition.

Sepengalaman saya, OpenCV memang tidak semudah dan se-robust NI Vision Development Module atau Cognex Visionpro, tapi dalam beberapa kasus justru lebih fleksibel dan extendable. Hanya saja memang anda harus benar-benar jago coding untuk dapat menggunakan OpenCV. Karena Library ini sangat ringkih dan rentan terhadap memory leak. So management memory anda harus benar-benar baik.

Lain kali saya akan sajikan tutorial OpenCV mulai dari instalasi sampai pembuatan aplikasi Computer Vision sederhana.

View Adhiguna Mahendra,Ph.D's profile on LinkedIn

Rabu, 07 Mei 2008

NI Vision Development Suite

National Instruments Vision Development Module (www.ni.com/vision/vdm.htm) adalah tools yang sangat luar biasa untuk pengembangan aplikasi Machine Vision. Ini adalah sebuah development module yang sangat lengkap dengan berbagai library yang bisa di-porting ke VB.Net, Labview dan CVI/Labwindows dan C/C++, modul ini juga memiliki prototyping tool yang disebut Vision Assistant, dengan tool ini, kita dapat dengan mudah membuat prototype program machine vision dan mengganti-ganti image processing algorithm atau filter yang digunakan. Kalau kita mendevelop aplikasi computer vision sederhana menggunakan Matlab dengan Image Processing toolbox atau OpenCV, akan memakan waktu berjam-jam, dengan Vision Assistant hanya memakan waktu kurang dari satu jam.

Program ini mengakuisisi data, baik live image dari Frame board maupun static image, kemudian kita konversi ke 8 bit image atau binary. Dari situ kita bisa melakukan manipulasi image dengan mengganti-ganti filter untuk memperhalus image, merubah kontras, brighness, mendeteksi edge, segmentasi, transformasi ke domain frekuensi dan lain-lain . Selanjutnya setelah feature dari image kita dapatkan, kita bisa melakukan measurement, pattern classification/object detection dan blob/particle analysis.

Setelah puas dengan prototype program yang kita buat, kita bisa memporting prototype program ke Visual Basic, Labview, atau Labwindows/CVI untuk dimanipulasi lebih jauh atau digabung dengan library lain.

Sangat praktis.

View Adhiguna Mahendra,Ph.D's profile on LinkedIn

CVI/Labwindows : Alternative bagi pembenci Labview

Bagi anda-anda yang berkecimpung di Control Systems/Instrumentation, pasti kenal dengan program yang satu ini, ya Labview dari National Instruments. Di Perancis sini, hampir semua Industri memakai Labview sebagai bahasa utama pengembangan sistem instrumentasi dan kontrol di industri. Di tingkat universitas dan ecole (institut/sekolah tinggi), setiap mahasiswa Teknik Elektro dan Ilmu Komputer (Informatique) di Perancis diwajibkan untuk mempelajari Labview sebagai bagian dari matakuliah pemrograman, Sistem Kontrol dan Instrumentasi. FYI uniknya di Perancis, mahasiswa Ilmu Komputer atau seringnya disebut Industrielle Informatique disini SELALU mendapatkan mata kuliah Control Systems dan Instrumentation. Sesuatu yang tidak saya temui di UK dan Indonesia. Hal ini disebabkan oleh banyaknya industri manufaktur di Perancis sehingga demand untuk engineer yang menguasai Sistem Kontrol dan Automasi sangat tinggi.

Labview menggunakan konsep Graphics Language sebagai landasan pemrogramannya. So semua operasi logika, iterasi dan matematika direpresentasikan dengan lambang dan flowchart. Labview memang ideal untuk scientist dan engineer yang kurang kuat background programmingnya tapi harus membuat aplikasi measurement dan insrumentasi dengan cepat.

Ok anyway, bagi saya, meskipun sangat tepat untuk data acquisition and measurement, orang Perancis kebablasan menggunakan Labview sebagai bahasa pemrograman general untuk urusan APA SAJA. Bahkan teman saya disuruh menggunakan Labview untuk memodelkan persamaan matematik (dimana Matlab, Mathematica atau Scilab lebih tepat untuk itu).

Labview memaksa kita untuk menggunakan prinsip dataflow, dimana fleksibilitas menjadi taruhannya.

Untuk program-program sederhana seperti akuisisi data dari instrumen, mengukur, dan menampilkannya, graphical programming language ini sangat cepat dan praktis. Tapi untuk menulis program yang cukup kompleks (misal aplikasi Object Detector and Recognition) dibutuhkan fleksibilitas yang sangat tinggi.

Sebagai orang pure Computer Science yang berlatar belakang text based programming dan telah mempelajari Theory of Programming Language dan Compiler Design, saya sangat membenci Labview dengan alasan berikut :

1. Tidak bisa memberi komentar
2. Tidak bisa memberi nama variabel (WTF ??)
3. Nonlinear dan alurnya susah diikuti, ini bikin program atau main game Maze???
4. Untuk memodifikasi satu perintah (dimana dalam bahasa pemrograman text hanya merubah satu baris) harus merubah keseluruhan struktur program.
5. Nonlinearity membuat sangat sulit untuk di-debug.
6. Nonlinearity membuat timing menjadi hal yang sangat sulit.
7. Penanganan Array dan iterasi yang rumit.
9. Sulit untuk menerapkan konsep OOP.
10. Pendukung Labview bilang operasi Parallel lebih mudah divisualisasikan dengan Labview, BULLSHIT, saya membuat parallel program dengan Celoxica Handel-C, tidak ada masalah.

Pertama kali menggunakan Labview untuk aplikasi numerical simulation and modeling (karena perusahaan tidak memiliki Matlab dan bos taunya hanya Labview), saya banyak terbantu dengan memakai C-Script untuk formula programming. Tapi lama-lama setelah aplikasi jadi kompleks, ternyata gabungan Labview dengan C-Script membuat program jadi rumit dan berat.
Akhirnya, setelah berkutat dengan kejengkelan, VOILA saya menemukan solusinya, Paolo, seorang PhD EE asal Brazil yang juga membenci Labview memberitahu pada saya bahwa Labwindows/CVI bisa menggantikan Labview dan kebetulan perusahaan MEMILIKI LISENSI Labwindows/CVI!

Labwindows/CVI adalah ANSI-C Compiler buatan National Instruments yang diklaim pembuatnya dapat menggunakan semua library dan modul akusisi data dari National Instrument dan compatible dengan Labview. So kita bisa mengerjakan aplikasi instrumentasi dan kontrol yang sama dengan Labview tanpa kepusingan-kepusingan bahasa pemrograman grafis.

Akhirnya semua program Labview saya convert ke Labwindows/CVI dan saya bisa meneruskan pekerjaan saya dengan bahasa pemrograman tercinta, ANSI-C !!

Beberapa hari setelah bermain dengan Labwindows/CVI, saya menyadari bahwa development tool ini lebih friendly daripada Visual C++.Net dan tentu saja memiliki library instrumentasi yang sangat lengkap. So Labwindows/CVI adalah tools terbaik untuk aplikasi instrumentasi, kontrol dan measurement di Industry bagi para software engineer atau hardcore coder.








View Adhiguna Mahendra,Ph.D's profile on LinkedIn

Keys on Machine Vision Selection

Modern Production and manufacturing process now rely on the use of machine vision technology for test, measurement and inspection task. Nowadays there are many machine vision vendors offering products with different features and applications. This paper will highlight some of the key attributes we should look for in a machine vision supplier, and why taking the time to carefully assess a supplier’s capability and choosing the right partner will save the time and money in the long run.

There are many factors to be considered when choosing a machine vision technology from specific vendors. The factors are :

The Experience of the company.

  1. Hardware Features. The parameter considered are :
    1. Raw Image quality : Resolutions, Contrast/Sharpness, SNR, can be parameterized by MTF/SFR.
    2. Speed.
    3. Ability to manipulate image in subpixel level.

2. Software features.

    1. OS supported.
    2. Performance.
    3. Reliability.
    4. Hardware supported.
    5. The modularity of the SDK (ex. COM, Activex).
    6. The flexibility of the SDK to be customized.

  1. Compatibility with other products, for example lighting systems, mechanical systems, control systems.

  1. After Sales Service and support. Parameters considered :
    1. Inventory reserve for emergency order fulfillment
    2. Long-term product availability for a technology migration path
    3. Advanced replacements for immediate failure replacement
    4. Priority technical support
    5. Flexible product training- on-site or at vendor’s training center
    6. Customized hardware and software solutions
    7. Vision system application engineering consulting
    8. On-line logistical information for order tracking and account management
    9. In-depth on-line knowledge base and training tools


View Adhiguna Mahendra,Ph.D's profile on LinkedIn