作业帮 > 综合 > 作业

matlab中输出图像数据的一个题

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/05/02 04:55:28
matlab中输出图像数据的一个题
i=imread('clown.jpg');
[x,y]=size(i);
for j=1:x,
for k=1:y,
i(j,k)
end
end
为什么输出ans和i矩阵中相对应的元素有些相同有些不同呢 怎么回事 是for用错了 还是数据格式问题 纠结了一个晚上
这样看你的图像是否是灰度图.
假设原图像是100x100大小.
1.如果它是灰度图,那么[x,y]=size(i);后,x是100,y是100,你这段代码是没有问题的.
2.如果它是一个彩色图,那么实际它的大小是100x100x3,3表示有RGB三个分量.所以[x,y]=size(i);后,x是100,而y是300,那么你这段代码就有问题.
再问: 我的确实是灰度图像 是不是matlaba问题啊 还有上段代码为什么在matlab7.1上是个死循环啊 停不下来
再答: 在i=imread('clown.jpg');加上clear all; 如: clear all; i=imread('clown.jpg');
再问: 恩 大侠要不试下 这段代码 为什么ans值和灰度矩阵j中相应元素的值不一样呢 我这段代码就是对矩阵中的每个元素进行相应不同的处理 但是读取出来的值很明显是随机值 为什么会是这种情况 新手 谢谢了
再答: 你的代码已试过,如果i是一副灰度图的话,运行正常,输出的值与原图中的灰度值相符。 具体的检查方法是:打开工作空间中的i,看最后一行的最后几列的值,与输出的i(j,k)的值是否相符,结果是相符的。
再问: 组后一行的最后几个是没有问题 可是第一行的都有问题啊 不相符 不知道你的有没有这种情况 我在好几台机子不同的matlab上都试了 都有这样的问题 求正解
再答: 第一行有问题是因为command里可以显示的结果是有限的,所以后面输出会把前面的输出覆盖掉。 你执行代码,只看第一行,就知道是没问题的。 clc; i=imread('clown.jpg'); [x,y]=size(i); for j=1:1 %这里只输出第一行 for k=1:y i(j,k) end end 如果不确定,可以写文件查看,代码如下: clc; i=imread('clown.jpg'); fid = fopen('data.txt', 'w'); [x,y]=size(i); for j=1:x fprintf(fid,['第',int2str(j),'行:\n']); for k=1:y fprintf(fid,'%d ',i(j,k)); end fprintf(fid,'\n\n'); end fclose(fid); 然后打开当前路径下面的data.txt,就可以看到结果了。