[MINC-users] mincblur and single slices
Claude LEPAGE
claude at bic.mni.mcgill.ca
Mon May 17 17:06:11 EDT 2010
Hi Alex,
After some investigation, this bug has been fixed. Somewhere deep in
initialize_minc_input_from_minc_id() (file minc/volume_io/Volumes/input_mnc.c),
the new code looks like:
file->n_slab_dims = 0;
slab_size = 1;
int unit_size = get_type_size( get_volume_data_type(volume) );
int full_dim = 1;
for( d = file->n_file_dimensions-1; d >= 0; d-- ) {
if( file->to_volume_index[d] != INVALID_AXIS ) {
if( MI_MAX_VAR_BUFFER_SIZE > file->sizes_in_file[d] * slab_size * unit_size && full_dim ) {
slab_size *= file->sizes_in_file[d];
file->n_slab_dims++; /* integral number of complete dimensions */
} else {
slab_size *= MIN( file->sizes_in_file[d],
(hsize_t)( MI_MAX_VAR_BUFFER_SIZE / ( slab_size * unit_size ) ) );
full_dim = 0;
}
}
}
In comparison, the old code from minc-2.0.18 does not have the full_dim check.
There is an analogous piece of code in output_mnc.c. Do I really need to explain
what this cryptic piece of code is doing or can your trust me? The changes are
in CVS:
2009-11-06 Claude Lepage <claude@@bic.mni.mcgill.ca>
* volume_io/Volumes/output_mnc.c: fix output buffers for a slice
as only first buffer would be written out
So either checkout minc from cvs or wait till Andrew releases the next version
(which should be two months ago). :-)
Claude
> I ran into a number of mincblur oddities when dealing with
> single-slice minc volumes. For example, I have a single-slice image
> that, when blurred with:
>
> mincblur -no_apodize -dim 2 -fwhm 1 <in.mnc> <out>
>
> generates the expected result; However, when I happened to convert the
> datatype of that same slice from byte to short ran the same mincblur
> call, the result suffered from a wraparound effect. See the image at
>
> http://dl.dropbox.com/u/5709165/mincblur/test_blur.jpg
>
> with the underlying data in
>
> http://dl.dropbox.com/u/5709165/mincblur/test_blur.tar.gz
>
> I have also seen such wraparound effects appear as a function of image
> dimensions (regardless of data type). So from what I can tell mincblur
> is broken when it comes to dealing with single-slice data; but broken
> in a somewhat unpredictable way because in certain circumstances it
> will actually do the right thing (as in the 'byte' example I gave).
> Padding the image with a slice above and below will make the problem
> from this example go away; but again, I am not sure how the failures
> depend on the number of slices added.
>
> Is anybody familiar enough with the innards of mincblur to address
> this issue? Ideally it would be fixed such as to allow proper 2D
> blurring on single-slice volumes; but barring that, it would be good
> if at least it generated an error as opposed to silently and
> unpredictably doing the right or wrong thing.
>
> Thanks,
>
> -- Alex
> _______________________________________________
> MINC-users at bic.mni.mcgill.ca
> http://www.bic.mni.mcgill.ca/mailman/listinfo/minc-users
>
More information about the MINC-users
mailing list