为什么我的结果图像显示不正确?软件

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