Generic image coordinate transformation using a matrix

Maik Riechert maik.riechert at arcor.de
Thu Sep 11 04:56:56 EDT 2014


I just tested it and it doesn't work yet.
My image is an uint8 array of shape (2832, 4256, 3), and the coordinate 
array is float32 (2832, 4256, 2) but when using skimage.transform.warp(im, 
undistCoords) I get:


Traceback (most recent call last):
  File ...
    imUndistorted = skimage.transform.warp(im, undistCoords)
  File 
"/home/mriecher/.local/lib/python2.7/site-packages/skimage/transform/_geometric.py", 
line 1153, in warp
    mode=mode, order=order, cval=cval)
  File "/usr/lib/python2.7/dist-packages/scipy/ndimage/interpolation.py", 
line 289, in map_coordinates
    raise RuntimeError('invalid shape for coordinate array')
RuntimeError: invalid shape for coordinate array

Looking at map_coordinates:

    if coordinates.shape[0] != input.ndim:
        raise RuntimeError('invalid shape for coordinate array')

I tried some other array shapes but couldn't make it work. What's the 
correct way here?

Maik


Am Mittwoch, 10. September 2014 19:44:11 UTC+2 schrieb Johannes Schönberger:
>
> Mark, can you check, that this works for you? 
>
> https://github.com/scikit-image/scikit-image/pull/1142 
>
> Johannes Schönberger 
>
> On Sep 10, 2014, at 1:23 PM, Johannes Schönberger <js... at demuc.de 
> <javascript:>> wrote: 
>
> > Hi Mark, 
> > 
> > You can do this with `ndimage.map_coordinates`, see 
> https://github.com/scikit-image/scikit-image/blob/master/skimage/transform/_geometric.py#L1134 
> for an usage example. 
> > 
> > But we should add this feature, so that `warp` also directly takes the 
> coordinates. I opened a new issue for this: 
> https://github.com/scikit-image/scikit-image/issues/1141 
> > 
> > Johannes Sch önberger 
> > 
> > On Sep 10, 2014, at 11:06 AM, Maik Riechert <maik.r... at arcor.de 
> <javascript:>> wrote: 
> > 
> >> Hi, 
> >> 
> >> When I want to undistort photographs I use the lensfunpy library (
> https://pypi.python.org/pypi/lensfunpy) which provides me with a 
> coordinates array of shape (h,w,2), that is for each input pixel it 
> provides the undistorted pixel location. When using OpenCV I can do 
> undistortedImage = cv2.remap(image, undistCoords, None, 
> cv2.INTER_LANCZOS4). I saw that there is the skimage.transform.warp 
> function but I'm not sure how or if I can use that in my case. I would be 
> glad for some directions. 
> >> 
> >> Thanks 
> >> Maik 
> >> 
> >> -- 
> >> You received this message because you are subscribed to the Google 
> Groups "scikit-image" group. 
> >> To unsubscribe from this group and stop receiving emails from it, send 
> an email to scikit-image... at googlegroups.com <javascript:>. 
> >> For more options, visit https://groups.google.com/d/optout. 
> > 
> > -- 
> > You received this message because you are subscribed to the Google 
> Groups "scikit-image" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an email to scikit-image... at googlegroups.com <javascript:>. 
> > For more options, visit https://groups.google.com/d/optout. 
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/scikit-image/attachments/20140911/1af004ce/attachment.html>


More information about the scikit-image mailing list