Imaging libraries in active development?

Discussion in 'Python' started by Alasdair McAndrew, Nov 28, 2012.

  1. I'm investigating Python for image processing (having used Matlab, then Octave for some years). And I'm spoiled for choice: PIL and its fork pillow, scipy.ndimage, scikits-image, mahotas, the Python interface to openCV...

    However, PIL doesn't seem to be in active development. What I want to know is - what are the current "standard" libraries for image processing in Python which are in active development?

    I have quite a few image processing student notes which I'm thinking of converting to Python, but I'd like to use the most up-to-date library.

    Thanks,
    Alasdair
     
    Alasdair McAndrew, Nov 28, 2012
    #1
    1. Advertising

  2. Alasdair McAndrew

    Jorgen Grahn Guest

    On Wed, 2012-11-28, Christian Heimes wrote:
    > Am 28.11.2012 19:14, schrieb Michael Torrie:
    >> I'm curious. What features do you need that pil doesn't have? Other
    >> than updating pil to fix bugs, support new image types or new versions
    >> of Python, what kind of active development do you think it needs to
    >> have? Maybe pil has all the features the original author wanted and is
    >> pretty stable. To judge a package on how fast it's changing seems a bit
    >> odd to me.


    Not to me -- the slower the change, the better!

    >> Obviously you want to know that bugs can get fixed of
    >> course. Perhaps none have been reported recently.

    >
    > PIL is missing a bunch of features like proper TIFF support (no
    > multipage, g3/g4 compression and more), JPEG 2000,


    I thought those formats were dead since about a decade? (Ok, I know
    TIFF has niches, but JPEG 2000?)

    > RAW and HDR image
    > formats, tone mapping, proper ICC support, PEP 3128 buffer support ...


    I won't comment on those, but they seem likely to be valid complaints.

    > PIL is also rather slow. My smc.freeimage library can write JPEGs about
    > six times faster, because it uses libjpeg-turbo. Only some Linux
    > distributions have replaced libjpeg with the turbo implementation.


    That seems like an argument for *not* having support for many file
    formats in the imaging library itself -- just pipeline into the best
    standalone utilities available.

    /Jorgen

    --
    // Jorgen Grahn <grahn@ Oo o. . .
    \X/ snipabacken.se> O o .
     
    Jorgen Grahn, Nov 28, 2012
    #2
    1. Advertising

  3. I take your point that not being actively developed doesn't necessarily mean that the software is bad - but in general healthy software is continuously updated and expanded to meet the needs of its users, or to take advantageof new algorithms or hardware.

    And in its current form PIL has a number of limitations: it doesn't allow linear filters of arbitrary size or shape, or non-linear filters (such as median filter) of arbitrary size. There doesn't seem to be built in support for standard imaging filters: Gaussian, Laplacian, LoG, edge detection, unsharp masking and so on. It doesn't seem to have support for color space conversions (RGB, YIQ, HSV etc). There don't seem to be standard edge detection routines (Laplacian of Gaussian, Canny, etc). And so on. Now maybe some of these can be found in other Python libraries, but I can't imagine I'm the only person who would ever want them in an imaging library. Other libraries (scipy.ndimage, scikits-image) do go a long way to addressing my concerns.

    Anyway, I was curious to know why PIL is lacking so much of what I would consider fairly fundamental imaging facilities, and why development seems to have stalled since 2009.

    On Thursday, 29 November 2012 05:14:30 UTC+11, Michael Torrie wrote:
    > On 11/28/2012 05:30 AM, Alasdair McAndrew wrote:
    >
    > > I'm investigating Python for image processing (having used Matlab,

    >
    > > then Octave for some years). And I'm spoiled for choice: PIL and its

    >
    > > fork pillow, scipy.ndimage, scikits-image, mahotas, the Python

    >
    > > interface to openCV...

    >
    > >

    >
    > > However, PIL doesn't seem to be in active development. What I want

    >
    > > to know is - what are the current "standard" libraries for image

    >
    > > processing in Python which are in active development?

    >
    > >

    >
    > > I have quite a few image processing student notes which I'm thinking

    >
    > > of converting to Python, but I'd like to use the most up-to-date

    >
    > > library.

    >
    >
    >
    > I'm curious. What features do you need that pil doesn't have? Other
    >
    > than updating pil to fix bugs, support new image types or new versions
    >
    > of Python, what kind of active development do you think it needs to
    >
    > have? Maybe pil has all the features the original author wanted and is
    >
    > pretty stable. To judge a package on how fast it's changing seems a bit
    >
    > odd to me. Obviously you want to know that bugs can get fixed of
    >
    > course. Perhaps none have been reported recently.
     
    Alasdair McAndrew, Nov 29, 2012
    #3
  4. Alasdair McAndrew

    zoom Guest

    Imaging library

    C'mon guys, don't be so picky.
    The point is that that he cannot find python library that can easily
    create HDR image or process RAW images (or some other image format).
    Also, AFAIK there is no built in support for standard imaging filters,
    color space conversion, etc (as Alasdair also mentioned). One can do
    this with scipy, and this is how I do it. But I'm also interested if
    there is some library that implements any of those. IMHO it would be
    useful if one could code the same effects easily as clicking on the
    effect button in GIMP or Blender.
    This is interesting question, and if any of you have any ideas on how
    this can be achieved, please share your knowledge with us.

    P.S.
    We do not need to tutor people about whether a RAW format is a specific
    image format or not (http://en.wikipedia.org/wiki/Raw_image_format) - we
    understand the point of his question albeit it is not clearly stated.
    Assume good will - nobody is stating that PIL or scipy are bad, we
    simply ask whether there is something more out there.

    It would be more useful if we would provide information on how to do it,
    or connect him with someone who can do it. Or point where he can request
    such feature or publish his solution. The policy not to implement every
    format under the sky is a legal one, but by implementing it one-by-one -
    together we might even get there.
     
    zoom, Nov 29, 2012
    #4
  5. Thanks for the heads-up about OpenCV. I have in fact briefly looked at OpenCV (well, the documentation), and it does seem remarkably complete. And what it doesn't provide, such as image transforms (FFT, DCT etc), are offered elsewhere by other Python libraries.

    Probably the combinations of OpenCV, Scipy.ndimage and scikits-image would cover pretty much all of my needs.

    Thanks,
    Alasdair
    > Hey Alasdair,
    >
    >
    >
    > I believe OpenCV might do the trick for you:
    >
    > - it contains everything you seem to need (+ much much more);
    >
    > - it is efficient;
    >
    > - it is cross-platform;
    >
    > - it has a usable python interface since version 2.4;
    >
    > - it is not going away any time soon and is constantly improved;
    >
    > - it has an active user base.
    >
    >
    >
    > But (there is always a but), it also has some issues:
    >
    > - (the main one for me) documentation is often incomplete or even
    >
    > sometimes cryptic: the website (http://docs.opencv.org/) is great, but,
    >
    > IIRC, the docstrings are automatically generated from the C++ prototypes
    >
    > using Boost.Python; some trial & error is often necessary to find out
    >
    > what the parameters of a function should be;
    >
    > - it may be overkill if you just want to do some basic image processing
    >
    > (maybe scikits-image is a better choice there?).
    >
    >
    >
    > Hope this helps,
    >
    >
    >
    > Adrien
    >
    >
    >
    > Le 29/11/2012 07:53, Alasdair McAndrew a écrit :
    >
    > > I take your point that not being actively developed doesn't necessarilymean that the software is bad - but in general healthy software is continuously updated and expanded to meet the needs of its users, or to take advantage of new algorithms or hardware.

    >
    > >

    >
    > > And in its current form PIL has a number of limitations: it doesn't allow linear filters of arbitrary size or shape, or non-linear filters (such as median filter) of arbitrary size. There doesn't seem to be built in support for standard imaging filters: Gaussian, Laplacian, LoG, edge detection, unsharp masking and so on. It doesn't seem to have support for color spaceconversions (RGB, YIQ, HSV etc). There don't seem to be standard edge detection routines (Laplacian of Gaussian, Canny, etc). And so on. Now maybesome of these can be found in other Python libraries, but I can't imagine I'm the only person who would ever want them in an imaging library. Other libraries (scipy.ndimage, scikits-image) do go a long way to addressing my concerns.

    >
    > >

    >
    > > Anyway, I was curious to know why PIL is lacking so much of what I would consider fairly fundamental imaging facilities, and why development seemsto have stalled since 2009.

    >
    > >

    >
    > > On Thursday, 29 November 2012 05:14:30 UTC+11, Michael Torrie wrote:

    >
    > >> On 11/28/2012 05:30 AM, Alasdair McAndrew wrote:

    >
    > >>

    >
    > >>> I'm investigating Python for image processing (having used Matlab,

    >
    > >>> then Octave for some years). And I'm spoiled for choice: PIL and its

    >
    > >>> fork pillow, scipy.ndimage, scikits-image, mahotas, the Python

    >
    > >>> interface to openCV...

    >
    > >>> However, PIL doesn't seem to be in active development. What I want

    >
    > >>> to know is - what are the current "standard" libraries for image

    >
    > >>> processing in Python which are in active development?

    >
    > >>> I have quite a few image processing student notes which I'm thinking

    >
    > >>> of converting to Python, but I'd like to use the most up-to-date

    >
    > >>> library.

    >
    > >>

    >
    > >>

    >
    > >> I'm curious. What features do you need that pil doesn't have? Other

    >
    > >>

    >
    > >> than updating pil to fix bugs, support new image types or new versions

    >
    > >>

    >
    > >> of Python, what kind of active development do you think it needs to

    >
    > >>

    >
    > >> have? Maybe pil has all the features the original author wanted and is

    >
    > >>

    >
    > >> pretty stable. To judge a package on how fast it's changing seems a bit

    >
    > >>

    >
    > >> odd to me. Obviously you want to know that bugs can get fixed of

    >
    > >>

    >
    > >> course. Perhaps none have been reported recently.
     
    Alasdair McAndrew, Nov 29, 2012
    #5
  6. Thanks for the heads-up about OpenCV. I have in fact briefly looked at OpenCV (well, the documentation), and it does seem remarkably complete. And what it doesn't provide, such as image transforms (FFT, DCT etc), are offered elsewhere by other Python libraries.

    Probably the combinations of OpenCV, Scipy.ndimage and scikits-image would cover pretty much all of my needs.

    Thanks,
    Alasdair
    > Hey Alasdair,
    >
    >
    >
    > I believe OpenCV might do the trick for you:
    >
    > - it contains everything you seem to need (+ much much more);
    >
    > - it is efficient;
    >
    > - it is cross-platform;
    >
    > - it has a usable python interface since version 2.4;
    >
    > - it is not going away any time soon and is constantly improved;
    >
    > - it has an active user base.
    >
    >
    >
    > But (there is always a but), it also has some issues:
    >
    > - (the main one for me) documentation is often incomplete or even
    >
    > sometimes cryptic: the website (http://docs.opencv.org/) is great, but,
    >
    > IIRC, the docstrings are automatically generated from the C++ prototypes
    >
    > using Boost.Python; some trial & error is often necessary to find out
    >
    > what the parameters of a function should be;
    >
    > - it may be overkill if you just want to do some basic image processing
    >
    > (maybe scikits-image is a better choice there?).
    >
    >
    >
    > Hope this helps,
    >
    >
    >
    > Adrien
    >
    >
    >
    > Le 29/11/2012 07:53, Alasdair McAndrew a écrit :
    >
    > > I take your point that not being actively developed doesn't necessarilymean that the software is bad - but in general healthy software is continuously updated and expanded to meet the needs of its users, or to take advantage of new algorithms or hardware.

    >
    > >

    >
    > > And in its current form PIL has a number of limitations: it doesn't allow linear filters of arbitrary size or shape, or non-linear filters (such as median filter) of arbitrary size. There doesn't seem to be built in support for standard imaging filters: Gaussian, Laplacian, LoG, edge detection, unsharp masking and so on. It doesn't seem to have support for color spaceconversions (RGB, YIQ, HSV etc). There don't seem to be standard edge detection routines (Laplacian of Gaussian, Canny, etc). And so on. Now maybesome of these can be found in other Python libraries, but I can't imagine I'm the only person who would ever want them in an imaging library. Other libraries (scipy.ndimage, scikits-image) do go a long way to addressing my concerns.

    >
    > >

    >
    > > Anyway, I was curious to know why PIL is lacking so much of what I would consider fairly fundamental imaging facilities, and why development seemsto have stalled since 2009.

    >
    > >

    >
    > > On Thursday, 29 November 2012 05:14:30 UTC+11, Michael Torrie wrote:

    >
    > >> On 11/28/2012 05:30 AM, Alasdair McAndrew wrote:

    >
    > >>

    >
    > >>> I'm investigating Python for image processing (having used Matlab,

    >
    > >>> then Octave for some years). And I'm spoiled for choice: PIL and its

    >
    > >>> fork pillow, scipy.ndimage, scikits-image, mahotas, the Python

    >
    > >>> interface to openCV...

    >
    > >>> However, PIL doesn't seem to be in active development. What I want

    >
    > >>> to know is - what are the current "standard" libraries for image

    >
    > >>> processing in Python which are in active development?

    >
    > >>> I have quite a few image processing student notes which I'm thinking

    >
    > >>> of converting to Python, but I'd like to use the most up-to-date

    >
    > >>> library.

    >
    > >>

    >
    > >>

    >
    > >> I'm curious. What features do you need that pil doesn't have? Other

    >
    > >>

    >
    > >> than updating pil to fix bugs, support new image types or new versions

    >
    > >>

    >
    > >> of Python, what kind of active development do you think it needs to

    >
    > >>

    >
    > >> have? Maybe pil has all the features the original author wanted and is

    >
    > >>

    >
    > >> pretty stable. To judge a package on how fast it's changing seems a bit

    >
    > >>

    >
    > >> odd to me. Obviously you want to know that bugs can get fixed of

    >
    > >>

    >
    > >> course. Perhaps none have been reported recently.
     
    Alasdair McAndrew, Nov 29, 2012
    #6
  7. Alasdair McAndrew

    Nobody Guest

    On Wed, 28 Nov 2012 04:30:25 -0800, Alasdair McAndrew wrote:

    > What I want to know is - what are the current "standard" libraries for
    > image processing in Python which are in active development?


    NumPy/SciPy.

    PIL is fine for loading/saving image files (although if you're using a GUI
    toolkit, that probably has its own equivalents). But for any non-trivial
    processing, I normally end up using either NumPy or (if speed is an issue)
    PyOpenGL/GLSL.
     
    Nobody, Nov 29, 2012
    #7
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Berlin  Brown
    Replies:
    1
    Views:
    516
    P.Hill
    Apr 8, 2005
  2. Karsten Wutzke
    Replies:
    21
    Views:
    946
    Roedy Green
    Jun 29, 2007
  3. Sriram Srinivasan
    Replies:
    13
    Views:
    596
    Benjamin Kaplan
    Nov 12, 2009
  4. carlos seramos
    Replies:
    2
    Views:
    521
    carlos seramos
    Aug 1, 2003
  5. Luis Pedro Coelho

    Re: Imaging libraries in active development?

    Luis Pedro Coelho, Dec 2, 2012, in forum: Python
    Replies:
    0
    Views:
    184
    Luis Pedro Coelho
    Dec 2, 2012
Loading...

Share This Page