用matlab显示图像的问题

a=imread('test.png');%imshow(a)x=size(a,1);y=size(a,2);result=zeros(x,y);forindex1=1:... a=imread('test.png');
%imshow(a)
x=size(a,1);
y=size(a,2);
result=zeros(x,y);
for index1=1:1:x
for index2=1:1:y
result(index1,index2)=a(index1,index2);
end
end
imshow(result)
我很郁闷啊 上面的程序就是把导入的图像从变量a复制到result 结果显示a能显示原图像 显示result结果不成图像 这是怎么回事啊 谢谢
展开
 我来答
阿门阿前一只小蜗牛
高粉答主

2018-08-06 · 每个回答都超有意思的
知道小有建树答主
回答量:118
采纳率:100%
帮助的人:13.9万
展开全部

根据你的描述,提供两种方法,思路如下,你试试:                

1、imshow(I/256);  将图像矩阵转化到0-1之间               

imshow(I,[]);     自动调整数据的范围以便于显示     

2、又或者将I的最小值看作0,最大值看作255,黑白明显

资料拓展:

1、MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

2、MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。

资料来源:百度词条MATLAB

Sievers分析仪
2024-09-13 广告
是的。传统上,对于符合要求的内毒素检测,最终用户必须从标准内毒素库存瓶中构建至少一式两份三点标准曲线;必须有重复的阴性控制;每个样品和PPC必须一式两份。有了Sievers Eclipse内毒素检测仪,这些步骤可以通过使用预嵌入的内毒素标准... 点击进入详情页
本回答由Sievers分析仪提供
长鹿
2018-07-20 · TA获得超过8002个赞
知道答主
回答量:5
采纳率:50%
帮助的人:701
展开全部

显示成Result的结果可能是你没有变换,需要对三个分量进行分类,要对彩色图像进行变换,result=a或者多进行几次循环,直到分别得到R、G、B,出现了灰度图像不要着急,因为你的彩色信息没有了,进行一次彩色转换就好了。下面是具体步骤:

第一步:a=imread('D:\ebook\lena.bmp');

第二步: R=a(:,:,1);

第三步:G=a(:,:,2);

第四步:B=a(:,:,3);

第五步: result(:,:,1)=R;

第六步: result(:,:,2)=G;

第七步: result(:,:,3)=B;

figure,imshow(a);

figure,imshow(result);

%%%%%%%%%%%%%%%%%%%%%%%%%

彩色图像在处理时如果你转化为了灰度图像后,最后的结果是显示不了彩色的,因为在转化时丢失了彩色信息。

如果你对彩色图像变换,那就把它的三个分量都分出来,依次进行操作,最后在合成彩色图像就行了。

下面是完成好了的复制彩色图像。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
高中生1221
2018-07-25
知道答主
回答量:1
采纳率:0%
帮助的人:741
展开全部

两个解决方法:                

imshow(I/256);    ----------将图像矩阵转化到0-1之间                
imshow(I,[]);       -----------自动调整数据的范围以便于显示 (不明白原理!)    
PS:imshow(I,[]),将I的最小值看作0,最大值看作255,所以黑白明显

从实验结果看两种方法都解决了问题,但是从显示的图像看,第二种方法显示的图像明暗黑白对比的强烈些!不知什么原理!        
此外还找到一些方法,还没有试过,记录如下:
uint8和im2uint8的区别
图像数据在计算前需要转换为double,以保证精度;        很多矩阵数据也都是double的,要想显示其,必须先转换为图像的标准数据格式.        如果转换前的数据符合图像数据标准(比如如果是double则要位于0~1之间),那么可以直接使用im2uint8      
如果转换前的数据分布不合规律,则使用uint8,将其自动切割至0~255(超过255的按255)        最好使用mat2gray,将一个矩阵转化为灰度图像的数据格式(double)      
另外,可以用isgray判断矩阵是否是一个图像数据矩阵      
总之,im2uint8、im2double要跟uint8、double

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
酷呆爱死呆
2011-03-10 · TA获得超过4238个赞
知道大有可为答主
回答量:507
采纳率:100%
帮助的人:1128万
展开全部

a=imread('D:\ebook\lena.bmp');

   R=a(:,:,1);

   G=a(:,:,2);

   B=a(:,:,3);

 result(:,:,1)=R;

 result(:,:,2)=G;

 result(:,:,3)=B;

 figure,imshow(a);

 figure,imshow(result);

%%%%%%%%%%%%%%%%%%%%%%%%%

彩色图像在处理时如果你转化为了灰度图像后,最后的结果是显示不了彩色的,因为在转化时丢失了彩色信息。

如果你对彩色图像变换,那就把它的三个分量都分出来,依次进行操作,最后在合成彩色图像就行了。

上面就是根据你的意思写出的复制彩色图像。

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
傅映阳U0
2011-03-09 · TA获得超过1619个赞
知道小有建树答主
回答量:1126
采纳率:0%
帮助的人:823万
展开全部
是数据格式的问题,imshowx函数只能显示uint8等数据格式的图像,你的result的数据格式很可能是double的,你要转换一下数据格式 uint8(result)再显示。
追问
恩  是这个问题  我用mat2gray(result)就解决了  但是输出颜色是灰的怎么解决
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式