Ejemplo n.º 1
0
TSMWarning *initNITF20ISD (NITF_2_0_ISD *isd, std::string fname)
  throw (TSMError)
{
  std::string ftype ("NITF20");
  TSMWarning *warn = NULL;

  try {
    fillBuff(fname);
  } catch (TSMError err) {
    switch (err.getError())
    { 
      case TSMError::FILE_READ:
	std::cerr << "Unable to open " << ftype << fname << '\n';
	break;
      case TSMError::MEMORY:
	std::cerr << "Unable to Allocate memory for " 
		  << ftype << " ISD\n";
	break;
      case TSMError::ISD_NOT_SUPPORTED:
	std::cerr << "Failure parsing " 
		  << ftype << " file " 
		  << fname << '\n';
	break;
      default:
	break;
    }
    return NULL;
  }
  try 
  {
    warn = parseFile(isd);
  } 
  catch (TSMError err) 
  {
    switch (err.getError())
    { 
		case TSMError::FILE_READ:
			std::cerr << "Unable to open " << ftype << " file " << fname << '\n';
			break;
		case TSMError::MEMORY:
			std::cerr << "Unable to Allocate memory for " << ftype << " ISD\n";
			break;
		case TSMError::ISD_NOT_SUPPORTED:
			std::cerr << "Failure parsing " << ftype << " file " << fname << '\n';
			break;
		default:
			break;
    }
  }
  if (warn->getMessage().length() > 0) 
    return warn;
  else
    return NULL;
};
Ejemplo n.º 2
0
int main (int argc, char *argv[])
{
	FILE 	*inAFile, *inBFile, *inMaskFile;
	FILE	*outAFile, *outBFile;
	uint16_t   	bufA[BUFF_SIZE];
	uint16_t 	bufB[BUFF_SIZE];
	uint16_t	bufMask[BUFF_SIZE];
	int 	histoA[DSP_RANGE];
	int 	histoB[DSP_RANGE];
	int 	maskedHistoA[DSP_RANGE];
	int 	maskedHistoB[DSP_RANGE]; //negative of A mask
	int 	count = 0;
	int 	maxA = 0;
	int 	maxB = 0;
	int 	maskedMaxA = 0;
	int 	maskedMaxB = 0;
	int 	minA = 60000;
	int 	minB = 60000;
	int 	maskedMinA = 60000;
	int 	maskedMinB = 60000;
	int 	blackPointA = 0;
	int 	blackPointB = 0;
	int 	whitePointA = 0;
	int 	whitePointB = 0;
	int 	clippedBlackA = 0;
	int 	clippedWhiteA = 0;
	int 	clippedBlackB = 0;
	int 	clippedWhiteB = 0;
	float 	averageA = 0;
	float 	maskedAverageA = 0;
	float 	maskedAverageB = 0;
	float 	stdDevA = 0;
	float 	maskedStdDevA = 0;
	float 	maskedStdDevB = 0;
	float 	averageB = 0;
	float 	stdDevB = 0;
	int	offsetA = OFFSET_A;
	int	offsetB = OFFSET_B;
	int 	maskedOffsetA = MASKED_OFFSET_A;
	int 	maskedOffsetB = MASKED_OFFSET_B;
	float	sigmaA = SIGMA_A;
	float	sigmaB = SIGMA_B;
	float	maskedSigmaA = MASKED_SIGMA_A;
	float	maskedSigmaB = MASKED_SIGMA_B;


	if (argc != 4)	{
		printf("\nError: need infile and outfile");
		exit(1);
	}
	
	outAFile = fopen("outA.dat", "w");
	if (outAFile == 0) {
		printf("\nError: could not open shit");
		exit (1);
	}
	outBFile = fopen("outB.dat", "w");
	if (outBFile == 0) {
		printf("\nError: could not open shit");
		exit (1);
	}
	//inAFile = fopen("rawB.dat", "r");

	inAFile = fopen(argv[1], "r");
	if (inAFile == 0)	{
		printf("\nError: could not open inAfile");
		exit(1);
	}
printf("\n opening the file");	
	
	inBFile = fopen(argv[2], "r");
	if (inBFile == 0)	{
		printf("\nError: could not open inBfile");
		exit(1);
	}
	
//printf("\n opening the last file");	
	inMaskFile = fopen(argv[3], "r");
//printf("\n opened it ");	

	if (inMaskFile == 0)	{
		printf("\nError: could not open outfile");
		exit(1);
	}
	printf("\ngot the right arguments all files opened");
	

//	int k = 0;
	//while ((count = fillBuff(bufA, inAFile)) == fillBuff(bufB, inBFile) &&
	//		(count == fillBuff(bufMask, inMaskFile)) &&
	//	       count != 0)
///////////////////////////////////////////////////dddddddddddddddddddd

printf("\nstarting hard shit");
	clearHisto(histoA);
	clearHisto(histoB);
	clearHisto(maskedHistoA);
	clearHisto(maskedHistoB);
	while (((count = fillBuff(bufA, inAFile))  != 0 ) &&
			(fillBuff(bufMask, inMaskFile) != 0))
	//while ((count = fillBuff(bufA, inAFile)) == fillBuff(bufB, inBFile) &&
	//		(count == fillBuff(bufMask, inMaskFile)) &&
	//	       count != 0)
	{	
		makeHisto (bufA, histoA, &maxA, &minA);
		makeMaskedHisto(bufA, bufMask, 
				maskedHistoA, &maskedMaxA, &maskedMinA);

			
	}
	rewind(inMaskFile);
	while (((count = fillBuff(bufB, inBFile))  != 0 ) &&
			(fillBuff(bufMask, inMaskFile) != 0))
	//while ((count = fillBuff(bufA, inAFile)) == fillBuff(bufB, inBFile) &&
	//		(count == fillBuff(bufMask, inMaskFile)) &&
	//	       count != 0)
	{	
		makeHisto (bufB, histoB, &maxB, &minB);
		negateMask(bufMask); //mask fire
		makeMaskedHisto(bufB, bufMask, 
				maskedHistoB, &maskedMaxB, &maskedMinB);
		//makeHisto (bufB, histoB, &maxB, &minB);
		//printf("\nread = %d", bufA[2]);
		//printf("\n maxA = %d, minA = %d", maxA, minA);
		//makeHisto (bufB, histoB, &maxB, &minB);
		//makeMaskedHisto(bufA, bufMask, maskedHistoA, &maxA, &minA);
		//makeMaskedHisto(bufB, bufMask, maskedHistoB, &maxB, &minB);
	
	}
	count = 0;
	int i;
	for (i=0;i<DSP_RANGE;i++)
		count += histoA[i];
	printf("\nread %d pixels", count);
	averageA = averageHisto(histoA);
	maskedAverageA = averageHisto(maskedHistoA);
	maskedAverageB = averageHisto(maskedHistoB);
	averageB = averageHisto(histoB);
	stdDevA = stdDev(histoA, averageA);
	maskedStdDevA = stdDev(maskedHistoA, maskedAverageA);
	maskedStdDevB = stdDev(maskedHistoB, maskedAverageB);
	stdDevB = stdDev(histoB, averageB);
	printf("\nmaxA = %d minA = %d", maxA, minA);
	printf("\naverage A = %f", averageA);
	printf("\nstddev A = %f, sigmaA = %f, offsetA = %d",
		       	stdDevA, sigmaA, offsetA);
	printf("\nmaskedmaxA = %d maskedminA = %d", maskedMaxA, maskedMinA);
	printf("\nmasked average A = %f", maskedAverageA);
	printf("\nsmasked tddev A = %f, masked sigma = %f, masked offset = %d",
		       	maskedStdDevA,	maskedSigmaA, maskedOffsetA);
	printf("\nmaxB = %d minB = %d", maxB, minB);
	printf("\naverage B = %f", averageB);
	printf("\nstddev B = %f, sigmab = %f, offsetb = %d",
		       	stdDevB, sigmaB, offsetB);
	printf("\nmaskedmaxB = %d maskedminB = %d", maskedMaxB, maskedMinB);
	printf("\nmasked average B = %f", maskedAverageB);
	printf("\nsmasked tddev B = %f, masked sigma = %f, masked offset = %d",
		       	maskedStdDevB,	maskedSigmaB, maskedOffsetB);
//	buildLUT(histoA, averageA, stdDevA, offsetA, sigmaA);
	buildLUT(maskedHistoA, maskedAverageA, maskedStdDevA,
		       	maskedOffsetA, maskedSigmaA);
	//buildLUT(histoB, averageB, stdDevB, offsetB, sigmaB);
	buildLUT(maskedHistoB, maskedAverageB, maskedStdDevB,
		       	maskedOffsetB, maskedSigmaB);
	averageA = averageHisto(histoA);
	maskedAverageA = averageHisto(maskedHistoA);
	averageB = averageHisto(histoB);
	maskedAverageB = averageHisto(maskedHistoB);
	printf("\naverage A pixel value = %f", averageA);
	printf("\nmasked average A pixel value = %f", maskedAverageA);
	printf("\naverage B pixel value = %f", averageB);
//	printf("\nblackpoint A = %d, whitepoint A = %d", blackPointA,
		       					//whitePointA);	
	//stretch the data
	rewind(inAFile);
	rewind(inBFile);
//	rewind(inMaskFile);
	while (((count = fillBuff(bufA, inAFile)) != 0 ) &&
		(fillBuff(bufB, inBFile) !=0))
	{	
		//contrastStretch(bufA, histoA,&clippedBlackA,
		//	       &clippedWhiteA,	outAFile);
		contrastStretch(bufA, maskedHistoA,&clippedBlackA,
			       &clippedWhiteA,	outAFile);
		contrastStretch(bufB, maskedHistoB,&clippedBlackB,
			       &clippedWhiteB,	outBFile);
	}
		printf("\nContrast stretch complete");
	printf("\nclippedblackA %d, clippedwhiteA %d",
			clippedBlackA, clippedWhiteA);
	printf("\nclippedblackB %d, clippedwhiteB %d",
			clippedBlackB, clippedWhiteB);
/*
	fclose(inAFile);
	fclose(inBFile);
	fclose(outAFile);
	*/
	return 0;
}