为什么我的结果图像显示不正确?软件
Why is my resultant image not appearing correctly? MATLAB
我得到了一张特定的图像,现在我需要为图像创建边框。我决定黑色和白色边框的宽度各为 25 像素。我的代码如下:
%% Reading the Image in
imdata = imread('image1.png');
%%Creating a new matrix for image3
e_imdata = zeros(300,356);
% First Rectangle of white
for l = 25:331
for m = 25:50
e_imdata(m,l) = 255;
end
end
%% Second Rectangle of White
for l = 25:331
for m = 250:275
e_imdata(m,l) = 255;
end
end
%% Third Rectangle of White
for l = 25:50
for m = 50:250
e_imdata(m,l) = 255;
end
end
%% Fourth Rectangle of White
for l = 306:331
for m = 50:250
e_imdata(m,l) = 255;
end
end
%% Copying the Actual Image in
for l = 51:305
for m = 51:199
e_imdata(m,l) = imdata(m-50,l-50);
end
end
%% Final imsow
imshow(e_imdata);
我正在尝试一个一个地添加每个白色矩形边界线。这当然是成功的,但我的最终形象并没有按照我想要的方式出现。
原图:
我需要制作这张图片:
我似乎得到了这张图片:
非常感谢所有帮助和建议!
问题是 imshow() 没有将灰度颜色缩放到适当的范围。而是指定最小和最大灰度值:
imshow(e_imdata, [0 255]);
或者,将数据转换为 uint8
imshow(uint8(e_imdata));
代码中的另一个问题是您没有完全复制图像,这就是为什么您仍然看到一些黑色背景的原因。最终循环应使用以下索引:
%% Copying the Actual Image in
for l = 51:306
for m = 51:250
e_imdata(m,l) = (imdata(m-50,l-50));
end
end
我得到了一张特定的图像,现在我需要为图像创建边框。我决定黑色和白色边框的宽度各为 25 像素。我的代码如下:
%% Reading the Image in
imdata = imread('image1.png');
%%Creating a new matrix for image3
e_imdata = zeros(300,356);
% First Rectangle of white
for l = 25:331
for m = 25:50
e_imdata(m,l) = 255;
end
end
%% Second Rectangle of White
for l = 25:331
for m = 250:275
e_imdata(m,l) = 255;
end
end
%% Third Rectangle of White
for l = 25:50
for m = 50:250
e_imdata(m,l) = 255;
end
end
%% Fourth Rectangle of White
for l = 306:331
for m = 50:250
e_imdata(m,l) = 255;
end
end
%% Copying the Actual Image in
for l = 51:305
for m = 51:199
e_imdata(m,l) = imdata(m-50,l-50);
end
end
%% Final imsow
imshow(e_imdata);
我正在尝试一个一个地添加每个白色矩形边界线。这当然是成功的,但我的最终形象并没有按照我想要的方式出现。
原图:
我需要制作这张图片:
我似乎得到了这张图片:
非常感谢所有帮助和建议!
问题是 imshow() 没有将灰度颜色缩放到适当的范围。而是指定最小和最大灰度值:
imshow(e_imdata, [0 255]);
或者,将数据转换为 uint8
imshow(uint8(e_imdata));
代码中的另一个问题是您没有完全复制图像,这就是为什么您仍然看到一些黑色背景的原因。最终循环应使用以下索引:
%% Copying the Actual Image in
for l = 51:306
for m = 51:250
e_imdata(m,l) = (imdata(m-50,l-50));
end
end