Если у вас есть 2-D grayscale intensity image хранится в матрице A
, вы можете установить нижнюю половину черный, выполнив следующие действия:
centerIndex = round(size(A,1)/2); %# Get the center index for the rows
A(centerIndex:end,:) = cast(0,class(A)); %# Set the lower half to the value
%# 0 (of the same type as A)
Это работает первым получить номер строк в A
с использованием функции SIZE, разделив ее на 2 и округляя ее, чтобы получить индекс целого рядом с центром высоты изображения. Затем вектор centerIndex:end
индексирует все строки от центрального индекса до конца, а :
индексирует все столбцы. Все эти индексированные элементы установлены в 0, чтобы представлять цвет черный.
Функция CLASS используется для получения типа данных A
, так что 0 можно применить к этому типу с помощью функции CAST. Это может не обязательно, однако, поскольку 0, вероятно, будет автоматически преобразован в тип A
без них.
Если вы хотите создать logical index использовать в качестве маски, вы можете сделать следующее:
mask = true(size(A)); %# Create a matrix of true values the same size as A
centerIndex = round(size(A,1)/2); %# Get the center index for the rows
mask(centerIndex:end,:) = false; %# Set the lower half to false
Теперь mask
логическая матрица с true
(т.е. «1») для пикселей вы хотите сохранить и false
(т. е. «0») для пикселей, которые вы хотите установить на 0. Вы можете установить больше элементов mask
до false
, как вы пожелаете. Затем, когда вы хотите применить маску, вы можете сделать следующее:
A(~mask) = 0; %# Set all elements in A corresponding
%# to false values in mask to 0
Когда вы говорите, «нижняя часть», вы имеете в виду нижнюю часть пространственно, или по интенсивности? – mmr
Я имею в виду пространственно ... – NLed