# MATLAB | Complement colors in a Binary image

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   endend    %  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

Previous
Next