void CameraWorker::makeBlobImage(IplImage *src, IplImage *dst)
{
    if(!src || !dst)
    {
        printf("src/dst is empty.\n");
        return;
    }
    if(src->height != dst->height || src->width != dst->width)
    {
        printf("src - blobImage sizes dont match!\n");
        return;
    }
    lutMutex->lock();
    for (int i = 0; i < src->height; ++i)
    {
        for (int j = 0; j < src->width; ++j)
        {
            uchar *pin = &IMGDATA(src, i, j, 0);
            int b = *pin;
            int g = *(pin+1);
            int r = *(pin+2);
            IMGDATA(dst, i, j, 0) = lut->lookup(b, g, r);
        }
    }
    lutMutex->unlock();
}
Example #2
0
float covariance(const IplImage* left,const IplImage* right,int il,int jl,int ir,int jr,const int blocksize)
{
	float cov;
	float exy=0,ex=0,ey=0;
	int i,j;
	for(i=il;i<il+blocksize;i++)
	{
		for(j=jl;j<jl+blocksize;j++)
		{
			ex=ex+abs(*IMGDATA(left,i,j,0));
		}
	}
	ex=ex/(blocksize*blocksize);
	for(i=ir;i<ir+blocksize;i++)
	{
		for(j=jr;j<jr+blocksize;j++)
		{
			ey=ey+abs(*IMGDATA(right,i,j,0));
		}
	}
	ey=ey/(blocksize*blocksize);
	for(i=0;i<blocksize;i++)
	{
		for(j=0;j<blocksize;j++)
		{
			exy=exy+abs(*IMGDATA(left,il+i,jl+j,0))*abs(*IMGDATA(right,ir+i,jr+j,0));
		}
	}
	exy=exy/(blocksize*blocksize);
	cov=exy-ex*ey;
	//printf("\n COVARIANCE ~ %f",cov);
	return cov;
}
void CameraWorker::colorImage(IplImage *in, IplImage *out)
{
    if(!in)
    {
        printf("input is empty.\n");
        return;
    }
    if(in->height != out->height || in->width != out->width || in->nChannels != out->nChannels)
    {
        printf("input - output sizes dont match!\n");
        return;
    }
    lutMutex->lock();
    for (int i = 0; i < in->height; ++i)
    {
        for (int j = 0; j < in->width; ++j)
        {
            uchar *pin = &IMGDATA(in, i, j, 0);
            int b = *pin;
            int g = *(pin+1);
            int r = *(pin+2);
            CvScalar cs = lut->getScalar(lut->lookup(b, g, r));
            if(lut->lookup(b, g, r) != UNDEF)
            {
                  uchar *pout = &IMGDATA(out, i, j, 0);
                  *pout = cs.val[0];
                  *(pout+1)=cs.val[1];
                  *(pout+2)=cs.val[2];
            }
        }
    }
    lutMutex->unlock();
}
void CameraWorker::onMouseClicked(int x, int y)//WARNING: calibration now done on displayframe directly?
{
    if(isArenaCalib)
        return;
    if(!frame)
        return;
    if(x >= frame->width || y>=frame->height || x<0 || y<0)
        return;
    int b = IMGDATA(calibFrame, y, x, 0);
    int g = IMGDATA(calibFrame, y, x, 1);
    int r = IMGDATA(calibFrame, y, x, 2);
    emit markBGR(b, g, r);
}
Example #5
0
int sumofsquaredaddition(IplImage* left,IplImage* right,int il,int jl,int ir,int jr,int blocksize)
{
	int i,j;
	int sosa=0;
	int sd;
	for(i=0;i<blocksize;i++)
	{
		for(j=0;j<blocksize;j++)
		{
			sd=abs(*IMGDATA(left,il+i,jl+j,0))+abs(*IMGDATA(right,ir+i,jr+j,0));
			sosa=sosa+abs(sd);
		}
	}
	return sosa;	
}
Example #6
0
float sumofsquaredifference(const IplImage* left,const IplImage* right,int il,int jl,int ir,int jr,const int blocksize)
{
	int i,j;
	float sosd=0;
	float sd;
	float sum=0;
	for(i=0;i<blocksize;i++)
	{
		for(j=0;j<blocksize;j++)
		{
			sd=abs(*IMGDATA(left,il+i,jl+j,0))-abs(*IMGDATA(right,ir+i,jr+j,0));
			sosd=sosd+sd*sd;
			sum=sum+abs(*IMGDATA(left,il+i,jl+j,0));
		}
	}
	return sosd/sum*sum;
}
Example #7
0
float variance(const IplImage* in,int il,int jl,const int blocksize)
{
	float exx=0;
	float ex=0;
	float var=0;
	int i,j;
	for(i=il;i<il+blocksize;i++)
	{
		for(j=jl;j<jl+blocksize;j++)
		{
			exx=exx+abs(*IMGDATA(in,i,j,0))*abs(*IMGDATA(in,i,j,0));
			ex=ex+abs(*IMGDATA(in,i,j,0));
		}
	}
	ex=ex/(blocksize*blocksize);
	exx=exx/(blocksize*blocksize);
	var=exx-ex*ex;
	var=abs(var);
	printf("\n       VARIANCE ~ %f",var);
	return var;
}
Example #8
0
float mean(const IplImage* in,const int iwindowstart,const int jwindowstart,const int blocksize)
{
	int i,j;
	float mean=0;
	for(i=iwindowstart;i<(blocksize+iwindowstart);i++)
	{
		for(j=jwindowstart;j<(blocksize+jwindowstart);j++)
		{
			mean=mean+abs(*IMGDATA(in,i,j,0));
		}
	}
	mean=mean/(blocksize*blocksize);
	return mean;
}
Example #9
0
float newcorr(const IplImage *left,const IplImage* right,const int il,const int jl,const int ir,const int jr ,const int blocksize)
{
	float corr=0;
	int i,j;
	float mx,my;
	float vx,vy;
	mx=mean(left,il,jl,blocksize);
	my=mean(right,ir,jr,blocksize);
	vx=var(left,il,jl,blocksize);
	vy=var(right,ir,jr,blocksize);
	for(i=0;i<blocksize;i++)
	{
		for(j=0;j<blocksize;j++)
		{
			corr=corr+(abs(*IMGDATA(left,il+i,jl+j,0))-mx)*(abs(*IMGDATA(right,ir+i,jr+j,0))-my);
		}
	}
	//printf("\n CORRELATON ~ %f, VARIANCE ~ %f ,VARIANCE ~ %f",corr,vx,vy );
	corr=corr/(sqrt(vx)*sqrt(vy));
	corr=corr/(blocksize*blocksize);
	//printf("\n CORRELATON ~ %f",corr );
	return corr;
}
Example #10
0
void initImage(IplImage* in,int k)
{
    int w=in->width;
    int h=in->height;
    int i,j,l;
    for(i=0;i<w;i++)
    {
        for(j=0;j<h;j++)
        {
        	for(l=0;l<in->nChannels;l++)
        	{
            	*IMGDATA(in,i,j,l)=k;
            }
        }
    }
}
Example #11
0
void assignDisparity(IplImage* in,int il,int jl,int blocksize,int value,int channel)
{
	int i,j;
	
	value=value*255/in->width;
	//printf("\nPassed ij~%d jl~%d Value ~ %d",il,jl,value);
	for(i=il;i<il+blocksize;i++)
	{
		for(j=jl;j<jl+blocksize;j++)
		{
			//*IMGDATA(in,il+i,jl+j,channel)=value*255/in->width;
			*IMGDATA(in,i,j,channel)=value;

		}
	}
}
Example #12
0
float var(const IplImage*in,const int iwindowstart,const int jwindowstart,const int blocksize)
{
	float vari=0;
	int i,j;
	float temp;
	float m;
	m=mean(in,iwindowstart,jwindowstart,blocksize);
	for(i=iwindowstart;i<(blocksize+iwindowstart);i++)
	{
		for(j=jwindowstart;j<(blocksize+jwindowstart);j++)
		{
			temp=(abs(*IMGDATA(in,i,j,0))-m);
			vari=vari+temp*temp;
		}
	}
	return vari;
}