Support this project on  flattr .

Welcome to the project site for Blobscanner, a library for the Processing programming environment. This library, as the name suggests, is used for blob detection and analysis in image and video (including live streams from web cam or other video source). At the date of writing this, it is still under active development
. This library is free software and is released under General Public License version 3.
Please refer to the blog for updates about the project.

What it does

This library was built with simplicity and versatility in mind, but yet the amount of features which is possible to extract from the signal fed to it, it's quite substantial, giving the user the possibility of jumping over many non trivial tasks needed for starting their computer vision projects.  

Same of the tasks performed by  Blobscanner are:
  • Blob detection based on the brightness value of the connected components
  • Features extraction based on the blob's mass
  • Blob's edges detection and blob's edges coordinates extraction
  • Blob's bounding box  
  • Single and global blob's mass
  • Blob's center of mass
  • Blob's pixels coordinates 
  • Blob's perimeter  
Version 0.1-alpha adds Region Of Interest, which is the ability to define a limited rectangular area to search for blobs. In the previous version something similar was achievable using the constructor's parameters, but this was possible only in a static context. The new method used to set the ROI is callable altering its parameters value on each call, giving a great deal of versatility to the user. By adding this new method, the constructor has no more the responsibility to define the search space, so the new version adds two new and more simple constructors. Please read the library's usage paragraph to know more about.  

Library usage

Let see how Blobscanner needs to be used. The tools of this library are all built around only one class called Detector. So, as first thing, you want to create the Detector instance object in the usual Java style. The library has three constructors, but the one of them was kept in the last version just for backward compatibility :

  Detector( PApplet parent, int threshold );

The above constructor is the one that should be used by users who want the library scanning all of the image's area. The parameters are self-explanatory : parent is the reference to the host applet; threshold is the pixel's brightness value of the blob searched by Blobscanner, usually 255 for white blobs, after the image has been processed with a threshold filter. The Processing 's filter() method does the job. 
  Detector( PApplet parent );

The above constructor works in the same way, with the difference that after creating the instance object, Blobscanner still need to know which brightness value needs to look for. The following method tell to the library exactly that:

  seThreshold( int threshold );

Now that the library knows what we want, it's about the time to send in a signal to be processed. Blobscanner can search for blobs in:
a static image of any format allowed by Processing, a video stream, like a web cam, a video file, a synthetic image created with code. In any case the fastest method is the following:

  findBlobs(int []image_pixel_array, int image_width, int  image_height);

This is the method you use to inject pixel data into the the library's algorithm. This method can be used with both images and videos, as I said before. trueWidth and trueHeight are width and height of the source image/video object, or that of the parent applet, if the main buffer is analized. If performance is not the main problem the following method is also available which allows a PImage or a Capture object to be passed and analized for blobs:

  imageFindBlobs(PImage image);


 imageFindBlobs(Capture frame);

This is all you need to do to detect blobs with Blobscanner. What method you will use next to write your program it's really based upon what you need to detect blobs for, upon which blob's futures you need to extract for your computer vision project. In the zip file containing the library I added an example for each method and more. The Javadoc for this project are provided inside the zip file.

Who is using Blobscanner

About four years have passed since this project's inception. I have seen  many good code recipes in which Blobscanner was an helpful ingredient. If you want to share your project on this site, please email me your link. Follows a list of some of them:
  • Hand Gesture Based Control for Home Appliances  A gesture based remote control for home appliances project. This paper presents a novel system to control home appliances through hand gesture as a remote control device. The system will referred to as Handmote in this paper. It uses real time image processing for hand gesture recognition in infrared vision using Blobscanner library and microcontroller development board , Arduino. This paper proposes a possible solution to control the gadgets for physically challenged and blind people.
  • Gereard Hovagimyan:experimental computer arts worshops.
  • Gesture based Control for Robotic Arm Edge  A Gesture based Control for Robotic Arm Edge project.
  • Bizarro Game Controllers The Bizarro Game Controllers workshop is organized by Wyld Collective Ltd., usually with help from other smart and cool people.
  • INmobility project The INmobility project is a collaborative artistic process, developed by Brazilian artists Luisa Paraguai and Paulo Costa, which deals with contemporary textualities and visualities.
  • Neurogami Neurogami Avant-garage research + development.
  • Der Hess Processing meets Box2D and blob detection.
  • Bree Rubin  Used Blobscanner and Processing in his MFA thesis project.
  • Kyle Macquarrie Used Blobscanner for his HD Movement Tracking project.
  • Amnon Owed A little visual experimentation with Blobscanner, Toxiclib, Kinect and CLNUI 4 Java.
  • Yoon Chung Han & Byeong-jun Han  Realized "Virtual pottery": a virtual 3D audiovisual interface using natural hand motions.
  • Julius Klimas GSA Degree Show 2015 An interactive installation which allows users to explore the ocular world through scanning various compositions of physical objects.

The content of this website is available under GPL v3 license.
Antonio Molinaro  © 2010 2016