Invert/Logical NOT

Background
The NOT binary operation takes one binary input and outputs 1 when the input is 0 and the output is 0 only if the input is 1. This functionality is shown by the help of the following table:
NOT
Using NOT boolean algebra allows you to represent things like:
The sky is high and blue
Understanding NOT Mathematically:
The NOT of two images is carried out by performing the inversion operation on the corresponding pixels of the two images to produce the output pixel value. For instance, suppose that we wish to NOT the integer 167 using 8-bit integers. 167 is 10100111 in binary. Inverting these together in bitwise fashion, we have 01011000 in binary or 88 in decimal.
General Working
The NOT operations are performed through a single pass module which during operation passes through the each pixel of the image and calculates the pixels of the output image by doing the respective operation on the corresponding pixel to calculate the output pixels.
Each pixel in the input image having a logical 1 (often referred to as foreground) has a logical 0 (associated with the background in the output image and vice versa. Hence, applying logical NOT to a binary image changes its polarity . The logical NOT can also be used for a graylevel image being stored in byte pixel format by applying it in a bitwise fashion. The resulting value for each pixel is the input value subtracted from 255:
O( i , j ) = 255 - I( i , j )
If this output image is normalized for an 8-bit display, we again obtain the photographic negative of the original input image.
Guidelines for Use
When the invert operator is applied on the image:
the following result is obtained:
The inversion technique can be used to get the negative of the image. This can be seen by applying the invert technique on the following image:
The following negative is obtained:
C# Sample Program:
The algorithm is coded in C# using unsafe so the quality and speed of the program may not be affected. The class BitmapData is used to read and process the pixels in the image. This is the speicality of C# to provide such a speed even on image processing applications. There is a set of modules that are designed to implement the algorithm. The program expects that the input images are grayscaled. Then it takes the BitmapData objects of the two input images. It then subtracts the input pixel from 255( 11111111 ) to calculate the output pixel.
  • 0 Users Found This Useful
Was this answer helpful?

Related Articles

Basic Image Processing in Csharp

The C# provides a good support for processing on the image, and the purpose of this article...

Implementation Of Branch And Bound Algorithm

What is Branch and Bound Algorithm? These notes follow the discussion of branch and...

Implementation of Calculating the RTS Invariant Moments Of Area

Why Using Moments of Area? It is seen that the usage of moments of area highly...

Conversion of a Color Image to a Grayscale Image

What is a Color Image? It is possible to construct (almost) all visible colors by...

GrayLevel Image Contras Stretching in C#

Overview Contrast stretching (often called normalization) is a simple image...