如何将图像黑色转换为白色,反之亦然

时间:2014-03-10 13:43:35

标签: image matlab image-processing

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

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

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

有人有任何适当的解决方案吗?

提前致谢!

3 个答案:

答案 0 :(得分:5)

代码 -

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减去每个像素值。这将完成你的工作,将为灰色图像创建负像,如果我可以发明这样的术语,彩色图像会给人一种“彩色负面”的感觉。

答案 1 :(得分:3)

要添加到其他答案,如果要对黑白图像执行二进制操作,则需要先将其转换为二进制图像。所以如果你这样做:

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

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

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

答案 2 :(得分:2)

我试图通过描述和图片使其更清晰。

% 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

input image output image