如何计算超过 12 个方向的最大响应?

How to compute maximum response over 12 directions?

我已经尝试在 MATLAB 上实现这篇论文:https://www.sciencedirect.com/science/article/pii/S1877050915028355

我卡在了 4.1 第 1 步:

The opened image I is obtained by calculating the maximum response of 12 directions.

我该如何实施?

这是我的一个方向的代码:

Input_Image = imread('Retina_pics/training/images/24_training.tif');
mask = imread('Retina_pics/training/mask/24_training_mask.gif');
figure, imshow(Input_Image), title('Input Image');
figure, imshow(mask), title('Mask');
Resized_Image = imresize(Input_Image, [584 565]);
Double_depth_Image = im2double(Resized_Image);
Gray_Image = rgb2gray(Double_depth_Image);
figure, imshow(Gray_Image), title('Gray Image');

se = strel('rectangle', [7.0 1.0]);
afterOpening = imopen(Gray_Image, se);
figure, imshow(afterOpening), title('After Open');

% Reconstructed_Image = imreconstruct(afterOpening, mask);

首先找到跨越所有 180 度的 12 个角(180 度的直线与 0 度的直线相同):

phi = linspace(0, 180, 13);
phi(end) = []; % remove 13th element, it’s the same as 0

接下来,在每个角度创建一个线结构元素 (doc) 并将其应用于图像:

se = strel('line', 7, phi(ii));
afterOpening = imopen(Gray_Image, se);

最后,在这 12 个结果中取元素方面的最大值。使用循环执行此操作的更有效方法如下:


se = strel('line', 7, phi(1));
afterOpening = imopen(Gray_Image, se);
for ii=2:numel(phi)
   se = strel('line', 7, phi(ii));
   tmp = imopen(Gray_Image, se);
   afterOpening = max(afterOpening, tmp);
end