请教matlab显示及保存图像问题

nickshen 2002-08-13 08:08:15
我想显示个灰度图象,假设值是y,怎么我用image(y),看到一副彩色图,而且变形了。用 imwrite(y,'im.bmp','bmp');保存的图片用acdsee打开一看,一片白。
我现在不知道用什么函数显示一幅图象,并保存了。请各位给我看看。
谢谢!
我这里y是二维数组。
...全文
1200 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
njsg_zeng 2002-08-26
  • 打赏
  • 举报
回复
可以先对矩阵的范围拉伸到0`255,然后保存
ma=max(max(d));
mi=min(min(d));
for i=1:width
for j=1:height
d(i,j)=(d(i,j)-mi)*255/(ma-mi);
end;
end;
njsg_zeng 2002-08-26
  • 打赏
  • 举报
回复
matlab是对double类型数据处理的,一些算法处理都可能导致其数值超过这个范围阿
nickshen 2002-08-26
  • 打赏
  • 举报
回复
看来你是遇到过这样的情况,为什么会发生矩阵值不在0~255之间呢?
njsg_zeng 2002-08-14
  • 打赏
  • 举报
回复
显示是imshow(y)吧
保持的时候应该是imwrite(y,调色板数组,’im.bmp');吧
nickshen 2002-08-14
  • 打赏
  • 举报
回复
我再补充一下,得到的图象文件不对,指图象显示的效果和我估计的相差很大。
用imwrite(uint8(y),'extra.bmp','bmp'),得到的图像轮廓外形什么的,都对了,可是整个图象太黑,和我预期的不符。
这个矩阵值是计算出来的,应该没问题,因为我用imagesc显示的基本和我设想的一样。
因此应该是文件保存的方式不对。

nickshen 2002-08-14
  • 打赏
  • 举报
回复
我想你们还没有明白我的意思,我这里是一个128×128的双精度矩阵,用它来显示灰度图,并保存成图象文件。
我用imagesc()加colormap()解决了显示问题。
可是我用imwrite(y,'extra.bmp','bmp'),得到的图象文件不对,用
imwrite(uint8(y),'extra.bmp','bmp'),得到的图和我显示的图不一样,太黑了,
我现在就是图片保存有问题。是这样写吗?是不是要加个map什么的。
谢谢!!!
「已注销」 2002-08-14
  • 打赏
  • 举报
回复
显示:
A = imread('filename');
imshow(A);
保存:
imwrite(A,'filename');
ygtyf 2002-08-14
  • 打赏
  • 举报
回复
我想应该先确保所要显示的是灰度图,可以在工具里处理过先,否则用image(y)显示是不会有错误的.储存的命令用imwrite(y,'filename','fmt')也是对的.如果还不行,就看看你的原图会不会有错误,或者是命令的函数和语法问题。

4,445

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧