Функции в MATLAB, которые могут возвращать несколько значений, будут выполняться только при указании нескольких переменных для хранения этих значений, например (из документации для imgradient
):
[Gmag,Gdir] = imgradient(I)
Если вы укажете только одну возвращаемую переменную, например:
Gsomething = imgradient(I)
будет сохранено только first возвращаемое значение *, в данном случае это величина. Это то, что происходит в строке
instance_contour = uint8(imgradient(instance_map) > 0);
В логическом сравнении используется только одна (подразумеваемая) возвращаемая переменная, поэтому вы действительно сравниваете только величину градиента с 0
,Нет необходимости пытаться объединить это с направлением.
* Вы можете выбрать , какую переменную вернуть, используя ~
, чтобы пропустить значения, подобные _
в Python. [~,Gdir] = imgradient(I)
вернет только второе возвращаемое значение из функции.