[vtkusers] vtkVolumePicker
David Gobbi
david.gobbi at gmail.com
Thu Apr 21 22:53:51 EDT 2016
Hi Richard,
Try different values for picker->SetVolumeOpacityIsovalue(x). For a binary
volume, a value of 0.51 will work better than the default value of 0.05.
While debugging this, you can use picker->GetPCoords() to get the
fractional part of the IJK coords.
- David
On Thu, Apr 21, 2016 at 8:19 PM, Richard Frank <rickfrank at me.com> wrote:
> Hi David
>
> I have a binary volume (thresholded from a gray volume). The opacity
> transfer function sets 0 to transparent and 1.0 to opaque.
>
> There are some noise areas and I've created an eraser tool so the user can
> erase some individual voxels.
>
> Since the volume is mostly black, and I need to do computations on the
> non-zero voxels later, I first go through the volume k = 0 < kmax, j = 0
> < jmax x= 0 < xmax
> and build a point list where each voxel != 0 has it's voxel ijk and
> pointId recorded. So I have a cursor.
>
>
> When the user clicks, picker->GetPointIJK(ijk) returns in one case 318
> 391 452.
>
> but my cursor has
>
> 318 364 452
> 318 390 452 <------
> 319 307 88
> 319 308 88
>
> And so I don't think the point is actually hit, so I don't erase it.
>
> My ijk s are accurate - I presume - because I walk through the whole
> volume voxel by voxels to build the cursor.
>
> This is a "close" match but others are off by 4 - 10 voxels (usually in
> the z direction).
>
> I've tried doing a distance match based on the xyz coordinates (which I
> also record in my cursor) and that works the best so far, but, I still wind
> up with a lone pixel (or say a row or column of 4 - 5 pixels) that I can't
> do an inverse map to - from the hit xyz to my ijk.
>
> So it seems that the picker->ijk has some rounding or something going on
> that doesn't exactly match my precomputed ijk.
>
> Any thoughts on how to accomplish what I want to do?
>
> Thanks
>
> Rick
>
>
> On Apr 21, 2016, at 06:18 PM, David Gobbi <david.gobbi at gmail.com> wrote:
>
> Hi Richard,
>
> You'll have to lay out your methods in a bit more detail... you say that
> you need a way "reach all the voxels" in the volume, and I'm trying to wrap
> my head around what you mean by this. Picking transparent voxels is
> obviously going to be impossible. Ditto for picking any voxels that are
> surrounded by opaque voxels. I'm not sure what you man by "small
> rows/columns" either... aren't all the rows and columns in the volume the
> same size?
>
> - David
>
>
> On Thu, Apr 21, 2016 at 3:44 PM, Richard Frank <rickfrank at me.com> wrote:
>
>> Hi,
>>
>> I'm having trouble reaching all ijk in a volume using the Volume Picker.
>>
>> The computed ijk returned from the picker is in a few cases incorrect. I
>> realize there are rounding issues and such, but I'm trying to pick a single
>> voxel and I get back, say, 314,391,454 instead of 313,392,454 - in image
>> coordinates, for example.
>>
>> Most often it is fine - it's just in some cases there are small rows /
>> columns that are unreachable. Anyone have any advice on this? I assume it's
>> some sort of fractional voxel issue but I need to find a way to reach all
>> the voxels. I've tried setting the tolerance but it's unclear if that's
>> really the issue....
>>
>>
>> Thanks
>>
>> Rick
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20160421/fc16fcd4/attachment.html>
More information about the vtkusers
mailing list