Маска изображения со статическим порогом в Matlab

Мне нужно бинаризировать изображение в Matlab со статическим порогом 10% от средней интенсивности. Я нахожу среднюю интенсивность, используя mean2(Image) и это возвращает среднее значение, скажем, 15.10 в одном из изображений. Таким образом, мой средний порог 1.51,im2bw(image,level) принимает порог между 0 и 1. Как преобразовать в двоичную форму мое изображение в этом случае в Matlab?

4 ответа

Решение

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

threshold = mean(Image(:));

binaryMask = Image > 0.1 * threshold;

1) вы можете сначала преобразовать исходное изображение в двойной формат, используя im2double(), Тогда все значения пикселей будут между 0 и 1. Тогда вы можете использовать im2bw(im,level),

2) Если вы не хотите конвертировать изображение в двойное, то вы можете сделать это следующим образом. Допустим, порог составляет 10 % от среднего значения, скажем, threshold = 1.51, Давайте обозначим изображение у вас есть im, затем im(im<threshold) = 0; im(im>=threshold)=1, После этих двух операций im станет бинарным изображением.

Вам нужно нормализовать результат среднего значения по сравнению с максимальной интенсивностью изображения, если вы хотите использовать im2bw (другие упомянутые решения, конечно, правильны и работают):

ImageN=Image./max(Image(:))
t = mean2(ImageN) * 0.1 % Find your threshold value 
im2bw(Image,t)

Допустим, ваше изображение является матрицей imgВы можете сделать следующее:

t = mean2(img) * 0.1 % Find your threshold value
img(img < t) = 0 % Set everything below the treshold value to 0
img(img ̃= 0) = 1 % Set the rest to 1
Другие вопросы по тегам