Stories
Slash Boxes
Comments

SoylentNews is people

posted by cmn32480 on Saturday March 12 2016, @03:26PM   Printer-friendly
from the makeing-it-look-cool dept.

This looked like a fun and accessible tutorial on the topic of image processing that might be especially appealing to Python fans.

Image processing is the process of manipulating or performing operations on images to achieve a certain effect (making an image grayscale, for example), or of getting some information out of an image with a computer (like counting the number of circles in it).

Image processing is also very closely related to computer vision, and we do blur the line between them a lot. Don't worry too much about that – you just need to remember that we are going to learn about methods of manipulating images, and how we can use those methods to collect information about them.

In this article, I will go through some basic building blocks of image processing, and share some code and approaches to basic how-tos. All code written is in Python and uses OpenCV, a powerful image processing and computer vision library.


Original Submission

This discussion has been archived. No new comments can be posted.
Display Options Threshold/Breakthrough Mark All as Read Mark All as Unread
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
  • (Score: 3, Interesting) by Justin Case on Saturday March 12 2016, @05:10PM

    by Justin Case (4239) on Saturday March 12 2016, @05:10PM (#317383) Journal

    I've dabbled in image processing with limited success, and this article looks like it will give me a big boost.

    Also, Python is an ideal language for image processing because of its ability to gulp an entire array in one line of code. You can spend a lot more effort tinkering with your algorithm and a lot less effort writing per-pixel and per-color loops.

  • (Score: 3, Insightful) by maxwell demon on Saturday March 12 2016, @05:37PM

    by maxwell demon (1608) Subscriber Badge on Saturday March 12 2016, @05:37PM (#317394) Journal

    This is a tutorial on how to use a specific image processing library. It is not a tutorial on image processing itself. It just tells you what the library provides, and how to call those routines. That's great if you want to know how to use the image processing library, but does not teach you anything about image processing that you couldn't learn by simply looking at the menu of your favourite image manipulation program.

    There are two possibilities of what you might want to learn about image processing itself:

    • How the algorithms work. That would be a low-level image processing tutorial. That would talk about convolutions, channels, interpolations, and other details of the used algorithms.
    • When to apply certain algorithms. That would be a high-level image processing tutorial. That would talk about things like contrast and saturation, white balance, colour histograms and gradation curves (the reason I'm only talking about colour related issues here is simply a lack of knowledge — a high-level tutorial on things like sharpness and blur surely would widen my horizon).
    --
    The Tao of math: The numbers you can count are not the real numbers.
    • (Score: 5, Interesting) by physicsmajor on Saturday March 12 2016, @06:01PM

      by physicsmajor (1471) on Saturday March 12 2016, @06:01PM (#317399)

      All 100% true. This is basically an ad for OpenCV, along with a rather poor road map.

      Admitting right up front: I'm biased in that I contribute to scikit-image, another Python image processing library. However, while I respect OpenCV, I don't think OpenCV is an appropriate place to start newcomers. It's a massive library with a gigantic, cluttered main namespace under cv2 making it hard to find what you need efficiently. It's also almost entirely C under the hood, so while you technically are working with Python you have very little ability to modify or tweak these tools to your needs. From a stylistic standpoint, it flaunts PEP8 to an embarrassing degree which can create very bad habits. OpenCV is a computer vision library, first and foremost, so speed is paramount - their calculations need to be doable in well under 1/60 of a second to be usable on video in real time. There's a place for this! Just realize general purpose image processing it isn't.

      For my students and colleagues, I always start them with scikit-image which is overwhelmingly Python with Cython sprinkled in. It has a subpackage model with the algorithms grouped in second levels around a common purpose like "skimage.segmentation", "skimage.color", etc., which makes it easier for new users to navigate. The documentation is made to be user friendly, it holds to PEP8, and it promotes usability and maintainability. Finally, it's a general purpose image processing library rather than a computer vision library.

      Use what you will.

      • (Score: 0) by Anonymous Coward on Saturday March 12 2016, @07:46PM

        by Anonymous Coward on Saturday March 12 2016, @07:46PM (#317421)

        it flaunts PEP8 to an embarrassing degree which can create very bad habits

        Wasn't sure what that was, so I read it. It's the style guide, and among other things is
        states a preference for spaces over tabs. How this came to be is beyond me. Why do people
        want to torture themselves with tap-tap-tap-tap on the space bar to get the proper indent,
        when tab is all you need?

        • (Score: 2) by maxwell demon on Saturday March 12 2016, @08:26PM

          by maxwell demon (1608) Subscriber Badge on Saturday March 12 2016, @08:26PM (#317427) Journal

          Why do people want to torture themselves with tap-tap-tap-tap on the space bar to get the proper indent, when tab is all you need?

          It's about the file encoding. When you have a proper editor, you can set it so that it automatically converts between spaces and tab characters for you, in whatever style you prefer. So if you have to type "tap-tap-tap" for indenting with multiple space characters, you might want to look into a better editor (or possibly just read your editor's documentation).

          Space indenting has the advantage that it is stable under additional indenting (like quoting in emails).

          --
          The Tao of math: The numbers you can count are not the real numbers.
          • (Score: 2) by Justin Case on Saturday March 12 2016, @11:16PM

            by Justin Case (4239) on Saturday March 12 2016, @11:16PM (#317476) Journal

            And tabs are directly from Satan. Just in case you hadn't already learned that.

  • (Score: 2, Interesting) by anubi on Sunday March 13 2016, @05:33AM

    by anubi (2828) on Sunday March 13 2016, @05:33AM (#317565) Journal

    It looks to me that in a given video stream, one has access to past datas from previous perspectives, present data, and future datas simultaneously.. which looks like an opportunity to integrate noise out and sharpen the present image. Do this for all frames in a video stream. It looks to me like its feasible to re-create a high quality image stream from a low quality one, with quality dropping out on dramatic scene changes.

    There has gotta be software out already that does this. Like taking old VCR tapes and making blu-ray quality images. Or re-creating decent video from old surveillance cameras.

    --
    "Prove all things; hold fast that which is good." [KJV: I Thessalonians 5:21]