Binary image is a digital image that has only two possible value for each pixel – either 1 or 0, where 0 represents white and 1 represents black. In the complement of a binary image, the image pixel having value zeros become ones and the image pixel having value ones become zeros; i.e white and black color of the image is reversed.

**Complementing Binary image using MATLAB library function :**

`% read a Binary Image in MATLAB Environment` `img=imread(` `'geeksforgeeks.jpg'` `);` ` ` `% complement binary image` `% using imcomplement() function` `comp=imcomplement(img);` ` ` `% Display Complemented Binary Image ` `imshow(comp);` |

**Complementing Binary image without using library function :**

We can complement a binary image by subtracting each pixel value from maximum possible pixel value a binary image pixel can have (i.e 1 ), and the difference is used as the pixel value in the complemented image. It means if an image pixel have value 1 then, in complemented binary image same pixel will have value ( 1 – 1 ) = 0 and if Binary image pixel have value 0 then, in complemented binary image same pixel will have value ( 1 – 0 ) = 1.

Below is the Implementation of above idea-

`% This function will take a Binary image as input` `% and will complement the colors in it.` ` ` `function` `[complement] = complementBinary(img)` ` ` ` ` `% Determine the number of rows and columns` ` ` `% in the binary image array` ` ` ` ` `[x, y]=size(img);` ` ` ` ` `% create a array of same number rows and` ` ` `% columns as original binary image array` ` ` `complement=zeros(x, y);` ` ` ` ` `% loop to subtract 1 to each pixel.` ` ` `for` `i=1:x` ` ` `for` `j=1:y` ` ` `complement(i, j) = 1-img(i, j);` ` ` `end` ` ` `end` `end` ` ` ` ` `% Driver Code` ` ` `% read a Binary Image in MATLAB Environment` `img=imread(` `'geeksforgeeks.jpg'` `);` ` ` `% call complementBinary() function to` `% complement colors in the binary Image` `comp=complementBinary(img);` ` ` `% Display complemented Binary image` `imshow(result);` |

**Alternate way :**

In MATLAB, Arrays are basic data structure.They can be manipulated very easily. For example `Array = 1 - Array ;`

Above code will subtract each element of the array from 1. So, Instead of using two loops to subtract 1 to each pixel of binary image. We can directly write it as –`comp=1-img`

Here ‘img’ is our binary image array.

Below code will also complement a binary Image

`% read a Binary Image in MATLAB Environment` `img=imread(` `'geeksforgeeks.jpg'` `);` ` ` `% complement each pixel by subtracting it from 1 ` `comp=1-img;` ` ` `% Display Complemented binary Image ` `imshow(comp);` |

**Input:**

**Output:**

**References : **https://in.mathworks.com/help/images/ref/imcomplement.html