MeeGo 1.2 released

Intel headed MeeGo mobile operating system recently reached v1.2. MeeGo was initially had started off as a merger between Nokia's Maemo and Intel's Moblin. It was designed to run in Intel and ARM architectures and was targeted to various devices; from mobile phones to in-vehicle entertainment. Its a Linux - based operating system and thus that makes it an open source project.

In February, Nokia choose to make Windows Phone as default operating system for its smart phone and backed off from this project. Not many had hoped MeeGo would survive since Nokia was a important part of the project. But Intel was firm to continue development and had its own plans. 

Overview of EmguCV

One of my projects required me to work with OpenCV libraries in Windows platform. OpenCV as you all know is in C language. I wanted to give a nice interface to my project. Since the codes were in C, i initially thought of implementing it using Visual C++.

3 reasons that made me drop VC++
  • The setup to make OpenCV work with VC++ was not that simple.
  • The quality of interface developed is not very good.
  • C# and some of the other .NET compatible languages are more stable than C. I came to this conclusion because for me the code in C used to crash more than in C#.

I found C# language provided better and simpler interface development tools. Thats when i started looking for .NET wrapper for OpenCV. There are lots of open-source .NET wrappers available. Here's a clear comparison between them. Out of them i found EmguCV is the better one and decided to use it.

Emgu CV is a cross platform .Net wrapper. Allowing OpenCV functions to be called from .NET compatible languages such as C#, VB etc. The wrapper can be compiled in Mono and run on Linux / Mac OS X.
Category: , 1 comments

Use of Hough circles in OpenCV

OpenCV provides and inbuilt function to detect circles in your image. The Hough transform is a technique which can be used to isolate features of a particular shape within an image. The implementation of the circle  transform in OpenCV uses a tricky method called the Hough gradient method ( Link to Google Books ).


cvHoughCircles( ) is the function provided in OpenCV.

CvSeq* cvHoughCircles( 
        CvArr* image,         
        void*  circle_storage, 
        int    method, 
        double dp, 
        double min_dist, 
        double param1 = 100, 
        double param2 = 300, 
        int    min_radius = 0, 
        int    max_radius = 0 
      ); 

Following is a example code snippet.

How soon can Android tablets beat iPad 2?

By the post title you would come to know that I am in support of Android and a believer that Android is going to dominate the tablet and mobile market sometime soon. But how soon is the question?

Image by Rouge Crown

"iPad which currently rules the tablet PC generation, might loose its lead status as early as 2012" says  experts. With companies like Motorola, Samsung, Toshiba, LG approaching Google's Android to power their tablet PC's, Apple is going to have a tough competition.



How to setup OpenCV 2.2 in Codeblocks


The thing with OpenCV libraries is that the method to set it up with codeblocks is different for every newer version! The last tutorial I posted was for Setting up OpenCV 2.0 with codeblocks. In this post I would follow the similar method and try  to be as clear as possible.
I will be using codeblocks 10.05 and OpenCV 2.2 on Windows 7 operating system. MinGW compiler ( The GNU GCC compiler ) in the codeblocks. So first check if your code blocks has this compiler installed. If no, then download one from the link below.



Download the latest version of codeblocks and OpenCV from the below links.
Code Blocks                  OpenCV 2.2

Follow the normal installation for code blocks. I couple of things to note during OpenCV installation is that it should be installed in the C:\ and  the environment variable PATH should be set. You would be prompted during the installation.

Red Eclipse - Free, Open source FPS Game

Is a single player and multi player first-person ego-shooter. It intends to provide Quake 3 Arena style of first person shooter!




Motorola's own Mobile OS??

Recently rumors have started that Motorola is developing its own Mobile Operating System and is on a hiring spree for Mobile app developers. Motorola has had huge success by adopting Android OS for their for their mobile devices. But Motorola CEO Sanjay Jha is of the opinion that its important to own one.

Android's success mainly depends on the kind of ecosystem it provides. Android market and Android developers community have a huge role to play in this. So survival of Motorola's Mobile OS depends mainly on the kind of application support it can provide. Its a tough competition with Android and iOS dominating with huge success.

Samsung had tried to do something like this by introducing Bada OS. It hasn't had that much success but its doing pretty well with the low end touch screen models. Samsung also recently was in a hunt for Symbian mobile app developers planned to port Symbian Apps to Bada.


Motorola reportedly have acquired a Mobile platform company named Azingo. Its to a Linux based mobile operating system and is based on web standards for use on touch screen devices. It uses web runtimes for widgets. 

Open source Registry Cleaner and a Defragmenter

I was just reading through some articles to keep your system to the best of its performance and one point mentioned in all of them was to defragment your system and to clean the registry. So here are some open source softwares I found for this purpose.

Little Registry cleaner it is, the alternative open source windows registry cleaner.  Small in size, neat and easy to run. Basically removes obsolete and unwanted items that build up in the registry over time. Before cleaning the registry it also creates a backup of all your registry information  so that you can roll back if the registry cleaning causes some problem. Usually there wont be a need for it, but its just a precaution for those very few instances when something might go wrong.

Scan in progress

How to convert IplImage to a matrix in OpenCV


Getting a digital image into numbers can be very handy for your image processing. In this post i will brief just that. I am a beginner in OpenCV and i found it very difficult to find material to do this. I was looking for storing a 8-bit image, 3 channel image into a 3D matrix. That's the method i am going to explain in this post.

Before i get on with the implementation, i would like to brief about the matrix structure that we are going to use. Its a 3D matrix; the row and column values represent the respective X and Y co-ordinates of the image. That is each value in the matrix represent a pixel. I am considering a 3 channeled image, so each pixel will have 3 channel values i.e for BGR. For more info on the matrix basic you can refer this link.

Following is the method I used..

First load a 8-Bit image with 3 channels RGB and create define a matrix structure accordingly.

          IplImage *img = cvLoadImage( "cataract.jpg");
    CvMat *mat = cvCreateMat(img->height,img->width,CV_32FC3 );

Next use the cvConvert function. cvConvert is a Macro provided by OpenCV which is the same as cvConvertScale() but is conventionally used when the scale and shift arguments will be let at their default values. 

           cvConvert( img, mat );

That does the work! Now your IplImage is stored into the matrix. You can retrieve the matrix values just by specifying the corresponding X,Y co-ordinate values in the cvGet2D function. I have used a for loop to print the RGB values of a small portion of the image.


        for(int i=0;i<10;i++)
        {
          for(int j=0;j<10;j++)
            {
               CvScalar scal = cvGet2D( mat,j,i);
               printf( "(%.f,%.f,%.f)  ",scal.val[0], scal.val[1], scal.val[2] );
            }
          printf("\n");
        }

cvScalar function is used to define a variable that stores the RBG value retrieved. You can check the OpenCV Reference links for some more tutorial links on OpenCV.

Please leave a comment so that know if this post is helpful or not. Also mention if any changes is required. It could help others :)



OpenCV Tutorial References


OpenCV is a well defined set of library function used in the field of Computer Vision.

It is a computer vision library originally developed by Intel but now supported by Willow Garage.The library is open source, cross platform mainly focusing on real time image processing.

Example applications of the OpenCV library are Human-Computer Interaction (HCI); Object Identification, Segmentation and Recognition; Face Recognition; Gesture Recognition; Motion Tracking, Ego Motion, Motion Understanding; Structure From Motion (SFM); Stereo and Multi-Camera Calibration and Depth Computation; Mobile Robotics. 

OpenCV library provides very well advanced functions for image storage, manipulation and object identification making things simpler. Eg: Just 2 simple functions cvHaarDetectObjects () and cvGetSeqElem () are sufficient to perform face detection!

I have went through many web links for my initial preparations on OpenCV. There are many tutorials out there, but i manage to pick a few of the better ones and thought of posting them here. I would brief on the web links so that you can choose your tutorial accordingly.

Web Links
  1.  Tutorial by Noah Kuntz
    • I found this OpenCV tutorial best for a beginner. He has touched upon all the details along with sample programs. 
    • He has categorized the tutorial into 11 segments and each segment is explained very well.
    • In case you are not through with C programming language there is a tutorial for that also.
    • Click here for the tutorial
     2.   Tutorial on Sourceforge.net
    • This tutorial makes use of Flowdesigner plug in along with OpenCV. You can download the plugin from here as its open source.
    • Tutorial provides a detailed explanation for all the basic library functions.
    • Best part is that the library functions are explained along with Image samples. That can really help in better understanding of the concept. 
    • Click here for the tutorial

Non Adobe pdf readers

Adobe reader has been the favorite pdf reader for sometime now. That's mainly because its free! But nowadays there are many free pdf readers which can actually work out better for you.

I personally did not like Adobe reader because its a heavy application and it comes with a  lot of additional services. Its kind of resource hungry and even adds a browser plug in which was seriously slowing down my browsing speed! Its a bit too much just to read a pdf isn't it?! That's when i decided to look for other pdf readers. There are so many open source free pdf readers which are a lot lighter and better. First i would go through  some of the open source pdf readers and later some of the freewares.



Evince


This is a simple document viewer. It can view multiple document formats like pdf, postscript, djvu, tiff, dvi and many others. 

It provides search, thumbnail view and page indexing features.This is an open source tool.




Pinguy OS


Pinguy OS.. The name sounds weird but the OS seems to gaining popularity!

Pinguy's official web site says "Pinguy OS is an out-of-the-box working operating system for everyone, not just geeks"

This Linux distro is built upon the Ubuntu's latest version 10.10 and claims to add new features making it user friendly.


I found this OS interesting because of its interesting looks and apps it provides. It should provide a good starting experience for Linux beginners.

How working on an open source project helped me..

It all started a year ago in an internship program in Bangalore. The program intended to introduce us to open source tools and later to make some contribution to the open source world.

Initially i prepared myself with basic web application tools like tomcat server and mysql. Also i got more familiar with Linux operating system which supports the major chunk of open source software's. Mifos was the first open source application i worked on.



Multi core processors - A thought

Clamwin Antivirus - Update

Looking for an open source antivirus..? Clamwin antivirus is the best open source antivirus software available right now.

Clamwin antivirus is a free software available for all versions of Windows operating system. Yes it does support Windows 7.

Good thing about Clamwin when compared to other open source anti virus is that it has been regularly getting updates. This is mainly because of its 600,000 odd users. You can also pitch in with your support for the development of this tool. You can download its source code from their main site.


Download