Присвойте значение нескольким пикселям изображения - PullRequest
3 голосов
/ 24 сентября 2019

Можно ли назначить одно пиксельное значение для всего фрагмента изображения?У меня есть например:

img = zeros(100, 200, 3, 'uint8');

Я хотел бы присвоить значение [200, 134, 12] верхней половине изображения.Я могу сделать

img(1:50, :, 1) = 200;
img(1:50, :, 2) = 134;
img(1:50, :, 3) = 12;

Тем не менее, я хотел бы использовать вещание, чтобы сделать назначение, если это возможно.Следующие опции не работают из-за несоответствия размеров:

img(1:50, :, :) = [200, 134, 12]
img(1:50, :, :) = [[200, 134, 12]]
img(1:50, :, :) = reshape([200, 134, 12], 1, 1, 3)

Могу ли я применить трансляцию в этой ситуации в MATLAB?Если да, то как?

Ответы [ 2 ]

5 голосов
/ 24 сентября 2019

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

img(1:50, :, :) = 0;
img(1:50, :, :) = img(1:50, :, :) + reshape([200, 134, 12], 1, 1, 3);
2 голосов
/ 24 сентября 2019

Создание комментария в качестве ответа:

Полагаю, вы можете img(1:50, :, :) = repmat(reshape([200, 134, 12], 1, 1, 3),50,200), но я не уверен, что он более понятен, чем 3 строки, и, вероятно, использует больше вычислительной мощности и памяти (не то, чтобы этоэта шкала)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...