[vtkusers] Combination of two images

Adrien Marion adrien.marion at creatis.insa-lyon.fr
Wed Apr 13 09:33:42 EDT 2011


Thank you David.
vtkImageStencil is not OK adding

IS.SetInput(img);

So I tried your second solution doing (test with python):

opac = vtkImageThreshold();
opac.SetInput(img);
opac.ThresholdByUpper(1);
opac.SetInValue(1);
opac.Update();    // Thresholded image with 2 levels (0 and 1)

app = vtkImageAppend();
app.SetInput(img);
app.SetInput(opac.GetOutput());
app.Update();    // Image with 2 components, the initial one (img) and 
the associated binary mask

blend = vtkImageBlend();
blend.SetInput(app.GetOutput());
blend.SetInput(currentImage);
blend.Update();

However, It does not provide the good combination. Did I wrote mistakes ?
I do not understand how to say that the blend must take the second 
component of app (i.e. the binary mask) to decide if pixels have to be 
replaced.

Adrien

Le 13/04/2011 14:59, David Gobbi a écrit :
> Hi Pat,
>
> The vtkImageStencil filter can take two image inputs, try adding this:
>
>
>
> You can also combine the images without using stencils.  To do this,
> you would use vtkImageThreshold to generate your mask image, and then
> vtkImageAppend to append this mask to img as an alpha channel.  Then
> vtkImageBlend can be used to combine the images, it will use the alpha
> channel to decide which pixels to replace.  This method doesn't have
> any advantage compared to using stencils, it's just a different way of
> doing the same thing.
>
>   - David
>
> On Wed, Apr 13, 2011 at 6:42 AM, Adrien Marion
> <adrien.marion at creatis.insa-lyon.fr>  wrote:
>> Hi,
>> I have two vtkImageData (called currentImage and img), each containing
>> values from 0 to 250.
>> I would like to combine these images to obtain a resulting image (resImage)
>> doing for each pixel:
>> - if Mask == 0, resImage = currentImage
>> - else resImage = Mask
>>
>> I currently work with VTK wrapped version in Java and I cannot afford a
>> triple loop with getScalarAsDoubleComponent to do that.
>>
>> Does someone have a simple solution to do that ?
>>
>> I already tried with vtkImageStencil but It does not give the good solution:
>>
>>         vtkImageToImageStencil IIS = new vtkImageToImageStencil();
>>         IIS.SetInput(img);
>>         vtkImageStencil IS = new vtkImageStencil();
>>         IS.SetStencil(IIS.GetOutput());
>>         IS.SetInput(currentImage);
>>         IS.Update();
>>         result = IS.GetOutput();
>>
>> I think I did not understand how vtkImageStencil works.
>>
>> Thank you in advance for your help,
>> Adrien
>>
>> --
>> Adrien MARION, Docteur/PhD
>> Chercheur post-doctorant (ANR VIP)
>> Laboratoire CREATIS, INSA de Lyon
>> CNRS UMR 5220, INSERM U1044
>> Bâtiment Blaise Pascal, 4ème étage
>> 7, avenue Jean Capelle
>> 69621 Villeurbanne cedex FRANCE
>> Tel : (+33) 4 72 43 87 86
>> Fax:  (+33) 4 72 43 85 26
>> e-mail : adrien.marion at creatis.insa-lyon.fr
>> http://www.creatis.insa-lyon.fr/~amarion

-- 
Adrien MARION, Docteur/PhD
Chercheur post-doctorant (ANR VIP)
Laboratoire CREATIS, INSA de Lyon
CNRS UMR 5220, INSERM U1044
Bâtiment Blaise Pascal, 4ème étage
7, avenue Jean Capelle
69621 Villeurbanne cedex FRANCE
Tel : (+33) 4 72 43 87 86
Fax:  (+33) 4 72 43 85 26
e-mail : adrien.marion at creatis.insa-lyon.fr
http://www.creatis.insa-lyon.fr/~amarion




More information about the vtkusers mailing list