예제 #1
0
//not working
int PlotComparagram(FILE* im1, FILE* im2){
	printf("step - in PlotComparagram\n");
	// my comparaplot dimentions will always be from 0 to 255
	// on both axis
	int w, h;
	
	unsigned char ch1, ch2;
	unsigned char comp[255][255];
	
	Get_w_h(im1, &w, &h);
	SkipLines(&im1, 1);
	SkipLines(&im2, 4);
	printf("width: %d, height: %d\n", w, h);
	
	int i1, i2, k1, k2;
	for(i1 = 0; i1 < 256; i1 ++){
	printf("i1\n");
		for(i2 = 0; i2 < 256; i2 ++){
			for(k1 = 0; k1 < w; k1 ++){
				for(k2 = 0; k2 < h; k2 ++){
				
					ch1 = fgetc(im1);
					ch2 = fgetc(im2);
					
					if(ch1 == i1 && ch2 == i2)
						comp[i1][i2] ++;
				
					if(((i1+1) % 1000) == 0)
						printf("char: %c", comp[i1][i2]);
				}
			}
		}
	}
	
	printf("step - before drawing comparagraph\n");
	FILE* nf;
	int a, b;
	nf = fopen("comparagraph.pgm", "w");
	fprintf(nf, "%s\n%d\n%d\n%d\n", "P5", 255, 255, 255);
	
		for(a = 0; a < 256; a ++){
			for(b = 0; b < 256; b++){
					fprintf(nf, "%c", comp[a][b]);
			
			}
		}
	fclose(nf);
}
예제 #2
0
void SearchEdge() {
	int x = 0;
	int z = 0;
	int tmp;
	int tmp1, tmp2;
	int LorR = 0;
	int buffer[160];
	int F_continueSearch[2] = { 1, 1 };
	int F_maybeCrossRoad[2] = { 0, 0 };
	int F_reborn = 0;

	uchar buffer_startLine[80][2];
	int n_startLine = 1;
	int C_startLine = 0;
	int startLineX[2];

	Pr_SelectFIFO = ~Pr_SelectFIFO;
	al422b_SelectFIFO(Pr_SelectFIFO);
	al422b_Reset();

	// initial parameters --->>>
	F_startLine = 0;

	edgeStartZ[left] = 0;
	edgeStartZ[right] = 0;

	C_activePoint[left] = 0;
	C_activePoint[right] = 0;

	searchRange[right].start = rightSearchRange;
	searchRange[right].end = midSearchRange;
	searchRange[left].start = midSearchRange;
	searchRange[left].end = leftSearchRange;

	SkipLines(skipLines-1);

	SkipPixels(40);
	for (x = 0; x < 80; x++)
		buffer_startLine[x][0] = ReadPixel();
	SkipPixels(40);

	for (z = 0; z < 30; z++) {

		if(z<8)
		{
			SkipLines(((29 - z) / skiplineControl) - 1);
			//ÆðÅÜÏßËÑË÷
			startLineX[left] = 79;
			startLineX[right] = 0;

			tmp1 = n_startLine % 2;
			tmp2 = (n_startLine - 1) % 2;

			SkipPixels(40);
			for(x=0;x<80;x++)buffer_startLine[x][tmp1] = ReadPixel();
			SkipPixels(40);

			C_startLine = 0;
			for(x=0;x<50;x++)
			{

				if((ABS(buffer_startLine[x][tmp1] - buffer_startLine[x][tmp2])) > (thresholdEdge+10))
				{
					C_startLine ++;
				}
				else
				{
					if(C_startLine>5)
					{
						startLineX[right] = x;
						break;
					}
					else C_startLine = 0;
				}
			}
			
			C_startLine = 0;
			for(x=79;x>50;x--)
			{
				if((ABS(buffer_startLine[x][tmp1] - buffer_startLine[x][tmp2])) > (thresholdEdge+10))
				{
					C_startLine ++;
				}
				else
				{
					
					if(C_startLine>5)
					{
						startLineX[left] = x;
						break;
					}
					else C_startLine = 0;
				}

			}

			if((ABS(startLineX[left] - startLineX[right])) < (50))
					F_startLine = 1;
			
			n_startLine ++;
		}
		else
		{
			SkipLines((29 - z) / skiplineControl);
		}

		if(searchRange[right].end > searchRange[left].start)
		{
			searchRange[left].start = (searchRange[right].end + searchRange[left].start) / 2;
			searchRange[right].end = searchRange[left].start;
		}

		tmp = searchRange[right].start;
		SkipPixels(tmp);
		for(x=searchRange[right].start;x<searchRange[right].end;x++)buffer[x] = ReadPixel();
		tmp = searchRange[left].start - searchRange[right].end;
		SkipPixels(tmp);
		for(x=searchRange[left].start;x<searchRange[left].end;x++)buffer[x] = ReadPixel();
		tmp = 160 - searchRange[left].end;
		SkipPixels(tmp);

		//right
		LorR = right;
		if(F_continueSearch[LorR] == 1)
		{
			F_continueSearch[LorR] = 0;
			for(x=(searchRange[LorR].end-1-2);x>=searchRange[LorR].start;x--)
			{
				if(Gradient(buffer[x+2] ,buffer[x]) > thresholdEdge)
				{
					if(F_reborn == 1)
					edgeStartZ[LorR] = 10;
					else
					{
						if(z>1)//ÅжÏÕÛ½Ç
						{
							if((ABS((x - edgePoint[LorR][z-1].x) - (edgePoint[LorR][z-1].x - edgePoint[LorR][z-2].x)))> 5)
							{
								break;
							}
						}
					}
					edgePoint[LorR][z].x = x;
					edgePoint[LorR][z].z = z;
					SetSearchRange(LorR, x, defaultRange);
					F_continueSearch[LorR] = 1;
					C_activePoint[LorR] ++;

					break;
				}
			}
		}

		//left
		LorR = left;
		if(F_continueSearch[LorR] == 1)
		{
			F_continueSearch[LorR] = 0;
			for(x=searchRange[LorR].start+2;x<searchRange[LorR].end;x++)
			{
				if(Gradient(buffer[x-2] ,buffer[x]) > thresholdEdge)
				{
					if(F_reborn == 1)
					edgeStartZ[LorR] = 10;
					else
					{
						if(z>1)//ÅжÏÕÛ½Ç
						{
							if((ABS((x - edgePoint[LorR][z-1].x) - (edgePoint[LorR][z-1].x - edgePoint[LorR][z-2].x)))> 5)
							{
								break;
							}
						}
					}
					edgePoint[LorR][z].x = x;
					edgePoint[LorR][z].z = z;
					SetSearchRange(LorR, x, defaultRange);
					F_continueSearch[LorR] = 1;
					C_activePoint[LorR] ++;
					break;
				}
			}
		}

		switch(z)
		{
			case 2://Í·Á½Ðж¼Ã»ÓÐ×¥µ½±ßÑصÄÇé¿ö Åж¨
			if((C_activePoint[left] + C_activePoint[right]) < 3)
			F_reborn = 1;
			break;

			case 9://¡°¸´»î°É,ÎÒµÄÓÂÊ¿¡±
			if(F_reborn == 1)
			{
				F_continueSearch[left] = 1;
				F_continueSearch[right] = 1;

				C_activePoint[left] = 0;
				C_activePoint[right] = 0;

				searchRange[right].start = 30;
				searchRange[right].end = 79;
				searchRange[left].start = 79;
				searchRange[left].end = 130;

			}
			break;

			case 10:
			if((C_activePoint[left]+ C_activePoint[right]) < 2)goto myEnd;
			break;
		}

	}

	myEnd:

	if ((C_activePoint[left] + C_activePoint[right]) < 8) {
		F_crossRoad = 1;
	}
	if ((C_activePoint[left] + C_activePoint[right]) > 20) {
		F_crossRoad = 0;
	}
	for (LorR = 0; LorR < 2; LorR++) {
		if(C_activePoint[LorR] == 0)C_activePoint[LorR] = 1;
		crctr_BTX[LorR].tail = edgePoint[LorR][(C_activePoint[LorR]-1) + edgeStartZ[LorR]];
		crctr_BTX[LorR].head = edgePoint[LorR][edgeStartZ[LorR]];
		crctr_BTX[LorR].inflection = GetInflectionPoint(LorR);

		crctr_BTX[LorR].k_hi =KPP(crctr_BTX[LorR].inflection,crctr_BTX[LorR].head);
		crctr_BTX[LorR].k_it =KPP(crctr_BTX[LorR].tail,crctr_BTX[LorR].inflection);
		crctr_BTX[LorR].k_ht =KPP(crctr_BTX[LorR].tail,crctr_BTX[LorR].head);

		crctr_BTX[LorR].R_hit = crctr_BTX[LorR].k_it- crctr_BTX[LorR].k_hi;
	}

}
예제 #3
0
void HandlerPPM (char *file1, char *file2, char *file3){
	
	/* in PPM format, there are tree bits per pixel, each bit
		corresponding to the levels of RGB in the pixel */
	printf("step - .ppm file\n");
	
	FILE *fp1;//image 1
	FILE *fp2;//image 2
	FILE *fp3;//image 3
	
	FILE *ceri1;//image 1
	FILE *ceri2;//image 2
	FILE *ceri3;//image 3
	
	FILE *rend;//final HDR rendered file
	
	int width;
	int height;
		
	fp1 = fopen(file1, "rb");
	fp2 = fopen(file2, "rb");
	fp3 = fopen(file3, "rb");
	
	/* Get width and height from first image */
	Get_w_h(fp1, &width, &height);
	/* Skip lines so we are ready to read */
	SkipLines(&fp1, 1);
	SkipLines(&fp2, 4);
	SkipLines(&fp3, 4);
	
	
	//write to rendered file
	rend = fopen("rendered.ppm", "w");
	fprintf(rend, "%s\n%d\n%d\n%d\n", "P6", width, height, 255);
	
	ceri1 = fopen("cert1.ppm", "w");
	fprintf(ceri1, "%s\n%d\n%d\n%d\n", "P6", width, height, 255);
	
	ceri2 = fopen("cert2.ppm", "w");
	fprintf(ceri2, "%s\n%d\n%d\n%d\n", "P6", width, height, 255);
	
	ceri3 = fopen("cert3.ppm", "w");
	fprintf(ceri3, "%s\n%d\n%d\n%d\n", "P6", width, height, 255);
		
	int size;
	float ku, km, ko; //exposures for the three images
	unsigned char rendR, rendG, rendB;
	ku = 1;
	km = 4;
	ko = 16;
	
	unsigned char bR1, bR2, bR3;
	unsigned char bG1, bG2, bG3;
	unsigned char bB1, bB2, bB3;
	
	unsigned char c1wR, c2wR, c3wR;
	unsigned char c1wG, c2wG, c3wG;
	unsigned char c1wB, c2wB, c3wB;

	printf("step - writing channels\n");
	for(size = width * height; size > 0; size --){
	
		/* Red Channel */
		bR1 = fgetc(fp1);//median
		bR2 = fgetc(fp2);//under
		bR3 = fgetc(fp3);//over
		rendR = DrawChannel(bR1, bR2, bR3, km, ku, ko, &c1wR, &c2wR, &c3wR);
		
		bG1 = fgetc(fp1);
		bG2 = fgetc(fp2);
		bG3 = fgetc(fp3);
		rendG = DrawChannel(bG1, bG2, bG3, km, ku, ko, &c1wG, &c2wG, &c3wG);
		
		bB1 = fgetc(fp1);
		bB2 = fgetc(fp2);
		bB3 = fgetc(fp3);
		rendB = DrawChannel(bB1, bB2, bB3, km, ku, ko, &c1wB, &c2wB, &c3wB);

		/* write rendered file */
		fprintf(rend, "%c", rendR);
		fprintf(rend, "%c", rendG);
		fprintf(rend, "%c", rendB);
		
		/* write certainty c1 */
		fprintf(ceri1, "%c", c1wR);
		fprintf(ceri1, "%c", c1wG);
		fprintf(ceri1, "%c", c1wB);
	
		/* write certainty c1 */
		fprintf(ceri2, "%c", c2wR);
		fprintf(ceri2, "%c", c2wG);
		fprintf(ceri2, "%c", c2wB);
		
		/* write certainty c1 */
		fprintf(ceri3, "%c", c3wR);
		fprintf(ceri3, "%c", c3wG);
		fprintf(ceri3, "%c", c3wB);
	}
	
	fclose(fp1);
	fclose(fp2);
	fclose(fp3);
	
	fclose(rend);
	
	fclose(ceri1);
	fclose(ceri2);
	fclose(ceri3);
	
	
	printf("step - closed files\n");
}
예제 #4
0
파일: nn.cpp 프로젝트: alongwithyou/PhnRec
bool NeuralNet::GetInfo(char *pData, int *pNInp, int *pNHid, int *pNOut)
{
   // input to hidden matrix
   char *pt = pData;
   pt = SkipSpaces(pt);
   if(strncmp(pt, "weigvec", strlen("weigvec")) != 0)
   {
      return false;
   }
   pt += strlen("weigvec");
   pt = SkipSpaces(pt);
   int n_inp_hid;
   if(!GetIntValue(pt, &n_inp_hid))
   {
      return false;
   }    
   pt = SkipLines(pt, n_inp_hid + 1);  // goto next line and skip n_inp_hid lines
   if(pt == 0)
   {
      return false;
   }

   // hidden to output matrix
   if(strncmp(pt, "weigvec", strlen("weigvec")) != 0)
   {
      return false;
   }
   pt += strlen("weigvec");
   pt = SkipSpaces(pt);
   int n_hid_out;
   if(!GetIntValue(pt, &n_hid_out))
   {
      return false;
   }    
   pt = SkipLines(pt, n_hid_out + 1);  // goto next line and skip n_hid_out lines
   if(pt == 0)
   {
      return false;
   }
    
   // hidden biases
   if(strncmp(pt, "biasvec", strlen("biasvec")) != 0)
   {
      return false;
   }
   pt += strlen("biasvec");   
   pt = SkipSpaces(pt);
   int n_biases_hid;
   if(sscanf(pt, "%d", &n_biases_hid) != 1)
   {
      return false;
   }    
   pt = SkipLines(pt, n_biases_hid + 1);  // goto next line and skip n_biases_hid lines
   if(pt == 0)
   {
      return false;
   }

   // output biases 
   if(strncmp(pt, "biasvec", strlen("biasvec")) != 0)
   {
      return false;
   }
   pt += strlen("biasvec");   
   pt = SkipSpaces(pt);
   int n_biases_out;
   if(sscanf(pt, "%d", &n_biases_out) != 1)
   {
      return false;
   }    
   pt = SkipLines(pt, n_biases_out + 1);  // goto next line and skip n_biases_out lines
   if(pt == 0)
   {
      return false;
   }    

   *pNOut = n_biases_out;
   *pNHid = n_biases_hid;
   *pNInp = n_inp_hid / n_biases_hid;

   return true;
}