# Label Shape Opening Slice by Slice not working very welll

**URL:** <https://discourse.itk.org/t/label-shape-opening-slice-by-slice-not-working-very-welll/5454>\
**Category:** Algorithms\
**Created:** [October 27, 2022, 8:12pm UTC](https://discourse.itk.org/t/label-shape-opening-slice-by-slice-not-working-very-welll/5454 "2022-10-27T20:12:56Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Oddone-Scatena](https://discourse.itk.org/user_avatar/discourse.itk.org/oddone-scatena/32/2651_2.png) [@Oddone-Scatena](https://discourse.itk.org/u/Oddone-Scatena)\
**Post date:** [October 27, 2022, 8:12pm UTC](https://discourse.itk.org/t/label-shape-opening-slice-by-slice-not-working-very-welll/5454/1 "2022-10-27T20:12:56Z")

</div>

Can’t apply shape open slice by slice. I get a null image, even though most of the connected components have less than 1000 pixels…

for(int slice\_to\_process = 0; slice\_to\_process \< final\_slice\_ribs ; slice\_to\_process++){

```
                ImageType::RegionType inputRegion_ribs = image_ribs_extraction->GetBufferedRegion();
                reader_ribs_4->Update();
                ImageType::SizeType size_ribs = inputRegion_ribs.GetSize();
                
                size_ribs[2] = 1; // we extract along z direction
                
                ImageType::IndexType start_ribs = inputRegion_ribs.GetIndex();
                
                int sliceNumber_ribs = slice_to_process + start_ribs[2];
              
                start_ribs[2] = sliceNumber_ribs;
                
                ImageType::RegionType desiredRegion_ribs;
                desiredRegion_ribs.SetSize(size_ribs);
                desiredRegion_ribs.SetIndex(start_ribs);
                
                auto extractFilter_ribs = ExtractFilterType_Ribs::New();
                extractFilter_ribs -> SetDirectionCollapseToSubmatrix();
                extractFilter_ribs->SetExtractionRegion(desiredRegion_ribs);
              extractFilter_ribs->SetInput(image_ribs_extraction);
                extractFilter_ribs->Update();
                 
                                    
            auto connected_ribs = ConnectedComponentImageFilterType_Ribs::New();
            connected_ribs->SetInput(extractFilter_ribs->GetOutput());
              connected_ribs->Update();

           std::cout << connected_ribs->GetObjectCount();  
           
               std::cout<<" ";

             
                auto i2l_ribs = i2lType_Ribs::New();
                i2l_ribs->SetInput(connected_ribs->GetOutput());
                i2l_ribs->Update();

     
            
        // attribute Number of Pixels 100

       // Remove label objects that have spherical diameter higher than higher_diameter_threshold
                    
             
             // static constexpr LabelOpeningType::AttributeType attribute_ribs = 100;
                                   
              auto shapeOpening_ribs = LabelOpeningType_Ribs::New();
              shapeOpening_ribs->SetInput(i2l_ribs->GetOutput());
              shapeOpening_ribs->SetLambda(1000);
              shapeOpening_ribs->ReverseOrderingOn();
              shapeOpening_ribs->SetAttribute(100);
              shapeOpening_ribs->Update();
        

             
       auto labelMapToLabelImageFilter_ribs = LabelMapToLabelImageFilterType_Ribs::New();
       labelMapToLabelImageFilter_ribs ->SetInput(shapeOpening_ribs->GetOutput());
       labelMapToLabelImageFilter_ribs->Update();   
       
               
               const ImageType * image_to_paste_ribs = labelMapToLabelImageFilter_ribs->GetOutput();
               labelMapToLabelImageFilter_ribs->Update();

               auto pasteFilter_ribs = PasteFilterType_Ribs::New();
               pasteFilter_ribs->SetSourceImage(labelMapToLabelImageFilter_ribs->GetOutput());
               pasteFilter_ribs->SetSourceRegion(image_to_paste_ribs->GetBufferedRegion());
               pasteFilter_ribs->SetDestinationImage(image_ribs_final);
               pasteFilter_ribs->SetDestinationIndex(start_ribs);
               pasteFilter_ribs->Update();
          
          
                        }
                        
                        
                          
            auto writer_ribs = WriterType_Ribs::New();
            writer_ribs->SetFileName("Ribs.dcm");
            writer_ribs->SetInput(image_ribs_final);
            writer_ribs->SetImageIO(dicomIO);
            writer_ribs->Update();

```
