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 ; }
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); }
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; } }
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() ); } }
//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 ); } } }
//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; }
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; }
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]; } }
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; }