Background
The OR binary operation takes two binary inputs and outputs 0 only when both the inputs are 0 and if at least one input is 1 then it outputs 1. The NOR binary operator is the complete inverse of the AND binary operation. NOR outputs 1 when both the inputs are 0, else it produces 0. The functionality of OR and NOR are clarified by the help of the truth tables:
Using OR and NOR boolean algebra allows you to represent things like:
He will be at home or in office.
Understanding OR & NOR Mathematically:
The ORing of two images is carried out by performing OR operation to the corresponding images of the two images to produce the output pixel value. For instance, suppose that we wish to AND the integers 167 and 211 together using 8-bit integers. 167 is 10100111 in binary and 255 is 11010011. ORing these together in bitwise fashion, we have 11110111 in binary or 247 in decimal.
This is not at all the only implementation of this of the logical operators rather you can implement the logical ORing and NORing using some thresholding to transform the digital image data into the binary format, or simply by taking the 0 pixel value as the logical 0 and the non-zero pixel values as the logical 1 value.
General Working
The OR and NOR operations are performed through a single pass module which during operation passes through the each pixel of each image and calculates the pixels of the output image by doing the respective operation on the corresponding pixels to calculate the output pixels. It is necessary to have two images of the identical size. In the sample program, if two images are not identical in size, then they are made of the same size ( explained below).
Guidelines for Use
We can illustrate the function of the OR operator using
and
The images show a scene with two objects, one of which was moved between the exposures. We can use OR to compute the union of the images, i.e. highlighting all pixels which represent an object either in the first or in the second image. First, we threshold the images, since the process is simplified by use binary input. If we OR the resulting images
and
we obtain applying OR operator on the image
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 specialty 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 gray scaled. Then it takes the BitmapData objects of the two input images. It determines which image is bigger in width as well as in height.
Then it scales the smaller image to acquire the size of the bigger image to make the sizes of both the images equal. Then the algorithm calculates the ORed image in the single pass through the image. The final output is an image showing the result of the effect of OR operator on the two input images which is then displayed on the screen in the down most picture box.
Attachments:
Project Files: Or_Nor_sample.zip