matlab把图像写入文件,如何将图像写入文件

本文解答了如何将图像准确地写入文件的问题。通过将图像矩阵初始化为逻辑矩阵,可以确保使用imwrite函数正确地保存图像,使其在读取时与imshow显示的内容一致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

icon1.gif 如何将图像写入文件

我在这种情况下特别困

I = imread('liftingbody.png'); S = qtdecomp(I,.27); blocks = repmat(uint8(0),size(S)); for dim = [512 256 128 64 32 16 8 4 2 1]; numblocks = length(find(S==dim)); if (numblocks > 0) values = repmat(uint8(1),[dim dim numblocks]); values(2:dim,2:dim,:) = 0; blocks = qtsetblk(blocks,S,dim,values); end end blocks(end,1:end) = 1; blocks(1:end,end) = 1; imshow(I), figure, imshow(blocks,[]) (以上示例来自MATLAB帮助)

如果我尝试使用imwrite(blocks)来写图像(即imwrite(blocks)则整个图像看起来都是黑色的。任何输入图像都会发生这种情况。但是我想准确地写出imshow在这里显示的输出。有人可以帮忙吗?

回答:

您将块创建为uint8矩阵。按照惯例,MATLAB和图像处理工具箱将uint8灰度视为范围在0到255之间的值。也就是说,0是黑色,而255是白色。因此,您的仅包含0和1的块矩阵通常将显示为黑色且几乎为黑色。

当您使用以下方法显示块时:

imshow(blocks,[]) 您使用了imshow的“自动调整范围”语法,该语法将块的最小值显示为黑色,将块的最大值显示为白色。

但是,当您使用imwrite保存块时,通常将0假定为黑色,将255假定为白色。

尝试将块初始化为逻辑矩阵,如下所示:

blocks = logical(size(S)); MATLAB和图像处理工具箱将逻辑矩阵视为二进制图像,并将0显示为黑色,而1显示为白色。如果传递逻辑矩阵进行写入,它将创建一个1位深度的二进制映像文件。

更多&回答...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值