Archive

Archive for the ‘matlab’ Category

Running Variance

November 9, 2009 mohsenam Leave a comment

Just in mid of the code wanted to find the Running Variance, just as habit typed and found not so good links.

1/N*[sum(i=1:N-1, Xi*Xi') + X*X'] – (1/N^2)*[ sum(i=1:(N-1), Xi) + X][ sum(i=1:(N-1), Xi) + X]‘

Matlab code for calculating the running Variance is as follow

%updating Mean

newMean = (newMean*(N-1) + X)/N;

sumOfSq = sumOfSq*(N-1)  + X*X';

covMat =  (1/N)*sumOfSQ - newMean*newMean'

Externally there are few links that are worth reading

Using Many Colors in the Matlab

October 29, 2009 mohsenam Leave a comment

While using the ‘plot’ function you end up using only small number of colors. I searched online to see if there are any solutions

One is given by http://blogs.mathworks.com/pick/2008/08/15/colors-for-your-multi-line-plots/

It discusses “varycolor” file. Which is very nice for generating many colors on the run.

However I found that for plotting of the poitns and data following is much distinguishable.

It is 72 element array.

clr = [ '.r';'.b'; '.g'; '.c';'.m'; '.y';...
        '*r';'*b'; '*g'; '*c';'*m'; '*y';...
        'xr';'xb'; 'xg'; 'xc';'xm'; 'xy';...
        '+r';'+b'; '+g'; '+c';'+m'; '+y';...
        'or';'ob'; 'og'; 'oc';'om'; 'oy';...
        'dr';'db'; 'dg'; 'dc';'dm'; 'dy';...
        'sr';'sb'; 'sg'; 'sc';'sm'; 'sy';...
        'pr';'pb'; 'pg'; 'pc';'pm'; 'py';...
        'hr';'hb'; 'hg'; 'hc';'hm'; 'hy';...
        'vr';'vb'; 'vg'; 'vc';'vm'; 'vy';...
        '>r';'>b'; '>g'; '>c';'>m'; '>y';...
        '.k';'xk'; '*k'; '+k';'ok'; 'dk';...
        ];

Matlab Efficient coding

October 14, 2009 mohsenam Leave a comment

The interpreter nature of Matlab keeps me always looking for coding it fast and efficient way, squeezing as much work as we can squeeze from single statement.

Searching for something about Matlab found following blog entry

http://omar-sabih.blogspot.com/2009/05/matlab-tryin-to-code-smarter.html

It’s much cleaner and better presented version is present at http://www.sajidmc.net/bn/2009/05/efficient-matlab-coding/

Although I also have my  Matlab page http://whatevericode.wordpress.com/matlab/ but it much less rigorous

SVMToolboxes

August 19, 2009 mohsenam Leave a comment

I have till now used 2 SVM toolboxes details about them are as follow.

1) SVM Tool Box for matlab

http://theoval.sys.uea.ac.uk/svm/toolbox/

Here we can use the precalculated kernels

NOTE: while compiling it is using the

mex smosvctrain.cpp InfCache.cpp LrrCache.cpp SmoTutor.cpp -lm

The -lm option does not exist atleast in the Matlab 7.0 mex function. So remove it.

While compiling LrrCache.cpp, the compiler is giving a stupid error about the ambiguous call to floor function at line 151. Just type cast it to (long double).

2) Gun’s SVM toolbox

http://www.isis.ecs.soton.ac.uk/resources/svminfo

NOTE:  Labels should be -1,1

Categories: Matlab_Tips, SVM, matlab

OpenCv; Small Code using Erode and Dilate

February 16, 2009 mohsenam Leave a comment

Small Code that reads pbm image, convert it into 1 channel image. Erodes it, dilates it and shows them

#include <float.h>

#include <limits.h>

#include <time.h>

#include <ctype.h>

#include <iostream>

#include "BlobResult.h"

#include "blob.h"

#ifdef _EiC

#define WIN32

#endif

using namespace std;

void main(void){

IplImage *inputImage = cvLoadImage( "0584.pbm", 1 );

IplImage *gray = cvCreateImage( cvSize(inputImage->width,inputImage->height), 8, 1 );

cvCvtColor( inputImage, gray, CV_BGR2GRAY );

IplImage*img = inputImage;

inputImage = gray;

::cvReleaseImage(&img);

cvNamedWindow( "orig", 1 );

cvShowImage( "orig", inputImage );

IplImage *outputImage;

IplImage *outputImage2;

outputImage = cvCreateImage( cvSize( inputImage->width, inputImage->height ), IPL_DEPTH_8U, 1 );

outputImage2 = cvCreateImage( cvSize( inputImage->width, inputImage->height ), IPL_DEPTH_8U, 1 );

cvErode(inputImage, outputImage, 0, 1);

cvNamedWindow( "erode", 1 );

cvShowImage( "erode", outputImage );

 

cvDilate(outputImage, outputImage2, 0, 2);

cvNamedWindow( "dilate", 1 );

cvShowImage( "dilate", outputImage2 );

cvReleaseImage(&outputImage);

cvReleaseImage(&outputImage2);

cvWaitKey();

 

return;

}>

OpenCv IplImage how to clear or initialize the image to scalar

November 17, 2008 mohsenam Leave a comment

just use the cvSet

e.g if img is the IplImage object pointer with 3 channels.

cvSet(img, cvScalar(0,0,0));

will set each and every pixel to zero.

Becarefull with the  channels and cvScalar used.

connecting OpenCv with Matlab; Basic

November 13, 2008 mohsenam 9 comments

It took much of the time, but I was able to connect OpenCv with matlab.

Much thanks to the

http://www.mathworks.com/matlabcentral/fx_files/21818/1/OpenCV_And_MEX_Files_quick_guide.pdf

I took the introductory program given in the http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html

Also help from

Writing C Functions in Matlab form Jason Laska http://cnx.org/content/m12348/latest/

And modified it to run through matlab.

I named it showImageMt.cpp

So the Matlab code for compiling it was

mex showImageMt.cpp

But for that you have setup the file ‘mexopts.bat‘ as described in the above pdf . You might not able to find it by searching the matlab folder. You can find the path by running the following command in the Matlab

fullfile(prefdir,’mexopts.bat’)

The contents of the file could be see by type(fullfile(prefdir,’mexopts.bat’))

The C++ opencv code is following

////////////////////////////////////////////////////////////////////////
//
//showImageMt.cpp
//
// This is a simple, introductory OpenCV program. The program reads an
// image from a file, inverts it, and displays the result.
//
////////////////////////////////////////////////////////////////////////
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <cv.h>
#include <highgui.h>

#include "mex.h"

void justWork(IplImage *img){
int height,width,step,channels;
uchar *data;
int i,j,k;

// get the image data
height    = img->height;
width     = img->width;
step      = img->widthStep;
channels  = img->nChannels;
data      = (uchar *)img->imageData;
printf("Processing a %dx%d image with %d channels\n",height,width,channels);

// create a window
cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE);
cvMoveWindow("mainWin", 100, 100);

// invert the image
for(i=0;i<height;i++) for(j=0;j<width;j++) for(k=0;k<channels;k++)
data[i*step+j*channels+k]=255-data[i*step+j*channels+k];

// show the image
cvShowImage("mainWin", img );

// wait for a key
cvWaitKey(0);

};

void mexFunction(int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]){

if (nrhs != 0)
{
mexErrMsgTxt("One input required.");
}
else if (nlhs > 0)
{
mexErrMsgTxt("Too many output arguments");
}

IplImage* img = 0;

/*if(argc<2){
printf("Usage: main <image-file-name>\n\7");
exit(0);
}*/

char *name = "lena.jpg";
// load an image
img=cvLoadImage(name);
if(!img){
printf("Could not load image file: %s\n",name);
exit(0);
}
justWork(img);
// release the image
cvReleaseImage(&img );
return;
}

Read more…

Categories: OpenCv, basic, matlab Tags: , , ,

Principal Component Analysis (Matlab Code)

November 6, 2008 mohsenam 17 comments

function [evec, eval, meanA] = PCA(A, maxVec)

%Principal Component Analysis
%A has th
[ rows, cols] = size(A);
if(nargin < 2)
maxVec = rows;
end

maxVec = min(maxVec, rows);

meanA = mean(A,2);
A = A – meanA*ones(1, cols);
%[evec eval] = eig(A’*A);
[evec eval] = eig(A*A’);

[eval ind]  =  sort(-1*diag(eval));
%[eval ind]  =  sort(diag(eval), ”);
eval    = -1*eval(1:maxVec);
evec    = evec(:, ind(1:maxVec));
Read more…

2D Linear Box Spline; Matlab Code

April 20, 2008 mohsenam Leave a comment

%matlab code for the 2D box Spline

function val = boxSplineLinear(X,Y)

val = max(0, 1- max(abs(X)+1/sqrt(3)*abs(Y), abs(Y)));

Gaussian Masks

April 8, 2008 mohsenam Leave a comment

Gaussian Masks (2D Normal Distribution)

Just Placing Masks so that one does not have to generate again when wanting to use quickly.

For the Matlab Code  you can go to http://whatevericode.wordpress.com/2008/03/24/genrating-gaussian-mask/

Standard Deviation 1

0.0030    0.0133    0.0219    0.0133    0.0030
0.0133    0.0596    0.0983    0.0596    0.0133
0.0219    0.0983    0.1621    0.0983    0.0219
0.0133    0.0596    0.0983    0.0596    0.0133
0.0030    0.0133    0.0219    0.0133    0.0030

Standard Deviation 0.5

0.0113    0.0838    0.0113
0.0838    0.6193    0.0838
0.0113    0.0838    0.0113

Standard Deviation 0.25

0.0000    0.0003    0.0000
0.0003    0.9987    0.0003
0.0000    0.0003    0.0000