如何在 Matlab 中为图像数组赋值?
How to assign values to image array in Matlab?
我正在尝试编写一个 matlab 代码,该代码将图像的一个片段复制到具有特定范围矩阵的另一个图像片段中。
我的代码按要求工作。我遇到的唯一问题是我想为图像的复制部分分配 255 值,以便图像出现在白色背景而不是黑色背景上
a=imread('/Applications/MATLAB_R2015a.app/toolbox/images/imdata/cameraman.tif');
a=double(a);
b=zeros(256,256);
for i =0:1:255
for j=0:1:255
if((i>=97 && i<=150)&&(j>=34 && j<=81))
b(j,i)=a(j,i);
% else
% b(j,i)=255;
end
end
end
imshow(a,[]);
figure,imshow(b,[]);
imageSegmenter(b);
无需将矩阵初始化为 zeros
,只需将其初始化为 255
。
b = 255 + zeros(256, 256);
附带说明一下,MATLAB 使用基于 1 的索引,因此您应该更改 for
循环索引以反映这一点:
for i = 1:size(b,2)
for j = 1:size(b, 1)
% Do stuff
end
end
更好的是,您可以完全删除 for
循环。
b = 255 + zeros(256, 256);
b(34:81, 97:150) = a;
我正在尝试编写一个 matlab 代码,该代码将图像的一个片段复制到具有特定范围矩阵的另一个图像片段中。 我的代码按要求工作。我遇到的唯一问题是我想为图像的复制部分分配 255 值,以便图像出现在白色背景而不是黑色背景上
a=imread('/Applications/MATLAB_R2015a.app/toolbox/images/imdata/cameraman.tif');
a=double(a);
b=zeros(256,256);
for i =0:1:255
for j=0:1:255
if((i>=97 && i<=150)&&(j>=34 && j<=81))
b(j,i)=a(j,i);
% else
% b(j,i)=255;
end
end
end
imshow(a,[]);
figure,imshow(b,[]);
imageSegmenter(b);
无需将矩阵初始化为 zeros
,只需将其初始化为 255
。
b = 255 + zeros(256, 256);
附带说明一下,MATLAB 使用基于 1 的索引,因此您应该更改 for
循环索引以反映这一点:
for i = 1:size(b,2)
for j = 1:size(b, 1)
% Do stuff
end
end
更好的是,您可以完全删除 for
循环。
b = 255 + zeros(256, 256);
b(34:81, 97:150) = a;