【问题标题】:How to convert binary data into an image in matlabmatlab如何将二进制数据转换为图像
【发布时间】:2014-06-12 18:08:35
【问题描述】:

我正在使用以下代码将图像转换为二进制形式。

% lets suppose that the name of image file is caption with an extension .jpg
X=imread('caption.jpg');
g=reshape((dec2bin(typecast(X(:),'uint8'),8)-'0').',1,[])

运行代码后,我得到 1xn 类型的 double 矩阵,包含一系列 0 和 1。

现在我想将此矩阵g 转换回图像。

转换后的图片应该类似于caption.jpg。

【问题讨论】:

  • 所以... reshape 恢复原来的大小并使用imwrite?

标签: matlab


【解决方案1】:

您需要初始图像中的行数和列数才能恢复彩色图像。

rowsize = size(X,1);
colsize = size(X,2);
final_image = uint8(reshape(bi2de(reshape(g,8,[])',2,'left-msb'),rowsize,colsize,[]));
imwrite(final_image,'caption.jpg');

【讨论】:

  • 顺便说一下,你告诉我的编辑,我试过了,但不知道它不起作用..但让我再检查一次..无论如何非常感谢先生。nishant :)
  • 你告诉我的改变,我已经做到了,但我又试了一次......仍然是同样的问题。具有更改的功能 bin2im 仍返回黑白图像。请尝试解决问题,如果你找到它,请告诉我并告诉我解决方案。再次感谢 :)
  • 请以格式正确的方式将您的代码添加到问题中
  • % 这是 bin2im 的代码,它给了我黑白图像,而不是彩色图像。在进行了您告诉我的更改后,问题仍然存在。函数 [] = bin2im(bin_vector,rows,cols) g=bin_vector;行大小=行; colsize = cols; final_image = uint8(reshape(bi2de(reshape(g,8,[])',2,'left-msb'),rowsize,colsize,[])); imwrite(final_image,'恢复的 image.jpg'); imshow('恢复的图片.jpg') end
  • 这个功能在我的机器上运行良好,请重启你的matlab实例并重新检查一下
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-13
  • 2012-05-26
  • 2020-10-26
相关资源
最近更新 更多