コード例 #1
0
ファイル: test_denoise.cpp プロジェクト: phcerdan/ITKfilters
TEST(binary, Shanbhag){
    const string img{"./fixtures/M1045_11_20.tiff"};
    auto denoise = make_shared<Denoise>() ;
    auto r = denoise->Read(img);
    auto b = denoise->BinaryShanbhag(r);
    QuickView viewer;
    viewer.AddImage(r.GetPointer(), 1, img);
    viewer.AddImage(b->GetOutput(), 1, "BinaryShanbhag");
    if (VFLAG) viewer.Visualize();
}
コード例 #2
0
ファイル: Visualize.cpp プロジェクト: Moaan/csc621-821-sp2015
int main(int argc, char* argv[]) {
  ImageType::Pointer image = ImageType::New();
  GenerateImage(image);

  QuickView viewer;
  viewer.AddImage(image.GetPointer());
  viewer.Visualize();

  return EXIT_SUCCESS;
}
コード例 #3
0
ファイル: test_denoise.cpp プロジェクト: phcerdan/ITKfilters
TEST(fileIO, write){
    const string img{"./fixtures/M1045_11_20.tiff"};
    auto denoise = make_shared<Denoise>() ;
    auto r = denoise->Read(img);
    auto d1 = denoise->AnisotropicFilterCurvature(r, 10, 0.044, 2);
    string outFile = "./testResults/M1045_11_20_denoised.tiff";
    denoise->Write(d1->GetOutput(), outFile);
    QuickView viewer;
    viewer.AddImage(r.GetPointer(), 1, img);
    viewer.AddImage(d1->GetOutput(), 1, "Denoised");
    if (VFLAG) viewer.Visualize();

}
コード例 #4
0
ファイル: test_denoise.cpp プロジェクト: phcerdan/ITKfilters
TEST(binary, threshold){
    const string img{"./fixtures/M1045_11_20.tiff"};
    auto denoise = make_shared<Denoise>() ;
    auto r = denoise->Read(img);
    unsigned int threshold = 90;
    auto b = denoise->BinaryThreshold(r, threshold);
    QuickView viewer;
    viewer.AddImage(r.GetPointer(), 1, img);
    viewer.AddImage(b->GetOutput(), 1, "BinaryThreshold");
    if (VFLAG) viewer.Visualize();
    string outFile = "./testResults/pectin_threshold.tiff";
    denoise->Write(b->GetOutput(), outFile);
}
コード例 #5
0
ファイル: test_denoise.cpp プロジェクト: phcerdan/ITKfilters
TEST(regionGrowth, connectedThreshold){
    const string img{"./fixtures/M1045_11_20.tiff"};
    auto denoise = make_shared<Denoise>() ;
    auto r = denoise->Read(img);
    auto d1 = denoise->AnisotropicFilterCurvature(r, 5, 0.044, 5);
    auto rg = denoise->RegionGrowth(d1->GetOutput(), 0, 100);
    itk::Index<2> s1 = {{309,185}};
    rg->SetSeed(s1);
    rg->Update();
    auto rgo  = rg->GetOutput();
    // Visualize
    QuickView viewer;
    viewer.AddImage(r.GetPointer(), 1, img);
    viewer.AddImage(d1->GetOutput(), 1, "Denoised");
    viewer.AddImage(rgo, 1, "Rgrowth");
    if (VFLAG) viewer.Visualize();
}
コード例 #6
0
ファイル: test_denoise.cpp プロジェクト: phcerdan/ITKfilters
TEST(holeFilling, binary){
    const string img{"./testResults/pectin_threshold.tiff"};
    auto denoise = make_shared<Denoise>() ;
    auto r = denoise->Read(img);
    using HoleFilter = itk::BinaryFillholeImageFilter<Denoise::InputImageType>;
    auto fillFilter = HoleFilter::New();
    fillFilter->SetInput(r.GetPointer());
    fillFilter->SetForegroundValue( itk::NumericTraits< Denoise::InputPixelType>::min());
    fillFilter->Update();

    QuickView viewer;
    viewer.AddImage(r.GetPointer(), 1, img);
    viewer.AddImage(fillFilter->GetOutput(), 1, "BinaryThreshold");
    if (VFLAG) viewer.Visualize();
    string outFile = "./testResults/pectin_threshold_hole_filled.tiff";
    denoise->Write(fillFilter->GetOutput(), outFile);
}
コード例 #7
0
ファイル: test_denoise.cpp プロジェクト: phcerdan/ITKfilters
TEST(morphological, opening){
    const string img{"./fixtures/M1045_11_20.tiff"};
    auto denoise = make_shared<Denoise>() ;
    auto r = denoise->Read(img);
    auto mo10 = denoise->MorphologicalOpening(r, 10);
    auto mo5 = denoise->MorphologicalOpening(r, 5);
    auto mo20 = denoise->MorphologicalOpening(r, 20);
    auto mo3 = denoise->MorphologicalOpening(r, 3);

    QuickView viewer;
    viewer.AddImage(r.GetPointer(), 1, img);
    viewer.AddImage(mo10->GetOutput(), 1, "Morphological Opening, r=10");
    viewer.AddImage(mo5->GetOutput(), 1, "Morphological Opening, r=5");
    viewer.AddImage(mo20->GetOutput(), 1, "Morphological Opening, r=20");
    viewer.AddImage(mo3->GetOutput(), 1, "Morphological Opening, r=3");
    auto d1 = denoise->AnisotropicFilterCurvature(mo3->GetOutput(), 5, 0.044, 5);
    if (VFLAG) viewer.Visualize();
}
コード例 #8
0
ファイル: test_denoise.cpp プロジェクト: phcerdan/ITKfilters
TEST(anisotropic, InPectinSubSet){
    const string img{"./fixtures/M1045_11_20.tiff"};
    auto denoise = make_shared<Denoise>() ;
    auto r = denoise->Read(img);
    auto outSmart = denoise->AnisotropicFilterCurvature(r, 5, 0.044, 2);
    // // Visualize
    QuickView viewer;
    viewer.AddImage(r.GetPointer(), 1, img);
    viewer.AddImage( outSmart->GetOutput(), 1 , "Anisotropic Filter");
    auto outSmart2 = denoise->AnisotropicFilterCurvature(outSmart->GetOutput(), 5, 0.044, 5);
    viewer.AddImage( outSmart2->GetOutput(), 1 , "Anisotropic Filterx2");
    auto outSmart3 = denoise->AnisotropicFilterCurvature(outSmart2->GetOutput(), 10, 0.044, 2);
    viewer.AddImage( outSmart3->GetOutput(), 1 , "Anisotropic Filterx3");
    if (VFLAG) viewer.Visualize();
}
コード例 #9
0
ファイル: main.cpp プロジェクト: natalieeliachevsky/Lab3
int main(int, char **)
{
    char inputFile[] = "C:/Users/bmi/Documents/GitHub/Lab3/HR_081507_L_1003.tif";
    unsigned int maximum = 65535;

    typedef itk::Image<unsigned int, 2> ImageType;
    typedef itk::ImageFileReader<ImageType> ReaderType;

    // register TIFF
    itk::TIFFImageIOFactory::RegisterOneFactory();

    ReaderType::Pointer reader = ReaderType::New();


    //read file
    reader->SetFileName(inputFile);
    reader->Update();


    /////////////////////////////////////////
    ///        binary threshold filter
    /////////////////////////////////////////
/*
    typedef itk::BinaryThresholdImageFilter <ImageType, ImageType> BinaryThresholdImageFilterType;
    BinaryThresholdImageFilterType::Pointer thresholdFilter = BinaryThresholdImageFilterType::New();

    unsigned int lowerBinaryThreshold = 42000;
    unsigned int upperBinaryThreshold = maximum;

    thresholdFilter->SetInput(reader->GetOutput());
    thresholdFilter->SetLowerThreshold(lowerBinaryThreshold);
    thresholdFilter->SetUpperThreshold(upperBinaryThreshold);
    thresholdFilter->SetInsideValue(maximum);
    thresholdFilter->SetOutsideValue(0);



    // view the images
    QuickView viewer;
    viewer.AddImage(reader->GetOutput(),
                    true,
                    "Original Image");
    viewer.AddImage(thresholdFilter->GetOutput(),
                    true,
                    "Binary Threshold Filter");
    viewer.Visualize();

*/


    /////////////////////////////////////////
    ///        Threshold Filter
    /////////////////////////////////////////
/*
    typedef itk::ThresholdImageFilter <ImageType> ThresholdImageFilterType;
    ThresholdImageFilterType::Pointer thresholdFilter = ThresholdImageFilterType::New();

    unsigned int lowerThreshold = 42000;
    unsigned int upperThreshold = maximum;

    thresholdFilter->SetInput(reader->GetOutput());
    thresholdFilter->ThresholdOutside(lowerThreshold, upperThreshold);
    thresholdFilter->SetOutsideValue(0);


    // view the images
    QuickView viewer;
    viewer.AddImage(reader->GetOutput(),
                    true,
                    "Original Image");
    viewer.AddImage(thresholdFilter->GetOutput(),
                    true,
                    "Threshold Filter");
    viewer.Visualize();
*/


    /////////////////////////////////////////
    ///        Intensity mapping
    /////////////////////////////////////////

/*
    typedef itk::RescaleIntensityImageFilter< ImageType, ImageType > RescaleFilterType;

    RescaleFilterType::Pointer rescaleFilter = RescaleFilterType::New();

    rescaleFilter->SetInput(reader->GetOutput());
    rescaleFilter->SetOutputMinimum(0);
    rescaleFilter->SetOutputMaximum(3);

    // view the images
    QuickView viewer;
    viewer.AddImage(reader->GetOutput(),
                    true,
                    "Original Image");
    viewer.AddImage(rescaleFilter->GetOutput(),
                    true,
                    "Intensity Mapping Filter");
    viewer.Visualize();
*/


    /////////////////////////////////////////
    ///        Mean Filter
    /////////////////////////////////////////
/*
    typedef itk::MedianImageFilter<ImageType, ImageType > FilterType;

    FilterType::Pointer medianFilter = FilterType::New();

    FilterType::InputSizeType radius;

    QuickView viewer;
    viewer.AddImage(reader->GetOutput(),
                    true,
                    "Original Image");

    // r = 1;
    radius.Fill( 1.4142f );

    medianFilter->SetRadius(radius);
    medianFilter->SetInput( reader->GetOutput() );
    medianFilter->Update();

    viewer.AddImage(medianFilter->GetOutput(),
                    true,
                    "Median Filter: x=1, y=1, r=1.4142f");

    // r = 2
    radius.Fill( 2.9155f );

    medianFilter->SetRadius(radius);
    medianFilter->SetInput( reader->GetOutput() );
    medianFilter->Update();

    viewer.AddImage(medianFilter->GetOutput(),
                    true,
                     "Median Filter: x=2, y=2, r=2.9155f");

    // r = 3;
    radius.Fill( 4.3012f );

    medianFilter->SetRadius(radius);
    medianFilter->SetInput( reader->GetOutput() );
    medianFilter->Update();

    viewer.AddImage(medianFilter->GetOutput(),
                    true,
                    "Median Filter: x=3, y=3, r=4.3012f");

    // r = 4
    radius.Fill( 5.7009f );

    medianFilter->SetRadius(radius);
    medianFilter->SetInput( reader->GetOutput() );
    medianFilter->Update();

    viewer.AddImage(medianFilter->GetOutput(),
                    true,
                    "Median Filter: x=4, y=4, r=5.7009f");

    //r = 5
    radius.Fill( 7.1063f );

    medianFilter->SetRadius(radius);
    medianFilter->SetInput( reader->GetOutput() );
    medianFilter->Update();

    viewer.AddImage(medianFilter->GetOutput(),
                    true,
                    "Median Filter: x=5, y=5, r=7.1063f");

    // view the images
    viewer.Visualize();
*/


    /////////////////////////////////////////
    ///        Smoothing Filter
    /////////////////////////////////////////

    typedef itk::DiscreteGaussianImageFilter< ImageType, ImageType >  filterType;

    double variance;

    filterType::Pointer gaussianFilter = filterType::New();
    gaussianFilter->SetInput( reader->GetOutput() );


    QuickView viewer;
    viewer.AddImage(reader->GetOutput(),
                    true,
                    "Original Image");


    variance = 2.9;
    gaussianFilter->SetMaximumKernelWidth(14);
    gaussianFilter->SetVariance(variance);
    gaussianFilter->Update();
    viewer.AddImage(gaussianFilter->GetOutput(),
                    true,
                    "Gaussian Filter, variance=2.9, width=14");


    variance = 7.825;
    gaussianFilter->SetMaximumKernelWidth(16);
    gaussianFilter->SetVariance(variance);
    gaussianFilter->Update();
    viewer.AddImage(gaussianFilter->GetOutput(),
                    true,
                    "Gaussian Filter, variance=7.825, width=16");


    variance = 1.1;
    gaussianFilter->SetMaximumKernelWidth(25);
    gaussianFilter->SetVariance(variance);
    gaussianFilter->Update();
    viewer.AddImage(gaussianFilter->GetOutput(),
                    true,
                    "Gaussian Filter, variance=1.1, width=25");


    variance = 22;
    gaussianFilter->SetMaximumKernelWidth(60);
    gaussianFilter->SetVariance(variance);
    gaussianFilter->Update();
    viewer.AddImage(gaussianFilter->GetOutput(),
                    true,
                    "Gaussian Filter, variance=22, width=60");


    variance = 22;
    gaussianFilter->SetMaximumKernelWidth(20);
    gaussianFilter->SetVariance(variance);
    gaussianFilter->Update();
    viewer.AddImage(gaussianFilter->GetOutput(),
                    true,
                    "Gaussian Filter, variance=22, width=20");



    // view the images
    viewer.Visualize();

}