解释一下代码?可以比较逻辑和双重?

时间:2014-01-22 09:26:45

标签: matlab image-processing

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逻辑矩阵。但我不认为这是正确的,因为在看到并匹配矩阵后,我发现不是所有的元素都是那种方式。

可以请某人简要解释这段代码实际上做了什么吗?它实际上是如何完成的? 提前谢谢。

3 个答案:

答案 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。

输入图片:

enter image description here

黑白图片:

enter image description here

输出图片:

enter image description here

请注意,第三张图片在偶数列中使用零进行了扩充。 DOUBLE FAT!

放大左上角:

enter image description here

答案 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);