// use libjpeg-turbo for JPEG conversion void computeJpeg( SegmentCompressionWrapper& task ) { QRect imageRegion( task.segment.parameters.x - task.image->x, task.segment.parameters.y - task.image->y, task.segment.parameters.width, task.segment.parameters.height ); ImageJpegCompressor compressor; task.segment.imageData = compressor.computeJpeg( *task.image, imageRegion ); if( !task.handler( task.segment )) *task.result = false; }
bool TestCreateLuminanceImage() { // From RGB image { itk::Index<2> imageCorner = {{0,0}}; itk::Size<2> imageSize = {{100,100}}; itk::ImageRegion<2> imageRegion(imageCorner, imageSize); typedef itk::Image<itk::RGBPixel<unsigned char>, 2> RGBImageType; RGBImageType::Pointer rgbImage = RGBImageType::New(); rgbImage->SetRegions(imageRegion); rgbImage->Allocate(); typedef itk::Image<float, 2> LuminanceImageType; LuminanceImageType::Pointer luminanceImage = LuminanceImageType::New(); ITKHelpers::CreateLuminanceImage(rgbImage.GetPointer(), luminanceImage.GetPointer()); } // From Vector image { itk::Index<2> imageCorner = {{0,0}}; itk::Size<2> imageSize = {{100,100}}; itk::ImageRegion<2> imageRegion(imageCorner, imageSize); typedef itk::Image<itk::CovariantVector<unsigned char, 3>, 2> VectorImageType; VectorImageType::Pointer vectorImage = VectorImageType::New(); vectorImage->SetRegions(imageRegion); vectorImage->Allocate(); typedef itk::Image<float, 2> LuminanceImageType; LuminanceImageType::Pointer luminanceImage = LuminanceImageType::New(); ITKHelpers::CreateLuminanceImage(vectorImage.GetPointer(), luminanceImage.GetPointer()); } return true; }
void TestGetAllPatchesContainingPixel() { typedef itk::Image<float, 2> ImageType; ImageType::Pointer image = ImageType::New(); itk::Index<2> corner = {{0,0}}; itk::Size<2> size = {{10,10}}; itk::ImageRegion<2> imageRegion(corner,size); image->SetRegions(imageRegion); image->Allocate(); image->FillBuffer(0.0f); itk::Index<2> queryPixel = {{5,5}}; std::vector<itk::ImageRegion<2> > allPatches = ITKHelpers::GetAllPatchesContainingPixel(queryPixel, 1, imageRegion); std::cout << "Number of patches " << allPatches.size() << std::endl; }
bool TestComputeGradientsInRegion() { itk::Index<2> imageCorner = {{0,0}}; itk::Size<2> imageSize = {{100,100}}; itk::ImageRegion<2> imageRegion(imageCorner, imageSize); typedef itk::Image<unsigned char, 2> ImageType; ImageType::Pointer image = ImageType::New(); image->SetRegions(imageRegion); image->Allocate(); itk::ImageRegionIterator<ImageType> imageIterator(image, image->GetLargestPossibleRegion()); while(!imageIterator.IsAtEnd()) { imageIterator.Set(rand() % 255); ++imageIterator; } ITKHelpers::WriteImage(image.GetPointer(), "Image.mha"); itk::Index<2> regionCorner = {{50,50}}; itk::Size<2> regionSize = {{10,10}}; itk::ImageRegion<2> region(regionCorner, regionSize); typedef itk::Image<itk::CovariantVector<float, 2>, 2> GradientImageType; GradientImageType::Pointer gradientImage = GradientImageType::New(); std::cout << "Computing gradients..." << std::endl; ITKHelpers::ComputeGradientsInRegion(image.GetPointer(), region, gradientImage.GetPointer()); std::cout << "Writing..." << std::endl; ITKHelpers::WriteImage(gradientImage.GetPointer(), "GradientImage.mha"); return true; }