Matlab конвертирует изображение из серого в двоичное - PullRequest
1 голос
/ 19 марта 2012

В Matlab, я хочу портировать изображение в градациях серого, чтобы преобразовать его в черно-белое изображение:

for k=1:Y
  for i=1:X
    if gray(i,k)>T
      gray(i,k)=1;
    else
      gray(i,k)=0;
    end
  end
end

Как вы думаете, какое должно быть значение T?

Ответы [ 3 ]

5 голосов
/ 19 марта 2012

На вашем месте я бы использовал медиану:

gray=double(gray>median(gray(:)))

PS: вы должны использовать этот более эффективный код в целом:

gray=double(gray>T)
0 голосов
/ 24 августа 2014

Ответ Дасти на использование метода Оцу встроен в MATLAB.

Следующий код взят со страницы MATLAB о функции graythresh (которая реализует метод Оцу).

I = imread('coins.png');
level = graythresh(I);
BW = im2bw(I,level);
imshow(BW)
0 голосов
/ 22 октября 2012

Встроенная функция im2bw принимает уровень в качестве одного из параметров. Таким образом, вместо использования для циклов мы можем использовать его для преобразования. Уровень по умолчанию - 0,5.

От: http://www.mathworks.com/help/images/ref/im2bw.html

im2bw

Преобразование изображения в двоичное изображение на основе порога

Синтаксис

BW = im2bw(I, level)
BW = im2bw(X, map, level)
BW = im2bw(RGB, level)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...