如何在MATLAB中反转二进制图像?

时间:2011-03-11 18:43:28

标签: matlab image-processing binary

我有一个二进制图像,需要将所有黑色像素转换为白色像素,反之亦然。然后我需要将新图像保存到文件中。有没有办法做到这一点,而不是简单地循环每个像素并翻转它的值?

4 个答案:

答案 0 :(得分:16)

如果您的二进制图像binImage只有零和一,那么有很多简单的方法可以反转它:

binImage = ~binImage;
binImage = 1-binImage;
binImage = (binImage == 0);

然后使用函数IMWRITE保存倒置图像。

答案 1 :(得分:2)

您可以使用imcomplement matlab函数。假设您有二进制图像b,

bc = imcomplement(b); % gives you the inverted version of b
b = imcomplement(bc); % returns it to the original b
imwrite(bc,'c:\...'); % to save the file in disk

答案 2 :(得分:1)

在Matlab中,通过使用not,我们可以将 1转换为0,将0转换为1的

inverted_binary_image = not(binary_image)

答案 3 :(得分:-2)

[filename, pathname] = uigetfile({'*.bmp'},'Text as image');

img=imread(filename);
img=im2double(img);
[r,c,ch]=size(img);
%imshow(img);
invert_img=img;
if(ch==1)
 for i=1:r
    for j=1:c
        if(invert_img(i,j)==0)
          invert_img(i,j)=1;
        else
          invert_img(i,j)=0;
        end
    end 
end
end