Matlab存图全白全黑?用imshow(I,[])正常显示,但I=uint8(mat2gray(I));imwrite(I,'1.bmp','bmp');结果错

结果全白全黑,请问怎么回事?怎么改?... 结果全白全黑,请问怎么回事?怎么改? 展开
 我来答
WM_THU
2013-08-27 · TA获得超过7164个赞
知道大有可为答主
回答量:4285
采纳率:80%
帮助的人:3935万
展开全部
如果imshow正常的话,直接imwrite就可以了。为什么要转换来转换去呢?
imshow(I); % 正常显示
imwrite(I, 'I.bmp'); % 肯定结果正常
追问
imshow(I)显示全白,imshow(I,[])才能正常显示。用imwrite(I, 'I.bmp')保存的图片还是全白/全黑。到底怎么改?
追答
那看来就是你数据的动态范围不对了。I是几通道的图像?
如果是1通道,那么mat2gray就可以了。imshow看看对不对,如果还是不正常,imhist一下看看灰度分布是否正常;注意,图像间做数据类型转换要用im2uint8,而不是uint8,否则也是动态范围出错,当然实际根本不需要这一步。
如果是3通道,假如I是double类型的,我觉得直接im2uint8就可以搞定;如果是uint8,那么im2double就可以了;后续验证步骤同上。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qumitliu
2013-08-27 · 超过16用户采纳过TA的回答
知道答主
回答量:43
采纳率:0%
帮助的人:44.2万
展开全部
%这样试试?

I=mat2gray(I);imwrite(I/255,'1.bmp','bmp')
更多追问追答
追问
不行呢,还是全白/全黑,是哪里出了问题?
追答
图像的灰度值太接近1了,所以显示全白。[]可以将最低灰度到最高灰度之间对比拉伸来显示图像,所以显示正常。那直接看看行不行?

imshow(I,[]);
imwrite(I,'1.bmp','bmp');
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式