Как я могу перезаписать определенные значения в матрице? MATLAB - PullRequest
0 голосов
/ 04 мая 2018

Для университетского задания мне нужно взять изображение размером 512x512, а затем применить эффект к отдельным блокам изображения, как показано на рисунке ниже.

enter image description here

Мне удалось добиться этого путем доступа к определенным областям изображения с помощью индексации, например:

w1_region = [DCTImage(1:imageSizeQuarter, imageSizeQuarter+1:imageSizeHalf)];

Это повторяется для w2 и w3. Все эти области имеют размер 128х128 и должны быть записаны обратно в исходное изображение.

Однако теперь мне нужно переписать блоки исходного изображения отредактированными блоками, чтобы у меня было полное изображение с 3 блоками w1, w2, w3, которые были изменены.

Как можно переписать матрицу, которая определяет исходное изображение с измененными блоками? Есть ли способ, которым я могу эффективно сказать «Перезаписать значения, содержащиеся в матрице, начиная с X»?

Я чувствую, что есть какая-то матричная операция, которая позволила бы мне сделать это, но я не совсем уверен, какая.

1 Ответ

0 голосов
/ 05 мая 2018

Вы можете использовать, например:

BlockFunc = @(block_struct) YourFunction(block_struct);
block_size = [128 128];
block_edges = blockproc(file_name,block_size,BlockFunc);

Вы должны просто создать функцию с именем вашей функции. Ввод этой функции - block_struct, и вы можете получить доступ к позиции вашего блока и его данным. Более того, вы можете использовать глобальную переменную для обработки между YourFunction и вашим основным скриптом.

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