二进制图像是一个数字图像,每个像素只有两个可能的值-1或0,其中0代表白色,1代表黑色。在二值图像的补码中,值为零的图像像素变为一,而值为一的图像像素变为零;也就是说,图像的白色和黑色是相反的。
使用MATLAB库函数二进制图像进行补充:
% 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);
不使用库函数补充二进制图像:
我们可以通过从二进制图像像素可以具有的最大可能像素值(即1)中减去每个像素值来对二进制图像进行补充,并且将差值用作补充图像中的像素值。这意味着,如果图像像素的值为1,则在互补二进制图像中,同一像素将具有值(1-1)= 0;如果二进制图像像素的值为0,则在互补二进制图像中,相同像素将具有值(1-0) )= 1。
以下是上述想法的实现-
% 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);
替代方式:
在MATLAB中,数组是基本的数据结构,可以很容易地对其进行操作。例如Array = 1 - Array ;
上面的代码将从1中减去数组的每个元素。因此,与其使用两个循环向二进制图像的每个像素中减去1,也不是。我们可以直接将其写为–
comp=1-img
这里的“ img”是我们的二进制图像数组。
下面的代码还将补充二进制图像
% 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);
输入:
输出:
参考资料: https : //in.mathworks.com/help/images/ref/imcomplement.html