Если я правильно понимаю ваш вопрос, вы хотите использовать бинарную карту и получить доступ к соответствующей интенсивности пикселей в этих регионах.
Если это так, то все очень просто. Вы можете использовать бинарную карту, чтобы определить пространственные координаты того места, где вы хотите получить доступ к интенсивностям исходного изображения. Создайте пустое изображение, затем скопируйте эти интенсивности в пустое изображение, используя эти пространственные координаты.
Вот пример кода, с которым вы можете поиграть.
% Assumptions:
% im - Original image
% bmap - Binary image
% Where the output image will be stored
outImg = uint8(zeros(size(im)));
% Find locations in the binary image that are white
locWhite = find(bmap == 1);
% Copy over the intensity values from these locations from
% the original image to the output image.
% The output image will only contain those pixels that were white
% in the binary image
outImg(locWhite) = im(locWhite);
% Show the original and the result side by side
figure;
subplot(1,2,1);
imshow(im); title('Original Image');
subplot(1,2,2);
imshow(outImg); title('Extracted Result');
Дайте мне знать, если это то, что вы ищете.
Способ №2
Как предложил Рафаэль в своих комментариях, вы можете вообще не использовать find
и использовать логические операторы:
outImg = img;
outImg(~bmap) = 0;
Я решил использовать find
, так как он менее запутан для новичка, хотя и менее эффективен. Любой метод даст вам правильный результат.
Немного пищи для размышлений
Извлеченная область, которую вы имеете в своем двоичном изображении, имеет несколько отверстий. Я подозреваю, что вы захотите захватить весь регион без каких-либо дыр. Таким образом, я бы порекомендовал вам заполнить эти пробелы, прежде чем использовать приведенный выше код. Функция imfill
из MATLAB прекрасно работает и принимает на вход бинарные изображения.
Ознакомьтесь с документацией здесь: http://www.mathworks.com/help/images/ref/imfill.html
Таким образом, сначала примените imfill
к двоичному изображению, а затем используйте приведенный выше код для извлечения.
person
rayryeng
schedule
09.04.2014