Related Articles
MATLAB | Complement colors in a Binary image
• Last Updated : 12 Sep, 2018

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: My Personal Notes arrow_drop_up