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

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

enter image description here

Однако я не уверен, как я должен получить доступ к этим конкретным областям изображения. Я не могу использовать кадрирование, так как позже мне потребуется преобразовать и перестроить изображение, чтобы я мог убедиться, что эффекты были применены правильно. Однако если не делать:

imageSize = size(I,1);
imageSizeHalf = imageSize/2;
imageSizeQuarter = imageSize/4;
imageSizeEighth = imageSize/8;

А потом пытаюсь получить доступ к измерениям матрицы таким образом (что я даже не знаю, как это сделать, что мне нужно сделать, чтобы достичь этого?) Я не уверен, как я должен получить доступ к этим трем определенные области изображения.

1 Ответ

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

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

function [rows, cols] = get_block_indices(block_row, block_col, block_size)
    rows = (1:block_size) + block_size*(block_row-1);
    cols = (1:block_size) + block_size*(block_col-1);  

Затем вы можете, например, получить доступ к блоку W1, который находится в строке 1, столбце 2 сетки блока, следующим образом

[rows, cols] = get_block_indices(1, 2, block_size);
I(rows, cols) = your_effect_function(I(rows, cols));

при условии block_size = size(I,1)/4.

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