Почему мое результирующее изображение не отображается правильно? 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);

Я пытаюсь добавить каждый белый прямоугольник границы по очереди. Это, конечно, успешно, но мой окончательный образ не получается так, как я хочу.

Исходное изображение:

Мне нужно создать этот образ:

И я, кажется, получаю это изображение:

Вся помощь и предложения очень ценятся!

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
Другие вопросы по тегам