Лучше всего было бы использовать логическое индексирование :
f(f<t)=0; % set all elements of f<t to 0
f(~(f==0))=1; % Set all elements where f is not 0 (i.e. the rest) to 1
f<t
красиво создает логическую матрицу, соответствующую условию, но впоследствии вы либо f=1
, либо f=0
, что означает, что вы устанавливаете для f
значение скаляр (один или ноль), которое, конечно, просто отображает черный или белый квадрат.Вместо этого используйте логическую матрицу в качестве операции индексации в самой матрице, а затем присваивайте нужное значение каждой записи true
, как описано выше.
Также определение function
либо идет в своем собственном файле, либо включенонижняя часть сценария.Таким образом, либо вы сохраняете функцию как imgThreshold.m
и оставляете остальное для сценария, либо сначала вызываете сценарий и ставите function f = imgThreshold(img, t)
и т. Д. После вызова imshow