[SciPy-dev] ndimage problems

Christopher Hanley chanley@stsci....
Tue Oct 9 19:50:46 CDT 2007


Stefan van der Walt wrote:
> Hi Chris
>
> On Tue, Jul 03, 2007 at 12:25:55PM -0400, Christopher Hanley wrote:
>   
>> We have found two problems with ndimage.  I have filed a ticket #455 on 
>> the scipy trac page.  The first problem can be seen with this example:
>>
>>  > import numpy as n
>>  > from scipy import ndimage as nd
>>  > a = n.ones((10,5),dtype=n.float32) * 12.3
>>  > x = nd.rotate(a,90.0)
>>  > x
>> Out[17]:
>> array([[ 12.30000019,  12.30000019,  12.30000019,  12.30000019,
>>         12.30000019,  12.30000019,  12.30000019,  12.30000019,
>>          0.        ,   0.        ],
>>       [ 12.30000019,  12.30000019,  12.30000019,  12.30000019,
>>         12.30000019,  12.30000019,  12.30000019,  12.30000019,
>>         12.30000019,  12.30000019],
>>       [ 12.30000019,  12.30000019,  12.30000019,  12.30000019,
>>         12.30000019,  12.30000019,  12.30000019,  12.30000019,
>>         12.30000019,  12.30000019],
>>       [ 12.30000019,  12.30000019,  12.30000019,  12.30000019,
>>         12.30000019,  12.30000019,  12.30000019,  12.30000019,
>>         12.30000019,  12.30000019],
>>       [ 12.30000019,  12.30000019,  12.30000019,  12.30000019,
>>         12.30000019,  12.30000019,  12.30000019,  12.30000019,
>>         12.30000019,  12.30000019]], dtype=float32)
>> }}}
>>
>> Notice that the last two entries of the first row are now 0.
>>     
>
> This is due to a slight round-off error when calculating the affine
> transformation matrix.  cos(pi/180 * angle) isn't exactly zero, so you
> find that elements that fall *just* outside the boundary gets
> converted to the cval (0).  You can work around the problem in two
> ways.
>
> The first is to setup your own transformation matrix:
>
> nd.affine_transform(a,[[0,1],[-1,0]],offset=[0,4],output_shape=(5,10))
>
> The second is to use 'mirror' boundary mode, instead of 'cval',
> thereby nudging those outliers back into place.
>
>   
>> The second problem has to do with the reversing of byte order if you 
>> have big-endian data on a little endian machine.  Please see the example 
>> below:
>>     
>
> Thanks, I'll have a look at that.
>
> Regards
> Stéfan
> _______________________________________________
> Scipy-dev mailing list
> Scipy-dev@scipy.org
> http://projects.scipy.org/mailman/listinfo/scipy-dev
>   
Stefan. 

I have patched  the second issue.  The fix went out with the last 
release.  Thank you for the solution to the first problem.

Chris

-- 
Christopher Hanley
Systems Software Engineer
Space Telescope Science Institute
3700 San Martin Drive
Baltimore MD, 21218
(410) 338-4338





More information about the Scipy-dev mailing list