Ejemplo n.º 1
0
   BSONObj qgmMerge( const BSONObj &left, const BSONObj &right )
   {
      PD_TRACE_ENTRY( SDB__QGMMERGE ) ;
      BSONObj obj ;
      BSONObjBuilder builder ;
      try
      {
         BSONObjIterator itr1( left ) ;
         while ( itr1.more() )
         {
            builder.append( itr1.next() ) ;
         }

         BSONObjIterator itr2( right ) ;
         while ( itr2.more() )
         {
            builder.append( itr2.next() ) ;
         }

         obj = builder.obj() ;
      }
      catch ( std::exception &e )
      {
         PD_LOG( PDERROR, "unexpected err happened:%s",
                 e.what() ) ;
      }

      PD_TRACE_EXIT( SDB__QGMMERGE ) ;
      return obj ;
   }
Ejemplo n.º 2
0
int main ()
{
    SuccessorTest ();
    ItrTest ();
    CL_BitSet set1 = CL_BitSet (25) + 1 + 3 + 15 + 21 + 7;
    CL_BitSet set2;
    set2 = set2 + 2 + 3 +  1 +  15;
    TestBigSet ();
    
    CL_String strg = set2.AsString();
    cout << "set2: " << strg << endl;

    strg = set1.AsString ();
    cout << "set1: " <<  strg << endl;

    CL_BitSet set5 (5, 15, 30);
    cout << "Set5: " << set5 << endl;

    cout << "Complement of set5: " << ~set5 << endl;
    CL_BitSet set3;
    set3 = set1 * set2;

    CL_IntegerSet set = set1.AsSet ();
    cout << "Set1:" << endl;
    short i;
    for (i = 0; i < set.Size(); i++)
        cout << " " << set.ItemWithRank (i);
    cout << endl;

    long r = 3;
    cout << "Element of rank " << r << " in set2 is "
        << set2.ItemWithRank(r) << endl;
    cout << "Set2:" << endl;
    for (i = 0; i < set2.Size(); i++)
        cout <<  " " << set2.ItemWithRank(i);
    cout << endl;
            
    set = set3.AsSet ();
    cout << "Set3:" << endl;
    CL_BitSetIterator itr1 (set3);
    for (i = 0; i < set.Size(); i++)
        cout <<  " " << itr1.Next();
    cout << endl;
            
    CL_BitSetIterator itr (set1);
    cout << "set1 via iterator:" << endl;
    for (itr.Reset(); (i = itr.Next()) >= 0; ) {
        cout << "i = " << i << endl;
    }

    cout <<  endl << "set3: smallest " << set3.Smallest()
         << " largest " << set3.Largest() << endl;
    cout <<  endl;
    cout << "set1: smallest " << set1.Smallest()
         << " largest " << set1.Largest() << endl;
    cout << "set5: smallest " << set5.Smallest()
         << " largest " << set5.Largest() << endl;
return(0);
}
Ejemplo n.º 3
0
int main()
{
    String s("hello world");
    String_iter itr(s);
    for(char c = itr.get(); itr.hasNext(); c = itr.next()) {
        std::cout << c << std::endl;
    }
    std::cout << "" << std::endl;
    String s1(s(0, 5));
    String_iter itr1(s1);
    for(char c = itr1.get(); itr1.hasNext(); c = itr1.next()) {
        std::cout << c << std::endl;
    }
}
Ejemplo n.º 4
0
void VolumeProcess::SetInput(ImageType::Pointer inImage)
{
	m_inputImage = inImage;
    //m_outputImage = inImage;	//THIS IS NOT CORRECT IT WILL CAUSE INPUT IMAGE TO CHANGE

	//Init the output image to the input image:
	m_outputImage = ImageType::New();
	m_outputImage->SetRegions( m_inputImage->GetLargestPossibleRegion() );
	m_outputImage->Allocate();
	m_outputImage->FillBuffer(0);
	itk::ImageRegionIterator< ImageType > itr1( m_inputImage, m_inputImage->GetLargestPossibleRegion() );
	itk::ImageRegionIterator< ImageType > itr2( m_outputImage, m_outputImage->GetLargestPossibleRegion() );
	for(itr1.GoToBegin(), itr2.GoToBegin() ; !itr1.IsAtEnd(); ++itr1, ++itr2)
	{
		itr2.Set( itr1.Get() );
	}
}
Ejemplo n.º 5
0
//This function removes all objects that are <= minObjSize from the foreground.
//The foreground remains grayscale after this filter
void Preprocess::RemoveConnectedComponents(int minObjSize)
{
	typedef itk::Image< unsigned short, 3 > ShortImageType;
	typedef itk::ConnectedComponentImageFilter< ImageType3D, ShortImageType > CCFilterType;
	typedef itk::RelabelComponentImageFilter< ShortImageType, ShortImageType > RelabelType;

	CCFilterType::Pointer ccfilter = CCFilterType::New();
	RelabelType::Pointer relabel = RelabelType::New();
	
	ccfilter->SetInput( myImg );
	ccfilter->FullyConnectedOn();

	relabel->SetInput( ccfilter->GetOutput() );
	relabel->SetMinimumObjectSize( minObjSize );
	relabel->InPlaceOn();

	try
    {
		relabel->Update();
    }
    catch( itk::ExceptionObject & excep )
    {
		std::cerr << "Relabel: exception caught !" << std::endl;
		std::cerr << excep << std::endl;
		return;
    }
	
	unsigned short initNumObjects = ccfilter->GetObjectCount();
	unsigned short finalNumObjects = relabel->GetNumberOfObjects();
	unsigned short removedNumObjects = initNumObjects - finalNumObjects;
	std::cout << "Removed " << removedNumObjects << " of " << initNumObjects << " objects...";

	ShortImageType::Pointer ccImage = relabel->GetOutput();

	//Use connected component image as a mask:
	itk::ImageRegionIterator< ShortImageType > itr1( ccImage, ccImage->GetLargestPossibleRegion() );
	itk::ImageRegionIterator< ImageType3D > itr2( myImg, myImg->GetLargestPossibleRegion() );
	for(itr1.GoToBegin(), itr2.GoToBegin() ; !itr1.IsAtEnd(); ++itr1, ++itr2)
	{
		if(itr1.Get() == 0)
		{
			itr2.Set( 0 );
		}
	}
}
Ejemplo n.º 6
0
//This function removes all objects that are <= minObjSize from the foreground.
//The foreground remains grayscale after this filter
bool VolumeProcess::MaskSmallConnComp(int minObjSize)
{
	typedef itk::Image< unsigned short, Dimension > ShortImageType;
	typedef itk::ConnectedComponentImageFilter< ImageType, ShortImageType > CCFilterType;
	typedef itk::RelabelComponentImageFilter< ShortImageType, ShortImageType > RelabelType;

	CCFilterType::Pointer ccfilter = CCFilterType::New();
	RelabelType::Pointer relabel = RelabelType::New();
	
	ccfilter->SetInput (m_outputImage);
	ccfilter->FullyConnectedOn();

	relabel->SetInput( ccfilter->GetOutput() );
	relabel->SetMinimumObjectSize( minObjSize );
	relabel->InPlaceOn();

	try
    {
		relabel->Update();
    }
    catch( itk::ExceptionObject & excep )
    {
		std::cerr << "Relabel: exception caught !" << std::endl;
		std::cerr << excep << std::endl;
		return false;
    }
	
	unsigned short numObjects = relabel->GetNumberOfObjects();
	if(debug)
		std::cerr << "Connected components = " << numObjects << std::endl;

	ShortImageType::Pointer ccImage = relabel->GetOutput();

	//Use connected component image as a mask:
	itk::ImageRegionIterator< ShortImageType > itr1( ccImage, ccImage->GetLargestPossibleRegion() );
	itk::ImageRegionIterator< ImageType > itr2( m_outputImage, m_outputImage->GetLargestPossibleRegion() );
	for(itr1.GoToBegin(), itr2.GoToBegin() ; !itr1.IsAtEnd(); ++itr1, ++itr2)
	{
		if(itr1.Get() == 0)
		{
			itr2.Set( 0 );
		}
	}
	return true;
}
Ejemplo n.º 7
0
bool VolumeProcess:: RunFillingZeroOnBouandary(int Bx,int By,int Bz)
{
	ImageType::Pointer tempImg = ImageType::New();
	tempImg->SetRegions( m_outputImage->GetLargestPossibleRegion() );
	tempImg->Allocate();
	tempImg->FillBuffer(0);

	ImageType::RegionType fullRegion = m_outputImage->GetBufferedRegion();

	int numColumns = fullRegion.GetSize(0);
	int numRows = fullRegion.GetSize(1);
	int numStacks = fullRegion.GetSize(2);
	int i, j,k; 

	itk::ImageRegionIteratorWithIndex< ImageType > itr( m_outputImage, fullRegion );

	for(itr.GoToBegin(); !itr.IsAtEnd(); ++itr)
	{
		
		ImageType::IndexType index = itr.GetIndex();
	    ImageType::PixelType pix = m_outputImage->GetPixel(index);
        i = index[0];
		j = index[1];
		k = index[2];
		if (i < Bx || i > numColumns -Bx || j < By || j > numRows-By ||k <Bz ||k > numStacks-Bz )
		    tempImg->SetPixel(itr.GetIndex(), 0);
		else 
			tempImg->SetPixel(itr.GetIndex(), pix);
     }
		//Copy temp img back to image 
	itk::ImageRegionIterator< ImageType > itr1( tempImg, tempImg->GetLargestPossibleRegion());
	itk::ImageRegionIterator< ImageType > itr2( m_outputImage, m_outputImage->GetLargestPossibleRegion());
	for(itr1.GoToBegin(), itr2.GoToBegin() ; !itr1.IsAtEnd(); ++itr1, ++itr2)
	{
	  itr2.Set( itr1.Get() );
	}

	if(debug)
		std::cerr << "RunFillingZero Done" << std::endl;

	return true;
  
}
Ejemplo n.º 8
0
void ReadObjects (const char* name)
{
    CL_ObjectSequence obj_seq;
    CL_BinaryFile file (name);
    long i;
    
    // Read the sequence from the file
    file >> obj_seq; // Not necessarily equivalent to obj_seq.ReadFrom(file)
    cout << "Contents of restored sequence:\n";
    long n = obj_seq.Size();
    for (i = 0; i < n; i++) {
        TestClass* p = (TestClass*) obj_seq [i];
        cout << p->Data().AsPtr() << endl;
    }
    obj_seq.DestroyContents (); // Without this, there's a memory leak!

    // Read back the set
    CL_StringSet aSet;
    file >> aSet;
    n = aSet.Size();
    cout << "Restored set has " << n << " elements:\n";
    CL_StringSetIterator setIter (aSet);
    for (setIter.Reset (); setIter.More(); ) {
        cout << setIter.Next().AsPtr() << endl;
    }


    // And finally, read back the maps
    CL_IntPtrMap map1;
    CL_StringStringMap map2; // Note that there is no builder needed for
                             // non-pointer-based maps
    file >> map1 >> map2;

    cout << "Contents of restored map1:\n";
    CL_IntPtrMapIterator itr1 (map1);
    CL_IntPtrAssoc assoc1;
    for (itr1.Reset(); itr1.More(); ) {
        assoc1 = itr1.Next ();
        cout << assoc1.key << " --> " << 
                ((TestClass*) assoc1.value)->Data().AsPtr() << endl;
    }
    map1.DestroyContents ();



    cout << "Contents of restored map2:\n";
//     CL_StringStringMapIterator itr2 (map2);
//     CL_StringStringAssoc assoc2;
//     for (itr2.Reset(); itr2.More(); ) {
//         assoc2 = itr2.Next ();
//         printf ("'%s' --> '%s'\n", (const char*) assoc2.key,
//                 (const char *) assoc2.value);
//     }
    cout << map2 << endl;

    {
        CL_ObjectSequence sq;
        file >> sq;
        register long n = sq.Size();
        cout << "sq Size: " << n << endl;
        register long i;
        for (i = 0; i < n; i++) {
            CL_String* s = (CL_String*) sq[i];
            cout <<  (s ? s->AsPtr() : "(NULL)") << endl;
        }
        delete sq[0];
        delete sq[1];
    }
}
Ejemplo n.º 9
0
bool VolumeProcess::DialateImage(int iterations)
{
	int border = 2;

	ImageType::Pointer tempImg = ImageType::New();
	tempImg->SetRegions( m_outputImage->GetLargestPossibleRegion() );
	tempImg->Allocate();
	tempImg->FillBuffer(0);

	ImageType::RegionType fullRegion = m_outputImage->GetBufferedRegion();
	ImageType::RegionType borderRegion;
	borderRegion.SetIndex(0, fullRegion.GetIndex(0)+border);
	borderRegion.SetIndex(1, fullRegion.GetIndex(1)+border);
	borderRegion.SetIndex(2, fullRegion.GetIndex(2)+border);
	borderRegion.SetSize(0, fullRegion.GetSize(0)-(2*border));
	borderRegion.SetSize(1, fullRegion.GetSize(1)-(2*border));
	borderRegion.SetSize(2, fullRegion.GetSize(2)-(2*border));
	itk::ImageRegionIteratorWithIndex< ImageType > itr( m_outputImage, borderRegion );
	while(iterations > 0)
	{
		for(itr.GoToBegin(); !itr.IsAtEnd(); ++itr)
		{
			double blockMax = itr.Get();
			for(int k=-1; k<=1; k++)
			{
				for(int j=-1; j<=1; j++)
				{
					for(int i=-1; i<=1; i++)
					{
						ImageType::IndexType index = itr.GetIndex();
						index[0] += i;
						index[1] += j;
						index[2] += k;
						ImageType::PixelType pix = m_outputImage->GetPixel(index);
						if((double)pix > blockMax) 
						{
							blockMax = (double)pix;
						}
					}
				}
			}
			// Keep the peak of the original intensity
			if (blockMax == itr.Get() && blockMax != 0)
            {
				blockMax = blockMax + 1;
            }
			tempImg->SetPixel(itr.GetIndex(), blockMax);
		}

		//Copy temp img back to image for next dialation
		itk::ImageRegionIterator< ImageType > itr1( tempImg, tempImg->GetLargestPossibleRegion() );
		itk::ImageRegionIterator< ImageType > itr2( m_outputImage, m_outputImage->GetLargestPossibleRegion() );
		for(itr1.GoToBegin(), itr2.GoToBegin() ; !itr1.IsAtEnd(); ++itr1, ++itr2)
		{
			itr2.Set( itr1.Get() );
		}

		iterations--;
	}
	
	if(debug)
		std::cerr << "Dialation Done" << std::endl;
	return true;
}