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