Matlab - Как бинаризировать изображение в градациях серого с несколькими порогами?

Я пытаюсь преобразовать изображение в оттенках серого в двоичное изображение с двумя порогами:

  • img = изображение в градациях серого
  • b = выходное двоичное изображение
  • если (img › t1) или (img ‹ t2), то b = 1
  • иначе б = 0
t1 = 200;
t2 = 100;
src = imread('an rgb image');
img = reg2gray(src);
b1 = imbinarize(img, t1);
b2 = imbinarize(img, -t2);
b = imadd(b1,b2);

но этот код не работает. Есть ли способ установить несколько порогов одновременно?


person Hadi GhahremanNezhad    schedule 11.09.2020    source источник


Ответы (2)


Условный оператор может быть применен к массиву. Когда условие истинно, значения инициализированного массива устанавливаются равными 1, а остальные ячейки массива устанавливаются равными 0.

Бинаризовать изображение

RGB_Image = imread("RGB_Image.png");
Grayscale_Image = rgb2gray(RGB_Image);

imshow(Grayscale_Image);
Threshold_1 = 220;
Threshold_2 = 100;

Binary_Image = ((Grayscale_Image > Threshold_1) | (Grayscale_Image < Threshold_2));

subplot(1,2,1); imshow(RGB_Image);
title("RGB Image");
subplot(1,2,2); imshow(Binary_Image);
title("Binary Image");
person MichaelTr7    schedule 11.09.2020
comment
Вы скопировали термин «умное индексирование» из другого ответа? Что это означает? Где вы применяете индексацию? - person Cris Luengo; 11.09.2020
comment
Это термин, который иногда используется взаимозаменяемо с логическим индексированием, что, как я понимаю, не является правильным/формальным, особенно потому, что мы не захватили соответствующие индексы в этом вопросе. Я исправлю это в соответствии с документацией MATLAB. Спасибо. - person MichaelTr7; 12.09.2020

Используйте логические матрицы.

b=(img>t1) | (img<t2);
person Ander Biguri    schedule 11.09.2020
comment
выдает ошибку: Operands to the || and && operators must be convertible to logical scalar values. - person Hadi GhahremanNezhad; 11.09.2020
comment
mmm@CrisLuengo просто случайные термины, которые я придумал, я должен это изменить - person Ander Biguri; 12.09.2020
comment
РЖУ НЕ МОГУ. Другой ответ скопировал ваш специальный термин. Может быть, мы все должны начать называть это так, посмотрите, сколько времени потребуется MATLAB, чтобы поместить термин в свои документы! - person Cris Luengo; 12.09.2020