📌  相关文章
📜  MATLAB |软件开发工具补充二进制图像中的颜色

📅  最后修改于: 2021-04-17 02:21:44             🧑  作者: Mango

二进制图像是一个数字图像,每个像素只有两个可能的值-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