Editing Images with scikit-image

45 minutes
  • 4 Learning Objectives

About this Hands-on Lab

A picture is worth 1,000 words, and being able to work with images from your code can be worth billions (if you ask the engineers at Instagram). Work with image data is a skill that has become increasingly valuable as more of the world has access to a camera in their pocket. Images are data just like everything else that we have access to on our computers, and with `scikit-image`, we’re able to manipulate and analyze this data from our Python code. In this Hands-On Lab, we’ll go through the process of reading in an existing image and making modifications to it programmatically.

_Warning:_ This is a lab designed as part of a professional level course and is difficult. The lab asks you to accomplish something using exact methods and functionality of the `scikit-image` library that might not have been covered in lessons.

To feel comfortable completing this lab, you’ll want to know how to do the following:

– Use `scikit-image`. Watch the “Using SciKit-image” lessons from the [Using Python’s Math, Science, and Engineering Libraries](https://linuxacademy.com/cp/modules/view/id/621) course.
– Comfortability reading the [scikit-image documentation](https://scikit-image.org/docs/stable/) to find new functions and methods to use to accomplish your goal.

Learning Objectives

Successfully complete this lab by achieving the following learning objectives:

Install scikit-image

Before we can edit images we’ll need to install scikit-image.

Load the `highrise.jpg` Image into Memory.

To test the image changes that we’d like to automate, we’re going to work with a local image called highrise.jpg. This can be found at /home/cloud_user/highrise.jpg.

Create a Black and White Version of `highrise.jpg`.

The first modification we’d like to automate is the conversion of an image from being a colored/RGB image to being a black and white or grayscale image. This is a common task, and we can leverage code from within the skimage.colors module to do nearly all of the work.

Create a Copy of `highrise.jpg` with a Circular Mask.

Adding a mask to our image is a much more complicated task that requires us to index and slice the array that is backing our image’s data. To create a copy of the highrise image, we can use the copy method on our existing image object. To do the actual masking, it is worth looking at the code from this example in the scikit-image documentation.

Additional Resources

Your company would like to be able to automatically make some modifications to photographs that are uploaded onto the website so that they can present users with options such as a black and white variation of a circular version of an image. You've been tasked with creating a prototype of what this could look like in code using Python and scikit-image.

The workstation that you're using has an image called highrise.jpg (at /home/cloud_user/highrise.jpg), and you've decided to prototype this by creating a single script that will modify the image. Here are the necessary variations:

  1. Black and white (grayscale).
  2. Image with a circular mask applied. The mask should be black, but the image should not be cropped.

Logging In

There are a couple of ways to get in and work with the code. One is to use the credentials provided in the hands-on lab overview page, log in with SSH, and use a text editor in the terminal.

The other is using VS Code in the browser. If you'd like to go this route, then you will need to navigate to the public IP address of the workstation server (provided in the hands-on lab overview page) on port 9090 (example: http://PUBLIC_IP:9090).

What are Hands-on Labs

Hands-on Labs are real environments created by industry experts to help you learn. These environments help you gain knowledge and experience, practice without compromising your system, test without risk, destroy without fear, and let you learn from your mistakes. Hands-on Labs: practice your skills before delivering in the real world.

Sign In
Welcome Back!

Psst…this one if you’ve been moved to ACG!

Get Started
Who’s going to be learning?