f=imread('cameraman.tif');
f=im2bw(f);
[m,n]=size(f);
s1=zeros(m,2*n);
s1(1:end,1:2:end)=f(1:end,1:end);
以下是我认为代码的作用。 我们正在通过比较和替换元素与f的元素来改变s1。 s1是256x512双矩阵,其中f是256x256逻辑矩阵。但我不认为这是正确的,因为在看到并匹配矩阵后,我发现不是所有的元素都是那种方式。
可以请某人简要解释这段代码实际上做了什么吗?它实际上是如何完成的? 提前谢谢。
答案 0 :(得分:4)
这些行从文件中读取图像并将其转换为二进制图像(以便f
现在是逻辑矩阵。)
f=imread('cameraman.tif');
f=im2bw(f);
这些行创建一个新的矩阵s1
,其行数与f
相同,但列数是两倍。
[m,n]=size(f);
s1=zeros(m,2*n);
此行填充s1
的每个其他列,其值为f
。结果是s
中的奇数列(1,3,5 ......)将包含f
和偶数列(2,4,6 .. 。)将为零。
s1(1:end,1:2:end)=f(1:end,1:end);
请注意,它实际上有点冗长;你可以通过
获得相同的结果s1(:,1:2:end) = f;
答案 1 :(得分:2)
代码已经通过其他答案得到了很好的解释,那么如何给出一个图例说明。
首先,你应该知道im2bw
,图像变成黑白,意味着图像矩阵被转换为2D。
输入图片:
黑白图片:
输出图片:
请注意,第三张图片在偶数列中使用零进行了扩充。 DOUBLE FAT!
放大左上角:
答案 2 :(得分:0)
f=imread('cameraman.tif');
将文件加载到f
f=im2bw(f);
将f转换为黑白f
[m,n]=size(f);
获取尺寸od数组(简单:图像尺寸)
s1=zeros(m,2*n);
创建一个零数组 - 新数组的维数是double(你可以在s1左右插入2个cameraman.tif图像,因为这是2 *列)
s1(1:end,1:2:end)=f(1:end,1:end);
这条线有点棘手 - 它将图像f插入到图像s1中,但是每隔一行插入图像就会变宽 你可以自己看:) 刚
imshow(s1);