[ITK] Binary Dilate/Erode filter

Matt McCormick matt.mccormick at kitware.com
Fri Jun 2 15:05:44 EDT 2017


Hi Jay,

I am not sure that I fully understand your question, then.

Matt

On Fri, Jun 2, 2017 at 11:01 AM, jay nanavati <jaysnanavati at hotmail.co.uk>
wrote:

> Hi Matt,
>
> I think your answer might be referring to my original question. But I
> could you please confirm my understanding on the painting of all of the SE
> points.
>
> Thanks,
> Jay
>
> On 2 Jun 2017, at 15:57, Matt McCormick <matt.mccormick at kitware.com>
> wrote:
>
> Hi Jay,
>
> Yes, outputRegion.IsInside(idx) means that we only are changing the region
> we are processing.
>
> HTH,
> Matt
>
> On Thu, Jun 1, 2017 at 7:26 AM, jay nanavati <jaysnanavati at hotmail.co.uk>
> wrote:
>
>> Hi Matt,
>>
>> Thanks for the help on this, it makes sense now.
>>
>> Also with regards to the following :
>>
>> typename NeighborIndexContainer::const_iterator itIdx;
>>       NeighborIndexContainer & idxDifferenceSet =
>>         this->GetDifferenceSet(centerPixelCode);
>>       for ( itIdx = idxDifferenceSet.begin();
>>             itIdx != idxDifferenceSet.end();
>>             ++itIdx )
>>         {
>>         IndexType idx = tmpRegIndexIt.GetIndex() + *itIdx;
>>         if ( outputRegion.IsInside(idx) )
>>           {
>>           output->SetPixel(idx, backgroundValue);
>>           }
>>         }
>>
>> Am I correct in understanding that the entire SE is being painted? and is
>> the reason why this is done at least one to take care of an edge case where
>> the radius of the SE is bigger than the surface being painted, which means
>> just painting the surface points wont actually be correct?
>>
>> Thanks,
>> Jay
>> ------------------------------
>> *From:* Matt McCormick <matt.mccormick at kitware.com>
>> *Sent:* 29 May 2017 18:41:13
>> *To:* jay nanavati
>> *Cc:* community at itk.org
>> *Subject:* Re: [ITK] Binary Dilate/Erode filter
>>
>> Hi Jay,
>>
>> The region will be padded by the radius. The cropping will possibly
>> shrink the region at the input image's boundaries.
>>
>> HTH,
>> Matt
>>
>> On Mon, May 29, 2017 at 12:54 PM, jay nanavati
>> <jaysnanavati at hotmail.co.uk> wrote:
>> > Hi - Looking at
>> > ITK\Modules\Filtering\BinaryMathematicalMorphology\include\i
>> tkBinaryErodeImageFilter.hxx,
>> > I am a bit confused with regards to the padding and cropping of the
>> regions
>> > for example, in the snippet below:
>> >
>> > ypename TInputImage::RegionType tmpRequestedRegion = outputRegion;
>> >   typename TInputImage::RegionType paddedInputRegion =
>> >     input->GetBufferedRegion();
>> >   paddedInputRegion.PadByRadius(radius);   // to support boundary
>> values
>> >   InputSizeType padBy = radius;
>> >   for ( i = 0; i < KernelDimension; ++i )
>> >     {
>> >     padBy[i] = ( padBy[i] > kernel.GetRadius(i) ? padBy[i] :
>> > kernel.GetRadius(i) );
>> >     }
>> >   tmpRequestedRegion.PadByRadius(padBy);
>> >   tmpRequestedRegion.Crop(paddedInputRegion);
>> >
>> > It appears that tmpRequestedRegion is padded but then immediately
>> cropped,
>> > which means it will always be padded by a radius of 1 in each dimension
>> > anyways? Similar operations are performed when padding the
>> > inputRegionForThread:
>> >
>> > // Pad the input region by the kernel
>> >   inputRegionForThread.PadByRadius( kernel.GetRadius() );
>> >   inputRegionForThread.Crop( input->GetBufferedRegion() );
>> >
>> > It would be great if someone could guide me on this.
>> >
>> > Thanks,
>> > Jay
>> >
>> >
>> > _______________________________________________
>> > Community mailing list
>> > Community at itk.org
>> > http://public.kitware.com/mailman/listinfo/community
>> >
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/community/attachments/20170602/cfd03f9e/attachment.html>


More information about the Community mailing list