【问题标题】:How to convert image black to white and vice versa如何将图像黑色转换为白色,反之亦然
【发布时间】:2014-03-10 13:43:35
【问题描述】:

我有一张黑白的 jpg 图片,我想将 MATLAB 中的黑色部分转换为白色,将白色转换为黑色(黑色像素转换为白色,反之亦然),然后再次将其保存为 jpg 文件。 我已经尝试过这段代码,但它只是在白页中给了我一条黑线。

 im=imread('Export0000009111.jpg');
 binstring = dec2bin(im, 8);

 binImage = ~binstring;
 binImage = 1-binImage;
 binImage = (binImage == 0);
 imwrite(binImage,'ss1.png');

有没有人对此有任何适当的解决方案?

提前致谢!

【问题讨论】:

    标签: image matlab image-processing


    【解决方案1】:

    代码-

    PATHNAME = 'Random.jpg'; %// Original image file
    PATHNAME1 = 'RandomModified.jpg'; %// Modified image file
    
    imwrite(uint8(255 - imread(PATHNAME)),PATHNAME1)
    figure, imshow(imread(PATHNAME1))
    

    当您读取图像时,它们通常以 2D 或 3D 矩阵的形式出现,其值介于 0 和 255 之间,其中 0 为黑色,255 为白色。所以,我们只需要从 255 中减去每个像素值。这将完成您的工作,将为灰色图像创建负图像,如果我能发明这样的术语,彩色图像将给人一种“彩色负片”的感觉。

    【讨论】:

    • @Divakar,PATHNAME1 = 'Red1.jpg';,我只有一张黑白照片?!!
    • PATHNAME 将是“Export0000009111.jpg”,PATHNAME1 将是“ss1.png”。相应地编辑代码。
    【解决方案2】:

    要补充另一个答案,如果要对黑白图像执行二进制操作,则需要先将其转换为二进制图像。所以如果你这样做:

    im=imread('Export0000009111.jpg');
    BW = im2bw(im,graythresh(im));
    

    然后您可以使用您尝试过的方法:

    binImage = ~BW;
    binImage = 1-BW;
    binImage = (BW == 0);
    imwrite(binImage,'ss1.png');
    

    【讨论】:

      【解决方案3】:

      我已尝试通过描述和图像使其更清晰。

      % read the input image
      im = imread('rice.png');
      
      % now convert the image to binary
      bin_im = im2bw(im,graythresh(im));
      
      % take complement of binary image
      bin_im = imcomplement(bin_im);
      
      % store the image in .jpg format
      imwrite(bin_im,'ss1.png');
      

      这是输出

                 input image                  output image
      

      【讨论】:

      • @Lokesh,谢谢这是一个容易理解的答案。
      猜你喜欢
      • 1970-01-01
      • 2019-12-13
      • 1970-01-01
      • 2020-11-11
      • 1970-01-01
      • 1970-01-01
      • 2015-04-07
      • 1970-01-01
      • 2013-07-26
      相关资源
      最近更新 更多