Я думаю, что это вызвано mat2gray
.
Я предполагаю, что фильтр выводит различные числовые значения в зависимости от изображения, однако, когда вы вызываете mat2gray
, вы автоматически масштабируете до min(IEnhance)
и max(IEnhance)
.
FEX поставляется с изображением. Если мы запустим
Img = imread('vessel.png');
Img = im2double(Img); % autoscale input,
options = struct('FrangiScaleRange', [5 7], 'FrangiScaleRatio', 2, 'FrangiBetaOne', 0.5, 'FrangiBetaTwo', 15, 'verbose',true,'BlackWhite',true);
[IEnhance,~]=FrangiFilter2D(Img,options);
imshow(IEnhance,[])
colorbar
![enter image description here](https://i.stack.imgur.com/TrVBC.png)
Мы видим, что масштаб приближается к 3 * 10 ^ -5.
Вместо этого, если мы запустим ваше изображение как:
Img = imread('https://i.stack.imgur.com/OlNeb.png');
Img = im2double(Img);
options = struct('FrangiScaleRange', [5 7], 'FrangiScaleRatio', 2, 'FrangiBetaOne', 0.5, 'FrangiBetaTwo', 15, 'verbose',true,'BlackWhite',true);
[IEnhance2,~]=FrangiFilter2D(Img,options);
imshow(IEnhance2,[])
colorbar
![enter image description here](https://i.stack.imgur.com/IqYzV.png)
В этом случае шкала переходит к 3 * 10 ^ 6
Если мы нанесем их в одном масштабе:
subplot(121)
imshow(IEnhance,[0 3e-5])
subplot(122)
imshow(IEnhance2,[0 3e-5])
![enter image description here](https://i.stack.imgur.com/5dVTx.png)
Теперь вы можете видеть, что результат фильтра правильный, поскольку он обнаруживает случайный шум в качестве фона почти как случайный шум. Обратите внимание, что мы можем сделать это, потому что мы действительно автоматически масштабируем вход (im2double
), и что входные изображения имеют одинаковый масштаб. Это не является важным допущением для отдельных приложений, так как большинство устройств будут выводить изображения в одном и том же масштабе, но в гипотетическом случае, если они не будут иметь одинаковый масштаб, интерпретация различных значений вывода будет не такой сопоставимой.
Урок для изучения:
Выходные данные фильтра - это вероятность, а не автоматическое масштабирование вероятностей!
Обратите внимание, что в моих демонстрациях я изменил вызов filder так, чтобы он просто вызывал Img, так как именно так работает файл FEX. У вас, вероятно, есть причины, чтобы перевернуть его.