Image Inverter & Image Adder

This week I wanted to repeat the VIS top image segmentation few days ago. It also suddenly dawned on me. When facing the image segmentation task, we usually think of enumerating a set of unique image properties and design filters accordingly. For example, a plant exhibit the basic colours green, yellow and brown and we can in turn define a foreground colour palette accordingly. In contrast, if you have a reference image then finding your object is similar to solving a spot-the-difference puzzle:

Can you find the three objects in S that were not present in R? The solution is at the bottom of this page***

So, given a reference image we can spot an object in a sample image by image comparison, aka image subtraction. In this installment I show you how to apply image subtraction with LemnaGrid for image segmentation.

Model

Given two images x and y, the basic formula is

  • img_subtr(x, y) = x + inv(y)

    where inv(y) is the inversion of y defined as

  • inv(y) = 255 - y.

    For example, an image pixel can have 256 different values ranging from 0 to 255, where 0 = black, 255 = white, thus

y

inv(y)

0

255

255

0

64

191

192

63

Further, if img_subtr yields a value above 255, e.g. 192 + inv(64) = 383, then it will be set to 255:

  • case 1: img_subtr = 0 then 0

  • case 2: img_subtr = 255 then 255

  • case 4: img_subtr > 255 then 255

  • case 5: img_subtr < 0 then 0

Here is how we apply the model in practice with LemnaGrid. We can find a dark object on bright background by setting x = sample image (s), and y = reference image (r):

In contrast, to detect a bright object on dark background we change the assignment of parameters, i.e. x = r, and y = s:

Ultimately, our final model is the logical combination of both approaches:

  • a) dark object detection on bright background

  • b) bright object detection on dark background

    Formally we note

  • IMG_SUBTR(s, r) = s + inv(r) OR r + inv(s)

    Here is the complete model implemented in LemnaGrid:

Application

The input image is the same as few days ago (a). This is what I got from last time VIS top image analysis (b). In comparison this is the output I get from image comparison (c).

Here is a quick summary on the output from image subtraction:

  • sample

  • shadows of sample

  • illumination differences between sample and reference image

  • differences in background setting, e.g. differences in pot position

  • differences in colour on reflective materials, e.g. metallic surfaces

    Altogether, image subtraction returns less artefact than the image mask approach

Conclusion

Image subtraction is a widely applied image segmentation technique. Key to this method is to find differences between a sample image and a reference image.

While the idea is elegant (see Model section), there are some considerations to be taken (see Application section).

Supplemental

I have omitted Image negate in this installment, but the result is similar. Can you spot the difference:

  • x + neg(y)

Drop me a quick email if you figured it out!

***Solution to spot-the-difference puzzle!

  1. a black kernel

  2. a white stripe masking the left ear

  3. a white arch masking the blue arch

Kevin Nagel

Application Scientist


Enable JavaScript to view protected content.