[vtkusers] existing filter to perform replace value on vtkImage

Bill Lorensen bill.lorensen at gmail.com
Wed Feb 17 14:55:20 EST 2010


ImageThreshold should do the trick.

On Tue, Feb 16, 2010 at 5:53 PM, Dominik Szczerba <dominik at itis.ethz.ch> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Of course you can march the image by foot:
>
>       for(int k=ext[4]; k<=ext[5]; k++)
>                for(int j=ext[2]; j<=ext[3]; j++)
>                        for(int i=ext[0]; i<=ext[1]; i++)
>                const unsigned char* ptr = (unsigned
> char*)image->GetScalarPointer(i,j,k);
>
> unsigned char* ptr2 = (unsigned char*)image2->GetScalarPointer(i,j,k);
>
> if(*ptr<200) *ptr2 = 0;
>
> Dominik
>
> Dominik Szczerba wrote:
>> Below some snippets how I use it.
>>
>>
>>
>> calculator->SetResultArrayType(VTK_DOUBLE);
>>
>> calculator->SetInput(viewer->image);
>>
>> string function = "if("+scalarName+"=13,1,0)";
>> calculator->AddScalarArrayName(scalarName.c_str());
>> calculator->SetFunction(function.c_str());
>> calculator->SetResultArrayName(scalarName.c_str());
>>
>>
>>
>> I operate on image data and filter out any pixels not falling into
>> explicit values. Modification for your purpose is straight forward.
>>
>> Dominik
>>
>> Michael Jackson wrote:
>>> On Feb 16, 2010, at 11:47 AM, David Doria wrote:
>>
>>>> On Tue, Feb 16, 2010 at 1:59 PM, Michael Jackson
>>>> <mike.jackson at bluequartz.net> wrote:
>>>>> Is there an existing filter where I can replace a value in the
>>>>> image if the
>>>>> value does not meet some criteria? Something like:
>>>>>
>>>>> if (value < 255 ) value = 0;
>>>>>
>>>>> Thanks
>>>>> _________________________________________________________
>>>>> Mike Jackson                  mike.jackson at bluequartz.net
>>>> Two things come to mind -
>>>>
>>>> 1) You can identify those regions with vtkImageThreshold:
>>>> http://www.vtk.org/Wiki/VTK/Examples/Images/ImageThreshold
>>>> http://www.vtk.org/doc/nightly/html/classvtkImageThreshold.html
>>>>
>>>> 2) Maybe you can set all the pixels found in (1) to some specific
>>>> value, and then you can use
>>>> vtkImageMathematics::SetOperationToReplaceCByK to replace that
>>>> specific value with 0 (as your original question suggested you want to
>>>> do).
>>>>
>>>> Hope that helps,
>>>>
>>>> David
>>>>
>>> Thanks. I Took a look at those filters but did not really understand
>>> what I was supposed to set any to? Basically I have a tiff file that
>>> was supposed to be either black or white. Turns out there are also
>>> intermediate values in there probably from some anti-aliasing or
>>> something. So basically, if the value is NOT 255, replace it with 0. I
>>> was thinking the Array Calculator but my simple mind couldn't really
>>> come up with an equation that would give me what I want.
>>
>>> _________________________________________________________
>>> Mike Jackson                  mike.jackson at bluequartz.net
>>> BlueQuartz Software                    www.bluequartz.net
>>> Principal Software Engineer                  Dayton, Ohio
>>
>>
>>> _______________________________________________
>>> Powered by www.kitware.com
>>
>>> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>>
>>> Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
>>
>>> Follow this link to subscribe/unsubscribe:
>>> http://www.vtk.org/mailman/listinfo/vtkusers
>>
>>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.9 (GNU/Linux)
>
> iEYEARECAAYFAkt7IcwACgkQ/EBMh9bUuzK7VgCaAiqGp3rNLOPhQIGrsS1SqYmo
> 0yEAniF0RStpDKVv8fFe1YORS90TKqXn
> =Wz4r
> -----END PGP SIGNATURE-----
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
>



More information about the vtkusers mailing list