Элемент структурирования нецелого радиуса в MATLAB

Я пытаюсь реализовать элемент структурирования в MATLAB (диск радиусом 2,5).

Я использую функцию strel в MATLAB, но по определению радиус должен быть положительным целым числом.

Есть ли какая-либо другая функция, которая позволила бы мне это сделать?


person Sara Rey    schedule 21.09.2020    source источник
comment
strel работает с пикселями (элементами матрицы). Это, по определению, целые числа, поскольку нет такой вещи, как половина пикселя или половина матричного элемента. Не могли бы вы отредактировать вопрос, чтобы уточнить, почему вам нужен радиус 2,5? Возможно, тогда мы сможем увидеть, может ли быть другое решение. Первое, что приходит в голову для этого конкретного случая, это умножить все на 2, а в конце разделить результат на 2.   -  person Adriaan    schedule 21.09.2020
comment
Вы можете просто сделать свой собственный структурирующий элемент. Они просто маленькая матрица.   -  person Ander Biguri    schedule 21.09.2020


Ответы (1)


Создать образ с диском довольно просто. Это изображение можно использовать непосредственно как strel в MATLAB:

r = 2.5;
d = ceil(r);
x = (-d:d).^2;
se = (x + x.') < r.^2; % same as sqrt(x + x.') < r, but cheaper

img = imread('cameraman.tif');
out = imdilate(img,se);

В моей кандидатской диссертации я обсуждал способы более точного создания элементов структурирования диска произвольного размера.

рисунок из моей кандидатской диссертации

person Cris Luengo    schedule 21.09.2020