为什么我的结果图像看起来不正确? MATLAB

时间:2015-11-27 21:11:50

标签: matlab image-processing border imshow imread

我得到了一个特殊的图像,现在我需要为图像创建边框。我已经确定我的黑色和白色边框的宽度应该是每个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);

我正在尝试逐个添加每个白色矩形边框。这肯定是成功的,但我的最终形象并没有按照我想要的方式出现。

原始图片:

enter image description here

我需要创建此图片:

enter image description here

我似乎得到了这张照片:

enter image description here

非常感谢所有帮助和建议!

1 个答案:

答案 0 :(得分:1)

问题是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