Vikash Gupta | 1 Jun 2012 02:31
Picon
Picon
Favicon

DisconnectPipeline()

Hi everyone, 

I have some code like

MultiplyImageFilterType::Pointer multiplyImageFilter= MultiplyImageFilterType::New(); multiplyImageFilter->SetInput1(derivePSI->GetOutput() ); multiplyImageFilter->SetInput2(deriveImage->GetOutput()); multiplyImageFilter->Update(); AddImageFilterType::Pointer addImageFilter=AddImageFilterType::New(); addImageFilter->SetInput1(secondtermImage); addImageFilter->SetInput2(multiplyImageFilter->GetOutput()); addImageFilter->Update(); secondtermImage = addImageFilter->GetPutput(); secondtermImage->DisconnectPipeline();
My question is:
If I call the DisconnectPipeline on secondtermImage, does it disconnects from the whole set of filters before it or just the addImageFilter?
If anyone can clarify this doubt, it will be really helpful.
Thanks in advanceVikash


_____________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html

Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php

Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ

Follow this link to subscribe/unsubscribe:
http://www.itk.org/mailman/listinfo/insight-users
David Doria | 1 Jun 2012 02:40
Picon
Gravatar

Re: DisconnectPipeline()

On Thu, May 31, 2012 at 8:31 PM, Vikash Gupta <vikash.gupta@...> wrote:
> Hi everyone,
>
> I have some code like
>
>         MultiplyImageFilterType::Pointer multiplyImageFilter=
> MultiplyImageFilterType::New();
>
>         multiplyImageFilter->SetInput1(derivePSI->GetOutput() );
>
>         multiplyImageFilter->SetInput2(deriveImage->GetOutput());
>
>         multiplyImageFilter->Update();
>
>         AddImageFilterType::Pointer
> addImageFilter=AddImageFilterType::New();
>
>         addImageFilter->SetInput1(secondtermImage);
>
>         addImageFilter->SetInput2(multiplyImageFilter->GetOutput());
>
>         addImageFilter->Update();
>
>         secondtermImage = addImageFilter->GetPutput();
>
>         secondtermImage->DisconnectPipeline();
>
>
> My question is:
>
>
> If I call the DisconnectPipeline on secondtermImage, does it disconnects
> from the whole set of filters before it or just the addImageFilter?
>
>
> If anyone can clarify this doubt, it will be really helpful.
>
>
> Thanks in advance
>
> Vikash

This seems like a great topic for an example. I made a placeholder:

http://www.itk.org/Wiki/ITK/Examples/WishList/Pipeline/DisconnectPipeline

If someone could demonstrate how and why you would want to use this
functionality, and what it actually disconnects, that would be great!

David
_____________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html

Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php

Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ

Follow this link to subscribe/unsubscribe:
http://www.itk.org/mailman/listinfo/insight-users

Rasmus "Termo" Lundsgaard | 1 Jun 2012 08:42
Picon

ScalarImageToHistogramGenerator in Python

Dear All!

I'm a fairly new user of ITK, and like it very much as I can implement it
easily together with my other programming in Python.

I would like to perform a histogram calculation on som scalar images that I
have, and I am trying to implement do it as in
Examples/Statistics/ImageHistogram2.cxx but in Python.

the reader I write as

reader = itk.ImageFileReader.IUC2.New()

and was thinking that I could do the same with the
itk.ScalarImageToHistogramGenerator but it doesn't work...

SIHG=itk.ScalarImageToHistogramGenerator.IUC2.New()

SIHG only have these subclasses then:
SIHG.GetPointer  SIHG.IsNotNull   SIHG.IsNull      SIHG.Print
SIHG.this        SIHG.thisown

?!?

Whereas itk.ScalarImageToHistogramGenerator.IUC2 has:
itk.ScalarImageToHistogramGenerator.IUC2.AddObserver
itk.ScalarImageToHistogramGenerator.IUC2.BreakOnError
itk.ScalarImageToHistogramGenerator.IUC2.Compute
itk.ScalarImageToHistogramGenerator.IUC2.CreateAnother
itk.ScalarImageToHistogramGenerator.IUC2.DebugOff
itk.ScalarImageToHistogramGenerator.IUC2.DebugOn
itk.ScalarImageToHistogramGenerator.IUC2.Delete
itk.ScalarImageToHistogramGenerator.IUC2.GetCommand
itk.ScalarImageToHistogramGenerator.IUC2.GetDebug
itk.ScalarImageToHistogramGenerator.IUC2.GetGlobalWarningDisplay
itk.ScalarImageToHistogramGenerator.IUC2.GetMTime
itk.ScalarImageToHistogramGenerator.IUC2.GetMetaDataDictionary
itk.ScalarImageToHistogramGenerator.IUC2.GetNameOfClass
itk.ScalarImageToHistogramGenerator.IUC2.GetOutput
itk.ScalarImageToHistogramGenerator.IUC2.GetReferenceCount
itk.ScalarImageToHistogramGenerator.IUC2.GlobalWarningDisplayOff
itk.ScalarImageToHistogramGenerator.IUC2.GlobalWarningDisplayOn
itk.ScalarImageToHistogramGenerator.IUC2.HasObserver
itk.ScalarImageToHistogramGenerator.IUC2.InvokeEvent
itk.ScalarImageToHistogramGenerator.IUC2.Modified
itk.ScalarImageToHistogramGenerator.IUC2.New
itk.ScalarImageToHistogramGenerator.IUC2.Print
itk.ScalarImageToHistogramGenerator.IUC2.Register
itk.ScalarImageToHistogramGenerator.IUC2.RemoveAllObservers
itk.ScalarImageToHistogramGenerator.IUC2.RemoveObserver
itk.ScalarImageToHistogramGenerator.IUC2.SetDebug
itk.ScalarImageToHistogramGenerator.IUC2.SetGlobalWarningDisplay
itk.ScalarImageToHistogramGenerator.IUC2.SetHistogramMax
itk.ScalarImageToHistogramGenerator.IUC2.SetHistogramMin
itk.ScalarImageToHistogramGenerator.IUC2.SetInput
itk.ScalarImageToHistogramGenerator.IUC2.SetMarginalScale
itk.ScalarImageToHistogramGenerator.IUC2.SetMetaDataDictionary
itk.ScalarImageToHistogramGenerator.IUC2.SetNumberOfBins
itk.ScalarImageToHistogramGenerator.IUC2.SetReferenceCount
itk.ScalarImageToHistogramGenerator.IUC2.UnRegister
itk.ScalarImageToHistogramGenerator.IUC2.mro

How do I Implement this in Python?

Best regards
Termo

_____________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html

Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php

Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ

Follow this link to subscribe/unsubscribe:
http://www.itk.org/mailman/listinfo/insight-users
Arnaud Gelas | 1 Jun 2012 11:09
Picon

Re: registering 2d images with given LabelObject (or binary mask)

Hi Brian,

Exactly what I was looking for!!

Thanks!

Best,
Arnaud

On 05/31/2012 06:34 PM, brian avants wrote:
> hi arnaud
>
> the following test shows how you might achieve your goal with an image
> + binary mask:
>
> itkMattesMutualInformationImageToImageMetricv4RegistrationTest.cxx
>
> it computes an affine registration which is followed by a displacement
> field registration.
>
> the way you would use the binary mask is to select points over which
> the registration optimization is performed.
>
> see the parts of the example/test that set up the 'pset' variable.
>
> best,
>
> brian
>
>
>
> On Thu, May 31, 2012 at 8:30 AM, Arnaud Gelas<arnaudgelas@...>  wrote:
>> Hi all,
>>
>> I would like to register part of a 2d image to another part of a 2d image.
>>
>> I have
>>
>> 1 image 2D with a given LabelObject or binary mask (if it helps in any way)
>> (fixed)
>> 1 image 2D with a given LabelObject or binary mask (if it helps in any way)
>> (moving)
>>
>> and I would like to find the deformation field inside the given LabelObject
>> (or binary mask).
>>
>> The deformation would be a composed of a rigid transformation, followed by a
>> deformable one.
>>
>> Can anyone point me to an example or some guidelines I could follow to
>> implement such a thing, please?
>>
>> Thanks in advance,
>> Arnaud
>>
>>
>> _____________________________________
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>>
>> Kitware offers ITK Training Courses, for more information visit:
>> http://www.kitware.com/products/protraining.php
>>
>> Please keep messages on-topic and check the ITK FAQ at:
>> http://www.itk.org/Wiki/ITK_FAQ
>>
>> Follow this link to subscribe/unsubscribe:
>> http://www.itk.org/mailman/listinfo/insight-users
>>

_____________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html

Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php

Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ

Follow this link to subscribe/unsubscribe:
http://www.itk.org/mailman/listinfo/insight-users

Kiunke, Sebastian | 1 Jun 2012 14:00
Picon

Re: DeformableModel SimplexMesh self-intersecting and decimation

Hi Luis,

as i understand QuadEdgeMesh is another strucuture for a mesh. But i want to use the SimplexMesh for
deformation and image-segmentation. Could you explain to me in which way i should use the QuadEdgeMesh?

Sebastian

________________________________
Von: Luis Ibanez [luis.ibanez@...]
Gesendet: Montag, 28. Mai 2012 23:47
An: Kiunke, Sebastian
Cc: insight-users@...
Betreff: Re: [Insight-users] DeformableModel SimplexMesh self-intersecting and decimation

Hi Sebastien,

You could avoid this problem by simply
using the QuadEdgeMesh class.

http://www.itk.org/Doxygen/html/classitk_1_1QuadEdgeMesh.html

The structure of the QuadEdgeMesh class
is designed from the base to ensure the
consistency of the orientation of its cells.

     Luis

---------------------------------------------------
On Thu, May 24, 2012 at 6:13 AM, Kiunke, Sebastian
<Sebastian.Kiunke@...<mailto:Sebastian.Kiunke@...>> wrote:
Hallo again,

i wrote a few days ago, that some Normals of my SimplexMesh are flipped and i still have no clue why. I used the
ComputeNormal function of itk::SimplexMesh and i calculated it 2 times myself like written in
delingette'99 and the standard way with cross-produkt.

Apart from that i have another question. When i use a model as inital  mesh for deformation, then the surface
has some parts where it is slightly concave. My Problem here is, that when i deform the surface along the
normals, it can happen that the surface self-intersects at these parts. Is the an opportunity to solve
this problem? A Class that detects self-intersections or that can decimate the SimplexMesh? Or anything
in literature to solve this problem, i didn't found something interesting yet.
When i decimate the triangulated SimplexMesh in vtk via decimatePro or QuadricDecimation, it doesent
solve the problem and the mesh looks inordinate in relation to the size of the cells.

Sebastian
_____________________________________
Powered by www.kitware.com<http://www.kitware.com>

Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html

Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php

Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ

Follow this link to subscribe/unsubscribe:
http://www.itk.org/mailman/listinfo/insight-users

_____________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html

Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php

Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ

Follow this link to subscribe/unsubscribe:
http://www.itk.org/mailman/listinfo/insight-users

Bradley Lowekamp | 1 Jun 2012 14:58
Picon

Re: ScalarImageToHistogramGenerator in Python

Hello,

What version of ITK and WrapITK are you using? What platform? What python? etc...

I am not sure how you are getting your list of methods. However I have the latest build from master and I get the following:

 dir( itk.ScalarImageToHistogramGenerator.IUC2.New() )
Out[12]: 
['AddObserver',
 'BreakOnError',
 'Clone',
 'Compute',
 'CreateAnother',
 'DebugOff',
 'DebugOn',
 'GetCommand',
 'GetDebug',
 'GetGlobalWarningDisplay',
 'GetMTime',
 'GetMetaDataDictionary',
 'GetNameOfClass',
 'GetOutput',
 'GetPointer',
 'GetReferenceCount',
 'GetTimeStamp',
 'GlobalWarningDisplayOff',
 'GlobalWarningDisplayOn',
 'HasObserver',
 'InvokeEvent',
 'Modified',
 'New',
 'Print',
 'RemoveAllObservers',
 'RemoveObserver',
 'SetDebug',
 'SetGlobalWarningDisplay',
 'SetHistogramMax',
 'SetHistogramMin',
 'SetInput',
 'SetMarginalScale',
 'SetMetaDataDictionary',
 'SetNumberOfBins',
 '__New_orig__',
 '__class__',
 '__delattr__',
 '__dict__',
 '__doc__',
 '__eq__',
 '__format__',
 '__getattribute__',
 '__hash__',
 '__init__',
 '__module__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__swig_destroy__',
 '__weakref__',
 'cast',
 'this',
 'thisown']


On Jun 1, 2012, at 2:42 AM, Rasmus Termo Lundsgaard wrote:

Dear All!

I'm a fairly new user of ITK, and like it very much as I can implement it
easily together with my other programming in Python.

I would like to perform a histogram calculation on som scalar images that I
have, and I am trying to implement do it as in
Examples/Statistics/ImageHistogram2.cxx but in Python.

the reader I write as

reader = itk.ImageFileReader.IUC2.New()

and was thinking that I could do the same with the
itk.ScalarImageToHistogramGenerator but it doesn't work...

SIHG=itk.ScalarImageToHistogramGenerator.IUC2.New()

SIHG only have these subclasses then:
SIHG.GetPointer  SIHG.IsNotNull   SIHG.IsNull      SIHG.Print
SIHG.this        SIHG.thisown

?!?

Whereas itk.ScalarImageToHistogramGenerator.IUC2 has:
itk.ScalarImageToHistogramGenerator.IUC2.AddObserver
itk.ScalarImageToHistogramGenerator.IUC2.BreakOnError
itk.ScalarImageToHistogramGenerator.IUC2.Compute
itk.ScalarImageToHistogramGenerator.IUC2.CreateAnother
itk.ScalarImageToHistogramGenerator.IUC2.DebugOff
itk.ScalarImageToHistogramGenerator.IUC2.DebugOn
itk.ScalarImageToHistogramGenerator.IUC2.Delete
itk.ScalarImageToHistogramGenerator.IUC2.GetCommand
itk.ScalarImageToHistogramGenerator.IUC2.GetDebug
itk.ScalarImageToHistogramGenerator.IUC2.GetGlobalWarningDisplay
itk.ScalarImageToHistogramGenerator.IUC2.GetMTime
itk.ScalarImageToHistogramGenerator.IUC2.GetMetaDataDictionary
itk.ScalarImageToHistogramGenerator.IUC2.GetNameOfClass
itk.ScalarImageToHistogramGenerator.IUC2.GetOutput
itk.ScalarImageToHistogramGenerator.IUC2.GetReferenceCount
itk.ScalarImageToHistogramGenerator.IUC2.GlobalWarningDisplayOff
itk.ScalarImageToHistogramGenerator.IUC2.GlobalWarningDisplayOn
itk.ScalarImageToHistogramGenerator.IUC2.HasObserver
itk.ScalarImageToHistogramGenerator.IUC2.InvokeEvent
itk.ScalarImageToHistogramGenerator.IUC2.Modified
itk.ScalarImageToHistogramGenerator.IUC2.New
itk.ScalarImageToHistogramGenerator.IUC2.Print
itk.ScalarImageToHistogramGenerator.IUC2.Register
itk.ScalarImageToHistogramGenerator.IUC2.RemoveAllObservers
itk.ScalarImageToHistogramGenerator.IUC2.RemoveObserver
itk.ScalarImageToHistogramGenerator.IUC2.SetDebug
itk.ScalarImageToHistogramGenerator.IUC2.SetGlobalWarningDisplay
itk.ScalarImageToHistogramGenerator.IUC2.SetHistogramMax
itk.ScalarImageToHistogramGenerator.IUC2.SetHistogramMin
itk.ScalarImageToHistogramGenerator.IUC2.SetInput
itk.ScalarImageToHistogramGenerator.IUC2.SetMarginalScale
itk.ScalarImageToHistogramGenerator.IUC2.SetMetaDataDictionary
itk.ScalarImageToHistogramGenerator.IUC2.SetNumberOfBins
itk.ScalarImageToHistogramGenerator.IUC2.SetReferenceCount
itk.ScalarImageToHistogramGenerator.IUC2.UnRegister
itk.ScalarImageToHistogramGenerator.IUC2.mro

How do I Implement this in Python?

Best regards
Termo

_____________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html

Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php

Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ

Follow this link to subscribe/unsubscribe:
http://www.itk.org/mailman/listinfo/insight-users

========================================================

Bradley Lowekamp  

Medical Science and Computing for

Office of High Performance Computing and Communications

National Library of Medicine 

blowekamp-2loH/HJHQuifRvmTrFJqzg@public.gmane.org




_____________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html

Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php

Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ

Follow this link to subscribe/unsubscribe:
http://www.itk.org/mailman/listinfo/insight-users
Erkang Cheng | 1 Jun 2012 19:13
Picon

best way to subsample/rescale a volume ?

Hi everyone:


I briefly summarize my questions.
What is the best way to subsample or rescale a volume? And do we need low-pass filter to smooth the original volume?
If so, how to set sigma of RecursiveGaussianImageFilter ? Thanks.

I have tried these approaches by ITK.

1) Examples/Filtering/ResampleImageFilter1.cxx.

    only use ResampleImageFilter and not involve low-pass filter. 

2) Examples/Filtering/SubsampleVolume.cxx.

   Before use ResampleImageFilter, a recursive RecursiveGaussianImageFilter is used to smooth the original volume.
   And the parameters of guassian filter are set by:

     const double sigmaX = inputSpacing[0] * factorX;
     const double sigmaY = inputSpacing[1] * factorY;
     const double sigmaZ = inputSpacing[2] * factorZ;
     smootherX->SetSigma( sigmaX );
     smootherY->SetSigma( sigmaY );
     smootherZ->SetSigma( sigmaZ );

Which one is the appropriated way to subsample or rescale a volume. 
I tried one volume by these methods. The result one the first one is much clear than the second one which involved with low-pass filter.
The result of the second one is fuzzy in some degree.

I doubt the reason is the parameter simga  RecursiveGaussianImageFilter affect the result. 
There is a solution provided from

In there method, the parameters are set to: 
        const double sigmaX = inputSpacing[0] * factorX * 0.61;
const double sigmaY = inputSpacing[1] * factorY * 0.61;
const double sigmaZ = inputSpacing[2] * factorZ * 0.61;

smootherX->SetSigma( sigmaX );
smootherY->SetSigma( sigmaY );
smootherZ->SetSigma( sigmaZ );

If we need smooth the volume and how to set the parameter of RecursiveGaussianImageFilter? Thanks.
_____________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html

Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php

Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ

Follow this link to subscribe/unsubscribe:
http://www.itk.org/mailman/listinfo/insight-users
alaamegawer | 1 Jun 2012 23:33
Picon
Favicon

vtk datatype problem


Hi all 

i'm trying to read and display 3D image with itk and vtk but the main
problem image has 2 byte per pixel 
so at reading i create imagetype with unsigned short then while trying to
display i got this error

vtkOpenGLImageActor (03544288): This filter requires unsigned char scalars
as input

what can i do to solve this and keep all data without loss?

please ANY HELP

Alaa
-- 
View this message in context: http://old.nabble.com/vtk-datatype-problem-tp33947425p33947425.html
Sent from the ITK - Users mailing list archive at Nabble.com.

_____________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html

Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php

Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ

Follow this link to subscribe/unsubscribe:
http://www.itk.org/mailman/listinfo/insight-users

John Drescher | 1 Jun 2012 23:44
Picon

Re: vtk datatype problem

> i'm trying to read and display 3D image with itk and vtk but the main
> problem image has 2 byte per pixel
> so at reading i create imagetype with unsigned short then while trying to
> display i got this error
>
>
> vtkOpenGLImageActor (03544288): This filter requires unsigned char scalars
> as input
>
> what can i do to solve this and keep all data without loss?
>

The display is 8 bit so it will need to be 8 bit to view. Put
vtkImageMapToColors  in your pipeline to allow you to window and level
out the best 8 bit for display.

John
_____________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html

Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php

Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ

Follow this link to subscribe/unsubscribe:
http://www.itk.org/mailman/listinfo/insight-users

John Drescher | 2 Jun 2012 00:19
Picon

Re: vtk datatype problem

On Fri, Jun 1, 2012 at 5:44 PM, John Drescher <drescherjm@...> wrote:
>> i'm trying to read and display 3D image with itk and vtk but the main
>> problem image has 2 byte per pixel
>> so at reading i create imagetype with unsigned short then while trying to
>> display i got this error
>>
>>
>> vtkOpenGLImageActor (03544288): This filter requires unsigned char scalars
>> as input
>>
>> what can i do to solve this and keep all data without loss?
>>
>
> The display is 8 bit so it will need to be 8 bit to view. Put
> vtkImageMapToColors  in your pipeline to allow you to window and level
> out the best 8 bit for display.
>

vtkImageMapToWindowLevelColors is a better choice for your
application. however I can not help now.

John

--

-- 
John M. Drescher
_____________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html

Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php

Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ

Follow this link to subscribe/unsubscribe:
http://www.itk.org/mailman/listinfo/insight-users


Gmane